@builder.io/mitosis 0.0.56-97 → 0.0.56

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 (248) hide show
  1. package/dist/src/__tests__/data/blocks/content-slot-jsx.raw.jsx +4 -1
  2. package/dist/src/__tests__/data/blocks/form.raw.jsx +5 -5
  3. package/dist/src/__tests__/data/blocks/onUpdateWithDeps.raw.d.ts +5 -1
  4. package/dist/src/__tests__/data/blocks/onUpdateWithDeps.raw.jsx +3 -3
  5. package/dist/src/__tests__/data/default-props/default-props.raw.d.ts +7 -0
  6. package/dist/src/__tests__/data/default-props/default-props.raw.jsx +23 -0
  7. package/dist/src/__tests__/data/jsx-json.spec.d.ts +2 -0
  8. package/dist/src/__tests__/data/jsx-json.spec.js +10226 -0
  9. package/dist/src/__tests__/data/types/component-with-default-values-types.raw.d.ts +5 -0
  10. package/dist/src/__tests__/data/types/component-with-default-values-types.raw.jsx +9 -0
  11. package/dist/src/__tests__/shared.d.ts +7 -2
  12. package/dist/src/__tests__/shared.js +69 -9
  13. package/dist/src/constants/hooks.d.ts +1 -0
  14. package/dist/src/constants/hooks.js +1 -0
  15. package/dist/src/constants/method-literal-prefix.d.ts +0 -1
  16. package/dist/src/constants/method-literal-prefix.js +0 -3
  17. package/dist/src/generators/angular.d.ts +2 -2
  18. package/dist/src/generators/angular.js +12 -5
  19. package/dist/src/generators/builder.d.ts +4 -11
  20. package/dist/src/generators/builder.js +3 -2
  21. package/dist/src/generators/context/svelte.d.ts +3 -0
  22. package/dist/src/generators/context/svelte.js +3 -0
  23. package/dist/src/generators/helpers/functions.d.ts +2 -0
  24. package/dist/src/generators/helpers/functions.js +28 -0
  25. package/dist/src/generators/html.d.ts +3 -3
  26. package/dist/src/generators/html.js +9 -7
  27. package/dist/src/generators/liquid.d.ts +2 -2
  28. package/dist/src/generators/liquid.js +4 -4
  29. package/dist/src/generators/lit/generate.d.ts +2 -2
  30. package/dist/src/generators/lit/generate.js +14 -6
  31. package/dist/src/generators/marko/generate.d.ts +2 -2
  32. package/dist/src/generators/marko/generate.js +10 -8
  33. package/dist/src/generators/mitosis.d.ts +3 -4
  34. package/dist/src/generators/mitosis.js +3 -2
  35. package/dist/src/generators/qwik/component-generator.d.ts +2 -2
  36. package/dist/src/generators/qwik/component-generator.js +49 -55
  37. package/dist/src/generators/qwik/component.d.ts +0 -1
  38. package/dist/src/generators/qwik/component.js +22 -19
  39. package/dist/src/generators/qwik/directives.d.ts +1 -0
  40. package/dist/src/generators/qwik/directives.js +11 -14
  41. package/dist/src/generators/qwik/jsx.d.ts +1 -1
  42. package/dist/src/generators/qwik/jsx.js +9 -5
  43. package/dist/src/generators/qwik/src-generator.js +9 -3
  44. package/dist/src/generators/qwik/stable-serialize.d.ts +6 -0
  45. package/dist/src/generators/qwik/stable-serialize.js +51 -0
  46. package/dist/src/generators/react/generator.d.ts +6 -0
  47. package/dist/src/generators/{react.js → react/generator.js} +63 -156
  48. package/dist/src/generators/react/helpers.d.ts +2 -0
  49. package/dist/src/generators/react/helpers.js +14 -0
  50. package/dist/src/generators/react/index.d.ts +2 -0
  51. package/dist/src/generators/react/index.js +18 -0
  52. package/dist/src/generators/react/state.d.ts +9 -0
  53. package/dist/src/generators/react/state.js +107 -0
  54. package/dist/src/generators/react/types.d.ts +10 -0
  55. package/dist/src/generators/react/types.js +2 -0
  56. package/dist/src/generators/react-native.d.ts +2 -2
  57. package/dist/src/generators/solid/index.d.ts +3 -0
  58. package/dist/src/generators/{solid.js → solid/index.js} +80 -40
  59. package/dist/src/generators/solid/state.d.ts +19 -0
  60. package/dist/src/generators/solid/state.js +144 -0
  61. package/dist/src/generators/solid/types.d.ts +6 -0
  62. package/dist/src/generators/solid/types.js +2 -0
  63. package/dist/src/generators/stencil/generate.d.ts +2 -2
  64. package/dist/src/generators/stencil/generate.js +5 -2
  65. package/dist/src/generators/svelte.d.ts +6 -7
  66. package/dist/src/generators/svelte.js +47 -40
  67. package/dist/src/generators/swift-ui.d.ts +3 -5
  68. package/dist/src/generators/swift-ui.js +3 -2
  69. package/dist/src/generators/template.d.ts +2 -2
  70. package/dist/src/generators/template.js +3 -2
  71. package/dist/src/generators/vue.d.ts +5 -3
  72. package/dist/src/generators/vue.js +262 -107
  73. package/dist/src/helpers/babel-transform.d.ts +3 -1
  74. package/dist/src/helpers/babel-transform.js +52 -56
  75. package/dist/src/helpers/get-bindings.js +3 -5
  76. package/dist/src/helpers/get-custom-imports.js +7 -1
  77. package/dist/src/helpers/get-state-object-string.js +24 -21
  78. package/dist/src/helpers/getters-to-functions.js +1 -11
  79. package/dist/src/helpers/map-refs.js +25 -25
  80. package/dist/src/helpers/nodes/for.d.ts +4 -0
  81. package/dist/src/helpers/nodes/for.js +13 -0
  82. package/dist/src/helpers/nullable.d.ts +2 -0
  83. package/dist/src/helpers/nullable.js +7 -0
  84. package/dist/src/helpers/parse-reactive-script.js +66 -78
  85. package/dist/src/helpers/patterns.d.ts +2 -0
  86. package/dist/src/helpers/patterns.js +5 -1
  87. package/dist/src/helpers/render-imports.js +3 -3
  88. package/dist/src/helpers/replace-identifiers.d.ts +5 -0
  89. package/dist/src/helpers/{replace-idenifiers.js → replace-identifiers.js} +2 -1
  90. package/dist/src/helpers/slots.d.ts +2 -0
  91. package/dist/src/helpers/slots.js +15 -1
  92. package/dist/src/helpers/state.d.ts +0 -2
  93. package/dist/src/helpers/state.js +1 -10
  94. package/dist/src/helpers/strip-state-and-props-refs.d.ts +1 -1
  95. package/dist/src/helpers/strip-state-and-props-refs.js +43 -31
  96. package/dist/src/index.d.ts +3 -0
  97. package/dist/src/index.js +3 -1
  98. package/dist/src/parsers/angular.js +2 -2
  99. package/dist/src/parsers/builder.d.ts +4 -2
  100. package/dist/src/parsers/builder.js +61 -43
  101. package/dist/src/parsers/constants/outdated-prefixes.d.ts +10 -0
  102. package/dist/src/parsers/constants/outdated-prefixes.js +13 -0
  103. package/dist/src/parsers/context.js +2 -2
  104. package/dist/src/parsers/helpers/state.d.ts +3 -0
  105. package/dist/src/parsers/helpers/state.js +30 -0
  106. package/dist/src/parsers/jsx/component-types.d.ts +1 -1
  107. package/dist/src/parsers/jsx/component-types.js +15 -2
  108. package/dist/src/parsers/jsx/context.js +1 -1
  109. package/dist/src/parsers/jsx/element-parser.d.ts +6 -0
  110. package/dist/src/parsers/jsx/element-parser.js +243 -0
  111. package/dist/src/parsers/jsx/exports.d.ts +3 -0
  112. package/dist/src/parsers/jsx/exports.js +78 -0
  113. package/dist/src/parsers/jsx/function-parser.d.ts +7 -0
  114. package/dist/src/parsers/jsx/function-parser.js +291 -0
  115. package/dist/src/parsers/jsx/helpers.d.ts +2 -0
  116. package/dist/src/parsers/jsx/helpers.js +30 -1
  117. package/dist/src/parsers/jsx/imports.d.ts +7 -0
  118. package/dist/src/parsers/jsx/imports.js +65 -0
  119. package/dist/src/parsers/jsx/index.d.ts +1 -1
  120. package/dist/src/parsers/jsx/index.js +1 -2
  121. package/dist/src/parsers/jsx/jsx.js +29 -501
  122. package/dist/src/parsers/jsx/state.d.ts +2 -3
  123. package/dist/src/parsers/jsx/state.js +15 -22
  124. package/dist/src/plugins/compile-away-builder-components.js +6 -0
  125. package/dist/src/symbols/symbol-processor.js +3 -0
  126. package/dist/src/targets.d.ts +21 -28
  127. package/dist/src/targets.js +2 -2
  128. package/dist/src/types/config.d.ts +11 -1
  129. package/dist/src/types/mitosis-component.d.ts +13 -6
  130. package/dist/src/types/mitosis-component.js +11 -0
  131. package/dist/src/types/mitosis-context.d.ts +2 -2
  132. package/dist/src/types/mitosis-node.d.ts +14 -5
  133. package/dist/src/types/mitosis-node.js +3 -0
  134. package/dist/src/types/transpiler.d.ts +6 -1
  135. package/dist/tsconfig.build.tsbuildinfo +1 -1
  136. package/package.json +13 -9
  137. package/dist/src/__tests__/angular.test.d.ts +0 -1
  138. package/dist/src/__tests__/angular.test.js +0 -10
  139. package/dist/src/__tests__/builder.test.d.ts +0 -1
  140. package/dist/src/__tests__/builder.test.js +0 -235
  141. package/dist/src/__tests__/context.test.d.ts +0 -1
  142. package/dist/src/__tests__/context.test.js +0 -35
  143. package/dist/src/__tests__/hash-code.test.d.ts +0 -1
  144. package/dist/src/__tests__/hash-code.test.js +0 -11
  145. package/dist/src/__tests__/html.test.d.ts +0 -1
  146. package/dist/src/__tests__/html.test.js +0 -7
  147. package/dist/src/__tests__/liquid.test.d.ts +0 -1
  148. package/dist/src/__tests__/liquid.test.js +0 -7
  149. package/dist/src/__tests__/lit.test.d.ts +0 -1
  150. package/dist/src/__tests__/lit.test.js +0 -7
  151. package/dist/src/__tests__/marko.test.d.ts +0 -1
  152. package/dist/src/__tests__/marko.test.js +0 -14
  153. package/dist/src/__tests__/parse-jsx.test.d.ts +0 -1
  154. package/dist/src/__tests__/parse-jsx.test.js +0 -37
  155. package/dist/src/__tests__/qwik/convert-method-to-function.test.d.ts +0 -1
  156. package/dist/src/__tests__/qwik/convert-method-to-function.test.js +0 -37
  157. package/dist/src/__tests__/qwik/src-generator.test.d.ts +0 -1
  158. package/dist/src/__tests__/qwik/src-generator.test.js +0 -65
  159. package/dist/src/__tests__/qwik.directive.test.d.ts +0 -1
  160. package/dist/src/__tests__/qwik.directive.test.js +0 -108
  161. package/dist/src/__tests__/qwik.test.d.ts +0 -1
  162. package/dist/src/__tests__/qwik.test.js +0 -465
  163. package/dist/src/__tests__/react-native.test.d.ts +0 -1
  164. package/dist/src/__tests__/react-native.test.js +0 -7
  165. package/dist/src/__tests__/react.test.d.ts +0 -1
  166. package/dist/src/__tests__/react.test.js +0 -20
  167. package/dist/src/__tests__/solid.test.d.ts +0 -1
  168. package/dist/src/__tests__/solid.test.js +0 -10
  169. package/dist/src/__tests__/stencil.test.d.ts +0 -1
  170. package/dist/src/__tests__/stencil.test.js +0 -7
  171. package/dist/src/__tests__/styles.test.d.ts +0 -1
  172. package/dist/src/__tests__/styles.test.js +0 -23
  173. package/dist/src/__tests__/svelte.test.d.ts +0 -1
  174. package/dist/src/__tests__/svelte.test.js +0 -7
  175. package/dist/src/__tests__/vue.test.d.ts +0 -1
  176. package/dist/src/__tests__/vue.test.js +0 -7
  177. package/dist/src/__tests__/webcomponent.test.d.ts +0 -1
  178. package/dist/src/__tests__/webcomponent.test.js +0 -15
  179. package/dist/src/constants/function-literal-prefix.d.ts +0 -1
  180. package/dist/src/constants/function-literal-prefix.js +0 -4
  181. package/dist/src/generators/react.d.ts +0 -14
  182. package/dist/src/generators/solid.d.ts +0 -5
  183. package/dist/src/helpers/babel-transform.test.d.ts +0 -1
  184. package/dist/src/helpers/babel-transform.test.js +0 -7
  185. package/dist/src/helpers/generic-format.test.d.ts +0 -1
  186. package/dist/src/helpers/generic-format.test.js +0 -8
  187. package/dist/src/helpers/remove-surrounding-block.test.d.ts +0 -1
  188. package/dist/src/helpers/remove-surrounding-block.test.js +0 -9
  189. package/dist/src/helpers/render-imports.test.d.ts +0 -1
  190. package/dist/src/helpers/render-imports.test.js +0 -33
  191. package/dist/src/helpers/replace-idenifiers.d.ts +0 -1
  192. package/dist/src/helpers/styles/collect-css.test.d.ts +0 -1
  193. package/dist/src/helpers/styles/collect-css.test.js +0 -18
  194. package/dist/test/qwik/Accordion/high.jsx +0 -0
  195. package/dist/test/qwik/Accordion/low.jsx +0 -240
  196. package/dist/test/qwik/Accordion/med.jsx +0 -4
  197. package/dist/test/qwik/For/high.jsx +0 -0
  198. package/dist/test/qwik/For/low.jsx +0 -52
  199. package/dist/test/qwik/For/med.jsx +0 -4
  200. package/dist/test/qwik/Image/high.js +0 -9
  201. package/dist/test/qwik/Image/low.js +0 -0
  202. package/dist/test/qwik/Image/med.js +0 -155
  203. package/dist/test/qwik/Image.slow/high.js +0 -9
  204. package/dist/test/qwik/Image.slow/low.js +0 -0
  205. package/dist/test/qwik/Image.slow/med.js +0 -155
  206. package/dist/test/qwik/bindings/high.cjs +0 -0
  207. package/dist/test/qwik/bindings/low.cjs +0 -45
  208. package/dist/test/qwik/bindings/med.cjs +0 -3
  209. package/dist/test/qwik/button/high.js +0 -3
  210. package/dist/test/qwik/button/low.js +0 -25
  211. package/dist/test/qwik/button/med.js +0 -31
  212. package/dist/test/qwik/component/bindings/high.jsx +0 -0
  213. package/dist/test/qwik/component/bindings/low.jsx +0 -104
  214. package/dist/test/qwik/component/bindings/med.jsx +0 -7
  215. package/dist/test/qwik/component/component/inputs/high.cjsx +0 -9
  216. package/dist/test/qwik/component/component/inputs/low.cjsx +0 -0
  217. package/dist/test/qwik/component/component/inputs/med.cjsx +0 -68
  218. package/dist/test/qwik/for-loop.bindings/high.cjs +0 -0
  219. package/dist/test/qwik/for-loop.bindings/low.cjs +0 -56
  220. package/dist/test/qwik/for-loop.bindings/med.cjs +0 -5
  221. package/dist/test/qwik/hello_world/stylesheet/high.jsx +0 -0
  222. package/dist/test/qwik/hello_world/stylesheet/low.jsx +0 -26
  223. package/dist/test/qwik/hello_world/stylesheet/med.jsx +0 -4
  224. package/dist/test/qwik/mount/high.cjs +0 -0
  225. package/dist/test/qwik/mount/low.cjs +0 -47
  226. package/dist/test/qwik/mount/med.cjs +0 -3
  227. package/dist/test/qwik/page-with-symbol/high.js +0 -0
  228. package/dist/test/qwik/page-with-symbol/low.js +0 -33
  229. package/dist/test/qwik/page-with-symbol/med.js +0 -4
  230. package/dist/test/qwik/show-hide/high.jsx +0 -9
  231. package/dist/test/qwik/show-hide/low.jsx +0 -0
  232. package/dist/test/qwik/show-hide/med.jsx +0 -181
  233. package/dist/test/qwik/svg/high.js +0 -0
  234. package/dist/test/qwik/svg/low.js +0 -30
  235. package/dist/test/qwik/svg/med.js +0 -4
  236. package/dist/test/qwik/todo/Todo.cjs/high.cjs +0 -19
  237. package/dist/test/qwik/todo/Todo.cjs/low.cjs +0 -0
  238. package/dist/test/qwik/todo/Todo.cjs/med.cjs +0 -51
  239. package/dist/test/qwik/todo/Todo.js/high.js +0 -19
  240. package/dist/test/qwik/todo/Todo.js/low.js +0 -0
  241. package/dist/test/qwik/todo/Todo.js/med.js +0 -47
  242. package/dist/test/qwik/todo/Todo.tsx/high.tsx +0 -19
  243. package/dist/test/qwik/todo/Todo.tsx/low.tsx +0 -0
  244. package/dist/test/qwik/todo/Todo.tsx/med.tsx +0 -43
  245. package/dist/test/qwik/todos/Todo.tsx/high.tsx +0 -7
  246. package/dist/test/qwik/todos/Todo.tsx/low.tsx +0 -32
  247. package/dist/test/qwik/todos/Todo.tsx/med.tsx +0 -4
  248. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,5 @@
