11import "./ui/JavaScriptSnippet.css" ;
2- import { useEffect , useState } from "react" ;
2+ import { createElement , useEffect , useState } from "react" ;
33
44export function JavaScriptSnippet ( { attributeList, jsCode, ...rest } ) {
55 const [ canRender , setCanRender ] = useState ( false ) ;
66 const [ javaScriptString , setJavaScriptString ] = useState ( [ ] ) ;
77 const widgetName = rest . name || "" ;
8+ const uid = useState ( ( Date . now ( ) . toString ( 36 ) + Math . random ( ) . toString ( 36 ) . substring ( 2 ) ) ) ;
89
910 function escape ( htmlStr ) {
1011 return htmlStr
@@ -13,7 +14,7 @@ export function JavaScriptSnippet({ attributeList, jsCode, ...rest }) {
1314 . replace ( / > / g, ">" )
1415 . replace ( / " / g, """ )
1516 . replace ( / ' / g, "'" ) ;
16- }
17+ } ;
1718
1819 // function unEscape(htmlStr) {
1920 // htmlStr = htmlStr.replace(/</g, "<");
@@ -53,6 +54,9 @@ export function JavaScriptSnippet({ attributeList, jsCode, ...rest }) {
5354 }
5455 return null ;
5556 } ) ;
57+
58+ JSArray = JSArray . split ( "this" ) . join ( `'${ widgetName } _${ uid [ 0 ] } '` ) ;
59+ setJavaScriptString ( JSArray ) ;
5660 }
5761 setJavaScriptString ( JSArray ) ;
5862
@@ -74,10 +78,9 @@ export function JavaScriptSnippet({ attributeList, jsCode, ...rest }) {
7478 try {
7579 // eslint-disable-next-line no-new-func
7680 Function ( javaScriptString ) ( ) ;
77- return null ;
7881 } catch ( error ) {
79- console . warn ( `${ widgetName } : Error while evaluating javascript input.
80- ${ error } `) ;
82+ console . warn ( `${ widgetName } : Error while evaluating javascript input. ${ error } ` ) ;
8183 }
82- } else return null ;
84+ }
85+ return < div className = { `${ widgetName } _${ uid [ 0 ] } ` } > </ div > ;
8386}
0 commit comments