@@ -2,7 +2,6 @@ import "./ui/JavaScriptSnippet.css";
22import { createElement , useEffect , useState } from "react" ;
33
44export function JavaScriptSnippet ( { attributeList, jsCode, ...rest } ) {
5- const self = this ;
65 const [ canRender , setCanRender ] = useState ( false ) ;
76 const [ javaScriptString , setJavaScriptString ] = useState ( [ ] ) ;
87 const widgetName = rest . name || "" ;
@@ -26,24 +25,34 @@ export function JavaScriptSnippet({ attributeList, jsCode, ...rest }) {
2625 // }
2726
2827 useEffect ( ( ) => {
29- let JavaScriptStringArray = jsCode ;
28+ let JSArray = jsCode ;
29+
3030 if ( attributeList . length ) {
3131 attributeList . map ( attr => {
3232 if ( attr . jsAttribute . status === "available" ) {
33- if ( typeof attr . jsAttribute . value === "boolean" ) {
34- JavaScriptStringArray = JavaScriptStringArray . split ( "${" + attr . jsVarName + "}" ) . join (
35- attr . jsAttribute . value
33+ const useValue =
34+ attr . jsAttribute . value && attr . jsAttribute . value !== undefined
35+ ? attr . jsAttribute . value
36+ : attr . jsEmptyValue ;
37+
38+ if ( useValue === "" && typeof attr . jsAttribute . value !== "boolean" ) {
39+ console . warn (
40+ `${ widgetName } : variable name "${ attr . jsVarName } " is empty and also it's empty value replacement`
3641 ) ;
42+ }
43+
44+ if ( typeof attr . jsAttribute . value === "boolean" ) {
45+ JSArray = JSArray . split ( "${" + attr . jsVarName + "}" ) . join ( attr . jsAttribute . value ) ;
46+ } else if ( Object . prototype . toString . call ( attr . jsAttribute . value ) === "[object Date]" ) {
47+ JSArray = JSArray . split ( "${" + attr . jsVarName + "}" ) . join ( useValue ) ;
3748 } else {
38- JavaScriptStringArray = JavaScriptStringArray . split ( "${" + attr . jsVarName + "}" ) . join (
39- escape ( attr . jsAttribute . value )
40- ) ;
49+ JSArray = JSArray . split ( "${" + attr . jsVarName + "}" ) . join ( escape ( useValue ) ) ;
4150 }
4251 }
4352 return null ;
4453 } ) ;
4554 }
46- setJavaScriptString ( JavaScriptStringArray ) ;
55+ setJavaScriptString ( JSArray ) ;
4756
4857 if ( ! attributeList . length ) {
4958 setCanRender ( true ) ;
@@ -55,7 +64,7 @@ export function JavaScriptSnippet({ attributeList, jsCode, ...rest }) {
5564 setCanRender ( true ) ;
5665 }
5766 } ;
58- } , [ attributeList , jsCode ] ) ;
67+ } , [ attributeList , jsCode , widgetName ] ) ;
5968
6069 if ( canRender ) {
6170 // JavaScript evaluation will be done in the context of the widget instance.
@@ -65,7 +74,7 @@ export function JavaScriptSnippet({ attributeList, jsCode, ...rest }) {
6574 ( function ( ) {
6675 // eslint-disable-next-line no-new-func
6776 Function ( javaScriptString ) ( ) ;
68- } . call ( self ) ) ;
77+ } . call ( ) ) ;
6978 return null ;
7079 } catch ( error ) {
7180 console . warn ( "Error while evaluating javascript input." ) ;
0 commit comments