1
1
/* eslint-disable sonarjs/no-nested-template-literals */
2
+ /* eslint-disable no-restricted-globals */
2
3
// @ts -nocheck
3
4
export const importPluginScript = ( ) => ( config ) => {
4
5
const { scriptSrc, stylesSrc, iframeId, modules, baseUrl } = JSON . parse ( config )
@@ -21,10 +22,9 @@ export const importPluginScript = () => (config) => {
21
22
22
23
const sendMessageToMain = ( data = { } ) => {
23
24
const event = document . createEvent ( 'Event' )
24
- event . initEvent ( 'message' , true , true )
25
+ event . initEvent ( 'message' , false , false )
25
26
event . data = data
26
27
event . origin = '*'
27
- // eslint-disable-next-line no-restricted-globals
28
28
parent . dispatchEvent ( event )
29
29
}
30
30
@@ -36,26 +36,26 @@ export const importPluginScript = () => (config) => {
36
36
iframeId,
37
37
text
38
38
} )
39
+ } ,
40
+ setPluginLoadSucceed : ( ) => {
41
+ sendMessageToMain ( {
42
+ event : 'loaded' ,
43
+ iframeId,
44
+ } )
45
+ } ,
46
+ setPluginLoadFailed : ( error ) => {
47
+ sendMessageToMain ( {
48
+ event : 'error' ,
49
+ iframeId,
50
+ error,
51
+ } )
39
52
}
40
53
}
41
54
}
42
55
43
56
const listenEvents = ( ) => {
44
-
45
57
globalThis . onmessage = ( e ) => {
46
58
if ( e . data . event === events . EXECUTE_COMMAND ) {
47
- const event = document . createEvent ( 'Event' )
48
- event . initEvent ( 'message' , true , true )
49
- event . data = {
50
- event : events . EXECUTE_COMMAND ,
51
- method : e . data . method ,
52
- data : e . data . data ,
53
- plugin : globalThis . plugin ,
54
- iframeId : `${ iframeId } `
55
- }
56
- event . origin = '*'
57
- // eslint-disable-next-line no-restricted-globals
58
- parent . dispatchEvent ( event )
59
59
globalThis . plugin [ e . data . method ] && globalThis . plugin [ e . data . method ] ( e . data . data )
60
60
}
61
61
@@ -89,7 +89,7 @@ export const importPluginScript = () => (config) => {
89
89
90
90
export const prepareIframeHtml = ( config ) => {
91
91
const importPluginScriptInner : string = importPluginScript ( ) . toString ( )
92
- const { scriptSrc, scriptPath, stylesSrc, iframeId , bodyClass } = config
92
+ const { scriptSrc, scriptPath, stylesSrc, bodyClass } = config
93
93
const stylesLinks = stylesSrc . map ( ( styleSrc : string ) => `<link rel="stylesheet" href=${ styleSrc } />` ) . join ( '' )
94
94
const configString = JSON . stringify ( config )
95
95
@@ -106,25 +106,11 @@ export const prepareIframeHtml = (config) => {
106
106
import(\`${ scriptSrc } \`)
107
107
.then((module) => {
108
108
globalThis.plugin = { ...module.default };
109
- var event = document.createEvent('Event')
110
- event.initEvent("message", true, true);
111
- event.data = {
112
- event: 'loaded',
113
- iframeId: \`${ iframeId } \`
114
- }
115
- event.origin = '*'
116
- parent.dispatchEvent(event);
109
+ globalThis.PluginSDK.setPluginLoadSucceed();
117
110
})
118
111
.catch((e) => {
119
- var event = document.createEvent('Event')
120
- event.initEvent("message", true, true);
121
- event.data = {
122
- event: 'error',
123
- iframeId: \`${ iframeId } \`,
124
- error: \`${ scriptPath } not found. Check if it has been renamed or deleted and try again.\`
125
- }
126
- event.origin = '*'
127
- parent.dispatchEvent(event);
112
+ var error = \`${ scriptPath } not found. Check if it has been renamed or deleted and try again.\`
113
+ globalThis.PluginSDK.setPluginLoadFailed(error)
128
114
})
129
115
</script>
130
116
<script src="${ scriptSrc } " type="module"></script>
0 commit comments