@builder.io/mitosis 0.0.56-99 → 0.0.58

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 (254) 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/jsx-json.spec.d.ts +2 -0
  6. package/dist/src/__tests__/data/jsx-json.spec.js +10226 -0
  7. package/dist/src/__tests__/shared.d.ts +7 -2
  8. package/dist/src/__tests__/shared.js +66 -9
  9. package/dist/src/constants/method-literal-prefix.d.ts +0 -1
  10. package/dist/src/constants/method-literal-prefix.js +0 -3
  11. package/dist/src/generators/angular.d.ts +2 -2
  12. package/dist/src/generators/angular.js +14 -6
  13. package/dist/src/generators/builder.d.ts +4 -11
  14. package/dist/src/generators/builder.js +3 -2
  15. package/dist/src/generators/context/qwik.js +1 -1
  16. package/dist/src/generators/context/svelte.d.ts +3 -0
  17. package/dist/src/generators/context/svelte.js +3 -0
  18. package/dist/src/generators/helpers/functions.d.ts +2 -0
  19. package/dist/src/generators/helpers/functions.js +28 -0
  20. package/dist/src/generators/html.d.ts +3 -3
  21. package/dist/src/generators/html.js +9 -7
  22. package/dist/src/generators/liquid.d.ts +2 -2
  23. package/dist/src/generators/liquid.js +4 -4
  24. package/dist/src/generators/lit/generate.d.ts +2 -2
  25. package/dist/src/generators/lit/generate.js +3 -2
  26. package/dist/src/generators/marko/generate.d.ts +2 -2
  27. package/dist/src/generators/marko/generate.js +10 -8
  28. package/dist/src/generators/mitosis.d.ts +3 -4
  29. package/dist/src/generators/mitosis.js +3 -2
  30. package/dist/src/generators/qwik/component-generator.d.ts +2 -2
  31. package/dist/src/generators/qwik/component-generator.js +68 -64
  32. package/dist/src/generators/qwik/component.d.ts +0 -1
  33. package/dist/src/generators/qwik/component.js +22 -19
  34. package/dist/src/generators/qwik/directives.d.ts +1 -0
  35. package/dist/src/generators/qwik/directives.js +11 -14
  36. package/dist/src/generators/qwik/jsx.d.ts +1 -1
  37. package/dist/src/generators/qwik/jsx.js +9 -5
  38. package/dist/src/generators/qwik/src-generator.js +11 -3
  39. package/dist/src/generators/qwik/stable-serialize.d.ts +6 -0
  40. package/dist/src/generators/qwik/stable-serialize.js +51 -0
  41. package/dist/src/generators/react/generator.d.ts +6 -0
  42. package/dist/src/generators/{react.js → react/generator.js} +58 -150
  43. package/dist/src/generators/react/helpers.d.ts +2 -0
  44. package/dist/src/generators/react/helpers.js +14 -0
  45. package/dist/src/generators/react/index.d.ts +2 -0
  46. package/dist/src/generators/react/index.js +18 -0
  47. package/dist/src/generators/react/state.d.ts +9 -0
  48. package/dist/src/generators/react/state.js +107 -0
  49. package/dist/src/generators/react/types.d.ts +10 -0
  50. package/dist/src/{types/string-map.js → generators/react/types.js} +0 -0
  51. package/dist/src/generators/react-native.d.ts +2 -2
  52. package/dist/src/generators/solid/index.d.ts +3 -0
  53. package/dist/src/generators/{solid.js → solid/index.js} +80 -40
  54. package/dist/src/generators/solid/state.d.ts +19 -0
  55. package/dist/src/generators/solid/state.js +144 -0
  56. package/dist/src/generators/solid/types.d.ts +6 -0
  57. package/dist/src/generators/solid/types.js +2 -0
  58. package/dist/src/generators/stencil/generate.d.ts +2 -2
  59. package/dist/src/generators/stencil/generate.js +5 -2
  60. package/dist/src/generators/svelte.d.ts +6 -7
  61. package/dist/src/generators/svelte.js +43 -40
  62. package/dist/src/generators/swift-ui.d.ts +3 -5
  63. package/dist/src/generators/swift-ui.js +3 -2
  64. package/dist/src/generators/template.d.ts +2 -2
  65. package/dist/src/generators/template.js +3 -2
  66. package/dist/src/generators/vue.d.ts +5 -3
  67. package/dist/src/generators/vue.js +256 -113
  68. package/dist/src/helpers/babel-transform.d.ts +3 -1
  69. package/dist/src/helpers/babel-transform.js +52 -56
  70. package/dist/src/helpers/get-bindings.js +3 -5
  71. package/dist/src/helpers/get-props.js +14 -1
  72. package/dist/src/helpers/get-state-object-string.js +24 -21
  73. package/dist/src/helpers/getters-to-functions.js +1 -11
  74. package/dist/src/helpers/map-refs.js +25 -25
  75. package/dist/src/helpers/nodes/for.d.ts +4 -0
  76. package/dist/src/helpers/nodes/for.js +13 -0
  77. package/dist/src/helpers/nullable.d.ts +2 -0
  78. package/dist/src/helpers/nullable.js +7 -0
  79. package/dist/src/helpers/patterns.d.ts +2 -0
  80. package/dist/src/helpers/patterns.js +5 -1
  81. package/dist/src/helpers/render-imports.js +3 -3
  82. package/dist/src/helpers/replace-identifiers.d.ts +5 -0
  83. package/dist/src/helpers/{replace-idenifiers.js → replace-identifiers.js} +2 -1
  84. package/dist/src/helpers/slots.d.ts +2 -0
  85. package/dist/src/helpers/slots.js +15 -1
  86. package/dist/src/helpers/state.d.ts +0 -2
  87. package/dist/src/helpers/state.js +1 -10
  88. package/dist/src/helpers/strip-state-and-props-refs.d.ts +1 -1
  89. package/dist/src/helpers/strip-state-and-props-refs.js +43 -31
  90. package/dist/src/helpers/styles/helpers.d.ts +3 -2
  91. package/dist/src/index.d.ts +0 -2
  92. package/dist/src/index.js +0 -2
  93. package/dist/src/parsers/angular.js +2 -2
  94. package/dist/src/parsers/builder.d.ts +2 -2
  95. package/dist/src/parsers/builder.js +61 -43
  96. package/dist/src/parsers/constants/outdated-prefixes.d.ts +10 -0
  97. package/dist/src/parsers/constants/outdated-prefixes.js +13 -0
  98. package/dist/src/parsers/context.js +2 -2
  99. package/dist/src/parsers/helpers/state.d.ts +3 -0
  100. package/dist/src/parsers/helpers/state.js +30 -0
  101. package/dist/src/parsers/jsx/component-types.d.ts +1 -1
  102. package/dist/src/parsers/jsx/component-types.js +15 -2
  103. package/dist/src/parsers/jsx/context.js +1 -1
  104. package/dist/src/parsers/jsx/element-parser.d.ts +6 -0
  105. package/dist/src/parsers/jsx/element-parser.js +243 -0
  106. package/dist/src/parsers/jsx/exports.d.ts +3 -0
  107. package/dist/src/parsers/jsx/exports.js +78 -0
  108. package/dist/src/parsers/jsx/function-parser.d.ts +7 -0
  109. package/dist/src/parsers/jsx/function-parser.js +291 -0
  110. package/dist/src/parsers/jsx/helpers.d.ts +2 -0
  111. package/dist/src/parsers/jsx/helpers.js +30 -1
  112. package/dist/src/parsers/jsx/imports.d.ts +7 -0
  113. package/dist/src/parsers/jsx/imports.js +65 -0
  114. package/dist/src/parsers/jsx/index.d.ts +1 -1
  115. package/dist/src/parsers/jsx/index.js +1 -2
  116. package/dist/src/parsers/jsx/jsx.js +29 -516
  117. package/dist/src/parsers/jsx/state.d.ts +2 -3
  118. package/dist/src/parsers/jsx/state.js +15 -22
  119. package/dist/src/plugins/compile-away-builder-components.js +6 -0
  120. package/dist/src/symbols/symbol-processor.js +3 -0
  121. package/dist/src/targets.d.ts +21 -28
  122. package/dist/src/targets.js +2 -2
  123. package/dist/src/types/config.d.ts +11 -1
  124. package/dist/src/types/mitosis-component.d.ts +12 -6
  125. package/dist/src/types/mitosis-component.js +11 -0
  126. package/dist/src/types/mitosis-context.d.ts +2 -2
  127. package/dist/src/types/mitosis-node.d.ts +14 -5
  128. package/dist/src/types/mitosis-node.js +3 -0
  129. package/dist/src/types/transpiler.d.ts +6 -1
  130. package/dist/tsconfig.build.tsbuildinfo +1 -1
  131. package/package.json +9 -9
  132. package/dist/src/__tests__/angular.test.d.ts +0 -1
  133. package/dist/src/__tests__/angular.test.js +0 -10
  134. package/dist/src/__tests__/builder.test.d.ts +0 -1
  135. package/dist/src/__tests__/builder.test.js +0 -235
  136. package/dist/src/__tests__/context.test.d.ts +0 -1
  137. package/dist/src/__tests__/context.test.js +0 -35
  138. package/dist/src/__tests__/hash-code.test.d.ts +0 -1
  139. package/dist/src/__tests__/hash-code.test.js +0 -11
  140. package/dist/src/__tests__/html.test.d.ts +0 -1
  141. package/dist/src/__tests__/html.test.js +0 -7
  142. package/dist/src/__tests__/liquid.test.d.ts +0 -1
  143. package/dist/src/__tests__/liquid.test.js +0 -7
  144. package/dist/src/__tests__/lit.test.d.ts +0 -1
  145. package/dist/src/__tests__/lit.test.js +0 -7
  146. package/dist/src/__tests__/marko.test.d.ts +0 -1
  147. package/dist/src/__tests__/marko.test.js +0 -14
  148. package/dist/src/__tests__/parse-jsx.test.d.ts +0 -1
  149. package/dist/src/__tests__/parse-jsx.test.js +0 -37
  150. package/dist/src/__tests__/qwik/convert-method-to-function.test.d.ts +0 -1
  151. package/dist/src/__tests__/qwik/convert-method-to-function.test.js +0 -37
  152. package/dist/src/__tests__/qwik/src-generator.test.d.ts +0 -1
  153. package/dist/src/__tests__/qwik/src-generator.test.js +0 -65
  154. package/dist/src/__tests__/qwik.directive.test.d.ts +0 -1
  155. package/dist/src/__tests__/qwik.directive.test.js +0 -108
  156. package/dist/src/__tests__/qwik.test.d.ts +0 -1
  157. package/dist/src/__tests__/qwik.test.js +0 -465
  158. package/dist/src/__tests__/react-native.test.d.ts +0 -1
  159. package/dist/src/__tests__/react-native.test.js +0 -7
  160. package/dist/src/__tests__/react.test.d.ts +0 -1
  161. package/dist/src/__tests__/react.test.js +0 -20
  162. package/dist/src/__tests__/solid.test.d.ts +0 -1
  163. package/dist/src/__tests__/solid.test.js +0 -10
  164. package/dist/src/__tests__/stencil.test.d.ts +0 -1
  165. package/dist/src/__tests__/stencil.test.js +0 -7
  166. package/dist/src/__tests__/styles.test.d.ts +0 -1
  167. package/dist/src/__tests__/styles.test.js +0 -23
  168. package/dist/src/__tests__/svelte.test.d.ts +0 -1
  169. package/dist/src/__tests__/svelte.test.js +0 -7
  170. package/dist/src/__tests__/vue.test.d.ts +0 -1
  171. package/dist/src/__tests__/vue.test.js +0 -7
  172. package/dist/src/__tests__/webcomponent.test.d.ts +0 -1
  173. package/dist/src/__tests__/webcomponent.test.js +0 -15
  174. package/dist/src/constants/function-literal-prefix.d.ts +0 -1
  175. package/dist/src/constants/function-literal-prefix.js +0 -4
  176. package/dist/src/generators/react.d.ts +0 -14
  177. package/dist/src/generators/solid.d.ts +0 -5
  178. package/dist/src/helpers/babel-transform.test.d.ts +0 -1
  179. package/dist/src/helpers/babel-transform.test.js +0 -7
  180. package/dist/src/helpers/generic-format.test.d.ts +0 -1
  181. package/dist/src/helpers/generic-format.test.js +0 -8
  182. package/dist/src/helpers/map-to-attributes.d.ts +0 -2
  183. package/dist/src/helpers/map-to-attributes.js +0 -19
  184. package/dist/src/helpers/map-to-css.d.ts +0 -2
  185. package/dist/src/helpers/map-to-css.js +0 -16
  186. package/dist/src/helpers/parse-reactive-script.d.ts +0 -7
  187. package/dist/src/helpers/parse-reactive-script.js +0 -87
  188. package/dist/src/helpers/remove-surrounding-block.test.d.ts +0 -1
  189. package/dist/src/helpers/remove-surrounding-block.test.js +0 -9
  190. package/dist/src/helpers/render-imports.test.d.ts +0 -1
  191. package/dist/src/helpers/render-imports.test.js +0 -33
  192. package/dist/src/helpers/replace-idenifiers.d.ts +0 -1
  193. package/dist/src/helpers/styles/collect-css.test.d.ts +0 -1
  194. package/dist/src/helpers/styles/collect-css.test.js +0 -18
  195. package/dist/src/parsers/html.d.ts +0 -0
  196. package/dist/src/parsers/html.js +0 -2
  197. package/dist/src/parsers/liquid.d.ts +0 -70
  198. package/dist/src/parsers/liquid.js +0 -2538
  199. package/dist/src/types/string-map.d.ts +0 -3
  200. package/dist/test/qwik/Accordion/high.jsx +0 -0
  201. package/dist/test/qwik/Accordion/low.jsx +0 -240
  202. package/dist/test/qwik/Accordion/med.jsx +0 -4
  203. package/dist/test/qwik/For/high.jsx +0 -0
  204. package/dist/test/qwik/For/low.jsx +0 -52
  205. package/dist/test/qwik/For/med.jsx +0 -4
  206. package/dist/test/qwik/Image/high.js +0 -9
  207. package/dist/test/qwik/Image/low.js +0 -0
  208. package/dist/test/qwik/Image/med.js +0 -155
  209. package/dist/test/qwik/Image.slow/high.js +0 -9
  210. package/dist/test/qwik/Image.slow/low.js +0 -0
  211. package/dist/test/qwik/Image.slow/med.js +0 -155
  212. package/dist/test/qwik/bindings/high.cjs +0 -0
  213. package/dist/test/qwik/bindings/low.cjs +0 -45
  214. package/dist/test/qwik/bindings/med.cjs +0 -3
  215. package/dist/test/qwik/button/high.js +0 -3
  216. package/dist/test/qwik/button/low.js +0 -25
  217. package/dist/test/qwik/button/med.js +0 -31
  218. package/dist/test/qwik/component/bindings/high.jsx +0 -0
  219. package/dist/test/qwik/component/bindings/low.jsx +0 -104
  220. package/dist/test/qwik/component/bindings/med.jsx +0 -7
  221. package/dist/test/qwik/component/component/inputs/high.cjsx +0 -9
  222. package/dist/test/qwik/component/component/inputs/low.cjsx +0 -0
  223. package/dist/test/qwik/component/component/inputs/med.cjsx +0 -68
  224. package/dist/test/qwik/for-loop.bindings/high.cjs +0 -0
  225. package/dist/test/qwik/for-loop.bindings/low.cjs +0 -56
  226. package/dist/test/qwik/for-loop.bindings/med.cjs +0 -5
  227. package/dist/test/qwik/hello_world/stylesheet/high.jsx +0 -0
  228. package/dist/test/qwik/hello_world/stylesheet/low.jsx +0 -26
  229. package/dist/test/qwik/hello_world/stylesheet/med.jsx +0 -4
  230. package/dist/test/qwik/mount/high.cjs +0 -0
  231. package/dist/test/qwik/mount/low.cjs +0 -47
  232. package/dist/test/qwik/mount/med.cjs +0 -3
  233. package/dist/test/qwik/page-with-symbol/high.js +0 -0
  234. package/dist/test/qwik/page-with-symbol/low.js +0 -33
  235. package/dist/test/qwik/page-with-symbol/med.js +0 -4
  236. package/dist/test/qwik/show-hide/high.jsx +0 -9
  237. package/dist/test/qwik/show-hide/low.jsx +0 -0
  238. package/dist/test/qwik/show-hide/med.jsx +0 -181
  239. package/dist/test/qwik/svg/high.js +0 -0
  240. package/dist/test/qwik/svg/low.js +0 -30
  241. package/dist/test/qwik/svg/med.js +0 -4
  242. package/dist/test/qwik/todo/Todo.cjs/high.cjs +0 -19
  243. package/dist/test/qwik/todo/Todo.cjs/low.cjs +0 -0
  244. package/dist/test/qwik/todo/Todo.cjs/med.cjs +0 -51
  245. package/dist/test/qwik/todo/Todo.js/high.js +0 -19
  246. package/dist/test/qwik/todo/Todo.js/low.js +0 -0
  247. package/dist/test/qwik/todo/Todo.js/med.js +0 -47
  248. package/dist/test/qwik/todo/Todo.tsx/high.tsx +0 -19
  249. package/dist/test/qwik/todo/Todo.tsx/low.tsx +0 -0
  250. package/dist/test/qwik/todo/Todo.tsx/med.tsx +0 -43
  251. package/dist/test/qwik/todos/Todo.tsx/high.tsx +0 -7
  252. package/dist/test/qwik/todos/Todo.tsx/low.tsx +0 -32
  253. package/dist/test/qwik/todos/Todo.tsx/med.tsx +0 -4
  254. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -19,43 +19,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.componentToReact = exports.componentToPreact = exports.blockToReact = void 0;
