@teleporthq/teleport-plugin-common 0.41.0 → 0.42.0

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 (117) hide show
  1. package/__tests__/builders/html-builders.ts +9 -2
  2. package/__tests__/node-handlers/node-to-html/index.ts +2 -0
  3. package/__tests__/node-handlers/node-to-jsx/index.ts +1 -1
  4. package/__tests__/node-handlers/node-to-jsx/utils.ts +16 -3
  5. package/dist/cjs/builders/ast-builders.d.ts +1 -0
  6. package/dist/cjs/builders/ast-builders.d.ts.map +1 -1
  7. package/dist/cjs/builders/ast-builders.js +19 -3
  8. package/dist/cjs/builders/ast-builders.js.map +1 -1
  9. package/dist/cjs/builders/hast-builders.d.ts +1 -0
  10. package/dist/cjs/builders/hast-builders.d.ts.map +1 -1
  11. package/dist/cjs/builders/hast-builders.js +11 -1
  12. package/dist/cjs/builders/hast-builders.js.map +1 -1
  13. package/dist/cjs/builders/style-builders.d.ts +2 -2
  14. package/dist/cjs/builders/style-builders.d.ts.map +1 -1
  15. package/dist/cjs/builders/style-builders.js +39 -19
  16. package/dist/cjs/builders/style-builders.js.map +1 -1
  17. package/dist/cjs/index.d.ts +2 -1
  18. package/dist/cjs/index.d.ts.map +1 -1
  19. package/dist/cjs/index.js +3 -1
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/node-handlers/node-to-html/constants.d.ts.map +1 -1
  22. package/dist/cjs/node-handlers/node-to-html/constants.js +2 -0
  23. package/dist/cjs/node-handlers/node-to-html/constants.js.map +1 -1
  24. package/dist/cjs/node-handlers/node-to-html/index.d.ts.map +1 -1
  25. package/dist/cjs/node-handlers/node-to-html/index.js +53 -1
  26. package/dist/cjs/node-handlers/node-to-html/index.js.map +1 -1
  27. package/dist/cjs/node-handlers/node-to-html/types.d.ts +5 -1
  28. package/dist/cjs/node-handlers/node-to-html/types.d.ts.map +1 -1
  29. package/dist/cjs/node-handlers/node-to-html/utils.d.ts.map +1 -1
  30. package/dist/cjs/node-handlers/node-to-html/utils.js +48 -4
  31. package/dist/cjs/node-handlers/node-to-html/utils.js.map +1 -1
  32. package/dist/cjs/node-handlers/node-to-jsx/index.d.ts.map +1 -1
  33. package/dist/cjs/node-handlers/node-to-jsx/index.js +325 -44
  34. package/dist/cjs/node-handlers/node-to-jsx/index.js.map +1 -1
  35. package/dist/cjs/node-handlers/node-to-jsx/types.d.ts +5 -5
  36. package/dist/cjs/node-handlers/node-to-jsx/types.d.ts.map +1 -1
  37. package/dist/cjs/node-handlers/node-to-jsx/utils.d.ts +5 -5
  38. package/dist/cjs/node-handlers/node-to-jsx/utils.d.ts.map +1 -1
  39. package/dist/cjs/node-handlers/node-to-jsx/utils.js +79 -36
  40. package/dist/cjs/node-handlers/node-to-jsx/utils.js.map +1 -1
  41. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  42. package/dist/cjs/utils/ast-utils.d.ts +16 -6
  43. package/dist/cjs/utils/ast-utils.d.ts.map +1 -1
  44. package/dist/cjs/utils/ast-utils.js +182 -40
  45. package/dist/cjs/utils/ast-utils.js.map +1 -1
  46. package/dist/cjs/utils/hast-utils.d.ts +8 -6
  47. package/dist/cjs/utils/hast-utils.d.ts.map +1 -1
  48. package/dist/cjs/utils/hast-utils.js +28 -4
  49. package/dist/cjs/utils/hast-utils.js.map +1 -1
  50. package/dist/cjs/utils/types.d.ts +3 -0
  51. package/dist/cjs/utils/types.d.ts.map +1 -0
  52. package/dist/cjs/utils/types.js +3 -0
  53. package/dist/cjs/utils/types.js.map +1 -0
  54. package/dist/esm/builders/ast-builders.d.ts +1 -0
  55. package/dist/esm/builders/ast-builders.d.ts.map +1 -1
  56. package/dist/esm/builders/ast-builders.js +18 -3
  57. package/dist/esm/builders/ast-builders.js.map +1 -1
  58. package/dist/esm/builders/hast-builders.d.ts +1 -0
  59. package/dist/esm/builders/hast-builders.d.ts.map +1 -1
  60. package/dist/esm/builders/hast-builders.js +9 -0
  61. package/dist/esm/builders/hast-builders.js.map +1 -1
  62. package/dist/esm/builders/style-builders.d.ts +2 -2
  63. package/dist/esm/builders/style-builders.d.ts.map +1 -1
  64. package/dist/esm/builders/style-builders.js +37 -18
  65. package/dist/esm/builders/style-builders.js.map +1 -1
  66. package/dist/esm/index.d.ts +2 -1
  67. package/dist/esm/index.d.ts.map +1 -1
  68. package/dist/esm/index.js +2 -1
  69. package/dist/esm/index.js.map +1 -1
  70. package/dist/esm/node-handlers/node-to-html/constants.d.ts.map +1 -1
  71. package/dist/esm/node-handlers/node-to-html/constants.js +2 -0
  72. package/dist/esm/node-handlers/node-to-html/constants.js.map +1 -1
  73. package/dist/esm/node-handlers/node-to-html/index.d.ts.map +1 -1
  74. package/dist/esm/node-handlers/node-to-html/index.js +54 -2
  75. package/dist/esm/node-handlers/node-to-html/index.js.map +1 -1
  76. package/dist/esm/node-handlers/node-to-html/types.d.ts +5 -1
  77. package/dist/esm/node-handlers/node-to-html/types.d.ts.map +1 -1
  78. package/dist/esm/node-handlers/node-to-html/utils.d.ts.map +1 -1
  79. package/dist/esm/node-handlers/node-to-html/utils.js +45 -4
  80. package/dist/esm/node-handlers/node-to-html/utils.js.map +1 -1
  81. package/dist/esm/node-handlers/node-to-jsx/index.d.ts.map +1 -1
  82. package/dist/esm/node-handlers/node-to-jsx/index.js +326 -45
  83. package/dist/esm/node-handlers/node-to-jsx/index.js.map +1 -1
  84. package/dist/esm/node-handlers/node-to-jsx/types.d.ts +5 -5
  85. package/dist/esm/node-handlers/node-to-jsx/types.d.ts.map +1 -1
  86. package/dist/esm/node-handlers/node-to-jsx/utils.d.ts +5 -5
  87. package/dist/esm/node-handlers/node-to-jsx/utils.d.ts.map +1 -1
  88. package/dist/esm/node-handlers/node-to-jsx/utils.js +79 -36
  89. package/dist/esm/node-handlers/node-to-jsx/utils.js.map +1 -1
  90. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  91. package/dist/esm/utils/ast-utils.d.ts +16 -6
  92. package/dist/esm/utils/ast-utils.d.ts.map +1 -1
  93. package/dist/esm/utils/ast-utils.js +176 -39
  94. package/dist/esm/utils/ast-utils.js.map +1 -1
  95. package/dist/esm/utils/hast-utils.d.ts +8 -6
  96. package/dist/esm/utils/hast-utils.d.ts.map +1 -1
  97. package/dist/esm/utils/hast-utils.js +26 -3
  98. package/dist/esm/utils/hast-utils.js.map +1 -1
  99. package/dist/esm/utils/types.d.ts +3 -0
  100. package/dist/esm/utils/types.d.ts.map +1 -0
  101. package/dist/esm/utils/types.js +2 -0
  102. package/dist/esm/utils/types.js.map +1 -0
  103. package/package.json +4 -4
  104. package/src/builders/ast-builders.ts +36 -2
  105. package/src/builders/hast-builders.ts +11 -0
  106. package/src/builders/style-builders.ts +51 -27
  107. package/src/index.ts +12 -1
  108. package/src/node-handlers/node-to-html/constants.ts +2 -0
  109. package/src/node-handlers/node-to-html/index.ts +95 -5
  110. package/src/node-handlers/node-to-html/types.ts +6 -0
  111. package/src/node-handlers/node-to-html/utils.ts +60 -5
  112. package/src/node-handlers/node-to-jsx/index.ts +566 -62
  113. package/src/node-handlers/node-to-jsx/types.ts +10 -29
  114. package/src/node-handlers/node-to-jsx/utils.ts +106 -42
  115. package/src/utils/ast-utils.ts +283 -82
  116. package/src/utils/hast-utils.ts +37 -9
  117. package/src/utils/types.ts +25 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/node-handlers/node-to-html/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,eAAe,EAChB,MAAM,4BAA4B,CAAA;AAEnC,MAAM,WAAW,4BAA4B;IAE3C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAE5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,KAAK,MAAM,CAAA;IAChE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACxC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACpD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAA;IAChG,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAChD,kBAAkB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,MAAM,UAAU,CAAC,QAAQ,EAAE,UAAU,IAAI,CAC7C,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,4BAA4B,EACpC,cAAc,EAAE,kBAAkB,KAC/B,UAAU,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/node-handlers/node-to-html/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,4BAA4B,CAAA;AAEnC,MAAM,WAAW,4BAA4B;IAE3C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAE5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAA;IAC1D,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IACnD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CACtD;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,KAAK,MAAM,CAAA;IAChE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACxC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACpD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAA;IAChG,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAChD,kBAAkB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,UAAU,CAAC,QAAQ,EAAE,UAAU,IAAI,CAC7C,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,4BAA4B,EACpC,cAAc,EAAE,kBAAkB,KAC/B,UAAU,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/node-handlers/node-to-html/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,mBAAmB,EACnB,QAAQ,EACR,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EAChB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE1E,eAAO,MAAM,eAAe,aAChB,QAAQ,eACL,MAAM,WACV,MAAM,aACJ,kBAAkB,UACrB,4BAA4B,kBACpB,kBAAkB,QAC5B,eAAe,SAgDtB,CAAA;AAED,eAAO,MAAM,WAAW,aACZ,QAAQ,eACL,MAAM,YACT,MAAM,0BACQ,yBAAyB,EAAE,UAC3C,4BAA4B,kBACpB,kBAAkB,SAiCnC,CAAA;AAED,eAAO,MAAM,0BAA0B,SAAU,mBAAmB,KAAG,MAWtE,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/node-handlers/node-to-html/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,mBAAmB,EACnB,QAAQ,EACR,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EAGhB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAI1E,eAAO,MAAM,eAAe,aAChB,QAAQ,eACL,MAAM,WACV,MAAM,aACJ,kBAAkB,UACrB,4BAA4B,kBACpB,kBAAkB,QAC5B,eAAe,SA6EtB,CAAA;AAED,eAAO,MAAM,WAAW,aACZ,QAAQ,eACL,MAAM,YACT,MAAM,0BACQ,yBAAyB,EAAE,UAC3C,4BAA4B,kBACpB,kBAAkB,SAiCnC,CAAA;AAED,eAAO,MAAM,0BAA0B,SAAU,mBAAmB,KAAG,MAkBtE,CAAA"}
