@wavemaker-ai/react-codegen 1.0.0-rc.309 → 1.0.0-rc.314

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.
Files changed (83) hide show
  1. package/dist/transpiler/index.mjs +937 -972
  2. package/dist/transpiler/index.mjs.map +1 -1
  3. package/package-lock.json +123 -123
  4. package/package.json +1 -1
  5. package/src/transpile/bind.ex.transformer.js +18 -1
  6. package/src/transpile/bind.ex.transformer.js.map +1 -1
  7. package/src/transpile/components/container/accordion-pane.transformer.js +4 -20
  8. package/src/transpile/components/container/accordion-pane.transformer.js.map +1 -1
  9. package/src/transpile/components/container/container.transformer.js +7 -21
  10. package/src/transpile/components/container/container.transformer.js.map +1 -1
  11. package/src/transpile/components/container/panel.transformer.js +4 -20
  12. package/src/transpile/components/container/panel.transformer.js.map +1 -1
  13. package/src/transpile/components/container/tabpane.transformer.js +4 -20
  14. package/src/transpile/components/container/tabpane.transformer.js.map +1 -1
  15. package/src/transpile/components/container/wizardstep.transformer.js +4 -36
  16. package/src/transpile/components/container/wizardstep.transformer.js.map +1 -1
  17. package/src/transpile/components/data/card/card-content.transformer.js +4 -20
  18. package/src/transpile/components/data/card/card-content.transformer.js.map +1 -1
  19. package/src/transpile/components/data/form/field-widget-shared.js +9 -0
  20. package/src/transpile/components/data/form/field-widget-shared.js.map +1 -0
  21. package/src/transpile/components/data/form/form-field.transformer.js +24 -26
  22. package/src/transpile/components/data/form/form-field.transformer.js.map +1 -1
  23. package/src/transpile/components/data/list/list-transformer.js +9 -2
  24. package/src/transpile/components/data/list/list-transformer.js.map +1 -1
  25. package/src/transpile/components/data/live-filter-field.transformer.js +30 -32
  26. package/src/transpile/components/data/live-filter-field.transformer.js.map +1 -1
  27. package/src/transpile/components/data/live-form-shared.js +135 -0
  28. package/src/transpile/components/data/live-form-shared.js.map +1 -0
  29. package/src/transpile/components/data/livefilter.transformer.js +3 -123
  30. package/src/transpile/components/data/livefilter.transformer.js.map +1 -1
  31. package/src/transpile/components/data/liveform.transformer.js +9 -128
  32. package/src/transpile/components/data/liveform.transformer.js.map +1 -1
  33. package/src/transpile/components/data/table/table-column.transformer.js +6 -3
  34. package/src/transpile/components/data/table/table-column.transformer.js.map +1 -1
  35. package/src/transpile/components/data/table/table-row.transformer.js +9 -20
  36. package/src/transpile/components/data/table/table-row.transformer.js.map +1 -1
  37. package/src/transpile/components/data/table/table.transformer.js +5 -2
  38. package/src/transpile/components/data/table/table.transformer.js.map +1 -1
  39. package/src/transpile/components/data/table/utils.js +70 -0
  40. package/src/transpile/components/data/table/utils.js.map +1 -1
  41. package/src/transpile/components/dialogs/alert-dialog.transformer.js +5 -13
  42. package/src/transpile/components/dialogs/alert-dialog.transformer.js.map +1 -1
  43. package/src/transpile/components/dialogs/confirm-dialog.transformer.js +5 -13
  44. package/src/transpile/components/dialogs/confirm-dialog.transformer.js.map +1 -1
  45. package/src/transpile/components/dialogs/dialog-factory.js +18 -0
  46. package/src/transpile/components/dialogs/dialog-factory.js.map +1 -0
  47. package/src/transpile/components/dialogs/iframe-dialog.transformer.js +5 -13
  48. package/src/transpile/components/dialogs/iframe-dialog.transformer.js.map +1 -1
  49. package/src/transpile/components/layout/footer.transformer.js +7 -45
  50. package/src/transpile/components/layout/footer.transformer.js.map +1 -1
  51. package/src/transpile/components/layout/header.transformer.js +7 -45
  52. package/src/transpile/components/layout/header.transformer.js.map +1 -1
  53. package/src/transpile/components/layout/layout-region-factory.js +46 -0
  54. package/src/transpile/components/layout/layout-region-factory.js.map +1 -0
  55. package/src/transpile/components/layout/leftnav.transformer.js +7 -45
  56. package/src/transpile/components/layout/leftnav.transformer.js.map +1 -1
  57. package/src/transpile/components/layout/rightnav.transformer.js +7 -45
  58. package/src/transpile/components/layout/rightnav.transformer.js.map +1 -1
  59. package/src/transpile/components/layout/topnav.transformer.js +7 -45
  60. package/src/transpile/components/layout/topnav.transformer.js.map +1 -1
  61. package/src/transpile/components/navigation/popover.transformer.js +5 -21
  62. package/src/transpile/components/navigation/popover.transformer.js.map +1 -1
  63. package/src/transpile/components/page/build-partial-markup.js +55 -0
  64. package/src/transpile/components/page/build-partial-markup.js.map +1 -0
  65. package/src/transpile/components/page/partial-container.transformer.js +2 -47
  66. package/src/transpile/components/page/partial-container.transformer.js.map +1 -1
  67. package/src/transpile/components/page/with-partial-container.js +26 -0
  68. package/src/transpile/components/page/with-partial-container.js.map +1 -0
  69. package/src/transpile/components/partial/partial-content.transformer.js +2 -47
  70. package/src/transpile/components/partial/partial-content.transformer.js.map +1 -1
  71. package/src/transpile/components/utils.js +58 -67
  72. package/src/transpile/components/utils.js.map +1 -1
  73. package/src/transpile/transform-markup.js +3 -0
  74. package/src/transpile/transform-markup.js.map +1 -1
  75. package/src/transpile/transpile.js +254 -128
  76. package/src/transpile/transpile.js.map +1 -1
  77. package/src/transpile/widget-inline-style-processor.js +58 -20
  78. package/src/transpile/widget-inline-style-processor.js.map +1 -1
  79. package/src/variables/variable.transformer.js +64 -18
  80. package/src/variables/variable.transformer.js.map +1 -1
  81. package/templates/component/layout.hbs +1 -0
  82. package/templates/project/package.json +4 -4
  83. package/templates/variables.template +3 -0
@@ -3375,7 +3375,7 @@ var require_lodash = __commonJS({
3375
3375
  }).sort(compareAscending));
3376
3376
  return result2;
3377
3377
  });