22
- var core_1 = require("@babel/core");
23
22
  var dedent_1 = __importDefault(require("dedent"));
24
23
  var json5_1 = __importDefault(require("json5"));
25
24
  var lodash_1 = require("lodash");
26
25
  var standalone_1 = require("prettier/standalone");
27
- var traverse_1 = __importDefault(require("traverse"));
28
- var function_literal_prefix_1 = require("../constants/function-literal-prefix");
29
- var method_literal_prefix_1 = require("../constants/method-literal-prefix");
30
- var babel_transform_1 = require("../helpers/babel-transform");
31
- var capitalize_1 = require("../helpers/capitalize");
32
- var collect_css_1 = require("../helpers/styles/collect-css");
33
- var create_mitosis_node_1 = require("../helpers/create-mitosis-node");
34
- var fast_clone_1 = require("../helpers/fast-clone");
35
- var filter_empty_text_nodes_1 = require("../helpers/filter-empty-text-nodes");
36
- var get_refs_1 = require("../helpers/get-refs");
37
- var get_props_ref_1 = require("../helpers/get-props-ref");
38
- var get_state_object_string_1 = require("../helpers/get-state-object-string");
39
- var getters_to_functions_1 = require("../helpers/getters-to-functions");
40
- var handle_missing_state_1 = require("../helpers/handle-missing-state");
41
- var is_mitosis_node_1 = require("../helpers/is-mitosis-node");
42
- var is_valid_attribute_name_1 = require("../helpers/is-valid-attribute-name");
43
- var map_refs_1 = require("../helpers/map-refs");
44
- var process_http_requests_1 = require("../helpers/process-http-requests");
45
- var process_tag_references_1 = require("../helpers/process-tag-references");
46
- var render_imports_1 = require("../helpers/render-imports");
47
- var replace_new_lines_in_strings_1 = require("../helpers/replace-new-lines-in-strings");
48
- var strip_meta_properties_1 = require("../helpers/strip-meta-properties");
49
- var strip_state_and_props_refs_1 = require("../helpers/strip-state-and-props-refs");
50
- var plugins_1 = require("../modules/plugins");
51
- var jsx_1 = require("../parsers/jsx");
52
- var context_1 = require("./helpers/context");
53
- var react_native_1 = require("./react-native");
54
- var collect_styled_components_1 = require("../helpers/styles/collect-styled-components");
55
- var helpers_1 = require("../helpers/styles/helpers");
56
- var slots_1 = require("../helpers/slots");
57
- var state_1 = require("../helpers/state");
26
+ var collect_css_1 = require("../../helpers/styles/collect-css");
27
+ var create_mitosis_node_1 = require("../../helpers/create-mitosis-node");
28
+ var fast_clone_1 = require("../../helpers/fast-clone");
29
+ var filter_empty_text_nodes_1 = require("../../helpers/filter-empty-text-nodes");
30
+ var get_refs_1 = require("../../helpers/get-refs");
31
+ var get_props_ref_1 = require("../../helpers/get-props-ref");
32
+ var get_state_object_string_1 = require("../../helpers/get-state-object-string");
33
+ var getters_to_functions_1 = require("../../helpers/getters-to-functions");
34
+ var handle_missing_state_1 = require("../../helpers/handle-missing-state");
35
+ var is_valid_attribute_name_1 = require("../../helpers/is-valid-attribute-name");
36
+ var map_refs_1 = require("../../helpers/map-refs");
37
+ var process_http_requests_1 = require("../../helpers/process-http-requests");
38
+ var process_tag_references_1 = require("../../helpers/process-tag-references");
39
+ var render_imports_1 = require("../../helpers/render-imports");
40
+ var replace_new_lines_in_strings_1 = require("../../helpers/replace-new-lines-in-strings");
41
+ var strip_meta_properties_1 = require("../../helpers/strip-meta-properties");
42
+ var plugins_1 = require("../../modules/plugins");
43
+ var jsx_1 = require("../../parsers/jsx");
44
+ var context_1 = require("../helpers/context");
45
+ var react_native_1 = require("../react-native");
46
+ var collect_styled_components_1 = require("../../helpers/styles/collect-styled-components");
47
+ var helpers_1 = require("../../helpers/styles/helpers");
48
+ var state_1 = require("../../helpers/state");
49
+ var state_2 = require("./state");
50
+ var helpers_2 = require("./helpers");
58
51
  var hash_sum_1 = __importDefault(require("hash-sum"));