@@ -22,10 +22,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
25
28
  Object.defineProperty(exports, "__esModule", { value: true });
26
29
  exports.createConditionalStatement = exports.handleEvent = exports.handleAttribute = void 0;
27
30
  var hastUtils = __importStar(require("../../utils/hast-utils"));
28
31
  var teleport_shared_1 = require("@teleporthq/teleport-shared");
32
+ var hast_builders_1 = require("../../builders/hast-builders");
33
+ var node_to_html_1 = __importDefault(require("../node-to-html"));
29
34
  var handleAttribute = function (htmlNode, elementName, attrKey, attrValue, params, templateSyntax, node) {
30
35
  var dataObject = params.dataObject;
31
36
  var dynamicAttrKey = templateSyntax.valueBinding(attrKey, node);
@@ -61,6 +66,27 @@ var handleAttribute = function (htmlNode, elementName, attrKey, attrValue, param
61
66
  hastUtils.addAttributeToNode(htmlNode, dynamicAttrKey, attrValue.content.toString());
62
67
  }
63
68
  break;
69
+ case 'element':
70
+ var templateNode = (0, hast_builders_1.createHTMLNode)(templateSyntax.slotTagName);
71
+ var templateContent = (0, node_to_html_1.default)(attrValue, params, templateSyntax);
72
+ if (templateSyntax.slotBinding === 'v-slot') {
73
+ hastUtils.addBooleanAttributeToNode(templateNode, "".concat(templateSyntax.slotBinding, ":").concat(attrKey));
74
+ }
75
+ else {
76
+ hastUtils.addBooleanAttributeToNode(templateNode, "".concat(templateSyntax.slotBinding).concat(attrKey));
77
+ }
78
+ hastUtils.addChildNode(templateNode, templateContent);
79
+ hastUtils.addChildNode(htmlNode, templateNode);
80
+ break;
81
+ case 'object': {
82
+ dataObject[attrKey] = attrValue.content;
83
+ hastUtils.addAttributeToNode(htmlNode, dynamicAttrKey, attrKey);
84
+ break;
85
+ }
86
+ case 'expr':
87
+ // TODO: Check this in the future. Not throwing an error for now
88
+ console.info("Expressions are not supported in HTML templates");
89
+ break;
64
90
  default:
65
91
  throw new Error("generateElementNode could not generate code for attribute of type ".concat(JSON.stringify(attrValue)));
66
92
  }