1
+ declare type Props = {
2
+ name: string;
3
+ };
4
+ export default function ComponentWithTypes(props: Props): import("@builder.io/mitosis/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var DEFAULT_VALUES = {
4
+ name: 'Sami',
5
+ };
6
+ function ComponentWithTypes(props) {
7
+ return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;
8
+ }
9
+ exports.default = ComponentWithTypes;
@@ -1,3 +1,8 @@
1
- import { Transpiler } from '../types/transpiler';
1
+ import { TranspilerGenerator } from '../types/transpiler';
2
2
  import { Target } from '../types/config';
3
- export declare const runTestsForTarget: (target: Target, generator: Transpiler) => void;
3
+ export declare const runTestsForJsx: () => void;
4
+ export declare const runTestsForTarget: <X>({ target, generator, options, }: {
5
+ target: Target;
6
+ generator: TranspilerGenerator<X, string>;
7
+ options: X;
8
+ }) => void;
@@ -1,6 +1,17 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runTestsForTarget = void 0;
14
+ exports.runTestsForTarget = exports.runTestsForJsx = void 0;
4
15
  var jsx_1 = require("../parsers/jsx");
5
16
  var basicForShow = require('./data/basic-for-show.raw');
6
17
  var basicOnMountUpdate = require('./data/basic-onMount-update.raw');