52
+ var for_1 = require("../../helpers/nodes/for");
59
53
  var openFrag = function (options) { return getFragment('open', options); };
60
54
  var closeFrag = function (options) { return getFragment('close', options); };
61
55
  function getFragment(type, options) {
@@ -82,9 +76,9 @@ var NODE_MAPPERS = {
82
76
  parentSlots.push({ key: propKey, value: (_a = json.bindings[key]) === null || _a === void 0 ? void 0 : _a.code });
83
77
  return '';
84
78
  }
85
- return "{".concat(processBinding('props.children', options), "}");
79
+ return "{".concat((0, helpers_2.processBinding)('props.children', options), "}");
86
80
  }
87
- var slotProp = processBinding(json.bindings.name.code, options).replace('name=', '');
81
+ var slotProp = (0, helpers_2.processBinding)(json.bindings.name.code, options).replace('name=', '');
88
82
  return "{".concat(slotProp, "}");
89
83
  },
90
84
  Fragment: function (json, options) {
@@ -94,11 +88,12 @@ var NODE_MAPPERS = {
94
88
  .map(function (item) { return (0, exports.blockToReact)(item, options); })
95
89
  .join('\n')).concat(wrap ? getFragment('close', options) : '');
96
90
  },
97
- For: function (json, options) {
98
- var _a, _b;
91
+ For: function (_json, options) {
92
+ var _a;
93
+ var json = _json;
99
94
  var wrap = wrapInFragment(json);
100
- var forArguments = (((_a = json === null || json === void 0 ? void 0 : json.scope) === null || _a === void 0 ? void 0 : _a.For) || []).join(',');
101
- return "{".concat(processBinding((_b = json.bindings.each) === null || _b === void 0 ? void 0 : _b.code, options), "?.map((").concat(forArguments, ") => (\n ").concat(wrap ? openFrag(options) : '').concat(json.children
95
+ var forArguments = (0, for_1.getForArguments)(json).join(', ');
96
+ return "{".concat((0, helpers_2.processBinding)((_a = json.bindings.each) === null || _a === void 0 ? void 0 : _a.code, options), "?.map((").concat(forArguments, ") => (\n ").concat(wrap ? openFrag(options) : '').concat(json.children
102
97
  .filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
103
98
  .map(function (item) { return (0, exports.blockToReact)(item, options); })
104
99
  .join('\n')).concat(wrap ? closeFrag(options) : '', "\n ))}");
@@ -106,7 +101,7 @@ var NODE_MAPPERS = {
106
101
  Show: function (json, options) {
107
102
  var _a;
108
103
  var wrap = wrapInFragment(json);
109
- return "{".concat(processBinding((_a = json.bindings.when) === null || _a === void 0 ? void 0 : _a.code, options), " ? (\n ").concat(wrap ? openFrag(options) : '').concat(json.children
104
+ return "{".concat((0, helpers_2.processBinding)((_a = json.bindings.when) === null || _a === void 0 ? void 0 : _a.code, options), " ? (\n ").concat(wrap ? openFrag(options) : '').concat(json.children
110
105
  .filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
111
106
  .map(function (item) { return (0, exports.blockToReact)(item, options); })
112
107
  .join('\n')).concat(wrap ? closeFrag(options) : '', "\n ) : ").concat(!json.meta.else ? 'null' : (0, exports.blockToReact)(json.meta.else, options), "}");
@@ -142,7 +137,7 @@ var blockToReact = function (json, options, parentSlots) {
142
137
  return text;
143
138
  }
144
139
  if ((_a = json.bindings._text) === null || _a === void 0 ? void 0 : _a.code) {
145
- var processed = processBinding(json.bindings._text.code, options);
140
+ var processed = (0, helpers_2.processBinding)(json.bindings._text.code, options);
146
141
  if (options.type === 'native') {
147
142
  return "<Text>{".concat(processed, "}</Text>");
148
143
  }
@@ -151,7 +146,7 @@ var blockToReact = function (json, options, parentSlots) {
151
146
  var str = '';
152
147
  str += "<".concat(json.name, " ");
153
148
  if ((_b = json.bindings._spread) === null || _b === void 0 ? void 0 : _b.code) {
154
- str += " {...(".concat(processBinding(json.bindings._spread.code, options), ")} ");
149
+ str += " {...(".concat((0, helpers_2.processBinding)(json.bindings._spread.code, options), ")} ");
155
150
  }
156
151
  for (var key in json.properties) {
157
152
  var value = (json.properties[key] || '').replace(/"/g, '&quot;').replace(/\n/g, '\\n');
@@ -182,10 +177,10 @@ var blockToReact = function (json, options, parentSlots) {
182
177
  if (key === 'css' && value.trim() === '{}') {
183
178
  continue;
184
179
  }
185
- var useBindingValue = processBinding(value, options);
180
+ var useBindingValue = (0, helpers_2.processBinding)(value, options);
186
181
  if (key.startsWith('on')) {
187
182
  var _e = json.bindings[key].arguments, cusArgs = _e === void 0 ? ['event'] : _e;
188
- str += " ".concat(key, "={(").concat(cusArgs.join(','), ") => ").concat(updateStateSettersInCode(useBindingValue, options), " } ");
183
+ str += " ".concat(key, "={(").concat(cusArgs.join(','), ") => ").concat((0, state_2.updateStateSettersInCode)(useBindingValue, options), " } ");
189
184
  }
190
185
  else if (key.startsWith('slot')) {
191
186
  // <Component slotProjected={<AnotherComponent />} />
@@ -250,87 +245,13 @@ var getRefsString = function (json, refs, options) {
250
245
  // domRefs must have null argument
251
246
  var argument = ((_b = json['refs'][ref]) === null || _b === void 0 ? void 0 : _b.argument) || (domRefs.has(ref) ? 'null' : '');
252
247
  hasStateArgument = /state\./.test(argument);
253
- code += "\nconst ".concat(ref, " = useRef").concat(typeParameter ? "<".concat(typeParameter, ">") : '', "(").concat(processBinding(updateStateSettersInCode(argument, options), options), ");");
248
+ code += "\nconst ".concat(ref, " = useRef").concat(typeParameter ? "<".concat(typeParameter, ">") : '', "(").concat((0, state_2.processHookCode)({
249
+ str: argument,
250
+ options: options,
251
+ }), ");");
254
252
  }
255
253
  return [hasStateArgument, code];
256
254
  };
257
- /**
258
- * Removes all `this.` references.
259
- */
260
- var stripThisRefs = function (str, options) {
261
- if (options.stateType !== 'useState') {
262
- return str;
263
- }
264
- return str.replace(/this\.([a-zA-Z_\$0-9]+)/g, '$1');
265
- };
266
- var processBinding = function (str, options) {
267
- if (options.stateType !== 'useState') {
268
- return str;
269
- }
270
- if ((0, slots_1.isSlotProperty)(str)) {
271
- return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(str, {
272
- includeState: true,
273
- includeProps: false,
274
- });
275
- }
276
- return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(str, {
277
- includeState: true,
278
- includeProps: false,
279
- });
280
- };
281
- var getUseStateCode = function (json, options) {
282
- var _a;
283
- var str = '';
284
- var state = json.state;
285
- var valueMapper = function (val) {
286
- var x = processBinding(updateStateSettersInCode(val, options), options);
287
- return stripThisRefs(x, options);
288
- };
289
- var lineItemDelimiter = '\n\n\n';
290
- for (var key in state) {
291
- var value = (_a = state[key]) === null || _a === void 0 ? void 0 : _a.code;
292
- var defaultCase = "const [".concat(key, ", set").concat((0, capitalize_1.capitalize)(key), "] = useState(() => (").concat(valueMapper(json5_1.default.stringify(value)), "))");
293
- if (typeof value === 'string') {
294
- if (value.startsWith(function_literal_prefix_1.functionLiteralPrefix)) {
295
- var useValue = value.replace(function_literal_prefix_1.functionLiteralPrefix, '');
296
- var mappedVal = valueMapper(useValue);
297
- str += mappedVal;
298
- }
299
- else if (value.startsWith(method_literal_prefix_1.methodLiteralPrefix)) {
300
- var methodValue = value.replace(method_literal_prefix_1.methodLiteralPrefix, '');
301
- var useValue = methodValue.replace(/^(get )?/, 'function ');
302
- str += valueMapper(useValue);
303
- }
304
- else {
305
- str += defaultCase;
306
- }
307
- }
308
- else {
309
- str += defaultCase;
310
- }
311
- str += lineItemDelimiter;
312
- }
313
- return str;
314
- };
315
- var updateStateSetters = function (json, options) {
316
- if (options.stateType !== 'useState') {
317
- return;
318
- }
319
- (0, traverse_1.default)(json).forEach(function (item) {
320
- if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
321
- for (var key in item.bindings) {
322
- var values = item.bindings[key];
323
- var newValue = updateStateSettersInCode(values === null || values === void 0 ? void 0 : values.code, options);
324
- if (newValue !== (values === null || values === void 0 ? void 0 : values.code)) {
325
- item.bindings[key] = {
326
- code: newValue,
327
- arguments: values === null || values === void 0 ? void 0 : values.arguments,
328
- };
329
- }
330
- }
331
- }
332
- });
333
- };
334
255
  function addProviderComponents(json, options) {
335
256
  for (var key in json.context.set) {
336
257
  var _a = json.context.set[key], name_1 = _a.name, value = _a.value;
@@ -347,28 +268,6 @@ function addProviderComponents(json, options) {
347
268
  }
348
269
  }
349
270
  }
350
- var updateStateSettersInCode = function (value, options) {
351
- if (options.stateType !== 'useState') {
352
- return value;
353
- }
354
- return (0, babel_transform_1.babelTransformExpression)(value, {
355
- AssignmentExpression: function (path) {
356
- var node = path.node;
357
- if (core_1.types.isMemberExpression(node.left)) {
358
- if (core_1.types.isIdentifier(node.left.object)) {
359
- // TODO: utillity to properly trace this reference to the beginning
360
- if (node.left.object.name === 'state') {
361
- // TODO: ultimately support other property access like strings
362
- var propertyName = node.left.property.name;
363
- path.replaceWith(core_1.types.callExpression(core_1.types.identifier("set".concat((0, capitalize_1.capitalize)(propertyName))), [
364
- node.right,
365
- ]));
366
- }
367
- }
368
- }
369
- },
370
- });
371
- };
372
271
  function getContextString(component, options) {
373
272
  var str = '';
374
273
  for (var key in component.context.get) {
@@ -378,7 +277,7 @@ function getContextString(component, options) {
378
277
  }
379
278
  var getInitCode = function (json, options) {
380
279
  var _a;
381
- return processBinding(((_a = json.hooks.init) === null || _a === void 0 ? void 0 : _a.code) || '', options);
280
+ return (0, helpers_2.processBinding)(((_a = json.hooks.init) === null || _a === void 0 ? void 0 : _a.code) || '', options);
382
281
  };
383
282
  var DEFAULT_OPTIONS = {
384
283
  stateType: 'useState',
@@ -439,7 +338,7 @@ var _componentToReact = function (json, options, isSubComponent) {
439
338
  var componentHasStyles = (0, helpers_1.hasCss)(json);
440
339
  if (options.stateType === 'useState') {
441
340
  (0, getters_to_functions_1.gettersToFunctions)(json);
442
- updateStateSetters(json, options);
341
+ (0, state_2.updateStateSetters)(json, options);
443
342
  }
444
343
  // const domRefs = getRefs(json);
445
344
  var allRefs = Object.keys(json.refs);
@@ -460,7 +359,7 @@ var _componentToReact = function (json, options, isSubComponent) {
460
359
  // Always use state if we are generate Builder react code
461
360
  hasState = true;
462
361
  }
463
- var useStateCode = stateType === 'useState' && getUseStateCode(json, options);
362
+ var useStateCode = stateType === 'useState' && (0, state_2.getUseStateCode)(json, options);
464
363
  if (options.plugins) {
465
364
  json = (0, plugins_1.runPostJsonPlugins)(json, options.plugins);
466
365
  }
@@ -521,11 +420,20 @@ var _componentToReact = function (json, options, isSubComponent) {
521
420
  ? "var state = useBuilderState(".concat((0, get_state_object_string_1.getStateObjectStringFromComponent)(json), ");")
522
421
  : "const state = useLocalProxy(".concat((0, get_state_object_string_1.getStateObjectStringFromComponent)(json), ");")
523
422
  : '', hasStateArgument ? refsString : '', getContextString(json, options), getInitCode(json, options), ((_g = json.hooks.onInit) === null || _g === void 0 ? void 0 : _g.code)
524
- ? "\n useEffect(() => {\n ".concat(processBinding(updateStateSettersInCode(json.hooks.onInit.code, options), options), "\n })\n ")
423
+ ? "\n useEffect(() => {\n ".concat((0, state_2.processHookCode)({
424
+ str: json.hooks.onInit.code,
425
+ options: options,
426
+ }), "\n })\n ")
525
427
  : '', ((_h = json.hooks.onMount) === null || _h === void 0 ? void 0 : _h.code)
526
- ? "useEffect(() => {\n ".concat(processBinding(updateStateSettersInCode(json.hooks.onMount.code, options), options), "\n }, [])")
527
- : '', (_k = (_j = json.hooks.onUpdate) === null || _j === void 0 ? void 0 : _j.map(function (hook) { return "useEffect(() => {\n ".concat(processBinding(updateStateSettersInCode(hook.code, options), options), "\n }, \n ").concat(hook.deps ? processBinding(updateStateSettersInCode(hook.deps, options), options) : '', ")"); }).join(';')) !== null && _k !== void 0 ? _k : '', ((_l = json.hooks.onUnMount) === null || _l === void 0 ? void 0 : _l.code)
528
- ? "useEffect(() => {\n return () => {\n ".concat(processBinding(updateStateSettersInCode(json.hooks.onUnMount.code, options), options), "\n }\n }, [])")
428
+ ? "useEffect(() => {\n ".concat((0, state_2.processHookCode)({
429
+ str: json.hooks.onMount.code,
430
+ options: options,
431
+ }), "\n }, [])")
432
+ : '', (_k = (_j = json.hooks.onUpdate) === null || _j === void 0 ? void 0 : _j.map(function (hook) { return "useEffect(() => {\n ".concat((0, state_2.processHookCode)({ str: hook.code, options: options }), "\n }, \n ").concat(hook.deps ? (0, state_2.processHookCode)({ str: hook.deps, options: options }) : '', ")"); }).join(';')) !== null && _k !== void 0 ? _k : '', ((_l = json.hooks.onUnMount) === null || _l === void 0 ? void 0 : _l.code)
433
+ ? "useEffect(() => {\n return () => {\n ".concat((0, state_2.processHookCode)({
434
+ str: json.hooks.onUnMount.code,
435
+ options: options,
436
+ }), "\n }\n }, [])")
529
437
  : '', wrap ? openFrag(options) : '', json.children.map(function (item) { return (0, exports.blockToReact)(item, options); }).join('\n'), componentHasStyles && stylesType === 'styled-jsx'
530
438
  ? "<style jsx>{`".concat(css, "`}</style>")
531
439
  : componentHasStyles && stylesType === 'style-tag'
@@ -0,0 +1,2 @@
1
+ import { ToReactOptions } from './types';
2
+ export declare const processBinding: (str: string, options: ToReactOptions) => string;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processBinding = void 0;
4
+ var strip_state_and_props_refs_1 = require("../../helpers/strip-state-and-props-refs");
5
+ var processBinding = function (str, options) {
6
+ if (options.stateType !== 'useState') {
7
+ return str;
8
+ }
9
+ return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(str, {
10
+ includeState: true,
11
+ includeProps: false,
12
+ });
13
+ };
14
+ exports.processBinding = processBinding;
@@ -0,0 +1,2 @@
1
+ export * from './generator';
2
+ export * from './types';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./generator"), exports);
18
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,9 @@
1
+ import { MitosisComponent } from '../../types/mitosis-component';
2
+ import { ToReactOptions } from './types';
3
+ export declare const processHookCode: ({ str, options }: {
4
+ str: string;
5
+ options: ToReactOptions;
6
+ }) => string;
7
+ export declare const getUseStateCode: (json: MitosisComponent, options: ToReactOptions) => string;
8
+ export declare const updateStateSetters: (json: MitosisComponent, options: ToReactOptions) => void;
9
+ export declare const updateStateSettersInCode: (value: string, options: ToReactOptions) => string;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.updateStateSettersInCode = exports.updateStateSetters = exports.getUseStateCode = exports.processHookCode = void 0;
7
+ var core_1 = require("@babel/core");
8
+ var json5_1 = __importDefault(require("json5"));
9
+ var traverse_1 = __importDefault(require("traverse"));
10
+ var babel_transform_1 = require("../../helpers/babel-transform");
11
+ var capitalize_1 = require("../../helpers/capitalize");
12
+ var is_mitosis_node_1 = require("../../helpers/is-mitosis-node");
13
+ var function_1 = require("fp-ts/lib/function");
14
+ var helpers_1 = require("./helpers");
15
+ var patterns_1 = require("../../helpers/patterns");
16
+ /**
17
+ * Removes all `this.` references.
18
+ */
19
+ var stripThisRefs = function (str, options) {
20
+ if (options.stateType !== 'useState') {
21
+ return str;
22
+ }
23
+ return str.replace(/this\.([a-zA-Z_\$0-9]+)/g, '$1');
24
+ };
25
+ var processHookCode = function (_a) {
26
+ var str = _a.str, options = _a.options;
27
+ return (0, helpers_1.processBinding)((0, exports.updateStateSettersInCode)(str, options), options);
28
+ };
29
+ exports.processHookCode = processHookCode;
30
+ var valueMapper = function (options) { return function (val) {
31
+ var x = (0, exports.processHookCode)({ str: val, options: options });
32
+ return stripThisRefs(x, options);
33
+ }; };
34
+ var getSetStateFnName = function (stateName) { return "set".concat((0, capitalize_1.capitalize)(stateName)); };
35
+ var processStateValue = function (options) {
36
+ var mapValue = valueMapper(options);
37
+ return function (_a) {
38
+ var key = _a[0], stateVal = _a[1];
39
+ var getDefaultCase = function () {
40
+ return (0, function_1.pipe)(value, json5_1.default.stringify, mapValue, function (x) { return "const [".concat(key, ", ").concat(getSetStateFnName(key), "] = useState(() => (").concat(x, "))"); });
41
+ };
42
+ var value = stateVal === null || stateVal === void 0 ? void 0 : stateVal.code;
43
+ var type = stateVal === null || stateVal === void 0 ? void 0 : stateVal.type;
44
+ if (typeof value === 'string') {
45
+ switch (type) {
46
+ case 'getter':
47
+ return (0, function_1.pipe)(value, patterns_1.replaceGetterWithFunction, mapValue);
48
+ case 'function':
49
+ return mapValue(value);
50
+ case 'method':
51
+ return (0, function_1.pipe)(value, patterns_1.prefixWithFunction, mapValue);
52
+ default:
53
+ return getDefaultCase();
54
+ }
55
+ }
56
+ else {
57
+ return getDefaultCase();
58
+ }
59
+ };
60
+ };
61
+ var getUseStateCode = function (json, options) {
62
+ var lineItemDelimiter = '\n\n\n';
63
+ var stringifiedState = Object.entries(json.state).map(processStateValue(options));
64
+ return stringifiedState.join(lineItemDelimiter);
65
+ };
66
+ exports.getUseStateCode = getUseStateCode;
67
+ var updateStateSetters = function (json, options) {
68
+ if (options.stateType !== 'useState') {
69
+ return;
70
+ }
71
+ (0, traverse_1.default)(json).forEach(function (item) {
72
+ if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
73
+ for (var key in item.bindings) {
74
+ var values = item.bindings[key];
75
+ var newValue = (0, exports.updateStateSettersInCode)(values === null || values === void 0 ? void 0 : values.code, options);
76
+ if (newValue !== (values === null || values === void 0 ? void 0 : values.code)) {
77
+ item.bindings[key] = {
78
+ code: newValue,
79
+ arguments: values === null || values === void 0 ? void 0 : values.arguments,
80
+ };
81
+ }
82
+ }
83
+ }
84
+ });
85
+ };
86
+ exports.updateStateSetters = updateStateSetters;
87
+ var updateStateSettersInCode = function (value, options) {
88
+ if (options.stateType !== 'useState') {
89
+ return value;
90
+ }
91
+ return (0, babel_transform_1.babelTransformExpression)(value, {
92
+ AssignmentExpression: function (path) {
93
+ var node = path.node;
94
+ if (core_1.types.isMemberExpression(node.left)) {
95
+ if (core_1.types.isIdentifier(node.left.object)) {
96
+ // TODO: utillity to properly trace this reference to the beginning
97
+ if (node.left.object.name === 'state') {
98
+ // TODO: ultimately support other property access like strings
99
+ var propertyName = node.left.property.name;
100
+ path.replaceWith(core_1.types.callExpression(core_1.types.identifier(getSetStateFnName(propertyName)), [node.right]));
101
+ }
102
+ }
103
+ }
104
+ },
105
+ });
106
+ };
107
+ exports.updateStateSettersInCode = updateStateSettersInCode;
@@ -0,0 +1,10 @@
1
+ import { BaseTranspilerOptions } from '../../types/transpiler';
2
+ export interface ToReactOptions extends BaseTranspilerOptions {
3
+ stylesType?: 'emotion' | 'styled-components' | 'styled-jsx' | 'react-native' | 'style-tag';
4
+ stateType?: 'useState' | 'mobx' | 'valtio' | 'solid' | 'builder';
5
+ format?: 'lite' | 'safe';
6
+ type?: 'dom' | 'native';
7
+ preact?: boolean;
8
+ forwardRef?: string;
9
+ experimental?: any;
10
+ }
@@ -1,9 +1,9 @@
1
1
  import { ClassStyleMap } from '../helpers/styles/helpers';
2
2
  import { MitosisComponent } from '../types/mitosis-component';
3
- import { BaseTranspilerOptions, Transpiler } from '../types/transpiler';
3
+ import { BaseTranspilerOptions, TranspilerGenerator } from '../types/transpiler';
4
4
  export interface ToReactNativeOptions extends BaseTranspilerOptions {
5
5
  stylesType?: 'emotion' | 'react-native';
6
6
  stateType?: 'useState' | 'mobx' | 'valtio' | 'solid' | 'builder';
7
7
  }
8
8
  export declare const collectReactNativeStyles: (json: MitosisComponent) => ClassStyleMap;
9
- export declare const componentToReactNative: (options?: ToReactNativeOptions) => Transpiler;
9
+ export declare const componentToReactNative: TranspilerGenerator<ToReactNativeOptions>;
@@ -0,0 +1,3 @@
1
+ import { TranspilerGenerator } from '../../types/transpiler';
2
+ import { ToSolidOptions } from './types';
3
+ export declare const componentToSolid: TranspilerGenerator<Partial<ToSolidOptions>>;