@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,26 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getSignalsCode = void 0;
4
- var function_1 = require("fp-ts/lib/function");
5
- var patterns_1 = require("../../../helpers/patterns");
6
- var helpers_1 = require("./helpers");
7
- var processSignalStateValue = function (_a) {
8
- var options = _a.options, component = _a.component;
9
- var mapValue = (0, helpers_1.updateStateCode)({ options: options, component: component });
10
- return function (_a) {
11
- var key = _a[0], stateVal = _a[1];
4
+ const function_1 = require("fp-ts/lib/function");
5
+ const patterns_1 = require("../../../helpers/patterns");
6
+ const helpers_1 = require("./helpers");
7
+ const processSignalStateValue = ({ options, component, }) => {
8
+ const mapValue = (0, helpers_1.updateStateCode)({ options, component });
9
+ return ([key, stateVal]) => {
12
10
  if (!stateVal) {
13
11
  return '';
14
12
  }
15
- var getDefaultCase = function () {
16
- return (0, function_1.pipe)(value, mapValue, function (x) { return "const [".concat(key, ", ").concat((0, helpers_1.getStateSetterName)(key), "] = createSignal(").concat(x, ")"); });
17
- };
18
- var value = stateVal.code;
19
- var type = stateVal.type;
13
+ const getDefaultCase = () => (0, function_1.pipe)(value, mapValue, (x) => `const [${key}, ${(0, helpers_1.getStateSetterName)(key)}] = createSignal(${x})`);
14
+ const value = stateVal.code;
15
+ const type = stateVal.type;
20
16
  if (typeof value === 'string') {
21
17
  switch (type) {
22
18
  case 'getter':
23
- return (0, function_1.pipe)(value, mapValue, patterns_1.extractGetterCodeBlock, function (x) { return "const ".concat(key, " = createMemo(() => {").concat(x, "})"); });
19
+ return (0, function_1.pipe)(value, mapValue, patterns_1.extractGetterCodeBlock, (x) => `const ${key} = createMemo(() => {${x}})`);
24
20
  case 'function':
25
21
  return mapValue(value);
26
22
  case 'method':
@@ -34,27 +30,24 @@ var processSignalStateValue = function (_a) {
34
30
  }
35
31
  };
36
32
  };
37
- var LINE_ITEM_DELIMITER = '\n\n\n';
38
- var getSignalsCode = function (_a) {
39
- var json = _a.json, options = _a.options, state = _a.state;
40
- return Object.entries(state)
41
- .map(processSignalStateValue({ options: options, component: json }))
42
- /**
43
- * We need to sort state so that signals are at the top.
44
- */
45
- .sort(function (a, b) {
46
- var aHasSignal = a.includes('createSignal(');
47
- var bHasSignal = b.includes('createSignal(');
48
- if (aHasSignal && !bHasSignal) {
49
- return -1;
50
- }
51
- else if (!aHasSignal && bHasSignal) {
52
- return 1;
53
- }
54
- else {
55
- return 0;
56
- }
57
- })
58
- .join(LINE_ITEM_DELIMITER);
59
- };
33
+ const LINE_ITEM_DELIMITER = '\n\n\n';
34
+ const getSignalsCode = ({ json, options, state, }) => Object.entries(state)
35
+ .map(processSignalStateValue({ options, component: json }))
36
+ /**
37
+ * We need to sort state so that signals are at the top.
38
+ */
39
+ .sort((a, b) => {
40
+ const aHasSignal = a.includes('createSignal(');
41
+ const bHasSignal = b.includes('createSignal(');
42
+ if (aHasSignal && !bHasSignal) {
43
+ return -1;
44
+ }
45
+ else if (!aHasSignal && bHasSignal) {
46
+ return 1;
47
+ }
48
+ else {
49
+ return 0;
50
+ }
51
+ })
52
+ .join(LINE_ITEM_DELIMITER);
60
53
  exports.getSignalsCode = getSignalsCode;
@@ -1,64 +1,51 @@
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
- };
13
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
- if (ar || !(i in from)) {
16
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
- ar[i] = from[i];
18
- }
19
- }
20
- return to.concat(ar || Array.prototype.slice.call(from));
21
- };
22
2
  Object.defineProperty(exports, "__esModule", { value: true });
23
3
  exports.getState = void 0;
24
- var function_1 = require("fp-ts/lib/function");
25
- var get_state_object_string_1 = require("../../../helpers/get-state-object-string");
26
- var state_1 = require("../../../helpers/state");
27
- var helpers_1 = require("./helpers");
28
- var signals_1 = require("./signals");
29
- var store_1 = require("./store");
30
- var getState = function (_a) {
31
- var json = _a.json, options = _a.options;
32
- var hasState = (0, state_1.checkHasState)(json);
4
+ const function_1 = require("fp-ts/lib/function");
5
+ const get_state_object_string_1 = require("../../../helpers/get-state-object-string");
6
+ const state_1 = require("../../../helpers/state");
7
+ const helpers_1 = require("./helpers");
8
+ const signals_1 = require("./signals");
9
+ const store_1 = require("./store");
10
+ const getState = ({ json, options, }) => {
11
+ const hasState = (0, state_1.checkHasState)(json);
33
12
  if (!hasState) {
34
13
  return undefined;
35
14
  }
36
15
  // unbundle state in case the user provides a type override of one of the state values
37
- var _b = Object.entries(json.state).reduce(function (acc, _a) {
38
- var _b, _c, _d;
39
- var key = _a[0], value = _a[1];
40
- var stateType = (0, helpers_1.getStateTypeForValue)({ value: key, component: json, options: options });
16
+ const { mutable, signal, store } = Object.entries(json.state).reduce((acc, [key, value]) => {
17
+ const stateType = (0, helpers_1.getStateTypeForValue)({ value: key, component: json, options });
41
18
  switch (stateType) {
42
19
  case 'mutable':
43
- return __assign(__assign({}, acc), { mutable: __assign(__assign({}, acc.mutable), (_b = {}, _b[key] = value, _b)) });
20
+ return { ...acc, mutable: { ...acc.mutable, [key]: value } };
44
21
  case 'signals':
45
- return __assign(__assign({}, acc), { signal: __assign(__assign({}, acc.signal), (_c = {}, _c[key] = value, _c)) });
22
+ return { ...acc, signal: { ...acc.signal, [key]: value } };
46
23
  case 'store':
47
- return __assign(__assign({}, acc), { store: __assign(__assign({}, acc.store), (_d = {}, _d[key] = value, _d)) });
24
+ return { ...acc, store: { ...acc.store, [key]: value } };
48
25
  }
49
- }, { mutable: {}, signal: {}, store: {} }), mutable = _b.mutable, signal = _b.signal, store = _b.store;
50
- var hasMutableState = Object.keys(mutable).length > 0;
51
- var hasSignalState = Object.keys(signal).length > 0;
52
- var hasStoreState = Object.keys(store).length > 0;
53
- var mutableStateStr = hasMutableState
54
- ? (0, function_1.pipe)(mutable, get_state_object_string_1.getMemberObjectString, function (str) { return "const state = createMutable(".concat(str, ");"); })
26
+ }, { mutable: {}, signal: {}, store: {} });
27
+ const hasMutableState = Object.keys(mutable).length > 0;
28
+ const hasSignalState = Object.keys(signal).length > 0;
29
+ const hasStoreState = Object.keys(store).length > 0;
30
+ const mutableStateStr = hasMutableState
31
+ ? (0, function_1.pipe)(mutable, get_state_object_string_1.getMemberObjectString, (str) => `const state = createMutable(${str});`)
55
32
  : '';
56
- var signalStateStr = hasSignalState ? (0, signals_1.getSignalsCode)({ json: json, options: options, state: signal }) : '';
57
- var storeStateStr = hasStoreState ? (0, store_1.getStoreCode)({ json: json, options: options, state: store }) : '';
58
- var stateStr = "\n ".concat(mutableStateStr, "\n ").concat(signalStateStr, "\n ").concat(storeStateStr, "\n ");
59
- var importObj = {
60
- store: __spreadArray(__spreadArray([], (hasMutableState ? ['createMutable'] : []), true), (hasStoreState ? ['createStore', 'reconcile'] : []), true),
61
- solidjs: __spreadArray(__spreadArray([], (hasSignalState ? ['createSignal', 'createMemo'] : []), true), (hasStoreState ? ['createEffect', 'on'] : []), true),
33
+ const signalStateStr = hasSignalState ? (0, signals_1.getSignalsCode)({ json, options, state: signal }) : '';
34
+ const storeStateStr = hasStoreState ? (0, store_1.getStoreCode)({ json, options, state: store }) : '';
35
+ const stateStr = `
36
+ ${mutableStateStr}
37
+ ${signalStateStr}
38
+ ${storeStateStr}
39
+ `;
40
+ const importObj = {
41
+ store: [
42
+ ...(hasMutableState ? ['createMutable'] : []),
43
+ ...(hasStoreState ? ['createStore', 'reconcile'] : []),
44
+ ],
45
+ solidjs: [
46
+ ...(hasSignalState ? ['createSignal', 'createMemo'] : []),
47
+ ...(hasStoreState ? ['createEffect', 'on'] : []),
48
+ ],
62
49
  };
63
50
  return {
64
51
  str: stateStr,
@@ -1,69 +1,63 @@
1
1
  "use strict";
2
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
- if (ar || !(i in from)) {
5
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
- ar[i] = from[i];
7
- }
8
- }
9
- return to.concat(ar || Array.prototype.slice.call(from));
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.getStoreCode = void 0;
13
- var core_1 = require("@babel/core");
14
- var function_1 = require("fp-ts/lib/function");
15
- var babel_transform_1 = require("../../../helpers/babel-transform");
16
- var capitalize_1 = require("../../../helpers/capitalize");
17
- var patterns_1 = require("../../../helpers/patterns");
18
- var helpers_1 = require("./helpers");
19
- var collectUsedStateAndPropsInFunction = function (fnValue) {
20
- var stateUsed = new Set();
21
- var propsUsed = new Set();
4
+ const core_1 = require("@babel/core");
5
+ const function_1 = require("fp-ts/lib/function");
6
+ const babel_transform_1 = require("../../../helpers/babel-transform");
7
+ const capitalize_1 = require("../../../helpers/capitalize");
8
+ const patterns_1 = require("../../../helpers/patterns");
9
+ const helpers_1 = require("./helpers");
10
+ const collectUsedStateAndPropsInFunction = (fnValue) => {
11
+ const stateUsed = new Set();
12
+ const propsUsed = new Set();
22
13
  (0, babel_transform_1.babelTransformExpression)(fnValue, {
23
- MemberExpression: function (path) {
24
- var node = path.node;
14
+ MemberExpression(path) {
15
+ const { node } = path;
25
16
  if (core_1.types.isIdentifier(node.object)) {
26
17
  if (core_1.types.isIdentifier(node.property)) {
27
18
  if (node.object.name === 'state') {
28
- stateUsed.add("state.".concat(node.property.name));
19
+ stateUsed.add(`state.${node.property.name}`);
29
20
  }
30
21
  else if (node.object.name === 'props') {
31
- propsUsed.add("props.".concat(node.property.name));
22
+ propsUsed.add(`props.${node.property.name}`);
32
23
  }
33
24
  }
34
25
  }
35
26
  },
36
27
  });
37
- return { stateUsed: stateUsed, propsUsed: propsUsed };
28
+ return { stateUsed, propsUsed };
38
29
  };
39
- var getStoreCode = function (_a) {
40
- var component = _a.json, options = _a.options, state = _a.state;
41
- var mapValue = (0, helpers_1.updateStateCode)({ options: options, component: component });
42
- var stateUpdater = function (_a) {
43
- var key = _a[0], stateVal = _a[1];
30
+ const getStoreCode = ({ json: component, options, state, }) => {
31
+ const mapValue = (0, helpers_1.updateStateCode)({ options, component });
32
+ const stateUpdater = ([key, stateVal]) => {
44
33
  if (!stateVal) {
45
34
  return '';
46
35
  }
47
- var getCreateStoreStr = function (initialValue) {
48
- return "const [".concat(key, ", ").concat((0, helpers_1.getStateSetterName)(key), "] = createStore(").concat(initialValue, ")");
49
- };
50
- var getDefaultCase = function () { return (0, function_1.pipe)(value, mapValue, getCreateStoreStr); };
51
- var value = stateVal.code;
52
- var type = stateVal.type;
36
+ const getCreateStoreStr = (initialValue) => `const [${key}, ${(0, helpers_1.getStateSetterName)(key)}] = createStore(${initialValue})`;
37
+ const getDefaultCase = () => (0, function_1.pipe)(value, mapValue, getCreateStoreStr);
38
+ const value = stateVal.code;
39
+ const type = stateVal.type;
53
40
  if (typeof value === 'string') {
54
41
  switch (type) {
55
42
  case 'getter':
56
- var getterValueAsFunction = (0, patterns_1.replaceGetterWithFunction)(value);
57
- var _b = collectUsedStateAndPropsInFunction(getterValueAsFunction), stateUsed = _b.stateUsed, propsUsed = _b.propsUsed;
58
- var fnValueWithMappedRefs = mapValue(getterValueAsFunction);
59
- var FUNCTION_NAME = "update".concat((0, capitalize_1.capitalize)(key));
60
- var deps = __spreadArray(__spreadArray([], Array.from(stateUsed).map((0, helpers_1.updateStateCode)({
61
- options: options,
62
- component: component,
63
- // there are no setters in deps
64
- updateSetters: false,
65
- })), true), Array.from(propsUsed), true).join(', ');
66
- return "\n const ".concat(FUNCTION_NAME, " = ").concat(fnValueWithMappedRefs, "\n ").concat(getCreateStoreStr("".concat(FUNCTION_NAME, "()")), "\n createEffect(on(() => [").concat(deps, "], () => ").concat((0, helpers_1.getStateSetterName)(key), "(reconcile(").concat(FUNCTION_NAME, "()))))\n ");
43
+ const getterValueAsFunction = (0, patterns_1.replaceGetterWithFunction)(value);
44
+ const { stateUsed, propsUsed } = collectUsedStateAndPropsInFunction(getterValueAsFunction);
45
+ const fnValueWithMappedRefs = mapValue(getterValueAsFunction);
46
+ const FUNCTION_NAME = `update${(0, capitalize_1.capitalize)(key)}`;
47
+ const deps = [
48
+ ...Array.from(stateUsed).map((0, helpers_1.updateStateCode)({
49
+ options,
50
+ component,
51
+ // there are no setters in deps
52
+ updateSetters: false,
53
+ })),
54
+ ...Array.from(propsUsed),
55
+ ].join(', ');
56
+ return `
57
+ const ${FUNCTION_NAME} = ${fnValueWithMappedRefs}
58
+ ${getCreateStoreStr(`${FUNCTION_NAME}()`)}
59
+ createEffect(on(() => [${deps}], () => ${(0, helpers_1.getStateSetterName)(key)}(reconcile(${FUNCTION_NAME}()))))
60
+ `;
67
61
  case 'function':
68
62
  return mapValue(value);
69
63
  case 'method':
@@ -79,4 +73,4 @@ var getStoreCode = function (_a) {
79
73
  return Object.entries(state).map(stateUpdater).join(LINE_ITEM_DELIMITER);
80
74
  };
81
75
  exports.getStoreCode = getStoreCode;
82
- var LINE_ITEM_DELIMITER = '\n\n\n';
76
+ const LINE_ITEM_DELIMITER = '\n\n\n';
@@ -3,11 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.collectClassString = void 0;
4
4
  // This should really be a preprocessor mapping the `class` attribute binding based on what other values have
5
5
  // to make this more pluggable
6
- function collectClassString(json, bindingOpenChar, bindingCloseChar) {
6
+ function collectClassString(json, bindingOpenChar = '{', bindingCloseChar = '}') {
7
7
  var _a, _b;
8
- if (bindingOpenChar === void 0) { bindingOpenChar = '{'; }
9
- if (bindingCloseChar === void 0) { bindingCloseChar = '}'; }
10
- var staticClasses = [];
8
+ const staticClasses = [];
11
9
  if (json.properties.class) {
12
10
  staticClasses.push(json.properties.class);
13
11
  delete json.properties.class;
@@ -16,7 +14,7 @@ function collectClassString(json, bindingOpenChar, bindingCloseChar) {
16
14
  staticClasses.push(json.properties.className);
17
15
  delete json.properties.className;
18
16
  }
19
- var dynamicClasses = [];
17
+ const dynamicClasses = [];
20
18
  if (typeof ((_a = json.bindings.class) === null || _a === void 0 ? void 0 : _a.code) === 'string') {
21
19
  dynamicClasses.push(json.bindings.class.code);
22
20
  delete json.bindings.class;
@@ -25,18 +23,18 @@ function collectClassString(json, bindingOpenChar, bindingCloseChar) {
25
23
  dynamicClasses.push(json.bindings.className.code);
26
24
  delete json.bindings.className;
27
25
  }
28
- var staticClassesString = staticClasses.join(' ');
29
- var dynamicClassesString = dynamicClasses.join(" + ' ' + ");
30
- var hasStaticClasses = Boolean(staticClasses.length);
31
- var hasDynamicClasses = Boolean(dynamicClasses.length);
26
+ const staticClassesString = staticClasses.join(' ');
27
+ const dynamicClassesString = dynamicClasses.join(" + ' ' + ");
28
+ const hasStaticClasses = Boolean(staticClasses.length);
29
+ const hasDynamicClasses = Boolean(dynamicClasses.length);
32
30
  if (hasStaticClasses && !hasDynamicClasses) {
33
- return "\"".concat(staticClassesString, "\"");
31
+ return `"${staticClassesString}"`;
34
32
  }
35
33
  if (hasDynamicClasses && !hasStaticClasses) {
36
- return "".concat(bindingOpenChar).concat(dynamicClassesString).concat(bindingCloseChar);
34
+ return `${bindingOpenChar}${dynamicClassesString}${bindingCloseChar}`;
37
35
  }
38
36
  if (hasDynamicClasses && hasStaticClasses) {
39
- return "".concat(bindingOpenChar, "\"").concat(staticClassesString, " \" + ").concat(dynamicClassesString).concat(bindingCloseChar);
37
+ return `${bindingOpenChar}"${staticClassesString} " + ${dynamicClassesString}${bindingCloseChar}`;
40
38
  }
41
39
  return null;
42
40
  }