@builder.io/mitosis 0.4.0 → 0.4.2

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 (196) hide show
  1. package/dist/src/constants/media-sizes.js +4 -5
  2. package/dist/src/generators/alpine/generate.js +114 -132
  3. package/dist/src/generators/alpine/render-mount-hook.js +8 -5
  4. package/dist/src/generators/alpine/render-update-hooks.js +13 -13
  5. package/dist/src/generators/angular/helpers.js +19 -9
  6. package/dist/src/generators/angular/index.js +599 -584
  7. package/dist/src/generators/builder.js +200 -165
  8. package/dist/src/generators/context/angular.js +32 -26
  9. package/dist/src/generators/context/helpers/context-with-symbol-key.js +25 -21
  10. package/dist/src/generators/context/qwik.js +21 -21
  11. package/dist/src/generators/context/react.js +22 -22
  12. package/dist/src/generators/context/rsc.js +20 -22
  13. package/dist/src/generators/context/solid.js +22 -22
  14. package/dist/src/generators/context/svelte.js +33 -28
  15. package/dist/src/generators/context/vue.js +1 -1
  16. package/dist/src/generators/helpers/context.js +6 -13
  17. package/dist/src/generators/helpers/functions.js +8 -8
  18. package/dist/src/generators/helpers/on-mount.js +9 -5
  19. package/dist/src/generators/helpers/rsc.js +7 -9
  20. package/dist/src/generators/html.js +995 -534
  21. package/dist/src/generators/liquid.js +81 -79
  22. package/dist/src/generators/lit/collect-class-string.js +10 -12
  23. package/dist/src/generators/lit/generate.js +204 -159
  24. package/dist/src/generators/marko/generate.js +193 -183
  25. package/dist/src/generators/minify.js +5 -9
  26. package/dist/src/generators/mitosis.js +135 -134
  27. package/dist/src/generators/qwik/component-generator.js +159 -154
  28. package/dist/src/generators/qwik/component.js +51 -81
  29. package/dist/src/generators/qwik/directives.js +68 -84
  30. package/dist/src/generators/qwik/helpers/add-prevent-default.js +6 -7
  31. package/dist/src/generators/qwik/helpers/convert-method-to-function.js +38 -38
  32. package/dist/src/generators/qwik/helpers/handlers.js +16 -25
  33. package/dist/src/generators/qwik/helpers/stable-inject.js +7 -8
  34. package/dist/src/generators/qwik/helpers/stable-serialize.js +7 -8
  35. package/dist/src/generators/qwik/helpers/state.js +36 -43
  36. package/dist/src/generators/qwik/helpers/styles.js +19 -40
  37. package/dist/src/generators/qwik/jsx.js +63 -75
  38. package/dist/src/generators/qwik/src-generator.js +134 -167
  39. package/dist/src/generators/react/blocks.js +122 -127
  40. package/dist/src/generators/react/generator.js +314 -259
  41. package/dist/src/generators/react/helpers.js +23 -28
  42. package/dist/src/generators/react/state.js +34 -51
  43. package/dist/src/generators/react-native/index.js +72 -84
  44. package/dist/src/generators/react-native/sanitize-react-native-block-styles.js +14 -26
  45. package/dist/src/generators/rsc.js +30 -36
  46. package/dist/src/generators/solid/blocks.js +46 -43
  47. package/dist/src/generators/solid/helpers/styles.js +11 -11
  48. package/dist/src/generators/solid/index.js +199 -190
  49. package/dist/src/generators/solid/state/helpers.js +76 -90
  50. package/dist/src/generators/solid/state/signals.js +30 -37
  51. package/dist/src/generators/solid/state/state.js +35 -48
  52. package/dist/src/generators/solid/state/store.js +40 -46
  53. package/dist/src/generators/stencil/collect-class-string.js +10 -12
  54. package/dist/src/generators/stencil/generate.js +158 -145
  55. package/dist/src/generators/svelte/blocks.js +146 -144
  56. package/dist/src/generators/svelte/helpers.js +10 -17
  57. package/dist/src/generators/svelte/svelte.js +321 -287
  58. package/dist/src/generators/swift-ui.js +162 -101
  59. package/dist/src/generators/taro.js +32 -36
  60. package/dist/src/generators/template.js +71 -74
  61. package/dist/src/generators/vue/blocks.js +116 -107
  62. package/dist/src/generators/vue/compositionApi.js +67 -50
  63. package/dist/src/generators/vue/helpers.js +71 -96
  64. package/dist/src/generators/vue/optionsApi.js +134 -105
  65. package/dist/src/generators/vue/vue.js +210 -207
  66. package/dist/src/helpers/babel-transform.js +40 -63
  67. package/dist/src/helpers/bindings.js +4 -12
  68. package/dist/src/helpers/camel-case.js +4 -5
  69. package/dist/src/helpers/capitalize.js +1 -1
  70. package/dist/src/helpers/component-file-extensions.js +23 -35
  71. package/dist/src/helpers/create-mitosis-component.js +22 -26
  72. package/dist/src/helpers/create-mitosis-context.js +5 -12
  73. package/dist/src/helpers/create-mitosis-node.js +10 -12
  74. package/dist/src/helpers/dash-case.js +2 -2
  75. package/dist/src/helpers/dedent.js +18 -22
  76. package/dist/src/helpers/event-handlers.js +1 -1
  77. package/dist/src/helpers/fast-clone.js +1 -1
  78. package/dist/src/helpers/filter-empty-text-nodes.js +2 -2
  79. package/dist/src/helpers/generic-format.js +7 -8
  80. package/dist/src/helpers/get-bindings.js +4 -4
  81. package/dist/src/helpers/get-components-used.js +3 -3
  82. package/dist/src/helpers/get-components.js +4 -4
  83. package/dist/src/helpers/get-custom-imports.js +10 -12
  84. package/dist/src/helpers/get-prop-functions.js +7 -8
  85. package/dist/src/helpers/get-props-ref.js +8 -8
  86. package/dist/src/helpers/get-props.js +12 -13
  87. package/dist/src/helpers/get-refs.js +4 -4
  88. package/dist/src/helpers/get-state-object-string.js +42 -61
  89. package/dist/src/helpers/get-state-used.js +7 -8
  90. package/dist/src/helpers/get-styles.js +6 -6
  91. package/dist/src/helpers/getters-to-functions.js +8 -12
  92. package/dist/src/helpers/handle-missing-state.js +3 -3
  93. package/dist/src/helpers/has-bindings-text.js +6 -6
  94. package/dist/src/helpers/has-component.js +4 -4
  95. package/dist/src/helpers/has-props.js +3 -3
  96. package/dist/src/helpers/has-stateful-dom.js +4 -4
  97. package/dist/src/helpers/has.js +3 -3
  98. package/dist/src/helpers/indent.js +2 -3
  99. package/dist/src/helpers/is-children.js +4 -5
  100. package/dist/src/helpers/is-component.js +1 -1
  101. package/dist/src/helpers/is-html-attribute.js +2 -11
  102. package/dist/src/helpers/is-mitosis-node.js +1 -1
  103. package/dist/src/helpers/is-root-text-node.js +1 -1
  104. package/dist/src/helpers/is-upper-case.js +1 -1
  105. package/dist/src/helpers/is-valid-attribute-name.js +1 -1
  106. package/dist/src/helpers/json.js +2 -2
  107. package/dist/src/helpers/map-refs.js +29 -40
  108. package/dist/src/helpers/merge-options.js +20 -31
  109. package/dist/src/helpers/mitosis-imports.js +5 -6
  110. package/dist/src/helpers/nodes/for.js +2 -3
  111. package/dist/src/helpers/nullable.js +1 -3
  112. package/dist/src/helpers/on-event.js +32 -36
  113. package/dist/src/helpers/output.js +4 -5
  114. package/dist/src/helpers/parse-node.js +13 -5
  115. package/dist/src/helpers/parsers.js +10 -14
  116. package/dist/src/helpers/patterns.js +6 -8
  117. package/dist/src/helpers/plugins/process-code/index.js +114 -120
  118. package/dist/src/helpers/plugins/process-signals.js +114 -125
  119. package/dist/src/helpers/plugins/process-target-blocks.js +18 -20
  120. package/dist/src/helpers/process-http-requests.js +8 -4
  121. package/dist/src/helpers/remove-surrounding-block.js +2 -2
  122. package/dist/src/helpers/render-imports.js +99 -111
  123. package/dist/src/helpers/replace-identifiers.js +40 -49
  124. package/dist/src/helpers/replace-new-lines-in-strings.js +3 -3
  125. package/dist/src/helpers/signals/signals.js +27 -35
  126. package/dist/src/helpers/slots.js +11 -20
  127. package/dist/src/helpers/state.js +1 -3
  128. package/dist/src/helpers/strip-meta-properties.js +6 -6
  129. package/dist/src/helpers/strip-state-and-props-refs.js +21 -32
  130. package/dist/src/helpers/styles/collect-css.js +39 -44
  131. package/dist/src/helpers/styles/collect-styled-components.js +30 -28
  132. package/dist/src/helpers/styles/helpers.js +23 -29
  133. package/dist/src/helpers/trace-reference-to-module-path.js +3 -4
  134. package/dist/src/helpers/transform-state-setters.js +16 -19
  135. package/dist/src/helpers/traverse-nodes.js +2 -2
  136. package/dist/src/helpers/try-prettier-format.js +3 -3
  137. package/dist/src/helpers/typescript-project.js +25 -25
  138. package/dist/src/helpers/typescript.js +1 -3
  139. package/dist/src/modules/plugins.js +20 -28
  140. package/dist/src/parsers/angular.js +49 -57
  141. package/dist/src/parsers/builder/builder.js +448 -343
  142. package/dist/src/parsers/builder/helpers.js +10 -10
  143. package/dist/src/parsers/context.js +15 -17
  144. package/dist/src/parsers/jsx/ast.js +11 -11
  145. package/dist/src/parsers/jsx/component-types.js +22 -32
  146. package/dist/src/parsers/jsx/context.js +12 -12
  147. package/dist/src/parsers/jsx/element-parser.js +43 -54
  148. package/dist/src/parsers/jsx/exports.js +12 -14
  149. package/dist/src/parsers/jsx/function-parser.js +108 -119
  150. package/dist/src/parsers/jsx/helpers.js +11 -13
  151. package/dist/src/parsers/jsx/hooks/helpers.js +14 -16
  152. package/dist/src/parsers/jsx/hooks/index.js +34 -44
  153. package/dist/src/parsers/jsx/hooks/use-target.js +27 -27
  154. package/dist/src/parsers/jsx/imports.js +7 -17
  155. package/dist/src/parsers/jsx/jsx.js +92 -91
  156. package/dist/src/parsers/jsx/props-types.js +8 -10
  157. package/dist/src/parsers/jsx/props.js +15 -23
  158. package/dist/src/parsers/jsx/signals.js +28 -29
  159. package/dist/src/parsers/jsx/state.d.ts +2 -4
  160. package/dist/src/parsers/jsx/state.js +59 -93
  161. package/dist/src/parsers/svelte/css/index.js +1 -1
  162. package/dist/src/parsers/svelte/helpers/bindings.js +18 -19
  163. package/dist/src/parsers/svelte/helpers/children.js +5 -6
  164. package/dist/src/parsers/svelte/helpers/expressions.js +7 -9
  165. package/dist/src/parsers/svelte/helpers/hooks.js +2 -2
  166. package/dist/src/parsers/svelte/helpers/post-process.js +49 -70
  167. package/dist/src/parsers/svelte/helpers/string.js +5 -5
  168. package/dist/src/parsers/svelte/html/actions.js +17 -10
  169. package/dist/src/parsers/svelte/html/each.js +11 -16
  170. package/dist/src/parsers/svelte/html/element.js +68 -78
  171. package/dist/src/parsers/svelte/html/fragment.js +3 -3
  172. package/dist/src/parsers/svelte/html/if-else.js +11 -18
  173. package/dist/src/parsers/svelte/html/index.js +14 -14
  174. package/dist/src/parsers/svelte/html/mustache-tag.js +5 -5
  175. package/dist/src/parsers/svelte/html/slot.js +5 -5
  176. package/dist/src/parsers/svelte/html/text.js +7 -14
  177. package/dist/src/parsers/svelte/index.js +23 -72
  178. package/dist/src/parsers/svelte/instance/context.js +17 -17
  179. package/dist/src/parsers/svelte/instance/expressions.js +2 -2
  180. package/dist/src/parsers/svelte/instance/functions.js +35 -30
  181. package/dist/src/parsers/svelte/instance/hooks.js +4 -5
  182. package/dist/src/parsers/svelte/instance/imports.js +11 -21
  183. package/dist/src/parsers/svelte/instance/index.js +22 -22
  184. package/dist/src/parsers/svelte/instance/properties.js +11 -23
  185. package/dist/src/parsers/svelte/instance/reactive.js +11 -11
  186. package/dist/src/parsers/svelte/instance/references.js +13 -13
  187. package/dist/src/parsers/svelte/instance/statements.js +3 -3
  188. package/dist/src/parsers/svelte/module/index.js +14 -26
  189. package/dist/src/parsers/svelte/typescript/index.js +27 -36
  190. package/dist/src/plugins/compile-away-builder-components.js +223 -156
  191. package/dist/src/plugins/compile-away-components.js +13 -21
  192. package/dist/src/plugins/map-styles.js +7 -7
  193. package/dist/src/symbols/symbol-processor.js +44 -62
  194. package/dist/src/targets.js +19 -19
  195. package/dist/src/types/mitosis-node.js +1 -1
  196. package/package.json +1 -1
