@evlop/commons 1.0.261 → 1.0.263
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/edl/ExpressionHelper.d.ts +8 -0
- package/dist/cjs/src/edl/ExpressionHelper.d.ts.map +1 -0
- package/dist/cjs/src/edl/ExpressionHelper.js +52 -0
- package/dist/cjs/src/edl/ExpressionHelper.js.map +1 -0
- package/dist/cjs/src/edl/parser.d.ts +1 -1
- package/dist/cjs/src/edl/parser.d.ts.map +1 -1
- package/dist/cjs/src/edl/parser.js +169 -70
- package/dist/cjs/src/edl/parser.js.map +1 -1
- package/dist/cjs/src/edl/parser.test.js +324 -205
- package/dist/cjs/src/edl/parser.test.js.map +1 -1
- package/dist/esm/src/edl/ExpressionHelper.d.ts +8 -0
- package/dist/esm/src/edl/ExpressionHelper.d.ts.map +1 -0
- package/dist/esm/src/edl/ExpressionHelper.js +50 -0
- package/dist/esm/src/edl/ExpressionHelper.js.map +1 -0
- package/dist/esm/src/edl/parser.d.ts +1 -1
- package/dist/esm/src/edl/parser.d.ts.map +1 -1
- package/dist/esm/src/edl/parser.js +166 -70
- package/dist/esm/src/edl/parser.js.map +1 -1
- package/dist/esm/src/edl/parser.test.js +324 -205
- package/dist/esm/src/edl/parser.test.js.map +1 -1
- package/dist/types/src/edl/ExpressionHelper.d.ts +8 -0
- package/dist/types/src/edl/ExpressionHelper.d.ts.map +1 -0
- package/dist/types/src/edl/parser.d.ts +1 -1
- package/dist/types/src/edl/parser.d.ts.map +1 -1
- package/package.json +2 -2
@@ -0,0 +1,8 @@
|
|
1
|
+
declare const ExpressionHelper: {
|
2
|
+
breakTemplateStringToExpressionsAndStaticString: (templateString: string) => any[];
|
3
|
+
safelyCompileStringTemplate: (variables: string[]) => (templateString: string) => TimerHandler;
|
4
|
+
safelyCompileExpression: (variables: string[]) => (expression: string) => Function;
|
5
|
+
evaluateExpressionForValue: (expression: string) => any;
|
6
|
+
};
|
7
|
+
export default ExpressionHelper;
|
8
|
+
//# sourceMappingURL=ExpressionHelper.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ExpressionHelper.d.ts","sourceRoot":"","sources":["../../../../src/edl/ExpressionHelper.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB;sEAC8C,MAAM;6CAwB/B,MAAM,EAAE,sBAEvB,MAAM;yCAWM,MAAM,EAAE,kBAExB,MAAM;6CAMa,MAAM;CAGhD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
// Regex to match expressions in EDL
|
4
|
+
const expressionRegex = /{(\((?:(?!\)\}).)*\)|[^{}]*)}/g;
|
5
|
+
const ExpressionHelper = {
|
6
|
+
breakTemplateStringToExpressionsAndStaticString: (templateString) => {
|
7
|
+
const parts = [];
|
8
|
+
const regex = new RegExp(expressionRegex);
|
9
|
+
let match;
|
10
|
+
let lastIndex = 0;
|
11
|
+
while ((match = regex.exec(templateString)) !== null) {
|
12
|
+
const startIndex = match.index;
|
13
|
+
const endIndex = startIndex + match[0].length;
|
14
|
+
if (startIndex > lastIndex) {
|
15
|
+
parts.push({ startIndex, endIndex, type: 'string', value: templateString.slice(lastIndex, startIndex) });
|
16
|
+
}
|
17
|
+
parts.push({ startIndex, endIndex, type: 'expression', value: match[1] });
|
18
|
+
lastIndex = endIndex;
|
19
|
+
}
|
20
|
+
if (lastIndex < templateString.length) {
|
21
|
+
parts.push({ startIndex: lastIndex, endIndex: templateString.length, type: 'string', value: templateString.slice(lastIndex) });
|
22
|
+
}
|
23
|
+
return parts;
|
24
|
+
},
|
25
|
+
safelyCompileStringTemplate: (variables) => {
|
26
|
+
const variableNamesString = `{ ${variables.join(', ')} }`;
|
27
|
+
return (templateString) => {
|
28
|
+
try {
|
29
|
+
// replace all the {expression} with ${ expression } and wrap the whole template in a function
|
30
|
+
const processedTemplate = templateString.replace(expressionRegex, "${ $1 }");
|
31
|
+
if (processedTemplate === templateString)
|
32
|
+
return templateString;
|
33
|
+
return new Function(variableNamesString, `return \`${processedTemplate}\`;`);
|
34
|
+
}
|
35
|
+
catch (e) { }
|
36
|
+
};
|
37
|
+
},
|
38
|
+
safelyCompileExpression: (variables) => {
|
39
|
+
const variableNamesString = `{ ${variables.join(', ')} }`;
|
40
|
+
return (expression) => {
|
41
|
+
try {
|
42
|
+
return new Function(variableNamesString, `return ${expression};`);
|
43
|
+
}
|
44
|
+
catch (e) { }
|
45
|
+
};
|
46
|
+
},
|
47
|
+
evaluateExpressionForValue: (expression) => {
|
48
|
+
return eval(`(${expression})`);
|
49
|
+
}
|
50
|
+
};
|
51
|
+
exports.default = ExpressionHelper;
|
52
|
+
//# sourceMappingURL=ExpressionHelper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ExpressionHelper.js","sourceRoot":"","sources":["../../../../src/edl/ExpressionHelper.ts"],"names":[],"mappings":";;AAAA,oCAAoC;AACpC,MAAM,eAAe,GAAG,gCAAgC,CAAC;AAEzD,MAAM,gBAAgB,GAAG;IACvB,+CAA+C,EAAE,CAAC,cAAsB,EAAE,EAAE;QAC1E,MAAM,KAAK,GAAG,EAAE,CAAC;QAEjB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC;QACV,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,IAAI,EAAE;YACpD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;YAC/B,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9C,IAAG,UAAU,GAAG,SAAS,EAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;aAC1G;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1E,SAAS,GAAG,QAAQ,CAAC;SACtB;QAED,IAAG,SAAS,GAAG,cAAc,CAAC,MAAM,EAAC;YACnC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SAChI;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2BAA2B,EAAE,CAAC,SAAmB,EAAE,EAAE;QACnD,MAAM,mBAAmB,GAAG,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1D,OAAO,CAAC,cAAsB,EAAE,EAAE;YAChC,IAAG;gBACD,8FAA8F;gBAC9F,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;gBAE7E,IAAG,iBAAiB,KAAK,cAAc;oBAAE,OAAO,cAAc,CAAC;gBAE/D,OAAO,IAAI,QAAQ,CAAC,mBAAmB,EAAE,YAAY,iBAAiB,KAAK,CAAC,CAAC;aAC9E;YAAC,OAAM,CAAC,EAAC,GAAE;QACd,CAAC,CAAA;IACH,CAAC;IACD,uBAAuB,EAAG,CAAC,SAAmB,EAAE,EAAE;QAChD,MAAM,mBAAmB,GAAG,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1D,OAAO,CAAC,UAAkB,EAAE,EAAE;YAC5B,IAAG;gBACD,OAAO,IAAI,QAAQ,CAAC,mBAAmB,EAAE,UAAU,UAAU,GAAG,CAAC,CAAC;aACnE;YAAC,OAAM,CAAC,EAAC,GAAE;QACd,CAAC,CAAA;IACH,CAAC;IACD,0BAA0B,EAAE,CAAC,UAAkB,EAAE,EAAE;QACjD,OAAO,IAAI,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;IACjC,CAAC;CACF,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/edl/parser.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/edl/parser.ts"],"names":[],"mappings":"AAgLA,iBAAS,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,SAsKnE;AAGD,eAAe,QAAQ,CAAC"}
|
@@ -1,61 +1,18 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
6
|
const lodash_1 = require("lodash");
|
4
7
|
const he_1 = require("he");
|
8
|
+
const ExpressionHelper_1 = __importDefault(require("./ExpressionHelper"));
|
5
9
|
const inbuiltVariables = ['context', 'data', 'setRuntimeData', 'setState', 'setStates', 'state', 'dispatchAction', 'createAction'];
|
6
|
-
// Regex to match expressions in EDL
|
7
|
-
const expressionRegex = /{(\((?:(?!\)\}).)*\)|[^{}]*)}/g;
|
8
|
-
// Regex to match opening tag in EDL
|
9
|
-
const openingTagRegex = /<([a-zA-Z0-9_]+)((?:\s+[a-zA-Z0-9_\-\.\:]+=(?:"[^"]*"|'[^']*'|`[^`]*`|\{\{(?:(?!\}\}).)*\}\}|\{\[(?:(?!\]\}).)*\]\}|\{\((?:(?!\)\}).)*\)\}|\{[^\}]*\}))*)\s*(\/)?>/s;
|
10
10
|
// Regex to match closing tag in EDL
|
11
11
|
const closingTagRegex = /<\/([a-zA-Z0-9_]+)>/;
|
12
|
-
// Regex to match attributes
|
13
|
-
const attributeRegex = /([a-zA-Z0-9_\-\.\:]+)
|
14
|
-
// Regex to
|
15
|
-
const
|
16
|
-
const TemplateCompiler = {
|
17
|
-
breakTemplateStringToExpressionsAndStaticString: (templateString) => {
|
18
|
-
const parts = [];
|
19
|
-
const regex = new RegExp(expressionRegex);
|
20
|
-
let match;
|
21
|
-
let lastIndex = 0;
|
22
|
-
while ((match = regex.exec(templateString)) !== null) {
|
23
|
-
const startIndex = match.index;
|
24
|
-
const endIndex = startIndex + match[0].length;
|
25
|
-
if (startIndex > lastIndex) {
|
26
|
-
parts.push({ startIndex, endIndex, type: 'string', value: templateString.slice(lastIndex, startIndex) });
|
27
|
-
}
|
28
|
-
parts.push({ startIndex, endIndex, type: 'expression', value: match[1] });
|
29
|
-
lastIndex = endIndex;
|
30
|
-
}
|
31
|
-
if (lastIndex < templateString.length) {
|
32
|
-
parts.push({ startIndex: lastIndex, endIndex: templateString.length, type: 'string', value: templateString.slice(lastIndex) });
|
33
|
-
}
|
34
|
-
return parts;
|
35
|
-
},
|
36
|
-
compileStringTemplate: (variables) => {
|
37
|
-
const variableNamesString = `{ ${variables.join(', ')} }`;
|
38
|
-
return (templateString) => {
|
39
|
-
try {
|
40
|
-
// replace all the {expression} with ${ expression } and wrap the whole template in a function
|
41
|
-
const processedTemplate = templateString.replace(expressionRegex, "${ $1 }");
|
42
|
-
if (processedTemplate === templateString)
|
43
|
-
return templateString;
|
44
|
-
return new Function(variableNamesString, `return \`${processedTemplate}\`;`);
|
45
|
-
}
|
46
|
-
catch (e) { }
|
47
|
-
};
|
48
|
-
},
|
49
|
-
compileExpression: variables => {
|
50
|
-
const variableNamesString = `{ ${variables.join(', ')} }`;
|
51
|
-
return (expression) => {
|
52
|
-
try {
|
53
|
-
return new Function(variableNamesString, `return ${expression};`);
|
54
|
-
}
|
55
|
-
catch (e) { }
|
56
|
-
};
|
57
|
-
}
|
58
|
-
};
|
12
|
+
// Regex to match attributes - now supports valueless attributes
|
13
|
+
const attributeRegex = /([a-zA-Z0-9_\-\.\:]+)(?:=("[^"]*"|'[^']*'|`[^`]*`|\{[^\}]*\}))?/sg;
|
14
|
+
// Regex to match opening tag in EDL along with attributes
|
15
|
+
const openingTagRegex = /<([a-zA-Z0-9_]+)((?:\s+[a-zA-Z0-9_\-\.\:]+(?:=(?:"[^"]*"|'[^']*'|`[^`]*`|\{[^\}]*\}))?)*)\s*(\/)?>/s;
|
59
16
|
function generateUniqueId() {
|
60
17
|
return lodash_1.random(1000, 9999999999).toString(36);
|
61
18
|
}
|
@@ -83,6 +40,110 @@ function extractScriptsAndVariables(inputString) {
|
|
83
40
|
});
|
84
41
|
return { cleanedString, scriptsById, variables: Array.from(allVariables) };
|
85
42
|
}
|
43
|
+
const expressionBracketOpeningClosingPairs = {
|
44
|
+
'{': '}',
|
45
|
+
'(': ')',
|
46
|
+
'[': ']',
|
47
|
+
'`': '`',
|
48
|
+
'"': '"',
|
49
|
+
"'": "'",
|
50
|
+
};
|
51
|
+
const stringDelimiters = new Set(['`', '"', "'"]);
|
52
|
+
const openingBrackets = new Set(Object.keys(expressionBracketOpeningClosingPairs));
|
53
|
+
const closingBrackets = new Set(Object.values(expressionBracketOpeningClosingPairs));
|
54
|
+
const allBrackets = new Set([...openingBrackets, ...closingBrackets]);
|
55
|
+
const expressionStartSymbol = '{';
|
56
|
+
const tagOpenSymbol = '<';
|
57
|
+
const tagCloseSymbol = '>';
|
58
|
+
// look for { and go untill }, counting all (, {, } and ), untill all opening braces are matched with closing braces
|
59
|
+
function extractExpressions(inputString) {
|
60
|
+
let cleanedString = inputString;
|
61
|
+
const tokens = [];
|
62
|
+
const expressionBracketsStack = [];
|
63
|
+
let expressionStartPosition = -1;
|
64
|
+
// track the position of tag open and close
|
65
|
+
let startingTag = null;
|
66
|
+
for (let i = 0; i < inputString.length; i++) {
|
67
|
+
const char = inputString[i];
|
68
|
+
// Start new expression when we find an opening brace
|
69
|
+
if (expressionBracketsStack.length === 0) {
|
70
|
+
if (char === expressionStartSymbol) {
|
71
|
+
expressionStartPosition = i + 1;
|
72
|
+
expressionBracketsStack.push(char);
|
73
|
+
continue;
|
74
|
+
}
|
75
|
+
else if (char === tagOpenSymbol) {
|
76
|
+
startingTag = {
|
77
|
+
type: 'tag_start',
|
78
|
+
tagStartType: inputString[i + 1] === '/' ? 'closing' : 'opening',
|
79
|
+
index: i,
|
80
|
+
};
|
81
|
+
tokens.push(startingTag);
|
82
|
+
continue;
|
83
|
+
}
|
84
|
+
else if (char === tagCloseSymbol && startingTag) {
|
85
|
+
const closingTag = {
|
86
|
+
type: 'tag_end',
|
87
|
+
index: i,
|
88
|
+
tagEndType: null,
|
89
|
+
};
|
90
|
+
if (inputString[i - 1] === '/') {
|
91
|
+
closingTag.tagEndType = 'selfClosing';
|
92
|
+
}
|
93
|
+
tokens.push(closingTag);
|
94
|
+
startingTag = -1;
|
95
|
+
continue;
|
96
|
+
}
|
97
|
+
}
|
98
|
+
if (expressionBracketsStack.length === 0)
|
99
|
+
continue; // if expression has not started yet, skip it
|
100
|
+
if (!allBrackets.has(char))
|
101
|
+
continue; // if the character is not a bracket, skip it
|
102
|
+
if (inputString[i - 1] === '\\')
|
103
|
+
continue; // if the character is escaped, skip it
|
104
|
+
const lastOpenedBracket = expressionBracketsStack[expressionBracketsStack.length - 1];
|
105
|
+
const requiredClosingBracket = expressionBracketOpeningClosingPairs[lastOpenedBracket];
|
106
|
+
if (char === requiredClosingBracket) {
|
107
|
+
expressionBracketsStack.pop();
|
108
|
+
if (expressionBracketsStack.length === 0) {
|
109
|
+
tokens.push({ type: 'expression', start: expressionStartPosition, end: i - 1 });
|
110
|
+
}
|
111
|
+
}
|
112
|
+
else if (stringDelimiters.has(lastOpenedBracket)) { // if a string delimiter is opened, we dont care obout other opening brackets
|
113
|
+
continue;
|
114
|
+
}
|
115
|
+
else if (openingBrackets.has(char)) {
|
116
|
+
expressionBracketsStack.push(char);
|
117
|
+
}
|
118
|
+
}
|
119
|
+
let correctionFactor = 0;
|
120
|
+
const expressions = {};
|
121
|
+
const splitIndexes = [];
|
122
|
+
for (const token of tokens) {
|
123
|
+
const { type, start, end } = token;
|
124
|
+
switch (type) {
|
125
|
+
case 'tag_start': {
|
126
|
+
const { index } = token;
|
127
|
+
splitIndexes.push(index - correctionFactor);
|
128
|
+
break;
|
129
|
+
}
|
130
|
+
case 'tag_end': {
|
131
|
+
const { index } = token;
|
132
|
+
splitIndexes.push(index - correctionFactor + 1);
|
133
|
+
break;
|
134
|
+
}
|
135
|
+
case 'expression':
|
136
|
+
const expression = inputString.slice(start, end + 1);
|
137
|
+
const uniqueId = generateUniqueId();
|
138
|
+
expressions[uniqueId] = expression;
|
139
|
+
const newString = cleanedString.slice(0, start - correctionFactor) + uniqueId + cleanedString.slice(end - correctionFactor + 1);
|
140
|
+
cleanedString = newString;
|
141
|
+
correctionFactor += expression.length - uniqueId.length;
|
142
|
+
break;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
return { expressions, cleanedString, tagPositions: splitIndexes };
|
146
|
+
}
|
86
147
|
const asVariableRegex = /:as="([^"]+)"/g;
|
87
148
|
function extractAsVariables(inputString) {
|
88
149
|
const asVariables = new Set();
|
@@ -93,22 +154,51 @@ function extractAsVariables(inputString) {
|
|
93
154
|
return Array.from(asVariables);
|
94
155
|
}
|
95
156
|
// This function takes a JSX string as input and returns an array of objects representing the parsed JSX structure.
|
96
|
-
function parseEDL(
|
157
|
+
function parseEDL(_edlString, additionalVariables) {
|
158
|
+
let edlString = _edlString;
|
97
159
|
// separate the scripts and extract variables from the edl string
|
98
160
|
const { cleanedString: edlStringWithCodeRemovedFromScript, scriptsById, variables: scriptVariables } = extractScriptsAndVariables(edlString);
|
161
|
+
edlString = edlStringWithCodeRemovedFromScript;
|
99
162
|
// remove unnecessary whitespace from the edl string, after code has been removed from the script tags
|
100
|
-
|
163
|
+
edlString = removeUnnecessaryWhitespace(edlString);
|
164
|
+
// extract expressions from the edl string
|
165
|
+
const { expressions: expressionsById, cleanedString: edlStringWithCodeRemovedFromScriptAndExpressionsRemoved, tagPositions: edlTagPositions } = extractExpressions(edlString);
|
166
|
+
edlString = edlStringWithCodeRemovedFromScriptAndExpressionsRemoved;
|
101
167
|
// Extract :as variables and include them in the union
|
102
|
-
const asVariables = extractAsVariables(
|
168
|
+
const asVariables = extractAsVariables(edlString);
|
103
169
|
const variables = lodash_1.union(inbuiltVariables, Array.from(additionalVariables), scriptVariables, asVariables);
|
104
|
-
const
|
105
|
-
const
|
106
|
-
const
|
170
|
+
const safelyCompileStringTemplate = ExpressionHelper_1.default.safelyCompileStringTemplate(variables);
|
171
|
+
const safelyCompileExpression = ExpressionHelper_1.default.safelyCompileExpression(variables);
|
172
|
+
const evaluateExpressionForValue = ExpressionHelper_1.default.evaluateExpressionForValue;
|
173
|
+
const breakTemplateStringToExpressionsAndStaticString = ExpressionHelper_1.default.breakTemplateStringToExpressionsAndStaticString;
|
174
|
+
const safelyEvaluateExpressionForValueOrFunction = expression => {
|
175
|
+
try {
|
176
|
+
const evaluatedValue = evaluateExpressionForValue(expression);
|
177
|
+
if (typeof evaluatedValue === 'function')
|
178
|
+
throw new Error("Function cannot ke kept as static prop");
|
179
|
+
return evaluatedValue;
|
180
|
+
}
|
181
|
+
catch (e) {
|
182
|
+
return safelyCompileExpression(expression);
|
183
|
+
}
|
184
|
+
};
|
107
185
|
// Initialize an empty array to store the final JSX objects
|
108
186
|
const jsxObjects = [];
|
109
187
|
// Initialize an empty stack to keep track of the nested JSX elements
|
110
188
|
const jsxStack = [];
|
111
|
-
|
189
|
+
// split the string by tag positions
|
190
|
+
const tagPositions = [...edlTagPositions];
|
191
|
+
if (tagPositions[0] !== 0)
|
192
|
+
tagPositions.unshift(0);
|
193
|
+
if (tagPositions[tagPositions.length - 1] !== edlString.length)
|
194
|
+
tagPositions.push(edlString.length);
|
195
|
+
const tagGroups = [];
|
196
|
+
for (let i = 0; i < tagPositions.length - 1; i++) {
|
197
|
+
const positionDiff = tagPositions[i + 1] - tagPositions[i];
|
198
|
+
// if(positionDiff <= 1) continue;
|
199
|
+
tagGroups.push(edlString.substring(tagPositions[i], tagPositions[i + 1]));
|
200
|
+
}
|
201
|
+
tagGroups.forEach(token => {
|
112
202
|
// If the token is an empty string, skip it
|
113
203
|
if (token.trim() === '') {
|
114
204
|
return;
|
@@ -116,7 +206,7 @@ function parseEDL(edlString, additionalVariables) {
|
|
116
206
|
// If the token is not an opening or closing JSX tag, treat it as plain text
|
117
207
|
if (token[0] !== '<') {
|
118
208
|
const parentNode = jsxStack[jsxStack.length - 1];
|
119
|
-
const parts = breakTemplateStringToExpressionsAndStaticString(he_1.decode(token)).map(({ type, value }) => type == 'expression' ?
|
209
|
+
const parts = breakTemplateStringToExpressionsAndStaticString(he_1.decode(token)).map(({ type, value }) => type == 'expression' ? safelyEvaluateExpressionForValueOrFunction(expressionsById[value]) : value);
|
120
210
|
if (parentNode) {
|
121
211
|
parentNode.children.push(...parts);
|
122
212
|
}
|
@@ -148,21 +238,30 @@ function parseEDL(edlString, additionalVariables) {
|
|
148
238
|
if (attributeName === 'class') {
|
149
239
|
attributeName = 'className';
|
150
240
|
}
|
151
|
-
|
241
|
+
if (!attributeMatch[2]) {
|
242
|
+
lodash_1.set(staticProps, attributeName, true);
|
243
|
+
continue;
|
244
|
+
}
|
245
|
+
const value = attributeMatch[2]?.slice(1, -1);
|
246
|
+
const startingBracket = attributeMatch[2]?.[0];
|
152
247
|
// Check if the attribute value is dynamic (enclosed in curly braces) either variable or js expression
|
153
|
-
const
|
154
|
-
const isTemplateProp =
|
155
|
-
if (
|
248
|
+
const isJavascriptExpressionProp = startingBracket === '{';
|
249
|
+
const isTemplateProp = startingBracket === '`';
|
250
|
+
if (isJavascriptExpressionProp) {
|
251
|
+
const expression = expressionsById[value];
|
156
252
|
try {
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
253
|
+
const evaluatedValue = safelyEvaluateExpressionForValueOrFunction(expression);
|
254
|
+
if (typeof evaluatedValue === 'function') {
|
255
|
+
variableProps[attributeName] = safelyCompileExpression(expression);
|
256
|
+
}
|
257
|
+
else {
|
258
|
+
lodash_1.set(staticProps, attributeName, evaluatedValue);
|
259
|
+
}
|
162
260
|
}
|
261
|
+
catch (error) { }
|
163
262
|
}
|
164
263
|
else if (isTemplateProp) {
|
165
|
-
variableProps[attributeName] =
|
264
|
+
variableProps[attributeName] = safelyCompileStringTemplate(value);
|
166
265
|
}
|
167
266
|
else {
|
168
267
|
// If the value is not dynamic, assign it directly to the props object
|
@@ -181,7 +280,7 @@ function parseEDL(edlString, additionalVariables) {
|
|
181
280
|
delete newElement.staticProps[':scriptId'];
|
182
281
|
const code = scriptsById[scriptId].code;
|
183
282
|
const exportVariables = scriptsById[scriptId].variables;
|
184
|
-
newElement.variableProps[':function'] =
|
283
|
+
newElement.variableProps[':function'] = safelyCompileExpression(`()=>{ ${code} \n setRuntimeData({ ${exportVariables.join(', ')} }); }`);
|
185
284
|
}
|
186
285
|
// If there's a parent node, add the new element as a child to the parent node
|
187
286
|
if (jsxStack.length > 0) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/edl/parser.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/edl/parser.ts"],"names":[],"mappings":"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"}
|