@wavemaker-ai/react-codegen 1.0.0-rc.312 → 1.0.0-rc.317

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 (85) hide show
  1. package/dist/transpiler/index.mjs +994 -1020
  2. package/dist/transpiler/index.mjs.map +1 -1
  3. package/package-lock.json +125 -125
  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 +5 -2
  74. package/src/transpile/transform-markup.js.map +1 -1
  75. package/src/transpile/transpile.js +265 -134
  76. package/src/transpile/transpile.js.map +1 -1
  77. package/src/transpile/widget-inline-style-processor.js +39 -1
  78. package/src/transpile/widget-inline-style-processor.js.map +1 -1
  79. package/src/utils/grouping-util.js +41 -13
  80. package/src/utils/grouping-util.js.map +1 -1
  81. package/src/variables/variable.transformer.js +64 -18
  82. package/src/variables/variable.transformer.js.map +1 -1
  83. package/templates/component/layout.hbs +1 -0
  84. package/templates/project/package.json +4 -4
  85. 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;
@@ -41231,6 +41292,33 @@ function parseDimensionValue(value, element) {
41231
41292
  return value;
41232
41293
  }
41233
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
+ }
41234
41322
  function getBaseAlignment(key) {
41235
41323
  return ALIGNMENT_MATRIX[key] || { justifyContent: "flex-start", alignItems: "flex-start" };
41236
41324
  }
@@ -41491,7 +41579,7 @@ function getStaticLayoutPropsFromElement(element, dynamicGroups) {
41491
41579
  }
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
  }
@@ -41782,6 +41876,88 @@ var AutolayoutCodegen = class {
41782
41876
  }
41783
41877
  };
41784
41878
 