@@ -1,186 +1,166 @@
1
1
  "use strict";
2
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
- return cooked;
5
- };
6
- var __assign = (this && this.__assign) || function () {
7
- __assign = Object.assign || function(t) {
8
- for (var s, i = 1, n = arguments.length; i < n; i++) {
9
- s = arguments[i];
10
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
- t[p] = s[p];
12
- }
13
- return t;
14
- };
15
- return __assign.apply(this, arguments);
16
- };
17
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
19
- if (ar || !(i in from)) {
20
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21
- ar[i] = from[i];
22
- }
23
- }
24
- return to.concat(ar || Array.prototype.slice.call(from));
25
- };
26
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
27
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
28
4
  };
29
5
  Object.defineProperty(exports, "__esModule", { value: true });
30
6
  exports.componentToReact = exports.componentToPreact = exports.contextPropDrillingKey = void 0;
31
- var bindings_1 = require("../../helpers/bindings");
32
- var create_mitosis_node_1 = require("../../helpers/create-mitosis-node");
33
- var dedent_1 = require("../../helpers/dedent");
34
- var fast_clone_1 = require("../../helpers/fast-clone");
35
- var get_props_ref_1 = require("../../helpers/get-props-ref");
36
- var get_refs_1 = require("../../helpers/get-refs");
37
- var get_state_object_string_1 = require("../../helpers/get-state-object-string");
38
- var getters_to_functions_1 = require("../../helpers/getters-to-functions");
39
- var handle_missing_state_1 = require("../../helpers/handle-missing-state");
40
- var is_root_text_node_1 = require("../../helpers/is-root-text-node");
41
- var map_refs_1 = require("../../helpers/map-refs");
42
- var merge_options_1 = require("../../helpers/merge-options");
43
- var nullable_1 = require("../../helpers/nullable");
44
- var on_event_1 = require("../../helpers/on-event");
45
- var process_code_1 = require("../../helpers/plugins/process-code");
46
- var process_http_requests_1 = require("../../helpers/process-http-requests");
47
- var render_imports_1 = require("../../helpers/render-imports");
48
- var replace_identifiers_1 = require("../../helpers/replace-identifiers");
49
- var replace_new_lines_in_strings_1 = require("../../helpers/replace-new-lines-in-strings");
50
- var state_1 = require("../../helpers/state");
51
- var strip_meta_properties_1 = require("../../helpers/strip-meta-properties");
52
- var collect_css_1 = require("../../helpers/styles/collect-css");
53
- var collect_styled_components_1 = require("../../helpers/styles/collect-styled-components");
54
- var helpers_1 = require("../../helpers/styles/helpers");
55
- var core_1 = require("@babel/core");
56
- var hash_sum_1 = __importDefault(require("hash-sum"));
57
- var json5_1 = __importDefault(require("json5"));
58
- var standalone_1 = require("prettier/standalone");
59
- var plugins_1 = require("../../modules/plugins");
60
- var context_1 = require("../helpers/context");
61
- var rsc_1 = require("../helpers/rsc");
62
- var react_native_1 = require("../react-native");
63
- var blocks_1 = require("./blocks");
64
- var helpers_2 = require("./helpers");
65
- var state_2 = require("./state");
7
+ const bindings_1 = require("../../helpers/bindings");
8
+ const create_mitosis_node_1 = require("../../helpers/create-mitosis-node");
9
+ const dedent_1 = require("../../helpers/dedent");
10
+ const fast_clone_1 = require("../../helpers/fast-clone");
11
+ const get_props_ref_1 = require("../../helpers/get-props-ref");
12
+ const get_refs_1 = require("../../helpers/get-refs");
13
+ const get_state_object_string_1 = require("../../helpers/get-state-object-string");
14
+ const getters_to_functions_1 = require("../../helpers/getters-to-functions");
15
+ const handle_missing_state_1 = require("../../helpers/handle-missing-state");
16
+ const is_root_text_node_1 = require("../../helpers/is-root-text-node");
17
+ const map_refs_1 = require("../../helpers/map-refs");
18
+ const merge_options_1 = require("../../helpers/merge-options");
19
+ const nullable_1 = require("../../helpers/nullable");
20
+ const on_event_1 = require("../../helpers/on-event");
21
+ const process_code_1 = require("../../helpers/plugins/process-code");
22
+ const process_http_requests_1 = require("../../helpers/process-http-requests");
23
+ const render_imports_1 = require("../../helpers/render-imports");
24
+ const replace_identifiers_1 = require("../../helpers/replace-identifiers");
25
+ const replace_new_lines_in_strings_1 = require("../../helpers/replace-new-lines-in-strings");
26
+ const state_1 = require("../../helpers/state");
27
+ const strip_meta_properties_1 = require("../../helpers/strip-meta-properties");
28
+ const collect_css_1 = require("../../helpers/styles/collect-css");
29
+ const collect_styled_components_1 = require("../../helpers/styles/collect-styled-components");
30
+ const helpers_1 = require("../../helpers/styles/helpers");
31
+ const core_1 = require("@babel/core");
32
+ const hash_sum_1 = __importDefault(require("hash-sum"));
33
+ const json5_1 = __importDefault(require("json5"));
34
+ const standalone_1 = require("prettier/standalone");
35
+ const plugins_1 = require("../../modules/plugins");
36
+ const context_1 = require("../helpers/context");
37
+ const rsc_1 = require("../helpers/rsc");
38
+ const react_native_1 = require("../react-native");
39
+ const blocks_1 = require("./blocks");
40
+ const helpers_2 = require("./helpers");
41
+ const state_2 = require("./state");
66
42
  exports.contextPropDrillingKey = '_context';