@@ -24,6 +35,7 @@ var propsType = require('./data/types/component-props-type.raw');
24
35
  var propsInterface = require('./data/types/component-props-interface.raw');
25
36
  var preserveTyping = require('./data/types/preserve-typing.raw');
26
37
  var typeDependency = require('./data/types/type-dependency.raw');
38
+ var defaultProps = require('./data/default-props/default-props.raw');
27
39
  var classRaw = require('./data/styles/class.raw');
28
40
  var className = require('./data/styles/className.raw');
29
41
  var classAndClassName = require('./data/styles/class-and-className.raw');
@@ -59,6 +71,7 @@ var submitButtonBlock = require('./data/blocks/submit-button.raw');
59
71
  var text = require('./data/blocks/text.raw');
60
72
  var textarea = require('./data/blocks/textarea.raw');
61
73
  var video = require('./data/blocks/video.raw');
74
+ var builderRenderContent = require('./data/blocks/builder-render-content.raw');
62
75
  var path = 'test-path';
63
76
  var BASIC_TESTS = {
64
77
  Basic: basic,
@@ -88,8 +101,11 @@ var BASIC_TESTS = {
88
101
  onMount: onMount,
89
102
  propsType: propsType,
90
103
  propsInterface: propsInterface,
104
+ defaultProps: defaultProps,
91
105
  preserveTyping: preserveTyping,
92
106
  typeDependency: typeDependency,
107
+ defaultValsWithTypes: require('./data/types/component-with-default-values-types.raw'),
108
+ 'import types': builderRenderContent,
93
109
  subComponent: subComponent,
94
110
  nestedStyles: nestedStyles,
95
111
  propsDestructure: propsDestructure,
@@ -140,6 +156,17 @@ var ADVANCED_REF = {
140
156
  var ON_UPDATE_RETURN = {
141
157
  basicOnUpdateReturn: require('./data/basic-onUpdate-return.raw'),
142
158
  };
159
+ var JSX_TESTS = [
160
+ BASIC_TESTS,
161
+ SLOTS_TESTS,
162
+ SHOW_TESTS,
163
+ FORWARD_REF_TESTS,
164
+ MULTI_ON_UPDATE_TESTS,
165
+ FORM_BLOCK_TESTS,
166
+ ADVANCED_REF,
167
+ ON_UPDATE_RETURN,
168
+ FOR_SHOW_TESTS,
169
+ ];
143
170
  var TESTS_FOR_TARGET = {
144
171
  react: [
145
172
  BASIC_TESTS,
@@ -281,22 +308,55 @@ var TESTS_FOR_TARGET = {
281
308
  FOR_SHOW_TESTS,
282
309
  ],
283
310
  };
284
- var runTestsForTarget = function (target, generator) {
311
+ var runTestsForJsx = function () {
312
+ test('Remove Internal mitosis package', function () {
313
+ var component = (0, jsx_1.parseJsx)(basicMitosis, {
314
+ compileAwayPackages: ['@dummy/custom-mitosis'],
315
+ });
316
+ expect(component).toMatchSnapshot();
317
+ });
318
+ JSX_TESTS.forEach(function (tests) {
319
+ Object.keys(tests).forEach(function (key) {
320
+ test(key, function () {
321
+ var component = (0, jsx_1.parseJsx)(tests[key]);
322
+ expect(component).toMatchSnapshot();
323
+ });
324
+ });
325
+ });
326
+ };
327
+ exports.runTestsForJsx = runTestsForJsx;
328
+ var runTestsForTarget = function (_a) {
329
+ var target = _a.target, generator = _a.generator, options = _a.options;
285
330
  var testsArray = TESTS_FOR_TARGET[target];
286
331
  test('Remove Internal mitosis package', function () {
287
332
  var component = (0, jsx_1.parseJsx)(basicMitosis, {
288
333
  compileAwayPackages: ['@dummy/custom-mitosis'],
289
334
  });
290
- var output = generator({ component: component, path: path });
335
+ var output = generator(options)({ component: component, path: path });
291
336
  expect(output).toMatchSnapshot();
292
337
  });
338
+ var configurations = [
339
+ { options: __assign(__assign({}, options), { typescript: false }), testName: 'Javascript Test' },
340
+ { options: __assign(__assign({}, options), { typescript: true }), testName: 'Typescript Test' },
341
+ ];
293
342
  if (testsArray) {
294
- testsArray.forEach(function (tests) {
295
- Object.keys(tests).forEach(function (key) {
296
- test(key, function () {
297
- var component = (0, jsx_1.parseJsx)(tests[key]);
298
- var output = generator({ component: component, path: path });
299
- expect(output).toMatchSnapshot();
343
+ configurations.forEach(function (_a) {
344
+ var options = _a.options, testName = _a.testName;
345
+ describe(testName, function () {
346
+ testsArray.forEach(function (tests) {
347
+ Object.keys(tests).forEach(function (key) {
348
+ test(key, function () {
349
+ try {
350
+ var component = (0, jsx_1.parseJsx)(tests[key]);
351
+ var output = generator(options)({ component: component, path: path });
352
+ expect(output).toMatchSnapshot();
353
+ }
354
+ catch (error) {
355
+ console.log('failed to parse', error);
356
+ throw error;
357
+ }
358
+ });
359
+ });
300
360
  });
301
361
  });
302
362
  });
@@ -3,4 +3,5 @@ export declare const HOOKS: {
3
3
  readonly STATE: "useState";
4
4
  readonly CONTEXT: "useContext";
5
5
  readonly REF: "useRef";
6
+ readonly DEFAULT_PROPS: "useDefaultProps";
6
7
  };
@@ -6,4 +6,5 @@ exports.HOOKS = {
6
6
  STATE: 'useState',
7
7
  CONTEXT: 'useContext',
8
8
  REF: 'useRef',
9
+ DEFAULT_PROPS: 'useDefaultProps',
9
10
  };
@@ -1 +0,0 @@
1
- export declare const methodLiteralPrefix = "@builder.io/mitosis/method:";
@@ -1,4 +1 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.methodLiteralPrefix = void 0;
4
- exports.methodLiteralPrefix = "@builder.io/mitosis/method:";
@@ -1,5 +1,5 @@
1
1
  import { MitosisNode } from '../types/mitosis-node';
2
- import { BaseTranspilerOptions, Transpiler } from '../types/transpiler';
2
+ import { BaseTranspilerOptions, TranspilerGenerator } from '../types/transpiler';
3
3
  export interface ToAngularOptions extends BaseTranspilerOptions {
4
4
  standalone?: boolean;
5
5
  }
@@ -10,5 +10,5 @@ interface AngularBlockOptions {
10
10
  domRefs?: string[];
11
11
  }
12
12
  export declare const blockToAngular: (json: MitosisNode, options?: ToAngularOptions, blockOptions?: AngularBlockOptions) => string;
13
- export declare const componentToAngular: (options?: ToAngularOptions) => Transpiler;
13
+ export declare const componentToAngular: TranspilerGenerator<ToAngularOptions>;
14
14
  export {};
@@ -18,6 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.componentToAngular = exports.blockToAngular = void 0;
20
20
  var dedent_1 = __importDefault(require("dedent"));
21
+ var json5_1 = __importDefault(require("json5"));
21
22
  var standalone_1 = require("prettier/standalone");
22
23
  var collect_css_1 = require("../helpers/styles/collect-css");
23
24
  var fast_clone_1 = require("../helpers/fast-clone");
@@ -27,6 +28,7 @@ var map_refs_1 = require("../helpers/map-refs");
27
28
  var render_imports_1 = require("../helpers/render-imports");
28
29
  var strip_state_and_props_refs_1 = require("../helpers/strip-state-and-props-refs");
29
30
  var jsx_1 = require("../parsers/jsx");
31
+ var mitosis_node_1 = require("../types/mitosis-node");
30
32
  var plugins_1 = require("../modules/plugins");
31
33
  var is_children_1 = __importDefault(require("../helpers/is-children"));
32
34
  var get_props_1 = require("../helpers/get-props");
@@ -96,12 +98,13 @@ var blockToAngular = function (json, options, blockOptions) {
96
98
  }
97
99
  var str = '';
98
100
  var needsToRenderSlots = [];
99
- if (json.name === 'For') {
100
- str += "<ng-container *ngFor=\"let ".concat(json.properties._forName, " of ").concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_e = json.bindings.each) === null || _e === void 0 ? void 0 : _e.code, {
101
+ if ((0, mitosis_node_1.checkIsForNode)(json)) {
102
+ var indexName = json.scope.indexName;
103
+ str += "<ng-container *ngFor=\"let ".concat(json.scope.forName, " of ").concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_e = json.bindings.each) === null || _e === void 0 ? void 0 : _e.code, {
101
104
  contextVars: contextVars,
102
105
  outputVars: outputVars,
103
106
  domRefs: domRefs,
104
- }), "\">");
107
+ })).concat(indexName ? "; let ".concat(indexName, " = index") : '', "\">");
105
108
  str += json.children.map(function (item) { return (0, exports.blockToAngular)(item, options, blockOptions); }).join('\n');
106
109
  str += "</ng-container>";
107
110
  }
@@ -292,7 +295,7 @@ var componentToAngular = function (options) {
292
295
  });
293
296
  },
294
297
  });
295
- var str = (0, dedent_1.default)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n import { ", " ", " Component ", "", " } from '@angular/core';\n ", "\n\n ", "\n ", "\n\n @Component({\n ", "\n selector: '", "',\n template: `\n ", "\n `,\n ", "\n })\n export default class ", " {\n ", "\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n ", "\n\n ", "\n\n ", "\n\n }\n "], ["\n import { ", " ", " Component ", "", " } from '@angular/core';\n ", "\n\n ", "\n ", "\n\n @Component({\n ", "\n selector: '", "',\n template: \\`\n ", "\n \\`,\n ", "\n })\n export default class ", " {\n ", "\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n ", "\n\n ", "\n\n ", "\n\n }\n "])), outputs.length ? 'Output, EventEmitter, \n' : '', ((_g = options === null || options === void 0 ? void 0 : options.experimental) === null || _g === void 0 ? void 0 : _g.inject) ? 'Inject, forwardRef,' : '', domRefs.size ? ', ViewChild, ElementRef' : '', props.size ? ', Input' : '', options.standalone ? "import { CommonModule } from '@angular/common';" : '', json.types ? json.types.join('\n') : '', (0, render_imports_1.renderPreComponent)({
298
+ var str = (0, dedent_1.default)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n import { ", " ", " Component ", "", " } from '@angular/core';\n ", "\n\n ", "\n ", "\n ", "\n\n @Component({\n ", "\n selector: '", "',\n template: `\n ", "\n `,\n ", "\n })\n export default class ", " {\n ", "\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n ", "\n\n ", "\n\n ", "\n\n }\n "], ["\n import { ", " ", " Component ", "", " } from '@angular/core';\n ", "\n\n ", "\n ", "\n ", "\n\n @Component({\n ", "\n selector: '", "',\n template: \\`\n ", "\n \\`,\n ", "\n })\n export default class ", " {\n ", "\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n ", "\n\n ", "\n\n ", "\n\n }\n "])), outputs.length ? 'Output, EventEmitter, \n' : '', ((_g = options === null || options === void 0 ? void 0 : options.experimental) === null || _g === void 0 ? void 0 : _g.inject) ? 'Inject, forwardRef,' : '', domRefs.size ? ', ViewChild, ElementRef' : '', props.size ? ', Input' : '', options.standalone ? "import { CommonModule } from '@angular/common';" : '', json.types ? json.types.join('\n') : '', !json.defaultProps ? '' : "const defaultProps = ".concat(json5_1.default.stringify(json.defaultProps), "\n"), (0, render_imports_1.renderPreComponent)({
296
299
  component: json,
297
300
  target: 'angular',
298
301
  excludeMitosisComponents: !options.standalone,
@@ -305,7 +308,11 @@ var componentToAngular = function (options) {
305
308
  .filter(function (item) { return !(0, slots_1.isSlotProperty)(item) && item !== 'children'; })
306
309
  .map(function (item) {
307
310
  var propType = propsTypeRef ? "".concat(propsTypeRef, "[\"").concat(item, "\"]") : 'any';
308
- return "@Input() ".concat(item, ": ").concat(propType);
311
+ var propDeclaration = "@Input() ".concat(item, ": ").concat(propType);
312
+ if (json.defaultProps && json.defaultProps.hasOwnProperty(item)) {
313
+ propDeclaration += " = defaultProps[\"".concat(item, "\"]");
314
+ }
315
+ return propDeclaration;
309
316
  })
310
317
  .join('\n'), outputs.join('\n'), Array.from(domRefs)
311
318
  .map(function (refName) { return "@ViewChild('".concat(refName, "') ").concat(refName, ": ElementRef"); })
@@ -1,19 +1,12 @@
1
1
  import { MitosisNode } from '../types/mitosis-node';
2
- import { BuilderElement } from '@builder.io/sdk';
3
- import { TranspilerArgs } from '../types/transpiler';
4
- export interface ToBuilderOptions {
2
+ import { BuilderContent, BuilderElement } from '@builder.io/sdk';
3
+ import { BaseTranspilerOptions, TranspilerArgs } from '../types/transpiler';
4
+ export interface ToBuilderOptions extends BaseTranspilerOptions {
5
5
  includeIds?: boolean;
6
6
  }
7
7
  declare type InternalOptions = {
8
8
  skipMapper?: boolean;
9
9
  };
10
10
  export declare const blockToBuilder: (json: MitosisNode, options?: ToBuilderOptions, _internalOptions?: InternalOptions) => BuilderElement;
11
- export declare const componentToBuilder: (options?: ToBuilderOptions) => ({ component }: TranspilerArgs) => {
12
- data: {
13
- httpRequests: import("../types/json")._JSON;
14
- jsCode: string;
15
- tsCode: string;
16
- blocks: BuilderElement[];
17
- };
18
- };
11
+ export declare const componentToBuilder: (options?: ToBuilderOptions) => ({ component }: TranspilerArgs) => BuilderContent;
19
12
  export {};
@@ -81,15 +81,16 @@ var componentMappers = __assign(__assign({}, (!builder_1.symbolBlocksAsChildren
81
81
  block.component.options.columns = columns;
82
82
  block.children = [];
83
83
  return block;
84
- }, For: function (node, options) {
84
+ }, For: function (_node, options) {
85
85
  var _a;
86
+ var node = _node;
86
87
  return el({
87
88
  component: {
88
89
  name: 'Core:Fragment',
89
90
  },
90
91
  repeat: {
91
92
  collection: (_a = node.bindings.each) === null || _a === void 0 ? void 0 : _a.code,
92
- itemName: node.properties._forName,
93
+ itemName: node.scope.forName,
93
94
  },
94
95
  children: node.children
95
96
  .filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
@@ -2,6 +2,9 @@ import { MitosisContext } from '../../types/mitosis-context';
2
2
  import { BaseTranspilerOptions } from '../../types/transpiler';
3
3
  interface ContextToSvelteOptions extends Pick<BaseTranspilerOptions, 'prettier'> {
4
4
  }
5
+ /**
6
+ * TO-DO: support types
7
+ */
5
8
  export declare const contextToSvelte: (options?: ContextToSvelteOptions) => ({ context }: {
6
9
  context: MitosisContext;
7
10
  }) => string;
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.contextToSvelte = void 0;
4
4
  var standalone_1 = require("prettier/standalone");
5
5
  var get_state_object_string_1 = require("../../helpers/get-state-object-string");
6
+ /**
7
+ * TO-DO: support types
8
+ */
6
9
  var contextToSvelte = function (options) {
7
10
  if (options === void 0) { options = {}; }
8
11
  return function (_a) {
@@ -0,0 +1,2 @@
1
+ import { Plugin } from '../../modules/plugins';
2
+ export declare const FUNCTION_HACK_PLUGIN: Plugin;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FUNCTION_HACK_PLUGIN = void 0;
4
+ var FUNCTION_HACK_PLUGIN = function () { return ({
5
+ json: {
6
+ pre: function (json) {
7
+ var _a, _b;
8
+ for (var key in json.state) {
9
+ var value = (_a = json.state[key]) === null || _a === void 0 ? void 0 : _a.code;
10
+ var type = (_b = json.state[key]) === null || _b === void 0 ? void 0 : _b.type;
11
+ if (typeof value === 'string' && type === 'method') {
12
+ var newValue = "function ".concat(value);
13
+ json.state[key] = {
14
+ code: newValue,
15
+ type: 'method',
16
+ };
17
+ }
18
+ else if (typeof value === 'string' && type === 'function') {
19
+ json.state[key] = {
20
+ code: value,
21
+ type: 'method',
22
+ };
23
+ }
24
+ }
25
+ },
26
+ },
27
+ }); };
28
+ exports.FUNCTION_HACK_PLUGIN = FUNCTION_HACK_PLUGIN;
@@ -1,7 +1,7 @@
1
- import { BaseTranspilerOptions, Transpiler } from '../types/transpiler';
1
+ import { BaseTranspilerOptions, TranspilerGenerator } from '../types/transpiler';
2
2
  export interface ToHtmlOptions extends BaseTranspilerOptions {
3
3
  format?: 'class' | 'script';
4
4
  prefix?: string;
5
5
  }
6
- export declare const componentToHtml: (options?: ToHtmlOptions) => Transpiler;
7
- export declare const componentToCustomElement: (options?: ToHtmlOptions) => Transpiler;
6
+ export declare const componentToHtml: TranspilerGenerator<ToHtmlOptions>;
7
+ export declare const componentToCustomElement: TranspilerGenerator<ToHtmlOptions>;
@@ -47,12 +47,14 @@ var get_props_1 = require("../helpers/get-props");
47
47
  var get_props_ref_1 = require("../helpers/get-props-ref");
48
48
  var get_prop_functions_1 = require("../helpers/get-prop-functions");
49
49
  var jsx_1 = require("../parsers/jsx");
50
+ var mitosis_node_1 = require("../types/mitosis-node");
50
51
  var strip_state_and_props_refs_1 = require("../helpers/strip-state-and-props-refs");
51
52
  var plugins_1 = require("../modules/plugins");
52
53
  var is_children_1 = __importDefault(require("../helpers/is-children"));
53
54
  var strip_meta_properties_1 = require("../helpers/strip-meta-properties");
54
55
  var remove_surrounding_block_1 = require("../helpers/remove-surrounding-block");
55
56
  var render_imports_1 = require("../helpers/render-imports");
57
+ var for_1 = require("../helpers/nodes/for");
56
58
  var isAttribute = function (key) {
57
59
  return /-/.test(key);
58
60
  };
@@ -189,7 +191,7 @@ var addOnChangeJs = function (id, options, code) {
189
191
  };
190
192
  // TODO: spread support
191
193
  var blockToHtml = function (json, options, blockOptions) {
192
- var _a, _b, _c, _d, _e, _f, _g;
194
+ var _a, _b, _c, _d, _e, _f;
193
195
  if (blockOptions === void 0) { blockOptions = {}; }
194
196
  var ComponentName = blockOptions.ComponentName;
195
197
  var scopeVars = (blockOptions === null || blockOptions === void 0 ? void 0 : blockOptions.scopeVars) || [];
@@ -221,14 +223,14 @@ var blockToHtml = function (json, options, blockOptions) {
221
223
  return "<template data-el=\"".concat(elId, "\"><!-- ").concat((_b = json.bindings._text) === null || _b === void 0 ? void 0 : _b.code, " --></template>");
222
224
  }
223
225
  var str = '';
224
- if (json.name === 'For') {
225
- var forArguments = ((_c = json === null || json === void 0 ? void 0 : json.scope) === null || _c === void 0 ? void 0 : _c.For) || [];
226
+ if ((0, mitosis_node_1.checkIsForNode)(json)) {
227
+ var forArguments = (0, for_1.getForArguments)(json);
226
228
  var localScopeVars_1 = __spreadArray(__spreadArray([], scopeVars, true), forArguments, true);
227
229
  var argsStr = forArguments.map(function (arg) { return "\"".concat(arg, "\""); }).join(',');
228
230
  addOnChangeJs(elId, options,
229
231
  // TODO: be smarter about rendering, deleting old items and adding new ones by
230
232
  // querying dom potentially
231
- "\n let array = ".concat((_d = json.bindings.each) === null || _d === void 0 ? void 0 : _d.code, ";\n ").concat(options.format === 'class' ? 'this.' : '', "renderLoop(el, array, ").concat(argsStr, ");\n "));
233
+ "\n let array = ".concat((_c = json.bindings.each) === null || _c === void 0 ? void 0 : _c.code, ";\n ").concat(options.format === 'class' ? 'this.' : '', "renderLoop(el, array, ").concat(argsStr, ");\n "));
232
234
  // TODO: decide on how to handle this...
233
235
  str += "\n <template data-el=\"".concat(elId, "\">");
234
236
  if (json.children) {
@@ -241,7 +243,7 @@ var blockToHtml = function (json, options, blockOptions) {
241
243
  str += '</template>';
242
244
  }
243
245
  else if (json.name === 'Show') {
244
- var whenCondition = ((_e = json.bindings.when) === null || _e === void 0 ? void 0 : _e.code).replace(/;$/, '');
246
+ var whenCondition = ((_d = json.bindings.when) === null || _d === void 0 ? void 0 : _d.code).replace(/;$/, '');
245
247
  addOnChangeJs(elId, options, "\n ".concat(addScopeVars(scopeVars, whenCondition, function (scopeVar) {
246
248
  return "const ".concat(scopeVar, " = ").concat(options.format === 'class' ? 'this.' : '', "getScope(el, \"").concat(scopeVar, "\");");
247
249
  }), "\n const whenCondition = ").concat(whenCondition, ";\n if (whenCondition) {\n ").concat(options.format === 'class' ? 'this.' : '', "showContent(el)\n }\n "));
@@ -281,8 +283,8 @@ var blockToHtml = function (json, options, blockOptions) {
281
283
  if (key === '_spread' || key === 'css') {
282
284
  continue;
283
285
  }
284
- var value = (_f = json.bindings[key]) === null || _f === void 0 ? void 0 : _f.code;
285
- var cusArg = ((_g = json.bindings[key]) === null || _g === void 0 ? void 0 : _g.arguments) || ['event'];
286
+ var value = (_e = json.bindings[key]) === null || _e === void 0 ? void 0 : _e.code;
287
+ var cusArg = ((_f = json.bindings[key]) === null || _f === void 0 ? void 0 : _f.arguments) || ['event'];
286
288
  // TODO: proper babel transform to replace. Util for this
287
289
  var useValue = value;
288
290
  if (key.startsWith('on')) {
@@ -1,4 +1,4 @@
1
- import { BaseTranspilerOptions, Transpiler } from '../types/transpiler';
1
+ import { BaseTranspilerOptions, TranspilerGenerator } from '../types/transpiler';
2
2
  export interface ToLiquidOptions extends BaseTranspilerOptions {
3
3
  reactive?: boolean;
4
4
  }
@@ -8,4 +8,4 @@ export interface ToLiquidOptions extends BaseTranspilerOptions {
8
8
  * Shopify will reject our PUT to update the template
9
9
  */
10
10
  export declare const isValidLiquidBinding: (str?: string) => boolean;
11
- export declare const componentToLiquid: (options?: ToLiquidOptions) => Transpiler;
11
+ export declare const componentToLiquid: TranspilerGenerator<ToLiquidOptions>;
@@ -6,6 +6,7 @@ var collect_css_1 = require("../helpers/styles/collect-css");
6
6
  var fast_clone_1 = require("../helpers/fast-clone");
7
7
  var strip_state_and_props_refs_1 = require("../helpers/strip-state-and-props-refs");
8
8
  var jsx_1 = require("../parsers/jsx");
9
+ var mitosis_node_1 = require("../types/mitosis-node");
9
10
  var plugins_1 = require("../modules/plugins");
10
11
  var strip_meta_properties_1 = require("../helpers/strip-meta-properties");
11
12
  var get_state_object_string_1 = require("../helpers/get-state-object-string");
@@ -49,12 +50,11 @@ var blockToLiquid = function (json, options) {
49
50
  return "{{".concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(json.bindings._text.code), "}}");
50
51
  }
51
52
  var str = '';
52
- if (json.name === 'For') {
53
- if (!((0, exports.isValidLiquidBinding)((_b = json.bindings.each) === null || _b === void 0 ? void 0 : _b.code) &&
54
- (0, exports.isValidLiquidBinding)(json.properties._forName))) {
53
+ if ((0, mitosis_node_1.checkIsForNode)(json)) {
54
+ if (!((0, exports.isValidLiquidBinding)((_b = json.bindings.each) === null || _b === void 0 ? void 0 : _b.code) && (0, exports.isValidLiquidBinding)(json.scope.forName))) {
55
55
  return str;
56
56
  }
57
- str += "{% for ".concat(json.properties._forName, " in ").concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_c = json.bindings.each) === null || _c === void 0 ? void 0 : _c.code), " %}");
57
+ str += "{% for ".concat(json.scope.forName, " in ").concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_c = json.bindings.each) === null || _c === void 0 ? void 0 : _c.code), " %}");
58
58
  if (json.children) {
59
59
  str += json.children.map(function (item) { return blockToLiquid(item, options); }).join('\n');
60
60
  }
@@ -1,5 +1,5 @@
1
- import { BaseTranspilerOptions, Transpiler } from '../../types/transpiler';
1
+ import { BaseTranspilerOptions, TranspilerGenerator } from '../../types/transpiler';
2
2
  export interface ToLitOptions extends BaseTranspilerOptions {
3
3
  useShadowDom?: boolean;
4
4
  }
5
- export declare const componentToLit: (options?: ToLitOptions) => Transpiler;
5
+ export declare const componentToLit: TranspilerGenerator<ToLitOptions>;
@@ -13,6 +13,7 @@ var standalone_1 = require("prettier/standalone");
13
13
  var get_state_object_string_1 = require("../../helpers/get-state-object-string");
14
14
  var render_imports_1 = require("../../helpers/render-imports");
15
15
  var jsx_1 = require("../../parsers/jsx");
16
+ var mitosis_node_1 = require("../../types/mitosis-node");
16
17
  var plugins_1 = require("../../modules/plugins");
17
18
  var fast_clone_1 = require("../../helpers/fast-clone");
18
19
  var strip_meta_properties_1 = require("../../helpers/strip-meta-properties");
@@ -48,8 +49,8 @@ var blockToLit = function (json, options) {
48
49
  if ((_a = json.bindings._text) === null || _a === void 0 ? void 0 : _a.code) {
49
50
  return "${".concat(processBinding((_b = json.bindings) === null || _b === void 0 ? void 0 : _b._text.code), "}");
50
51
  }
51
- if (json.name === 'For') {
52
- return "${".concat(processBinding((_c = json.bindings.each) === null || _c === void 0 ? void 0 : _c.code), "?.map((").concat(json.properties._forName, ", index) => (\n html`").concat(json.children
52
+ if ((0, mitosis_node_1.checkIsForNode)(json)) {
53
+ return "${".concat(processBinding((_c = json.bindings.each) === null || _c === void 0 ? void 0 : _c.code), "?.map((").concat(json.scope.forName, ", index) => (\n html`").concat(json.children
53
54
  .filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
54
55
  .map(function (item) { return blockToLit(item, options); })
55
56
  .join('\n'), "`\n ))}");
@@ -90,9 +91,16 @@ var blockToLit = function (json, options) {
90
91
  str += " ".concat(useKey, "=${").concat(cusArgs.join(','), " => ").concat(processBinding(code), "} ");
91
92
  }
92
93
  else {
93
- // TODO: handle boolean attributes too by matching list of html boolean attributes
94
- // https://lit.dev/docs/templates/expressions/#boolean-attribute-expressions
95
- str += " .".concat(key, "=${").concat(processBinding(code), "} ");
94
+ var value = processBinding(code);
95
+ // If they key includes a '-' it's an attribute, not a property
96
+ if (key.includes('-')) {
97
+ str += " ".concat(key, "=${").concat(value, "} ");
98
+ }
99
+ else {
100
+ // TODO: handle boolean attributes too by matching list of html boolean attributes
101
+ // https://lit.dev/docs/templates/expressions/#boolean-attribute-expressions
102
+ str += " .".concat(key, "=${").concat(value, "} ");
103
+ }
96
104
  }
97
105
  }
98
106
  if (jsx_1.selfClosingTags.has(json.name)) {
@@ -175,7 +183,7 @@ var componentToLit = function (options) {
175
183
  html = html.replace(/\n{3,}/g, '\n\n');
176
184
  }
177
185
  }
178
- var str = (0, dedent_1.default)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", "\n import { LitElement, html, css } from 'lit';\n import { customElement, property, state, query } from 'lit/decorators.js';\n\n ", "\n ", "\n\n @customElement('", "')\n export default class ", " extends LitElement {\n ", "\n\n ", "\n\n ", "\n \n \n ", "\n\n ", "\n ", "\n \n ", "\n ", "\n ", "\n \n render() {\n return html`\n ", "\n }\n ", "\n `\n }\n }\n "], ["\n ", "\n import { LitElement, html, css } from 'lit';\n import { customElement, property, state, query } from 'lit/decorators.js';\n\n ", "\n ", "\n\n @customElement('", "')\n export default class ", " extends LitElement {\n ", "\n\n ", "\n\n ", "\n \n \n ", "\n\n ", "\n ", "\n \n ", "\n ", "\n ", "\n \n render() {\n return html\\`\n ", "\n }\n ", "\n \\`\n }\n }\n "])), (0, render_imports_1.renderPreComponent)({ component: json, target: 'lit' }), json.types ? json.types.join('\n') : '', hasSpread
186
+ var str = (0, dedent_1.default)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", "\n import { LitElement, html, css } from 'lit';\n import { customElement, property, state, query } from 'lit/decorators.js';\n\n ", "\n ", "\n\n @customElement('", "')\n export default class ", " extends LitElement {\n ", "\n\n ", "\n\n ", "\n \n \n ", "\n\n ", "\n ", "\n \n ", "\n ", "\n ", "\n \n render() {\n return html`\n ", "\n ", "\n `\n }\n }\n "], ["\n ", "\n import { LitElement, html, css } from 'lit';\n import { customElement, property, state, query } from 'lit/decorators.js';\n\n ", "\n ", "\n\n @customElement('", "')\n export default class ", " extends LitElement {\n ", "\n\n ", "\n\n ", "\n \n \n ", "\n\n ", "\n ", "\n \n ", "\n ", "\n ", "\n \n render() {\n return html\\`\n ", "\n ", "\n \\`\n }\n }\n "])), (0, render_imports_1.renderPreComponent)({ component: json, target: 'lit' }), json.types ? json.types.join('\n') : '', hasSpread
179
187
  ? "\n const spread = (properties) =>\n directive((part) => {\n for (const property in properties) {\n const value = properties[attr];\n part.element[property] = value;\n }\n });\n "
180
188
  : '', ((_b = json.meta.useMetadata) === null || _b === void 0 ? void 0 : _b.tagName) || getCustomTagName(json.name, options), json.name, options.useShadowDom
181
189
  ? ''
@@ -1,7 +1,7 @@
1
- import { BaseTranspilerOptions, Transpiler } from '../../types/transpiler';
1
+ import { BaseTranspilerOptions, TranspilerGenerator } from '../../types/transpiler';
2
2
  export interface ToMarkoOptions extends BaseTranspilerOptions {
3
3
  }
4
- export declare const componentToMarko: (userOptions?: ToMarkoOptions) => Transpiler;
4
+ export declare const componentToMarko: TranspilerGenerator<ToMarkoOptions>;
5
5
  /**
6
6
  * Convert marko expressions to valid html
7
7
  *
@@ -24,6 +24,7 @@ var standalone_1 = require("prettier/standalone");
24
24
  var get_state_object_string_1 = require("../../helpers/get-state-object-string");
25
25
  var render_imports_1 = require("../../helpers/render-imports");
26
26
  var jsx_1 = require("../../parsers/jsx");
27
+ var mitosis_node_1 = require("../../types/mitosis-node");
27
28
  var plugins_1 = require("../../modules/plugins");
28
29
  var fast_clone_1 = require("../../helpers/fast-clone");
29
30
  var strip_meta_properties_1 = require("../../helpers/strip-meta-properties");
@@ -37,6 +38,7 @@ var has_props_1 = require("../../helpers/has-props");
37
38
  var get_refs_1 = require("../../helpers/get-refs");
38
39
  var lodash_1 = require("lodash");
39
40
  var hash_sum_1 = __importDefault(require("hash-sum"));
41
+ var for_1 = require("../../helpers/nodes/for");
40
42
  // Having issues with this, so off for now
41
43
  var USE_MARKO_PRETTIER = false;
42
44
  /**
@@ -46,7 +48,7 @@ function getStatePropertyNames(json) {
46
48
  return Object.keys(json.state).filter(function (key) { var _a; return ((_a = json.state[key]) === null || _a === void 0 ? void 0 : _a.type) === 'property'; });
47
49
  }
48
50
  var blockToMarko = function (json, options) {
49
- var _a, _b, _c, _d, _e, _f, _g;
51
+ var _a, _b, _c, _d, _e, _f;
50
52
  if (json.properties._text) {
51
53
  return json.properties._text;
52
54
  }
@@ -56,22 +58,22 @@ var blockToMarko = function (json, options) {
56
58
  if (json.name === 'Fragment') {
57
59
  return json.children.map(function (child) { return blockToMarko(child, options); }).join('\n');
58
60
  }
59
- if (json.name === 'For') {
60
- var forArguments = (((_c = json === null || json === void 0 ? void 0 : json.scope) === null || _c === void 0 ? void 0 : _c.For) || []).join(',');
61
- return "<for|".concat(forArguments, "| of=(").concat(processBinding(options.component, (_d = json.bindings.each) === null || _d === void 0 ? void 0 : _d.code), ")>\n ").concat(json.children
61
+ if ((0, mitosis_node_1.checkIsForNode)(json)) {
62
+ var forArguments = (0, for_1.getForArguments)(json).join(',');
63
+ return "<for|".concat(forArguments, "| of=(").concat(processBinding(options.component, (_c = json.bindings.each) === null || _c === void 0 ? void 0 : _c.code), ")>\n ").concat(json.children
62
64
  .filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
63
65
  .map(function (item) { return blockToMarko(item, options); })
64
66
  .join('\n'), "\n </for>");
65
67
  }
66
68
  else if (json.name === 'Show') {
67
- return "<if(".concat(processBinding(options.component, (_e = json.bindings.when) === null || _e === void 0 ? void 0 : _e.code), ")>\n ").concat(json.children
69
+ return "<if(".concat(processBinding(options.component, (_d = json.bindings.when) === null || _d === void 0 ? void 0 : _d.code), ")>\n ").concat(json.children
68
70
  .filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
69
71
  .map(function (item) { return blockToMarko(item, options); })
70
72
  .join('\n'), "</if>\n ").concat(!json.meta.else ? '' : "<else>".concat(blockToMarko(json.meta.else, options), "</else>"));
71
73
  }
72
74
  var str = '';
73
75
  str += "<".concat(json.name, " ");
74
- if ((_f = json.bindings._spread) === null || _f === void 0 ? void 0 : _f.code) {
76
+ if ((_e = json.bindings._spread) === null || _e === void 0 ? void 0 : _e.code) {
75
77
  str += " ...(".concat(json.bindings._spread.code, ") ");
76
78
  }
77
79
  for (var key in json.properties) {
@@ -79,7 +81,7 @@ var blockToMarko = function (json, options) {
79
81
  str += " ".concat(key, "=\"").concat(value, "\" ");
80
82
  }
81
83
  for (var key in json.bindings) {
82
- var _h = json.bindings[key], code = _h.code, _j = _h.arguments, cusArgs = _j === void 0 ? ['event'] : _j;
84
+ var _g = json.bindings[key], code = _g.code, _h = _g.arguments, cusArgs = _h === void 0 ? ['event'] : _h;
83
85
  if (key === '_spread' || key === '_forName') {
84
86
  continue;
85
87
  }
@@ -98,7 +100,7 @@ var blockToMarko = function (json, options) {
98
100
  return str + ' />';
99
101
  }
100
102
  str += '>';
101
- if ((_g = json.bindings.innerHTML) === null || _g === void 0 ? void 0 : _g.code) {
103
+ if ((_f = json.bindings.innerHTML) === null || _f === void 0 ? void 0 : _f.code) {
102
104
  str += "$!{".concat(processBinding(options.component, json.bindings.innerHTML.code), "}");
103
105
  }
104
106
  if (json.children) {