41879
+ // src/transpile/components/data/table/utils.ts
41880
+ var CUSTOM_PIPE_REGEX = /(custom(\s*:))/;
41881
+ function checkIsCustomPipeExpression(exp) {
41882
+ return CUSTOM_PIPE_REGEX.test(exp);
41883
+ }
41884
+ function findNearestElement(element, tagName) {
41885
+ var _a, _b;
41886
+ let current = element.parentNode;
41887
+ const target = tagName.toLowerCase();
41888
+ while (current) {
41889
+ if (((_a = current.tagName) == null ? void 0 : _a.toLowerCase()) === target) {
41890
+ return (_b = current.getAttribute("name")) != null ? _b : void 0;
41891
+ }
41892
+ current = current.parentNode;
41893
+ }
41894
+ return void 0;
41895
+ }
41896
+ function convertActionToClickHandler(actionAttr, tableName, liveTableName) {
41897
+ const statements = actionAttr.split(";").map((s) => s.trim()).filter(Boolean);
41898
+ const converted = statements.map((statement) => {
41899
+ statement = convertHyphenatedPropsToBracketNotation(statement);
41900
+ let cleaned = statement.replace(/\$event/g, "event");
41901
+ if (cleaned.startsWith("event.")) return cleaned;
41902
+ if (cleaned.startsWith("Actions") || cleaned.startsWith("Variables") || cleaned.startsWith("Widgets")) {
41903
+ return `fragment.${cleaned}`;
41904
+ }
41905
+ if (cleaned.includes("(")) {
41906
+ const funcName = cleaned.split("(")[0];
41907
+ if (tableName && funcName.startsWith(`${tableName}_`)) {
41908
+ return `fragment.${cleaned}`;
41909
+ }
41910
+ if (cleaned.includes("(event)")) {
41911
+ cleaned = cleaned.replace("(event)", "(event, widget, row)");
41912
+ }
41913
+ if (liveTableName && (funcName.endsWith("addNewRow") || funcName.endsWith("editRow"))) {
41914
+ return `fragment.Widgets.${liveTableName}.${cleaned}`;
41915
+ }
41916
+ return tableName ? `fragment.Widgets.${tableName}.${cleaned}` : `fragment.${cleaned}`;
41917
+ }
41918
+ return `fragment.${cleaned}`;
41919
+ });
41920
+ return `onClick={(event, widget, row) => {
41921
+ ${converted.join("\n ")}
41922
+ }}`;
41923
+ }
41924
+ function transformTableColumnClassExpression(expression) {
41925
+ if (!expression) return "";
41926
+ let transformed = expression.replace(/fragment\??\.row/g, "rowData");
41927
+ transformed = transformed.replace(/\brow\./g, "rowData.");
41928
+ transformed = transformed.replace(/\brow\[/g, "rowData[");
41929
+ transformed = addOptionalChaining(transformed);
41930
+ transformed = transformed.replace(/(\w+)\?\.\s*\(/g, "$1(");
41931
+ transformed = transformed.replace(/"([^"]*)"/g, "'$1'");
41932
+ return transformed;
41933
+ }
41934
+ function getFormatCellExpression(element, context) {
41935
+ const binding = element.getAttribute("binding");
41936
+ if (!binding || binding === "rowOperations") {
41937
+ return null;
41938
+ }
41939
+ let formatPattern = element.getAttribute("custompipeformat") || element.getAttribute("formatpattern");
41940
+ if (!formatPattern || formatPattern === "None") {
41941
+ return null;
41942
+ }
41943
+ const columnValue = `row.getProperty('${binding}')`;
41944
+ let pipeExpression = "";
41945
+ if (checkIsCustomPipeExpression(formatPattern)) {
41946
+ pipeExpression = `${columnValue} | ${formatPattern} : row`;
41947
+ }
41948
+ if (!pipeExpression) {
41949
+ return null;
41950
+ }
41951
+ let transformed = bind_ex_transformer_default(pipeExpression, "fragment", "attr");
41952
+ transformed = transformed.replace(/fragment\??\.row/g, "rowData");
41953
+ transformed = transformed.replace(/\brow\./g, "rowData.");
41954
+ transformed = transformed.replace(/\brow\b(?![a-zA-Z_$0-9])/g, "rowData");
41955
+ transformed = resolveFormatContext(transformed, context);
41956
+ transformed = addOptionalChaining(transformed);
41957
+ transformed = transformed.replace(/(\w+)\?\.\s*\(/g, "$1(");
41958
+ return transformed;
41959
+ }
41960
+
41785
41961
  // src/transpile/transpile.ts
41786
41962
  var generateRandomString = (length = 10) => Math.random().toString(20).substr(2, length);
41787
41963
  var EVENT_NAME_MAP = {
@@ -41865,7 +42041,7 @@ var TranspilationContext2 = class {
41865
42041
  this.data[key] = value;
41866
42042
  }
41867
42043
  };
41868
- var Transpiler = class {
42044
+ var _Transpiler = class _Transpiler {
41869
42045
  constructor() {
41870
42046
  this.transformers = /* @__PURE__ */ new Map();
41871
42047
  this.componentNamesList = [];
@@ -42217,8 +42393,99 @@ var Transpiler = class {
42217
42393
  className: addOptionalChaining(classes)
42218
42394
  };
42219
42395
  }
42396
+ // Parse arguments properly, handling commas inside object literals and arrays
42397
+ parseArguments(argString) {
42398
+ const args = [];
42399
+ let currentArg = "";
42400
+ let braceCount = 0;
42401
+ let bracketCount = 0;
42402
+ for (let i = 0; i < argString.length; i++) {
42403
+ const char = argString[i];
42404
+ if (char === "{") braceCount++;
42405
+ else if (char === "}") braceCount--;
42406
+ else if (char === "[") bracketCount++;
42407
+ else if (char === "]") bracketCount--;
42408
+ if (char === "," && braceCount === 0 && bracketCount === 0) {
42409
+ if (currentArg.trim()) {
42410
+ args.push(currentArg.trim());
42411
+ }
42412
+ currentArg = "";
42413
+ continue;
42414
+ }
42415
+ currentArg += char;
42416
+ }
42417
+ if (currentArg.trim()) {
42418
+ args.push(currentArg.trim());
42419
+ }
42420
+ return args;
42421
+ }
42422
+ // Droping literal arguments like strings, numbers, booleans, null/undefined
42423
+ isLiteral(s) {
42424
+ const v = s.trim();
42425
+ return /^(['"]).*\1$/.test(v) || /^-?\d+(?:\.\d+)?$/.test(v) || /^(true|false|null|undefined)$/i.test(v);
42426
+ }
42427
+ // Arithmetic/binary expressions (e.g. "0-5", "0+3") are not valid parameter names.
42428
+ // The Angular parser converts unary negatives like -5 into binary (0-5).
42429
+ isArithmeticExpression(s) {
42430
+ const v = s.trim();
42431
+ return /^\d+\s*[-+*/%]\s*\d+/.test(v);
42432
+ }
42433
+ // Check if argument contains a dot (property access), which makes it an expression, not a valid parameter name
42434
+ isPropertyAccess(s) {
42435
+ return s.trim().includes(".");
42436
+ }
42437
+ // Object literals should not be extracted as function parameters
42438
+ isObjectLiteral(s) {
42439
+ const trimmed = s.trim();
42440
+ if (trimmed.startsWith("{") && trimmed.includes(":")) {
42441
+ let braceCount = 0;
42442
+ let inString = false;
42443
+ let stringChar = "";
42444
+ for (let i = 0; i < trimmed.length; i++) {
42445
+ const char = trimmed[i];
42446
+ if ((char === '"' || char === "'") && (i === 0 || trimmed[i - 1] !== "\\")) {
42447
+ if (!inString) {
42448
+ inString = true;
42449
+ stringChar = char;
42450
+ } else if (char === stringChar) {
42451
+ inString = false;
42452
+ }
42453
+ } else if (!inString) {
42454
+ if (char === "{") braceCount++;
42455
+ else if (char === "}") braceCount--;
42456
+ }
42457
+ }
42458
+ return braceCount === 0 && trimmed.endsWith("}");
42459
+ }
42460
+ return false;
42461
+ }
42462
+ // Array literals should not be extracted as function parameters
42463
+ isArrayLiteral(s) {
42464
+ const trimmed = s.trim();
42465
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
42466
+ let bracketCount = 0;
42467
+ let inString = false;
42468
+ let stringChar = "";
42469
+ for (let i = 0; i < trimmed.length; i++) {
42470
+ const char = trimmed[i];
42471
+ if ((char === '"' || char === "'") && (i === 0 || trimmed[i - 1] !== "\\")) {
42472
+ if (!inString) {
42473
+ inString = true;
42474
+ stringChar = char;
42475
+ } else if (char === stringChar) {
42476
+ inString = false;
42477
+ }
42478
+ } else if (!inString) {
42479
+ if (char === "[") bracketCount++;
42480
+ else if (char === "]") bracketCount--;
42481
+ }
42482
+ }
42483
+ return bracketCount === 0;
42484
+ }
42485
+ return false;
42486
+ }
42220
42487
  findArgs(str, context) {
42221
- var _a;
42488
+ var _a, _b;
42222
42489
  let argStr = "";
42223
42490
  let maxSplits = 0;
42224
42491
  (_a = str.match(/\([^;]*\)/g)) == null ? void 0 : _a.forEach((s) => {
@@ -42229,95 +42496,11 @@ var Transpiler = class {
42229
42496
  }
42230
42497
  });
42231
42498
  argStr = argStr.replace(/\(|\)/g, "");
42232
- if (context == null ? void 0 : context.get("isInsideList")) {
42499
+ if ((_b = context == null ? void 0 : context.get) == null ? void 0 : _b.call(context, "isInsideList")) {
42233
42500
  argStr = argStr.split(",").filter((s) => !(0, import_lodash5.includes)(["$item", "currentItemWidgets"], s.trim())).join(",");
42234
42501
  }
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));
42502
+ const parsedArgs = this.parseArguments(argStr);
42503
+ 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
42504
  const usesBareEvent = /\$event\b/.test(str);
42322
42505
  const hasEventParam = args.some((a) => a.trim() === "$event");
42323
42506
  if (usesBareEvent && !hasEventParam) {
@@ -42325,6 +42508,96 @@ var Transpiler = class {
42325
42508
  }
42326
42509
  return `(${args.join(", ")})`;
42327
42510
  }
42511
+ // Parse "($event, widget)" → ["$event", "widget"]; "()" → []
42512
+ parseArrowParamNames(argsStr) {
42513
+ const inner = argsStr.replace(/^\(|\)$/g, "").trim();
42514
+ if (!inner) return [];
42515
+ return inner.split(",").map((s) => s.trim()).filter(Boolean);
42516
+ }
42517
+ // Detect a `;` outside strings/parens/braces/brackets — signals multiple top-level statements
42518
+ hasTopLevelSemicolon(body) {
42519
+ let paren = 0;
42520
+ let brace = 0;
42521
+ let bracket = 0;
42522
+ let inString = false;
42523
+ let stringChar = "";
42524
+ for (let i = 0; i < body.length; i++) {
42525
+ const ch = body[i];
42526
+ if ((ch === '"' || ch === "'") && (i === 0 || body[i - 1] !== "\\")) {
42527
+ if (!inString) {
42528
+ inString = true;
42529
+ stringChar = ch;
42530
+ } else if (ch === stringChar) {
42531
+ inString = false;
42532
+ }
42533
+ continue;
42534
+ }
42535
+ if (inString) continue;
42536
+ if (ch === "(") paren++;
42537
+ else if (ch === ")") paren--;
42538
+ else if (ch === "{") brace++;
42539
+ else if (ch === "}") brace--;
42540
+ else if (ch === "[") bracket++;
42541
+ else if (ch === "]") bracket--;
42542
+ else if (ch === ";" && paren === 0 && brace === 0 && bracket === 0) return true;
42543
+ }
42544
+ return false;
42545
+ }
42546
+ isInstanceBoundFragmentCallee(calleeRef) {
42547
+ return _Transpiler.INSTANCE_BOUND_CALLEE.test(calleeRef);
42548
+ }
42549
+ // Match a body shaped like `fragment(...property chain...)?.(args)` — return callee ref + raw arg list
42550
+ extractFragmentMethodCall(body) {
42551
+ const trimmed = body.trim();
42552
+ if (!trimmed.endsWith(")") || !trimmed.startsWith("fragment")) return null;
42553
+ let depth = 0;
42554
+ let openIdx = -1;
42555
+ for (let i = trimmed.length - 1; i >= 0; i--) {
42556
+ const ch = trimmed[i];
42557
+ if (ch === ")") depth++;
42558
+ else if (ch === "(") {
42559
+ depth--;
42560
+ if (depth === 0) {
42561
+ openIdx = i;
42562
+ break;
42563
+ }
42564
+ }
42565
+ }
42566
+ if (openIdx < 2) return null;
42567
+ if (trimmed.substring(openIdx - 2, openIdx) !== "?.") return null;
42568
+ const calleeRef = trimmed.substring(0, openIdx - 2);
42569
+ if (!_Transpiler.FRAGMENT_CALLEE_REF.test(calleeRef)) return null;
42570
+ const argsStr = trimmed.substring(openIdx + 1, trimmed.length - 1);
42571
+ const callArgs = this.parseArguments(argsStr);
42572
+ return { calleeRef, callArgs };
42573
+ }
42574
+ // Decide if an `on-*` handler body can be emitted as a direct function reference instead of an arrow wrapper.
42575
+ // Eligible when body is a single `fragment?.x?.(...)` call whose args are all simple identifiers already
42576
+ // present in the synthesized arrow parameter list — i.e. nothing references closure-only values like `$item`,
42577
+ // `currentItemWidgetsRef.current`, literals, property-access expressions, or table column `rowData`.
42578
+ //
42579
+ // Additional exclusion: callee paths through `Actions` or `Variables` resolve to runtime instance
42580
+ // methods (NavigationAction.invoke, BaseVariable.invoke, setData, navigate, …) that rely on `this`.
42581
+ // Emitting them as detached refs strips the receiver and breaks runtime + WmAnchor's
42582
+ // `getGoToPageNameFromClickHandler` source-string detection, so always wrap those in an arrow.
42583
+ canUseDirectHandlerReference(body, arrowParams) {
42584
+ const trimmed = body.replace(/;+\s*$/, "").trim();
42585
+ if (!trimmed) return null;
42586
+ if (this.hasTopLevelSemicolon(trimmed)) return null;
42587
+ const parsed = this.extractFragmentMethodCall(trimmed);
42588
+ if (!parsed) return null;
42589
+ if (this.isInstanceBoundFragmentCallee(parsed.calleeRef)) return null;
42590
+ const paramSet = new Set(arrowParams);
42591
+ for (const raw of parsed.callArgs) {
42592
+ const a = raw.trim();
42593
+ if (!a) continue;
42594
+ if (this.isLiteral(a) || this.isArithmeticExpression(a) || this.isObjectLiteral(a) || this.isArrayLiteral(a) || this.isPropertyAccess(a)) {
42595
+ return null;
42596
+ }
42597
+ if (!paramSet.has(a)) return null;
42598
+ }
42599
+ return parsed.calleeRef;
42600
+ }
42328
42601
  quoteAttr(v) {
42329
42602
  return ("" + v).replace(/&/g, "&amp;").replace(/'/g, "&apos;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
42330
42603
  }
@@ -42344,6 +42617,7 @@ var Transpiler = class {
42344
42617
  return attrName.endsWith("url") || attrName.endsWith("src");
42345
42618
  }
42346
42619
  transformAttr(tagName, name, value, context, tx) {
42620
+ var _a, _b, _c;
42347
42621
  if (name === "styles" || name === "style" || name === "className") ; else if (name === "groupby" && value.includes("(")) {
42348
42622
  value = `${this.findArgs(value, context)} => ${value}`;
42349
42623
  value = `{${value}}`;
@@ -42352,16 +42626,23 @@ var Transpiler = class {
42352
42626
  value = value.replace(/item,/g, "$item,");
42353
42627
  value = value.replace(/item\./g, "$item.");
42354
42628
  value = value.replace(/item\)/g, "$item)");
42355
- if (context == null ? void 0 : context.get("isInsideList")) {
42629
+ if ((_a = context == null ? void 0 : context.get) == null ? void 0 : _a.call(context, "isInsideList")) {
42356
42630
  value = value.replace(/;+\s*$/, "").trim();
42357
42631
  value = addFragmentOptionalChaining(value, false);
42358
42632
  }
42359
42633
  const args = this.findArgs(value, context);
42360
- if (context == null ? void 0 : context.get("isInsideTableColumn")) {
42634
+ if ((_b = context == null ? void 0 : context.get) == null ? void 0 : _b.call(context, "isInsideTableColumn")) {
42361
42635
  value = value.replace(/\brow\b/g, "rowData");
42362
42636
  }
42363
- value = `${args} => {${value}}`;
42364
- value = `{${value}}`;
42637
+ const arrowParams = this.parseArrowParamNames(args);
42638
+ const bodyForCheck = value.replace(/;+\s*$/, "").trim();
42639
+ const directRef = this.canUseDirectHandlerReference(bodyForCheck, arrowParams);
42640
+ if (directRef) {
42641
+ value = `{${directRef}}`;
42642
+ } else {
42643
+ value = `${args} => {${value}}`;
42644
+ value = `{${value}}`;
42645
+ }
42365
42646
  } else if (name === "datasource" || name === "deletedatasource") {
42366
42647
  if (value.startsWith("fragment")) {
42367
42648
  value = `{${value}}`;
@@ -42373,7 +42654,8 @@ var Transpiler = class {
42373
42654
  let exp = `${value.substring(5)}`;
42374
42655
  exp = exp.replace("fragment.Page", "fragment");
42375
42656
  const isProgressCircleDatavalue = tagName === "wm-progress-circle" && name === "datavalue";
42376
- exp = modifyExpression(exp);
42657
+ exp = ((_c = context == null ? void 0 : context.get) == null ? void 0 : _c.call(context, "isInsideTableColumn")) ? transformTableColumnClassExpression(exp) : modifyExpression(exp);
42658
+ exp = resolveFormatContext(exp, context);
42377
42659
  exp = this.convertStringBooleanTernary(exp);
42378
42660
  if (!exp) {
42379
42661
  exp = '""';
@@ -42486,9 +42768,18 @@ var Transpiler = class {
42486
42768
  transpiler.transformers.set(tagName, transformer);
42487
42769
  }
42488
42770
  };
42771
+ // Pure property / safe-property / keyed-read chain rooted at `fragment`.
42772
+ // Rejects callee refs that contain intermediate calls (e.g. `fragment.a?.b?.()?.c`),
42773
+ // operators, assignments, whitespace — anything that would change semantics when
42774
+ // evaluated at render time instead of click time.
42775
+ _Transpiler.FRAGMENT_CALLEE_REF = /^fragment(?:\??\.[a-zA-Z_$][\w$]*|(?:\?\.)?\[[^\]]*\])*$/;
42776
+ // Callee paths rooted at runtime instance objects (Actions, Variables) whose methods
42777
+ // (invoke, navigate, setData, …) rely on `this` and must not be emitted as detached refs.
42778
+ _Transpiler.INSTANCE_BOUND_CALLEE = /(?:\?\.|\.)(?:Actions|Variables)(?:\?\.|\.|\[|$)/;
42779
+ var Transpiler = _Transpiler;
42489
42780
  var transpiler = new Transpiler();
42490
42781
  var registerTransformer = transpiler.registerTransformer.bind(transpiler);
42491
- var transpileMarkup = (markup, isPartOfPrefab, splitCode, variables, preview) => {
42782
+ var transpileMarkup = (markup, isPartOfPrefab, splitCode, variables, preview, insideTableColumn) => {
42492
42783
  const parsed = parse5(markup, {
42493
42784
  blockTextElements: {}
42494
42785
  });
@@ -42517,7 +42808,8 @@ var transpileMarkup = (markup, isPartOfPrefab, splitCode, variables, preview) =>
42517
42808
  data: {
42518
42809
  twoWayBindingVariables,
42519
42810
  autolayoutCodegen,
42520
- preview: preview === true
42811
+ preview: preview === true,
42812
+ ...insideTableColumn ? { isInsideTableColumn: true } : {}
42521
42813
  }
42522
42814
  });
42523
42815
  parsed.childNodes.forEach((node) => {
@@ -42581,15 +42873,14 @@ var createExpression = (element, attrName) => {
42581
42873
  displayexpression = displayexpression.replace(/\$item\[fragment.(.*?)\]/g, "$item['$1']");
42582
42874
  displayexpression = displayexpression.replace(/\$item\['(.*?)'\]/g, "_get($item, '$1')");
42583
42875
  displayexpression = displayexpression.replace(/fragment.index/g, "$index");
42584
- if (displayexpression.indexOf("fragment.formatters.") >= 0) {
42585
- displayexpression = displayexpression.replace(new RegExp(FORMAT_CONTEXT, "g"), "$item");
42876
+ if (/formatters/.test(displayexpression)) {
42877
+ displayexpression = displayexpression.split(FORMAT_CONTEXT).join("$item");
42586
42878
  }
42587
42879
  displayexpression = displayexpression.replace(
42588
42880
  /fragment\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g,
42589
42881
  "$item.$1"
42590
42882
  );
42591
- displayexpression = displayexpression.replace(/(?<!\?)\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g, "?.$1");
42592
- displayexpression = displayexpression.replace(/([a-zA-Z0-9_$\]])\[/g, "$1?.[");
42883
+ displayexpression = addOptionalChaining(displayexpression);
42593
42884
  const exp = (0, import_lodash5.includes)(displayexpression, "(") ? `${displayexpression}` : displayexpression;
42594
42885
  if (displayexpression.indexOf("$index") >= 0) {
42595
42886
  return `{($item, $index, $length) => (${exp})}`;
@@ -42677,100 +42968,59 @@ var label_transformer_default = {
42677
42968
  imports: (element, context) => imports2
42678
42969
  };
42679
42970
 
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 = [
42971
+ // src/transpile/components/layout/layout-region-factory.ts
42972
+ var partialContainerImport = [
42733
42973
  {
42734
- name: "WmHeader",
42735
- from: "@wavemaker-ai/react-runtime/components/layout/header"
42974
+ name: "WmPartialContainer",
42975
+ from: "@wavemaker-ai/react-runtime/components/page/partial-container"
42736
42976
  }
42737
42977
  ];
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})}`;
42978
+ function createLayoutRegionTransformer(config) {
42979
+ const { component, importPath, defaultContent, defaultName } = config;
42980
+ const tag = component[0];
42981
+ const componentImports = component.map((name, i) => ({ name, from: importPath[i] }));
42982
+ return {
42983
+ pre: (element, context) => {
42984
+ const content = element.getAttribute("content") || defaultContent;
42985
+ const name = element.getAttribute("name") || defaultName;
42986
+ const isPreview = context.get("preview") === true;
42987
+ if (isPreview) {
42988
+ return `<${tag} ${transformAttrs(element, context)}>
42989
+ <WmPartialContainer content="${content}" isLayout={true} partialName="${name}" listener={fragment} />
42990
+ `;
42746
42991
  }
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)}>
42992
+ return `<${tag} ${transformAttrs(element, context)}>
42752
42993
  <${content.charAt(0).toUpperCase() + content.slice(1)} isLayout={true} partialName="${name}" />
42753
42994
  `;
42754
- },
42755
- post: (element, context) => "</WmHeader>",
42756
- imports: (element, context) => {
42757
- const isPreview = context.get("preview") === true;
42758
- if (isPreview) {
42759
- return imports4;
42995
+ },
42996
+ post: () => `</${tag}>`,
42997
+ imports: (element, context) => {
42998
+ const isPreview = context.get("preview") === true;
42999
+ if (isPreview) {
43000
+ return [...componentImports, ...partialContainerImport];
43001
+ }
43002
+ const content = element.getAttribute("content") || defaultContent;
43003
+ return [
43004
+ ...componentImports,
43005
+ {
43006
+ name: content.charAt(0).toUpperCase() + content.slice(1),
43007
+ from: `@/app/components/${content}/${content}`
43008
+ }
43009
+ ];
42760
43010
  }
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
- };
43011
+ };
43012
+ }
43013
+
43014
+ // src/transpile/components/layout/header.transformer.ts
43015
+ var header_transformer_default = createLayoutRegionTransformer({
43016
+ component: ["WmHeader"],
43017
+ importPath: ["@wavemaker-ai/react-runtime/components/layout/header"],
43018
+ defaultContent: "header",
43019
+ defaultName: "header"
43020
+ });
42771
43021
 
42772
43022
  // src/transpile/components/page/page-content.transformer.ts
42773
- var imports5 = [
43023
+ var imports3 = [
42774
43024
  {
42775
43025
  name: "WmPageContent",
42776
43026
  from: "@wavemaker-ai/react-runtime/components/page/page-content"
@@ -42779,7 +43029,7 @@ var imports5 = [
42779
43029
  var page_content_transformer_default = {
42780
43030
  pre: (element, context) => `<WmPageContent ${transformAttrs(element, context)} >`,
42781
43031
  post: (element, context) => "</WmPageContent>",
42782
- imports: (element, context) => imports5,
43032
+ imports: (element, context) => imports3,
42783
43033
  createComponent: (element, context) => createComponent2(element, context)
42784
43034
  };
42785
43035
 
@@ -42793,7 +43043,7 @@ var PAGE_EVENT_ATTRS = [
42793
43043
  ];
42794
43044
  var PAGE_EVENT_KEYS = ["attach", "detach", "destroy", "orientationchange", "resize"];
42795
43045
  var THREE_ARG_EVENTS = /* @__PURE__ */ new Set(["orientationchange", "resize"]);
42796
- var imports6 = [
43046
+ var imports4 = [
42797
43047
  {
42798
43048
  name: "WmPage",
42799
43049
  from: "@wavemaker-ai/react-runtime/components/page"
@@ -42824,12 +43074,12 @@ var page_transformer_default = {
42824
43074
  return `<WmPage ${transformAttrs(element, context)} >`;
42825
43075
  },
42826
43076
  post: (element, context) => "</WmPage>",
42827
- imports: (element, context) => imports6,
43077
+ imports: (element, context) => imports4,
42828
43078
  createComponent: (element, context) => createComponent2(element, context)
42829
43079
  };
42830
43080
 
42831
43081
  // src/transpile/components/container/layout-grid/grid.transformer.ts
42832
- var imports7 = [
43082
+ var imports5 = [
42833
43083
  {
42834
43084
  name: "WmLayoutgrid",
42835
43085
  from: "@wavemaker-ai/react-runtime/components/container/layout-grid"
@@ -42838,11 +43088,11 @@ var imports7 = [
42838
43088
  var grid_transformer_default = {
42839
43089
  pre: (element, context) => `<WmLayoutgrid iswidget="false" ${transformAttrs(element, context)}>`,
42840
43090
  post: (element, context) => "</WmLayoutgrid>",
42841
- imports: (element, context) => imports7
43091
+ imports: (element, context) => imports5
42842
43092
  };
42843
43093
 
42844
43094
  // src/transpile/components/container/layout-grid/grid-column.transformer.ts
42845
- var imports8 = [
43095
+ var imports6 = [
42846
43096
  {
42847
43097
  name: "WmGridcolumn",
42848
43098
  from: "@wavemaker-ai/react-runtime/components/container/layout-grid/grid-column"
@@ -42851,11 +43101,11 @@ var imports8 = [
42851
43101
  var grid_column_transformer_default = {
42852
43102
  pre: (element, context) => `<WmGridcolumn iswidget="false" ${transformAttrs(element, context)}>`,
42853
43103
  post: (element, context) => "</WmGridcolumn>",
42854
- imports: (element, context) => imports8
43104
+ imports: (element, context) => imports6
42855
43105
  };
42856
43106
 
42857
43107
  // src/transpile/components/container/layout-grid/grid-row.transformer.ts
42858
- var imports9 = [
43108
+ var imports7 = [
42859
43109
  {
42860
43110
  name: "WmGridrow",
42861
43111
  from: "@wavemaker-ai/react-runtime/components/container/layout-grid/grid-row"
@@ -42864,11 +43114,11 @@ var imports9 = [
42864
43114
  var grid_row_transformer_default = {
42865
43115
  pre: (element, context) => `<WmGridrow iswidget="false" ${transformAttrs(element, context)}>`,
42866
43116
  post: (element, context) => "</WmGridrow>",
42867
- imports: (element, context) => imports9
43117
+ imports: (element, context) => imports7
42868
43118
  };
42869
43119
 
42870
43120
  // src/transpile/components/page/content.transformer.ts
42871
- var imports10 = [
43121
+ var imports8 = [
42872
43122
  {
42873
43123
  name: "WmContent",
42874
43124
  from: "@wavemaker-ai/react-runtime/components/page/content"
@@ -42877,135 +43127,36 @@ var imports10 = [
42877
43127
  var content_transformer_default = {
42878
43128
  pre: (element, context) => `<WmContent data-role="page-content" role="main" ${transformAttrs(element, context)} >`,
42879
43129
  post: (element, context) => "</WmContent>",
42880
- imports: (element, context) => imports10,
43130
+ imports: (element, context) => imports8,
42881
43131
  createComponent: (element, context) => createComponent2(element, context)
42882
43132
  };
42883
43133
 
42884
43134
  // 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
- };
43135
+ var footer_transformer_default = createLayoutRegionTransformer({
43136
+ component: ["WmFooter"],
43137
+ importPath: ["@wavemaker-ai/react-runtime/components/layout/footer"],
43138
+ defaultContent: "footer",
43139
+ defaultName: "footer"
43140
+ });
42924
43141
 
42925
43142
  // 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
- };
43143
+ var topnav_transformer_default = createLayoutRegionTransformer({
43144
+ component: ["WmTopNav"],
43145
+ importPath: ["@wavemaker-ai/react-runtime/components/layout/topnav"],
43146
+ defaultContent: "topnav",
43147
+ defaultName: "top_nav1"
43148
+ });
42965
43149
 
42966
43150
  // 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
- };
43151
+ var leftnav_transformer_default = createLayoutRegionTransformer({
43152
+ component: ["WmLeftPanel"],
43153
+ importPath: ["@wavemaker-ai/react-runtime/components/layout/leftnav"],
43154
+ defaultContent: "leftnav",
43155
+ defaultName: "leftpanel"
43156
+ });
43006
43157
 
43007
43158
  // src/transpile/components/nav/navbar.transformer.ts
43008
- var imports14 = [
43159
+ var imports9 = [
43009
43160
  {
43010
43161
  name: "WmNavbar",
43011
43162
  from: "@wavemaker-ai/react-runtime/components/navbar"
@@ -43099,11 +43250,11 @@ var navbar_transformer_default = {
43099
43250
  ${transformAttrs(element, context)}>`;
43100
43251
  },
43101
43252
  post: (element, context) => "</WmNavbar>",
43102
- imports: (element, context) => imports14
43253
+ imports: (element, context) => imports9
43103
43254
  };
43104
43255
 
43105
43256
  // src/transpile/components/nav/nav-item.transformer.ts
43106
- var imports15 = [
43257
+ var imports10 = [
43107
43258
  {
43108
43259
  name: "WmNavItem",
43109
43260
  from: "@wavemaker-ai/react-runtime/components/navbar/nav-item"
@@ -43120,21 +43271,21 @@ var nav_item_transformer_default = {
43120
43271
  ${transformAttrs(element, context)}>`;
43121
43272
  },
43122
43273
  post: (element, context) => "</WmNavItem>",
43123
- imports: (element, context) => imports15
43274
+ imports: (element, context) => imports10
43124
43275
  };
43125
43276
 
43126
43277
  // src/transpile/components/basic/anchor.transformer.ts
43127
- var imports16 = [
43278
+ var imports11 = [
43128
43279
  { name: "WmAnchor", from: "@wavemaker-ai/react-runtime/components/basic/anchor" }
43129
43280
  ];
43130
43281
  var anchor_transformer_default = {
43131
43282
  pre: (element, context) => `<WmAnchor listener={fragment} ${transformAttrs(element, context)} >`,
43132
43283
  post: (element, context) => "</WmAnchor>",
43133
- imports: (element, context) => imports16
43284
+ imports: (element, context) => imports11
43134
43285
  };
43135
43286
 
43136
43287
  // src/transpile/components/input/text.transformer.ts
43137
- var imports17 = [
43288
+ var imports12 = [
43138
43289
  {
43139
43290
  name: "WmText",
43140
43291
  from: "@wavemaker-ai/react-runtime/components/input/text"
@@ -43147,67 +43298,88 @@ var text_transformer_default = {
43147
43298
  return `<WmText ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)} ${onChange ? `onChange={${onChange}}` : ""}>`;
43148
43299
  },
43149
43300
  post: (element, context) => "</WmText>",
43150
- imports: (element, context) => imports17
43301
+ imports: (element, context) => imports12
43151
43302
  };
43152
43303
 
43304
+ // src/transpile/components/page/build-partial-markup.ts
43305
+ var import_html_entities = __toESM(require_lib9());
43306
+ var ignoredAttributes = ["name", "show", "content", "class", "styles"];
43307
+ function buildPartialMarkup(element, context, componentName) {
43308
+ const content = element.attributes["content"];
43309
+ const name = element.attributes["name"];
43310
+ if (!content) {
43311
+ return "";
43312
+ }
43313
+ const params = {};
43314
+ if (!element.hasAttribute("is-table-row")) {
43315
+ Object.keys(element.attrs).forEach((k) => {
43316
+ if (!ignoredAttributes.includes(k)) {
43317
+ params[k] = element.attrs[k];
43318
+ }
43319
+ });
43320
+ }
43321
+ const watch = [];
43322
+ element.childNodes.filter((node) => isHTMLElement(node) && node.tagName === "WM-PARAM").forEach((node) => {
43323
+ const e = node;
43324
+ const name2 = e.getAttribute("name") || "";
43325
+ let value = e.getAttribute("value") || "";
43326
+ if (value.includes("currentItem")) {
43327
+ const match = value.match(/currentItem\..+/);
43328
+ if (match) {
43329
+ value = `bind:${match[0]}`;
43330
+ }
43331
+ }
43332
+ params[name2] = value;
43333
+ watch.push(name2);
43334
+ });
43335
+ const syntheticTag = componentName.replace(/([A-Z])/g, "-$1").toLowerCase().replace(/^-/, "");
43336
+ let paramStr = Object.keys(params).filter((k) => k !== "on-load").map((k) => `${k}="${(0, import_html_entities.encode)(params[k])}"`).join(" ");
43337
+ paramStr = transformAttrs(
43338
+ parse5(`<${syntheticTag} ${paramStr}/>`).firstChild,
43339
+ context,
43340
+ inferTypeAndParseProperty
43341
+ );
43342
+ paramStr += ` content={props.content}`;
43343
+ if (context.isPartOfPrefab) {
43344
+ paramStr += " prefab={fragment.prefab}";
43345
+ paramStr += "prefabName={fragment.prefabName}";
43346
+ paramStr += "Prefab={stateProxy}";
43347
+ }
43348
+ return `<${componentName} ${watch.length > 0 ? `params={${JSON.stringify(watch)}}` : ""} onLoad={onLoad} ${paramStr} partialName={'${name}'} listener={props.listener} />`;
43349
+ }
43350
+
43153
43351
  // src/transpile/components/page/partial-container.transformer.ts
43154
- var import_html_entities2 = __toESM(require_lib9());
43155
- var imports18 = [
43352
+ var imports13 = [
43156
43353
  {
43157
43354
  name: "WmPartialContainer",
43158
43355
  from: "@wavemaker-ai/react-runtime/components/page/partial-container"
43159
43356
  }
43160
43357
  ];
43161
- var ignoredAttributes2 = ["name", "show", "content", "class", "styles"];
43162
43358
  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
- },
43359
+ pre: (element, context) => buildPartialMarkup(element, context, "WmPartialContainer"),
43205
43360
  post: (element, context) => "",
43206
- imports: (element, context) => element.hasAttribute("content") ? imports18 : []
43361
+ imports: (element, context) => element.hasAttribute("content") ? imports13 : []
43207
43362
  };
43208
43363
 
43364
+ // src/transpile/components/page/with-partial-container.ts
43365
+ function withPartialContainer(element, context, options) {
43366
+ let partial = partial_container_transformer_default.pre(element, context) || "";
43367
+ const extraImports = partial_container_transformer_default.imports(element, context);
43368
+ if (partial) {
43369
+ if (options.removeName) {
43370
+ element.removeAttribute("name");
43371
+ }
43372
+ const params = options.extraParams ? `props:Record<string, any>, onLoad:()=>void, ${options.extraParams}` : "props:Record<string, any>, onLoad:()=>void";
43373
+ partial = `${options.prop}={(${params}) => (${partial})}`;
43374
+ }
43375
+ return { partialAttr: partial, extraImports };
43376
+ }
43377
+ function getPartialImports(element, context) {
43378
+ return partial_container_transformer_default.imports(element, context);
43379
+ }
43380
+
43209
43381
  // src/transpile/components/container/container.transformer.ts
43210
- var imports19 = [
43382
+ var imports14 = [
43211
43383
  {
43212
43384
  name: "WmContainer",
43213
43385
  from: "@wavemaker-ai/react-runtime/components/container"
@@ -43215,30 +43387,20 @@ var imports19 = [
43215
43387
  ];
43216
43388
  var container_transformer_default = {
43217
43389
  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}>`;
43390
+ const { partialAttr } = withPartialContainer(element, context, {
43391
+ prop: "renderPartial",
43392
+ removeName: true
43393
+ });
43394
+ return `<WmContainer listener={fragment} ${transformAttrs(element, context)} ${partialAttr}>`;
43233
43395
  },
43234
43396
  post: (element, context) => "</WmContainer>",
43235
43397
  imports: (element, context) => {
43236
- return imports19.concat(partial_container_transformer_default.imports(element, context));
43398
+ return imports14.concat(getPartialImports(element, context));
43237
43399
  }
43238
43400
  };
43239
43401
 
43240
43402
  // src/transpile/components/input/composite.transformer.ts
43241
- var imports20 = [
43403
+ var imports15 = [
43242
43404
  {
43243
43405
  name: "WmComposite",
43244
43406
  from: "@wavemaker-ai/react-runtime/components/input/composite"
@@ -43247,11 +43409,11 @@ var imports20 = [
43247
43409
  var composite_transformer_default = {
43248
43410
  pre: (element, context) => `<WmComposite ${transformAttrs(element, context)}>`,
43249
43411
  post: (element, context) => "</WmComposite>",
43250
- imports: (element, context) => imports20
43412
+ imports: (element, context) => imports15
43251
43413
  };
43252
43414
 
43253
43415
  // src/transpile/components/input/number.transformer.ts
43254
- var imports21 = [
43416
+ var imports16 = [
43255
43417
  {
43256
43418
  name: "WmNumber",
43257
43419
  from: "@wavemaker-ai/react-runtime/components/input/number"
@@ -43264,11 +43426,11 @@ var number_transformer_default = {
43264
43426
  return `<WmNumber ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)} >`;
43265
43427
  },
43266
43428
  post: (element, context) => "</WmNumber>",
43267
- imports: (element, context) => imports21
43429
+ imports: (element, context) => imports16
43268
43430
  };
43269
43431
 
43270
43432
  // src/transpile/components/input/textarea.transformer.ts
43271
- var imports22 = [
43433
+ var imports17 = [
43272
43434
  {
43273
43435
  name: "WmTextarea",
43274
43436
  from: "@wavemaker-ai/react-runtime/components/input/textarea"
@@ -43280,11 +43442,11 @@ var textarea_transformer_default = {
43280
43442
  return `<WmTextarea ${isFormField ? " {...$formField}" : ""} type="textarea" listener={fragment} ${transformAttrs(element, context)} `;
43281
43443
  },
43282
43444
  post: (element, context) => "/>",
43283
- imports: (element, context) => imports22
43445
+ imports: (element, context) => imports17
43284
43446
  };
43285
43447
 
43286
43448
  // src/transpile/components/container/tile.transformer.ts
43287
- var imports23 = [
43449
+ var imports18 = [
43288
43450
  {
43289
43451
  name: "WmTile",
43290
43452
  from: "@wavemaker-ai/react-runtime/components/basic/tile"
@@ -43293,11 +43455,11 @@ var imports23 = [
43293
43455
  var tile_transformer_default = {
43294
43456
  pre: (element, context) => `<WmTile ${transformAttrs(element, context)}>`,
43295
43457
  post: (element, context) => "</WmTile>",
43296
- imports: (element, context) => imports23
43458
+ imports: (element, context) => imports18
43297
43459
  };
43298
43460
 
43299
43461
  // src/transpile/components/basic/picture.transformer.ts
43300
- var imports24 = [
43462
+ var imports19 = [
43301
43463
  {
43302
43464
  name: "WmPicture",
43303
43465
  from: "@wavemaker-ai/react-runtime/components/basic/picture"
@@ -43312,11 +43474,11 @@ var picture_transformer_default = {
43312
43474
  return `<WmPicture listener={fragment} ${transformAttrs(element, context)} ${context.isPartOfPrefab ? " prefabName={fragment.prefabName}" : ""} >`;
43313
43475
  },
43314
43476
  post: (element, context) => "</WmPicture>",
43315
- imports: (element, context) => imports24
43477
+ imports: (element, context) => imports19
43316
43478
  };
43317
43479
 
43318
43480
  // src/transpile/components/basic/icon.transformer.ts
43319
- var imports25 = [
43481
+ var imports20 = [
43320
43482
  {
43321
43483
  name: "WmIcon",
43322
43484
  from: "@wavemaker-ai/react-runtime/components/basic/icon"
@@ -43325,11 +43487,11 @@ var imports25 = [
43325
43487
  var icon_transformer_default = {
43326
43488
  pre: (element, context) => `<WmIcon ${transformAttrs(element, context)} ${context.isPartOfPrefab ? " prefabName={fragment.prefabName}" : ""} >`,
43327
43489
  post: (element, context) => "</WmIcon>",
43328
- imports: (element, context) => imports25
43490
+ imports: (element, context) => imports20
43329
43491
  };
43330
43492
 
43331
43493
  // src/transpile/components/basic/video.transformer.ts
43332
- var imports26 = [
43494
+ var imports21 = [
43333
43495
  {
43334
43496
  name: "WmVideo",
43335
43497
  from: "@wavemaker-ai/react-runtime/components/basic/video"
@@ -43338,11 +43500,11 @@ var imports26 = [
43338
43500
  var video_transformer_default = {
43339
43501
  pre: (element, context) => `<WmVideo ${transformAttrs(element, context)} ${context.isPartOfPrefab ? " prefabName={fragment.prefabName}" : ""}>`,
43340
43502
  post: (element, context) => "</WmVideo>",
43341
- imports: (element, context) => imports26
43503
+ imports: (element, context) => imports21
43342
43504
  };
43343
43505
 
43344
43506
  // src/transpile/components/basic/audio.transformer.ts
43345
- var imports27 = [
43507
+ var imports22 = [
43346
43508
  {
43347
43509
  name: "WmAudio",
43348
43510
  from: "@wavemaker-ai/react-runtime/components/basic/audio"
@@ -43351,11 +43513,11 @@ var imports27 = [
43351
43513
  var audio_transformer_default = {
43352
43514
  pre: (element, context) => `<WmAudio ${transformAttrs(element, context)} ${context.isPartOfPrefab ? " prefabName={fragment.prefabName}" : ""}>`,
43353
43515
  post: (element, context) => "</WmAudio>",
43354
- imports: (element, context) => imports27
43516
+ imports: (element, context) => imports22
43355
43517
  };
43356
43518
 
43357
43519
  // src/transpile/components/form/button.transformer.ts
43358
- var imports28 = [
43520
+ var imports23 = [
43359
43521
  {
43360
43522
  name: "WmButton",
43361
43523
  from: "@wavemaker-ai/react-runtime/components/form/button"
@@ -43372,11 +43534,11 @@ var button_transformer_default = {
43372
43534
  return `<WmButton listener={fragment} ${stopPropagation} ${transformAttrs(element, context)} ${context.isPartOfPrefab ? " prefabName={fragment.prefabName}" : ""} >`;
43373
43535
  },
43374
43536
  post: (element, context) => "</WmButton>",
43375
- imports: (element, context) => imports28
43537
+ imports: (element, context) => imports23
43376
43538
  };
43377
43539
 
43378
43540
  // src/transpile/components/form/button-group.transformer.ts
43379
- var imports29 = [
43541
+ var imports24 = [
43380
43542
  {
43381
43543
  name: "WmButtonGroup",
43382
43544
  from: "@wavemaker-ai/react-runtime/components/form/button-group"
@@ -43385,11 +43547,11 @@ var imports29 = [
43385
43547
  var button_group_transformer_default = {
43386
43548
  pre: (element, context) => `<WmButtonGroup ${transformAttrs(element, context)}>`,
43387
43549
  post: (element, context) => "</WmButtonGroup>",
43388
- imports: (element, context) => imports29
43550
+ imports: (element, context) => imports24
43389
43551
  };
43390
43552
 
43391
43553
  // src/transpile/components/nav/nav.transformer.ts
43392
- var imports30 = [
43554
+ var imports25 = [
43393
43555
  {
43394
43556
  name: "WmNav",
43395
43557
  from: "@wavemaker-ai/react-runtime/components/navbar/nav"
@@ -43443,52 +43605,19 @@ var nav_transformer_default = {
43443
43605
  ${itemlabelExpression ? `itemlabel=${itemlabelExpression}` : ""}>`;
43444
43606
  },
43445
43607
  post: (element, context) => "</WmNav>",
43446
- imports: (element, context) => imports30
43608
+ imports: (element, context) => imports25
43447
43609
  };
43448
43610
 
43449
43611
  // 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
- };
43612
+ var rightnav_transformer_default = createLayoutRegionTransformer({
43613
+ component: ["WmRightPanel"],
43614
+ importPath: ["@wavemaker-ai/react-runtime/components/layout/rightnav"],
43615
+ defaultContent: "rightnav",
43616
+ defaultName: "rightnav"
43617
+ });
43489
43618
 
43490
43619
  // src/transpile/components/basic/iframe.transformer.ts
43491
- var imports32 = [
43620
+ var imports26 = [
43492
43621
  {
43493
43622
  name: "WmIframe",
43494
43623
  from: "@wavemaker-ai/react-runtime/components/basic/iframe"
@@ -43497,37 +43626,38 @@ var imports32 = [
43497
43626
  var iframe_transformer_default = {
43498
43627
  pre: (element, context) => `<WmIframe ${transformAttrs(element, context)}>`,
43499
43628
  post: (element, context) => "</WmIframe>",
43500
- imports: (element, context) => imports32
43629
+ imports: (element, context) => imports26
43501
43630
  };
43502
43631
 
43632
+ // src/transpile/components/dialogs/dialog-factory.ts
43633
+ function createSelfClosingDialogTransformer(config) {
43634
+ const imports102 = [
43635
+ {
43636
+ name: config.component,
43637
+ from: config.importPath
43638
+ }
43639
+ ];
43640
+ return {
43641
+ pre: (element, context) => `<${config.component} listener={fragment} ${transformAttrs(element, context)}`,
43642
+ post: (element, context) => "/>",
43643
+ imports: (element, context) => imports102
43644
+ };
43645
+ }
43646
+
43503
43647
  // 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
- };
43648
+ var confirm_dialog_transformer_default = createSelfClosingDialogTransformer({
43649
+ component: "WmConfirmDialog",
43650
+ importPath: "@wavemaker-ai/react-runtime/components/dialogs/confirm-dialog"
43651
+ });
43515
43652
 
43516
43653
  // 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
- };
43654
+ var alert_dialog_transformer_default = createSelfClosingDialogTransformer({
43655
+ component: "WmAlertDialog",
43656
+ importPath: "@wavemaker-ai/react-runtime/components/dialogs/alert-dialog"
43657
+ });
43528
43658
 
43529
43659
  // src/transpile/components/data/list/list-transformer.ts
43530
- var imports35 = [
43660
+ var imports27 = [
43531
43661
  { name: "WmList", from: "@wavemaker-ai/react-runtime/components/data/list" }
43532
43662
  ];
43533
43663
  var addTemplateClass = (element) => {
@@ -43611,6 +43741,10 @@ function serializeStyleObjectToParts(styleObj) {
43611
43741
  var buildItemAttrsFromListTemplate = (template, context) => {
43612
43742
  var _a, _b, _c;
43613
43743
  if (!template || ((_a = template.tagName) == null ? void 0 : _a.toLowerCase()) !== "wm-listtemplate") return "";
43744
+ if (template.getAttribute("class")) {
43745
+ template.setAttribute("className", template.getAttribute("class"));
43746
+ template.removeAttribute("class");
43747
+ }
43614
43748
  const autolayout = (_b = context.data) == null ? void 0 : _b.autolayoutCodegen;
43615
43749
  const autoLayoutResult = (_c = autolayout == null ? void 0 : autolayout.processListTemplate(template)) != null ? _c : null;
43616
43750
  const styleObj = style_transformer_default(template, (styleProp) => {
@@ -43758,8 +43892,10 @@ var list_transformer_default = {
43758
43892
  }
43759
43893
  const datasetAttr = element.getAttribute("dataset");
43760
43894
  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$/);
43895
+ if (datasetAttr && datasetAttr.startsWith("bind:fragment.Variables.") && datasetAttr.includes(".dataSet")) {
43896
+ const match = datasetAttr.match(
43897
+ /^bind:fragment\.Variables\.([^.]+)\.dataSet(?=[^A-Za-z0-9_]|$)/
43898
+ );
43763
43899
  if (match) {
43764
43900
  const variableName = match[1];
43765
43901
  if (!datasourceAttr) {
@@ -43816,7 +43952,7 @@ var list_transformer_default = {
43816
43952
  context.data.listCount--;
43817
43953
  return "</>)}}></WmList>";
43818
43954
  },
43819
- imports: (element, context) => imports35,
43955
+ imports: (element, context) => imports27,
43820
43956
  createComponent: (element, context) => {
43821
43957
  if (!context.data.listCount) {
43822
43958
  context.props = context.get("old_props") || [];
@@ -43828,7 +43964,7 @@ var list_transformer_default = {
43828
43964
  };
43829
43965
 
43830
43966
  // src/transpile/components/data/list/list-template-transformer.ts
43831
- var imports36 = [];
43967
+ var imports28 = [];
43832
43968
  var list_template_transformer_default = {
43833
43969
  pre: (element, context) => {
43834
43970
  const name = element.getAttribute("name");
@@ -43842,16 +43978,16 @@ var list_template_transformer_default = {
43842
43978
  element.removeAttribute("height");
43843
43979
  return "</React.Fragment>";
43844
43980
  },
43845
- imports: (element, context) => imports36
43981
+ imports: (element, context) => imports28
43846
43982
  };
43847
43983
 
43848
43984
  // src/transpile/components/data/list/list-content.transformer.ts
43849
43985
  var import_lodash6 = __toESM(require_lodash());
43850
- var imports37 = [];
43986
+ var imports29 = [];
43851
43987
  var list_content_transformer_default = {
43852
43988
  pre: (element, context) => ``,
43853
43989
  post: (element, context) => "",
43854
- imports: (element, context) => imports37,
43990
+ imports: (element, context) => imports29,
43855
43991
  createComponent: (e, context, component = "list") => {
43856
43992
  const result = context.result;
43857
43993
  const widgetName = (0, import_lodash6.capitalize)(e.attrs["name"]);
@@ -43917,17 +44053,19 @@ var DATASET_WIDGETS = [
43917
44053
  "rating" /* RATING */
43918
44054
  ];
43919
44055
 
44056
+ // src/transpile/components/data/form/field-widget-shared.ts
44057
+ var getAttribute = (element, attrName) => {
44058
+ const value = element.getAttribute(attrName);
44059
+ return value == null ? void 0 : value.replace(/"/g, "&quot;");
44060
+ };
44061
+
43920
44062
  // src/transpile/components/data/form/form-field.transformer.ts
43921
- var imports38 = [
44063
+ var imports30 = [
43922
44064
  {
43923
44065
  name: "WmFormField",
43924
44066
  from: "@wavemaker-ai/react-runtime/components/data/form/form-field"
43925
44067
  }
43926
44068
  ];
43927
- var getAttribute = (element, attrName) => {
43928
- const value = element.getAttribute(attrName);
43929
- return value == null ? void 0 : value.replace(/"/g, "&quot;");
43930
- };
43931
44069
  var extractField = (element, context, formElement) => {
43932
44070
  const widgetType = getAttribute(element, "widget") || "text";
43933
44071
  const widgetName = getAttribute(element, "key") || getAttribute(element, "name") || "text_formWidget";
@@ -43994,6 +44132,7 @@ var getDisplayExpression = (displayExpr) => {
43994
44132
  return `displayexpression="${displayExpr}"`;
43995
44133
  };
43996
44134
  var getWidgetMarkup = (widgetType, widgetName, commonFields, element) => {
44135
+ var _a, _b, _c, _d, _e, _f, _g, _h;
43997
44136
  let tmpl = "";
43998
44137
  const getDisplayExpr = element.getAttribute("displayexpression") || element.getAttribute("displaylabel");
43999
44138
  const displayExp = getDisplayExpr ? getDisplayExpression(getDisplayExpr) : "";
@@ -44006,16 +44145,16 @@ var getWidgetMarkup = (widgetType, widgetName, commonFields, element) => {
44006
44145
  currentNode = currentNode.parentNode;
44007
44146
  }
44008
44147
  const isFloatingForm = (currentNode == null ? void 0 : currentNode.getAttribute("captionposition")) === "floating";
44009
- const floatinglabel = formFieldTags.includes(widgetType) && isFloatingForm ? `floatinglabel='${element.getAttribute("displayname")}'` : "";
44148
+ const floatinglabel = formFieldTags.includes(widgetType) && isFloatingForm ? `floatinglabel="${(_a = element.getAttribute("displayname")) == null ? void 0 : _a.replace(/"/g, "&quot;")}"` : "";
44010
44149
  const dateTimeDialogTags = ["date", "time", "datetime"];
44011
44150
  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")}'` : ``;
44151
+ const dateheadertitle = isDateTimeTag && element.getAttribute("dateheadertitle") ? `dateheadertitle="${(_b = element.getAttribute("dateheadertitle")) == null ? void 0 : _b.replace(/"/g, "&quot;")}"` : "";
44152
+ const dateconfirmationtitle = isDateTimeTag && element.getAttribute("dateconfirmationtitle") ? `dateconfirmationtitle="${(_c = element.getAttribute("dateconfirmationtitle")) == null ? void 0 : _c.replace(/"/g, "&quot;")}"` : "";
44153
+ const datecanceltitle = isDateTimeTag && element.getAttribute("datecanceltitle") ? `datecanceltitle="${(_d = element.getAttribute("datecanceltitle")) == null ? void 0 : _d.replace(/"/g, "&quot;")}"` : "";
44154
+ const timeheadertitle = isDateTimeTag && element.getAttribute("timeheadertitle") ? `timeheadertitle="${(_e = element.getAttribute("timeheadertitle")) == null ? void 0 : _e.replace(/"/g, "&quot;")}"` : "";
44155
+ const timeconfirmationtitle = isDateTimeTag && element.getAttribute("timeconfirmationtitle") ? `timeconfirmationtitle="${(_f = element.getAttribute("timeconfirmationtitle")) == null ? void 0 : _f.replace(/"/g, "&quot;")}"` : "";
44156
+ const timecanceltitle = isDateTimeTag && element.getAttribute("timecanceltitle") ? `timecanceltitle="${(_g = element.getAttribute("timecanceltitle")) == null ? void 0 : _g.replace(/"/g, "&quot;")}"` : "";
44157
+ const outputformat = element.getAttribute("outputformat") ? `outputformat="${(_h = element.getAttribute("outputformat")) == null ? void 0 : _h.replace(/"/g, "&quot;")}"` : ``;
44019
44158
  switch (widgetType) {
44020
44159
  case "text":
44021
44160
  case "password":
@@ -44304,13 +44443,13 @@ var form_field_transformer_default = {
44304
44443
  return `<WmFormField ${formScope || ""} field="true" ${fieldcolumn ? `fieldcol="${fieldcolumn}"` : ""} role="form-field" ${extractDatasetInfo(element)} ${transformAttrs(element, context)} renderFormFields={($formField) => (<>`;
44305
44444
  },
44306
44445
  post: (element, context) => " </>)}></WmFormField>",
44307
- imports: (element, context) => imports38,
44446
+ imports: (element, context) => imports30,
44308
44447
  createComponent: (element, context) => createComponent2(element, context)
44309
44448
  };
44310
44449
 
44311
44450
  // src/transpile/components/data/form/form.transformer.ts
44312
44451
  var import_lodash7 = __toESM(require_lodash());
44313
- var imports39 = [
44452
+ var imports31 = [
44314
44453
  { name: "WmForm", from: "@wavemaker-ai/react-runtime/components/data/form" }
44315
44454
  ];
44316
44455
  var getOnChangeExpr = (element) => {
@@ -44443,11 +44582,11 @@ var form_transformer_default = {
44443
44582
  >`;
44444
44583
  },
44445
44584
  post: (element, context) => `</WmForm>`,
44446
- imports: (element, context) => imports39
44585
+ imports: (element, context) => imports31
44447
44586
  };
44448
44587
 
44449
44588
  // src/transpile/components/data/form/form-footer.transformer.ts
44450
- var imports40 = [
44589
+ var imports32 = [
44451
44590
  {
44452
44591
  name: "WmFormFooter",
44453
44592
  from: "@wavemaker-ai/react-runtime/components/data/form/form-footer"
@@ -44456,11 +44595,11 @@ var imports40 = [
44456
44595
  var form_footer_transformer_default = {
44457
44596
  pre: (element, context) => `<WmFormFooter ${transformAttrs(element, context)}>`,
44458
44597
  post: (element, context) => "</WmFormFooter>",
44459
- imports: (element, context) => imports40
44598
+ imports: (element, context) => imports32
44460
44599
  };
44461
44600
 
44462
44601
  // src/transpile/components/data/form/form-body.transformer.ts
44463
- var imports41 = [
44602
+ var imports33 = [
44464
44603
  {
44465
44604
  name: "WmFormBody",
44466
44605
  from: "@wavemaker-ai/react-runtime/components/data/form/form-body"
@@ -44469,11 +44608,11 @@ var imports41 = [
44469
44608
  var form_body_transformer_default = {
44470
44609
  pre: (element, context) => `<WmFormBody ${transformAttrs(element, context)}>`,
44471
44610
  post: (element, context) => "</WmFormBody>",
44472
- imports: (element, context) => imports41
44611
+ imports: (element, context) => imports33
44473
44612
  };
44474
44613
 
44475
44614
  // src/transpile/components/data/form/form-action.transformer.ts
44476
- var imports42 = [
44615
+ var imports34 = [
44477
44616
  {
44478
44617
  name: "WmFormAction",
44479
44618
  from: "@wavemaker-ai/react-runtime/components/data/form/form-action"
@@ -44570,24 +44709,17 @@ var form_action_transformer_default = {
44570
44709
  ${action && actionType ? `onClick={${getFormActionExpr(action, isAsyncAction)}} widgettype="${widgetType}"` : ""} `;
44571
44710
  },
44572
44711
  post: (element, context) => "/>",
44573
- imports: (element, context) => imports42
44712
+ imports: (element, context) => imports34
44574
44713
  };
44575
44714
 
44576
44715
  // 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
- };
44716
+ var iframe_dialog_transformer_default = createSelfClosingDialogTransformer({
44717
+ component: "WmIFrameDialog",
44718
+ importPath: "@wavemaker-ai/react-runtime/components/dialogs/iframe-dialog"
44719
+ });
44588
44720
 
44589
44721
  // src/transpile/components/dialogs/page-dialog.transformer.ts
44590
- var imports44 = [
44722
+ var imports35 = [
44591
44723
  {
44592
44724
  name: "WmPageDialog",
44593
44725
  from: "@wavemaker-ai/react-runtime/components/dialogs/page-dialog"
@@ -44596,11 +44728,11 @@ var imports44 = [
44596
44728
  var page_dialog_transformer_default = {
44597
44729
  pre: (element, context) => `<WmPageDialog listener={fragment} ${transformAttrs(element, context)}`,
44598
44730
  post: (element, context) => "/>",
44599
- imports: (element, context) => imports44
44731
+ imports: (element, context) => imports35
44600
44732
  };
44601
44733
 
44602
44734
  // src/transpile/components/dialogs/dialog.transformer.ts
44603
- var imports45 = [
44735
+ var imports36 = [
44604
44736
  { name: "WmDialog", from: "@wavemaker-ai/react-runtime/components/dialogs/dialog" }
44605
44737
  ];
44606
44738
  var dialog_transformer_default = {
@@ -44626,12 +44758,12 @@ var dialog_transformer_default = {
44626
44758
  return `<WmDialog listener={fragment} ${transformAttrs(element, context)}>`;
44627
44759
  },
44628
44760
  post: (element, context) => "</WmDialog>",
44629
- imports: (element, context) => imports45
44761
+ imports: (element, context) => imports36
44630
44762
  };
44631
44763
 
44632
44764
  // src/transpile/components/dialogs/dialog-actions.transformer.ts
44633
44765
  var import_isString = __toESM(require_isString());
44634
- var imports46 = [
44766
+ var imports37 = [
44635
44767
  {
44636
44768
  name: "WmDialogActions",
44637
44769
  from: "@wavemaker-ai/react-runtime/components/dialogs/dialog-actions"
@@ -44677,22 +44809,22 @@ var dialog_actions_transformer_default = {
44677
44809
  if (!(parent == null ? void 0 : parent.rawTagName.includes("dialog"))) {
44678
44810
  return [];
44679
44811
  }
44680
- return imports46;
44812
+ return imports37;
44681
44813
  }
44682
44814
  };
44683
44815
 
44684
44816
  // src/transpile/components/dialogs/dialog-body.transformer.ts
44685
- var imports47 = [
44817
+ var imports38 = [
44686
44818
  { name: "WmDialogBody", from: "@wavemaker-ai/react-runtime/components/dialogs/dialog-body" }
44687
44819
  ];
44688
44820
  var dialog_body_transformer_default = {
44689
44821
  pre: (element, context) => `<WmDialogBody ${transformAttrs(element, context)}>`,
44690
44822
  post: (element, context) => "</WmDialogBody>",
44691
- imports: (element, context) => imports47
44823
+ imports: (element, context) => imports38
44692
44824
  };
44693
44825
 
44694
44826
  // src/transpile/components/container/tabs.transformer.ts
44695
- var imports48 = [
44827
+ var imports39 = [
44696
44828
  { name: "WmTabs", from: "@wavemaker-ai/react-runtime/components/container/tabs" }
44697
44829
  ];
44698
44830
  var transformAttr2 = (name, value) => {
@@ -44760,7 +44892,7 @@ var tabs_transformer_default = {
44760
44892
  }
44761
44893
  return "</WmTabs>";
44762
44894
  },
44763
- imports: (element, context) => imports48,
44895
+ imports: (element, context) => imports39,
44764
44896
  createComponent: (element, context) => {
44765
44897
  if (!context.data.listCount) {
44766
44898
  context.props = context.get("old_props") || [];
@@ -44772,7 +44904,7 @@ var tabs_transformer_default = {
44772
44904
  };
44773
44905
 
44774
44906
  // src/transpile/components/container/tabpane.transformer.ts
44775
- var imports49 = [
44907
+ var imports40 = [
44776
44908
  { name: "WmTabPane", from: "@wavemaker-ai/react-runtime/components/container/tabs/tab-pane" }
44777
44909
  ];
44778
44910
  function isInsideDynamicTabs(element) {
@@ -44789,39 +44921,27 @@ function isInsideDynamicTabs(element) {
44789
44921
  }
44790
44922
  var tabpane_transformer_default = {
44791
44923
  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
- }
44924
+ const { partialAttr } = withPartialContainer(element, context, { prop: "renderPartial" });
44805
44925
  const isDynamicTabs = isInsideDynamicTabs(element);
44806
44926
  const itemProp = isDynamicTabs ? " item={$item}" : "";
44807
- return `<WmTabPane listener={fragment} ${transformAttrs(element, context)}${itemProp} ${partial}>`;
44927
+ return `<WmTabPane listener={fragment} ${transformAttrs(element, context)}${itemProp} ${partialAttr}>`;
44808
44928
  },
44809
44929
  post: (element, context) => "</WmTabPane>",
44810
- imports: (element, context) => imports49.concat(partial_container_transformer_default.imports(element, context))
44930
+ imports: (element, context) => imports40.concat(getPartialImports(element, context))
44811
44931
  };
44812
44932
 
44813
44933
  // src/transpile/components/container/tabheader.transformer.ts
44814
- var imports50 = [
44934
+ var imports41 = [
44815
44935
  { name: "WmTabheader", from: "@wavemaker-ai/react-runtime/components/container/tabs/tabheader" }
44816
44936
  ];
44817
44937
  var tabheader_transformer_default = {
44818
44938
  pre: (element, context) => `<WmTabheader ${transformAttrs(element, context)}>`,
44819
44939
  post: (element, context) => "</WmTabheader>",
44820
- imports: (element, context) => imports50
44940
+ imports: (element, context) => imports41
44821
44941
  };
44822
44942
 
44823
44943
  // src/transpile/components/prefab/prefab-container.transformer.ts
44824
- var imports51 = [
44944
+ var imports42 = [
44825
44945
  {
44826
44946
  name: "WmPrefabContainer",
44827
44947
  from: "@wavemaker-ai/react-runtime/components/prefab/container"
@@ -44836,7 +44956,7 @@ var prefab_container_transformer_default = {
44836
44956
  return `</WmPrefabContainer >`;
44837
44957
  },
44838
44958
  imports: (element, context) => {
44839
- return imports51;
44959
+ return imports42;
44840
44960
  },
44841
44961
  createComponent: (element, context) => createComponent2(element, context),
44842
44962
  prefabs: (element, context) => {
@@ -44919,17 +45039,17 @@ var prefab_transformer_default = {
44919
45039
  const prefabName = element.getAttribute("prefabname");
44920
45040
  const widgetname = element.getAttribute("widgetname");
44921
45041
  const widgetmodule = element.getAttribute("widgetmodule");
44922
- const imports111 = [];
45042
+ const imports102 = [];
44923
45043
  if (widgetname && !isPreview) {
44924
- imports111.push({ name: "Wm" + capitalize3(widgetname), from: widgetmodule });
45044
+ imports102.push({ name: "Wm" + capitalize3(widgetname), from: widgetmodule });
44925
45045
  } else if (!isPreview) {
44926
- imports111.push({
45046
+ imports102.push({
44927
45047
  name: "Wm" + capitalize3(prefabName) + "Prefab",
44928
45048
  from: `@/app/prefabs/${prefabName}/Main/Main`,
44929
45049
  lazy: profile_default.lazyloadPrefabs
44930
45050
  });
44931
45051
  }
44932
- return imports111;
45052
+ return imports102;
44933
45053
  },
44934
45054
  createComponent: (element, context) => createComponent2(element, context),
44935
45055
  prefabs: (element, context) => {
@@ -44942,7 +45062,7 @@ var prefab_transformer_default = {
44942
45062
  };
44943
45063
 
44944
45064
  // src/transpile/components/navigation/popover.transformer.ts
44945
- var imports52 = [
45065
+ var imports43 = [
44946
45066
  {
44947
45067
  name: "WmPopover",
44948
45068
  from: "@wavemaker-ai/react-runtime/components/navigation/popover"
@@ -44950,30 +45070,18 @@ var imports52 = [
44950
45070
  ];
44951
45071
  var popover_transformer_default = {
44952
45072
  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;
45073
+ let partialAttr = "";
44963
45074
  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
- }
45075
+ ({ partialAttr } = withPartialContainer(element, context, { prop: "render" }));
44968
45076
  }
44969
- return `<WmPopover listener={fragment} ${transformAttrs(element, context)} ${partial !== null ? partial : ""}>`;
45077
+ return `<WmPopover listener={fragment} ${transformAttrs(element, context)} ${partialAttr}>`;
44970
45078
  },
44971
45079
  post: (element, context) => "</WmPopover>",
44972
- imports: (element, context) => imports52.concat(partial_container_transformer_default.imports(element, context))
45080
+ imports: (element, context) => imports43.concat(getPartialImports(element, context))
44973
45081
  };
44974
45082
 
44975
45083
  // src/transpile/components/input/switch.transformer.ts
44976
- var imports53 = [
45084
+ var imports44 = [
44977
45085
  { name: "WmSwitch", from: "@wavemaker-ai/react-runtime/components/input/default/switch" }
44978
45086
  ];
44979
45087
  var switch_transformer_default = {
@@ -44986,11 +45094,11 @@ var switch_transformer_default = {
44986
45094
  return `<WmSwitch ${isFormField ? " {...$formField}" : ""} listener={fragment} ${extractDatasetInfo(element)} ${transformAttrs(element, context)} ${getDisplayExpression2 ? `displayExpression=${getDisplayExpression2}` : ""} >`;
44987
45095
  },
44988
45096
  post: (element) => "</WmSwitch>",
44989
- imports: (element) => imports53
45097
+ imports: (element) => imports44
44990
45098
  };
44991
45099
 
44992
45100
  // src/transpile/components/input/slider.transformer.ts
44993
- var imports54 = [
45101
+ var imports45 = [
44994
45102
  { name: "WmSlider", from: "@wavemaker-ai/react-runtime/components/input/slider" }
44995
45103
  ];
44996
45104
  var slider_transformer_default = {
@@ -45011,11 +45119,11 @@ var slider_transformer_default = {
45011
45119
  ${getToolTipExpression ? `getToolTipExpression=${getToolTipExpression}` : ""}>`;
45012
45120
  },
45013
45121
  post: (element, context) => "</WmSlider>",
45014
- imports: (element, context) => imports54
45122
+ imports: (element, context) => imports45
45015
45123
  };
45016
45124
 
45017
45125
  // src/transpile/components/input/select.transformer.ts
45018
- var imports55 = [
45126
+ var imports46 = [
45019
45127
  { name: "WmSelect", from: "@wavemaker-ai/react-runtime/components/input/select" }
45020
45128
  ];
45021
45129
  var getOnChangeExpr2 = (element) => {
@@ -45058,11 +45166,11 @@ var select_transformer_default = {
45058
45166
  ${dataPath ? `dataPath="${dataPath}"` : ""}>`;
45059
45167
  },
45060
45168
  post: (element, context) => "</WmSelect>",
45061
- imports: (element, context) => imports55
45169
+ imports: (element, context) => imports46
45062
45170
  };
45063
45171
 
45064
45172
  // src/transpile/components/input/rating.transformer.ts
45065
- var imports56 = [
45173
+ var imports47 = [
45066
45174
  { name: "WmRating", from: "@wavemaker-ai/react-runtime/components/input/rating" }
45067
45175
  ];
45068
45176
  var rating_transformer_default = {
@@ -45075,11 +45183,11 @@ var rating_transformer_default = {
45075
45183
  return `<WmRating ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)} ${getDisplayExpression2 ? `getDisplayExpression=${getDisplayExpression2}` : ""}>`;
45076
45184
  },
45077
45185
  post: (element, context) => "</WmRating>",
45078
- imports: (element, context) => imports56
45186
+ imports: (element, context) => imports47
45079
45187
  };
45080
45188
 
45081
45189
  // src/transpile/components/input/radio-set.transformer.ts
45082
- var imports57 = [
45190
+ var imports48 = [
45083
45191
  {
45084
45192
  name: "WmRadioset",
45085
45193
  from: "@wavemaker-ai/react-runtime/components/input/default/radioset"
@@ -45095,11 +45203,11 @@ var radio_set_transformer_default = {
45095
45203
  return `<WmRadioset ${isFormField ? " {...$formField}" : ""} listener={fragment} ${extractDatasetInfo(element)} ${transformAttrs(element, context)} ${getDisplayExpression2 ? `getDisplayExpression=${getDisplayExpression2}` : ""} >`;
45096
45204
  },
45097
45205
  post: (element) => "</WmRadioset>",
45098
- imports: (element) => imports57
45206
+ imports: (element) => imports48
45099
45207
  };
45100
45208
 
45101
45209
  // src/transpile/components/input/currency.transformer.ts
45102
- var imports58 = [
45210
+ var imports49 = [
45103
45211
  {
45104
45212
  name: "WmCurrency",
45105
45213
  from: "@wavemaker-ai/react-runtime/components/input/currency"
@@ -45111,11 +45219,11 @@ var currency_transformer_default = {
45111
45219
  return `<WmCurrency ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)}>`;
45112
45220
  },
45113
45221
  post: (element) => "</WmCurrency>",
45114
- imports: (element) => imports58
45222
+ imports: (element) => imports49
45115
45223
  };
45116
45224
 
45117
45225
  // src/transpile/components/input/checkbox.transformer.ts
45118
- var imports59 = [
45226
+ var imports50 = [
45119
45227
  {
45120
45228
  name: "WmCheckbox",
45121
45229
  from: "@wavemaker-ai/react-runtime/components/input/default/checkbox"
@@ -45145,11 +45253,11 @@ var checkbox_transformer_default = {
45145
45253
  return `<WmCheckbox ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context, transformNameInList)}>`;
45146
45254
  },
45147
45255
  post: (element, context) => "</WmCheckbox>",
45148
- imports: (element, context) => imports59
45256
+ imports: (element, context) => imports50
45149
45257
  };
45150
45258
 
45151
45259
  // src/transpile/components/input/checkbox-set.transformer.ts
45152
- var imports60 = [
45260
+ var imports51 = [
45153
45261
  {
45154
45262
  name: "WmCheckboxset",
45155
45263
  from: "@wavemaker-ai/react-runtime/components/input/default/checkboxset"
@@ -45169,11 +45277,11 @@ var checkbox_set_transformer_default = {
45169
45277
  return `<WmCheckboxset ${isFormField ? " {...$formField}" : ""} listener={fragment} ${extractDatasetInfo(element)} ${transformAttrs(element, context)} ${getDisplayExpression2 ? `getDisplayExpression=${getDisplayExpression2}` : ""} >`;
45170
45278
  },
45171
45279
  post: (element) => "</WmCheckboxset>",
45172
- imports: (element) => imports60
45280
+ imports: (element) => imports51
45173
45281
  };
45174
45282
 
45175
45283
  // src/transpile/components/container/accordion.transformer.ts
45176
- var imports61 = [
45284
+ var imports52 = [
45177
45285
  {
45178
45286
  name: "WmAccordion",
45179
45287
  from: "@wavemaker-ai/react-runtime/components/container/accordion"
@@ -45209,7 +45317,7 @@ var accordion_transformer_default = {
45209
45317
  }
45210
45318
  return "</WmAccordion>";
45211
45319
  },
45212
- imports: (element, context) => imports61,
45320
+ imports: (element, context) => imports52,
45213
45321
  createComponent: (element, context) => {
45214
45322
  context.props = [];
45215
45323
  return createComponent2(element, context);
@@ -45217,7 +45325,7 @@ var accordion_transformer_default = {
45217
45325
  };
45218
45326
 
45219
45327
  // src/transpile/components/container/accordion-pane.transformer.ts
45220
- var imports62 = [
45328
+ var imports53 = [
45221
45329
  {
45222
45330
  name: "WmAccordionPane",
45223
45331
  from: "@wavemaker-ai/react-runtime/components/container/accordion/accordion-pane"
@@ -45226,19 +45334,7 @@ var imports62 = [
45226
45334
  var accordion_pane_transformer_default = {
45227
45335
  pre: (element, context) => {
45228
45336
  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
- }
45337
+ const { partialAttr } = withPartialContainer(element, context, { prop: "render" });
45242
45338
  element.setAttribute(
45243
45339
  "key",
45244
45340
  element.getAttribute("title") || element.getAttribute("name") || ""
@@ -45248,14 +45344,14 @@ var accordion_pane_transformer_default = {
45248
45344
  if (typeofdynamic && name) {
45249
45345
  element.removeAttribute("name");
45250
45346
  }
45251
- return `<WmAccordionPane ${typeofdynamic && name ? `name={ "accordion_" + $index + "${name}" }` : ""} ${transformAttrs(element, context)} ${partial}>`;
45347
+ return `<WmAccordionPane ${typeofdynamic && name ? `name={ "accordion_" + $index + "${name}" }` : ""} ${transformAttrs(element, context)} ${partialAttr}>`;
45252
45348
  },
45253
45349
  post: (element, context) => "</WmAccordionPane>",
45254
- imports: (element, context) => imports62.concat(partial_container_transformer_default.imports(element, context))
45350
+ imports: (element, context) => imports53.concat(getPartialImports(element, context))
45255
45351
  };
45256
45352
 
45257
45353
  // src/transpile/components/input/file-upload.transformer.ts
45258
- var imports63 = [
45354
+ var imports54 = [
45259
45355
  {
45260
45356
  name: "WmFileupload",
45261
45357
  from: "@wavemaker-ai/react-runtime/components/input/fileupload"
@@ -45283,11 +45379,11 @@ var file_upload_transformer_default = {
45283
45379
  return `<WmFileupload ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)}>`;
45284
45380
  },
45285
45381
  post: (element, context) => "</WmFileupload>",
45286
- imports: (element, context) => imports63
45382
+ imports: (element, context) => imports54
45287
45383
  };
45288
45384
 
45289
45385
  // src/transpile/components/input/upload.transformer.ts
45290
- var imports64 = [
45386
+ var imports55 = [
45291
45387
  {
45292
45388
  name: "WmUpload",
45293
45389
  from: "@wavemaker-ai/react-runtime/components/input/upload"
@@ -45299,11 +45395,11 @@ var upload_transformer_default = {
45299
45395
  return `<WmUpload ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)}>`;
45300
45396
  },
45301
45397
  post: (element, context) => "</WmUpload>",
45302
- imports: (element, context) => imports64
45398
+ imports: (element, context) => imports55
45303
45399
  };
45304
45400
 
45305
45401
  // src/transpile/components/basic/html.transformer.ts
45306
- var imports65 = [
45402
+ var imports56 = [
45307
45403
  { name: "WmHtml", from: "@wavemaker-ai/react-runtime/components/basic/html" }
45308
45404
  ];
45309
45405
  var html_transformer_default = {
@@ -45311,11 +45407,11 @@ var html_transformer_default = {
45311
45407
  return `<WmHtml ${transformAttrs(element, context)}>`;
45312
45408
  },
45313
45409
  post: (element, context) => "</WmHtml>",
45314
- imports: (element, context) => imports65
45410
+ imports: (element, context) => imports56
45315
45411
  };
45316
45412
 
45317
45413
  // src/transpile/components/basic/progress-bar.transformer.ts
45318
- var imports66 = [
45414
+ var imports57 = [
45319
45415
  {
45320
45416
  name: "WmProgressBar",
45321
45417
  from: "@wavemaker-ai/react-runtime/components/basic/progress-bar"
@@ -45326,11 +45422,11 @@ var progress_bar_transformer_default = {
45326
45422
  return `<WmProgressBar ${transformAttrs(element, context)}>`;
45327
45423
  },
45328
45424
  post: (element, context) => "</WmProgressBar>",
45329
- imports: (element, context) => imports66
45425
+ imports: (element, context) => imports57
45330
45426
  };
45331
45427
 
45332
45428
  // src/transpile/components/container/repeat-template.transformer.ts
45333
- var imports67 = [
45429
+ var imports58 = [
45334
45430
  {
45335
45431
  name: "WmRepeatTemplate",
45336
45432
  from: "@wavemaker-ai/react-runtime/components/container/repeat-template"
@@ -45339,11 +45435,11 @@ var imports67 = [
45339
45435
  var repeat_template_transformer_default = {
45340
45436
  pre: (element, context) => `<WmRepeatTemplate ${transformAttrs(element, context)}>`,
45341
45437
  post: (element, context) => "</WmRepeatTemplate>",
45342
- imports: (element, context) => imports67
45438
+ imports: (element, context) => imports58
45343
45439
  };
45344
45440
 
45345
45441
  // src/transpile/components/navigation/menu.transformer.ts
45346
- var imports68 = [
45442
+ var imports59 = [
45347
45443
  { name: "WmMenu", from: "@wavemaker-ai/react-runtime/components/navigation/menu" }
45348
45444
  ];
45349
45445
  var menu_transformer_default = {
@@ -45369,11 +45465,11 @@ var menu_transformer_default = {
45369
45465
  ${itemchildrenExpression ? `itemchildren=${itemchildrenExpression}` : ""}>`;
45370
45466
  },
45371
45467
  post: (element, context) => "</WmMenu>",
45372
- imports: (element, context) => imports68
45468
+ imports: (element, context) => imports59
45373
45469
  };
45374
45470
 
45375
45471
  // src/transpile/components/basic/richtexteditor.transformer.ts
45376
- var imports69 = [
45472
+ var imports60 = [
45377
45473
  {
45378
45474
  name: "WmRichtexteditor",
45379
45475
  from: "@wavemaker-ai/react-runtime/components/basic/richtexteditor"
@@ -45386,11 +45482,11 @@ var richtexteditor_transformer_default = {
45386
45482
  return `<WmRichtexteditor listener={fragment} ${isFormField ? " {...$formField}" : ""} ${transformAttrs(element, context)} ${onChange ? `onChange={${onChange}}` : ""}>`;
45387
45483
  },
45388
45484
  post: (element, context) => "</WmRichtexteditor>",
45389
- imports: (element, context) => imports69
45485
+ imports: (element, context) => imports60
45390
45486
  };
45391
45487
 
45392
45488
  // src/transpile/components/basic/spinner.transformer.ts
45393
- var imports70 = [
45489
+ var imports61 = [
45394
45490
  {
45395
45491
  name: "WmSpinner",
45396
45492
  from: "@wavemaker-ai/react-runtime/components/basic/spinner"
@@ -45399,11 +45495,11 @@ var imports70 = [
45399
45495
  var spinner_transformer_default = {
45400
45496
  pre: (element, context) => `<WmSpinner listener={fragment} ${transformAttrs(element, context)}>`,
45401
45497
  post: (element, context) => "</WmSpinner>",
45402
- imports: (element, context) => imports70
45498
+ imports: (element, context) => imports61
45403
45499
  };
45404
45500
 
45405
45501
  // src/transpile/components/basic/progress-circle.transformer.ts
45406
- var imports71 = [
45502
+ var imports62 = [
45407
45503
  {
45408
45504
  name: "WmProgressCircle",
45409
45505
  from: "@wavemaker-ai/react-runtime/components/basic/progress-circle"
@@ -45412,11 +45508,11 @@ var imports71 = [
45412
45508
  var progress_circle_transformer_default = {
45413
45509
  pre: (element, context) => `<WmProgressCircle listener={fragment} ${transformAttrs(element, context)}>`,
45414
45510
  post: (element, context) => "</WmProgressCircle>",
45415
- imports: (element, context) => imports71
45511
+ imports: (element, context) => imports62
45416
45512
  };
45417
45513
 
45418
45514
  // src/transpile/components/basic/search.transformer.ts
45419
- var imports72 = [
45515
+ var imports63 = [
45420
45516
  { name: "WmSearch", from: "@wavemaker-ai/react-runtime/components/basic/search" }
45421
45517
  ];
45422
45518
  var search_transformer_default = {
@@ -45444,11 +45540,11 @@ var search_transformer_default = {
45444
45540
  ${getDisplayimagesrc ? `displayimagesrc=${getDisplayimagesrc} ` : ``} ${onSelect ? `onSelect={${onSelect}}` : ""}>`;
45445
45541
  },
45446
45542
  post: (element, context) => "</WmSearch>",
45447
- imports: (element, context) => imports72
45543
+ imports: (element, context) => imports63
45448
45544
  };
45449
45545
 
45450
45546
  // src/transpile/components/navigation/breadcrumb.transformer.ts
45451
- var imports73 = [
45547
+ var imports64 = [
45452
45548
  {
45453
45549
  name: "WmBreadcrumb",
45454
45550
  from: "@wavemaker-ai/react-runtime/components/navigation/breadcrumb"
@@ -45457,11 +45553,11 @@ var imports73 = [
45457
45553
  var breadcrumb_transformer_default = {
45458
45554
  pre: (element, context) => `<WmBreadcrumb listener={fragment} ${transformAttrs(element, context)}`,
45459
45555
  post: (element, context) => "/>",
45460
- imports: (element, context) => imports73
45556
+ imports: (element, context) => imports64
45461
45557
  };
45462
45558
 
45463
45559
  // src/transpile/components/input/color-picker.transformer.ts
45464
- var imports74 = [
45560
+ var imports65 = [
45465
45561
  {
45466
45562
  name: "WmColorPicker",
45467
45563
  from: "@wavemaker-ai/react-runtime/components/input/color-picker"
@@ -45473,11 +45569,11 @@ var color_picker_transformer_default = {
45473
45569
  return `<WmColorPicker ${isFormField ? " {...$formField}" : ""} listener={fragment} ${transformAttrs(element, context)}>`;
45474
45570
  },
45475
45571
  post: (element) => "</WmColorPicker>",
45476
- imports: (element) => imports74
45572
+ imports: (element) => imports65
45477
45573
  };
45478
45574
 
45479
45575
  // src/transpile/components/container/panel.transformer.ts
45480
- var imports75 = [
45576
+ var imports66 = [
45481
45577
  {
45482
45578
  name: "WmPanel, {WmPanelFooter}",
45483
45579
  from: "@wavemaker-ai/react-runtime/components/container/panel"
@@ -45485,35 +45581,23 @@ var imports75 = [
45485
45581
  ];
45486
45582
  var panel_transformer_default = {
45487
45583
  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}>`;
45584
+ const { partialAttr } = withPartialContainer(element, context, { prop: "renderPartial" });
45585
+ return `<WmPanel listener={fragment} ${transformAttrs(element, context)} ${partialAttr}>`;
45502
45586
  },
45503
45587
  post: (element, context) => "</WmPanel>",
45504
- imports: (element, context) => imports75.concat(partial_container_transformer_default.imports(element, context))
45588
+ imports: (element, context) => imports66.concat(getPartialImports(element, context))
45505
45589
  };
45506
45590
 
45507
45591
  // src/transpile/components/container/panel-footer.transformer.ts
45508
- var imports76 = [];
45592
+ var imports67 = [];
45509
45593
  var panel_footer_transformer_default = {
45510
45594
  pre: (element, context) => `<WmPanelFooter ${transformAttrs(element, context)}>`,
45511
45595
  post: (element, context) => "</WmPanelFooter>",
45512
- imports: (element, context) => imports76
45596
+ imports: (element, context) => imports67
45513
45597
  };
45514
45598
 
45515
45599
  // src/transpile/components/container/panel-content.transformer.ts
45516
- var imports77 = [
45600
+ var imports68 = [
45517
45601
  {
45518
45602
  name: "WmPanelContent",
45519
45603
  from: "@wavemaker-ai/react-runtime/components/container/panel/components/panel-content"
@@ -45522,11 +45606,11 @@ var imports77 = [
45522
45606
  var panel_content_transformer_default = {
45523
45607
  pre: (element, context) => `<WmPanelContent ${transformAttrs(element, context)}>`,
45524
45608
  post: (element, context) => "</WmPanelContent>",
45525
- imports: (element, context) => imports77
45609
+ imports: (element, context) => imports68
45526
45610
  };
45527
45611
 
45528
45612
  // src/transpile/components/input/epoch/date.transformer.ts
45529
- var imports78 = [
45613
+ var imports69 = [
45530
45614
  { name: "WmDate", from: "@wavemaker-ai/react-runtime/components/input/epoch/date" }
45531
45615
  ];
45532
45616
  var date_transformer_default = {
@@ -45535,11 +45619,11 @@ var date_transformer_default = {
45535
45619
  return `<WmDate listener={fragment} ${isFormField ? " {...$formField}" : ""} ${transformAttrs(element, context)}>`;
45536
45620
  },
45537
45621
  post: (element, context) => "</WmDate>",
45538
- imports: (element, context) => imports78
45622
+ imports: (element, context) => imports69
45539
45623
  };
45540
45624
 
45541
45625
  // src/transpile/components/input/epoch/time.transformer.ts
45542
- var imports79 = [
45626
+ var imports70 = [
45543
45627
  { name: "WmTime", from: "@wavemaker-ai/react-runtime/components/input/epoch/time" }
45544
45628
  ];
45545
45629
  var time_transformer_default = {
@@ -45548,11 +45632,11 @@ var time_transformer_default = {
45548
45632
  return `<WmTime listener={fragment} ${isFormField ? " {...$formField}" : ""} ${transformAttrs(element, context)}>`;
45549
45633
  },
45550
45634
  post: (element, context) => "</WmTime>",
45551
- imports: (element, context) => imports79
45635
+ imports: (element, context) => imports70
45552
45636
  };
45553
45637
 
45554
45638
  // src/transpile/components/input/epoch/datetime.transformer.ts
45555
- var imports80 = [
45639
+ var imports71 = [
45556
45640
  { name: "WmDatetime", from: "@wavemaker-ai/react-runtime/components/input/epoch/datetime" }
45557
45641
  ];
45558
45642
  var datetime_transformer_default = {
@@ -45561,11 +45645,11 @@ var datetime_transformer_default = {
45561
45645
  return `<WmDatetime listener={fragment} ${isFormField ? " {...$formField}" : ""} ${transformAttrs(element, context)}>`;
45562
45646
  },
45563
45647
  post: (element, context) => "</WmDatetime>",
45564
- imports: (element, context) => imports80
45648
+ imports: (element, context) => imports71
45565
45649
  };
45566
45650
 
45567
45651
  // src/transpile/components/dialogs/login-dialog.transformer.ts
45568
- var imports81 = [
45652
+ var imports72 = [
45569
45653
  {
45570
45654
  name: "WmLoginDialog",
45571
45655
  from: "@wavemaker-ai/react-runtime/components/dialogs/login-dialog"
@@ -45596,11 +45680,11 @@ var login_dialog_transformer_default = {
45596
45680
  return `<WmLoginDialog eventsource={fragment?.Actions?.loginAction} listener={fragment} ${transformAttrs(element, context)} >`;
45597
45681
  },
45598
45682
  post: (element, context) => "</WmLoginDialog>",
45599
- imports: (element, context) => imports81
45683
+ imports: (element, context) => imports72
45600
45684
  };
45601
45685
 
45602
45686
  // src/transpile/components/advanced/login.transformer.ts
45603
- var imports82 = [
45687
+ var imports73 = [
45604
45688
  {
45605
45689
  name: "WmLogin",
45606
45690
  from: "@wavemaker-ai/react-runtime/components/advanced/login"
@@ -45619,21 +45703,21 @@ var login_transformer_default = {
45619
45703
  return `<WmLogin listener={fragment} eventSource={fragment?.Actions.loginAction} ${transformAttrs(element, context)} >`;
45620
45704
  },
45621
45705
  post: (element, context) => "</WmLogin>",
45622
- imports: (element, context) => imports82
45706
+ imports: (element, context) => imports73
45623
45707
  };
45624
45708
 
45625
45709
  // src/transpile/components/input/calendar.transformer.ts
45626
- var imports83 = [
45710
+ var imports74 = [
45627
45711
  { name: "WmCalendar", from: "@wavemaker-ai/react-runtime/components/input/calendar" }
45628
45712
  ];
45629
45713
  var calendar_transformer_default = {
45630
45714
  pre: (element, context) => `<WmCalendar listener={fragment} ${transformAttrs(element, context)}>`,
45631
45715
  post: (element, context) => "</WmCalendar>",
45632
- imports: (element, context) => imports83
45716
+ imports: (element, context) => imports74
45633
45717
  };
45634
45718
 
45635
45719
  // src/transpile/components/advanced/marquee.transformer.ts
45636
- var imports84 = [
45720
+ var imports75 = [
45637
45721
  {
45638
45722
  name: "WmMarquee",
45639
45723
  from: "@wavemaker-ai/react-runtime/components/advanced/marquee"
@@ -45642,11 +45726,11 @@ var imports84 = [
45642
45726
  var marquee_transformer_default = {
45643
45727
  pre: (element, context) => `<WmMarquee ${transformAttrs(element, context)}>`,
45644
45728
  post: (element, context) => "</WmMarquee>",
45645
- imports: (element, context) => imports84
45729
+ imports: (element, context) => imports75
45646
45730
  };
45647
45731
 
45648
45732
  // src/transpile/components/advanced/carousel.transformer.ts
45649
- var imports85 = [
45733
+ var imports76 = [
45650
45734
  {
45651
45735
  name: "WmCarousel",
45652
45736
  from: "@wavemaker-ai/react-runtime/components/advanced/carousel"
@@ -45686,7 +45770,7 @@ var carousel_transformer_default = {
45686
45770
  }
45687
45771
  return "</WmCarousel>";
45688
45772
  },
45689
- imports: (element, context) => imports85,
45773
+ imports: (element, context) => imports76,
45690
45774
  createComponent: (element, context) => {
45691
45775
  if (!context.data.listCount) {
45692
45776
  context.props = context.get("old_props") || [];
@@ -45698,7 +45782,7 @@ var carousel_transformer_default = {
45698
45782
  };
45699
45783
 
45700
45784
  // src/transpile/components/advanced/carousel-template.transformer.ts
45701
- var imports86 = [
45785
+ var imports77 = [
45702
45786
  {
45703
45787
  name: "WmCarouselTemplate",
45704
45788
  from: "@wavemaker-ai/react-runtime/components/advanced/carousel/template"
@@ -45707,21 +45791,21 @@ var imports86 = [
45707
45791
  var carousel_template_transformer_default = {
45708
45792
  pre: (element, context) => `<WmCarouselTemplate ${transformAttrs(element, context)}>`,
45709
45793
  post: (element, context) => "</WmCarouselTemplate>",
45710
- imports: (element, context) => imports86
45794
+ imports: (element, context) => imports77
45711
45795
  };
45712
45796
 
45713
45797
  // src/transpile/components/chart/chart.transformer.ts
45714
- var imports87 = [
45798
+ var imports78 = [
45715
45799
  { name: "WmChart", from: "@wavemaker-ai/react-runtime/components/chart" }
45716
45800
  ];
45717
45801
  var chart_transformer_default = {
45718
45802
  pre: (element, context) => `<WmChart listener={fragment} ${transformAttrs(element, context)} >`,
45719
45803
  post: (element, context) => "</WmChart>",
45720
- imports: (element, context) => imports87
45804
+ imports: (element, context) => imports78
45721
45805
  };
45722
45806
 
45723
45807
  // src/transpile/components/input/chips.transformer.ts
45724
- var imports88 = [
45808
+ var imports79 = [
45725
45809
  { name: "WmChips", from: "@wavemaker-ai/react-runtime/components/input/chips" }
45726
45810
  ];
45727
45811
  var chips_transformer_default = {
@@ -45735,66 +45819,54 @@ var chips_transformer_default = {
45735
45819
  return `<WmChips listener={fragment} ${isFormField ? " {...$formField}" : ""} ${getDisplayExpression2 ? `displayexpression=${getDisplayExpression2}` : ""} ${extractDatasetInfo(element)} ${transformAttrs(element, context)}>`;
45736
45820
  },
45737
45821
  post: (element, context) => "</WmChips>",
45738
- imports: (element, context) => imports88
45822
+ imports: (element, context) => imports79
45739
45823
  };
45740
45824
 
45741
45825
  // src/transpile/components/data/card/card.transformer.ts
45742
- var imports89 = [
45826
+ var imports80 = [
45743
45827
  { name: "WmCard", from: "@wavemaker-ai/react-runtime/components/data/card" }
45744
45828
  ];
45745
45829
  var card_transformer_default = {
45746
45830
  pre: (element, context) => `<WmCard ${transformAttrs(element, context)} listener={fragment} cardItem={typeof $item !== "undefined" ? $item : {}}>`,
45747
45831
  post: (element, context) => "</WmCard>",
45748
- imports: (element, context) => imports89
45832
+ imports: (element, context) => imports80
45749
45833
  };
45750
45834
 
45751
45835
  // src/transpile/components/data/card/card-content.transformer.ts
45752
- var imports90 = [
45836
+ var imports81 = [
45753
45837
  { name: "WmCardContent", from: "@wavemaker-ai/react-runtime/components/data/card/card-content" }
45754
45838
  ];
45755
45839
  var card_content_transformer_default = {
45756
45840
  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}>`;
45841
+ const { partialAttr } = withPartialContainer(element, context, { prop: "renderPartial" });
45842
+ return `<WmCardContent ${transformAttrs(element, context)} ${partialAttr}>`;
45771
45843
  },
45772
45844
  post: (element, context) => "</WmCardContent>",
45773
- imports: (element, context) => imports90.concat(partial_container_transformer_default.imports(element, context))
45845
+ imports: (element, context) => imports81.concat(getPartialImports(element, context))
45774
45846
  };
45775
45847
 
45776
45848
  // src/transpile/components/data/card/card-footer.transformer.ts
45777
- var imports91 = [
45849
+ var imports82 = [
45778
45850
  { name: "WmCardFooter", from: "@wavemaker-ai/react-runtime/components/data/card/card-footer" }
45779
45851
  ];
45780
45852
  var card_footer_transformer_default = {
45781
45853
  pre: (element, context) => `<WmCardFooter ${transformAttrs(element, context)}>`,
45782
45854
  post: (element, context) => "</WmCardFooter>",
45783
- imports: (element, context) => imports91
45855
+ imports: (element, context) => imports82
45784
45856
  };
45785
45857
 
45786
45858
  // src/transpile/components/data/card/card-actions.transformer.ts
45787
- var imports92 = [
45859
+ var imports83 = [
45788
45860
  { name: "WmCardActions", from: "@wavemaker-ai/react-runtime/components/data/card/card-actions" }
45789
45861
  ];
45790
45862
  var card_actions_transformer_default = {
45791
45863
  pre: (element, context) => `<WmCardActions ${transformAttrs(element, context)}>`,
45792
45864
  post: (element, context) => "</WmCardActions>",
45793
- imports: (element, context) => imports92
45865
+ imports: (element, context) => imports83
45794
45866
  };
45795
45867
 
45796
45868
  // src/transpile/components/basic/tree.transformer.ts
45797
- var imports93 = [
45869
+ var imports84 = [
45798
45870
  {
45799
45871
  name: "WmTree",
45800
45872
  from: "@wavemaker-ai/react-runtime/components/basic/tree"
@@ -45803,11 +45875,11 @@ var imports93 = [
45803
45875
  var tree_transformer_default = {
45804
45876
  pre: (element, context) => `<WmTree listener={fragment} ${transformAttrs(element, context)}>`,
45805
45877
  post: (element, context) => "</WmTree>",
45806
- imports: (element, context) => imports93
45878
+ imports: (element, context) => imports84
45807
45879
  };
45808
45880
 
45809
45881
  // src/transpile/components/container/wizard.transformer.ts
45810
- var imports94 = [
45882
+ var imports85 = [
45811
45883
  { name: "WmWizard", from: "@wavemaker-ai/react-runtime/components/container/wizard" }
45812
45884
  ];
45813
45885
  var wizard_transformer_default = {
@@ -45874,7 +45946,7 @@ var wizard_transformer_default = {
45874
45946
  }
45875
45947
  return "</WmWizard>";
45876
45948
  },
45877
- imports: (element, context) => imports94,
45949
+ imports: (element, context) => imports85,
45878
45950
  createComponent: (element, context) => {
45879
45951
  if (!context.data.listCount) {
45880
45952
  context.props = context.get("old_props") || [];
@@ -45886,7 +45958,7 @@ var wizard_transformer_default = {
45886
45958
  };
45887
45959
 
45888
45960
  // src/transpile/components/container/wizardstep.transformer.ts
45889
- var imports95 = [
45961
+ var imports86 = [
45890
45962
  {
45891
45963
  name: "WmWizardstep",
45892
45964
  from: "@wavemaker-ai/react-runtime/components/container/wizard/wizard-step"
@@ -45921,44 +45993,20 @@ function getNearestWizardType(element) {
45921
45993
  }
45922
45994
  var wizardstep_transformer_default = {
45923
45995
  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
- }
45996
+ const { partialAttr } = withPartialContainer(element, context, { prop: "render" });
45942
45997
  const onNext = getOnNext(element);
45943
45998
  const onPrev = getOnPrev(element);
45944
45999
  element.removeAttribute("on-next");
45945
46000
  element.removeAttribute("on-prev");
45946
46001
  const type = getNearestWizardType(element);
45947
- if ((type && type == "dynamic" || element.childNodes && element.childNodes.length > 0) && !partial) {
46002
+ if ((type && type == "dynamic" || element.childNodes && element.childNodes.length > 0) && !partialAttr) {
45948
46003
  return `<WmWizardstep ${transformAttrs(element, context)}
45949
46004
  ${onNext ? `onNext={${onNext}}` : ""} ${onPrev ? `onPrev={${onPrev}}` : ""} render={(props:Record<string, any>, onLoad:()=>void) => (<>`;
45950
46005
  }
45951
46006
  return `<WmWizardstep ${transformAttrs(element, context)}
45952
- ${onNext ? `onNext={${onNext}}` : ""} ${onPrev ? `onPrev={${onPrev}}` : ""} ${partial} >`;
46007
+ ${onNext ? `onNext={${onNext}}` : ""} ${onPrev ? `onPrev={${onPrev}}` : ""} ${partialAttr} >`;
45953
46008
  },
45954
46009
  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
46010
  const type = getNearestWizardType(element);
45963
46011
  const hasPartial = !!element.getAttribute("content");
45964
46012
  if ((type && type == "dynamic" || element.childNodes && element.childNodes.length > 0) && !hasPartial) {
@@ -45966,11 +46014,11 @@ var wizardstep_transformer_default = {
45966
46014
  }
45967
46015
  return "</WmWizardstep>";
45968
46016
  },
45969
- imports: (element, context) => imports95
46017
+ imports: (element, context) => imports86
45970
46018
  };
45971
46019
 
45972
46020
  // src/transpile/components/container/wizardaction.transformer.ts
45973
- var imports96 = [
46021
+ var imports87 = [
45974
46022
  {
45975
46023
  name: "WmWizardAction",
45976
46024
  from: "@wavemaker-ai/react-runtime/components/container/wizard/wizard-action"
@@ -46075,11 +46123,11 @@ renderActions={(actions: any) => (<>`;
46075
46123
  )}
46076
46124
  >
46077
46125
  </WmWizardAction>`,
46078
- imports: (element, context) => imports96
46126
+ imports: (element, context) => imports87
46079
46127
  };
46080
46128
 
46081
46129
  // src/transpile/components/basic/message.transformer.ts
46082
- var imports97 = [
46130
+ var imports88 = [
46083
46131
  {
46084
46132
  name: "WmMessage",
46085
46133
  from: "@wavemaker-ai/react-runtime/components/basic/message"
@@ -46088,48 +46136,14 @@ var imports97 = [
46088
46136
  var message_transformer_default = {
46089
46137
  pre: (element, context) => `<WmMessage ${transformAttrs(element, context)}>`,
46090
46138
  post: (element, context) => "</WmMessage>",
46091
- imports: (element, context) => imports97
46139
+ imports: (element, context) => imports88
46092
46140
  };
46093
46141
 
46094
- // src/transpile/components/data/liveform.transformer.ts
46142
+ // src/transpile/components/data/live-form-shared.ts
46095
46143
  var import_lodash9 = __toESM(require_lodash());
46096
- var imports98 = [
46097
- { name: "WmLiveForm", from: "@wavemaker-ai/react-runtime/components/data/live-form" }
46098
- ];
46099
46144
  var getDataSetExpr = (element, bindExpr) => {
46100
46145
  return element.getAttribute("isLogin") ? "" : `${bindExpr}[widget.props.name] = newVal;`;
46101
46146
  };
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
46147
  var getFormSubmitExpr2 = (element) => {
46134
46148
  const dataset = element.getAttribute("dataset");
46135
46149
  if (dataset) {
@@ -46169,23 +46183,54 @@ var getFormSuccessExpr = (element) => {
46169
46183
  }
46170
46184
  }
46171
46185
  };
46172
- var pluckFormActionNodes2 = (element, actions = []) => {
46186
+ var getOnChangeExpr3 = (element, options) => {
46187
+ var _a;
46188
+ const formDataSet = ((_a = element.getAttribute("dataset")) == null ? void 0 : _a.split(":")) || [];
46189
+ let bindExpr = (formDataSet == null ? void 0 : formDataSet.length) > 1 ? formDataSet[1] : null;
46190
+ if (!bindExpr || (bindExpr == null ? void 0 : bindExpr.includes("Widgets"))) {
46191
+ return "";
46192
+ }
46193
+ let currentNode = element.parentNode;
46194
+ const variableArr = bindExpr.match(options.variableRegex);
46195
+ const variableName = variableArr && variableArr.length ? variableArr[0] : null;
46196
+ while (currentNode) {
46197
+ if (currentNode.rawTagName === "wm-liveform") {
46198
+ element.setAttribute("parentForm", currentNode.getAttribute("name") || "");
46199
+ element.setAttribute("childdatasetnode", element.getAttribute("name") || "");
46200
+ break;
46201
+ } else if ((currentNode.rawTagName === "wm-prefab" || currentNode.rawTagName === "wm-prefab-container")) {
46202
+ const prefabParentForm = currentNode.getAttribute("parentForm");
46203
+ if (prefabParentForm) {
46204
+ element.setAttribute("parentForm", prefabParentForm);
46205
+ }
46206
+ }
46207
+ currentNode = currentNode.parentNode;
46208
+ }
46209
+ return `
46210
+ ($event, widget, newVal, oldVal) => {
46211
+ if(${variableName}?.twoWayBinding && newVal !== oldVal) {
46212
+ ${bindExpr !== null ? getDataSetExpr(element, bindExpr) : ""}
46213
+ }
46214
+ }
46215
+ `;
46216
+ };
46217
+ var pluckFormActionNodes2 = (element, actionTags, actions = []) => {
46173
46218
  if (element.childNodes.length) {
46174
46219
  (0, import_lodash9.forEach)(element.childNodes, (n) => {
46175
46220
  if (isHTMLElement(n) && n.rawTagName === "wm-form") {
46176
46221
  return;
46177
- } else if (isHTMLElement(n) && n.rawTagName === "wm-form-action") {
46222
+ } else if (isHTMLElement(n) && actionTags.includes(n.rawTagName)) {
46178
46223
  actions.push(n);
46179
46224
  n.remove();
46180
46225
  } else {
46181
- pluckFormActionNodes2(n, actions);
46226
+ pluckFormActionNodes2(n, actionTags, actions);
46182
46227
  }
46183
46228
  });
46184
46229
  return actions;
46185
46230
  }
46186
46231
  };
46187
- var setFormActions2 = (element, context) => {
46188
- const formActions = pluckFormActionNodes2(element);
46232
+ var setFormActions2 = (element, context, actionTags) => {
46233
+ const formActions = pluckFormActionNodes2(element, actionTags);
46189
46234
  const formFooter = parse5(`<wm-form-footer></wm-form-footer>`).firstChild;
46190
46235
  formActions.forEach((formAction) => {
46191
46236
  formAction.setAttribute("formKey", element.attrs["name"]);
@@ -46200,9 +46245,16 @@ var setFormActions2 = (element, context) => {
46200
46245
  formBody.childNodes.push(formFooter);
46201
46246
  }
46202
46247
  };
46248
+
46249
+ // src/transpile/components/data/liveform.transformer.ts
46250
+ var imports89 = [
46251
+ { name: "WmLiveForm", from: "@wavemaker-ai/react-runtime/components/data/live-form" }
46252
+ ];
46253
+ var FORM_ACTION_TAGS = ["wm-form-action"];
46203
46254
  var liveform_transformer_default = {
46204
46255
  pre: (element, context) => {
46205
- const onChange = getOnChangeExpr3(element);
46256
+ const onChange = getOnChangeExpr3(element, {
46257
+ variableRegex: /fragment\.Variables\??\.[^.?]+/g});
46206
46258
  const formSubmit = getFormSubmitExpr2(element);
46207
46259
  const formSuccess = getFormSuccessExpr(element);
46208
46260
  const datasetAttr = element.getAttribute("dataset");
@@ -46214,7 +46266,7 @@ var liveform_transformer_default = {
46214
46266
  element.setAttribute("datasource", `{fragment?.Variables?.${variableName}}`);
46215
46267
  }
46216
46268
  }
46217
- setFormActions2(element);
46269
+ setFormActions2(element, context, FORM_ACTION_TAGS);
46218
46270
  return `<WmLiveForm listener={fragment} ${transformAttrs(element, context)}
46219
46271
  ${onChange ? `onChange={${onChange}}` : ""}
46220
46272
  ${formSuccess ? `formSuccess={${formSuccess}}` : ""}
@@ -46222,63 +46274,11 @@ var liveform_transformer_default = {
46222
46274
  ${datasourceAttr ? `datasource={${datasourceAttr}}` : ""}>`;
46223
46275
  },
46224
46276
  post: (element, context) => `</WmLiveForm>`,
46225
- imports: (element, context) => imports98
46277
+ imports: (element, context) => imports89
46226
46278
  };
46227
46279
 
46228
- // src/transpile/components/data/table/utils.ts
46229
- function findNearestElement(element, tagName) {
46230
- var _a, _b;
46231
- let current = element.parentNode;
46232
- const target = tagName.toLowerCase();
46233
- while (current) {
46234
- if (((_a = current.tagName) == null ? void 0 : _a.toLowerCase()) === target) {
46235
- return (_b = current.getAttribute("name")) != null ? _b : void 0;
46236
- }
46237
- current = current.parentNode;
46238
- }
46239
- return void 0;
46240
- }
46241
- function convertActionToClickHandler(actionAttr, tableName, liveTableName) {
46242
- const statements = actionAttr.split(";").map((s) => s.trim()).filter(Boolean);
46243
- const converted = statements.map((statement) => {
46244
- statement = convertHyphenatedPropsToBracketNotation(statement);
46245
- let cleaned = statement.replace(/\$event/g, "event");
46246
- if (cleaned.startsWith("event.")) return cleaned;
46247
- if (cleaned.startsWith("Actions") || cleaned.startsWith("Variables") || cleaned.startsWith("Widgets")) {
46248
- return `fragment.${cleaned}`;
46249
- }
46250
- if (cleaned.includes("(")) {
46251
- const funcName = cleaned.split("(")[0];
46252
- if (tableName && funcName.startsWith(`${tableName}_`)) {
46253
- return `fragment.${cleaned}`;
46254
- }
46255
- if (cleaned.includes("(event)")) {
46256
- cleaned = cleaned.replace("(event)", "(event, widget, row)");
46257
- }
46258
- if (liveTableName && (funcName.endsWith("addNewRow") || funcName.endsWith("editRow"))) {
46259
- return `fragment.Widgets.${liveTableName}.${cleaned}`;
46260
- }
46261
- return tableName ? `fragment.Widgets.${tableName}.${cleaned}` : `fragment.${cleaned}`;
46262
- }
46263
- return `fragment.${cleaned}`;
46264
- });
46265
- return `onClick={(event, widget, row) => {
46266
- ${converted.join("\n ")}
46267
- }}`;
46268
- }
46269
- function transformTableColumnClassExpression(expression) {
46270
- if (!expression) return "";
46271
- let transformed = expression.replace(/fragment\??\.row/g, "rowData");
46272
- transformed = transformed.replace(/\brow\./g, "rowData.");
46273
- transformed = transformed.replace(/\brow\[/g, "rowData[");
46274
- transformed = addOptionalChaining(transformed);
46275
- transformed = transformed.replace(/(\w+)\?\.\s*\(/g, "$1(");
46276
- transformed = transformed.replace(/"([^"]*)"/g, "'$1'");
46277
- return transformed;
46278
- }
46279
-
46280
46280
  // src/transpile/components/data/table/table-column.transformer.ts
46281
- var imports99 = [
46281
+ var imports90 = [
46282
46282
  { name: "WmTableColumn", from: "@wavemaker-ai/react-runtime/components/data/table/table-column" }
46283
46283
  ];
46284
46284
  function transformColAttr(element) {
@@ -46332,6 +46332,7 @@ var table_column_transformer_default = {
46332
46332
  updatedElement.setAttribute("class", combinedClass);
46333
46333
  }
46334
46334
  const template = element.childNodes.find((c) => isHTMLElement(c));
46335
+ const formatCellExp = getFormatCellExpression(updatedElement, context);
46335
46336
  let customExp = null;
46336
46337
  const textNodes = element.childNodes.filter((c) => c.nodeType === NodeType.TEXT_NODE);
46337
46338
  for (const textNode of textNodes) {
@@ -46346,8 +46347,8 @@ var table_column_transformer_default = {
46346
46347
  break;
46347
46348
  }
46348
46349
  }
46349
- if (template || customExp) {
46350
- context.data.isInsideTableColumn = true;
46350
+ if (template || customExp || formatCellExp) {
46351
+ context.set("isInsideTableColumn", true);
46351
46352
  if (template) {
46352
46353
  transformRepeatChildAttr(template, "fragment.row", "rowData");
46353
46354
  const tableVarName = context.get("tableDatasetVariableName");
@@ -46357,9 +46358,10 @@ var table_column_transformer_default = {
46357
46358
  }
46358
46359
  }
46359
46360
  const hasElementChildren = element.childNodes.some((c) => isHTMLElement(c));
46361
+ const cellContent = customExp || (formatCellExp ? `{${formatCellExp}}` : "");
46360
46362
  return `<WmTableColumn listener={fragment} ${!rowOperations ? `editWidgetType="${editWidgetType}"` : ""} widgetType="${widgetType}" ${colClassAttr} ${transformAttrs(updatedElement, context)}
46361
46363
  renderCellContent={(rowData:any , columnData : any) =>
46362
- (<> ${customExp ? `${customExp} </>)}` : ""} ${hasElementChildren ? "" : ">"}`;
46364
+ (<> ${cellContent ? `${cellContent} </>)}` : ""} ${hasElementChildren ? "" : ">"}`;
46363
46365
  }
46364
46366
  return `<WmTableColumn listener={fragment} ${!rowOperations ? `editWidgetType="${editWidgetType}"` : ""} widgetType="${widgetType}" ${colClassAttr} ${transformAttrs(updatedElement, context)}>`;
46365
46367
  },
@@ -46370,16 +46372,15 @@ var table_column_transformer_default = {
46370
46372
  }
46371
46373
  return "</WmTableColumn>";
46372
46374
  },
46373
- imports: (element, context) => imports99
46375
+ imports: (element, context) => imports90
46374
46376
  };
46375
46377
 
46376
46378
  // src/transpile/components/data/table/table-row.transformer.ts
46377
- var imports100 = [
46379
+ var imports91 = [
46378
46380
  { name: "WmTableRow", from: "@wavemaker-ai/react-runtime/components/data/table/table-row" }
46379
46381
  ];
46380
46382
  var table_row_transformer_default = {
46381
46383
  pre: (element, context) => {
46382
- const isPreview = context.get("preview") === true;
46383
46384
  const content = element.getAttribute("content");
46384
46385
  const widgetType = element.getAttribute("widget-type") || "button";
46385
46386
  const displayName = element.getAttribute("display-name");
@@ -46389,29 +46390,24 @@ var table_row_transformer_default = {
46389
46390
  }
46390
46391
  element.removeAttribute("widget-type");
46391
46392
  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) {
46393
+ if (content) {
46402
46394
  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})}`;
46395
+ element.setAttribute("rowType", "expansion");
46396
+ const { partialAttr } = withPartialContainer(element, context, {
46397
+ prop: "renderPartial",
46398
+ extraParams: "currentItem:any"
46399
+ });
46400
+ partial = partialAttr;
46405
46401
  element.removeAttribute("is-table-row");
46406
46402
  }
46407
46403
  return `<WmTableRow listener={fragment} widgetType="${widgetType}" ${transformAttrs(element, context)} ${partial}`;
46408
46404
  },
46409
46405
  post: (element, context) => "/>",
46410
- imports: (element, context) => imports100.concat(partial_container_transformer_default.imports(element, context))
46406
+ imports: (element, context) => imports91.concat(getPartialImports(element, context))
46411
46407
  };
46412
46408
 
46413
46409
  // src/transpile/components/data/table/table-row-action.transformer.ts
46414
- var imports101 = [
46410
+ var imports92 = [
46415
46411
  {
46416
46412
  name: "WmTableRowAction",
46417
46413
  from: "@wavemaker-ai/react-runtime/components/data/table/table-row-action"
@@ -46437,11 +46433,11 @@ var table_row_action_transformer_default = {
46437
46433
  return `<WmTableRowAction listener={fragment} widgettype="${widgetType}" ${onClickExpr} ${transformAttrs(element, context)}`;
46438
46434
  },
46439
46435
  post: (element, context) => "/>",
46440
- imports: (element, context) => imports101
46436
+ imports: (element, context) => imports92
46441
46437
  };
46442
46438
 
46443
46439
  // src/transpile/components/data/table/table-action.transformer.ts
46444
- var imports102 = [
46440
+ var imports93 = [
46445
46441
  { name: "WmTableAction", from: "@wavemaker-ai/react-runtime/components/data/table/table-action" }
46446
46442
  ];
46447
46443
  var table_action_transformer_default = {
@@ -46462,11 +46458,11 @@ var table_action_transformer_default = {
46462
46458
  return `<WmTableAction listener={fragment} ${onClickExpr} ${transformAttrs(element, context)}`;
46463
46459
  },
46464
46460
  post: (element, context) => "/>",
46465
- imports: (element, context) => imports102
46461
+ imports: (element, context) => imports93
46466
46462
  };
46467
46463
 
46468
46464
  // src/transpile/components/data/table/table-group.transformer.ts
46469
- var imports103 = [
46465
+ var imports94 = [
46470
46466
  {
46471
46467
  name: "WmTableGroup",
46472
46468
  from: "@wavemaker-ai/react-runtime/components/data/table/table-group"
@@ -46475,11 +46471,11 @@ var imports103 = [
46475
46471
  var table_group_transformer_default = {
46476
46472
  pre: (element, context) => `<WmTableGroup ${transformAttrs(element, context)}>`,
46477
46473
  post: (element, context) => "</WmTableGroup>",
46478
- imports: (element, context) => imports103
46474
+ imports: (element, context) => imports94
46479
46475
  };
46480
46476
 
46481
46477
  // src/transpile/components/data/table/live-table.transformer.ts
46482
- var imports104 = [
46478
+ var imports95 = [
46483
46479
  { name: "WmLiveTable", from: "@wavemaker-ai/react-runtime/components/data/table/live-table" }
46484
46480
  ];
46485
46481
  var live_table_transformer_default = {
@@ -46487,11 +46483,11 @@ var live_table_transformer_default = {
46487
46483
  return `<WmLiveTable listener={fragment} ${transformAttrs(element, context)}>`;
46488
46484
  },
46489
46485
  post: (element, context) => "</WmLiveTable>",
46490
- imports: (element, context) => imports104
46486
+ imports: (element, context) => imports95
46491
46487
  };
46492
46488
 
46493
46489
  // src/transpile/components/data/table/table.transformer.ts
46494
- var imports105 = [
46490
+ var imports96 = [
46495
46491
  { name: "WmTable", from: "@wavemaker-ai/react-runtime/components/data/table" }
46496
46492
  ];
46497
46493
  var table_transformer_default = {
@@ -46499,8 +46495,10 @@ var table_transformer_default = {
46499
46495
  const datasetAttr = element.getAttribute("dataset");
46500
46496
  const datasourceAttr = element.getAttribute("datasource");
46501
46497
  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$/);
46498
+ if (datasetAttr && datasetAttr.startsWith("bind:fragment.Variables.") && datasetAttr.includes(".dataSet")) {
46499
+ const match = datasetAttr.match(
46500
+ /^bind:fragment\.Variables\.([^.]+)\.dataSet(?=[^A-Za-z0-9_]|$)/
46501
+ );
46504
46502
  if (match) {
46505
46503
  const variableName = match[1];
46506
46504
  context.set("tableDatasetVariableName", variableName);
@@ -46538,67 +46536,32 @@ var table_transformer_default = {
46538
46536
  context.set("tableDatasetVariableName", void 0);
46539
46537
  return "</WmTable>";
46540
46538
  },
46541
- imports: (element, context) => imports105
46539
+ imports: (element, context) => imports96
46542
46540
  };
46543
46541
 
46544
46542
  // src/transpile/components/data/livefilter.transformer.ts
46545
- var import_lodash10 = __toESM(require_lodash());
46546
- var imports106 = [
46543
+ var imports97 = [
46547
46544
  { name: "WmLiveFilter", from: "@wavemaker-ai/react-runtime/components/data/live-filter" }
46548
46545
  ];
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
- };
46546
+ var FILTER_ACTION_TAGS = ["wm-form-action", "wm-filter-action"];
46580
46547
  var livefilter_transformer_default = {
46581
46548
  pre: (element, context) => {
46582
46549
  var _a;
46583
- setFormActions3(element);
46550
+ setFormActions2(element, context, FILTER_ACTION_TAGS);
46584
46551
  const dataSource = (_a = element.getAttribute("dataset")) == null ? void 0 : _a.split(".")[2];
46585
46552
  return `<WmLiveFilter listener={fragment} dataSource="${dataSource}" ${transformAttrs(element, context)} >`;
46586
46553
  },
46587
46554
  post: (element, context) => `</WmLiveFilter>`,
46588
- imports: (element, context) => imports106
46555
+ imports: (element, context) => imports97
46589
46556
  };
46590
46557
 
46591
46558
  // src/transpile/components/data/live-filter-field.transformer.ts
46592
- var imports107 = [
46559
+ var imports98 = [
46593
46560
  {
46594
46561
  name: "WmLiveFilterField",
46595
46562
  from: "@wavemaker-ai/react-runtime/components/data/form/form-field"
46596
46563
  }
46597
46564
  ];
46598
- var getAttribute2 = (element, attrName) => {
46599
- const value = element.getAttribute(attrName);
46600
- return value == null ? void 0 : value.replace(/"/g, "&quot;");
46601
- };
46602
46565
  var getStyleProps = (element) => {
46603
46566
  const attributes = [
46604
46567
  "fontsize",
@@ -46610,7 +46573,7 @@ var getStyleProps = (element) => {
46610
46573
  "fontstyle"
46611
46574
  ];
46612
46575
  return attributes.reduce((propsString, attr) => {
46613
- const value = getAttribute2(element, attr);
46576
+ const value = getAttribute(element, attr);
46614
46577
  if (value !== void 0) {
46615
46578
  propsString += `${attr}=${value} `;
46616
46579
  }
@@ -46618,14 +46581,14 @@ var getStyleProps = (element) => {
46618
46581
  }, "");
46619
46582
  };
46620
46583
  var extractField2 = (element, context, filterElement) => {
46621
- const widgetType = getAttribute2(element, "widget") || "text";
46622
- const widgetName = getAttribute2(element, "key") || getAttribute2(element, "name") || "text_filterWidget";
46584
+ const widgetType = getAttribute(element, "widget") || "text";
46585
+ const widgetName = getAttribute(element, "key") || getAttribute(element, "name") || "text_filterWidget";
46623
46586
  const isRange = element.getAttribute("is-range") === "true";
46624
46587
  const result = getFilterWidgetTemplate(
46625
46588
  widgetType,
46626
46589
  widgetName,
46627
46590
  element,
46628
- getAttribute2(filterElement, "filterdata"),
46591
+ getAttribute(filterElement, "filterdata"),
46629
46592
  false
46630
46593
  );
46631
46594
  if (widgetType === "number" && isRange) {
@@ -46633,7 +46596,7 @@ var extractField2 = (element, context, filterElement) => {
46633
46596
  widgetType,
46634
46597
  widgetName,
46635
46598
  element,
46636
- getAttribute2(filterElement, "filterdata"),
46599
+ getAttribute(filterElement, "filterdata"),
46637
46600
  true
46638
46601
  );
46639
46602
  return {
@@ -46646,31 +46609,31 @@ var extractField2 = (element, context, filterElement) => {
46646
46609
  var getFilterWidgetTemplate = (widgetType, widgetName, element, filterDataVariable, isMaxWidget = false) => {
46647
46610
  var _a, _b;
46648
46611
  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
46612
+ const inputName = (_b = (_a = getAttribute(element, "key")) == null ? void 0 : _a.split(".")) == null ? void 0 : _b.at(-1);
46613
+ var labelMarkup = !isMaxWidget && getAttribute(element, "displayname") ? `<wm-label
46651
46614
  required="bind:$formField.required"
46652
46615
  htmlFor="${inputName}"
46653
46616
  caption="bind:$formField.displayname"
46654
46617
  class="app-label control-label filterfield-label"
46655
46618
  conditionalclass="bind:$formField.captionCls + ' ' + $formField.invalidCls"
46656
46619
  name="${widgetName}_filterLabel"></wm-label>` : "";
46657
- const onFocus = getAttribute2(element, "on-focus");
46620
+ const onFocus = getAttribute(element, "on-focus");
46658
46621
  if (onFocus) {
46659
46622
  element.removeAttribute("on-focus");
46660
46623
  }
46661
- const onBlur = getAttribute2(element, "on-blur");
46624
+ const onBlur = getAttribute(element, "on-blur");
46662
46625
  if (onBlur) {
46663
46626
  element.removeAttribute("on-blur");
46664
46627
  }
46665
- const onTap = getAttribute2(element, "on-tap");
46628
+ const onTap = getAttribute(element, "on-tap");
46666
46629
  if (onTap) {
46667
46630
  element.removeAttribute("on-tap");
46668
46631
  }
46669
- const placeholder = getAttribute2(element, "placeholder");
46632
+ const placeholder = getAttribute(element, "placeholder");
46670
46633
  if (placeholder) {
46671
46634
  element.removeAttribute("placeholder");
46672
46635
  }
46673
- const filterfieldName = getAttribute2(element, "name");
46636
+ const filterfieldName = getAttribute(element, "name");
46674
46637
  const widgetNameSuffix = isMaxWidget ? "_maxWidget" : "";
46675
46638
  const datavalueBinding = isMaxWidget ? "bind:$formField.maxDataValue || $formField.maxdefaultvalue" : "bind:$formField.datavalue || $formField.defaultvalue";
46676
46639
  const isMaxWidgetProp = isMaxWidget ? "isMaxWidget={true}" : "";
@@ -46696,6 +46659,7 @@ var getFilterWidgetTemplate = (widgetType, widgetName, element, filterDataVariab
46696
46659
  };
46697
46660
  };
46698
46661
  var getWidgetMarkup2 = (widgetType, widgetName, commonFields, element) => {
46662
+ var _a, _b, _c, _d, _e, _f, _g, _h;
46699
46663
  let tmpl = "";
46700
46664
  const getDisplayExpr = element.getAttribute("displayexpression") || element.getAttribute("displaylabel");
46701
46665
  const displayExp = getDisplayExpr ? `displayexpression='${getDisplayExpr.replace(/'/g, "&apos;")}'` : "";
@@ -46708,20 +46672,20 @@ var getWidgetMarkup2 = (widgetType, widgetName, commonFields, element) => {
46708
46672
  currentNode = currentNode.parentNode;
46709
46673
  }
46710
46674
  const isFloatingFilter = currentNode.getAttribute("captionposition") === "floating";
46711
- const floatinglabel = filterFieldTags.includes(widgetType) && isFloatingFilter ? `floatinglabel='${element.getAttribute("displayname")}'` : "";
46675
+ const floatinglabel = filterFieldTags.includes(widgetType) && isFloatingFilter ? `floatinglabel="${(_a = element.getAttribute("displayname")) == null ? void 0 : _a.replace(/"/g, "&quot;")}"` : "";
46712
46676
  const dateTimeDialogTags = ["date", "time", "datetime"];
46713
46677
  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")}'` : ``;
46678
+ const dateheadertitle = isDateTimeTag && element.getAttribute("dateheadertitle") ? `dateheadertitle="${(_b = element.getAttribute("dateheadertitle")) == null ? void 0 : _b.replace(/"/g, "&quot;")}"` : "";
46679
+ const dateconfirmationtitle = isDateTimeTag && element.getAttribute("dateconfirmationtitle") ? `dateconfirmationtitle="${(_c = element.getAttribute("dateconfirmationtitle")) == null ? void 0 : _c.replace(/"/g, "&quot;")}"` : "";
46680
+ const datecanceltitle = isDateTimeTag && element.getAttribute("datecanceltitle") ? `datecanceltitle="${(_d = element.getAttribute("datecanceltitle")) == null ? void 0 : _d.replace(/"/g, "&quot;")}"` : "";
46681
+ const timeheadertitle = isDateTimeTag && element.getAttribute("timeheadertitle") ? `timeheadertitle="${(_e = element.getAttribute("timeheadertitle")) == null ? void 0 : _e.replace(/"/g, "&quot;")}"` : "";
46682
+ const timeconfirmationtitle = isDateTimeTag && element.getAttribute("timeconfirmationtitle") ? `timeconfirmationtitle="${(_f = element.getAttribute("timeconfirmationtitle")) == null ? void 0 : _f.replace(/"/g, "&quot;")}"` : "";
46683
+ const timecanceltitle = isDateTimeTag && element.getAttribute("timecanceltitle") ? `timecanceltitle="${(_g = element.getAttribute("timecanceltitle")) == null ? void 0 : _g.replace(/"/g, "&quot;")}"` : "";
46684
+ const outputformat = element.getAttribute("outputformat") ? `outputformat="${(_h = element.getAttribute("outputformat")) == null ? void 0 : _h.replace(/"/g, "&quot;")}"` : ``;
46721
46685
  switch (widgetType) {
46722
46686
  case "text":
46723
46687
  case "password":
46724
- let inputtype = widgetType === "password" ? "password" : getAttribute2(element, "inputtype");
46688
+ let inputtype = widgetType === "password" ? "password" : getAttribute(element, "inputtype");
46725
46689
  inputtype = inputtype ? `type=${inputtype}` : "";
46726
46690
  tmpl = `<wm-text ${inputtype} ${commonFields}
46727
46691
  updateon="bind:$formField.updateon"
@@ -46864,10 +46828,10 @@ var getWidgetMarkup2 = (widgetType, widgetName, commonFields, element) => {
46864
46828
  ></wm-slider>`;
46865
46829
  break;
46866
46830
  case "rating":
46867
- let showcaptions = getAttribute2(element, "showcaptions");
46831
+ let showcaptions = getAttribute(element, "showcaptions");
46868
46832
  showcaptions = showcaptions ? `showcaptions="bind:$formField.showcaptions"` : "";
46869
46833
  tmpl += `<wm-rating ${commonFields} ${displayExp}
46870
- ${getAttribute2(element, "dataset") ? 'dataset="bind:$formField.dataset"' : ""}
46834
+ ${getAttribute(element, "dataset") ? 'dataset="bind:$formField.dataset"' : ""}
46871
46835
  displayfield="bind:$formField.displayfield || 'value'"
46872
46836
  datafield="bind:$formField.datafield || 'key'"
46873
46837
  ${showcaptions}
@@ -46876,16 +46840,16 @@ var getWidgetMarkup2 = (widgetType, widgetName, commonFields, element) => {
46876
46840
  break;
46877
46841
  case "fileupload":
46878
46842
  case "file":
46879
- const onSelect = getAttribute2(element, "on-select");
46880
- const onDelete = getAttribute2(element, "on-delete");
46843
+ const onSelect = getAttribute(element, "on-select");
46844
+ const onDelete = getAttribute(element, "on-delete");
46881
46845
  tmpl = `<wm-fileupload ${commonFields}
46882
46846
  ${onSelect ? 'on-select="onSelect"' : ""}
46883
46847
  ${onDelete ? 'on-delete="onDelete"' : ""}
46884
46848
  ></wm-fileupload>`;
46885
46849
  break;
46886
46850
  case "upload":
46887
- const onSelectUpload = getAttribute2(element, "on-select");
46888
- const onDeleteUpload = getAttribute2(element, "on-delete");
46851
+ const onSelectUpload = getAttribute(element, "on-select");
46852
+ const onDeleteUpload = getAttribute(element, "on-delete");
46889
46853
  tmpl = `<wm-upload ${commonFields}
46890
46854
  ${onSelectUpload ? 'on-select="onSelect"' : ""}
46891
46855
  ${onDeleteUpload ? 'on-delete="onDelete"' : ""}
@@ -46906,7 +46870,7 @@ var getWidgetMarkup2 = (widgetType, widgetName, commonFields, element) => {
46906
46870
  };
46907
46871
  var live_filter_field_transformer_default = {
46908
46872
  pre: (element, context) => {
46909
- const widgetType = getAttribute2(element, "widget") || "text" /* TEXT */;
46873
+ const widgetType = getAttribute(element, "widget") || "text" /* TEXT */;
46910
46874
  let currentNode = element.parentNode;
46911
46875
  while (currentNode) {
46912
46876
  if (currentNode.rawTagName === "wm-livefilter" || currentNode.getAttribute("type") === "dynamic") {
@@ -46989,12 +46953,12 @@ var live_filter_field_transformer_default = {
46989
46953
  return `<WmLiveFilterField ${filterScope || ""} field="true" ${fieldcolumn ? `fieldcol="${fieldcolumn}"` : ""} ${transformAttrs(element, context)} renderFormFields={($formField) => (<>`;
46990
46954
  },
46991
46955
  post: (element, context) => "</>)}></WmLiveFilterField>",
46992
- imports: (element, context) => imports107,
46956
+ imports: (element, context) => imports98,
46993
46957
  createComponent: (element, context) => createComponent2(element, context)
46994
46958
  };
46995
46959
 
46996
46960
  // src/transpile/components/data/form/dynamic-fields.transformer.ts
46997
- var imports108 = [
46961
+ var imports99 = [
46998
46962
  {
46999
46963
  name: "WmDynamicFields",
47000
46964
  from: "@wavemaker-ai/react-runtime/components/data/form/dynamic-fields"
@@ -47011,11 +46975,11 @@ var dynamic_fields_transformer_default = {
47011
46975
  return `<WmDynamicFields listener={fragment} ${beforeRender ? `onBeforeRender={${beforeRender}}` : ""} ${transformAttrs(element, context)}`;
47012
46976
  },
47013
46977
  post: (element, context) => "/>",
47014
- imports: (element, context) => imports108
46978
+ imports: (element, context) => imports99
47015
46979
  };
47016
46980
 
47017
46981
  // src/transpile/components/container/linear-layout/linear-layout.ts
47018
- var imports109 = [
46982
+ var imports100 = [
47019
46983
  {
47020
46984
  name: "WmLinearlayout",
47021
46985
  from: "@wavemaker-ai/react-runtime/components/container/linear-layout"
@@ -47024,11 +46988,11 @@ var imports109 = [
47024
46988
  var linear_layout_default = {
47025
46989
  pre: (element, context) => `<WmLinearlayout iswidget="false" ${transformAttrs(element, context)}>`,
47026
46990
  post: (element, context) => "</WmLinearlayout>",
47027
- imports: (element, context) => imports109
46991
+ imports: (element, context) => imports100
47028
46992
  };
47029
46993
 
47030
46994
  // src/transpile/components/container/linear-layout/linear-layout-item.ts
47031
- var imports110 = [
46995
+ var imports101 = [
47032
46996
  {
47033
46997
  name: "WmLinearlayoutItem",
47034
46998
  from: "@wavemaker-ai/react-runtime/components/container/linear-layout/linear-layout-item"
@@ -47037,7 +47001,7 @@ var imports110 = [
47037
47001
  var linear_layout_item_default = {
47038
47002
  pre: (element, context) => `<WmLinearlayoutItem iswidget="false" ${transformAttrs(element, context)}>`,
47039
47003
  post: (element, context) => "</WmLinearlayoutItem>",
47040
- imports: (element, context) => imports110
47004
+ imports: (element, context) => imports101
47041
47005
  };
47042
47006
 
47043
47007
  // src/transpile/components/wmx-component/wmx-component.transformer.ts
@@ -47194,17 +47158,17 @@ function ensureRegistered() {
47194
47158
  }
47195
47159
  function transpileVariableDefinitions(variables, appUrl, scope) {
47196
47160
  ensureRegistered();
47197
- const imports111 = [];
47198
- const transformed = Object.values(variables != null ? variables : {}).map((v) => variable_transformer_default(v, scope, appUrl, imports111)).filter((v) => !!v);
47161
+ const imports102 = [];
47162
+ const transformed = Object.values(variables != null ? variables : {}).map((v) => variable_transformer_default(v, scope, appUrl, imports102)).filter((v) => !!v);
47199
47163
  return {
47200
47164
  variables: transformed.filter((v) => v.group === "variable"),
47201
47165
  actions: transformed.filter((v) => v.group === "action"),
47202
- imports: imports111
47166
+ imports: imports102
47203
47167
  };
47204
47168
  }
47205
47169
 
47206
47170
  // src/transpile/serialize-variables.ts
47207
- var import_lodash11 = __toESM(require_lodash());
47171
+ var import_lodash10 = __toESM(require_lodash());
47208
47172
  var isEvalExpression = (val) => /^[^\.]+\.eval\(/.test(val);
47209
47173
  var processMapMarker = (marker) => {
47210
47174
  const match = marker.match(/^__MAP__(.+?)__STRUCTURE__(.+?)__PARENT__(.+?)__ENDMAP__$/);
@@ -47242,7 +47206,7 @@ var processMapMarker = (marker) => {
47242
47206
  parts.push(`"${key}":${formatValue(overrideValue)}`);
47243
47207
  }
47244
47208
  } else {
47245
- if ((0, import_lodash11.isString)(overrideValue) && isEvalExpression(overrideValue)) {
47209
+ if ((0, import_lodash10.isString)(overrideValue) && isEvalExpression(overrideValue)) {
47246
47210
  const unwrapMatch = overrideValue.match(/\.eval\(\(\)\s*=>\s*(.+)\)$/);
47247
47211
  if (unwrapMatch) {
47248
47212
  parts.push(`"${key}":${unwrapMatch[1]}`);
@@ -47272,7 +47236,7 @@ var processMapMarker = (marker) => {
47272
47236
  return `${parentValue}.${arrayProp}.map(item=>(${mapBody}))`;
47273
47237
  };
47274
47238
  var formatValue = (val) => {
47275
- if ((0, import_lodash11.isString)(val)) {
47239
+ if ((0, import_lodash10.isString)(val)) {
47276
47240
  if (val.startsWith("__MAP__")) {
47277
47241
  return processMapMarker(val);
47278
47242
  }
@@ -47280,7 +47244,7 @@ var formatValue = (val) => {
47280
47244
  return val;
47281
47245
  }
47282
47246
  return JSON.stringify(val);
47283
- } else if ((0, import_lodash11.isNumber)(val) || val === true || val === false || val === null) {
47247
+ } else if ((0, import_lodash10.isNumber)(val) || val === true || val === false || val === null) {
47284
47248
  return String(val);
47285
47249
  } else if (Array.isArray(val)) {
47286
47250
  return JSON.stringify(val);
@@ -47330,10 +47294,10 @@ var stringifyObject = (obj) => {
47330
47294
  parts.push(`"${key}":${scopeVar}.eval(() => ({${body}}))`);
47331
47295
  } else {
47332
47296
  const baseFormatted = formatValue(baseVal);
47333
- const baseSpread = (0, import_lodash11.isString)(baseVal) && (baseVal.trim().startsWith("{") || baseVal.trim().startsWith("[")) ? `JSON.parse(${baseFormatted})` : baseFormatted;
47297
+ const baseSpread = (0, import_lodash10.isString)(baseVal) && (baseVal.trim().startsWith("{") || baseVal.trim().startsWith("[")) ? `JSON.parse(${baseFormatted})` : baseFormatted;
47334
47298
  let hasMapMarker = false;
47335
47299
  for (const nVal of Object.values(nestedProps)) {
47336
- if ((0, import_lodash11.isString)(nVal) && nVal.startsWith("__MAP__")) {
47300
+ if ((0, import_lodash10.isString)(nVal) && nVal.startsWith("__MAP__")) {
47337
47301
  hasMapMarker = true;
47338
47302
  break;
47339
47303
  }
@@ -47341,7 +47305,7 @@ var stringifyObject = (obj) => {
47341
47305
  if (hasMapMarker) {
47342
47306
  const processedProps = [`...${baseSpread}`];
47343
47307
  for (const [nKey, nVal] of Object.entries(nestedProps)) {
47344
- if ((0, import_lodash11.isString)(nVal) && nVal.startsWith("__MAP__")) {
47308
+ if ((0, import_lodash10.isString)(nVal) && nVal.startsWith("__MAP__")) {
47345
47309
  processedProps.push(`"${nKey}":${processMapMarker(nVal)}`);
47346
47310
  } else {
47347
47311
  processedProps.push(`"${nKey}":${formatValue(nVal)}`);
@@ -47444,12 +47408,12 @@ var stringifyModelParams = (input, scope) => {
47444
47408
  var quoteIfString = (arg) => {
47445
47409
  if (arg === "") return `"${arg}"`;
47446
47410
  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);
47411
+ if ((0, import_lodash10.isString)(arg) && (isEvalExpression(arg) || arg.trim().startsWith("() =>"))) return arg;
47412
+ if ((0, import_lodash10.isString)(arg) && !isEvalExpression(arg)) return JSON.stringify(arg);
47449
47413
  return arg;
47450
47414
  };
47451
47415
  var quoteKeyIfHyphen = (str) => {
47452
- if ((0, import_lodash11.isString)(str) && str.includes("-")) return JSON.stringify(str);
47416
+ if ((0, import_lodash10.isString)(str) && str.includes("-")) return JSON.stringify(str);
47453
47417
  return str;
47454
47418
  };
47455
47419
 
@@ -47576,6 +47540,9 @@ function serializeVariableEntry(v, scope, isPrefabApp, isPrefabScope, prefabName
47576
47540
  lines.push(` isStaticParams: ${stringify3(v.isStaticParams)},`);
47577
47541
  lines.push(` saveInPhonegap: ${v.saveInPhonegap},`);
47578
47542
  lines.push(` crudOperationId: '${v.crudOperationId}',`);
47543
+ if (v._id) {
47544
+ lines.push(` _id: '${v._id}',`);
47545
+ }
47579
47546
  lines.push(` transformationRequired: ${v.transformationRequired},`);
47580
47547
  if (isPrefabScope) {
47581
47548
  lines.push(` baseUrl: ${scope}.baseUrl + '/prefabs/' + ${scope}.prefabname,`);
@@ -47725,8 +47692,15 @@ export default (${scope}:any) => {
47725
47692
  `;
47726
47693
  }
47727
47694
  function transformMarkup(markup, options = { appUrl: "", prefabName: "", isPartOfPrefab: false }) {
47728
- const { isPartOfPrefab = false, variables, appUrl, prefabName } = options;
47729
- const transpiledOutput = transpileMarkup(markup, isPartOfPrefab, void 0, variables, true);
47695
+ const { isPartOfPrefab = false, variables, appUrl, prefabName, insideTableColumn } = options;
47696
+ const transpiledOutput = transpileMarkup(
47697
+ markup,
47698
+ isPartOfPrefab,
47699
+ void 0,
47700
+ variables,
47701
+ true,
47702
+ insideTableColumn
47703
+ );
47730
47704
  const transpiledVars = transpileVariableDefinitions(variables, appUrl, "Page");
47731
47705
  const variablesCode = serializeVariablesToCode(transpiledVars, "Page", {
47732
47706
  isPrefabApp: isPartOfPrefab,