@@ -94,11 +120,17 @@ exports.handleEvent = handleEvent;
94
120
  var createConditionalStatement = function (node) {
95
121
  var _a = node.content, childNode = _a.node, reference = _a.reference, value = _a.value, condition = _a.condition;
96
122
  var expression = standardizeUIDLConditionalExpression(value, condition);
97
- var statement = createConditional(reference.content.id, expression);
98
- if (childNode.type === 'conditional') {
99
- return "".concat(statement, " && ").concat((0, exports.createConditionalStatement)(childNode));
123
+ if (reference.type === 'dynamic') {
124
+ var statement = createConditional(reference.content.id, expression);
125
+ if (childNode.type === 'conditional') {
126
+ return "".concat(statement, " && ").concat((0, exports.createConditionalStatement)(childNode));
127
+ }
128
+ return statement;
129
+ }
130
+ // expression nodes are not supported in html based templates.
131
+ if (reference.type === 'expr') {
132
+ return '';
100
133
  }
101
- return statement;
102
134
  };
103
135
  exports.createConditionalStatement = createConditionalStatement;
104
136
  var standardizeUIDLConditionalExpression = function (value, condition) {
@@ -116,6 +148,9 @@ var createConditional = function (conditionalKey, conditionalExpression) {
116
148
  }
117
149
  var stringConditions = conditions.map(function (_a) {
118
150
  var operation = _a.operation, operand = _a.operand;
151
+ // @todo
152
+ // unlike jsx code generation, we are not converting the operand to binary or unary operation.
153
+ // Please refer to https://github.com/teleporthq/teleport-code-generators/blob/development/packages/teleport-plugin-common/src/node-handlers/node-to-jsx/utils.ts#L303-L319
119
154
  return "(".concat(stringifyConditionalExpression(conditionalKey, operation, operand), ")");
120
155
  });
121
156
  var joinOperator = matchingCriteria === 'all' ? '&&' : '||';
@@ -128,6 +163,15 @@ var stringifyConditionalExpression = function (identifier, operation, value) {
128
163
  if (typeof value === 'string') {
129
164
  return "".concat(identifier, " ").concat(operation, " '").concat(value, "'");
130
165
  }
166
+ if (typeof value === 'number') {
167
+ return "".concat(identifier, " ").concat(operation, " ").concat(value);
168
+ }
169
+ if (value.type === 'dynamic') {
170
+ return "".concat(identifier, " ").concat(operation, " ").concat(value.content.id);
171
+ }
172
+ if (value.type === 'expr') {
173
+ return "".concat(identifier, " ").concat(operation, " ").concat(value.content);
174
+ }
131
175
  return "".concat(identifier, " ").concat(operation, " ").concat(value);
132
176
  };
133
177
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/node-handlers/node-to-html/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/node-handlers/node-to-html/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAAmD;AACnD,+DAAyD;AAYzD,8DAA6D;AAC7D,iEAAiD;AAE1C,IAAM,eAAe,GAAG,UAC7B,QAAkB,EAClB,WAAmB,EACnB,OAAe,EACf,SAA6B,EAC7B,MAAoC,EACpC,cAAkC,EAClC,IAAqB;IAEb,IAAA,UAAU,GAAK,MAAM,WAAX,CAAW;IAC7B,IAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACjE,QAAQ,SAAS,CAAC,IAAI,EAAE;QACtB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC5E,MAAK;QACP,KAAK,YAAY;YACf,SAAS,CAAC,kBAAkB,CAC1B,QAAQ,EACR,OAAO,EACP,6BAAW,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CACjD,CAAA;YACD,MAAK;QACP,KAAK,KAAK;YACR,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC7E,MAAK;QACP,KAAK,QAAQ;YACX,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACpC,+EAA+E;gBAC/E,0FAA0F;gBAC1F,IAAM,oBAAoB,GAAG,UAAG,WAAW,SAAG,6BAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAE,CAAA;gBAC/E,UAAU,CAAC,oBAAoB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAA;gBACpD,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAA;aAC7E;iBAAM,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE;gBACjD,SAAS,CAAC,OAAO,KAAK,IAAI;oBACxB,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC;oBACxD,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;aACzE;iBAAM,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,EAAE;gBAChD,SAAS,CAAC,kBAAkB,CAC1B,QAAQ,EACR,OAAO,EACP,6BAAW,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CACjD,CAAA;aACF;iBAAM;gBACL,+EAA+E;gBAC/E,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;aACrF;YACD,MAAK;QAEP,KAAK,SAAS;YACZ,IAAM,YAAY,GAAG,IAAA,8BAAc,EAAC,cAAc,CAAC,WAAW,CAAC,CAAA;YAC/D,IAAM,eAAe,GAAG,IAAA,sBAAmB,EAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAA;YAE9E,IAAI,cAAc,CAAC,WAAW,KAAK,QAAQ,EAAE;gBAC3C,SAAS,CAAC,yBAAyB,CACjC,YAAY,EACZ,UAAG,cAAc,CAAC,WAAW,cAAI,OAAO,CAAE,CAC3C,CAAA;aACF;iBAAM;gBACL,SAAS,CAAC,yBAAyB,CAAC,YAAY,EAAE,UAAG,cAAc,CAAC,WAAW,SAAG,OAAO,CAAE,CAAC,CAAA;aAC7F;YAED,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;YACrD,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;YAC9C,MAAK;QAEP,KAAK,QAAQ,CAAC,CAAC;YACb,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAA;YACvC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;YAC/D,MAAK;SACN;QAED,KAAK,MAAM;YACT,gEAAgE;YAChE,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAA;YAC/D,MAAK;QAEP;YACE,MAAM,IAAI,KAAK,CACb,4EAAqE,IAAI,CAAC,SAAS,CACjF,SAAS,CACV,CAAE,CACJ,CAAA;KACJ;AACH,CAAC,CAAA;AApFY,QAAA,eAAe,mBAoF3B;AAEM,IAAM,WAAW,GAAG,UACzB,QAAkB,EAClB,WAAmB,EACnB,QAAgB,EAChB,sBAAmD,EACnD,MAAoC,EACpC,cAAkC;IAE1B,IAAA,aAAa,GAAK,MAAM,cAAX,CAAW;IAChC,IAAM,eAAe,GAAG,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IAE7D,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE;QACvC,IAAM,SAAS,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAA;QAE3C,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,IAAI,SAAS,CAAC,KAAK,EAAE;YACpD,IAAM,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAClE,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC,CAAA;SACtE;QAED,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE;YACpC,SAAS,CAAC,kBAAkB,CAC1B,QAAQ,EACR,eAAe,EACf,SAAS,CAAC,QAAQ,KAAK,SAAS;gBAC9B,CAAC,CAAC,UAAG,SAAS,CAAC,QAAQ,iBAAO,SAAS,CAAC,QAAQ,CAAE;gBAClD,CAAC,CAAC,UAAG,SAAS,CAAC,QAAQ,gBAAM,SAAS,CAAC,QAAQ,CAAE,CACpD,CAAA;SACF;KACF;SAAM;QACL,IAAM,UAAU,GAAG,gBAAS,6BAAW,CAAC,wBAAwB,CAC9D,WAAW,CACZ,SAAG,6BAAW,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAE,CAAA;QACpD,IAAM,eAAe,GAAG,cAAc,CAAC,wBAAwB;YAC7D,CAAC,CAAC,cAAc,CAAC,wBAAwB,CAAC,UAAU,CAAC;YACrD,CAAC,CAAC,UAAU,CAAA;QAEd,aAAa,CAAC,UAAU,CAAC,GAAG,sBAAsB,CAAA;QAClD,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,CAAC,CAAA;KACzE;AACH,CAAC,CAAA;AAvCY,QAAA,WAAW,eAuCvB;AAEM,IAAM,0BAA0B,GAAG,UAAC,IAAyB;IAC5D,IAAA,KAAmD,IAAI,CAAC,OAAO,EAAvD,SAAS,UAAA,EAAE,SAAS,eAAA,EAAE,KAAK,WAAA,EAAE,SAAS,eAAiB,CAAA;IAErE,IAAM,UAAU,GAAG,oCAAoC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACzE,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE;QAChC,IAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QAErE,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE;YACpC,OAAO,UAAG,SAAS,iBAAO,IAAA,kCAA0B,EAAC,SAAS,CAAC,CAAE,CAAA;SAClE;QAED,OAAO,SAAS,CAAA;KACjB;IAED,8DAA8D;IAC9D,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;QAC7B,OAAO,EAAE,CAAA;KACV;AACH,CAAC,CAAA;AAlBY,QAAA,0BAA0B,8BAkBtC;AAED,IAAM,oCAAoC,GAAG,UAC3C,KAAgC,EAChC,SAAoC;IAEpC,IAAM,qBAAqB,GACzB,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QACnC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;QACxD,CAAC,CAAC,SAAS,CAAA;IACf,OAAO,qBAAqB,CAAA;AAC9B,CAAC,CAAA;AAED,IAAM,iBAAiB,GAAG,UACxB,cAAsB,EACtB,qBAAgD;IAExC,IAAA,gBAAgB,GAAiB,qBAAqB,iBAAtC,EAAE,UAAU,GAAK,qBAAqB,WAA1B,CAA0B;IAC9D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,wEAAwE;QAClE,IAAA,KAAyB,UAAU,CAAC,CAAC,CAAC,EAApC,SAAS,eAAA,EAAE,OAAO,aAAkB,CAAA;QAC5C,OAAO,8BAA8B,CAAC,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;KAC1E;IAED,IAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,UAAC,EAAsB;YAApB,SAAS,eAAA,EAAE,OAAO,aAAA;QAC3D,QAAQ;QACR,8FAA8F;QAC9F,2KAA2K;QAC3K,OAAO,WAAI,8BAA8B,CAAC,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,MAAG,CAAA;IAClF,CAAC,CAAC,CAAA;IAEF,IAAM,YAAY,GAAG,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,OAAO,gBAAgB,CAAC,IAAI,CAAC,WAAI,YAAY,MAAG,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,IAAM,8BAA8B,GAAG,UACrC,UAAkB,EAClB,SAAiB,EACjB,KAA6E;IAE7E,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;QAC9B,OAAO,UAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAG,UAAU,CAAE,CAAA;KAC1C;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,UAAG,UAAU,cAAI,SAAS,eAAK,KAAK,MAAG,CAAA;KAC/C;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,UAAG,UAAU,cAAI,SAAS,cAAI,KAAK,CAAE,CAAA;KAC7C;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;QAC5B,OAAO,UAAG,UAAU,cAAI,SAAS,cAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAE,CAAA;KACxD;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QACzB,OAAO,UAAG,UAAU,cAAI,SAAS,cAAI,KAAK,CAAC,OAAO,CAAE,CAAA;KACrD;IAED,OAAO,UAAG,UAAU,cAAI,SAAS,cAAI,KAAK,CAAE,CAAA;AAC9C,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/node-handlers/node-to-jsx/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EACL,eAAe,EAWhB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAoB,SAAS,EAAE,MAAM,SAAS,CAAA;AAuBrD,QAAA,MAAM,mBAAmB,EAAE,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,UAAU,CAqHrE,CAAA;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/node-handlers/node-to-jsx/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EACL,eAAe,EAehB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAA+D,SAAS,EAAE,MAAM,SAAS,CAAA;AA2GhG,QAAA,MAAM,mBAAmB,EAAE,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,UAAU,CAgGrE,CAAA;AAED,eAAe,mBAAmB,CAAA"}
@@ -33,6 +33,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
33
33
  __setModuleDefault(result, mod);
34
34
  return result;
35
35
  };
36
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
37
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
38
+ if (ar || !(i in from)) {
39
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
40
+ ar[i] = from[i];
41
+ }
42
+ }
43
+ return to.concat(ar || Array.prototype.slice.call(from));
44
+ };
36
45
  Object.defineProperty(exports, "__esModule", { value: true });