3378
- function remove3(array, predicate) {
3378
+ function remove(array, predicate) {
3379
3379
  var result2 = [];
3380
3380
  if (!(array && array.length)) {
3381
3381
  return result2;
@@ -3670,7 +3670,7 @@ var require_lodash = __commonJS({
3670
3670
  depth = depth === undefined2 ? 1 : toInteger(depth);
3671
3671
  return baseFlatten(map(collection, iteratee2), depth);
3672
3672
  }
3673
- function forEach5(collection, iteratee2) {
3673
+ function forEach4(collection, iteratee2) {
3674
3674
  var func = isArray2(collection) ? arrayEach : baseEach;
3675
3675
  return func(collection, getIteratee(iteratee2, 3));
3676
3676
  }
@@ -4678,7 +4678,7 @@ var require_lodash = __commonJS({
4678
4678
  }
4679
4679
  string = toString(string);
4680
4680
  options = assignInWith({}, options, settings, customDefaultsAssignIn);
4681
- var imports111 = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys2(imports111), importsValues = baseValues(imports111, importsKeys);
4681
+ var imports102 = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys2(imports102), importsValues = baseValues(imports102, importsKeys);
4682
4682
  var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '";
4683
4683
  var reDelimiters = RegExp2(
4684
4684
  (options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$",
@@ -5119,7 +5119,7 @@ var require_lodash = __commonJS({
5119
5119
  lodash.rangeRight = rangeRight;
5120
5120
  lodash.rearg = rearg;
5121
5121
  lodash.reject = reject;
5122
- lodash.remove = remove3;
5122
+ lodash.remove = remove;
5123
5123
  lodash.rest = rest;
5124
5124
  lodash.reverse = reverse;
5125
5125
  lodash.sampleSize = sampleSize;
@@ -5201,7 +5201,7 @@ var require_lodash = __commonJS({
5201
5201
  lodash.findLastIndex = findLastIndex;
5202
5202
  lodash.findLastKey = findLastKey;
5203
5203
  lodash.floor = floor;
5204
- lodash.forEach = forEach5;
5204
+ lodash.forEach = forEach4;
5205
5205
  lodash.forEachRight = forEachRight;
5206
5206
  lodash.forIn = forIn;
5207
5207
  lodash.forInRight = forInRight;
@@ -5324,7 +5324,7 @@ var require_lodash = __commonJS({
5324
5324
  lodash.uniqueId = uniqueId;
5325
5325
  lodash.upperCase = upperCase;
5326
5326
  lodash.upperFirst = upperFirst2;
5327
- lodash.each = forEach5;
5327
+ lodash.each = forEach4;
5328
5328
  lodash.eachRight = forEachRight;
5329
5329
  lodash.first = head;
5330
5330
  mixin(lodash, (function() {
@@ -16946,8 +16946,8 @@ var require_he = __commonJS({
16946
16946
  var parseError = function(message) {
16947
16947
  throw Error("Parse error: " + message);
16948
16948
  };
16949
- var encode3 = function(string, options) {
16950
- options = merge3(options, encode3.options);
16949
+ var encode2 = function(string, options) {
16950
+ options = merge3(options, encode2.options);
16951
16951
  var strict = options.strict;
16952
16952
  if (strict && regexInvalidRawCodePoint.test(string)) {
16953
16953
  parseError("forbidden code point");
@@ -16994,7 +16994,7 @@ var require_he = __commonJS({
16994
16994
  return escapeCodePoint(codePoint);
16995
16995
  }).replace(regexBmpWhitelist, escapeBmpSymbol);
16996
16996
  };
16997
- encode3.options = {
16997
+ encode2.options = {
16998
16998
  "allowUnsafeSymbols": false,
16999
16999
  "encodeEverything": false,
17000
17000
  "strict": false,
@@ -17072,7 +17072,7 @@ var require_he = __commonJS({
17072
17072
  };
17073
17073
  var he = {
17074
17074
  "version": "1.2.0",
17075
- "encode": encode3,
17075
+ "encode": encode2,
17076
17076
  "decode": decode,
17077
17077
  "escape": escape,
17078
17078
  "unescape": decode
@@ -18039,10 +18039,10 @@ var require_lib4 = __commonJS({
18039
18039
  return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);
18040
18040
  }
18041
18041
  exports$1.decodeStrict = decodeStrict;
18042
- function encode3(data, level) {
18042
+ function encode2(data, level) {
18043
18043
  return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);
18044
18044
  }
18045
- exports$1.encode = encode3;
18045
+ exports$1.encode = encode2;
18046
18046
  var encode_2 = require_encode();
18047
18047
  Object.defineProperty(exports$1, "encodeXML", { enumerable: true, get: function() {
18048
18048
  return encode_2.encodeXML;
@@ -22223,7 +22223,7 @@ var require_lib9 = __commonJS({
22223
22223
  level: "all",
22224
22224
  numeric: "decimal"
22225
22225
  };
22226
- function encode3(text, _a) {
22226
+ function encode2(text, _a) {
22227
22227
  var _b = _a === void 0 ? defaultEncodeOptions : _a, _c = _b.mode, mode = _c === void 0 ? "specialChars" : _c, _d = _b.numeric, numeric = _d === void 0 ? "decimal" : _d, _e = _b.level, level = _e === void 0 ? "all" : _e;
22228
22228
  if (!text) {
22229
22229
  return "";
@@ -22258,7 +22258,7 @@ var require_lib9 = __commonJS({
22258
22258
  }
22259
22259
  return _c;
22260
22260
  }
22261
- exports$1.encode = encode3;
22261
+ exports$1.encode = encode2;
22262
22262
  var defaultDecodeOptions = {
22263
22263
  scope: "body",
22264
22264
  level: "all"
@@ -27034,7 +27034,7 @@ var R3JitReflector = class {
27034
27034
  }
27035
27035
  };
27036
27036
  function compileNgModule(meta) {
27037
- const { internalType, bootstrap, declarations, imports: imports111, exports: exports$1, schemas, containsForwardDecls, id } = meta;
27037
+ const { internalType, bootstrap, declarations, imports: imports102, exports: exports$1, schemas, containsForwardDecls, id } = meta;
27038
27038
  const statements = [];
27039
27039
  const definitionMap = new DefinitionMap();
27040
27040
  definitionMap.set("type", internalType);
@@ -27045,8 +27045,8 @@ function compileNgModule(meta) {
27045
27045
  if (declarations.length > 0) {
27046
27046
  definitionMap.set("declarations", refsToArray(declarations, containsForwardDecls));
27047
27047
  }
27048
- if (imports111.length > 0) {
27049
- definitionMap.set("imports", refsToArray(imports111, containsForwardDecls));
27048
+ if (imports102.length > 0) {
27049
+ definitionMap.set("imports", refsToArray(imports102, containsForwardDecls));
27050
27050
  }
27051
27051
  if (exports$1.length > 0) {
27052
27052
  definitionMap.set("exports", refsToArray(exports$1, containsForwardDecls));
@@ -27085,11 +27085,11 @@ function compileNgModuleDeclarationExpression(meta) {
27085
27085
  }
27086
27086
  return importExpr(Identifiers.defineNgModule).callFn([definitionMap.toLiteralMap()]);
27087
27087
  }
27088
- function createNgModuleType({ type: moduleType, declarations, imports: imports111, exports: exports$1 }) {
27088
+ function createNgModuleType({ type: moduleType, declarations, imports: imports102, exports: exports$1 }) {
27089
27089
  return new ExpressionType(importExpr(Identifiers.NgModuleDeclaration, [
27090
27090
  new ExpressionType(moduleType.type),
27091
27091
  tupleTypeOf(declarations),
27092
- tupleTypeOf(imports111),
27092
+ tupleTypeOf(imports102),
27093
27093
  tupleTypeOf(exports$1)
27094
27094
  ]));
27095
27095
  }
@@ -39326,6 +39326,7 @@ var htmlElements = [
39326
39326
 
39327
39327
  // src/transpile/bind.ex.transformer.ts
39328
39328
  var FORMAT_CONTEXT = "{formatContext:''}";
39329
+ var FORMAT_CONTEXT_REGEX = /\{formatContext:''\}/g;
39329
39330
  var FRAGMENT_SCOPED_NAMES = ["appLocale", "Variables"];
39330
39331
  var ExpressionTransformer = class {
39331
39332
  constructor(ctx = "this", mode = "attr") {
@@ -39443,7 +39444,8 @@ var ExpressionTransformer = class {
39443
39444
  const _args = [];
39444
39445
  const exp = this.build(ast.exp);
39445
39446
  for (const arg of ast.args) {
39446
- _args.push(this.build(arg));
39447
+ const argExp = this.build(arg);
39448
+ _args.push(argExp === "" ? "undefined" : argExp);
39447
39449
  }
39448
39450
  if (_args[0] && name === "custom") {
39449
39451
  name = `custom.${_args[0]}`.replace(/"/g, "");
@@ -39452,6 +39454,9 @@ var ExpressionTransformer = class {
39452
39454
  if (name === "currency") {
39453
39455
  name = "toCurrency";
39454
39456
  }
39457
+ if (name === "toCurrency" && _args.length === 1) {
39458
+ _args.push("undefined");
39459
+ }
39455
39460
  _args.unshift(exp);
39456
39461
  return `${this.ctx}?.formatters?.get('${name}')?.format(${_args}, ${FORMAT_CONTEXT})`;
39457
39462
  }
@@ -39517,26 +39522,48 @@ var transform = (expr, scopeName = "this", mode = "attr") => {
39517
39522
  }
39518
39523
  };
39519
39524
  var bind_ex_transformer_default = transform;
39525
+ function resolveFormatContext(expression, context) {
39526
+ var _a, _b;
39527
+ if ((_a = context == null ? void 0 : context.get) == null ? void 0 : _a.call(context, "isInsideList")) {
39528
+ return expression.replace(FORMAT_CONTEXT_REGEX, "$item");
39529
+ }
39530
+ if ((_b = context == null ? void 0 : context.get) == null ? void 0 : _b.call(context, "isInsideTableColumn")) {
39531
+ return expression.replace(FORMAT_CONTEXT_REGEX, "rowData");
39532
+ }
39533
+ return expression.replace(/,\s*\{formatContext:''\}/g, "").replace(FORMAT_CONTEXT_REGEX, "");
39534
+ }
39520
39535
 
39521
39536
  // src/variables/variable.transformer.ts
39522
39537
  var import_lodash2 = __toESM(require_lodash());
39538
+ function bindingValueIsStatic(value) {
39539
+ const v = Array.isArray(value) ? value[0] : value;
39540
+ return !v || !(typeof v === "string" && v.startsWith("bind:"));
39541
+ }
39542
+ function filterExpressionsAreStatic(filterExpressions) {
39543
+ if (!(filterExpressions == null ? void 0 : filterExpressions.rules)) return true;
39544
+ const ruleIsStatic = (rule) => {
39545
+ if (rule.rules) {
39546
+ return rule.rules.every(ruleIsStatic);
39547
+ }
39548
+ return bindingValueIsStatic(rule.value);
39549
+ };
39550
+ return filterExpressions.rules.every(ruleIsStatic);
39551
+ }
39523
39552
  function isStaticParamsVariable(variable2) {
39524
39553
  const db = variable2.dataBinding;
39525
- if (!db) return true;
39526
- const entryIsStatic = (entry) => {
39527
- const v = Array.isArray(entry.value) ? entry.value[0] : entry.value;
39528
- return !v || !(typeof v === "string" && v.startsWith("bind:"));
39529
- };
39530
- if (Array.isArray(db)) {
39531
- return db.every(entryIsStatic);
39532
- }
39533
- if ((0, import_lodash2.isObject)(db) && !Array.isArray(db)) {
39534
- return Object.values(db).every((opBindings) => {
39535
- if (!Array.isArray(opBindings)) return true;
39536
- return opBindings.every(entryIsStatic);
39537
- });
39554
+ const entryIsStatic = (entry) => bindingValueIsStatic(entry.value);
39555
+ if (db) {
39556
+ if (Array.isArray(db)) {
39557
+ if (!db.every(entryIsStatic)) return false;
39558
+ } else if ((0, import_lodash2.isObject)(db) && !Array.isArray(db)) {
39559
+ const allOpsStatic = Object.values(db).every((opBindings) => {
39560
+ if (!Array.isArray(opBindings)) return true;
39561
+ return opBindings.every(entryIsStatic);
39562
+ });
39563
+ if (!allOpsStatic) return false;
39564
+ }
39538
39565
  }
39539
- return true;
39566
+ return filterExpressionsAreStatic(variable2.filterExpressions);
39540
39567
  }
39541
39568
  function parseStaticJsonValue(value) {
39542
39569
  const trimmedValue = value.trim();
@@ -39603,6 +39630,31 @@ function checkEmptyObject(obj) {
39603
39630
  });
39604
39631
  return isVariableEmpty;
39605
39632
  }
39633
+ function transformDataSetBindings(dataSet, scope) {
39634
+ if (typeof dataSet === "string" && dataSet.startsWith("bind:")) {
39635
+ let v = dataSet.substring(5);
39636
+ v = (v || "").trim().replace(/;+\s*$/, "");
39637
+ if (v === "null") {
39638
+ return null;
39639
+ } else {
39640
+ const transformed = bind_ex_transformer_default(v, scope, "attr").replace(/\\n/g, "");
39641
+ if (transformed.trim().startsWith("{")) {
39642
+ return `${scope}.eval(() => (${transformed}))`;
39643
+ } else {
39644
+ return `${scope}.eval(() => ${transformed})`;
39645
+ }
39646
+ }
39647
+ } else if ((0, import_lodash2.isArray)(dataSet)) {
39648
+ return dataSet.map((item) => transformDataSetBindings(item, scope));
39649
+ } else if ((0, import_lodash2.isObject)(dataSet) && dataSet !== null) {
39650
+ const result = {};
39651
+ for (const [key, value] of Object.entries(dataSet)) {
39652
+ result[key] = transformDataSetBindings(value, scope);
39653
+ }
39654
+ return result;
39655
+ }
39656
+ return dataSet;
39657
+ }
39606
39658
  function transformVariable(variable2, scope) {
39607
39659
  var _a;
39608
39660
  let params = {}, filters = {};
@@ -39614,7 +39666,7 @@ function transformVariable(variable2, scope) {
39614
39666
  (0, import_lodash2.set)(params, name, value);
39615
39667
  });
39616
39668
  } else if (variable2.category === "wm.Variable") {
39617
- params = (0, import_lodash2.clone)(variable2.dataSet);
39669
+ params = transformDataSetBindings((0, import_lodash2.clone)(variable2.dataSet), scope);
39618
39670
  }
39619
39671
  } else if ((0, import_lodash2.isBoolean)(variable2.dataSet) || (0, import_lodash2.isNumber)(variable2.dataSet)) {
39620
39672
  if (variable2.category === "wm.Variable") {
@@ -39626,6 +39678,9 @@ function transformVariable(variable2, scope) {
39626
39678
  (0, import_lodash2.set)(params, k, (0, import_lodash2.get)(variable2.dataSet, k));
39627
39679
  }
39628
39680
  });
39681
+ if (variable2.category === "wm.Variable") {
39682
+ params = transformDataSetBindings(params, scope);
39683
+ }
39629
39684
  }
39630
39685
  }
39631
39686
  if (variable2.dataBinding) {
@@ -39959,7 +40014,7 @@ function transformTimerAction(variable2, scope) {
39959
40014
  }
39960
40015
  return tv;
39961
40016
  }
39962
- function transformNotificationAction(variable2, scope, imports111) {
40017
+ function transformNotificationAction(variable2, scope, imports102) {
39963
40018
  const tv = transformVariable(variable2, scope);
39964
40019
  tv.classname = "NotificationAction";
39965
40020
  tv.group = "action";
@@ -39989,8 +40044,8 @@ function transformNotificationAction(variable2, scope, imports111) {
39989
40044
  if (partialContent) {
39990
40045
  const partialName = partialContent.value.charAt(0).toUpperCase() + partialContent.value.slice(1);
39991
40046
  const importItem = `import ${partialName} from "@/app/components/${partialContent.value}/${partialContent.value}";`;
39992
- if (!imports111.includes(importItem)) {
39993
- imports111.push(importItem);
40047
+ if (!imports102.includes(importItem)) {
40048
+ imports102.push(importItem);
39994
40049
  }
39995
40050
  tv.partialContent = { component: partialName };
39996
40051
  }
@@ -40071,7 +40126,7 @@ function transformCrudVariable(variable2, scope) {
40071
40126
  tv.isStaticParams = isStaticParamsVariable(variable2);
40072
40127
  return tv;
40073
40128
  }
40074
- var variable_transformer_default = (variable2, scope, appUrl, imports111) => {
40129
+ var variable_transformer_default = (variable2, scope, appUrl, imports102) => {
40075
40130
  switch (variable2.category) {
40076
40131
  case "wm.Variable":
40077
40132
  return transformModelVariable(variable2, scope);
@@ -40082,7 +40137,7 @@ var variable_transformer_default = (variable2, scope, appUrl, imports111) => {
40082
40137
  case "wm.TimerAction":
40083
40138
  return transformTimerAction(variable2, scope);
40084
40139
  case "wm.NotificationAction":
40085
- return transformNotificationAction(variable2, scope, imports111);
40140
+ return transformNotificationAction(variable2, scope, imports102);
40086
40141
  case "wm.DeviceVariable":
40087
40142
  return transformDeviceVariable(variable2, scope);
40088
40143
  case "wm.LoginAction":
@@ -40359,41 +40414,51 @@ var transformRepeatChildAttr = (element, replace2, replaceWith) => {
40359
40414
  }
40360
40415
  });
40361
40416
  };
40362
- var getOnChangeExprforFormWidget = (element, eventName, context) => {
40363
- var _a, _b, _c;
40364
- let formWidgetDatavalue = null;
40417
+ var resolveBindExpression = (element) => {
40418
+ var _a, _b;
40365
40419
  const datavalue = element.getAttribute("datavalue") || "";
40366
- if (datavalue.endsWith(")")) {
40367
- formWidgetDatavalue = ((_a = element.getAttribute("dataset")) == null ? void 0 : _a.split(":")) || [];
40368
- } else {
40369
- formWidgetDatavalue = ((_b = element.getAttribute("datavalue")) == null ? void 0 : _b.split(":")) || [];
40420
+ const parts = datavalue.endsWith(")") ? ((_a = element.getAttribute("dataset")) == null ? void 0 : _a.split(":")) || [] : ((_b = element.getAttribute("datavalue")) == null ? void 0 : _b.split(":")) || [];
40421
+ const bindExpr = parts.length > 1 ? parts[1] : null;
40422
+ if (!bindExpr || bindExpr.includes("?") || bindExpr.includes("Widgets") || bindExpr.includes("$formField")) {
40423
+ return null;
40370
40424
  }
40371
- let bindExpr = (formWidgetDatavalue == null ? void 0 : formWidgetDatavalue.length) > 1 ? formWidgetDatavalue[1] : null;
40372
- if (!bindExpr || (bindExpr == null ? void 0 : bindExpr.includes("?")) || (bindExpr == null ? void 0 : bindExpr.includes("Widgets")) || (bindExpr == null ? void 0 : bindExpr.includes("$formField"))) {
40425
+ return bindExpr;
40426
+ };
40427
+ var REPEATING_COMPONENT_TAGS = ["wm-list", "wm-carousel", "wm-tabs", "wm-wizard", "wm-accordion"];
40428
+ var findRepeatingParentContext = (element) => {
40429
+ var _a;
40430
+ let currentNode = element.parentNode;
40431
+ while (currentNode) {
40432
+ const tagName = (_a = currentNode.tagName) == null ? void 0 : _a.toLowerCase();
40433
+ if (tagName && REPEATING_COMPONENT_TAGS.includes(tagName)) {
40434
+ return currentNode.getAttribute("dataset") || null;
40435
+ }
40436
+ currentNode = currentNode.parentNode;
40437
+ }
40438
+ return null;
40439
+ };
40440
+ var buildOnChangeHandler = (config) => {
40441
+ const { variableName, updateExpr, value, oldValue, callbackEvent } = config;
40442
+ return `
40443
+ ($event, widget, ${value}, ${oldValue}) => {
40444
+ if(fragment?.Variables?.${variableName}?.twoWayBinding) {
40445
+ ${updateExpr}
40446
+ }
40447
+ ${callbackEvent ? `${callbackEvent}` : ""};
40448
+ }
40449
+ `;
40450
+ };
40451
+ var getOnChangeExprforFormWidget = (element, eventName, context) => {
40452
+ const bindExpr = resolveBindExpression(element);
40453
+ if (!bindExpr) {
40373
40454
  return "";
40374
40455
  }
40375
40456
  const value = eventName === "on-change" ? "newVal" : "selectedValue";
40376
40457
  const oldValue = eventName === "on-change" ? "oldVal" : "";
40377
40458
  let variableName = null;
40378
40459
  let updateExpr = "";
40379
- if (bindExpr == null ? void 0 : bindExpr.includes("$item")) {
40380
- const repeatingComponentTags = [
40381
- "wm-list",
40382
- "wm-carousel",
40383
- "wm-tabs",
40384
- "wm-wizard",
40385
- "wm-accordion"
40386
- ];
40387
- let currentNode = element.parentNode;
40388
- let parentDataset = null;
40389
- while (currentNode) {
40390
- const tagName = (_c = currentNode.tagName) == null ? void 0 : _c.toLowerCase();
40391
- if (tagName && repeatingComponentTags.includes(tagName)) {
40392
- parentDataset = currentNode.getAttribute("dataset");
40393
- break;
40394
- }
40395
- currentNode = currentNode.parentNode;
40396
- }
40460
+ if (bindExpr.includes("$item")) {
40461
+ const parentDataset = findRepeatingParentContext(element);
40397
40462
  if (parentDataset && parentDataset.startsWith("bind:")) {
40398
40463
  const parentDatasetExpr = parentDataset.substring(5);
40399
40464
  let variableMatch = parentDatasetExpr.match(/fragment\.Variables\.([^.]+)\.dataSet/);
@@ -40417,35 +40482,31 @@ var getOnChangeExprforFormWidget = (element, eventName, context) => {
40417
40482
  return "";
40418
40483
  }
40419
40484
  } else {
40420
- const isVariable2 = bindExpr == null ? void 0 : bindExpr.includes("Variables");
40421
- const variableExpr = bindExpr == null ? void 0 : bindExpr.split(".");
40485
+ const isVariable2 = bindExpr.includes("Variables");
40486
+ const variableExpr = bindExpr.split(".");
40422
40487
  variableName = isVariable2 && variableExpr ? variableExpr[2] : variableExpr ? variableExpr[1] : null;
40423
40488
  if (variableName) {
40424
40489
  const twoWayBindingVariables = context == null ? void 0 : context.get("twoWayBindingVariables");
40425
40490
  const hasTwoWayBinding = (twoWayBindingVariables == null ? void 0 : twoWayBindingVariables.has(variableName)) === true;
40426
40491
  if (hasTwoWayBinding) {
40427
- updateExpr = bindExpr != null ? `${bindExpr} = ${value};` : "";
40492
+ updateExpr = `${bindExpr} = ${value};`;
40428
40493
  }
40429
40494
  }
40430
40495
  }
40431
- if (!variableName) {
40432
- return "";
40433
- }
40434
- if (!updateExpr) {
40496
+ if (!variableName || !updateExpr) {
40435
40497
  return "";
40436
40498
  }
40437
40499
  const callbackEvent = element.getAttribute(eventName);
40438
40500
  if (callbackEvent) {
40439
40501
  element.removeAttribute(eventName);
40440
40502
  }
40441
- return `
40442
- ($event, widget, ${value}, ${oldValue}) => {
40443
- if(fragment?.Variables?.${variableName}?.twoWayBinding) {
40444
- ${updateExpr}
40445
- }
40446
- ${callbackEvent ? `${callbackEvent}` : ""};
40447
- }
40448
- `;
40503
+ return buildOnChangeHandler({
40504
+ variableName,
40505
+ updateExpr,
40506
+ value,
40507
+ oldValue,
40508
+ callbackEvent: callbackEvent || null
40509
+ });
40449
40510
  };
40450
40511
  var inferTypeAndParseProperty = (name, valWithQuotes) => {
40451
40512
  let val = valWithQuotes.startsWith('"') ? valWithQuotes.substring(1) : valWithQuotes;
@@ -41221,7 +41282,43 @@ var isBind = (v) => !!(v && (v.startsWith("bind:") || v.startsWith("{")));
41221
41282
  var hasValidDir = (v) => v === "row" || v === "column";
41222
41283
  var isAuto = (v) => v === "auto";
41223
41284
  var normalizeGap = (v) => v != null && v !== "" && !isAuto(v) ? v : null;
41224
- var px = (v) => v == null || v === "auto" ? void 0 : `${v}px`;
41285
+ function parseDimensionValue(value, element) {
41286
+ if (value === "auto") return "auto";
41287
+ if (value === "hug") return "fit-content";
41288
+ if (value === "fill") return "100%";
41289
+ if (/(%|vw|vh|em|rem|px|pt|pc|in|cm|mm)$/.test(value)) return value;
41290
+ const n = Number(value);
41291
+ if (!Number.isNaN(n)) return `${n}px`;
41292
+ return value;
41293
+ }
41294
+ var toCssLength = (v) => v == null || v === "auto" ? void 0 : parseDimensionValue(String(v));
41295
+ var SPACING_SHORTHAND_ATTRS = /* @__PURE__ */ new Set(["padding", "margin"]);
41296
+ var SPACING_SIDE_ATTRS = /* @__PURE__ */ new Set([
41297
+ "paddingtop",
41298
+ "paddingright",
41299
+ "paddingbottom",
41300
+ "paddingleft",
41301
+ "margintop",
41302
+ "marginright",
41303
+ "marginbottom",
41304
+ "marginleft"
41305
+ ]);
41306
+ function isBareNumericSpacingToken(token) {
41307
+ const v = token.trim();
41308
+ return v !== "" && !Number.isNaN(Number(v));
41309
+ }
41310
+ function isValidSpacingShorthand(value) {
41311
+ const tokens = splitCssShorthandOnSpaces(value);
41312
+ if (tokens.length === 0) return false;
41313
+ if (tokens.length === 1) return true;
41314
+ return tokens.every((token) => {
41315
+ if (token.trim() === "0") return true;
41316
+ return !isBareNumericSpacingToken(token);
41317
+ });
41318
+ }
41319
+ function normalizeSpacingToken(token) {
41320
+ return parseDimensionValue(token.trim());
41321
+ }
41225
41322
  function getBaseAlignment(key) {
41226
41323
  return ALIGNMENT_MATRIX[key] || { justifyContent: "flex-start", alignItems: "flex-start" };
41227
41324
  }
@@ -41395,7 +41492,7 @@ function computeLayoutCssProperties(props) {
41395
41492
  css["justify-content"] = justifyContent;
41396
41493
  css["align-items"] = alignItems;
41397
41494
  }
41398
- if (normGap != null) css["gap"] = px(normGap);
41495
+ if (normGap != null) css["gap"] = toCssLength(normGap);
41399
41496
  }
41400
41497
  } else {
41401
41498
  const gapIsAuto = isAuto(props.gap);
@@ -41413,8 +41510,8 @@ function computeLayoutCssProperties(props) {
41413
41510
  } else {
41414
41511
  if (hasAlignment) css["align-content"] = alignItems;
41415
41512
  }
41416
- if (normGap != null) css["row-gap"] = px(normGap);
41417
- if (normCgap != null) css["column-gap"] = px(normCgap);
41513
+ if (normGap != null) css["row-gap"] = toCssLength(normGap);
41514
+ if (normCgap != null) css["column-gap"] = toCssLength(normCgap);
41418
41515
  }
41419
41516
  }
41420
41517
  if (props.clipcontent) {
@@ -41480,18 +41577,9 @@ function getStaticLayoutPropsFromElement(element, dynamicGroups) {
41480
41577
  }
41481
41578
  return hasAny ? props : null;
41482
41579
  }
41483
- function parseDimensionValue(value, element) {
41484
- if (value === "auto") return "auto";
41485
- if (value === "hug") return "fit-content";
41486
- if (value === "fill") return "100%";
41487
- if (/(%|vw|vh|em|rem|px|pt|pc|in|cm|mm)$/.test(value)) return value;
41488
- const n = Number(value);
41489
- if (!Number.isNaN(n)) return `${n}px`;
41490
- return value;
41491
- }
41492
41580
  function expandShorthand(value) {
41493
41581
  const parts = splitCssShorthandOnSpaces(value).map(
41494
- (v) => v !== "unset" ? parseDimensionValue(v) : "unset"
41582
+ (v) => v !== "unset" ? normalizeSpacingToken(v) : "unset"
41495
41583
  );
41496
41584
  if (parts.length === 1) return [parts[0], parts[0], parts[0], parts[0]];
41497
41585
  if (parts.length === 2) return [parts[0], parts[1], parts[0], parts[1]];
@@ -41627,6 +41715,10 @@ var AutolayoutCodegen = class {
41627
41715
  if (!raw || isBind(raw)) continue;
41628
41716
  if (attrName === "width" || attrName === "height") continue;
41629
41717
  if (info.type === "shorthand-4" && info.shorthandSides) {
41718
+ if (SPACING_SHORTHAND_ATTRS.has(attrName) && !isValidSpacingShorthand(raw)) {
41719
+ element.removeAttribute(attrName);
41720
+ continue;
41721
+ }
41630
41722
  const [top, right, bottom, left] = expandShorthand(raw);
41631
41723
  const sides = info.shorthandSides;
41632
41724
  if (top !== "unset") classNames.push(this.registerClass(sides.top, top));
@@ -41641,6 +41733,8 @@ var AutolayoutCodegen = class {
41641
41733
  if (attrName === "fontsize" && fontUnit && !isBind(fontUnit)) {
41642
41734
  const n = Number(raw);
41643
41735
  cssValue = !Number.isNaN(n) ? `${n}${fontUnit}` : parseDimensionValue(raw);
41736
+ } else if (SPACING_SIDE_ATTRS.has(attrName)) {
41737
+ cssValue = normalizeSpacingToken(raw);
41644
41738
  } else {
41645
41739
  cssValue = parseDimensionValue(raw);
41646
41740
  }
@@ -41865,7 +41959,7 @@ var TranspilationContext2 = class {
41865
41959
  this.data[key] = value;
41866
41960
  }
41867
41961
  };
41868
- var Transpiler = class {
41962
+ var _Transpiler = class _Transpiler {
41869
41963
  constructor() {
41870
41964
  this.transformers = /* @__PURE__ */ new Map();
41871
41965
  this.componentNamesList = [];
@@ -42217,6 +42311,97 @@ var Transpiler = class {
42217
42311
  className: addOptionalChaining(classes)
42218
42312
  };
42219
42313
  }
42314
+ // Parse arguments properly, handling commas inside object literals and arrays
42315
+ parseArguments(argString) {
42316
+ const args = [];
42317
+ let currentArg = "";
42318
+ let braceCount = 0;
42319
+ let bracketCount = 0;
42320
+ for (let i = 0; i < argString.length; i++) {
42321
+ const char = argString[i];
42322
+ if (char === "{") braceCount++;
42323
+ else if (char === "}") braceCount--;
42324
+ else if (char === "[") bracketCount++;
42325
+ else if (char === "]") bracketCount--;
42326
+ if (char === "," && braceCount === 0 && bracketCount === 0) {
42327
+ if (currentArg.trim()) {
42328
+ args.push(currentArg.trim());
42329
+ }
42330
+ currentArg = "";
42331
+ continue;
42332
+ }
42333
+ currentArg += char;
42334
+ }
42335
+ if (currentArg.trim()) {
42336
+ args.push(currentArg.trim());
42337
+ }
42338
+ return args;
42339
+ }
42340
+ // Droping literal arguments like strings, numbers, booleans, null/undefined
42341
+ isLiteral(s) {
42342
+ const v = s.trim();
42343
+ return /^(['"]).*\1$/.test(v) || /^-?\d+(?:\.\d+)?$/.test(v) || /^(true|false|null|undefined)$/i.test(v);
42344
+ }
42345
+ // Arithmetic/binary expressions (e.g. "0-5", "0+3") are not valid parameter names.
42346
+ // The Angular parser converts unary negatives like -5 into binary (0-5).
42347
+ isArithmeticExpression(s) {
42348
+ const v = s.trim();
42349
+ return /^\d+\s*[-+*/%]\s*\d+/.test(v);
42350
+ }
42351
+ // Check if argument contains a dot (property access), which makes it an expression, not a valid parameter name
42352
+ isPropertyAccess(s) {
42353
+ return s.trim().includes(".");
42354
+ }
42355
+ // Object literals should not be extracted as function parameters
42356
+ isObjectLiteral(s) {
42357
+ const trimmed = s.trim();
42358
+ if (trimmed.startsWith("{") && trimmed.includes(":")) {
42359
+ let braceCount = 0;
42360
+ let inString = false;
42361
+ let stringChar = "";
42362
+ for (let i = 0; i < trimmed.length; i++) {
42363
+ const char = trimmed[i];
42364
+ if ((char === '"' || char === "'") && (i === 0 || trimmed[i - 1] !== "\\")) {
42365
+ if (!inString) {
42366
+ inString = true;
42367
+ stringChar = char;
42368
+ } else if (char === stringChar) {
42369
+ inString = false;
42370
+ }
42371
+ } else if (!inString) {
42372
+ if (char === "{") braceCount++;
42373
+ else if (char === "}") braceCount--;
42374
+ }
42375
+ }
42376
+ return braceCount === 0 && trimmed.endsWith("}");
42377
+ }
42378
+ return false;
42379
+ }
42380
+ // Array literals should not be extracted as function parameters
42381
+ isArrayLiteral(s) {
42382
+ const trimmed = s.trim();
42383
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
42384
+ let bracketCount = 0;
42385
+ let inString = false;
42386
+ let stringChar = "";
42387
+ for (let i = 0; i < trimmed.length; i++) {
42388
+ const char = trimmed[i];
42389
+ if ((char === '"' || char === "'") && (i === 0 || trimmed[i - 1] !== "\\")) {
42390
+ if (!inString) {
42391
+ inString = true;
42392
+ stringChar = char;
42393
+ } else if (char === stringChar) {
42394
+ inString = false;
42395
+ }
42396
+ } else if (!inString) {
42397
+ if (char === "[") bracketCount++;
42398
+ else if (char === "]") bracketCount--;
42399
+ }
42400
+ }
42401
+ return bracketCount === 0;
42402
+ }
42403
+ return false;
42404
+ }
42220
42405
  findArgs(str, context) {
42221
42406
  var _a;
42222
42407
  let argStr = "";
@@ -42232,92 +42417,8 @@ var Transpiler = class {
42232
42417
  if (context == null ? void 0 : context.get("isInsideList")) {
42233
42418
  argStr = argStr.split(",").filter((s) => !(0, import_lodash5.includes)(["$item", "currentItemWidgets"], s.trim())).join(",");
42234
42419
  }
42235
- const parseArguments = (argString) => {
42236
- const args2 = [];
42237
- let currentArg = "";
42238
- let braceCount = 0;
42239
- let bracketCount = 0;
42240
- for (let i = 0; i < argString.length; i++) {
42241
- const char = argString[i];
42242
- if (char === "{") braceCount++;
42243
- else if (char === "}") braceCount--;
42244
- else if (char === "[") bracketCount++;
42245
- else if (char === "]") bracketCount--;
42246
- if (char === "," && braceCount === 0 && bracketCount === 0) {
42247
- if (currentArg.trim()) {
42248
- args2.push(currentArg.trim());
42249
- }
42250
- currentArg = "";
42251
- continue;
42252
- }
42253
- currentArg += char;
42254
- }
42255
- if (currentArg.trim()) {
42256
- args2.push(currentArg.trim());
42257
- }
42258
- return args2;
42259
- };
42260
- const isLiteral = (s) => {
42261
- const v = s.trim();
42262
- return /^(['"]).*\1$/.test(v) || /^-?\d+(?:\.\d+)?$/.test(v) || /^(true|false|null|undefined)$/i.test(v);
42263
- };
42264
- const isArithmeticExpression = (s) => {
42265
- const v = s.trim();
42266
- return /^\d+\s*[-+*/%]\s*\d+/.test(v);
42267
- };
42268
- const isPropertyAccess = (s) => {
42269
- return s.trim().includes(".");
42270
- };
42271
- const isObjectLiteral = (s) => {
42272
- const trimmed = s.trim();
42273
- if (trimmed.startsWith("{") && trimmed.includes(":")) {
42274
- let braceCount = 0;
42275
- let inString = false;
42276
- let stringChar = "";
42277
- for (let i = 0; i < trimmed.length; i++) {
42278
- const char = trimmed[i];
42279
- if ((char === '"' || char === "'") && (i === 0 || trimmed[i - 1] !== "\\")) {
42280
- if (!inString) {
42281
- inString = true;
42282
- stringChar = char;
42283
- } else if (char === stringChar) {
42284
- inString = false;
42285
- }
42286
- } else if (!inString) {
42287
- if (char === "{") braceCount++;
42288
- else if (char === "}") braceCount--;
42289
- }
42290
- }
42291
- return braceCount === 0 && trimmed.endsWith("}");
42292
- }
42293
- return false;
42294
- };
42295
- const isArrayLiteral = (s) => {
42296
- const trimmed = s.trim();
42297
- if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
42298
- let bracketCount = 0;
42299
- let inString = false;
42300
- let stringChar = "";
42301
- for (let i = 0; i < trimmed.length; i++) {
42302
- const char = trimmed[i];
42303
- if ((char === '"' || char === "'") && (i === 0 || trimmed[i - 1] !== "\\")) {
42304
- if (!inString) {
42305
- inString = true;
42306
- stringChar = char;
42307
- } else if (char === stringChar) {
42308
- inString = false;
42309
- }
42310
- } else if (!inString) {
42311
- if (char === "[") bracketCount++;
42312
- else if (char === "]") bracketCount--;
42313
- }
42314
- }
42315
- return bracketCount === 0;
42316
- }
42317
- return false;
42318
- };
42319
- const parsedArgs = parseArguments(argStr);
42320
- const args = parsedArgs.filter(Boolean).filter((s) => !isLiteral(s)).filter((s) => !isArithmeticExpression(s)).filter((s) => !isPropertyAccess(s)).filter((s) => !isObjectLiteral(s)).filter((s) => !isArrayLiteral(s));
42420
+ const parsedArgs = this.parseArguments(argStr);
42421
+ const args = parsedArgs.filter(Boolean).filter((s) => !this.isLiteral(s)).filter((s) => !this.isArithmeticExpression(s)).filter((s) => !this.isPropertyAccess(s)).filter((s) => !this.isObjectLiteral(s)).filter((s) => !this.isArrayLiteral(s));
42321
42422
  const usesBareEvent = /\$event\b/.test(str);
42322
42423
  const hasEventParam = args.some((a) => a.trim() === "$event");
42323
42424
  if (usesBareEvent && !hasEventParam) {
@@ -42325,6 +42426,96 @@ var Transpiler = class {
42325
42426
  }
42326
42427
  return `(${args.join(", ")})`;
42327
42428
  }
42429
+ // Parse "($event, widget)" → ["$event", "widget"]; "()" → []
42430
+ parseArrowParamNames(argsStr) {
42431
+ const inner = argsStr.replace(/^\(|\)$/g, "").trim();
42432
+ if (!inner) return [];
42433
+ return inner.split(",").map((s) => s.trim()).filter(Boolean);
42434
+ }
42435
+ // Detect a `;` outside strings/parens/braces/brackets — signals multiple top-level statements
42436
+ hasTopLevelSemicolon(body) {
42437
+ let paren = 0;
42438
+ let brace = 0;
42439
+ let bracket = 0;
42440
+ let inString = false;
42441
+ let stringChar = "";
42442
+ for (let i = 0; i < body.length; i++) {
42443
+ const ch = body[i];
42444
+ if ((ch === '"' || ch === "'") && (i === 0 || body[i - 1] !== "\\")) {
42445
+ if (!inString) {
42446
+ inString = true;
42447
+ stringChar = ch;
42448
+ } else if (ch === stringChar) {
42449
+ inString = false;
42450
+ }
42451
+ continue;
42452
+ }
42453
+ if (inString) continue;
42454
+ if (ch === "(") paren++;
42455
+ else if (ch === ")") paren--;
42456
+ else if (ch === "{") brace++;
42457
+ else if (ch === "}") brace--;
42458
+ else if (ch === "[") bracket++;
42459
+ else if (ch === "]") bracket--;
42460
+ else if (ch === ";" && paren === 0 && brace === 0 && bracket === 0) return true;
42461
+ }
42462
+ return false;
42463
+ }
42464
+ isInstanceBoundFragmentCallee(calleeRef) {
42465
+ return _Transpiler.INSTANCE_BOUND_CALLEE.test(calleeRef);
42466
+ }
42467
+ // Match a body shaped like `fragment(...property chain...)?.(args)` — return callee ref + raw arg list
42468
+ extractFragmentMethodCall(body) {
42469
+ const trimmed = body.trim();
42470
+ if (!trimmed.endsWith(")") || !trimmed.startsWith("fragment")) return null;
42471
+ let depth = 0;
42472
+ let openIdx = -1;
42473
+ for (let i = trimmed.length - 1; i >= 0; i--) {
42474
+ const ch = trimmed[i];
42475
+ if (ch === ")") depth++;
42476
+ else if (ch === "(") {
42477
+ depth--;
42478
+ if (depth === 0) {
42479
+ openIdx = i;
42480
+ break;
42481
+ }
42482
+ }
42483
+ }
42484
+ if (openIdx < 2) return null;
42485
+ if (trimmed.substring(openIdx - 2, openIdx) !== "?.") return null;
42486
+ const calleeRef = trimmed.substring(0, openIdx - 2);
42487
+ if (!_Transpiler.FRAGMENT_CALLEE_REF.test(calleeRef)) return null;
42488
+ const argsStr = trimmed.substring(openIdx + 1, trimmed.length - 1);
42489
+ const callArgs = this.parseArguments(argsStr);
42490
+ return { calleeRef, callArgs };
42491
+ }
42492
+ // Decide if an `on-*` handler body can be emitted as a direct function reference instead of an arrow wrapper.
42493
+ // Eligible when body is a single `fragment?.x?.(...)` call whose args are all simple identifiers already
42494
+ // present in the synthesized arrow parameter list — i.e. nothing references closure-only values like `$item`,
42495
+ // `currentItemWidgetsRef.current`, literals, property-access expressions, or table column `rowData`.
42496
+ //
42497
+ // Additional exclusion: callee paths through `Actions` or `Variables` resolve to runtime instance
42498
+ // methods (NavigationAction.invoke, BaseVariable.invoke, setData, navigate, …) that rely on `this`.
42499
+ // Emitting them as detached refs strips the receiver and breaks runtime + WmAnchor's
42500
+ // `getGoToPageNameFromClickHandler` source-string detection, so always wrap those in an arrow.
42501
+ canUseDirectHandlerReference(body, arrowParams) {
42502
+ const trimmed = body.replace(/;+\s*$/, "").trim();
42503
+ if (!trimmed) return null;
42504
+ if (this.hasTopLevelSemicolon(trimmed)) return null;
42505
+ const parsed = this.extractFragmentMethodCall(trimmed);
42506
+ if (!parsed) return null;
42507
+ if (this.isInstanceBoundFragmentCallee(parsed.calleeRef)) return null;
42508
+ const paramSet = new Set(arrowParams);
42509
+ for (const raw of parsed.callArgs) {
42510
+ const a = raw.trim();
42511
+ if (!a) continue;
42512
+ if (this.isLiteral(a) || this.isArithmeticExpression(a) || this.isObjectLiteral(a) || this.isArrayLiteral(a) || this.isPropertyAccess(a)) {
42513
+ return null;
42514
+ }
42515
+ if (!paramSet.has(a)) return null;
42516
+ }
42517
+ return parsed.calleeRef;
42518
+ }
42328
42519
  quoteAttr(v) {
42329
42520
  return ("" + v).replace(/&/g, "&amp;").replace(/'/g, "&apos;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
42330
42521
  }
@@ -42360,8 +42551,15 @@ var Transpiler = class {
42360
42551
  if (context == null ? void 0 : context.get("isInsideTableColumn")) {
42361
42552
  value = value.replace(/\brow\b/g, "rowData");
42362
42553
  }
42363
- value = `${args} => {${value}}`;
42364
- value = `{${value}}`;
42554
+ const arrowParams = this.parseArrowParamNames(args);
42555
+ const bodyForCheck = value.replace(/;+\s*$/, "").trim();
42556
+ const directRef = this.canUseDirectHandlerReference(bodyForCheck, arrowParams);
42557
+ if (directRef) {
42558
+ value = `{${directRef}}`;
42559
+ } else {
42560
+ value = `${args} => {${value}}`;
42561
+ value = `{${value}}`;
42562
+ }
42365
42563
  } else if (name === "datasource" || name === "deletedatasource") {
42366
42564
  if (value.startsWith("fragment")) {
42367
42565
  value = `{${value}}`;
@@ -42374,6 +42572,7 @@ var Transpiler = class {
42374
42572
  exp = exp.replace("fragment.Page", "fragment");
42375
42573
  const isProgressCircleDatavalue = tagName === "wm-progress-circle" && name === "datavalue";
42376
42574
  exp = modifyExpression(exp);
42575
+ exp = resolveFormatContext(exp, context);
42377
42576
  exp = this.convertStringBooleanTernary(exp);
42378
42577
  if (!exp) {
42379
42578
  exp = '""';
@@ -42486,6 +42685,15 @@ var Transpiler = class {
42486
42685
  transpiler.transformers.set(tagName, transformer);
42487
42686
  }
42488
42687
  };
42688
+ // Pure property / safe-property / keyed-read chain rooted at `fragment`.
42689
+ // Rejects callee refs that contain intermediate calls (e.g. `fragment.a?.b?.()?.c`),
42690
+ // operators, assignments, whitespace — anything that would change semantics when
42691
+ // evaluated at render time instead of click time.
42692
+ _Transpiler.FRAGMENT_CALLEE_REF = /^fragment(?:\??\.[a-zA-Z_$][\w$]*|(?:\?\.)?\[[^\]]*\])*$/;
42693
+ // Callee paths rooted at runtime instance objects (Actions, Variables) whose methods
42694
+ // (invoke, navigate, setData, …) rely on `this` and must not be emitted as detached refs.
42695
+ _Transpiler.INSTANCE_BOUND_CALLEE = /(?:\?\.|\.)(?:Actions|Variables)(?:\?\.|\.|\[|$)/;
42696
+ var Transpiler = _Transpiler;
42489
42697
  var transpiler = new Transpiler();
42490
42698
  var registerTransformer = transpiler.registerTransformer.bind(transpiler);
42491
42699
  var transpileMarkup = (markup, isPartOfPrefab, splitCode, variables, preview) => {
@@ -42581,15 +42789,14 @@ var createExpression = (element, attrName) => {
42581
42789
  displayexpression = displayexpression.replace(/\$item\[fragment.(.*?)\]/g, "$item['$1']");
42582
42790
  displayexpression = displayexpression.replace(/\$item\['(.*?)'\]/g, "_get($item, '$1')");
42583
42791
  displayexpression = displayexpression.replace(/fragment.index/g, "$index");
42584
- if (displayexpression.indexOf("fragment.formatters.") >= 0) {
42585
- displayexpression = displayexpression.replace(new RegExp(FORMAT_CONTEXT, "g"), "$item");
42792
+ if (/formatters/.test(displayexpression)) {
42793
+ displayexpression = displayexpression.split(FORMAT_CONTEXT).join("$item");
42586
42794
  }
42587
42795
  displayexpression = displayexpression.replace(
42588
42796
  /fragment\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g,
42589
42797
  "$item.$1"
42590
42798
  );
42591
- displayexpression = displayexpression.replace(/(?<!\?)\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g, "?.$1");
42592
- displayexpression = displayexpression.replace(/([a-zA-Z0-9_$\]])\[/g, "$1?.[");
42799
+ displayexpression = addOptionalChaining(displayexpression);
42593
42800
  const exp = (0, import_lodash5.includes)(displayexpression, "(") ? `${displayexpression}` : displayexpression;
42594
42801
  if (displayexpression.indexOf("$index") >= 0) {
42595
42802
  return `{($item, $index, $length) => (${exp})}`;
@@ -42677,100 +42884,59 @@ var label_transformer_default = {
42677
42884
  imports: (element, context) => imports2
42678
42885
  };
42679
42886
 
42680
- // src/transpile/components/partial/partial-content.transformer.ts
42681
- var import_html_entities = __toESM(require_lib9());
42682
- var imports3 = [];
42683
- var ignoredAttributes = ["name", "show", "content", "class", "styles"];
42684
- var partial_content_transformer_default = {
42685
- pre: (element, context) => {
42686
- let content = element.attributes["content"];
42687
- const name = element.attributes["name"];
42688
- if (content) {
42689
- const params = {};
42690
- if (!element.hasAttribute("is-table-row")) {
42691
- Object.keys(element.attrs).forEach((k) => {
42692
- if (!ignoredAttributes.includes(k)) {
42693
- params[k] = element.attrs[k];
42694
- }
42695
- });
42696
- }
42697
- const watch = [];
42698
- element.childNodes.filter((node) => isHTMLElement(node) && node.tagName === "WM-PARAM").forEach((node) => {
42699
- const e = node;
42700
- const name2 = e.getAttribute("name") || "";
42701
- let value = e.getAttribute("value") || "";
42702
- if (value.includes("currentItem")) {
42703
- const match = value.match(/currentItem\..+/);
42704
- if (match) {
42705
- value = `bind:${match[0]}`;
42706
- }
42707
- }
42708
- params[name2] = value;
42709
- watch.push(name2);
42710
- });
42711
- let paramStr = Object.keys(params).filter((k) => k !== "on-load").map((k) => `${k}="${(0, import_html_entities.encode)(params[k])}"`).join(" ");
42712
- paramStr = transformAttrs(
42713
- parse5(`<wm-partial-content ${paramStr}/>`).firstChild,
42714
- context,
42715
- inferTypeAndParseProperty
42716
- );
42717
- paramStr += ` content={props.content}`;
42718
- if (context.isPartOfPrefab) {
42719
- paramStr += " prefab={fragment.prefab}";
42720
- paramStr += "prefabName={fragment.prefabName}";
42721
- paramStr += "Prefab={stateProxy}";
42722
- }
42723
- return `<WmPartialContent ${watch.length > 0 ? `params={${JSON.stringify(watch)}}` : ""} onLoad={onLoad} ${paramStr} partialName={'${name}'} listener={props.listener} />`;
42724
- }
42725
- return "";
42726
- },
42727
- post: (element, context) => "",
42728
- imports: (element, context) => element.hasAttribute("content") ? imports3 : []
42729
- };
42730
-
42731
- // src/transpile/components/layout/header.transformer.ts
42732
- var imports4 = [
42887
+ // src/transpile/components/layout/layout-region-factory.ts
42888
+ var partialContainerImport = [
42733
42889
  {
42734
- name: "WmHeader",
42735
- from: "@wavemaker-ai/react-runtime/components/layout/header"
42890
+ name: "WmPartialContainer",
42891
+ from: "@wavemaker-ai/react-runtime/components/page/partial-container"
42736
42892
  }
42737
42893
  ];
42738
- var header_transformer_default = {
42739
- pre: (element, context) => {
42740
- const isPreview = context.get("preview") === true;
42741
- if (isPreview) {
42742
- let partial = partial_content_transformer_default.pre(element, context) || "";
42743
- if (partial) {
42744
- element.removeAttribute("name");
42745
- partial = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
42894
+ function createLayoutRegionTransformer(config) {
42895
+ const { component, importPath, defaultContent, defaultName } = config;
42896
+ const tag = component[0];
42897
+ const componentImports = component.map((name, i) => ({ name, from: importPath[i] }));
42898
+ return {
42899
+ pre: (element, context) => {
42900
+ const content = element.getAttribute("content") || defaultContent;
42901
+ const name = element.getAttribute("name") || defaultName;
42902
+ const isPreview = context.get("preview") === true;
42903
+ if (isPreview) {
42904
+ return `<${tag} ${transformAttrs(element, context)}>
42905
+ <WmPartialContainer content="${content}" isLayout={true} partialName="${name}" listener={fragment} />
42906
+ `;
42746
42907
  }
42747
- return `<WmHeader ${transformAttrs(element, context)} ${partial}>`;
42748
- }
42749
- const content = element.getAttribute("content") || "header";
42750
- const name = element.getAttribute("name") || "header";
42751
- return `<WmHeader ${transformAttrs(element, context)}>
42908
+ return `<${tag} ${transformAttrs(element, context)}>
42752
42909
  <${content.charAt(0).toUpperCase() + content.slice(1)} isLayout={true} partialName="${name}" />
42753
42910
  `;
42754
- },
42755
- post: (element, context) => "</WmHeader>",
42756
- imports: (element, context) => {
42757
- const isPreview = context.get("preview") === true;
42758
- if (isPreview) {
42759
- return imports4;
42911
+ },
42912
+ post: () => `</${tag}>`,
42913
+ imports: (element, context) => {
42914
+ const isPreview = context.get("preview") === true;
42915
+ if (isPreview) {
42916
+ return [...componentImports, ...partialContainerImport];
42917
+ }
42918
+ const content = element.getAttribute("content") || defaultContent;
42919
+ return [
42920
+ ...componentImports,
42921
+ {
42922
+ name: content.charAt(0).toUpperCase() + content.slice(1),
42923
+ from: `@/app/components/${content}/${content}`
42924
+ }
42925
+ ];
42760
42926
  }
42761
- const content = element.getAttribute("content") || "header";
42762
- return [
42763
- ...imports4,
42764
- {
42765
- name: content.charAt(0).toUpperCase() + content.slice(1),
42766
- from: `@/app/components/${content}/${content}`
42767
- }
42768
- ];
42769
- }
42770
- };
42927
+ };
42928
+ }
42929
+
42930
+ // src/transpile/components/layout/header.transformer.ts
42931
+ var header_transformer_default = createLayoutRegionTransformer({
42932
+ component: ["WmHeader"],
42933
+ importPath: ["@wavemaker-ai/react-runtime/components/layout/header"],
42934
+ defaultContent: "header",
42935
+ defaultName: "header"
42936
+ });
42771
42937
 
42772
42938
  // src/transpile/components/page/page-content.transformer.ts
42773
- var imports5 = [
42939
+ var imports3 = [
42774
42940
  {
42775
42941
  name: "WmPageContent",
42776
42942
  from: "@wavemaker-ai/react-runtime/components/page/page-content"
@@ -42779,7 +42945,7 @@ var imports5 = [
42779
42945
  var page_content_transformer_default = {
42780
42946
  pre: (element, context) => `<WmPageContent ${transformAttrs(element, context)} >`,
42781
42947
  post: (element, context) => "</WmPageContent>",
42782
- imports: (element, context) => imports5,
42948
+ imports: (element, context) => imports3,
42783
42949
  createComponent: (element, context) => createComponent2(element, context)
42784
42950
  };
42785
42951
 
@@ -42793,7 +42959,7 @@ var PAGE_EVENT_ATTRS = [
42793
42959
  ];
42794
42960
  var PAGE_EVENT_KEYS = ["attach", "detach", "destroy", "orientationchange", "resize"];
42795
42961
  var THREE_ARG_EVENTS = /* @__PURE__ */ new Set(["orientationchange", "resize"]);
42796
- var imports6 = [
42962
+ var imports4 = [
42797
42963
  {
42798
42964
  name: "WmPage",
42799
42965
  from: "@wavemaker-ai/react-runtime/components/page"
@@ -42824,12 +42990,12 @@ var page_transformer_default = {
42824
42990
  return `<WmPage ${transformAttrs(element, context)} >`;
42825
42991
  },
42826
42992
  post: (element, context) => "</WmPage>",
42827
- imports: (element, context) => imports6,
42993
+ imports: (element, context) => imports4,
42828
42994
  createComponent: (element, context) => createComponent2(element, context)
42829
42995
  };
42830
42996
 
42831
42997
  // src/transpile/components/container/layout-grid/grid.transformer.ts
42832
- var imports7 = [
42998
+ var imports5 = [
42833
42999
  {
42834
43000
  name: "WmLayoutgrid",
42835
43001
  from: "@wavemaker-ai/react-runtime/components/container/layout-grid"
@@ -42838,11 +43004,11 @@ var imports7 = [
42838
43004
  var grid_transformer_default = {
42839
43005
  pre: (element, context) => `<WmLayoutgrid iswidget="false" ${transformAttrs(element, context)}>`,
42840
43006
  post: (element, context) => "</WmLayoutgrid>",
42841
- imports: (element, context) => imports7
43007
+ imports: (element, context) => imports5
42842
43008
  };
42843
43009
 
42844
43010
  // src/transpile/components/container/layout-grid/grid-column.transformer.ts
42845
- var imports8 = [
43011
+ var imports6 = [
42846
43012
  {
42847
43013
  name: "WmGridcolumn",
42848
43014
  from: "@wavemaker-ai/react-runtime/components/container/layout-grid/grid-column"
@@ -42851,11 +43017,11 @@ var imports8 = [
42851
43017
  var grid_column_transformer_default = {
42852
43018
  pre: (element, context) => `<WmGridcolumn iswidget="false" ${transformAttrs(element, context)}>`,
42853
43019
  post: (element, context) => "</WmGridcolumn>",
42854
- imports: (element, context) => imports8
43020
+ imports: (element, context) => imports6
42855
43021
  };
42856
43022
 
42857
43023
  // src/transpile/components/container/layout-grid/grid-row.transformer.ts
42858
- var imports9 = [
43024
+ var imports7 = [
42859
43025
  {
42860
43026
  name: "WmGridrow",
42861
43027
  from: "@wavemaker-ai/react-runtime/components/container/layout-grid/grid-row"
@@ -42864,11 +43030,11 @@ var imports9 = [
42864
43030
  var grid_row_transformer_default = {
42865
43031
  pre: (element, context) => `<WmGridrow iswidget="false" ${transformAttrs(element, context)}>`,
42866
43032
  post: (element, context) => "</WmGridrow>",
42867
- imports: (element, context) => imports9
43033
+ imports: (element, context) => imports7
42868
43034
  };
42869
43035
 
42870
43036
  // src/transpile/components/page/content.transformer.ts
42871
- var imports10 = [
43037
+ var imports8 = [
42872
43038
  {
42873
43039
  name: "WmContent",
42874
43040
  from: "@wavemaker-ai/react-runtime/components/page/content"
@@ -42877,135 +43043,36 @@ var imports10 = [
42877
43043
  var content_transformer_default = {
42878
43044
  pre: (element, context) => `<WmContent data-role="page-content" role="main" ${transformAttrs(element, context)} >`,
42879
43045
  post: (element, context) => "</WmContent>",
42880
- imports: (element, context) => imports10,
43046
+ imports: (element, context) => imports8,
42881
43047
  createComponent: (element, context) => createComponent2(element, context)
42882
43048
  };
42883
43049
 
42884
43050
  // src/transpile/components/layout/footer.transformer.ts
42885
- var imports11 = [
42886
- {
42887
- name: "WmFooter",
42888
- from: "@wavemaker-ai/react-runtime/components/layout/footer"
42889
- }
42890
- ];
42891
- var footer_transformer_default = {
42892
- pre: (element, context) => {
42893
- const isPreview = context.get("preview") === true;
42894
- if (isPreview) {
42895
- let partial = partial_content_transformer_default.pre(element, context) || "";
42896
- if (partial) {
42897
- element.removeAttribute("name");
42898
- partial = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
42899
- }
42900
- return `<WmFooter ${transformAttrs(element, context)} ${partial}>`;
42901
- }
42902
- const content = element.getAttribute("content") || "footer";
42903
- const name = element.getAttribute("name") || "footer";
42904
- return `<WmFooter ${transformAttrs(element, context)}>
42905
- <${content.charAt(0).toUpperCase() + content.slice(1)} isLayout={true} partialName="${name}" />
42906
- `;
42907
- },
42908
- post: (element, context) => "</WmFooter>",
42909
- imports: (element, context) => {
42910
- const isPreview = context.get("preview") === true;
42911
- if (isPreview) {
42912
- return imports11;
42913
- }
42914
- const content = element.getAttribute("content") || "footer";
42915
- return [
42916
- ...imports11,
42917
- {
42918
- name: content.charAt(0).toUpperCase() + content.slice(1),
42919
- from: `@/app/components/${content}/${content}`
42920
- }
42921
- ];
42922
- }
42923
- };
43051
+ var footer_transformer_default = createLayoutRegionTransformer({
43052
+ component: ["WmFooter"],
43053
+ importPath: ["@wavemaker-ai/react-runtime/components/layout/footer"],
43054
+ defaultContent: "footer",
43055
+ defaultName: "footer"
43056
+ });
42924
43057
 
42925
43058
  // src/transpile/components/layout/topnav.transformer.ts
42926
- var imports12 = [
42927
- {
42928
- name: "WmTopNav",
42929
- from: "@wavemaker-ai/react-runtime/components/layout/topnav"
42930
- }
42931
- ];
42932
- var topnav_transformer_default = {
42933
- pre: (element, context) => {
42934
- const isPreview = context.get("preview") === true;
42935
- if (isPreview) {
42936
- let partial = partial_content_transformer_default.pre(element, context) || "";
42937
- if (partial) {
42938
- element.removeAttribute("name");
42939
- partial = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
42940
- }
42941
- return `<WmTopNav ${transformAttrs(element, context)} ${partial}>`;
42942
- }
42943
- const content = element.getAttribute("content") || "topnav";
42944
- const name = element.getAttribute("name") || "top_nav1";
42945
- return `<WmTopNav ${transformAttrs(element, context)}>
42946
- <${content.charAt(0).toUpperCase() + content.slice(1)} isLayout={true} partialName="${name}" />
42947
- `;
42948
- },
42949
- post: (element, context) => "</WmTopNav>",
42950
- imports: (element, context) => {
42951
- const isPreview = context.get("preview") === true;
42952
- if (isPreview) {
42953
- return imports12;
42954
- }
42955
- const content = element.getAttribute("content") || "topnav";
42956
- return [
42957
- ...imports12,
42958
- {
42959
- name: content.charAt(0).toUpperCase() + content.slice(1),
42960
- from: `@/app/components/${content}/${content}`
42961
- }
42962
- ];
42963
- }
42964
- };
43059
+ var topnav_transformer_default = createLayoutRegionTransformer({
43060
+ component: ["WmTopNav"],
43061
+ importPath: ["@wavemaker-ai/react-runtime/components/layout/topnav"],
43062
+ defaultContent: "topnav",
43063
+ defaultName: "top_nav1"
43064
+ });
42965
43065
 
42966
43066
  // src/transpile/components/layout/leftnav.transformer.ts
42967
- var imports13 = [
42968
- {
42969
- name: "WmLeftPanel",
42970
- from: "@wavemaker-ai/react-runtime/components/layout/leftnav"
42971
- }
42972
- ];
42973
- var leftnav_transformer_default = {
42974
- pre: (element, context) => {
42975
- const isPreview = context.get("preview") === true;
42976
- if (isPreview) {
42977
- let partial = partial_content_transformer_default.pre(element, context) || "";
42978
- if (partial) {
42979
- element.removeAttribute("name");
42980
- partial = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
42981
- }
42982
- return `<WmLeftPanel ${transformAttrs(element, context)} ${partial}>`;
42983
- }
42984
- const content = element.getAttribute("content") || "leftnav";
42985
- const name = element.getAttribute("name") || "leftpanel";
42986
- return `<WmLeftPanel ${transformAttrs(element, context)}>
42987
- <${content.charAt(0).toUpperCase() + content.slice(1)} isLayout={true} partialName="${name}" />
42988
- `;
42989
- },
42990
- post: (element, context) => "</WmLeftPanel>",
42991
- imports: (element, context) => {
42992
- const isPreview = context.get("preview") === true;
42993
- if (isPreview) {
42994
- return imports13;
42995
- }
42996
- const content = element.getAttribute("content") || "leftnav";
42997
- return [
42998
- ...imports13,
42999
- {
43000
- name: content.charAt(0).toUpperCase() + content.slice(1),
43001
- from: `@/app/components/${content}/${content}`
43002
- }
43003
- ];
43004
- }
43005
- };
43067
+ var leftnav_transformer_default = createLayoutRegionTransformer({
43068
+ component: ["WmLeftPanel"],
43069
+ importPath: ["@wavemaker-ai/react-runtime/components/layout/leftnav"],
43070
+ defaultContent: "leftnav",
43071
+ defaultName: "leftpanel"
43072
+ });
43006
43073
 
43007
43074
  // src/transpile/components/nav/navbar.transformer.ts
43008
- var imports14 = [
43075
+ var imports9 = [
43009
43076
  {
43010
43077
  name: "WmNavbar",
43011
43078
  from: "@wavemaker-ai/react-runtime/components/navbar"
@@ -43099,11 +43166,11 @@ var navbar_transformer_default = {
43099
43166
  ${transformAttrs(element, context)}>`;
43100
43167
  },
43101
43168
  post: (element, context) => "</WmNavbar>",
43102
- imports: (element, context) => imports14
43169
+ imports: (element, context) => imports9
43103
43170
  };
43104
43171
 
43105
43172
  // src/transpile/components/nav/nav-item.transformer.ts
43106
- var imports15 = [
43173
+ var imports10 = [
43107
43174
  {
43108
43175
  name: "WmNavItem",
43109
43176
  from: "@wavemaker-ai/react-runtime/components/navbar/nav-item"
@@ -43120,21 +43187,21 @@ var nav_item_transformer_default = {
43120
43187
  ${transformAttrs(element, context)}>`;
43121
43188
  },
43122
43189
  post: (element, context) => "</WmNavItem>",
43123
- imports: (element, context) => imports15
43190
+ imports: (element, context) => imports10
43124
43191
  };
43125
43192
 
43126
43193
  // src/transpile/components/basic/anchor.transformer.ts
43127
- var imports16 = [
43194
+ var imports11 = [
43128
43195
  { name: "WmAnchor", from: "@wavemaker-ai/react-runtime/components/basic/anchor" }
43129
43196
  ];
43130
43197
  var anchor_transformer_default = {
43131
43198
  pre: (element, context) => `<WmAnchor listener={fragment} ${transformAttrs(element, context)} >`,
43132
43199
  post: (element, context) => "</WmAnchor>",
43133
- imports: (element, context) => imports16
43200
+ imports: (element, context) => imports11
43134
43201
  };
43135
43202
 
43136
43203
  // src/transpile/components/input/text.transformer.ts
43137
- var imports17 = [
43204
+ var imports12 = [
43138
43205
  {
43139
43206
  name: "WmText",
43140
43207
  from: "@wavemaker-ai/react-runtime/components/input/text"
@@ -43147,67 +43214,88 @@ var text_transformer_default = {
43147
43214
  return `<WmText ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)} ${onChange ? `onChange={${onChange}}` : ""}>`;
43148
43215
  },
43149
43216
  post: (element, context) => "</WmText>",
43150
- imports: (element, context) => imports17
43217
+ imports: (element, context) => imports12
43151
43218
  };
43152
43219
 
43220
+ // src/transpile/components/page/build-partial-markup.ts
43221
+ var import_html_entities = __toESM(require_lib9());
43222
+ var ignoredAttributes = ["name", "show", "content", "class", "styles"];
43223
+ function buildPartialMarkup(element, context, componentName) {
43224
+ const content = element.attributes["content"];
43225
+ const name = element.attributes["name"];
43226
+ if (!content) {
43227
+ return "";
43228
+ }
43229
+ const params = {};
43230
+ if (!element.hasAttribute("is-table-row")) {
43231
+ Object.keys(element.attrs).forEach((k) => {
43232
+ if (!ignoredAttributes.includes(k)) {
43233
+ params[k] = element.attrs[k];
43234
+ }
43235
+ });
43236
+ }
43237
+ const watch = [];
43238
+ element.childNodes.filter((node) => isHTMLElement(node) && node.tagName === "WM-PARAM").forEach((node) => {
43239
+ const e = node;
43240
+ const name2 = e.getAttribute("name") || "";
43241
+ let value = e.getAttribute("value") || "";
43242
+ if (value.includes("currentItem")) {
43243
+ const match = value.match(/currentItem\..+/);
43244
+ if (match) {
43245
+ value = `bind:${match[0]}`;
43246
+ }
43247
+ }
43248
+ params[name2] = value;
43249
+ watch.push(name2);
43250
+ });
43251
+ const syntheticTag = componentName.replace(/([A-Z])/g, "-$1").toLowerCase().replace(/^-/, "");
43252
+ let paramStr = Object.keys(params).filter((k) => k !== "on-load").map((k) => `${k}="${(0, import_html_entities.encode)(params[k])}"`).join(" ");
43253
+ paramStr = transformAttrs(
43254
+ parse5(`<${syntheticTag} ${paramStr}/>`).firstChild,
43255
+ context,
43256
+ inferTypeAndParseProperty
43257
+ );
43258
+ paramStr += ` content={props.content}`;
43259
+ if (context.isPartOfPrefab) {
43260
+ paramStr += " prefab={fragment.prefab}";
43261
+ paramStr += "prefabName={fragment.prefabName}";
43262
+ paramStr += "Prefab={stateProxy}";
43263
+ }
43264
+ return `<${componentName} ${watch.length > 0 ? `params={${JSON.stringify(watch)}}` : ""} onLoad={onLoad} ${paramStr} partialName={'${name}'} listener={props.listener} />`;
43265
+ }
43266
+
43153
43267
  // src/transpile/components/page/partial-container.transformer.ts
43154
- var import_html_entities2 = __toESM(require_lib9());
43155
- var imports18 = [
43268
+ var imports13 = [
43156
43269
  {
43157
43270
  name: "WmPartialContainer",
43158
43271
  from: "@wavemaker-ai/react-runtime/components/page/partial-container"
43159
43272
  }
43160
43273
  ];
43161
- var ignoredAttributes2 = ["name", "show", "content", "class", "styles"];
43162
43274
  var partial_container_transformer_default = {
43163
- pre: (element, context) => {
43164
- let content = element.attributes["content"];
43165
- const name = element.attributes["name"];
43166
- if (content) {
43167
- const params = {};
43168
- if (!element.hasAttribute("is-table-row")) {
43169
- Object.keys(element.attrs).forEach((k) => {
43170
- if (!ignoredAttributes2.includes(k)) {
43171
- params[k] = element.attrs[k];
43172
- }
43173
- });
43174
- }
43175
- const watch = [];
43176
- element.childNodes.filter((node) => isHTMLElement(node) && node.tagName === "WM-PARAM").forEach((node) => {
43177
- const e = node;
43178
- const name2 = e.getAttribute("name") || "";
43179
- let value = e.getAttribute("value") || "";
43180
- if (value.includes("currentItem")) {
43181
- const match = value.match(/currentItem\..+/);
43182
- if (match) {
43183
- value = `bind:${match[0]}`;
43184
- }
43185
- }
43186
- params[name2] = value;
43187
- watch.push(name2);
43188
- });
43189
- let paramStr = Object.keys(params).filter((k) => k !== "on-load").map((k) => `${k}="${(0, import_html_entities2.encode)(params[k])}"`).join(" ");
43190
- paramStr = transformAttrs(
43191
- parse5(`<wm-partial-container ${paramStr}/>`).firstChild,
43192
- context,
43193
- inferTypeAndParseProperty
43194
- );
43195
- paramStr += ` content={props.content}`;
43196
- if (context.isPartOfPrefab) {
43197
- paramStr += " prefab={fragment.prefab}";
43198
- paramStr += "prefabName={fragment.prefabName}";
43199
- paramStr += "Prefab={stateProxy}";
43200
- }
43201
- return `<WmPartialContainer ${watch.length > 0 ? `params={${JSON.stringify(watch)}}` : ""} onLoad={onLoad} ${paramStr} partialName={'${name}'} listener={props.listener} />`;
43202
- }
43203
- return "";
43204
- },
43275
+ pre: (element, context) => buildPartialMarkup(element, context, "WmPartialContainer"),
43205
43276
  post: (element, context) => "",
43206
- imports: (element, context) => element.hasAttribute("content") ? imports18 : []
43277
+ imports: (element, context) => element.hasAttribute("content") ? imports13 : []
43207
43278
  };
43208
43279
 
43280
+ // src/transpile/components/page/with-partial-container.ts
43281
+ function withPartialContainer(element, context, options) {
43282
+ let partial = partial_container_transformer_default.pre(element, context) || "";
43283
+ const extraImports = partial_container_transformer_default.imports(element, context);
43284
+ if (partial) {
43285
+ if (options.removeName) {
43286
+ element.removeAttribute("name");
43287
+ }
43288
+ const params = options.extraParams ? `props:Record<string, any>, onLoad:()=>void, ${options.extraParams}` : "props:Record<string, any>, onLoad:()=>void";
43289
+ partial = `${options.prop}={(${params}) => (${partial})}`;
43290
+ }
43291
+ return { partialAttr: partial, extraImports };
43292
+ }
43293
+ function getPartialImports(element, context) {
43294
+ return partial_container_transformer_default.imports(element, context);
43295
+ }
43296
+
43209
43297
  // src/transpile/components/container/container.transformer.ts
43210
- var imports19 = [
43298
+ var imports14 = [
43211
43299
  {
43212
43300
  name: "WmContainer",
43213
43301
  from: "@wavemaker-ai/react-runtime/components/container"
@@ -43215,30 +43303,20 @@ var imports19 = [
43215
43303
  ];
43216
43304
  var container_transformer_default = {
43217
43305
  pre: (element, context) => {
43218
- const isPreview = context.get("preview") === true;
43219
- if (isPreview) {
43220
- let partial2 = partial_content_transformer_default.pre(element, context) || "";
43221
- if (partial2) {
43222
- element.removeAttribute("name");
43223
- partial2 = `renderPartial={(props:Record<string, any>, onLoad:()=>void) => (${partial2})}`;
43224
- }
43225
- return `<WmContainer ${transformAttrs(element, context)} ${partial2}>`;
43226
- }
43227
- let partial = partial_container_transformer_default.pre(element, context) || "";
43228
- if (partial) {
43229
- element.removeAttribute("name");
43230
- partial = `renderPartial={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
43231
- }
43232
- return `<WmContainer listener={fragment} ${transformAttrs(element, context)} ${partial}>`;
43306
+ const { partialAttr } = withPartialContainer(element, context, {
43307
+ prop: "renderPartial",
43308
+ removeName: true
43309
+ });
43310
+ return `<WmContainer listener={fragment} ${transformAttrs(element, context)} ${partialAttr}>`;
43233
43311
  },
43234
43312
  post: (element, context) => "</WmContainer>",
43235
43313
  imports: (element, context) => {
43236
- return imports19.concat(partial_container_transformer_default.imports(element, context));
43314
+ return imports14.concat(getPartialImports(element, context));
43237
43315
  }
43238
43316
  };
43239
43317
 
43240
43318
  // src/transpile/components/input/composite.transformer.ts
43241
- var imports20 = [
43319
+ var imports15 = [
43242
43320
  {
43243
43321
  name: "WmComposite",
43244
43322
  from: "@wavemaker-ai/react-runtime/components/input/composite"
@@ -43247,11 +43325,11 @@ var imports20 = [
43247
43325
  var composite_transformer_default = {
43248
43326
  pre: (element, context) => `<WmComposite ${transformAttrs(element, context)}>`,
43249
43327
  post: (element, context) => "</WmComposite>",
43250
- imports: (element, context) => imports20
43328
+ imports: (element, context) => imports15
43251
43329
  };
43252
43330
 
43253
43331
  // src/transpile/components/input/number.transformer.ts
43254
- var imports21 = [
43332
+ var imports16 = [
43255
43333
  {
43256
43334
  name: "WmNumber",
43257
43335
  from: "@wavemaker-ai/react-runtime/components/input/number"
@@ -43264,11 +43342,11 @@ var number_transformer_default = {
43264
43342
  return `<WmNumber ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)} >`;
43265
43343
  },
43266
43344
  post: (element, context) => "</WmNumber>",
43267
- imports: (element, context) => imports21
43345
+ imports: (element, context) => imports16
43268
43346
  };
43269
43347
 
43270
43348
  // src/transpile/components/input/textarea.transformer.ts
43271
- var imports22 = [
43349
+ var imports17 = [
43272
43350
  {
43273
43351
  name: "WmTextarea",
43274
43352
  from: "@wavemaker-ai/react-runtime/components/input/textarea"
@@ -43280,11 +43358,11 @@ var textarea_transformer_default = {
43280
43358
  return `<WmTextarea ${isFormField ? " {...$formField}" : ""} type="textarea" listener={fragment} ${transformAttrs(element, context)} `;
43281
43359
  },
43282
43360
  post: (element, context) => "/>",
43283
- imports: (element, context) => imports22
43361
+ imports: (element, context) => imports17
43284
43362
  };
43285
43363
 
43286
43364
  // src/transpile/components/container/tile.transformer.ts
43287
- var imports23 = [
43365
+ var imports18 = [
43288
43366
  {
43289
43367
  name: "WmTile",
43290
43368
  from: "@wavemaker-ai/react-runtime/components/basic/tile"
@@ -43293,11 +43371,11 @@ var imports23 = [
43293
43371
  var tile_transformer_default = {
43294
43372
  pre: (element, context) => `<WmTile ${transformAttrs(element, context)}>`,
43295
43373
  post: (element, context) => "</WmTile>",
43296
- imports: (element, context) => imports23
43374
+ imports: (element, context) => imports18
43297
43375
  };
43298
43376
 
43299
43377
  // src/transpile/components/basic/picture.transformer.ts
43300
- var imports24 = [
43378
+ var imports19 = [
43301
43379
  {
43302
43380
  name: "WmPicture",
43303
43381
  from: "@wavemaker-ai/react-runtime/components/basic/picture"
@@ -43312,11 +43390,11 @@ var picture_transformer_default = {
43312
43390
  return `<WmPicture listener={fragment} ${transformAttrs(element, context)} ${context.isPartOfPrefab ? " prefabName={fragment.prefabName}" : ""} >`;
43313
43391
  },
43314
43392
  post: (element, context) => "</WmPicture>",
43315
- imports: (element, context) => imports24
43393
+ imports: (element, context) => imports19
43316
43394
  };
43317
43395
 
43318
43396
  // src/transpile/components/basic/icon.transformer.ts
43319
- var imports25 = [
43397
+ var imports20 = [
43320
43398
  {
43321
43399
  name: "WmIcon",
43322
43400
  from: "@wavemaker-ai/react-runtime/components/basic/icon"
@@ -43325,11 +43403,11 @@ var imports25 = [
43325
43403
  var icon_transformer_default = {
43326
43404
  pre: (element, context) => `<WmIcon ${transformAttrs(element, context)} ${context.isPartOfPrefab ? " prefabName={fragment.prefabName}" : ""} >`,
43327
43405
  post: (element, context) => "</WmIcon>",
43328
- imports: (element, context) => imports25
43406
+ imports: (element, context) => imports20
43329
43407
  };
43330
43408
 
43331
43409
  // src/transpile/components/basic/video.transformer.ts
43332
- var imports26 = [
43410
+ var imports21 = [
43333
43411
  {
43334
43412
  name: "WmVideo",
43335
43413
  from: "@wavemaker-ai/react-runtime/components/basic/video"
@@ -43338,11 +43416,11 @@ var imports26 = [
43338
43416
  var video_transformer_default = {
43339
43417
  pre: (element, context) => `<WmVideo ${transformAttrs(element, context)} ${context.isPartOfPrefab ? " prefabName={fragment.prefabName}" : ""}>`,
43340
43418
  post: (element, context) => "</WmVideo>",
43341
- imports: (element, context) => imports26
43419
+ imports: (element, context) => imports21
43342
43420
  };
43343
43421
 
43344
43422
  // src/transpile/components/basic/audio.transformer.ts
43345
- var imports27 = [
43423
+ var imports22 = [
43346
43424
  {
43347
43425
  name: "WmAudio",
43348
43426
  from: "@wavemaker-ai/react-runtime/components/basic/audio"
@@ -43351,11 +43429,11 @@ var imports27 = [
43351
43429
  var audio_transformer_default = {
43352
43430
  pre: (element, context) => `<WmAudio ${transformAttrs(element, context)} ${context.isPartOfPrefab ? " prefabName={fragment.prefabName}" : ""}>`,
43353
43431
  post: (element, context) => "</WmAudio>",
43354
- imports: (element, context) => imports27
43432
+ imports: (element, context) => imports22
43355
43433
  };
43356
43434
 
43357
43435
  // src/transpile/components/form/button.transformer.ts
43358
- var imports28 = [
43436
+ var imports23 = [
43359
43437
  {
43360
43438
  name: "WmButton",
43361
43439
  from: "@wavemaker-ai/react-runtime/components/form/button"
@@ -43372,11 +43450,11 @@ var button_transformer_default = {
43372
43450
  return `<WmButton listener={fragment} ${stopPropagation} ${transformAttrs(element, context)} ${context.isPartOfPrefab ? " prefabName={fragment.prefabName}" : ""} >`;
43373
43451
  },
43374
43452
  post: (element, context) => "</WmButton>",
43375
- imports: (element, context) => imports28
43453
+ imports: (element, context) => imports23
43376
43454
  };
43377
43455
 
43378
43456
  // src/transpile/components/form/button-group.transformer.ts
43379
- var imports29 = [
43457
+ var imports24 = [
43380
43458
  {
43381
43459
  name: "WmButtonGroup",
43382
43460
  from: "@wavemaker-ai/react-runtime/components/form/button-group"
@@ -43385,11 +43463,11 @@ var imports29 = [
43385
43463
  var button_group_transformer_default = {
43386
43464
  pre: (element, context) => `<WmButtonGroup ${transformAttrs(element, context)}>`,
43387
43465
  post: (element, context) => "</WmButtonGroup>",
43388
- imports: (element, context) => imports29
43466
+ imports: (element, context) => imports24
43389
43467
  };
43390
43468
 
43391
43469
  // src/transpile/components/nav/nav.transformer.ts
43392
- var imports30 = [
43470
+ var imports25 = [
43393
43471
  {
43394
43472
  name: "WmNav",
43395
43473
  from: "@wavemaker-ai/react-runtime/components/navbar/nav"
@@ -43443,52 +43521,19 @@ var nav_transformer_default = {
43443
43521
  ${itemlabelExpression ? `itemlabel=${itemlabelExpression}` : ""}>`;
43444
43522
  },
43445
43523
  post: (element, context) => "</WmNav>",
43446
- imports: (element, context) => imports30
43524
+ imports: (element, context) => imports25
43447
43525
  };
43448
43526
 
43449
43527
  // src/transpile/components/layout/rightnav.transformer.ts
43450
- var imports31 = [
43451
- {
43452
- name: "WmRightPanel",
43453
- from: "@wavemaker-ai/react-runtime/components/layout/rightnav"
43454
- }
43455
- ];
43456
- var rightnav_transformer_default = {
43457
- pre: (element, context) => {
43458
- const isPreview = context.get("preview") === true;
43459
- if (isPreview) {
43460
- let partial = partial_content_transformer_default.pre(element, context) || "";
43461
- if (partial) {
43462
- element.removeAttribute("name");
43463
- partial = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
43464
- }
43465
- return `<WmRightPanel ${transformAttrs(element, context)} ${partial}>`;
43466
- }
43467
- const content = element.getAttribute("content") || "rightnav";
43468
- const name = element.getAttribute("name") || "rightnav";
43469
- return `<WmRightPanel ${transformAttrs(element, context)}>
43470
- <${content.charAt(0).toUpperCase() + content.slice(1)} isLayout={true} partialName="${name}" />
43471
- `;
43472
- },
43473
- post: (element, context) => "</WmRightPanel>",
43474
- imports: (element, context) => {
43475
- const isPreview = context.get("preview") === true;
43476
- if (isPreview) {
43477
- return imports31;
43478
- }
43479
- const content = element.getAttribute("content") || "rightnav";
43480
- return [
43481
- ...imports31,
43482
- {
43483
- name: content.charAt(0).toUpperCase() + content.slice(1),
43484
- from: `@/app/components/${content}/${content}`
43485
- }
43486
- ];
43487
- }
43488
- };
43528
+ var rightnav_transformer_default = createLayoutRegionTransformer({
43529
+ component: ["WmRightPanel"],
43530
+ importPath: ["@wavemaker-ai/react-runtime/components/layout/rightnav"],
43531
+ defaultContent: "rightnav",
43532
+ defaultName: "rightnav"
43533
+ });
43489
43534
 
43490
43535
  // src/transpile/components/basic/iframe.transformer.ts
43491
- var imports32 = [
43536
+ var imports26 = [
43492
43537
  {
43493
43538
  name: "WmIframe",
43494
43539
  from: "@wavemaker-ai/react-runtime/components/basic/iframe"
@@ -43497,37 +43542,38 @@ var imports32 = [
43497
43542
  var iframe_transformer_default = {
43498
43543
  pre: (element, context) => `<WmIframe ${transformAttrs(element, context)}>`,
43499
43544
  post: (element, context) => "</WmIframe>",
43500
- imports: (element, context) => imports32
43545
+ imports: (element, context) => imports26
43501
43546
  };
43502
43547
 
43548
+ // src/transpile/components/dialogs/dialog-factory.ts
43549
+ function createSelfClosingDialogTransformer(config) {
43550
+ const imports102 = [
43551
+ {
43552
+ name: config.component,
43553
+ from: config.importPath
43554
+ }
43555
+ ];
43556
+ return {
43557
+ pre: (element, context) => `<${config.component} listener={fragment} ${transformAttrs(element, context)}`,
43558
+ post: (element, context) => "/>",
43559
+ imports: (element, context) => imports102
43560
+ };
43561
+ }
43562
+
43503
43563
  // src/transpile/components/dialogs/confirm-dialog.transformer.ts
43504
- var imports33 = [
43505
- {
43506
- name: "WmConfirmDialog",
43507
- from: "@wavemaker-ai/react-runtime/components/dialogs/confirm-dialog"
43508
- }
43509
- ];
43510
- var confirm_dialog_transformer_default = {
43511
- pre: (element, context) => `<WmConfirmDialog listener={fragment} ${transformAttrs(element, context)}`,
43512
- post: (element, context) => "/>",
43513
- imports: (element, context) => imports33
43514
- };
43564
+ var confirm_dialog_transformer_default = createSelfClosingDialogTransformer({
43565
+ component: "WmConfirmDialog",
43566
+ importPath: "@wavemaker-ai/react-runtime/components/dialogs/confirm-dialog"
43567
+ });
43515
43568
 
43516
43569
  // src/transpile/components/dialogs/alert-dialog.transformer.ts
43517
- var imports34 = [
43518
- {
43519
- name: "WmAlertDialog",
43520
- from: "@wavemaker-ai/react-runtime/components/dialogs/alert-dialog"
43521
- }
43522
- ];
43523
- var alert_dialog_transformer_default = {
43524
- pre: (element, context) => `<WmAlertDialog listener={fragment} ${transformAttrs(element, context)}`,
43525
- post: (element, context) => "/>",
43526
- imports: (element, context) => imports34
43527
- };
43570
+ var alert_dialog_transformer_default = createSelfClosingDialogTransformer({
43571
+ component: "WmAlertDialog",
43572
+ importPath: "@wavemaker-ai/react-runtime/components/dialogs/alert-dialog"
43573
+ });
43528
43574
 
43529
43575
  // src/transpile/components/data/list/list-transformer.ts
43530
- var imports35 = [
43576
+ var imports27 = [
43531
43577
  { name: "WmList", from: "@wavemaker-ai/react-runtime/components/data/list" }
43532
43578
  ];
43533
43579
  var addTemplateClass = (element) => {
@@ -43611,6 +43657,10 @@ function serializeStyleObjectToParts(styleObj) {
43611
43657
  var buildItemAttrsFromListTemplate = (template, context) => {
43612
43658
  var _a, _b, _c;
43613
43659
  if (!template || ((_a = template.tagName) == null ? void 0 : _a.toLowerCase()) !== "wm-listtemplate") return "";
43660
+ if (template.getAttribute("class")) {
43661
+ template.setAttribute("className", template.getAttribute("class"));
43662
+ template.removeAttribute("class");
43663
+ }
43614
43664
  const autolayout = (_b = context.data) == null ? void 0 : _b.autolayoutCodegen;
43615
43665
  const autoLayoutResult = (_c = autolayout == null ? void 0 : autolayout.processListTemplate(template)) != null ? _c : null;
43616
43666
  const styleObj = style_transformer_default(template, (styleProp) => {
@@ -43758,8 +43808,10 @@ var list_transformer_default = {
43758
43808
  }
43759
43809
  const datasetAttr = element.getAttribute("dataset");
43760
43810
  const datasourceAttr = element.getAttribute("datasource");
43761
- if (datasetAttr && datasetAttr.startsWith("bind:fragment.Variables.") && datasetAttr.endsWith(".dataSet")) {
43762
- const match = datasetAttr.match(/^bind:fragment\.Variables\.([^.]+)\.dataSet$/);
43811
+ if (datasetAttr && datasetAttr.startsWith("bind:fragment.Variables.") && datasetAttr.includes(".dataSet")) {
43812
+ const match = datasetAttr.match(
43813
+ /^bind:fragment\.Variables\.([^.]+)\.dataSet(?=[^A-Za-z0-9_]|$)/
43814
+ );
43763
43815
  if (match) {
43764
43816
  const variableName = match[1];
43765
43817
  if (!datasourceAttr) {
@@ -43816,7 +43868,7 @@ var list_transformer_default = {
43816
43868
  context.data.listCount--;
43817
43869
  return "</>)}}></WmList>";
43818
43870
  },
43819
- imports: (element, context) => imports35,
43871
+ imports: (element, context) => imports27,
43820
43872
  createComponent: (element, context) => {
43821
43873
  if (!context.data.listCount) {
43822
43874
  context.props = context.get("old_props") || [];
@@ -43828,7 +43880,7 @@ var list_transformer_default = {
43828
43880
  };
43829
43881
 
43830
43882
  // src/transpile/components/data/list/list-template-transformer.ts
43831
- var imports36 = [];
43883
+ var imports28 = [];
43832
43884
  var list_template_transformer_default = {
43833
43885
  pre: (element, context) => {
43834
43886
  const name = element.getAttribute("name");
@@ -43842,16 +43894,16 @@ var list_template_transformer_default = {
43842
43894
  element.removeAttribute("height");
43843
43895
  return "</React.Fragment>";
43844
43896
  },
43845
- imports: (element, context) => imports36
43897
+ imports: (element, context) => imports28
43846
43898
  };
43847
43899
 
43848
43900
  // src/transpile/components/data/list/list-content.transformer.ts
43849
43901
  var import_lodash6 = __toESM(require_lodash());
43850
- var imports37 = [];
43902
+ var imports29 = [];
43851
43903
  var list_content_transformer_default = {
43852
43904
  pre: (element, context) => ``,
43853
43905
  post: (element, context) => "",
43854
- imports: (element, context) => imports37,
43906
+ imports: (element, context) => imports29,
43855
43907
  createComponent: (e, context, component = "list") => {
43856
43908
  const result = context.result;
43857
43909
  const widgetName = (0, import_lodash6.capitalize)(e.attrs["name"]);
@@ -43917,17 +43969,19 @@ var DATASET_WIDGETS = [
43917
43969
  "rating" /* RATING */
43918
43970
  ];
43919
43971
 
43972
+ // src/transpile/components/data/form/field-widget-shared.ts
43973
+ var getAttribute = (element, attrName) => {
43974
+ const value = element.getAttribute(attrName);
43975
+ return value == null ? void 0 : value.replace(/"/g, "&quot;");
43976
+ };
43977
+
43920
43978
  // src/transpile/components/data/form/form-field.transformer.ts
43921
- var imports38 = [
43979
+ var imports30 = [
43922
43980
  {
43923
43981
  name: "WmFormField",
43924
43982
  from: "@wavemaker-ai/react-runtime/components/data/form/form-field"
43925
43983
  }
43926
43984
  ];
43927
- var getAttribute = (element, attrName) => {
43928
- const value = element.getAttribute(attrName);
43929
- return value == null ? void 0 : value.replace(/"/g, "&quot;");
43930
- };
43931
43985
  var extractField = (element, context, formElement) => {
43932
43986
  const widgetType = getAttribute(element, "widget") || "text";
43933
43987
  const widgetName = getAttribute(element, "key") || getAttribute(element, "name") || "text_formWidget";
@@ -43994,6 +44048,7 @@ var getDisplayExpression = (displayExpr) => {
43994
44048
  return `displayexpression="${displayExpr}"`;
43995
44049
  };
43996
44050
  var getWidgetMarkup = (widgetType, widgetName, commonFields, element) => {
44051
+ var _a, _b, _c, _d, _e, _f, _g, _h;
43997
44052
  let tmpl = "";
43998
44053
  const getDisplayExpr = element.getAttribute("displayexpression") || element.getAttribute("displaylabel");
43999
44054
  const displayExp = getDisplayExpr ? getDisplayExpression(getDisplayExpr) : "";
@@ -44006,16 +44061,16 @@ var getWidgetMarkup = (widgetType, widgetName, commonFields, element) => {
44006
44061
  currentNode = currentNode.parentNode;
44007
44062
  }
44008
44063
  const isFloatingForm = (currentNode == null ? void 0 : currentNode.getAttribute("captionposition")) === "floating";
44009
- const floatinglabel = formFieldTags.includes(widgetType) && isFloatingForm ? `floatinglabel='${element.getAttribute("displayname")}'` : "";
44064
+ const floatinglabel = formFieldTags.includes(widgetType) && isFloatingForm ? `floatinglabel="${(_a = element.getAttribute("displayname")) == null ? void 0 : _a.replace(/"/g, "&quot;")}"` : "";
44010
44065
  const dateTimeDialogTags = ["date", "time", "datetime"];
44011
44066
  const isDateTimeTag = dateTimeDialogTags.includes(widgetType);
44012
- const dateheadertitle = isDateTimeTag && element.getAttribute("dateheadertitle") ? `dateheadertitle='${element.getAttribute("dateheadertitle")}'` : "";
44013
- const dateconfirmationtitle = isDateTimeTag && element.getAttribute("dateconfirmationtitle") ? `dateconfirmationtitle='${element.getAttribute("dateconfirmationtitle")}'` : "";
44014
- const datecanceltitle = isDateTimeTag && element.getAttribute("datecanceltitle") ? `datecanceltitle='${element.getAttribute("datecanceltitle")}'` : "";
44015
- const timeheadertitle = isDateTimeTag && element.getAttribute("timeheadertitle") ? `timeheadertitle='${element.getAttribute("timeheadertitle")}'` : "";
44016
- const timeconfirmationtitle = isDateTimeTag && element.getAttribute("timeconfirmationtitle") ? `timeconfirmationtitle='${element.getAttribute("timeconfirmationtitle")}'` : "";
44017
- const timecanceltitle = isDateTimeTag && element.getAttribute("timecanceltitle") ? `timecanceltitle='${element.getAttribute("timecanceltitle")}'` : "";
44018
- const outputformat = element.getAttribute("outputformat") ? `outputformat='${element.getAttribute("outputformat")}'` : ``;
44067
+ const dateheadertitle = isDateTimeTag && element.getAttribute("dateheadertitle") ? `dateheadertitle="${(_b = element.getAttribute("dateheadertitle")) == null ? void 0 : _b.replace(/"/g, "&quot;")}"` : "";
44068
+ const dateconfirmationtitle = isDateTimeTag && element.getAttribute("dateconfirmationtitle") ? `dateconfirmationtitle="${(_c = element.getAttribute("dateconfirmationtitle")) == null ? void 0 : _c.replace(/"/g, "&quot;")}"` : "";
44069
+ const datecanceltitle = isDateTimeTag && element.getAttribute("datecanceltitle") ? `datecanceltitle="${(_d = element.getAttribute("datecanceltitle")) == null ? void 0 : _d.replace(/"/g, "&quot;")}"` : "";
44070
+ const timeheadertitle = isDateTimeTag && element.getAttribute("timeheadertitle") ? `timeheadertitle="${(_e = element.getAttribute("timeheadertitle")) == null ? void 0 : _e.replace(/"/g, "&quot;")}"` : "";
44071
+ const timeconfirmationtitle = isDateTimeTag && element.getAttribute("timeconfirmationtitle") ? `timeconfirmationtitle="${(_f = element.getAttribute("timeconfirmationtitle")) == null ? void 0 : _f.replace(/"/g, "&quot;")}"` : "";
44072
+ const timecanceltitle = isDateTimeTag && element.getAttribute("timecanceltitle") ? `timecanceltitle="${(_g = element.getAttribute("timecanceltitle")) == null ? void 0 : _g.replace(/"/g, "&quot;")}"` : "";
44073
+ const outputformat = element.getAttribute("outputformat") ? `outputformat="${(_h = element.getAttribute("outputformat")) == null ? void 0 : _h.replace(/"/g, "&quot;")}"` : ``;
44019
44074
  switch (widgetType) {
44020
44075
  case "text":
44021
44076
  case "password":
@@ -44304,13 +44359,13 @@ var form_field_transformer_default = {
44304
44359
  return `<WmFormField ${formScope || ""} field="true" ${fieldcolumn ? `fieldcol="${fieldcolumn}"` : ""} role="form-field" ${extractDatasetInfo(element)} ${transformAttrs(element, context)} renderFormFields={($formField) => (<>`;
44305
44360
  },
44306
44361
  post: (element, context) => " </>)}></WmFormField>",
44307
- imports: (element, context) => imports38,
44362
+ imports: (element, context) => imports30,
44308
44363
  createComponent: (element, context) => createComponent2(element, context)
44309
44364
  };
44310
44365
 
44311
44366
  // src/transpile/components/data/form/form.transformer.ts
44312
44367
  var import_lodash7 = __toESM(require_lodash());
44313
- var imports39 = [
44368
+ var imports31 = [
44314
44369
  { name: "WmForm", from: "@wavemaker-ai/react-runtime/components/data/form" }
44315
44370
  ];
44316
44371
  var getOnChangeExpr = (element) => {
@@ -44443,11 +44498,11 @@ var form_transformer_default = {
44443
44498
  >`;
44444
44499
  },
44445
44500
  post: (element, context) => `</WmForm>`,
44446
- imports: (element, context) => imports39
44501
+ imports: (element, context) => imports31
44447
44502
  };
44448
44503
 
44449
44504
  // src/transpile/components/data/form/form-footer.transformer.ts
44450
- var imports40 = [
44505
+ var imports32 = [
44451
44506
  {
44452
44507
  name: "WmFormFooter",
44453
44508
  from: "@wavemaker-ai/react-runtime/components/data/form/form-footer"
@@ -44456,11 +44511,11 @@ var imports40 = [
44456
44511
  var form_footer_transformer_default = {
44457
44512
  pre: (element, context) => `<WmFormFooter ${transformAttrs(element, context)}>`,
44458
44513
  post: (element, context) => "</WmFormFooter>",
44459
- imports: (element, context) => imports40
44514
+ imports: (element, context) => imports32
44460
44515
  };
44461
44516
 
44462
44517
  // src/transpile/components/data/form/form-body.transformer.ts
44463
- var imports41 = [
44518
+ var imports33 = [
44464
44519
  {
44465
44520
  name: "WmFormBody",
44466
44521
  from: "@wavemaker-ai/react-runtime/components/data/form/form-body"
@@ -44469,11 +44524,11 @@ var imports41 = [
44469
44524
  var form_body_transformer_default = {
44470
44525
  pre: (element, context) => `<WmFormBody ${transformAttrs(element, context)}>`,
44471
44526
  post: (element, context) => "</WmFormBody>",
44472
- imports: (element, context) => imports41
44527
+ imports: (element, context) => imports33
44473
44528
  };
44474
44529
 
44475
44530
  // src/transpile/components/data/form/form-action.transformer.ts
44476
- var imports42 = [
44531
+ var imports34 = [
44477
44532
  {
44478
44533
  name: "WmFormAction",
44479
44534
  from: "@wavemaker-ai/react-runtime/components/data/form/form-action"
@@ -44570,24 +44625,17 @@ var form_action_transformer_default = {
44570
44625
  ${action && actionType ? `onClick={${getFormActionExpr(action, isAsyncAction)}} widgettype="${widgetType}"` : ""} `;
44571
44626
  },
44572
44627
  post: (element, context) => "/>",
44573
- imports: (element, context) => imports42
44628
+ imports: (element, context) => imports34
44574
44629
  };
44575
44630
 
44576
44631
  // src/transpile/components/dialogs/iframe-dialog.transformer.ts
44577
- var imports43 = [
44578
- {
44579
- name: "WmIFrameDialog",
44580
- from: "@wavemaker-ai/react-runtime/components/dialogs/iframe-dialog"
44581
- }
44582
- ];
44583
- var iframe_dialog_transformer_default = {
44584
- pre: (element, context) => `<WmIFrameDialog listener={fragment} ${transformAttrs(element, context)}`,
44585
- post: (element, context) => "/>",
44586
- imports: (element, context) => imports43
44587
- };
44632
+ var iframe_dialog_transformer_default = createSelfClosingDialogTransformer({
44633
+ component: "WmIFrameDialog",
44634
+ importPath: "@wavemaker-ai/react-runtime/components/dialogs/iframe-dialog"
44635
+ });
44588
44636
 
44589
44637
  // src/transpile/components/dialogs/page-dialog.transformer.ts
44590
- var imports44 = [
44638
+ var imports35 = [
44591
44639
  {
44592
44640
  name: "WmPageDialog",
44593
44641
  from: "@wavemaker-ai/react-runtime/components/dialogs/page-dialog"
@@ -44596,11 +44644,11 @@ var imports44 = [
44596
44644
  var page_dialog_transformer_default = {
44597
44645
  pre: (element, context) => `<WmPageDialog listener={fragment} ${transformAttrs(element, context)}`,
44598
44646
  post: (element, context) => "/>",
44599
- imports: (element, context) => imports44
44647
+ imports: (element, context) => imports35
44600
44648
  };
44601
44649
 
44602
44650
  // src/transpile/components/dialogs/dialog.transformer.ts
44603
- var imports45 = [
44651
+ var imports36 = [
44604
44652
  { name: "WmDialog", from: "@wavemaker-ai/react-runtime/components/dialogs/dialog" }
44605
44653
  ];
44606
44654
  var dialog_transformer_default = {
@@ -44626,12 +44674,12 @@ var dialog_transformer_default = {
44626
44674
  return `<WmDialog listener={fragment} ${transformAttrs(element, context)}>`;
44627
44675
  },
44628
44676
  post: (element, context) => "</WmDialog>",
44629
- imports: (element, context) => imports45
44677
+ imports: (element, context) => imports36
44630
44678
  };
44631
44679
 
44632
44680
  // src/transpile/components/dialogs/dialog-actions.transformer.ts
44633
44681
  var import_isString = __toESM(require_isString());
44634
- var imports46 = [
44682
+ var imports37 = [
44635
44683
  {
44636
44684
  name: "WmDialogActions",
44637
44685
  from: "@wavemaker-ai/react-runtime/components/dialogs/dialog-actions"
@@ -44677,22 +44725,22 @@ var dialog_actions_transformer_default = {
44677
44725
  if (!(parent == null ? void 0 : parent.rawTagName.includes("dialog"))) {
44678
44726
  return [];
44679
44727
  }
44680
- return imports46;
44728
+ return imports37;
44681
44729
  }
44682
44730
  };
44683
44731
 
44684
44732
  // src/transpile/components/dialogs/dialog-body.transformer.ts
44685
- var imports47 = [
44733
+ var imports38 = [
44686
44734
  { name: "WmDialogBody", from: "@wavemaker-ai/react-runtime/components/dialogs/dialog-body" }
44687
44735
  ];
44688
44736
  var dialog_body_transformer_default = {
44689
44737
  pre: (element, context) => `<WmDialogBody ${transformAttrs(element, context)}>`,
44690
44738
  post: (element, context) => "</WmDialogBody>",
44691
- imports: (element, context) => imports47
44739
+ imports: (element, context) => imports38
44692
44740
  };
44693
44741
 
44694
44742
  // src/transpile/components/container/tabs.transformer.ts
44695
- var imports48 = [
44743
+ var imports39 = [
44696
44744
  { name: "WmTabs", from: "@wavemaker-ai/react-runtime/components/container/tabs" }
44697
44745
  ];
44698
44746
  var transformAttr2 = (name, value) => {
@@ -44760,7 +44808,7 @@ var tabs_transformer_default = {
44760
44808
  }
44761
44809
  return "</WmTabs>";
44762
44810
  },
44763
- imports: (element, context) => imports48,
44811
+ imports: (element, context) => imports39,
44764
44812
  createComponent: (element, context) => {
44765
44813
  if (!context.data.listCount) {
44766
44814
  context.props = context.get("old_props") || [];
@@ -44772,7 +44820,7 @@ var tabs_transformer_default = {
44772
44820
  };
44773
44821
 
44774
44822
  // src/transpile/components/container/tabpane.transformer.ts
44775
- var imports49 = [
44823
+ var imports40 = [
44776
44824
  { name: "WmTabPane", from: "@wavemaker-ai/react-runtime/components/container/tabs/tab-pane" }
44777
44825
  ];
44778
44826
  function isInsideDynamicTabs(element) {
@@ -44789,39 +44837,27 @@ function isInsideDynamicTabs(element) {
44789
44837
  }
44790
44838
  var tabpane_transformer_default = {
44791
44839
  pre: (element, context) => {
44792
- const isPreview = context.get("preview") === true;
44793
- if (isPreview) {
44794
- let partial2 = partial_content_transformer_default.pre(element, context) || "";
44795
- if (partial2) {
44796
- element.removeAttribute("name");
44797
- partial2 = `renderPartial={(props:Record<string, any>, onLoad:()=>void) => (${partial2})}`;
44798
- }
44799
- return `<WmTabPane listener={fragment} ${transformAttrs(element, context)} ${partial2}>`;
44800
- }
44801
- let partial = partial_container_transformer_default.pre(element, context) || "";
44802
- if (partial) {
44803
- partial = `renderPartial={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
44804
- }
44840
+ const { partialAttr } = withPartialContainer(element, context, { prop: "renderPartial" });
44805
44841
  const isDynamicTabs = isInsideDynamicTabs(element);
44806
44842
  const itemProp = isDynamicTabs ? " item={$item}" : "";
44807
- return `<WmTabPane listener={fragment} ${transformAttrs(element, context)}${itemProp} ${partial}>`;
44843
+ return `<WmTabPane listener={fragment} ${transformAttrs(element, context)}${itemProp} ${partialAttr}>`;
44808
44844
  },
44809
44845
  post: (element, context) => "</WmTabPane>",
44810
- imports: (element, context) => imports49.concat(partial_container_transformer_default.imports(element, context))
44846
+ imports: (element, context) => imports40.concat(getPartialImports(element, context))
44811
44847
  };
44812
44848
 
44813
44849
  // src/transpile/components/container/tabheader.transformer.ts
44814
- var imports50 = [
44850
+ var imports41 = [
44815
44851
  { name: "WmTabheader", from: "@wavemaker-ai/react-runtime/components/container/tabs/tabheader" }
44816
44852
  ];
44817
44853
  var tabheader_transformer_default = {
44818
44854
  pre: (element, context) => `<WmTabheader ${transformAttrs(element, context)}>`,
44819
44855
  post: (element, context) => "</WmTabheader>",
44820
- imports: (element, context) => imports50
44856
+ imports: (element, context) => imports41
44821
44857
  };
44822
44858
 
44823
44859
  // src/transpile/components/prefab/prefab-container.transformer.ts
44824
- var imports51 = [
44860
+ var imports42 = [
44825
44861
  {
44826
44862
  name: "WmPrefabContainer",
44827
44863
  from: "@wavemaker-ai/react-runtime/components/prefab/container"
@@ -44836,7 +44872,7 @@ var prefab_container_transformer_default = {
44836
44872
  return `</WmPrefabContainer >`;
44837
44873
  },
44838
44874
  imports: (element, context) => {
44839
- return imports51;
44875
+ return imports42;
44840
44876
  },
44841
44877
  createComponent: (element, context) => createComponent2(element, context),
44842
44878
  prefabs: (element, context) => {
@@ -44919,17 +44955,17 @@ var prefab_transformer_default = {
44919
44955
  const prefabName = element.getAttribute("prefabname");
44920
44956
  const widgetname = element.getAttribute("widgetname");
44921
44957
  const widgetmodule = element.getAttribute("widgetmodule");
44922
- const imports111 = [];
44958
+ const imports102 = [];
44923
44959
  if (widgetname && !isPreview) {
44924
- imports111.push({ name: "Wm" + capitalize3(widgetname), from: widgetmodule });
44960
+ imports102.push({ name: "Wm" + capitalize3(widgetname), from: widgetmodule });
44925
44961
  } else if (!isPreview) {
44926
- imports111.push({
44962
+ imports102.push({
44927
44963
  name: "Wm" + capitalize3(prefabName) + "Prefab",
44928
44964
  from: `@/app/prefabs/${prefabName}/Main/Main`,
44929
44965
  lazy: profile_default.lazyloadPrefabs
44930
44966
  });
44931
44967
  }
44932
- return imports111;
44968
+ return imports102;
44933
44969
  },
44934
44970
  createComponent: (element, context) => createComponent2(element, context),
44935
44971
  prefabs: (element, context) => {
@@ -44942,7 +44978,7 @@ var prefab_transformer_default = {
44942
44978
  };
44943
44979
 
44944
44980
  // src/transpile/components/navigation/popover.transformer.ts
44945
- var imports52 = [
44981
+ var imports43 = [
44946
44982
  {
44947
44983
  name: "WmPopover",
44948
44984
  from: "@wavemaker-ai/react-runtime/components/navigation/popover"
@@ -44950,30 +44986,18 @@ var imports52 = [
44950
44986
  ];
44951
44987
  var popover_transformer_default = {
44952
44988
  pre: (element, context) => {
44953
- const isPreview = context.get("preview") === true;
44954
- if (isPreview) {
44955
- let partial2 = partial_content_transformer_default.pre(element, context) || "";
44956
- if (partial2) {
44957
- element.removeAttribute("name");
44958
- partial2 = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial2})}`;
44959
- }
44960
- return `<WmPopover listener={fragment} ${transformAttrs(element, context)} ${partial2}>`;
44961
- }
44962
- let partial = null;
44989
+ let partialAttr = "";
44963
44990
  if (element.getAttribute("contentsource") !== "inline") {
44964
- partial = partial_container_transformer_default.pre(element, context) || "";
44965
- if (partial) {
44966
- partial = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
44967
- }
44991
+ ({ partialAttr } = withPartialContainer(element, context, { prop: "render" }));
44968
44992
  }
44969
- return `<WmPopover listener={fragment} ${transformAttrs(element, context)} ${partial !== null ? partial : ""}>`;
44993
+ return `<WmPopover listener={fragment} ${transformAttrs(element, context)} ${partialAttr}>`;
44970
44994
  },
44971
44995
  post: (element, context) => "</WmPopover>",
44972
- imports: (element, context) => imports52.concat(partial_container_transformer_default.imports(element, context))
44996
+ imports: (element, context) => imports43.concat(getPartialImports(element, context))
44973
44997
  };
44974
44998
 
44975
44999
  // src/transpile/components/input/switch.transformer.ts
44976
- var imports53 = [
45000
+ var imports44 = [
44977
45001
  { name: "WmSwitch", from: "@wavemaker-ai/react-runtime/components/input/default/switch" }
44978
45002
  ];
44979
45003
  var switch_transformer_default = {
@@ -44986,11 +45010,11 @@ var switch_transformer_default = {
44986
45010
  return `<WmSwitch ${isFormField ? " {...$formField}" : ""} listener={fragment} ${extractDatasetInfo(element)} ${transformAttrs(element, context)} ${getDisplayExpression2 ? `displayExpression=${getDisplayExpression2}` : ""} >`;
44987
45011
  },
44988
45012
  post: (element) => "</WmSwitch>",
44989
- imports: (element) => imports53
45013
+ imports: (element) => imports44
44990
45014
  };
44991
45015
 
44992
45016
  // src/transpile/components/input/slider.transformer.ts
44993
- var imports54 = [
45017
+ var imports45 = [
44994
45018
  { name: "WmSlider", from: "@wavemaker-ai/react-runtime/components/input/slider" }
44995
45019
  ];
44996
45020
  var slider_transformer_default = {
@@ -45011,11 +45035,11 @@ var slider_transformer_default = {
45011
45035
  ${getToolTipExpression ? `getToolTipExpression=${getToolTipExpression}` : ""}>`;
45012
45036
  },
45013
45037
  post: (element, context) => "</WmSlider>",
45014
- imports: (element, context) => imports54
45038
+ imports: (element, context) => imports45
45015
45039
  };
45016
45040
 
45017
45041
  // src/transpile/components/input/select.transformer.ts
45018
- var imports55 = [
45042
+ var imports46 = [
45019
45043
  { name: "WmSelect", from: "@wavemaker-ai/react-runtime/components/input/select" }
45020
45044
  ];
45021
45045
  var getOnChangeExpr2 = (element) => {
@@ -45058,11 +45082,11 @@ var select_transformer_default = {
45058
45082
  ${dataPath ? `dataPath="${dataPath}"` : ""}>`;
45059
45083
  },
45060
45084
  post: (element, context) => "</WmSelect>",
45061
- imports: (element, context) => imports55
45085
+ imports: (element, context) => imports46
45062
45086
  };
45063
45087
 
45064
45088
  // src/transpile/components/input/rating.transformer.ts
45065
- var imports56 = [
45089
+ var imports47 = [
45066
45090
  { name: "WmRating", from: "@wavemaker-ai/react-runtime/components/input/rating" }
45067
45091
  ];
45068
45092
  var rating_transformer_default = {
@@ -45075,11 +45099,11 @@ var rating_transformer_default = {
45075
45099
  return `<WmRating ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)} ${getDisplayExpression2 ? `getDisplayExpression=${getDisplayExpression2}` : ""}>`;
45076
45100
  },
45077
45101
  post: (element, context) => "</WmRating>",
45078
- imports: (element, context) => imports56
45102
+ imports: (element, context) => imports47
45079
45103
  };
45080
45104
 
45081
45105
  // src/transpile/components/input/radio-set.transformer.ts
45082
- var imports57 = [
45106
+ var imports48 = [
45083
45107
  {
45084
45108
  name: "WmRadioset",
45085
45109
  from: "@wavemaker-ai/react-runtime/components/input/default/radioset"
@@ -45095,11 +45119,11 @@ var radio_set_transformer_default = {
45095
45119
  return `<WmRadioset ${isFormField ? " {...$formField}" : ""} listener={fragment} ${extractDatasetInfo(element)} ${transformAttrs(element, context)} ${getDisplayExpression2 ? `getDisplayExpression=${getDisplayExpression2}` : ""} >`;
45096
45120
  },
45097
45121
  post: (element) => "</WmRadioset>",
45098
- imports: (element) => imports57
45122
+ imports: (element) => imports48
45099
45123
  };
45100
45124
 
45101
45125
  // src/transpile/components/input/currency.transformer.ts
45102
- var imports58 = [
45126
+ var imports49 = [
45103
45127
  {
45104
45128
  name: "WmCurrency",
45105
45129
  from: "@wavemaker-ai/react-runtime/components/input/currency"
@@ -45111,11 +45135,11 @@ var currency_transformer_default = {
45111
45135
  return `<WmCurrency ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)}>`;
45112
45136
  },
45113
45137
  post: (element) => "</WmCurrency>",
45114
- imports: (element) => imports58
45138
+ imports: (element) => imports49
45115
45139
  };
45116
45140
 
45117
45141
  // src/transpile/components/input/checkbox.transformer.ts
45118
- var imports59 = [
45142
+ var imports50 = [
45119
45143
  {
45120
45144
  name: "WmCheckbox",
45121
45145
  from: "@wavemaker-ai/react-runtime/components/input/default/checkbox"
@@ -45145,11 +45169,11 @@ var checkbox_transformer_default = {
45145
45169
  return `<WmCheckbox ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context, transformNameInList)}>`;
45146
45170
  },
45147
45171
  post: (element, context) => "</WmCheckbox>",
45148
- imports: (element, context) => imports59
45172
+ imports: (element, context) => imports50
45149
45173
  };
45150
45174
 
45151
45175
  // src/transpile/components/input/checkbox-set.transformer.ts
45152
- var imports60 = [
45176
+ var imports51 = [
45153
45177
  {
45154
45178
  name: "WmCheckboxset",
45155
45179
  from: "@wavemaker-ai/react-runtime/components/input/default/checkboxset"
@@ -45169,11 +45193,11 @@ var checkbox_set_transformer_default = {
45169
45193
  return `<WmCheckboxset ${isFormField ? " {...$formField}" : ""} listener={fragment} ${extractDatasetInfo(element)} ${transformAttrs(element, context)} ${getDisplayExpression2 ? `getDisplayExpression=${getDisplayExpression2}` : ""} >`;
45170
45194
  },
45171
45195
  post: (element) => "</WmCheckboxset>",
45172
- imports: (element) => imports60
45196
+ imports: (element) => imports51
45173
45197
  };
45174
45198
 
45175
45199
  // src/transpile/components/container/accordion.transformer.ts
45176
- var imports61 = [
45200
+ var imports52 = [
45177
45201
  {
45178
45202
  name: "WmAccordion",
45179
45203
  from: "@wavemaker-ai/react-runtime/components/container/accordion"
@@ -45209,7 +45233,7 @@ var accordion_transformer_default = {
45209
45233
  }
45210
45234
  return "</WmAccordion>";
45211
45235
  },
45212
- imports: (element, context) => imports61,
45236
+ imports: (element, context) => imports52,
45213
45237
  createComponent: (element, context) => {
45214
45238
  context.props = [];
45215
45239
  return createComponent2(element, context);
@@ -45217,7 +45241,7 @@ var accordion_transformer_default = {
45217
45241
  };
45218
45242
 
45219
45243
  // src/transpile/components/container/accordion-pane.transformer.ts
45220
- var imports62 = [
45244
+ var imports53 = [
45221
45245
  {
45222
45246
  name: "WmAccordionPane",
45223
45247
  from: "@wavemaker-ai/react-runtime/components/container/accordion/accordion-pane"
@@ -45226,19 +45250,7 @@ var imports62 = [
45226
45250
  var accordion_pane_transformer_default = {
45227
45251
  pre: (element, context) => {
45228
45252
  transformRepeatChildAttr(element, `bind:fragment.item`, "bind:$item");
45229
- const isPreview = context.get("preview") === true;
45230
- if (isPreview) {
45231
- let partial2 = partial_content_transformer_default.pre(element, context) || "";
45232
- if (partial2) {
45233
- element.removeAttribute("name");
45234
- partial2 = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial2})}`;
45235
- }
45236
- return `<WmAccordionPane ${transformAttrs(element, context)} ${partial2}>`;
45237
- }
45238
- let partial = partial_container_transformer_default.pre(element, context) || "";
45239
- if (partial) {
45240
- partial = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
45241
- }
45253
+ const { partialAttr } = withPartialContainer(element, context, { prop: "render" });
45242
45254
  element.setAttribute(
45243
45255
  "key",
45244
45256
  element.getAttribute("title") || element.getAttribute("name") || ""
@@ -45248,14 +45260,14 @@ var accordion_pane_transformer_default = {
45248
45260
  if (typeofdynamic && name) {
45249
45261
  element.removeAttribute("name");
45250
45262
  }
45251
- return `<WmAccordionPane ${typeofdynamic && name ? `name={ "accordion_" + $index + "${name}" }` : ""} ${transformAttrs(element, context)} ${partial}>`;
45263
+ return `<WmAccordionPane ${typeofdynamic && name ? `name={ "accordion_" + $index + "${name}" }` : ""} ${transformAttrs(element, context)} ${partialAttr}>`;
45252
45264
  },
45253
45265
  post: (element, context) => "</WmAccordionPane>",
45254
- imports: (element, context) => imports62.concat(partial_container_transformer_default.imports(element, context))
45266
+ imports: (element, context) => imports53.concat(getPartialImports(element, context))
45255
45267
  };
45256
45268
 
45257
45269
  // src/transpile/components/input/file-upload.transformer.ts
45258
- var imports63 = [
45270
+ var imports54 = [
45259
45271
  {
45260
45272
  name: "WmFileupload",
45261
45273
  from: "@wavemaker-ai/react-runtime/components/input/fileupload"
@@ -45283,11 +45295,11 @@ var file_upload_transformer_default = {
45283
45295
  return `<WmFileupload ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)}>`;
45284
45296
  },
45285
45297
  post: (element, context) => "</WmFileupload>",
45286
- imports: (element, context) => imports63
45298
+ imports: (element, context) => imports54
45287
45299
  };
45288
45300
 
45289
45301
  // src/transpile/components/input/upload.transformer.ts
45290
- var imports64 = [
45302
+ var imports55 = [
45291
45303
  {
45292
45304
  name: "WmUpload",
45293
45305
  from: "@wavemaker-ai/react-runtime/components/input/upload"
@@ -45299,11 +45311,11 @@ var upload_transformer_default = {
45299
45311
  return `<WmUpload ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)}>`;
45300
45312
  },
45301
45313
  post: (element, context) => "</WmUpload>",
45302
- imports: (element, context) => imports64
45314
+ imports: (element, context) => imports55
45303
45315
  };
45304
45316
 
45305
45317
  // src/transpile/components/basic/html.transformer.ts
45306
- var imports65 = [
45318
+ var imports56 = [
45307
45319
  { name: "WmHtml", from: "@wavemaker-ai/react-runtime/components/basic/html" }
45308
45320
  ];
45309
45321
  var html_transformer_default = {
@@ -45311,11 +45323,11 @@ var html_transformer_default = {
45311
45323
  return `<WmHtml ${transformAttrs(element, context)}>`;
45312
45324
  },
45313
45325
  post: (element, context) => "</WmHtml>",
45314
- imports: (element, context) => imports65
45326
+ imports: (element, context) => imports56
45315
45327
  };
45316
45328
 
45317
45329
  // src/transpile/components/basic/progress-bar.transformer.ts
45318
- var imports66 = [
45330
+ var imports57 = [
45319
45331
  {
45320
45332
  name: "WmProgressBar",
45321
45333
  from: "@wavemaker-ai/react-runtime/components/basic/progress-bar"
@@ -45326,11 +45338,11 @@ var progress_bar_transformer_default = {
45326
45338
  return `<WmProgressBar ${transformAttrs(element, context)}>`;
45327
45339
  },
45328
45340
  post: (element, context) => "</WmProgressBar>",
45329
- imports: (element, context) => imports66
45341
+ imports: (element, context) => imports57
45330
45342
  };
45331
45343
 
45332
45344
  // src/transpile/components/container/repeat-template.transformer.ts
45333
- var imports67 = [
45345
+ var imports58 = [
45334
45346
  {
45335
45347
  name: "WmRepeatTemplate",
45336
45348
  from: "@wavemaker-ai/react-runtime/components/container/repeat-template"
@@ -45339,11 +45351,11 @@ var imports67 = [
45339
45351
  var repeat_template_transformer_default = {
45340
45352
  pre: (element, context) => `<WmRepeatTemplate ${transformAttrs(element, context)}>`,
45341
45353
  post: (element, context) => "</WmRepeatTemplate>",
45342
- imports: (element, context) => imports67
45354
+ imports: (element, context) => imports58
45343
45355
  };
45344
45356
 
45345
45357
  // src/transpile/components/navigation/menu.transformer.ts
45346
- var imports68 = [
45358
+ var imports59 = [
45347
45359
  { name: "WmMenu", from: "@wavemaker-ai/react-runtime/components/navigation/menu" }
45348
45360
  ];
45349
45361
  var menu_transformer_default = {
@@ -45369,11 +45381,11 @@ var menu_transformer_default = {
45369
45381
  ${itemchildrenExpression ? `itemchildren=${itemchildrenExpression}` : ""}>`;
45370
45382
  },
45371
45383
  post: (element, context) => "</WmMenu>",
45372
- imports: (element, context) => imports68
45384
+ imports: (element, context) => imports59
45373
45385
  };
45374
45386
 
45375
45387
  // src/transpile/components/basic/richtexteditor.transformer.ts
45376
- var imports69 = [
45388
+ var imports60 = [
45377
45389
  {
45378
45390
  name: "WmRichtexteditor",
45379
45391
  from: "@wavemaker-ai/react-runtime/components/basic/richtexteditor"
@@ -45386,11 +45398,11 @@ var richtexteditor_transformer_default = {
45386
45398
  return `<WmRichtexteditor listener={fragment} ${isFormField ? " {...$formField}" : ""} ${transformAttrs(element, context)} ${onChange ? `onChange={${onChange}}` : ""}>`;
45387
45399
  },
45388
45400
  post: (element, context) => "</WmRichtexteditor>",
45389
- imports: (element, context) => imports69
45401
+ imports: (element, context) => imports60
45390
45402
  };
45391
45403
 
45392
45404
  // src/transpile/components/basic/spinner.transformer.ts
45393
- var imports70 = [
45405
+ var imports61 = [
45394
45406
  {
45395
45407
  name: "WmSpinner",
45396
45408
  from: "@wavemaker-ai/react-runtime/components/basic/spinner"
@@ -45399,11 +45411,11 @@ var imports70 = [
45399
45411
  var spinner_transformer_default = {
45400
45412
  pre: (element, context) => `<WmSpinner listener={fragment} ${transformAttrs(element, context)}>`,
45401
45413
  post: (element, context) => "</WmSpinner>",
45402
- imports: (element, context) => imports70
45414
+ imports: (element, context) => imports61
45403
45415
  };
45404
45416
 
45405
45417
  // src/transpile/components/basic/progress-circle.transformer.ts
45406
- var imports71 = [
45418
+ var imports62 = [
45407
45419
  {
45408
45420
  name: "WmProgressCircle",
45409
45421
  from: "@wavemaker-ai/react-runtime/components/basic/progress-circle"
@@ -45412,11 +45424,11 @@ var imports71 = [
45412
45424
  var progress_circle_transformer_default = {
45413
45425
  pre: (element, context) => `<WmProgressCircle listener={fragment} ${transformAttrs(element, context)}>`,
45414
45426
  post: (element, context) => "</WmProgressCircle>",
45415
- imports: (element, context) => imports71
45427
+ imports: (element, context) => imports62
45416
45428
  };
45417
45429
 
45418
45430
  // src/transpile/components/basic/search.transformer.ts
45419
- var imports72 = [
45431
+ var imports63 = [
45420
45432
  { name: "WmSearch", from: "@wavemaker-ai/react-runtime/components/basic/search" }
45421
45433
  ];
45422
45434
  var search_transformer_default = {
@@ -45444,11 +45456,11 @@ var search_transformer_default = {
45444
45456
  ${getDisplayimagesrc ? `displayimagesrc=${getDisplayimagesrc} ` : ``} ${onSelect ? `onSelect={${onSelect}}` : ""}>`;
45445
45457
  },
45446
45458
  post: (element, context) => "</WmSearch>",
45447
- imports: (element, context) => imports72
45459
+ imports: (element, context) => imports63
45448
45460
  };
45449
45461
 
45450
45462
  // src/transpile/components/navigation/breadcrumb.transformer.ts
45451
- var imports73 = [
45463
+ var imports64 = [
45452
45464
  {
45453
45465
  name: "WmBreadcrumb",
45454
45466
  from: "@wavemaker-ai/react-runtime/components/navigation/breadcrumb"
@@ -45457,11 +45469,11 @@ var imports73 = [
45457
45469
  var breadcrumb_transformer_default = {
45458
45470
  pre: (element, context) => `<WmBreadcrumb listener={fragment} ${transformAttrs(element, context)}`,
45459
45471
  post: (element, context) => "/>",
45460
- imports: (element, context) => imports73
45472
+ imports: (element, context) => imports64
45461
45473
  };
45462
45474
 
45463
45475
  // src/transpile/components/input/color-picker.transformer.ts
45464
- var imports74 = [
45476
+ var imports65 = [
45465
45477
  {
45466
45478
  name: "WmColorPicker",
45467
45479
  from: "@wavemaker-ai/react-runtime/components/input/color-picker"
@@ -45473,11 +45485,11 @@ var color_picker_transformer_default = {
45473
45485
  return `<WmColorPicker ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)}>`;
45474
45486
  },
45475
45487
  post: (element) => "</WmColorPicker>",
45476
- imports: (element) => imports74
45488
+ imports: (element) => imports65
45477
45489
  };
45478
45490
 
45479
45491
  // src/transpile/components/container/panel.transformer.ts
45480
- var imports75 = [
45492
+ var imports66 = [
45481
45493
  {
45482
45494
  name: "WmPanel, {WmPanelFooter}",
45483
45495
  from: "@wavemaker-ai/react-runtime/components/container/panel"
@@ -45485,35 +45497,23 @@ var imports75 = [
45485
45497
  ];
45486
45498
  var panel_transformer_default = {
45487
45499
  pre: (element, context) => {
45488
- const isPreview = context.get("preview") === true;
45489
- if (isPreview) {
45490
- let partial2 = partial_content_transformer_default.pre(element, context) || "";
45491
- if (partial2) {
45492
- element.removeAttribute("name");
45493
- partial2 = `renderPartial={(props:Record<string, any>, onLoad:()=>void) => (${partial2})}`;
45494
- }
45495
- return `<WmPanel listener={fragment} ${transformAttrs(element, context)} ${partial2}>`;
45496
- }
45497
- let partial = partial_container_transformer_default.pre(element, context) || "";
45498
- if (partial) {
45499
- partial = `renderPartial={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
45500
- }
45501
- return `<WmPanel listener={fragment} ${transformAttrs(element, context)} ${partial}>`;
45500
+ const { partialAttr } = withPartialContainer(element, context, { prop: "renderPartial" });
45501
+ return `<WmPanel listener={fragment} ${transformAttrs(element, context)} ${partialAttr}>`;
45502
45502
  },
45503
45503
  post: (element, context) => "</WmPanel>",
45504
- imports: (element, context) => imports75.concat(partial_container_transformer_default.imports(element, context))
45504
+ imports: (element, context) => imports66.concat(getPartialImports(element, context))
45505
45505
  };
45506
45506
 
45507
45507
  // src/transpile/components/container/panel-footer.transformer.ts
45508
- var imports76 = [];
45508
+ var imports67 = [];
45509
45509
  var panel_footer_transformer_default = {
45510
45510
  pre: (element, context) => `<WmPanelFooter ${transformAttrs(element, context)}>`,
45511
45511
  post: (element, context) => "</WmPanelFooter>",
45512
- imports: (element, context) => imports76
45512
+ imports: (element, context) => imports67
45513
45513
  };
45514
45514
 
45515
45515
  // src/transpile/components/container/panel-content.transformer.ts
45516
- var imports77 = [
45516
+ var imports68 = [
45517
45517
  {
45518
45518
  name: "WmPanelContent",
45519
45519
  from: "@wavemaker-ai/react-runtime/components/container/panel/components/panel-content"
@@ -45522,11 +45522,11 @@ var imports77 = [
45522
45522
  var panel_content_transformer_default = {
45523
45523
  pre: (element, context) => `<WmPanelContent ${transformAttrs(element, context)}>`,
45524
45524
  post: (element, context) => "</WmPanelContent>",
45525
- imports: (element, context) => imports77
45525
+ imports: (element, context) => imports68
45526
45526
  };
45527
45527
 
45528
45528
  // src/transpile/components/input/epoch/date.transformer.ts
45529
- var imports78 = [
45529
+ var imports69 = [
45530
45530
  { name: "WmDate", from: "@wavemaker-ai/react-runtime/components/input/epoch/date" }
45531
45531
  ];
45532
45532
  var date_transformer_default = {
@@ -45535,11 +45535,11 @@ var date_transformer_default = {
45535
45535
  return `<WmDate listener={fragment} ${isFormField ? " {...$formField}" : ""} ${transformAttrs(element, context)}>`;
45536
45536
  },
45537
45537
  post: (element, context) => "</WmDate>",
45538
- imports: (element, context) => imports78
45538
+ imports: (element, context) => imports69
45539
45539
  };
45540
45540
 
45541
45541
  // src/transpile/components/input/epoch/time.transformer.ts
45542
- var imports79 = [
45542
+ var imports70 = [
45543
45543
  { name: "WmTime", from: "@wavemaker-ai/react-runtime/components/input/epoch/time" }
45544
45544
  ];
45545
45545
  var time_transformer_default = {
@@ -45548,11 +45548,11 @@ var time_transformer_default = {
45548
45548
  return `<WmTime listener={fragment} ${isFormField ? " {...$formField}" : ""} ${transformAttrs(element, context)}>`;
45549
45549
  },
45550
45550
  post: (element, context) => "</WmTime>",
45551
- imports: (element, context) => imports79
45551
+ imports: (element, context) => imports70
45552
45552
  };
45553
45553
 
45554
45554
  // src/transpile/components/input/epoch/datetime.transformer.ts
45555
- var imports80 = [
45555
+ var imports71 = [
45556
45556
  { name: "WmDatetime", from: "@wavemaker-ai/react-runtime/components/input/epoch/datetime" }
45557
45557
  ];
45558
45558
  var datetime_transformer_default = {
@@ -45561,11 +45561,11 @@ var datetime_transformer_default = {
45561
45561
  return `<WmDatetime listener={fragment} ${isFormField ? " {...$formField}" : ""} ${transformAttrs(element, context)}>`;
45562
45562
  },
45563
45563
  post: (element, context) => "</WmDatetime>",
45564
- imports: (element, context) => imports80
45564
+ imports: (element, context) => imports71
45565
45565
  };
45566
45566
 
45567
45567
  // src/transpile/components/dialogs/login-dialog.transformer.ts
45568
- var imports81 = [
45568
+ var imports72 = [
45569
45569
  {
45570
45570
  name: "WmLoginDialog",
45571
45571
  from: "@wavemaker-ai/react-runtime/components/dialogs/login-dialog"
@@ -45596,11 +45596,11 @@ var login_dialog_transformer_default = {
45596
45596
  return `<WmLoginDialog eventsource={fragment?.Actions?.loginAction} listener={fragment} ${transformAttrs(element, context)} >`;
45597
45597
  },
45598
45598
  post: (element, context) => "</WmLoginDialog>",
45599
- imports: (element, context) => imports81
45599
+ imports: (element, context) => imports72
45600
45600
  };
45601
45601
 
45602
45602
  // src/transpile/components/advanced/login.transformer.ts
45603
- var imports82 = [
45603
+ var imports73 = [
45604
45604
  {
45605
45605
  name: "WmLogin",
45606
45606
  from: "@wavemaker-ai/react-runtime/components/advanced/login"
@@ -45619,21 +45619,21 @@ var login_transformer_default = {
45619
45619
  return `<WmLogin listener={fragment} eventSource={fragment?.Actions.loginAction} ${transformAttrs(element, context)} >`;
45620
45620
  },
45621
45621
  post: (element, context) => "</WmLogin>",
45622
- imports: (element, context) => imports82
45622
+ imports: (element, context) => imports73
45623
45623
  };
45624
45624
 
45625
45625
  // src/transpile/components/input/calendar.transformer.ts
45626
- var imports83 = [
45626
+ var imports74 = [
45627
45627
  { name: "WmCalendar", from: "@wavemaker-ai/react-runtime/components/input/calendar" }
45628
45628
  ];
45629
45629
  var calendar_transformer_default = {
45630
45630
  pre: (element, context) => `<WmCalendar listener={fragment} ${transformAttrs(element, context)}>`,
45631
45631
  post: (element, context) => "</WmCalendar>",
45632
- imports: (element, context) => imports83
45632
+ imports: (element, context) => imports74
45633
45633
  };
45634
45634
 
45635
45635
  // src/transpile/components/advanced/marquee.transformer.ts
45636
- var imports84 = [
45636
+ var imports75 = [
45637
45637
  {
45638
45638
  name: "WmMarquee",
45639
45639
  from: "@wavemaker-ai/react-runtime/components/advanced/marquee"
@@ -45642,11 +45642,11 @@ var imports84 = [
45642
45642
  var marquee_transformer_default = {
45643
45643
  pre: (element, context) => `<WmMarquee ${transformAttrs(element, context)}>`,
45644
45644
  post: (element, context) => "</WmMarquee>",
45645
- imports: (element, context) => imports84
45645
+ imports: (element, context) => imports75
45646
45646
  };
45647
45647
 
45648
45648
  // src/transpile/components/advanced/carousel.transformer.ts
45649
- var imports85 = [
45649
+ var imports76 = [
45650
45650
  {
45651
45651
  name: "WmCarousel",
45652
45652
  from: "@wavemaker-ai/react-runtime/components/advanced/carousel"
@@ -45686,7 +45686,7 @@ var carousel_transformer_default = {
45686
45686
  }
45687
45687
  return "</WmCarousel>";
45688
45688
  },
45689
- imports: (element, context) => imports85,
45689
+ imports: (element, context) => imports76,
45690
45690
  createComponent: (element, context) => {
45691
45691
  if (!context.data.listCount) {
45692
45692
  context.props = context.get("old_props") || [];
@@ -45698,7 +45698,7 @@ var carousel_transformer_default = {
45698
45698
  };
45699
45699
 
45700
45700
  // src/transpile/components/advanced/carousel-template.transformer.ts
45701
- var imports86 = [
45701
+ var imports77 = [
45702
45702
  {
45703
45703
  name: "WmCarouselTemplate",
45704
45704
  from: "@wavemaker-ai/react-runtime/components/advanced/carousel/template"
@@ -45707,21 +45707,21 @@ var imports86 = [
45707
45707
  var carousel_template_transformer_default = {
45708
45708
  pre: (element, context) => `<WmCarouselTemplate ${transformAttrs(element, context)}>`,
45709
45709
  post: (element, context) => "</WmCarouselTemplate>",
45710
- imports: (element, context) => imports86
45710
+ imports: (element, context) => imports77
45711
45711
  };
45712
45712
 
45713
45713
  // src/transpile/components/chart/chart.transformer.ts
45714
- var imports87 = [
45714
+ var imports78 = [
45715
45715
  { name: "WmChart", from: "@wavemaker-ai/react-runtime/components/chart" }
45716
45716
  ];
45717
45717
  var chart_transformer_default = {
45718
45718
  pre: (element, context) => `<WmChart listener={fragment} ${transformAttrs(element, context)} >`,
45719
45719
  post: (element, context) => "</WmChart>",
45720
- imports: (element, context) => imports87
45720
+ imports: (element, context) => imports78
45721
45721
  };
45722
45722
 
45723
45723
  // src/transpile/components/input/chips.transformer.ts
45724
- var imports88 = [
45724
+ var imports79 = [
45725
45725
  { name: "WmChips", from: "@wavemaker-ai/react-runtime/components/input/chips" }
45726
45726
  ];
45727
45727
  var chips_transformer_default = {
@@ -45735,66 +45735,54 @@ var chips_transformer_default = {
45735
45735
  return `<WmChips listener={fragment} ${isFormField ? " {...$formField}" : ""} ${getDisplayExpression2 ? `displayexpression=${getDisplayExpression2}` : ""} ${extractDatasetInfo(element)} ${transformAttrs(element, context)}>`;
45736
45736
  },
45737
45737
  post: (element, context) => "</WmChips>",
45738
- imports: (element, context) => imports88
45738
+ imports: (element, context) => imports79
45739
45739
  };
45740
45740
 
45741
45741
  // src/transpile/components/data/card/card.transformer.ts
45742
- var imports89 = [
45742
+ var imports80 = [
45743
45743
  { name: "WmCard", from: "@wavemaker-ai/react-runtime/components/data/card" }
45744
45744
  ];
45745
45745
  var card_transformer_default = {
45746
45746
  pre: (element, context) => `<WmCard ${transformAttrs(element, context)} listener={fragment} cardItem={typeof $item !== "undefined" ? $item : {}}>`,
45747
45747
  post: (element, context) => "</WmCard>",
45748
- imports: (element, context) => imports89
45748
+ imports: (element, context) => imports80
45749
45749
  };
45750
45750
 
45751
45751
  // src/transpile/components/data/card/card-content.transformer.ts
45752
- var imports90 = [
45752
+ var imports81 = [
45753
45753
  { name: "WmCardContent", from: "@wavemaker-ai/react-runtime/components/data/card/card-content" }
45754
45754
  ];
45755
45755
  var card_content_transformer_default = {
45756
45756
  pre: (element, context) => {
45757
- const isPreview = context.get("preview") === true;
45758
- if (isPreview) {
45759
- let partial2 = partial_content_transformer_default.pre(element, context) || "";
45760
- if (partial2) {
45761
- element.removeAttribute("name");
45762
- partial2 = `renderPartial={(props:Record<string, any>, onLoad:()=>void) => (${partial2})}`;
45763
- }
45764
- return `<WmCardContent ${transformAttrs(element, context)} ${partial2}>`;
45765
- }
45766
- let partial = partial_container_transformer_default.pre(element, context) || "";
45767
- if (partial) {
45768
- partial = `renderPartial={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
45769
- }
45770
- return `<WmCardContent ${transformAttrs(element, context)} ${partial}>`;
45757
+ const { partialAttr } = withPartialContainer(element, context, { prop: "renderPartial" });
45758
+ return `<WmCardContent ${transformAttrs(element, context)} ${partialAttr}>`;
45771
45759
  },
45772
45760
  post: (element, context) => "</WmCardContent>",
45773
- imports: (element, context) => imports90.concat(partial_container_transformer_default.imports(element, context))
45761
+ imports: (element, context) => imports81.concat(getPartialImports(element, context))
45774
45762
  };
45775
45763
 
45776
45764
  // src/transpile/components/data/card/card-footer.transformer.ts
45777
- var imports91 = [
45765
+ var imports82 = [
45778
45766
  { name: "WmCardFooter", from: "@wavemaker-ai/react-runtime/components/data/card/card-footer" }
45779
45767
  ];
45780
45768
  var card_footer_transformer_default = {
45781
45769
  pre: (element, context) => `<WmCardFooter ${transformAttrs(element, context)}>`,
45782
45770
  post: (element, context) => "</WmCardFooter>",
45783
- imports: (element, context) => imports91
45771
+ imports: (element, context) => imports82
45784
45772
  };
45785
45773
 
45786
45774
  // src/transpile/components/data/card/card-actions.transformer.ts
45787
- var imports92 = [
45775
+ var imports83 = [
45788
45776
  { name: "WmCardActions", from: "@wavemaker-ai/react-runtime/components/data/card/card-actions" }
45789
45777
  ];
45790
45778
  var card_actions_transformer_default = {
45791
45779
  pre: (element, context) => `<WmCardActions ${transformAttrs(element, context)}>`,
45792
45780
  post: (element, context) => "</WmCardActions>",
45793
- imports: (element, context) => imports92
45781
+ imports: (element, context) => imports83
45794
45782
  };
45795
45783
 
45796
45784
  // src/transpile/components/basic/tree.transformer.ts
45797
- var imports93 = [
45785
+ var imports84 = [
45798
45786
  {
45799
45787
  name: "WmTree",
45800
45788
  from: "@wavemaker-ai/react-runtime/components/basic/tree"
@@ -45803,11 +45791,11 @@ var imports93 = [
45803
45791
  var tree_transformer_default = {
45804
45792
  pre: (element, context) => `<WmTree listener={fragment} ${transformAttrs(element, context)}>`,
45805
45793
  post: (element, context) => "</WmTree>",
45806
- imports: (element, context) => imports93
45794
+ imports: (element, context) => imports84
45807
45795
  };
45808
45796
 
45809
45797
  // src/transpile/components/container/wizard.transformer.ts
45810
- var imports94 = [
45798
+ var imports85 = [
45811
45799
  { name: "WmWizard", from: "@wavemaker-ai/react-runtime/components/container/wizard" }
45812
45800
  ];
45813
45801
  var wizard_transformer_default = {
@@ -45874,7 +45862,7 @@ var wizard_transformer_default = {
45874
45862
  }
45875
45863
  return "</WmWizard>";
45876
45864
  },
45877
- imports: (element, context) => imports94,
45865
+ imports: (element, context) => imports85,
45878
45866
  createComponent: (element, context) => {
45879
45867
  if (!context.data.listCount) {
45880
45868
  context.props = context.get("old_props") || [];
@@ -45886,7 +45874,7 @@ var wizard_transformer_default = {
45886
45874
  };
45887
45875
 
45888
45876
  // src/transpile/components/container/wizardstep.transformer.ts
45889
- var imports95 = [
45877
+ var imports86 = [
45890
45878
  {
45891
45879
  name: "WmWizardstep",
45892
45880
  from: "@wavemaker-ai/react-runtime/components/container/wizard/wizard-step"
@@ -45921,44 +45909,20 @@ function getNearestWizardType(element) {
45921
45909
  }
45922
45910
  var wizardstep_transformer_default = {
45923
45911
  pre: (element, context) => {
45924
- const isPreview = context.get("preview") === true;
45925
- if (isPreview) {
45926
- let partial2 = partial_content_transformer_default.pre(element, context) || "";
45927
- if (partial2) {
45928
- element.removeAttribute("name");
45929
- partial2 = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial2})}`;
45930
- return `<WmWizardstep ${transformAttrs(element, context)} ${partial2}>`;
45931
- }
45932
- if (element.childNodes && element.childNodes.length > 0) {
45933
- return `<WmWizardstep ${transformAttrs(element, context)}
45934
- render={(props:Record<string, any>, onLoad:()=>void) => (<>`;
45935
- }
45936
- return `<WmWizardstep ${transformAttrs(element, context)} >`;
45937
- }
45938
- let partial = partial_container_transformer_default.pre(element, context) || "";
45939
- if (partial) {
45940
- partial = `render={(props:Record<string, any>, onLoad:()=>void) => (${partial})}`;
45941
- }
45912
+ const { partialAttr } = withPartialContainer(element, context, { prop: "render" });
45942
45913
  const onNext = getOnNext(element);
45943
45914
  const onPrev = getOnPrev(element);
45944
45915
  element.removeAttribute("on-next");
45945
45916
  element.removeAttribute("on-prev");
45946
45917
  const type = getNearestWizardType(element);
45947
- if ((type && type == "dynamic" || element.childNodes && element.childNodes.length > 0) && !partial) {
45918
+ if ((type && type == "dynamic" || element.childNodes && element.childNodes.length > 0) && !partialAttr) {
45948
45919
  return `<WmWizardstep ${transformAttrs(element, context)}
45949
45920
  ${onNext ? `onNext={${onNext}}` : ""} ${onPrev ? `onPrev={${onPrev}}` : ""} render={(props:Record<string, any>, onLoad:()=>void) => (<>`;
45950
45921
  }
45951
45922
  return `<WmWizardstep ${transformAttrs(element, context)}
45952
- ${onNext ? `onNext={${onNext}}` : ""} ${onPrev ? `onPrev={${onPrev}}` : ""} ${partial} >`;
45923
+ ${onNext ? `onNext={${onNext}}` : ""} ${onPrev ? `onPrev={${onPrev}}` : ""} ${partialAttr} >`;
45953
45924
  },
45954
45925
  post: (element, context) => {
45955
- const isPreview = context.get("preview") === true;
45956
- if (isPreview) {
45957
- const hasPartial2 = !!element.getAttribute("content");
45958
- if (hasPartial2) return "/>";
45959
- if (element.childNodes && element.childNodes.length > 0) return " </>)}/>";
45960
- return "</WmWizardstep>";
45961
- }
45962
45926
  const type = getNearestWizardType(element);
45963
45927
  const hasPartial = !!element.getAttribute("content");
45964
45928
  if ((type && type == "dynamic" || element.childNodes && element.childNodes.length > 0) && !hasPartial) {
@@ -45966,11 +45930,11 @@ var wizardstep_transformer_default = {
45966
45930
  }
45967
45931
  return "</WmWizardstep>";
45968
45932
  },
45969
- imports: (element, context) => imports95
45933
+ imports: (element, context) => imports86
45970
45934
  };
45971
45935
 
45972
45936
  // src/transpile/components/container/wizardaction.transformer.ts
45973
- var imports96 = [
45937
+ var imports87 = [
45974
45938
  {
45975
45939
  name: "WmWizardAction",
45976
45940
  from: "@wavemaker-ai/react-runtime/components/container/wizard/wizard-action"
@@ -46075,11 +46039,11 @@ renderActions={(actions: any) => (<>`;
46075
46039
  )}
46076
46040
  >
46077
46041
  </WmWizardAction>`,
46078
- imports: (element, context) => imports96
46042
+ imports: (element, context) => imports87
46079
46043
  };
46080
46044
 
46081
46045
  // src/transpile/components/basic/message.transformer.ts
46082
- var imports97 = [
46046
+ var imports88 = [
46083
46047
  {
46084
46048
  name: "WmMessage",
46085
46049
  from: "@wavemaker-ai/react-runtime/components/basic/message"
@@ -46088,48 +46052,14 @@ var imports97 = [
46088
46052
  var message_transformer_default = {
46089
46053
  pre: (element, context) => `<WmMessage ${transformAttrs(element, context)}>`,
46090
46054
  post: (element, context) => "</WmMessage>",
46091
- imports: (element, context) => imports97
46055
+ imports: (element, context) => imports88
46092
46056
  };
46093
46057
 
46094
- // src/transpile/components/data/liveform.transformer.ts
46058
+ // src/transpile/components/data/live-form-shared.ts
46095
46059
  var import_lodash9 = __toESM(require_lodash());
46096
- var imports98 = [
46097
- { name: "WmLiveForm", from: "@wavemaker-ai/react-runtime/components/data/live-form" }
46098
- ];
46099
46060
  var getDataSetExpr = (element, bindExpr) => {
46100
46061
  return element.getAttribute("isLogin") ? "" : `${bindExpr}[widget.props.name] = newVal;`;
46101
46062
  };
46102
- var getOnChangeExpr3 = (element) => {
46103
- var _a;
46104
- const formDataSet = ((_a = element.getAttribute("dataset")) == null ? void 0 : _a.split(":")) || [];
46105
- let bindExpr = (formDataSet == null ? void 0 : formDataSet.length) > 1 ? formDataSet[1] : null;
46106
- if (!bindExpr || (bindExpr == null ? void 0 : bindExpr.includes("Widgets"))) {
46107
- return "";
46108
- }
46109
- let currentNode = element.parentNode;
46110
- const variableArr = bindExpr.match(/fragment\.Variables\??\.[^.?]+/g);
46111
- const variableName = variableArr && variableArr.length ? variableArr[0] : null;
46112
- while (currentNode) {
46113
- if (currentNode.rawTagName === "wm-liveform") {
46114
- element.setAttribute("parentForm", currentNode.getAttribute("name") || "");
46115
- element.setAttribute("childdatasetnode", element.getAttribute("name") || "");
46116
- break;
46117
- } else if (currentNode.rawTagName === "wm-prefab" || currentNode.rawTagName === "wm-prefab-container") {
46118
- const prefabParentForm = currentNode.getAttribute("parentForm");
46119
- if (prefabParentForm) {
46120
- element.setAttribute("parentForm", prefabParentForm);
46121
- }
46122
- }
46123
- currentNode = currentNode.parentNode;
46124
- }
46125
- return `
46126
- ($event, widget, newVal, oldVal) => {
46127
- if(${variableName}?.twoWayBinding && newVal !== oldVal) {
46128
- ${bindExpr !== null ? getDataSetExpr(element, bindExpr) : ""}
46129
- }
46130
- }
46131
- `;
46132
- };
46133
46063
  var getFormSubmitExpr2 = (element) => {
46134
46064
  const dataset = element.getAttribute("dataset");
46135
46065
  if (dataset) {
@@ -46169,23 +46099,54 @@ var getFormSuccessExpr = (element) => {
46169
46099
  }
46170
46100
  }
46171
46101
  };
46172
- var pluckFormActionNodes2 = (element, actions = []) => {
46102
+ var getOnChangeExpr3 = (element, options) => {
46103
+ var _a;
46104
+ const formDataSet = ((_a = element.getAttribute("dataset")) == null ? void 0 : _a.split(":")) || [];
46105
+ let bindExpr = (formDataSet == null ? void 0 : formDataSet.length) > 1 ? formDataSet[1] : null;
46106
+ if (!bindExpr || (bindExpr == null ? void 0 : bindExpr.includes("Widgets"))) {
46107
+ return "";
46108
+ }
46109
+ let currentNode = element.parentNode;
46110
+ const variableArr = bindExpr.match(options.variableRegex);
46111
+ const variableName = variableArr && variableArr.length ? variableArr[0] : null;
46112
+ while (currentNode) {
46113
+ if (currentNode.rawTagName === "wm-liveform") {
46114
+ element.setAttribute("parentForm", currentNode.getAttribute("name") || "");
46115
+ element.setAttribute("childdatasetnode", element.getAttribute("name") || "");
46116
+ break;
46117
+ } else if ((currentNode.rawTagName === "wm-prefab" || currentNode.rawTagName === "wm-prefab-container")) {
46118
+ const prefabParentForm = currentNode.getAttribute("parentForm");
46119
+ if (prefabParentForm) {
46120
+ element.setAttribute("parentForm", prefabParentForm);
46121
+ }
46122
+ }
46123
+ currentNode = currentNode.parentNode;
46124
+ }
46125
+ return `
46126
+ ($event, widget, newVal, oldVal) => {
46127
+ if(${variableName}?.twoWayBinding && newVal !== oldVal) {
46128
+ ${bindExpr !== null ? getDataSetExpr(element, bindExpr) : ""}
46129
+ }
46130
+ }
46131
+ `;
46132
+ };
46133
+ var pluckFormActionNodes2 = (element, actionTags, actions = []) => {
46173
46134
  if (element.childNodes.length) {
46174
46135
  (0, import_lodash9.forEach)(element.childNodes, (n) => {
46175
46136
  if (isHTMLElement(n) && n.rawTagName === "wm-form") {
46176
46137
  return;
46177
- } else if (isHTMLElement(n) && n.rawTagName === "wm-form-action") {
46138
+ } else if (isHTMLElement(n) && actionTags.includes(n.rawTagName)) {
46178
46139
  actions.push(n);
46179
46140
  n.remove();
46180
46141
  } else {
46181
- pluckFormActionNodes2(n, actions);
46142
+ pluckFormActionNodes2(n, actionTags, actions);
46182
46143
  }
46183
46144
  });
46184
46145
  return actions;
46185
46146
  }
46186
46147
  };
46187
- var setFormActions2 = (element, context) => {
46188
- const formActions = pluckFormActionNodes2(element);
46148
+ var setFormActions2 = (element, context, actionTags) => {
46149
+ const formActions = pluckFormActionNodes2(element, actionTags);
46189
46150
  const formFooter = parse5(`<wm-form-footer></wm-form-footer>`).firstChild;
46190
46151
  formActions.forEach((formAction) => {
46191
46152
  formAction.setAttribute("formKey", element.attrs["name"]);
@@ -46200,9 +46161,16 @@ var setFormActions2 = (element, context) => {
46200
46161
  formBody.childNodes.push(formFooter);
46201
46162
  }
46202
46163
  };
46164
+
46165
+ // src/transpile/components/data/liveform.transformer.ts
46166
+ var imports89 = [
46167
+ { name: "WmLiveForm", from: "@wavemaker-ai/react-runtime/components/data/live-form" }
46168
+ ];
46169
+ var FORM_ACTION_TAGS = ["wm-form-action"];
46203
46170
  var liveform_transformer_default = {
46204
46171
  pre: (element, context) => {
46205
- const onChange = getOnChangeExpr3(element);
46172
+ const onChange = getOnChangeExpr3(element, {
46173
+ variableRegex: /fragment\.Variables\??\.[^.?]+/g});
46206
46174
  const formSubmit = getFormSubmitExpr2(element);
46207
46175
  const formSuccess = getFormSuccessExpr(element);
46208
46176
  const datasetAttr = element.getAttribute("dataset");
@@ -46214,7 +46182,7 @@ var liveform_transformer_default = {
46214
46182
  element.setAttribute("datasource", `{fragment?.Variables?.${variableName}}`);
46215
46183
  }
46216
46184
  }
46217
- setFormActions2(element);
46185
+ setFormActions2(element, context, FORM_ACTION_TAGS);
46218
46186
  return `<WmLiveForm listener={fragment} ${transformAttrs(element, context)}
46219
46187
  ${onChange ? `onChange={${onChange}}` : ""}
46220
46188
  ${formSuccess ? `formSuccess={${formSuccess}}` : ""}
@@ -46222,10 +46190,14 @@ var liveform_transformer_default = {
46222
46190
  ${datasourceAttr ? `datasource={${datasourceAttr}}` : ""}>`;
46223
46191
  },
46224
46192
  post: (element, context) => `</WmLiveForm>`,
46225
- imports: (element, context) => imports98
46193
+ imports: (element, context) => imports89
46226
46194
  };
46227
46195
 
46228
46196
  // src/transpile/components/data/table/utils.ts
46197
+ var CUSTOM_PIPE_REGEX = /(custom(\s*:))/;
46198
+ function checkIsCustomPipeExpression(exp) {
46199
+ return CUSTOM_PIPE_REGEX.test(exp);
46200
+ }
46229
46201
  function findNearestElement(element, tagName) {
46230
46202
  var _a, _b;
46231
46203
  let current = element.parentNode;
@@ -46276,9 +46248,35 @@ function transformTableColumnClassExpression(expression) {
46276
46248
  transformed = transformed.replace(/"([^"]*)"/g, "'$1'");
46277
46249
  return transformed;
46278
46250
  }
46251
+ function getFormatCellExpression(element, context) {
46252
+ const binding = element.getAttribute("binding");
46253
+ if (!binding || binding === "rowOperations") {
46254
+ return null;
46255
+ }
46256
+ let formatPattern = element.getAttribute("custompipeformat") || element.getAttribute("formatpattern");
46257
+ if (!formatPattern || formatPattern === "None") {
46258
+ return null;
46259
+ }
46260
+ const columnValue = `row.getProperty('${binding}')`;
46261
+ let pipeExpression = "";
46262
+ if (checkIsCustomPipeExpression(formatPattern)) {
46263
+ pipeExpression = `${columnValue} | ${formatPattern} : row`;
46264
+ }
46265
+ if (!pipeExpression) {
46266
+ return null;
46267
+ }
46268
+ let transformed = bind_ex_transformer_default(pipeExpression, "fragment", "attr");
46269
+ transformed = transformed.replace(/fragment\??\.row/g, "rowData");
46270
+ transformed = transformed.replace(/\brow\./g, "rowData.");
46271
+ transformed = transformed.replace(/\brow\b(?![a-zA-Z_$0-9])/g, "rowData");
46272
+ transformed = resolveFormatContext(transformed, context);
46273
+ transformed = addOptionalChaining(transformed);
46274
+ transformed = transformed.replace(/(\w+)\?\.\s*\(/g, "$1(");
46275
+ return transformed;
46276
+ }
46279
46277
 
46280
46278
  // src/transpile/components/data/table/table-column.transformer.ts
46281
- var imports99 = [
46279
+ var imports90 = [
46282
46280
  { name: "WmTableColumn", from: "@wavemaker-ai/react-runtime/components/data/table/table-column" }
46283
46281
  ];
46284
46282
  function transformColAttr(element) {
@@ -46332,6 +46330,7 @@ var table_column_transformer_default = {
46332
46330
  updatedElement.setAttribute("class", combinedClass);
46333
46331
  }
46334
46332
  const template = element.childNodes.find((c) => isHTMLElement(c));
46333
+ const formatCellExp = getFormatCellExpression(updatedElement, context);
46335
46334
  let customExp = null;
46336
46335
  const textNodes = element.childNodes.filter((c) => c.nodeType === NodeType.TEXT_NODE);
46337
46336
  for (const textNode of textNodes) {
@@ -46346,8 +46345,8 @@ var table_column_transformer_default = {
46346
46345
  break;
46347
46346
  }
46348
46347
  }
46349
- if (template || customExp) {
46350
- context.data.isInsideTableColumn = true;
46348
+ if (template || customExp || formatCellExp) {
46349
+ context.set("isInsideTableColumn", true);
46351
46350
  if (template) {
46352
46351
  transformRepeatChildAttr(template, "fragment.row", "rowData");
46353
46352
  const tableVarName = context.get("tableDatasetVariableName");
@@ -46357,9 +46356,10 @@ var table_column_transformer_default = {
46357
46356
  }
46358
46357
  }
46359
46358
  const hasElementChildren = element.childNodes.some((c) => isHTMLElement(c));
46359
+ const cellContent = customExp || (formatCellExp ? `{${formatCellExp}}` : "");
46360
46360
  return `<WmTableColumn listener={fragment} ${!rowOperations ? `editWidgetType="${editWidgetType}"` : ""} widgetType="${widgetType}" ${colClassAttr} ${transformAttrs(updatedElement, context)}
46361
46361
  renderCellContent={(rowData:any , columnData : any) =>
46362
- (<> ${customExp ? `${customExp} </>)}` : ""} ${hasElementChildren ? "" : ">"}`;
46362
+ (<> ${cellContent ? `${cellContent} </>)}` : ""} ${hasElementChildren ? "" : ">"}`;
46363
46363
  }
46364
46364
  return `<WmTableColumn listener={fragment} ${!rowOperations ? `editWidgetType="${editWidgetType}"` : ""} widgetType="${widgetType}" ${colClassAttr} ${transformAttrs(updatedElement, context)}>`;
46365
46365
  },
@@ -46370,16 +46370,15 @@ var table_column_transformer_default = {
46370
46370
  }
46371
46371
  return "</WmTableColumn>";
46372
46372
  },
46373
- imports: (element, context) => imports99
46373
+ imports: (element, context) => imports90
46374
46374
  };
46375
46375
 
46376
46376
  // src/transpile/components/data/table/table-row.transformer.ts
46377
- var imports100 = [
46377
+ var imports91 = [
46378
46378
  { name: "WmTableRow", from: "@wavemaker-ai/react-runtime/components/data/table/table-row" }
46379
46379
  ];
46380
46380
  var table_row_transformer_default = {
46381
46381
  pre: (element, context) => {
46382
- const isPreview = context.get("preview") === true;
46383
46382
  const content = element.getAttribute("content");
46384
46383
  const widgetType = element.getAttribute("widget-type") || "button";
46385
46384
  const displayName = element.getAttribute("display-name");
@@ -46389,29 +46388,24 @@ var table_row_transformer_default = {
46389
46388
  }
46390
46389
  element.removeAttribute("widget-type");
46391
46390
  let partial = "";
46392
- if (isPreview && content) {
46393
- element.setAttribute("is-table-row", "true");
46394
- let partial2 = partial_content_transformer_default.pre(element, context) || "";
46395
- if (partial2) {
46396
- element.removeAttribute("name");
46397
- partial2 = `renderPartial={(props:Record<string, any>, onLoad:()=>void,currentItem:any) => (${partial2})}`;
46398
- }
46399
- element.removeAttribute("is-table-row");
46400
- return `<WmTableRow listener={fragment} widgetType="${widgetType}" ${transformAttrs(element, context)} ${partial2}`;
46401
- } else if (content) {
46391
+ if (content) {
46402
46392
  element.setAttribute("is-table-row", "true");
46403
- partial = partial_container_transformer_default.pre(element, context) || "";
46404
- partial = `renderPartial={(props:Record<string, any>, onLoad:()=>void, currentItem:any) => (${partial})}`;
46393
+ element.setAttribute("rowType", "expansion");
46394
+ const { partialAttr } = withPartialContainer(element, context, {
46395
+ prop: "renderPartial",
46396
+ extraParams: "currentItem:any"
46397
+ });
46398
+ partial = partialAttr;
46405
46399
  element.removeAttribute("is-table-row");
46406
46400
  }
46407
46401
  return `<WmTableRow listener={fragment} widgetType="${widgetType}" ${transformAttrs(element, context)} ${partial}`;
46408
46402
  },
46409
46403
  post: (element, context) => "/>",
46410
- imports: (element, context) => imports100.concat(partial_container_transformer_default.imports(element, context))
46404
+ imports: (element, context) => imports91.concat(getPartialImports(element, context))
46411
46405
  };
46412
46406
 
46413
46407
  // src/transpile/components/data/table/table-row-action.transformer.ts
46414
- var imports101 = [
46408
+ var imports92 = [
46415
46409
  {
46416
46410
  name: "WmTableRowAction",
46417
46411
  from: "@wavemaker-ai/react-runtime/components/data/table/table-row-action"
@@ -46437,11 +46431,11 @@ var table_row_action_transformer_default = {
46437
46431
  return `<WmTableRowAction listener={fragment} widgettype="${widgetType}" ${onClickExpr} ${transformAttrs(element, context)}`;
46438
46432
  },
46439
46433
  post: (element, context) => "/>",
46440
- imports: (element, context) => imports101
46434
+ imports: (element, context) => imports92
46441
46435
  };
46442
46436
 
46443
46437
  // src/transpile/components/data/table/table-action.transformer.ts
46444
- var imports102 = [
46438
+ var imports93 = [
46445
46439
  { name: "WmTableAction", from: "@wavemaker-ai/react-runtime/components/data/table/table-action" }
46446
46440
  ];
46447
46441
  var table_action_transformer_default = {
@@ -46462,11 +46456,11 @@ var table_action_transformer_default = {
46462
46456
  return `<WmTableAction listener={fragment} ${onClickExpr} ${transformAttrs(element, context)}`;
46463
46457
  },
46464
46458
  post: (element, context) => "/>",
46465
- imports: (element, context) => imports102
46459
+ imports: (element, context) => imports93
46466
46460
  };
46467
46461
 
46468
46462
  // src/transpile/components/data/table/table-group.transformer.ts
46469
- var imports103 = [
46463
+ var imports94 = [
46470
46464
  {
46471
46465
  name: "WmTableGroup",
46472
46466
  from: "@wavemaker-ai/react-runtime/components/data/table/table-group"
@@ -46475,11 +46469,11 @@ var imports103 = [
46475
46469
  var table_group_transformer_default = {
46476
46470
  pre: (element, context) => `<WmTableGroup ${transformAttrs(element, context)}>`,
46477
46471
  post: (element, context) => "</WmTableGroup>",
46478
- imports: (element, context) => imports103
46472
+ imports: (element, context) => imports94
46479
46473
  };
46480
46474
 
46481
46475
  // src/transpile/components/data/table/live-table.transformer.ts
46482
- var imports104 = [
46476
+ var imports95 = [
46483
46477
  { name: "WmLiveTable", from: "@wavemaker-ai/react-runtime/components/data/table/live-table" }
46484
46478
  ];
46485
46479
  var live_table_transformer_default = {
@@ -46487,11 +46481,11 @@ var live_table_transformer_default = {
46487
46481
  return `<WmLiveTable listener={fragment} ${transformAttrs(element, context)}>`;
46488
46482
  },
46489
46483
  post: (element, context) => "</WmLiveTable>",
46490
- imports: (element, context) => imports104
46484
+ imports: (element, context) => imports95
46491
46485
  };
46492
46486
 
46493
46487
  // src/transpile/components/data/table/table.transformer.ts
46494
- var imports105 = [
46488
+ var imports96 = [
46495
46489
  { name: "WmTable", from: "@wavemaker-ai/react-runtime/components/data/table" }
46496
46490
  ];
46497
46491
  var table_transformer_default = {
@@ -46499,8 +46493,10 @@ var table_transformer_default = {
46499
46493
  const datasetAttr = element.getAttribute("dataset");
46500
46494
  const datasourceAttr = element.getAttribute("datasource");
46501
46495
  const binddatasetAttr = element.getAttribute("binddataset");
46502
- if (datasetAttr && datasetAttr.startsWith("bind:fragment.Variables.") && datasetAttr.endsWith(".dataSet")) {
46503
- const match = datasetAttr.match(/^bind:fragment\.Variables\.([^.]+)\.dataSet$/);
46496
+ if (datasetAttr && datasetAttr.startsWith("bind:fragment.Variables.") && datasetAttr.includes(".dataSet")) {
46497
+ const match = datasetAttr.match(
46498
+ /^bind:fragment\.Variables\.([^.]+)\.dataSet(?=[^A-Za-z0-9_]|$)/
46499
+ );
46504
46500
  if (match) {
46505
46501
  const variableName = match[1];
46506
46502
  context.set("tableDatasetVariableName", variableName);
@@ -46538,67 +46534,32 @@ var table_transformer_default = {
46538
46534
  context.set("tableDatasetVariableName", void 0);
46539
46535
  return "</WmTable>";
46540
46536
  },
46541
- imports: (element, context) => imports105
46537
+ imports: (element, context) => imports96
46542
46538
  };
46543
46539
 
46544
46540
  // src/transpile/components/data/livefilter.transformer.ts
46545
- var import_lodash10 = __toESM(require_lodash());
46546
- var imports106 = [
46541
+ var imports97 = [
46547
46542
  { name: "WmLiveFilter", from: "@wavemaker-ai/react-runtime/components/data/live-filter" }
46548
46543
  ];
46549
- var pluckFormActionNodes3 = (element, actions = []) => {
46550
- if (element.childNodes.length) {
46551
- (0, import_lodash10.forEach)(element.childNodes, (n) => {
46552
- if (isHTMLElement(n) && n.rawTagName === "wm-form") {
46553
- return;
46554
- } else if (isHTMLElement(n) && (n.rawTagName === "wm-form-action" || n.rawTagName === "wm-filter-action")) {
46555
- actions.push(n);
46556
- n.remove();
46557
- } else {
46558
- pluckFormActionNodes3(n, actions);
46559
- }
46560
- });
46561
- return actions;
46562
- }
46563
- };
46564
- var setFormActions3 = (element, context) => {
46565
- const formActions = pluckFormActionNodes3(element);
46566
- const formFooter = parse5(`<wm-form-footer></wm-form-footer>`).firstChild;
46567
- formActions.forEach((formAction) => {
46568
- formAction.setAttribute("formKey", element.attrs["name"]);
46569
- formFooter.appendChild(formAction);
46570
- });
46571
- const container = parse5(`<wm-container class="form-elements"></wm-container>`).firstChild;
46572
- const formBody = parse5(`<wm-form-body></wm-form-body>`).firstChild;
46573
- formBody.childNodes.push(container);
46574
- container.childNodes = element.childNodes;
46575
- element.childNodes = [formBody];
46576
- if (formActions.length) {
46577
- formBody.childNodes.push(formFooter);
46578
- }
46579
- };
46544
+ var FILTER_ACTION_TAGS = ["wm-form-action", "wm-filter-action"];
46580
46545
  var livefilter_transformer_default = {
46581
46546
  pre: (element, context) => {
46582
46547
  var _a;
46583
- setFormActions3(element);
46548
+ setFormActions2(element, context, FILTER_ACTION_TAGS);
46584
46549
  const dataSource = (_a = element.getAttribute("dataset")) == null ? void 0 : _a.split(".")[2];
46585
46550
  return `<WmLiveFilter listener={fragment} dataSource="${dataSource}" ${transformAttrs(element, context)} >`;
46586
46551
  },
46587
46552
  post: (element, context) => `</WmLiveFilter>`,
46588
- imports: (element, context) => imports106
46553
+ imports: (element, context) => imports97
46589
46554
  };
46590
46555
 
46591
46556
  // src/transpile/components/data/live-filter-field.transformer.ts
46592
- var imports107 = [
46557
+ var imports98 = [
46593
46558
  {
46594
46559
  name: "WmLiveFilterField",
46595
46560
  from: "@wavemaker-ai/react-runtime/components/data/form/form-field"
46596
46561
  }
46597
46562
  ];
46598
- var getAttribute2 = (element, attrName) => {
46599
- const value = element.getAttribute(attrName);
46600
- return value == null ? void 0 : value.replace(/"/g, "&quot;");
46601
- };
46602
46563
  var getStyleProps = (element) => {
46603
46564
  const attributes = [
46604
46565
  "fontsize",
@@ -46610,7 +46571,7 @@ var getStyleProps = (element) => {
46610
46571
  "fontstyle"
46611
46572
  ];
46612
46573
  return attributes.reduce((propsString, attr) => {
46613
- const value = getAttribute2(element, attr);
46574
+ const value = getAttribute(element, attr);
46614
46575
  if (value !== void 0) {
46615
46576
  propsString += `${attr}=${value} `;
46616
46577
  }
@@ -46618,14 +46579,14 @@ var getStyleProps = (element) => {
46618
46579
  }, "");
46619
46580
  };
46620
46581
  var extractField2 = (element, context, filterElement) => {
46621
- const widgetType = getAttribute2(element, "widget") || "text";
46622
- const widgetName = getAttribute2(element, "key") || getAttribute2(element, "name") || "text_filterWidget";
46582
+ const widgetType = getAttribute(element, "widget") || "text";
46583
+ const widgetName = getAttribute(element, "key") || getAttribute(element, "name") || "text_filterWidget";
46623
46584
  const isRange = element.getAttribute("is-range") === "true";
46624
46585
  const result = getFilterWidgetTemplate(
46625
46586
  widgetType,
46626
46587
  widgetName,
46627
46588
  element,
46628
- getAttribute2(filterElement, "filterdata"),
46589
+ getAttribute(filterElement, "filterdata"),
46629
46590
  false
46630
46591
  );
46631
46592
  if (widgetType === "number" && isRange) {
@@ -46633,7 +46594,7 @@ var extractField2 = (element, context, filterElement) => {
46633
46594
  widgetType,
46634
46595
  widgetName,
46635
46596
  element,
46636
- getAttribute2(filterElement, "filterdata"),
46597
+ getAttribute(filterElement, "filterdata"),
46637
46598
  true
46638
46599
  );
46639
46600
  return {
@@ -46646,31 +46607,31 @@ var extractField2 = (element, context, filterElement) => {
46646
46607
  var getFilterWidgetTemplate = (widgetType, widgetName, element, filterDataVariable, isMaxWidget = false) => {
46647
46608
  var _a, _b;
46648
46609
  widgetName = widgetName.replace(".", "_");
46649
- const inputName = (_b = (_a = getAttribute2(element, "key")) == null ? void 0 : _a.split(".")) == null ? void 0 : _b.at(-1);
46650
- var labelMarkup = !isMaxWidget && getAttribute2(element, "displayname") ? `<wm-label
46610
+ const inputName = (_b = (_a = getAttribute(element, "key")) == null ? void 0 : _a.split(".")) == null ? void 0 : _b.at(-1);
46611
+ var labelMarkup = !isMaxWidget && getAttribute(element, "displayname") ? `<wm-label
46651
46612
  required="bind:$formField.required"
46652
46613
  htmlFor="${inputName}"
46653
46614
  caption="bind:$formField.displayname"
46654
46615
  class="app-label control-label filterfield-label"
46655
46616
  conditionalclass="bind:$formField.captionCls + ' ' + $formField.invalidCls"
46656
46617
  name="${widgetName}_filterLabel"></wm-label>` : "";
46657
- const onFocus = getAttribute2(element, "on-focus");
46618
+ const onFocus = getAttribute(element, "on-focus");
46658
46619
  if (onFocus) {
46659
46620
  element.removeAttribute("on-focus");
46660
46621
  }
46661
- const onBlur = getAttribute2(element, "on-blur");
46622
+ const onBlur = getAttribute(element, "on-blur");
46662
46623
  if (onBlur) {
46663
46624
  element.removeAttribute("on-blur");
46664
46625
  }
46665
- const onTap = getAttribute2(element, "on-tap");
46626
+ const onTap = getAttribute(element, "on-tap");
46666
46627
  if (onTap) {
46667
46628
  element.removeAttribute("on-tap");
46668
46629
  }
46669
- const placeholder = getAttribute2(element, "placeholder");
46630
+ const placeholder = getAttribute(element, "placeholder");
46670
46631
  if (placeholder) {
46671
46632
  element.removeAttribute("placeholder");
46672
46633
  }
46673
- const filterfieldName = getAttribute2(element, "name");
46634
+ const filterfieldName = getAttribute(element, "name");
46674
46635
  const widgetNameSuffix = isMaxWidget ? "_maxWidget" : "";
46675
46636
  const datavalueBinding = isMaxWidget ? "bind:$formField.maxDataValue || $formField.maxdefaultvalue" : "bind:$formField.datavalue || $formField.defaultvalue";
46676
46637
  const isMaxWidgetProp = isMaxWidget ? "isMaxWidget={true}" : "";
@@ -46696,6 +46657,7 @@ var getFilterWidgetTemplate = (widgetType, widgetName, element, filterDataVariab
46696
46657
  };
46697
46658
  };
46698
46659
  var getWidgetMarkup2 = (widgetType, widgetName, commonFields, element) => {
46660
+ var _a, _b, _c, _d, _e, _f, _g, _h;
46699
46661
  let tmpl = "";
46700
46662
  const getDisplayExpr = element.getAttribute("displayexpression") || element.getAttribute("displaylabel");
46701
46663
  const displayExp = getDisplayExpr ? `displayexpression='${getDisplayExpr.replace(/'/g, "&apos;")}'` : "";
@@ -46708,20 +46670,20 @@ var getWidgetMarkup2 = (widgetType, widgetName, commonFields, element) => {
46708
46670
  currentNode = currentNode.parentNode;
46709
46671
  }
46710
46672
  const isFloatingFilter = currentNode.getAttribute("captionposition") === "floating";
46711
- const floatinglabel = filterFieldTags.includes(widgetType) && isFloatingFilter ? `floatinglabel='${element.getAttribute("displayname")}'` : "";
46673
+ const floatinglabel = filterFieldTags.includes(widgetType) && isFloatingFilter ? `floatinglabel="${(_a = element.getAttribute("displayname")) == null ? void 0 : _a.replace(/"/g, "&quot;")}"` : "";
46712
46674
  const dateTimeDialogTags = ["date", "time", "datetime"];
46713
46675
  const isDateTimeTag = dateTimeDialogTags.includes(widgetType);
46714
- const dateheadertitle = isDateTimeTag && element.getAttribute("dateheadertitle") ? `dateheadertitle='${element.getAttribute("dateheadertitle")}'` : "";
46715
- const dateconfirmationtitle = isDateTimeTag && element.getAttribute("dateconfirmationtitle") ? `dateconfirmationtitle='${element.getAttribute("dateconfirmationtitle")}'` : "";
46716
- const datecanceltitle = isDateTimeTag && element.getAttribute("datecanceltitle") ? `datecanceltitle='${element.getAttribute("datecanceltitle")}'` : "";
46717
- const timeheadertitle = isDateTimeTag && element.getAttribute("timeheadertitle") ? `timeheadertitle='${element.getAttribute("timeheadertitle")}'` : "";
46718
- const timeconfirmationtitle = isDateTimeTag && element.getAttribute("timeconfirmationtitle") ? `timeconfirmationtitle='${element.getAttribute("timeconfirmationtitle")}'` : "";
46719
- const timecanceltitle = isDateTimeTag && element.getAttribute("timecanceltitle") ? `timecanceltitle='${element.getAttribute("timecanceltitle")}'` : "";
46720
- const outputformat = element.getAttribute("outputformat") ? `outputformat='${element.getAttribute("outputformat")}'` : ``;
46676
+ const dateheadertitle = isDateTimeTag && element.getAttribute("dateheadertitle") ? `dateheadertitle="${(_b = element.getAttribute("dateheadertitle")) == null ? void 0 : _b.replace(/"/g, "&quot;")}"` : "";
46677
+ const dateconfirmationtitle = isDateTimeTag && element.getAttribute("dateconfirmationtitle") ? `dateconfirmationtitle="${(_c = element.getAttribute("dateconfirmationtitle")) == null ? void 0 : _c.replace(/"/g, "&quot;")}"` : "";
46678
+ const datecanceltitle = isDateTimeTag && element.getAttribute("datecanceltitle") ? `datecanceltitle="${(_d = element.getAttribute("datecanceltitle")) == null ? void 0 : _d.replace(/"/g, "&quot;")}"` : "";
46679
+ const timeheadertitle = isDateTimeTag && element.getAttribute("timeheadertitle") ? `timeheadertitle="${(_e = element.getAttribute("timeheadertitle")) == null ? void 0 : _e.replace(/"/g, "&quot;")}"` : "";
46680
+ const timeconfirmationtitle = isDateTimeTag && element.getAttribute("timeconfirmationtitle") ? `timeconfirmationtitle="${(_f = element.getAttribute("timeconfirmationtitle")) == null ? void 0 : _f.replace(/"/g, "&quot;")}"` : "";
46681
+ const timecanceltitle = isDateTimeTag && element.getAttribute("timecanceltitle") ? `timecanceltitle="${(_g = element.getAttribute("timecanceltitle")) == null ? void 0 : _g.replace(/"/g, "&quot;")}"` : "";
46682
+ const outputformat = element.getAttribute("outputformat") ? `outputformat="${(_h = element.getAttribute("outputformat")) == null ? void 0 : _h.replace(/"/g, "&quot;")}"` : ``;
46721
46683
  switch (widgetType) {
46722
46684
  case "text":
46723
46685
  case "password":
46724
- let inputtype = widgetType === "password" ? "password" : getAttribute2(element, "inputtype");
46686
+ let inputtype = widgetType === "password" ? "password" : getAttribute(element, "inputtype");
46725
46687
  inputtype = inputtype ? `type=${inputtype}` : "";
46726
46688
  tmpl = `<wm-text ${inputtype} ${commonFields}
46727
46689
  updateon="bind:$formField.updateon"
@@ -46864,10 +46826,10 @@ var getWidgetMarkup2 = (widgetType, widgetName, commonFields, element) => {
46864
46826
  ></wm-slider>`;
46865
46827
  break;
46866
46828
  case "rating":
46867
- let showcaptions = getAttribute2(element, "showcaptions");
46829
+ let showcaptions = getAttribute(element, "showcaptions");
46868
46830
  showcaptions = showcaptions ? `showcaptions="bind:$formField.showcaptions"` : "";
46869
46831
  tmpl += `<wm-rating ${commonFields} ${displayExp}
46870
- ${getAttribute2(element, "dataset") ? 'dataset="bind:$formField.dataset"' : ""}
46832
+ ${getAttribute(element, "dataset") ? 'dataset="bind:$formField.dataset"' : ""}
46871
46833
  displayfield="bind:$formField.displayfield || 'value'"
46872
46834
  datafield="bind:$formField.datafield || 'key'"
46873
46835
  ${showcaptions}
@@ -46876,16 +46838,16 @@ var getWidgetMarkup2 = (widgetType, widgetName, commonFields, element) => {
46876
46838
  break;
46877
46839
  case "fileupload":
46878
46840
  case "file":
46879
- const onSelect = getAttribute2(element, "on-select");
46880
- const onDelete = getAttribute2(element, "on-delete");
46841
+ const onSelect = getAttribute(element, "on-select");
46842
+ const onDelete = getAttribute(element, "on-delete");
46881
46843
  tmpl = `<wm-fileupload ${commonFields}
46882
46844
  ${onSelect ? 'on-select="onSelect"' : ""}
46883
46845
  ${onDelete ? 'on-delete="onDelete"' : ""}
46884
46846
  ></wm-fileupload>`;
46885
46847
  break;
46886
46848
  case "upload":
46887
- const onSelectUpload = getAttribute2(element, "on-select");
46888
- const onDeleteUpload = getAttribute2(element, "on-delete");
46849
+ const onSelectUpload = getAttribute(element, "on-select");
46850
+ const onDeleteUpload = getAttribute(element, "on-delete");
46889
46851
  tmpl = `<wm-upload ${commonFields}
46890
46852
  ${onSelectUpload ? 'on-select="onSelect"' : ""}
46891
46853
  ${onDeleteUpload ? 'on-delete="onDelete"' : ""}
@@ -46906,7 +46868,7 @@ var getWidgetMarkup2 = (widgetType, widgetName, commonFields, element) => {
46906
46868
  };
46907
46869
  var live_filter_field_transformer_default = {
46908
46870
  pre: (element, context) => {
46909
- const widgetType = getAttribute2(element, "widget") || "text" /* TEXT */;
46871
+ const widgetType = getAttribute(element, "widget") || "text" /* TEXT */;
46910
46872
  let currentNode = element.parentNode;
46911
46873
  while (currentNode) {
46912
46874
  if (currentNode.rawTagName === "wm-livefilter" || currentNode.getAttribute("type") === "dynamic") {
@@ -46989,12 +46951,12 @@ var live_filter_field_transformer_default = {
46989
46951
  return `<WmLiveFilterField ${filterScope || ""} field="true" ${fieldcolumn ? `fieldcol="${fieldcolumn}"` : ""} ${transformAttrs(element, context)} renderFormFields={($formField) => (<>`;
46990
46952
  },
46991
46953
  post: (element, context) => "</>)}></WmLiveFilterField>",
46992
- imports: (element, context) => imports107,
46954
+ imports: (element, context) => imports98,
46993
46955
  createComponent: (element, context) => createComponent2(element, context)
46994
46956
  };
46995
46957
 
46996
46958
  // src/transpile/components/data/form/dynamic-fields.transformer.ts
46997
- var imports108 = [
46959
+ var imports99 = [
46998
46960
  {
46999
46961
  name: "WmDynamicFields",
47000
46962
  from: "@wavemaker-ai/react-runtime/components/data/form/dynamic-fields"
@@ -47011,11 +46973,11 @@ var dynamic_fields_transformer_default = {
47011
46973
  return `<WmDynamicFields listener={fragment} ${beforeRender ? `onBeforeRender={${beforeRender}}` : ""} ${transformAttrs(element, context)}`;
47012
46974
  },
47013
46975
  post: (element, context) => "/>",
47014
- imports: (element, context) => imports108
46976
+ imports: (element, context) => imports99
47015
46977
  };
47016
46978
 
47017
46979
  // src/transpile/components/container/linear-layout/linear-layout.ts
47018
- var imports109 = [
46980
+ var imports100 = [
47019
46981
  {
47020
46982
  name: "WmLinearlayout",
47021
46983
  from: "@wavemaker-ai/react-runtime/components/container/linear-layout"
@@ -47024,11 +46986,11 @@ var imports109 = [
47024
46986
  var linear_layout_default = {
47025
46987
  pre: (element, context) => `<WmLinearlayout iswidget="false" ${transformAttrs(element, context)}>`,
47026
46988
  post: (element, context) => "</WmLinearlayout>",
47027
- imports: (element, context) => imports109
46989
+ imports: (element, context) => imports100
47028
46990
  };
47029
46991
 
47030
46992
  // src/transpile/components/container/linear-layout/linear-layout-item.ts
47031
- var imports110 = [
46993
+ var imports101 = [
47032
46994
  {
47033
46995
  name: "WmLinearlayoutItem",
47034
46996
  from: "@wavemaker-ai/react-runtime/components/container/linear-layout/linear-layout-item"
@@ -47037,7 +46999,7 @@ var imports110 = [
47037
46999
  var linear_layout_item_default = {
47038
47000
  pre: (element, context) => `<WmLinearlayoutItem iswidget="false" ${transformAttrs(element, context)}>`,
47039
47001
  post: (element, context) => "</WmLinearlayoutItem>",
47040
- imports: (element, context) => imports110
47002
+ imports: (element, context) => imports101
47041
47003
  };
47042
47004
 
47043
47005
  // src/transpile/components/wmx-component/wmx-component.transformer.ts
@@ -47194,17 +47156,17 @@ function ensureRegistered() {
47194
47156
  }
47195
47157
  function transpileVariableDefinitions(variables, appUrl, scope) {
47196
47158
  ensureRegistered();
47197
- const imports111 = [];
47198
- const transformed = Object.values(variables != null ? variables : {}).map((v) => variable_transformer_default(v, scope, appUrl, imports111)).filter((v) => !!v);
47159
+ const imports102 = [];
47160
+ const transformed = Object.values(variables != null ? variables : {}).map((v) => variable_transformer_default(v, scope, appUrl, imports102)).filter((v) => !!v);
47199
47161
  return {
47200
47162
  variables: transformed.filter((v) => v.group === "variable"),
47201
47163
  actions: transformed.filter((v) => v.group === "action"),
47202
- imports: imports111
47164
+ imports: imports102
47203
47165
  };
47204
47166
  }
47205
47167
 
47206
47168
  // src/transpile/serialize-variables.ts
47207
- var import_lodash11 = __toESM(require_lodash());
47169
+ var import_lodash10 = __toESM(require_lodash());
47208
47170
  var isEvalExpression = (val) => /^[^\.]+\.eval\(/.test(val);
47209
47171
  var processMapMarker = (marker) => {
47210
47172
  const match = marker.match(/^__MAP__(.+?)__STRUCTURE__(.+?)__PARENT__(.+?)__ENDMAP__$/);
@@ -47242,7 +47204,7 @@ var processMapMarker = (marker) => {
47242
47204
  parts.push(`"${key}":${formatValue(overrideValue)}`);
47243
47205
  }
47244
47206
  } else {
47245
- if ((0, import_lodash11.isString)(overrideValue) && isEvalExpression(overrideValue)) {
47207
+ if ((0, import_lodash10.isString)(overrideValue) && isEvalExpression(overrideValue)) {
47246
47208
  const unwrapMatch = overrideValue.match(/\.eval\(\(\)\s*=>\s*(.+)\)$/);
47247
47209
  if (unwrapMatch) {
47248
47210
  parts.push(`"${key}":${unwrapMatch[1]}`);
@@ -47272,7 +47234,7 @@ var processMapMarker = (marker) => {
47272
47234
  return `${parentValue}.${arrayProp}.map(item=>(${mapBody}))`;
47273
47235
  };
47274
47236
  var formatValue = (val) => {
47275
- if ((0, import_lodash11.isString)(val)) {
47237
+ if ((0, import_lodash10.isString)(val)) {
47276
47238
  if (val.startsWith("__MAP__")) {
47277
47239
  return processMapMarker(val);
47278
47240
  }
@@ -47280,7 +47242,7 @@ var formatValue = (val) => {
47280
47242
  return val;
47281
47243
  }
47282
47244
  return JSON.stringify(val);
47283
- } else if ((0, import_lodash11.isNumber)(val) || val === true || val === false || val === null) {
47245
+ } else if ((0, import_lodash10.isNumber)(val) || val === true || val === false || val === null) {
47284
47246
  return String(val);
47285
47247
  } else if (Array.isArray(val)) {
47286
47248
  return JSON.stringify(val);
@@ -47330,10 +47292,10 @@ var stringifyObject = (obj) => {
47330
47292
  parts.push(`"${key}":${scopeVar}.eval(() => ({${body}}))`);
47331
47293
  } else {
47332
47294
  const baseFormatted = formatValue(baseVal);
47333
- const baseSpread = (0, import_lodash11.isString)(baseVal) && (baseVal.trim().startsWith("{") || baseVal.trim().startsWith("[")) ? `JSON.parse(${baseFormatted})` : baseFormatted;
47295
+ const baseSpread = (0, import_lodash10.isString)(baseVal) && (baseVal.trim().startsWith("{") || baseVal.trim().startsWith("[")) ? `JSON.parse(${baseFormatted})` : baseFormatted;
47334
47296
  let hasMapMarker = false;
47335
47297
  for (const nVal of Object.values(nestedProps)) {
47336
- if ((0, import_lodash11.isString)(nVal) && nVal.startsWith("__MAP__")) {
47298
+ if ((0, import_lodash10.isString)(nVal) && nVal.startsWith("__MAP__")) {
47337
47299
  hasMapMarker = true;
47338
47300
  break;
47339
47301
  }
@@ -47341,7 +47303,7 @@ var stringifyObject = (obj) => {
47341
47303
  if (hasMapMarker) {
47342
47304
  const processedProps = [`...${baseSpread}`];
47343
47305
  for (const [nKey, nVal] of Object.entries(nestedProps)) {
47344
- if ((0, import_lodash11.isString)(nVal) && nVal.startsWith("__MAP__")) {
47306
+ if ((0, import_lodash10.isString)(nVal) && nVal.startsWith("__MAP__")) {
47345
47307
  processedProps.push(`"${nKey}":${processMapMarker(nVal)}`);
47346
47308
  } else {
47347
47309
  processedProps.push(`"${nKey}":${formatValue(nVal)}`);
@@ -47444,12 +47406,12 @@ var stringifyModelParams = (input, scope) => {
47444
47406
  var quoteIfString = (arg) => {
47445
47407
  if (arg === "") return `"${arg}"`;
47446
47408
  if (!isNaN(arg) || arg === "true" || arg === "false") return arg;
47447
- if ((0, import_lodash11.isString)(arg) && (isEvalExpression(arg) || arg.trim().startsWith("() =>"))) return arg;
47448
- if ((0, import_lodash11.isString)(arg) && !isEvalExpression(arg)) return JSON.stringify(arg);
47409
+ if ((0, import_lodash10.isString)(arg) && (isEvalExpression(arg) || arg.trim().startsWith("() =>"))) return arg;
47410
+ if ((0, import_lodash10.isString)(arg) && !isEvalExpression(arg)) return JSON.stringify(arg);
47449
47411
  return arg;
47450
47412
  };
47451
47413
  var quoteKeyIfHyphen = (str) => {
47452
- if ((0, import_lodash11.isString)(str) && str.includes("-")) return JSON.stringify(str);
47414
+ if ((0, import_lodash10.isString)(str) && str.includes("-")) return JSON.stringify(str);
47453
47415
  return str;
47454
47416
  };
47455
47417
 
@@ -47576,6 +47538,9 @@ function serializeVariableEntry(v, scope, isPrefabApp, isPrefabScope, prefabName
47576
47538
  lines.push(` isStaticParams: ${stringify3(v.isStaticParams)},`);
47577
47539
  lines.push(` saveInPhonegap: ${v.saveInPhonegap},`);
47578
47540
  lines.push(` crudOperationId: '${v.crudOperationId}',`);
47541
+ if (v._id) {
47542
+ lines.push(` _id: '${v._id}',`);
47543
+ }
47579
47544
  lines.push(` transformationRequired: ${v.transformationRequired},`);
47580
47545
  if (isPrefabScope) {
47581
47546
  lines.push(` baseUrl: ${scope}.baseUrl + '/prefabs/' + ${scope}.prefabname,`);