67
43
  /**
68
44
  * If the root Mitosis component only has 1 child, and it is a `Show`/`For` node, then we need to wrap it in a fragment.
69
45
  * Otherwise, we end up with invalid React render code.
70
46
  */
71
- var isRootSpecialNode = function (json) {
72
- return json.children.length === 1 && ['Show', 'For'].includes(json.children[0].name);
73
- };
74
- var getRefsString = function (json, refs, options) {
47
+ const isRootSpecialNode = (json) => json.children.length === 1 && ['Show', 'For'].includes(json.children[0].name);
48
+ const getRefsString = (json, refs, options) => {
75
49
  var _a, _b;
76
- var hasStateArgument = false;
77
- var code = '';
78
- var domRefs = (0, get_refs_1.getRefs)(json);
79
- for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) {
80
- var ref = refs_1[_i];
81
- var typeParameter = ((_a = json['refs'][ref]) === null || _a === void 0 ? void 0 : _a.typeParameter) || '';
50
+ let hasStateArgument = false;
51
+ let code = '';
52
+ const domRefs = (0, get_refs_1.getRefs)(json);
53
+ for (const ref of refs) {
54
+ const typeParameter = ((_a = json['refs'][ref]) === null || _a === void 0 ? void 0 : _a.typeParameter) || '';
82
55
  // domRefs must have null argument
83
- var argument = ((_b = json['refs'][ref]) === null || _b === void 0 ? void 0 : _b.argument) || (domRefs.has(ref) ? 'null' : '');
56
+ const argument = ((_b = json['refs'][ref]) === null || _b === void 0 ? void 0 : _b.argument) || (domRefs.has(ref) ? 'null' : '');
84
57
  hasStateArgument = /state\./.test(argument);
85
- code += "\nconst ".concat(ref, " = useRef").concat(typeParameter && options.typescript ? "<".concat(typeParameter, ">") : '', "(").concat((0, state_2.processHookCode)({
58
+ code += `\nconst ${ref} = useRef${typeParameter && options.typescript ? `<${typeParameter}>` : ''}(${(0, state_2.processHookCode)({
86
59
  str: argument,
87
- options: options,
88
- }), ");");
60
+ options,
61
+ })});`;
89
62
  }
90
63
  return [hasStateArgument, code];
91
64
  };
92
65
  function provideContext(json, options) {
93
66
  if (options.contextType === 'prop-drill') {
94
- var str = '';
95
- for (var key in json.context.set) {
96
- var _a = json.context.set[key], name_1 = _a.name, ref = _a.ref, value = _a.value;
67
+ let str = '';
68
+ for (const key in json.context.set) {
69
+ const { name, ref, value } = json.context.set[key];
97
70
  if (value) {
98
- str += "\n ".concat(exports.contextPropDrillingKey, ".").concat(name_1, " = ").concat((0, get_state_object_string_1.stringifyContextValue)(value), ";\n ");
71
+ str += `
72
+ ${exports.contextPropDrillingKey}.${name} = ${(0, get_state_object_string_1.stringifyContextValue)(value)};
73
+ `;
99
74
  }
100
75
  // TODO: support refs. I'm not sure what those are so unclear how to support them
101
76
  }
102
77
  return str;
103
78
  }
104
79
  else {
105
- for (var key in json.context.set) {
106
- var _b = json.context.set[key], name_2 = _b.name, ref = _b.ref, value = _b.value;
80
+ for (const key in json.context.set) {
81
+ const { name, ref, value } = json.context.set[key];
107
82
  if (value) {
108
83
  json.children = [
109
- (0, create_mitosis_node_1.createMitosisNode)(__assign({ name: "".concat(name_2, ".Provider"), children: json.children }, (value && {
110
- bindings: {
111
- value: (0, bindings_1.createSingleBinding)({
112
- code: (0, get_state_object_string_1.stringifyContextValue)(value),
113
- }),
114
- },
115
- }))),
84
+ (0, create_mitosis_node_1.createMitosisNode)({
85
+ name: `${name}.Provider`,
86
+ children: json.children,
87
+ ...(value && {
88
+ bindings: {
89
+ value: (0, bindings_1.createSingleBinding)({
90
+ code: (0, get_state_object_string_1.stringifyContextValue)(value),
91
+ }),
92
+ },
93
+ }),
94
+ }),
116
95
  ];
117
96
  }
118
97
  else if (ref) {
119
98
  json.children = [
120
- (0, create_mitosis_node_1.createMitosisNode)(__assign({ name: "".concat(name_2, ".Provider"), children: json.children }, (ref && {
121
- bindings: {
122
- value: (0, bindings_1.createSingleBinding)({ code: ref }),
123
- },
124
- }))),
99
+ (0, create_mitosis_node_1.createMitosisNode)({
100
+ name: `${name}.Provider`,
101
+ children: json.children,
102
+ ...(ref && {
103
+ bindings: {
104
+ value: (0, bindings_1.createSingleBinding)({ code: ref }),
105
+ },
106
+ }),
107
+ }),
125
108
  ];
126
109
  }
127
110
  }
128
111
  }
129
112
  }
130
113
  function getContextString(component, options) {
131
- var str = '';
132
- for (var key in component.context.get) {
114
+ let str = '';
115
+ for (const key in component.context.get) {
133
116
  if (options.contextType === 'prop-drill') {
134
- str += "\n const ".concat(key, " = ").concat(exports.contextPropDrillingKey, "['").concat(component.context.get[key].name, "'];\n ");
117
+ str += `
118
+ const ${key} = ${exports.contextPropDrillingKey}['${component.context.get[key].name}'];
119
+ `;
135
120
  }
136
121
  else {
137
- str += "\n const ".concat(key, " = useContext(").concat(component.context.get[key].name, ");\n ");
122
+ str += `
123
+ const ${key} = useContext(${component.context.get[key].name});
124
+ `;
138
125
  }
139
126
  }
140
127
  return str;
141
128
  }
142
- var componentToPreact = function (reactOptions) {
143
- if (reactOptions === void 0) { reactOptions = {}; }
144
- return (0, exports.componentToReact)(__assign(__assign({}, reactOptions), { preact: true }));
145
- };
129
+ const componentToPreact = (reactOptions = {}) => (0, exports.componentToReact)({
130
+ ...reactOptions,
131
+ preact: true,
132
+ });
146
133
  exports.componentToPreact = componentToPreact;
147
- var componentToReact = function (reactOptions) {
148
- if (reactOptions === void 0) { reactOptions = {}; }
149
- return function (_a) {
150
- var component = _a.component, path = _a.path;
151
- var json = (0, fast_clone_1.fastClone)(component);
152
- var target = reactOptions.preact
153
- ? 'preact'
154
- : reactOptions.type === 'native'
155
- ? 'reactNative'
156
- : reactOptions.type === 'taro'
157
- ? 'taro'
158
- : reactOptions.rsc
159
- ? 'rsc'
160
- : 'react';
161
- var stateType = reactOptions.stateType || 'useState';
162
- var DEFAULT_OPTIONS = {
163
- addUseClientDirectiveIfNeeded: true,
164
- stateType: stateType,
165
- stylesType: 'styled-jsx',
166
- type: 'dom',
167
- plugins: __spreadArray([
168
- (0, on_event_1.processOnEventHooksPlugin)({ setBindings: false })
169
- ], (stateType === 'variables'
134
+ const componentToReact = (reactOptions = {}) => ({ component, path }) => {
135
+ let json = (0, fast_clone_1.fastClone)(component);
136
+ const target = reactOptions.preact
137
+ ? 'preact'
138
+ : reactOptions.type === 'native'
139
+ ? 'reactNative'
140
+ : reactOptions.type === 'taro'
141
+ ? 'taro'
142
+ : reactOptions.rsc
143
+ ? 'rsc'
144
+ : 'react';
145
+ const stateType = reactOptions.stateType || 'useState';
146
+ const DEFAULT_OPTIONS = {
147
+ addUseClientDirectiveIfNeeded: true,
148
+ stateType,
149
+ stylesType: 'styled-jsx',
150
+ type: 'dom',
151
+ plugins: [
152
+ (0, on_event_1.processOnEventHooksPlugin)({ setBindings: false }),
153
+ ...(stateType === 'variables'
170
154
  ? [
171
- (0, process_code_1.CODE_PROCESSOR_PLUGIN)(function (codeType, json) { return function (code, hookType) {
155
+ (0, process_code_1.CODE_PROCESSOR_PLUGIN)((codeType, json) => (code, hookType) => {
172
156
  if (codeType === 'types')
173
157
  return code;
174
158
  code = (0, replace_identifiers_1.replaceNodes)({
175
- code: code,
159
+ code,
176
160
  nodeMaps: Object.entries(json.state)
177
- .filter(function (_a) {
178
- var key = _a[0], value = _a[1];
179
- return (value === null || value === void 0 ? void 0 : value.type) === 'getter';
180
- })
181
- .map(function (_a) {
182
- var key = _a[0], value = _a[1];
183
- var expr = core_1.types.memberExpression(core_1.types.identifier('state'), core_1.types.identifier(key));
161
+ .filter(([key, value]) => (value === null || value === void 0 ? void 0 : value.type) === 'getter')
162
+ .map(([key, value]) => {
163
+ const expr = core_1.types.memberExpression(core_1.types.identifier('state'), core_1.types.identifier(key));
184
164
  return {
185
165
  from: expr,
186
166
  // condition: (path) => !types.isObjectMethod(path.parent),
@@ -190,80 +170,87 @@ var componentToReact = function (reactOptions) {
190
170
  });
191
171
  code = (0, replace_identifiers_1.replaceStateIdentifier)(null)(code);
192
172
  return code;
193
- }; }),
173
+ }),
194
174
  ]
195
- : []), true),
196
- };
197
- var options = (0, merge_options_1.initializeOptions)({
198
- target: target,
199
- component: component,
200
- defaults: DEFAULT_OPTIONS,
201
- userOptions: reactOptions,
202
- });
203
- if (options.plugins) {
204
- json = (0, plugins_1.runPreJsonPlugins)({ json: json, plugins: options.plugins });
205
- }
206
- var str = _componentToReact(json, options);
207
- str +=
208
- '\n\n\n' +
209
- json.subComponents.map(function (item) { return _componentToReact(item, options, true); }).join('\n\n\n');
210
- if (options.plugins) {
211
- str = (0, plugins_1.runPreCodePlugins)({ json: json, code: str, plugins: options.plugins });
212
- }
213
- if (options.prettier !== false) {
214
- try {
215
- str = (0, standalone_1.format)(str, {
216
- parser: 'typescript',
217
- plugins: [
218
- require('prettier/parser-typescript'), // To support running in browsers
219
- require('prettier/parser-postcss'),
220
- ],
221
- })
222
- // Remove spaces between imports
223
- .replace(/;\n\nimport\s/g, ';\nimport ');
224
- }
225
- catch (err) {
226
- console.error('Format error for file:', str);
227
- throw err;
228
- }
175
+ : []),
176
+ ],
177
+ };
178
+ const options = (0, merge_options_1.initializeOptions)({
179
+ target,
180
+ component,
181
+ defaults: DEFAULT_OPTIONS,
182
+ userOptions: reactOptions,
183
+ });
184
+ if (options.plugins) {
185
+ json = (0, plugins_1.runPreJsonPlugins)({ json, plugins: options.plugins });
186
+ }
187
+ let str = _componentToReact(json, options);
188
+ str +=
189
+ '\n\n\n' +
190
+ json.subComponents.map((item) => _componentToReact(item, options, true)).join('\n\n\n');
191
+ if (options.plugins) {
192
+ str = (0, plugins_1.runPreCodePlugins)({ json, code: str, plugins: options.plugins });
193
+ }
194
+ if (options.prettier !== false) {
195
+ try {
196
+ str = (0, standalone_1.format)(str, {
197
+ parser: 'typescript',
198
+ plugins: [
199
+ require('prettier/parser-typescript'), // To support running in browsers
200
+ require('prettier/parser-postcss'),
201
+ ],
202
+ })
203
+ // Remove spaces between imports
204
+ .replace(/;\n\nimport\s/g, ';\nimport ');
229
205
  }
230
- if (options.plugins) {
231
- str = (0, plugins_1.runPostCodePlugins)({ json: json, code: str, plugins: options.plugins });
206
+ catch (err) {
207
+ console.error('Format error for file:', str);
208
+ throw err;
232
209
  }
233
- return str;
234
- };
210
+ }
211
+ if (options.plugins) {
212
+ str = (0, plugins_1.runPostCodePlugins)({ json, code: str, plugins: options.plugins });
213
+ }
214
+ return str;
235
215
  };
236
216
  exports.componentToReact = componentToReact;
237
217
  // TODO: import target components when they are required
238
- var getDefaultImport = function (json, options) {
239
- var preact = options.preact, type = options.type;
218
+ const getDefaultImport = (json, options) => {
219
+ const { preact, type } = options;
240
220
  if (preact) {
241
- return "\n /** @jsx h */\n import { h, Fragment } from 'preact';\n ";
221
+ return `
222
+ /** @jsx h */
223
+ import { h, Fragment } from 'preact';
224
+ `;
242
225
  }
243
226
  if (type === 'native') {
244
- return "\n import * as React from 'react';\n import { FlatList, ScrollView, View, StyleSheet, Image, Text, Pressable, TextInput, TouchableOpacity, Button, Linking } from 'react-native';\n ";
227
+ return `
228
+ import * as React from 'react';
229
+ import { FlatList, ScrollView, View, StyleSheet, Image, Text, Pressable, TextInput, TouchableOpacity, Button, Linking } from 'react-native';
230
+ `;
245
231
  }
246
232
  if (type === 'taro') {
247
- return "\n import * as React from 'react';\n ";
233
+ return `
234
+ import * as React from 'react';
235
+ `;
248
236
  }
249
237
  return "import * as React from 'react';";
250
238
  };
251
- var getPropsDefinition = function (_a) {
252
- var json = _a.json;
239
+ const getPropsDefinition = ({ json }) => {
253
240
  if (!json.defaultProps)
254
241
  return '';
255
- var defaultPropsString = Object.keys(json.defaultProps)
256
- .map(function (prop) {
242
+ const defaultPropsString = Object.keys(json.defaultProps)
243
+ .map((prop) => {
257
244
  var _a;
258
- var value = json.defaultProps.hasOwnProperty(prop)
245
+ const value = json.defaultProps.hasOwnProperty(prop)
259
246
  ? (_a = json.defaultProps[prop]) === null || _a === void 0 ? void 0 : _a.code
260
247
  : 'undefined';
261
- return "".concat(prop, ": ").concat(value);
248
+ return `${prop}: ${value}`;
262
249
  })
263
250
  .join(',');
264
- return "".concat(json.name, ".defaultProps = {").concat(defaultPropsString, "};");
251
+ return `${json.name}.defaultProps = {${defaultPropsString}};`;
265
252
  };
266
- var checkShouldAddUseClientDirective = function (json, options) {
253
+ const checkShouldAddUseClientDirective = (json, options) => {
267
254
  var _a, _b;
268
255
  if (!options.addUseClientDirectiveIfNeeded)
269
256
  return false;
@@ -272,20 +259,19 @@ var checkShouldAddUseClientDirective = function (json, options) {
272
259
  if (options.preact)
273
260
  return false;
274
261
  // When using RSC generator, we check `componentType` field in metadata to determine if it's a server component
275
- var componentType = (_b = (_a = json.meta.useMetadata) === null || _a === void 0 ? void 0 : _a.rsc) === null || _b === void 0 ? void 0 : _b.componentType;
262
+ const componentType = (_b = (_a = json.meta.useMetadata) === null || _a === void 0 ? void 0 : _a.rsc) === null || _b === void 0 ? void 0 : _b.componentType;
276
263
  if (options.rsc && (0, nullable_1.checkIsDefined)(componentType)) {
277
264
  return componentType === 'client';
278
265
  }
279
266
  return (0, rsc_1.checkIfIsClientComponent)(json);
280
267
  };
281
- var _componentToReact = function (json, options, isSubComponent) {
268
+ const _componentToReact = (json, options, isSubComponent = false) => {
282
269
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
283
- if (isSubComponent === void 0) { isSubComponent = false; }
284
270
  (0, process_http_requests_1.processHttpRequests)(json);
285
271
  (0, handle_missing_state_1.handleMissingState)(json);
286
272
  (0, helpers_2.processTagReferences)(json, options);
287
- var contextStr = provideContext(json, options);
288
- var componentHasStyles = (0, helpers_1.hasCss)(json);
273
+ const contextStr = provideContext(json, options);
274
+ const componentHasStyles = (0, helpers_1.hasCss)(json);
289
275
  if (options.stateType === 'useState') {
290
276
  (0, getters_to_functions_1.gettersToFunctions)(json);
291
277
  (0, state_2.updateStateSetters)(json, options);
@@ -294,38 +280,38 @@ var _componentToReact = function (json, options, isSubComponent) {
294
280
  json.name = 'MyComponent';
295
281
  }
296
282
  // const domRefs = getRefs(json);
297
- var allRefs = Object.keys(json.refs);
298
- (0, map_refs_1.mapRefs)(json, function (refName) { return "".concat(refName, ".current"); });
283
+ const allRefs = Object.keys(json.refs);
284
+ (0, map_refs_1.mapRefs)(json, (refName) => `${refName}.current`);
299
285
  // Always use state if we are generate Builder react code
300
- var hasState = options.stateType === 'builder' || (0, state_1.checkHasState)(json);
301
- var _o = (0, get_props_ref_1.getPropsRef)(json), forwardRef = _o[0], hasPropRef = _o[1];
302
- var isForwardRef = !options.preact && Boolean(((_a = json.meta.useMetadata) === null || _a === void 0 ? void 0 : _a.forwardRef) || hasPropRef);
286
+ const hasState = options.stateType === 'builder' || (0, state_1.checkHasState)(json);
287
+ const [forwardRef, hasPropRef] = (0, get_props_ref_1.getPropsRef)(json);
288
+ const isForwardRef = !options.preact && Boolean(((_a = json.meta.useMetadata) === null || _a === void 0 ? void 0 : _a.forwardRef) || hasPropRef);
303
289
  if (isForwardRef) {
304
- var meta = (_b = json.meta.useMetadata) === null || _b === void 0 ? void 0 : _b.forwardRef;
290
+ const meta = (_b = json.meta.useMetadata) === null || _b === void 0 ? void 0 : _b.forwardRef;
305
291
  options.forwardRef = meta || forwardRef;
306
292
  }
307
- var forwardRefType = options.typescript && json.propsTypeRef && forwardRef && json.propsTypeRef !== 'any'
308
- ? "<".concat(json.propsTypeRef, "[\"").concat(forwardRef, "\"]>")
293
+ const forwardRefType = options.typescript && json.propsTypeRef && forwardRef && json.propsTypeRef !== 'any'
294
+ ? `<${json.propsTypeRef}["${forwardRef}"]>`
309
295
  : '';
310
- var useStateCode = options.stateType === 'useState' ? (0, state_2.getUseStateCode)(json, options) : '';
296
+ const useStateCode = options.stateType === 'useState' ? (0, state_2.getUseStateCode)(json, options) : '';
311
297
  if (options.plugins) {
312
- json = (0, plugins_1.runPostJsonPlugins)({ json: json, plugins: options.plugins });
298
+ json = (0, plugins_1.runPostJsonPlugins)({ json, plugins: options.plugins });
313
299
  }
314
- var css = options.stylesType === 'styled-jsx'
300
+ const css = options.stylesType === 'styled-jsx'
315
301
  ? (0, collect_css_1.collectCss)(json)
316
302
  : options.stylesType === 'style-tag'
317
303
  ? (0, collect_css_1.collectCss)(json, {
318
304
  prefix: (0, hash_sum_1.default)(json),
319
305
  })
320
306
  : null;
321
- var styledComponentsCode = (options.stylesType === 'styled-components' &&
307
+ const styledComponentsCode = (options.stylesType === 'styled-components' &&
322
308
  componentHasStyles &&
323
309
  (0, collect_styled_components_1.collectStyledComponents)(json)) ||
324
310
  '';
325
311
  if (options.format !== 'lite') {
326
312
  (0, strip_meta_properties_1.stripMetaProperties)(json);
327
313
  }
328
- var reactLibImports = new Set();
314
+ const reactLibImports = new Set();
329
315
  if (useStateCode.includes('useState')) {
330
316
  reactLibImports.add('useState');
331
317
  }
@@ -341,101 +327,170 @@ var _componentToReact = function (json, options, isSubComponent) {
341
327
  if (json.hooks.onMount.length || ((_d = json.hooks.onUnMount) === null || _d === void 0 ? void 0 : _d.code) || ((_e = json.hooks.onUpdate) === null || _e === void 0 ? void 0 : _e.length)) {
342
328
  reactLibImports.add('useEffect');
343
329
  }
344
- var hasCustomStyles = !!((_f = json.style) === null || _f === void 0 ? void 0 : _f.length);
345
- var shouldInjectCustomStyles = hasCustomStyles &&
330
+ const hasCustomStyles = !!((_f = json.style) === null || _f === void 0 ? void 0 : _f.length);
331
+ const shouldInjectCustomStyles = hasCustomStyles &&
346
332
  (options.stylesType === 'styled-components' || options.stylesType === 'emotion');
347
- var wrap = (0, helpers_2.wrapInFragment)(json) ||
333
+ const wrap = (0, helpers_2.wrapInFragment)(json) ||
348
334
  (0, is_root_text_node_1.isRootTextNode)(json) ||
349
335
  (componentHasStyles &&
350
336
  (options.stylesType === 'styled-jsx' || options.stylesType === 'style-tag')) ||
351
337
  shouldInjectCustomStyles ||
352
338
  isRootSpecialNode(json);
353
- var _p = getRefsString(json, allRefs, options), hasStateArgument = _p[0], refsString = _p[1];
339
+ const [hasStateArgument, refsString] = getRefsString(json, allRefs, options);
354
340
  // NOTE: `collectReactNativeStyles` must run before style generation in the component generation body, as it has
355
341
  // side effects that delete styles bindings from the JSON.
356
- var reactNativeStyles = options.stylesType === 'react-native' && componentHasStyles
342
+ const reactNativeStyles = options.stylesType === 'react-native' && componentHasStyles
357
343
  ? (0, react_native_1.collectReactNativeStyles)(json)
358
344
  : undefined;
359
- var propType = json.propsTypeRef || 'any';
360
- var componentArgs = ["props".concat(options.typescript ? ":".concat(propType) : ''), options.forwardRef]
345
+ const propType = json.propsTypeRef || 'any';
346
+ const componentArgs = [`props${options.typescript ? `:${propType}` : ''}`, options.forwardRef]
361
347
  .filter(Boolean)
362
348
  .join(',');
363
- var componentBody = (0, dedent_1.dedent)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n return (\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n );\n "], ["\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n return (\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n );\n "])), options.contextType === 'prop-drill'
364
- ? "const ".concat(exports.contextPropDrillingKey, " = { ...props['").concat(exports.contextPropDrillingKey, "'] };")
365
- : '', hasStateArgument ? '' : refsString, hasState
349
+ const componentBody = (0, dedent_1.dedent) `
350
+ ${options.contextType === 'prop-drill'
351
+ ? `const ${exports.contextPropDrillingKey} = { ...props['${exports.contextPropDrillingKey}'] };`
352
+ : ''}
353
+ ${hasStateArgument ? '' : refsString}
354
+ ${hasState
366
355
  ? options.stateType === 'mobx'
367
- ? "const state = useLocalObservable(() => (".concat((0, get_state_object_string_1.getStateObjectStringFromComponent)(json), "));")
356
+ ? `const state = useLocalObservable(() => (${(0, get_state_object_string_1.getStateObjectStringFromComponent)(json)}));`
368
357
  : options.stateType === 'useState'
369
358
  ? useStateCode
370
359
  : options.stateType === 'solid'
371
- ? "const state = useMutable(".concat((0, get_state_object_string_1.getStateObjectStringFromComponent)(json), ");")
360
+ ? `const state = useMutable(${(0, get_state_object_string_1.getStateObjectStringFromComponent)(json)});`
372
361
  : options.stateType === 'builder'
373
- ? "const state = useBuilderState(".concat((0, get_state_object_string_1.getStateObjectStringFromComponent)(json), ");")
362
+ ? `const state = useBuilderState(${(0, get_state_object_string_1.getStateObjectStringFromComponent)(json)});`
374
363
  : options.stateType === 'variables'
375
364
  ? (0, get_state_object_string_1.getStateObjectStringFromComponent)(json, {
376
365
  format: 'variables',
377
366
  keyPrefix: 'const',
378
- valueMapper: function (code, type, _, key) {
367
+ valueMapper: (code, type, _, key) => {
379
368
  if (type === 'getter')
380
- return "".concat(key, " = function ").concat(code.replace('get ', ''));
369
+ return `${key} = function ${code.replace('get ', '')}`;
381
370
  if (type === 'function')
382
- return "".concat(key, " = function ").concat(code);
371
+ return `${key} = function ${code}`;
383
372
  return code;
384
373
  },
385
374
  })
386
- : "const state = useLocalProxy(".concat((0, get_state_object_string_1.getStateObjectStringFromComponent)(json), ");")
387
- : '', hasStateArgument ? refsString : '', getContextString(json, options), ((_g = json.hooks.init) === null || _g === void 0 ? void 0 : _g.code) ? (0, state_2.processHookCode)({ str: (_h = json.hooks.init) === null || _h === void 0 ? void 0 : _h.code, options: options }) : '', contextStr || '', ((_j = json.hooks.onInit) === null || _j === void 0 ? void 0 : _j.code)
388
- ? "\n const hasInitialized = useRef(false);\n if (!hasInitialized.current) {\n ".concat((0, state_2.processHookCode)({
375
+ : `const state = useLocalProxy(${(0, get_state_object_string_1.getStateObjectStringFromComponent)(json)});`
376
+ : ''}
377
+ ${hasStateArgument ? refsString : ''}
378
+ ${getContextString(json, options)}
379
+ ${((_g = json.hooks.init) === null || _g === void 0 ? void 0 : _g.code) ? (0, state_2.processHookCode)({ str: (_h = json.hooks.init) === null || _h === void 0 ? void 0 : _h.code, options }) : ''}
380
+ ${contextStr || ''}
381
+
382
+ ${((_j = json.hooks.onInit) === null || _j === void 0 ? void 0 : _j.code)
383
+ ? `
384
+ const hasInitialized = useRef(false);
385
+ if (!hasInitialized.current) {
386
+ ${(0, state_2.processHookCode)({
389
387
  str: json.hooks.onInit.code,
390
- options: options,
391
- }), "\n hasInitialized.current = true;\n }\n ")
392
- : '', json.hooks.onEvent
393
- .map(function (hook) {
394
- var eventName = "\"".concat(hook.eventName, "\"");
395
- var handlerName = (0, on_event_1.getOnEventHandlerName)(hook);
396
- return "\n useEffect(() => {\n ".concat(hook.refName, ".current?.addEventListener(").concat(eventName, ", ").concat(handlerName, ");\n return () => ").concat(hook.refName, ".current?.removeEventListener(").concat(eventName, ", ").concat(handlerName, ");\n }, []);\n ");
397
- })
398
- .join('\n'), json.hooks.onMount
399
- .map(function (hook) {
400
- return "useEffect(() => {\n ".concat((0, state_2.processHookCode)({
401
- str: hook.code,
402
- options: options,
403
- }), "\n }, [])");
388
+ options,
389
+ })}
390
+ hasInitialized.current = true;
391
+ }
392
+ `
393
+ : ''}
394
+
395
+ ${json.hooks.onEvent
396
+ .map((hook) => {
397
+ const eventName = `"${hook.eventName}"`;
398
+ const handlerName = (0, on_event_1.getOnEventHandlerName)(hook);
399
+ return `
400
+ useEffect(() => {
401
+ ${hook.refName}.current?.addEventListener(${eventName}, ${handlerName});
402
+ return () => ${hook.refName}.current?.removeEventListener(${eventName}, ${handlerName});
403
+ }, []);
404
+ `;
404
405
  })
405
- .join('\n'), (_l = (_k = json.hooks.onUpdate) === null || _k === void 0 ? void 0 : _k.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 && _l !== void 0 ? _l : '', ((_m = json.hooks.onUnMount) === null || _m === void 0 ? void 0 : _m.code)
406
- ? "useEffect(() => {\n return () => {\n ".concat((0, state_2.processHookCode)({
406
+ .join('\n')}
407
+
408
+ ${json.hooks.onMount
409
+ .map((hook) => `useEffect(() => {
410
+ ${(0, state_2.processHookCode)({
411
+ str: hook.code,
412
+ options,
413
+ })}
414
+ }, [])`)
415
+ .join('\n')}
416
+
417
+ ${(_l = (_k = json.hooks.onUpdate) === null || _k === void 0 ? void 0 : _k.map((hook) => `useEffect(() => {
418
+ ${(0, state_2.processHookCode)({ str: hook.code, options })}
419
+ },
420
+ ${hook.deps ? (0, state_2.processHookCode)({ str: hook.deps, options }) : ''})`).join(';')) !== null && _l !== void 0 ? _l : ''}
421
+
422
+ ${((_m = json.hooks.onUnMount) === null || _m === void 0 ? void 0 : _m.code)
423
+ ? `useEffect(() => {
424
+ return () => {
425
+ ${(0, state_2.processHookCode)({
407
426
  str: json.hooks.onUnMount.code,
408
- options: options,
409
- }), "\n }\n }, [])")
410
- : '', wrap ? (0, helpers_2.openFrag)(options) : '', json.children.map(function (item) { return (0, blocks_1.blockToReact)(item, options, json, wrap, []); }).join('\n'), componentHasStyles && options.stylesType === 'styled-jsx'
411
- ? "<style jsx>{`".concat(css, "`}</style>")
412
- : '', componentHasStyles && options.stylesType === 'style-tag'
413
- ? "<style>{`".concat(css, "`}</style>")
414
- : '', shouldInjectCustomStyles ? "<style>{`".concat(json.style, "`}</style>") : '', wrap ? (0, helpers_2.closeFrag)(options) : '');
415
- var shouldAddUseClientDirective = checkShouldAddUseClientDirective(json, options);
416
- var str = (0, dedent_1.dedent)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "function ", "(", ") {\n ", "\n }", "\n\n ", "\n\n ", "\n\n ", "\n ", "\n\n "], ["\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "function ", "(", ") {\n ", "\n }", "\n\n ", "\n\n ", "\n\n ", "\n ", "\n\n "])), shouldAddUseClientDirective ? "'use client';" : '', getDefaultImport(json, options), styledComponentsCode ? "import styled from 'styled-components';\n" : '', reactLibImports.size
417
- ? "import { ".concat(Array.from(reactLibImports).join(', '), " } from '").concat(options.preact ? 'preact/hooks' : 'react', "'")
418
- : '', options.stylesType === 'twrnc' ? "import tw from 'twrnc';\n" : '', componentHasStyles && options.stylesType === 'emotion' && options.format !== 'lite'
419
- ? "/** @jsx jsx */\n import { jsx } from '@emotion/react'".trim()
420
- : '', !hasState
427
+ options,
428
+ })}
429
+ }
430
+ }, [])`
431
+ : ''}
432
+
433
+ return (
434
+ ${wrap ? (0, helpers_2.openFrag)(options) : ''}
435
+ ${json.children.map((item) => (0, blocks_1.blockToReact)(item, options, json, wrap, [])).join('\n')}
436
+ ${componentHasStyles && options.stylesType === 'styled-jsx'
437
+ ? `<style jsx>{\`${css}\`}</style>`
438
+ : ''}
439
+ ${componentHasStyles && options.stylesType === 'style-tag'
440
+ ? `<style>{\`${css}\`}</style>`
441
+ : ''}
442
+ ${shouldInjectCustomStyles ? `<style>{\`${json.style}\`}</style>` : ''}
443
+ ${wrap ? (0, helpers_2.closeFrag)(options) : ''}
444
+ );
445
+ `;
446
+ const shouldAddUseClientDirective = checkShouldAddUseClientDirective(json, options);
447
+ const str = (0, dedent_1.dedent) `
448
+ ${shouldAddUseClientDirective ? `'use client';` : ''}
449
+ ${getDefaultImport(json, options)}
450
+ ${styledComponentsCode ? `import styled from 'styled-components';\n` : ''}
451
+ ${reactLibImports.size
452
+ ? `import { ${Array.from(reactLibImports).join(', ')} } from '${options.preact ? 'preact/hooks' : 'react'}'`
453
+ : ''}
454
+ ${options.stylesType === 'twrnc' ? `import tw from 'twrnc';\n` : ''}
455
+ ${componentHasStyles && options.stylesType === 'emotion' && options.format !== 'lite'
456
+ ? `/** @jsx jsx */
457
+ import { jsx } from '@emotion/react'`.trim()
458
+ : ''}
459
+ ${!hasState
421
460
  ? ''
422
461
  : options.stateType === 'valtio'
423
- ? "import { useLocalProxy } from 'valtio/utils';"
462
+ ? `import { useLocalProxy } from 'valtio/utils';`
424
463
  : options.stateType === 'solid'
425
- ? "import { useMutable } from 'react-solid-state';"
464
+ ? `import { useMutable } from 'react-solid-state';`
426
465
  : options.stateType === 'mobx'
427
- ? "import { useLocalObservable, observer } from 'mobx-react-lite';"
428
- : '', json.types && options.typescript ? json.types.join('\n') : '', (0, render_imports_1.renderPreComponent)({
466
+ ? `import { useLocalObservable, observer } from 'mobx-react-lite';`
467
+ : ''}
468
+ ${json.types && options.typescript ? json.types.join('\n') : ''}
469
+ ${(0, render_imports_1.renderPreComponent)({
429
470
  explicitImportFileExtension: options.explicitImportFileExtension,
430
471
  component: json,
431
472
  target: options.type === 'native' ? 'reactNative' : 'react',
432
- }), isForwardRef ? "const ".concat(json.name, " = forwardRef").concat(forwardRefType, "(") : '', json.name, componentArgs, componentBody, isForwardRef ? ')' : '', getPropsDefinition({ json: json }), reactNativeStyles
433
- ? "const styles = StyleSheet.create(".concat(json5_1.default.stringify(reactNativeStyles), ");")
434
- : '', styledComponentsCode !== null && styledComponentsCode !== void 0 ? styledComponentsCode : '', isSubComponent
473
+ })}
474
+ ${isForwardRef ? `const ${json.name} = forwardRef${forwardRefType}(` : ''}function ${json.name}(${componentArgs}) {
475
+ ${componentBody}
476
+ }${isForwardRef ? ')' : ''}
477
+
478
+ ${getPropsDefinition({ json })}
479
+
480
+ ${reactNativeStyles
481
+ ? `const styles = StyleSheet.create(${json5_1.default.stringify(reactNativeStyles)});`
482
+ : ''}
483
+
484
+ ${styledComponentsCode !== null && styledComponentsCode !== void 0 ? styledComponentsCode : ''}
485
+ ${isSubComponent
435
486
  ? ''
436
487
  : options.stateType === 'mobx'
437
- ? "\n const observed".concat(json.name, " = observer(").concat(json.name, ");\n export default observed").concat(json.name, ";\n ")
438
- : "export default ".concat(json.name, ";"));
488
+ ? `
489
+ const observed${json.name} = observer(${json.name});
490
+ export default observed${json.name};
491
+ `
492
+ : `export default ${json.name};`}
493
+
494
+ `;
439
495
  return (0, replace_new_lines_in_strings_1.stripNewlinesInStrings)(str);
440
496
  };
441
- var templateObject_1, templateObject_2;