37
46
  var types = __importStar(require("@babel/types"));
38
47
  var teleport_shared_1 = require("@teleporthq/teleport-shared");
@@ -41,12 +50,84 @@ var ast_utils_1 = require("../../utils/ast-utils");
41
50
  var ast_builders_1 = require("../../builders/ast-builders");
42
51
  var constants_1 = require("./constants");
43
52
  var __1 = require("../..");
53
+ var getElementType = function (node) {
54
+ if (node.type === 'element' &&
55
+ node.content &&
56
+ typeof node.content === 'object' &&
57
+ 'elementType' in node.content) {
58
+ return node.content.elementType;
59
+ }
60
+ if ((node.type === 'data-source-list' || node.type === 'data-source-item') && node.content) {
61
+ return node.content.elementType || 'DataProvider';
62
+ }
63
+ return null;
64
+ };
65
+ var getClassName = function (node) {
66
+ if (node.type === 'element' &&
67
+ node.content &&
68
+ typeof node.content === 'object' &&
69
+ 'key' in node.content) {
70
+ return node.content.key || null;
71
+ }
72
+ return null;
73
+ };
74
+ var reorderChildrenForSearch = function (children) {
75
+ var searchNodes = [];
76
+ var dataProviderNodes = [];
77
+ var paginationNodes = [];
78
+ var otherNodes = [];
79
+ children.forEach(function (child) {
80
+ var elementType = getElementType(child);
81
+ var nodeType = child.type;
82
+ var className = getClassName(child);
83
+ // Check for search nodes - use className since elementType is replaced by semanticType
84
+ if (className &&
85
+ (className.includes('data-source-search') || className.includes('search-node'))) {
86
+ searchNodes.push(child);
87
+ }
88
+ // Check for DataProvider nodes - these should appear SECOND
89
+ else if (nodeType === 'data-source-list' ||
90
+ nodeType === 'data-source-item' ||
91
+ elementType === 'DataProvider') {
92
+ dataProviderNodes.push(child);
93
+ }
94
+ // Check for pagination nodes - use className since elementType is replaced by semanticType
95
+ else if ((elementType &&
96
+ (elementType.includes('pagination') || elementType.includes('cms-pagination'))) ||
97
+ (className && (className.includes('pagination') || className.includes('cms-pagination')))) {
98
+ paginationNodes.push(child);
99
+ }
100
+ // Everything else goes in the middle
101
+ else {
102
+ otherNodes.push(child);
103
+ }
104
+ });
105
+ // Only reorder if we have search or pagination nodes alongside a DataProvider
106
+ // This ensures we only reorder when there's an actual pagination/search group
107
+ // If there's no search/pagination, keep original order to preserve DataProvider positions
108
+ var hasSearchOrPagination = searchNodes.length > 0 || paginationNodes.length > 0;
109
+ var hasDataProvider = dataProviderNodes.length > 0;
110
+ if (hasSearchOrPagination && hasDataProvider) {
111
+ // Order: search nodes first, then data providers, then other nodes, then pagination last
112
+ // This ensures: search input -> DataProvider -> content -> pagination buttons
113
+ return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], searchNodes, true), dataProviderNodes, true), otherNodes, true), paginationNodes, true);
114
+ }
115
+ else {
116
+ // No reordering needed - preserve original order
117
+ return children;
118
+ }
119
+ };
44
120
  var generateElementNode = function (node, params, jsxOptions) {
45
- var dependencies = params.dependencies, nodesLookup = params.nodesLookup, _a = params.projectResources, projectResources = _a === void 0 ? {} : _a;
46
- var options = __assign(__assign(__assign({}, constants_1.DEFAULT_JSX_OPTIONS), jsxOptions), { projectResources: projectResources });
47
- var _b = node.content, elementType = _b.elementType, selfClosing = _b.selfClosing, children = _b.children, key = _b.key, attrs = _b.attrs, dependency = _b.dependency, events = _b.events;
121
+ var dependencies = params.dependencies, nodesLookup = params.nodesLookup;
122
+ var options = __assign(__assign({}, constants_1.DEFAULT_JSX_OPTIONS), jsxOptions);
123
+ var _a = node.content, elementType = _a.elementType, selfClosing = _a.selfClosing, children = _a.children, key = _a.key, attrs = _a.attrs, dependency = _a.dependency, events = _a.events;
48
124
  var originalElementName = elementType || 'component';
49
125
  var tagName = originalElementName;
126
+ // Check if this is a fragment element - normalize to Fragment before processing
127
+ var isFragment = tagName.toLowerCase() === 'fragment';
128
+ if (isFragment) {
129
+ tagName = 'Fragment';
130
+ }
50
131
  if (dependency) {
51
132
  if (options.dependencyHandling === 'import' ||
52
133
  (options.dependencyHandling === 'ignore' && (dependency === null || dependency === void 0 ? void 0 : dependency.type) === 'package')) {
@@ -65,40 +146,25 @@ var generateElementNode = function (node, params, jsxOptions) {
65
146
  params.windowImports[dependency.path] = dynamicWindowImport;
66
147
  }
67
148
  }
149
+ else if (isFragment) {
150
+ // If no dependency was provided but this is a fragment, add Fragment dependency
151
+ if (options.dependencyHandling === 'import') {
152
+ dependencies.Fragment = {
153
+ type: 'package',
154
+ path: 'react',
155
+ version: 'latest',
156
+ meta: {
157
+ namedImport: true,
158
+ },
159
+ };
160
+ }
161
+ }
68
162
  var elementName = dependency && dependency.type === 'local' && options.customElementTag
69
163
  ? options.customElementTag(tagName)
70
164
  : tagName;
71
165
  var elementTag = selfClosing ? (0, ast_builders_1.createSelfClosingJSXTag)(elementName) : (0, ast_builders_1.createJSXTag)(elementName);
72
166
  if (attrs) {
73
- Object.keys(attrs).forEach(function (attrKey) {
74
- var attributeValue = attrs[attrKey];
75
- switch (attributeValue.type) {
76
- case 'dynamic':
77
- var referenceType = attributeValue.content.referenceType;
78
- switch (referenceType) {
79
- default:
80
- var prefix = options.dynamicReferencePrefixMap[referenceType];
81
- (0, ast_utils_1.addDynamicAttributeToJSXTag)(elementTag, attrKey, attributeValue.content.id, prefix);
82
- break;
83
- }
84
- break;
85
- case 'import':
86
- (0, ast_utils_1.addDynamicAttributeToJSXTag)(elementTag, attrKey, attributeValue.content.id);
87
- break;
88
- case 'raw':
89
- (0, ast_utils_1.addRawAttributeToJSXTag)(elementTag, attrKey, attributeValue);
90
- break;
91
- case 'comp-style':
92
- case 'static':
93
- (0, ast_utils_1.addAttributeToJSXTag)(elementTag, attrKey, attributeValue.content);
94
- break;
95
- case 'expr':
96
- (0, ast_utils_1.addDynamicExpressionAttributeToJSXTag)(elementTag, attributeValue, attrKey);
97
- break;
98
- default:
99
- throw new Error("generateElementNode could not generate code for attribute of type ".concat(JSON.stringify(attributeValue)));
100
- }
101
- });
167
+ addAttributesToJSXTag(attrs, elementTag, options, params);
102
168
  }
103
169
  if (events) {
104
170
  Object.keys(events).forEach(function (eventKey) {
@@ -106,7 +172,9 @@ var generateElementNode = function (node, params, jsxOptions) {
106
172
  });
107
173
  }
108
174
  if (!selfClosing && children) {
109
- children.forEach(function (child) {
175
+ // Reorder children to ensure search nodes appear before DataProvider nodes
176
+ var reorderedChildren = reorderChildrenForSearch(children);
177
+ reorderedChildren.forEach(function (child) {
110
178
  var childTags = generateNode(child, params, options);
111
179
  childTags.forEach(function (childTag) {
112
180
  if (typeof childTag === 'string') {
@@ -125,6 +193,52 @@ var generateElementNode = function (node, params, jsxOptions) {
125
193
  return elementTag;
126
194
  };
127
195
  exports.default = generateElementNode;
196
+ var addAttributesToJSXTag = function (attrs, elementTag, options, params) {
197
+ Object.keys(attrs !== null && attrs !== void 0 ? attrs : {}).forEach(function (attrKey) {
198
+ var attributeValue = attrs[attrKey];
199
+ if (!attributeValue.type) {
200
+ return;
201
+ }
202
+ switch (attributeValue.type) {
203
+ case 'dynamic':
204
+ var referenceType = attributeValue.content.referenceType;
205
+ switch (referenceType) {
206
+ default:
207
+ var prefix = options.dynamicReferencePrefixMap[referenceType];
208
+ (0, ast_utils_1.addDynamicAttributeToJSXTag)(elementTag, attrKey, attributeValue.content.id, prefix);
209
+ break;
210
+ }
211
+ break;
212
+ case 'import':
213
+ (0, ast_utils_1.addDynamicAttributeToJSXTag)(elementTag, attrKey, attributeValue.content.id);
214
+ break;
215
+ case 'raw':
216
+ (0, ast_utils_1.addRawAttributeToJSXTag)(elementTag, attrKey, attributeValue);
217
+ break;
218
+ case 'comp-style':
219
+ case 'static':
220
+ (0, ast_utils_1.addAttributeToJSXTag)(elementTag, attrKey, attributeValue.content);
221
+ break;
222
+ case 'expr':
223
+ (0, ast_utils_1.addDynamicExpressionAttributeToJSXTag)(elementTag, attributeValue, attrKey);
224
+ break;
225
+ case 'element':
226
+ (0, ast_utils_1.addAttributeToJSXTag)(elementTag, attrKey, generateElementNode(attributeValue, params, options));
227
+ break;
228
+ case 'object': {
229
+ var content = attributeValue.content;
230
+ if (typeof content !== 'object') {
231
+ return;
232
+ }
233
+ var expression = (0, ast_utils_1.objectToObjectExpression)(content);
234
+ elementTag.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier(attrKey), types.jsxExpressionContainer(expression)));
235
+ break;
236
+ }
237
+ default:
238
+ throw new Error("generateElementNode could not generate code for attribute of type ".concat(JSON.stringify(attributeValue)));
239
+ }
240
+ });
241
+ };
128
242
  var generateNode = function (node, params, options) {
129
243
  switch (node.type) {
130
244
  case 'expr':
@@ -137,25 +251,80 @@ var generateNode = function (node, params, options) {
137
251
  ];
138
252
  case 'inject':
139
253
  if (node === null || node === void 0 ? void 0 : node.dependency) {
140
- /* tslint:disable:no-string-literal */
141
- params.dependencies['Script'] = node.dependency;
254
+ params.dependencies.Script = node.dependency;
142
255
  }
143
256
  return [node.content.toString()];
144
257
  case 'static':
145
258
  return [teleport_shared_1.StringUtils.encode(node.content.toString())];
146
259
  case 'dynamic':
147
- return [(0, utils_1.createDynamicValueExpression)(node, options, undefined)];
260
+ switch (node.content.referenceType) {
261
+ case 'prop': {
262
+ // If the dynamic node is a prop and has a default value of type UIDLElementNode,
263
+ // we should use it with a logical expression.
264
+ var prop = params.propDefinitions[node.content.id];
265
+ if ((prop === null || prop === void 0 ? void 0 : prop.type) === 'element' && prop.defaultValue) {
266
+ var prefix = options.dynamicReferencePrefixMap[node.content.referenceType] || '';
267
+ var propDefault = prop.defaultValue;
268
+ var jsxNode = params.nodesLookup[propDefault.content.key];
269
+ if (jsxNode === undefined) {
270
+ throw Error("Prop ".concat(node.content.id, " is of type element \n\n The JSXNode of the prop-").concat(node.content.id, " is missing from the nodesLookup"));
271
+ }
272
+ return [
273
+ types.logicalExpression('??', prefix === ''
274
+ ? types.identifier(node.content.id)
275
+ : types.memberExpression(types.identifier(prefix), types.identifier(node.content.id)), jsxNode),
276
+ ];
277
+ }
278
+ return [(0, utils_1.createDynamicValueExpression)(node, options)];
279
+ }
280
+ case 'locale': {
281
+ // Locale is not handled the same in all frameworks.
282
+ // So, we need to handle it differently using individual plugins for each framework.
283
+ var emptyExpression = types.jsxEmptyExpression();
284
+ emptyExpression.innerComments = [
285
+ {
286
+ type: 'CommentBlock',
287
+ value: "locale-".concat(node.content.id),
288
+ },
289
+ ];
290
+ var expression = types.jsxExpressionContainer(emptyExpression);
291
+ var jsxTag = (0, ast_builders_1.createJSXTag)('span');
292
+ (0, ast_utils_1.addChildJSXTag)(jsxTag, expression);
293
+ params.localeReferences.push(jsxTag);
294
+ return [jsxTag];
295
+ }
296
+ case 'global': {
297
+ params.globalReferences.push(node.content.id);
298
+ return [(0, utils_1.createDynamicValueExpression)(node, options)];
299
+ }
300
+ default:
301
+ return [(0, utils_1.createDynamicValueExpression)(node, options)];
302
+ }
148
303
  case 'cms-item':
149
304
  case 'cms-list':
150
305
  return generateCMSNode(node, params, options);
306
+ case 'cms-list-repeater':
307
+ return generateCMSListRepeaterNode(node, params, options);
308
+ case 'cms-mixed-type':
309
+ return generateCMSMixedTypeNode(node, params, options);
310
+ case 'data-source-item':
311
+ case 'data-source-list':
312
+ return generateDataSourceNode(node, params, options);
151
313
  case 'element':
314
+ // Check if this element node is wrapping a data-source node
315
+ if (node.content &&
316
+ typeof node.content === 'object' &&
317
+ 'type' in node.content &&
318
+ (node.content.type === 'data-source-item' || node.content.type === 'data-source-list')) {
319
+ // Treat it as a data-source node
320
+ // tslint:disable-next-line:no-any
321
+ return generateDataSourceNode(node.content, params, options);
322
+ }
152
323
  return [generateElementNode(node, params, options)];
153
324
  case 'repeat':
154
325
  return generateRepeatNode(node, params, options);
155
326
  case 'conditional':
156
327
  return generateConditionalNode(node, params, options);
157
- case 'cms-list-repeater':
158
- return generateCMSListRepeaterNode(node, params, options);
159
328
  case 'slot':
160
329
  if (options.slotHandling === 'native') {
161
330
  return [generateNativeSlotNode(node, params, options)];
@@ -169,7 +338,33 @@ var generateNode = function (node, params, options) {
169
338
  };
170
339
  var generateExpressionNode = function (node) {
171
340
  var expression = __1.ASTUtils.getExpressionFromUIDLExpressionNode(node);
172
- return types.jsxExpressionContainer(expression);
341
+ // Wrap expression to safely handle objects/arrays: (typeof val === 'object' && val !== null) ? JSON.stringify(val) : val
342
+ var safeExpression = types.conditionalExpression(types.logicalExpression('&&', types.binaryExpression('===', types.unaryExpression('typeof', expression, true), types.stringLiteral('object')), types.binaryExpression('!==', expression, types.nullLiteral())), types.callExpression(types.memberExpression(types.identifier('JSON'), types.identifier('stringify')), [expression]), expression);
343
+ return types.jsxExpressionContainer(safeExpression);
344
+ };
345
+ var generateCMSMixedTypeNode = function (node, params, options) {
346
+ var _a = node.content, _b = _a.nodes, error = _b.error, fallback = _b.fallback, elementType = _a.elementType, renderPropIdentifier = _a.renderPropIdentifier, _c = _a.mappings, mappings = _c === void 0 ? {} : _c, attrs = _a.attrs, dependency = _a.dependency;
347
+ var jsxTag = teleport_shared_1.StringUtils.dashCaseToUpperCamelCase(elementType);
348
+ var cmsMixedNode = __1.ASTBuilders.createJSXTag(jsxTag, [], true);
349
+ var mappingsObject = [];
350
+ if (attrs) {
351
+ addAttributesToJSXTag(attrs, cmsMixedNode, options, params);
352
+ }
353
+ if (dependency) {
354
+ params.dependencies[elementType] = dependency;
355
+ }
356
+ Object.keys(mappings).forEach(function (key) {
357
+ var element = generateElementNode(mappings[key], params, options);
358
+ mappingsObject.push(types.objectProperty(types.identifier("\"".concat(key, "\"")), types.arrowFunctionExpression([types.identifier(renderPropIdentifier)], element)));
359
+ });
360
+ cmsMixedNode.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier('mappingConfiguration'), types.jsxExpressionContainer(types.objectExpression(mappingsObject))));
361
+ if (fallback) {
362
+ cmsMixedNode.openingElement.attributes.push(types.jSXAttribute(types.jsxIdentifier('renderDefault'), types.jsxExpressionContainer(types.arrowFunctionExpression([types.identifier(renderPropIdentifier)], generateElementNode(fallback, params, options)))));
363
+ }
364
+ if (error) {
365
+ cmsMixedNode.openingElement.attributes.push(types.jSXAttribute(types.jsxIdentifier('renderError'), types.jsxExpressionContainer(types.arrowFunctionExpression([types.identifier(renderPropIdentifier)], generateElementNode(error, params, options)))));
366
+ }
367
+ return [cmsMixedNode];
173
368
  };
174
369
  var generateCMSNode = function (node, params, options) {
175
370
  var _a = node.content, initialData = _a.initialData, key = _a.key, renderPropIdentifier = _a.renderPropIdentifier, _b = _a.resource, _c = _b === void 0 ? {} : _b, resourceParams = _c.params, router = _a.router, elementType = _a.elementType, dependency = _a.dependency;
@@ -235,6 +430,72 @@ var generateCMSNode = function (node, params, options) {
235
430
  params.nodesLookup[key] = cmsNode;
236
431
  return [cmsNode];
237
432
  };
433
+ var generateDataSourceNode = function (node, params, options) {
434
+ var _a, _b, _c, _d;
435
+ var _e = node.content, renderPropIdentifier = _e.renderPropIdentifier, elementType = _e.elementType, dependency = _e.dependency, resourceDefinition = _e.resourceDefinition;
436
+ var key = node.content.key || "ds-".concat(resourceDefinition.dataSourceId, "-").concat(Date.now());
437
+ var name = node.content.name || renderPropIdentifier;
438
+ // tslint:disable-next-line:no-any
439
+ var children = node.content.children && node.content.children.length > 0
440
+ ? node.content.children
441
+ : ((_a = node.content.nodes) === null || _a === void 0 ? void 0 : _a.success)
442
+ ? [node.content.nodes.success]
443
+ : [];
444
+ var jsxTag = teleport_shared_1.StringUtils.dashCaseToUpperCamelCase(elementType);
445
+ if (dependency && options.dependencyHandling === 'import') {
446
+ params.dependencies[elementType] = dependency;
447
+ }
448
+ var dataSourceNode = __1.ASTBuilders.createJSXTag(jsxTag, [], true);
449
+ dataSourceNode.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier('resourceDefinition'), types.jsxExpressionContainer(types.objectExpression([
450
+ types.objectProperty(types.stringLiteral('type'), types.stringLiteral('external-data-source')),
451
+ types.objectProperty(types.stringLiteral('dataSourceId'), types.stringLiteral(resourceDefinition.dataSourceId)),
452
+ types.objectProperty(types.stringLiteral('tableName'), types.stringLiteral(resourceDefinition.tableName)),
453
+ types.objectProperty(types.stringLiteral('dataSourceType'), types.stringLiteral(resourceDefinition.dataSourceType)),
454
+ ]))));
455
+ dataSourceNode.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier('name'), types.jsxExpressionContainer(types.stringLiteral(name))));
456
+ if (children && children.length > 0) {
457
+ var childrenNodes = children.flatMap(function (child) { return generateNode(child, params, options); });
458
+ var renderFunction = types.arrowFunctionExpression([types.identifier(renderPropIdentifier)], types.jsxFragment(types.jsxOpeningFragment(), types.jsxClosingFragment(), childrenNodes));
459
+ dataSourceNode.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier('renderSuccess'), types.jsxExpressionContainer(renderFunction)));
460
+ }
461
+ // tslint:disable-next-line:no-any
462
+ if ((_b = node.content.nodes) === null || _b === void 0 ? void 0 : _b.loading) {
463
+ // tslint:disable-next-line:no-any
464
+ var loadingNode = generateNode(node.content.nodes.loading, params, options)[0];
465
+ dataSourceNode.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier('renderLoading'), types.jsxExpressionContainer(types.arrowFunctionExpression([], loadingNode))));
466
+ }
467
+ // tslint:disable-next-line:no-any
468
+ if ((_c = node.content.nodes) === null || _c === void 0 ? void 0 : _c.error) {
469
+ // tslint:disable-next-line:no-any
470
+ var errorNode = generateNode(node.content.nodes.error, params, options)[0];
471
+ dataSourceNode.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier('renderError'), types.jsxExpressionContainer(types.arrowFunctionExpression([], errorNode))));
472
+ }
473
+ // Add resource params if they exist
474
+ // tslint:disable-next-line:no-any
475
+ var resourceParams = (_d = node.content.resource) === null || _d === void 0 ? void 0 : _d.params;
476
+ if (resourceParams && Object.keys(resourceParams).length > 0) {
477
+ var nodeParams = Object.keys(resourceParams).reduce(function (acc, attrKey) {
478
+ var property = resourceParams[attrKey];
479
+ if (property.type === 'static') {
480
+ acc.push(types.objectProperty(types.stringLiteral(attrKey), (0, ast_utils_1.resolveObjectValue)(property)));
481
+ }
482
+ if (property.type === 'expr') {
483
+ var expression = __1.ASTUtils.getExpressionFromUIDLExpressionNode(property);
484
+ acc.push(types.objectProperty(types.stringLiteral(attrKey), expression));
485
+ }
486
+ if (property.type === 'dynamic') {
487
+ var refType = property.content.referenceType;
488
+ acc.push(types.objectProperty(types.stringLiteral(attrKey), property.content.referenceType === 'prop'
489
+ ? types.memberExpression(types.identifier(options.dynamicReferencePrefixMap[refType]), types.identifier(property.content.id))
490
+ : types.identifier(property.content.id)));
491
+ }
492
+ return acc;
493
+ }, []);
494
+ dataSourceNode.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier('params'), types.jsxExpressionContainer(types.objectExpression(nodeParams))));
495
+ }
496
+ params.nodesLookup[key] = dataSourceNode;
497
+ return [dataSourceNode];
498
+ };
238
499
  var generateRepeatNode = function (node, params, options) {
239
500
  var _a = node.content, repeatContent = _a.node, dataSource = _a.dataSource, meta = _a.meta;
240
501
  var contentASTs = generateNode(repeatContent, params, options);
@@ -256,22 +517,42 @@ var generateRepeatNode = function (node, params, options) {
256
517
  };
257
518
  var generateConditionalNode = function (node, params, options) {
258
519
  var _a = node.content, reference = _a.reference, value = _a.value;
259
- var conditionIdentifier = (0, utils_1.createConditionIdentifier)(reference, params, options);
260
520
  var subTrees = generateNode(node.content.node, params, options);
261
521
  var condition = value !== undefined && value !== null
262
522
  ? { conditions: [{ operand: value, operation: '===' }] }
263
523
  : node.content.condition;
264
- return subTrees.map(function (subTree) {
524
+ var conditionIdentifier = (0, utils_1.createConditionIdentifier)(reference, params, options);
525
+ var conditionalExpressions = subTrees.map(function (subTree) {
265
526
  return (0, utils_1.createConditionalJSXExpression)(subTree, condition, conditionIdentifier);
266
527
  });
528
+ return conditionalExpressions;
267
529
  };
268
530
  var generateCMSListRepeaterNode = function (node, params, options) {
269
- var repeaterNode = __1.ASTBuilders.createJSXTag('Repeater', [], true);
270
- repeaterNode.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier('items'), types.jsxExpressionContainer(types.identifier('params'))));
271
- repeaterNode.openingElement.attributes.push(types.jsxAttribute(types.jSXIdentifier('renderItem'), types.jsxExpressionContainer(types.arrowFunctionExpression([types.identifier(node.content.renderPropIdentifier)], generateNode(node.content.nodes.list, params, options)[0]))));
531
+ var _a, _b;
532
+ var jsxTag = teleport_shared_1.StringUtils.dashCaseToUpperCamelCase(node.content.elementType);
533
+ var repeaterNode = __1.ASTBuilders.createJSXTag(jsxTag, [], true);
534
+ repeaterNode.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier('items'), types.jsxExpressionContainer(types.identifier((_a = node.content.source) !== null && _a !== void 0 ? _a : 'params'))));
535
+ var listElement = generateNode(node.content.nodes.list, params, __assign(__assign({}, options), { localIdentifier: node.content.renderPropIdentifier }))[0];
536
+ // Create key as template literal: `${item?.id}${index}`
537
+ var keyAttribute = types.jsxAttribute(types.jsxIdentifier('key'), types.jsxExpressionContainer(types.templateLiteral([
538
+ types.templateElement({ raw: '', cooked: '' }, false),
539
+ types.templateElement({ raw: '', cooked: '' }, false),
540
+ types.templateElement({ raw: '', cooked: '' }, true),
541
+ ], [
542
+ types.optionalMemberExpression(types.identifier(node.content.renderPropIdentifier), types.identifier('id'), false, true),
543
+ types.identifier('index'),
544
+ ])));
545
+ listElement.openingElement.attributes.push(keyAttribute);
546
+ repeaterNode.openingElement.attributes.push(types.jsxAttribute(types.jSXIdentifier('renderItem'), types.jsxExpressionContainer(types.arrowFunctionExpression([types.identifier(node.content.renderPropIdentifier), types.identifier('index')], listElement))));
272
547
  if ('empty' in node.content.nodes) {
273
548
  repeaterNode.openingElement.attributes.push(types.jsxAttribute(types.jsxIdentifier('renderEmpty'), types.jsxExpressionContainer(types.arrowFunctionExpression([], generateNode(node.content.nodes.empty, params, options)[0]))));
274
549
  }
550
+ if ('loading' in node.content.nodes) {
551
+ generateNode(node.content.nodes.loading, params, options);
552
+ }
553
+ if (((_b = node.content) === null || _b === void 0 ? void 0 : _b.dependency) && options.dependencyHandling === 'import') {
554
+ params.dependencies[jsxTag] = node.content.dependency;
555
+ }
275
556
  return [repeaterNode];
276
557
  };
277
558
  var generatePropsSlotNode = function (node, params, options) {