@builder.io/mitosis 0.0.77 → 0.0.79

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 (103) hide show
  1. package/dist/src/generators/html.js +6 -3
  2. package/dist/src/generators/qwik/component-generator.js +51 -46
  3. package/dist/src/generators/qwik/stable-inject.d.ts +5 -0
  4. package/dist/src/generators/qwik/stable-inject.js +50 -0
  5. package/dist/src/generators/react/state.js +6 -4
  6. package/dist/src/generators/solid/state/signals.js +6 -7
  7. package/dist/src/generators/solid/state/store.js +6 -7
  8. package/dist/src/helpers/babel-transform.d.ts +0 -1
  9. package/dist/src/helpers/babel-transform.js +2 -3
  10. package/dist/src/helpers/get-state-object-string.js +1 -5
  11. package/dist/src/helpers/handle-missing-state.js +1 -1
  12. package/dist/src/helpers/plugins/process-code.js +1 -1
  13. package/dist/src/helpers/process-http-requests.js +1 -1
  14. package/dist/src/index.d.ts +1 -0
  15. package/dist/src/index.js +1 -0
  16. package/dist/src/parsers/builder/builder.d.ts +34 -0
  17. package/dist/src/parsers/{builder.js → builder/builder.js} +20 -15
  18. package/dist/src/parsers/{helpers/state.d.ts → builder/helpers.d.ts} +2 -2
  19. package/dist/src/parsers/builder/helpers.js +26 -0
  20. package/dist/src/parsers/builder/index.d.ts +1 -0
  21. package/dist/src/parsers/builder/index.js +17 -0
  22. package/dist/src/parsers/jsx/function-parser.js +56 -75
  23. package/dist/src/parsers/jsx/helpers.d.ts +1 -0
  24. package/dist/src/parsers/jsx/helpers.js +6 -2
  25. package/dist/src/parsers/jsx/{metadata.d.ts → hooks.d.ts} +1 -1
  26. package/dist/src/parsers/jsx/{metadata.js → hooks.js} +5 -5
  27. package/dist/src/parsers/jsx/index.d.ts +1 -2
  28. package/dist/src/parsers/jsx/index.js +3 -5
  29. package/dist/src/parsers/jsx/jsx.js +4 -2
  30. package/dist/src/parsers/jsx/state.d.ts +2 -4
  31. package/dist/src/parsers/jsx/state.js +50 -27
  32. package/dist/src/parsers/svelte/css/index.d.ts +3 -0
  33. package/dist/src/parsers/svelte/css/index.js +8 -0
  34. package/dist/src/parsers/svelte/helpers/bindings.d.ts +3 -0
  35. package/dist/src/parsers/svelte/helpers/bindings.js +75 -0
  36. package/dist/src/parsers/svelte/helpers/children.d.ts +5 -0
  37. package/dist/src/parsers/svelte/helpers/children.js +23 -0
  38. package/dist/src/parsers/svelte/helpers/expressions.d.ts +3 -0
  39. package/dist/src/parsers/svelte/helpers/expressions.js +22 -0
  40. package/dist/src/parsers/svelte/helpers/hooks.d.ts +2 -0
  41. package/dist/src/parsers/svelte/helpers/hooks.js +15 -0
  42. package/dist/src/parsers/svelte/helpers/mitosis-node.d.ts +2 -0
  43. package/dist/src/parsers/svelte/helpers/mitosis-node.js +15 -0
  44. package/dist/src/parsers/svelte/helpers/post-process.d.ts +9 -0
  45. package/dist/src/parsers/svelte/helpers/post-process.js +177 -0
  46. package/dist/src/parsers/svelte/helpers/string.d.ts +3 -0
  47. package/dist/src/parsers/svelte/helpers/string.js +26 -0
  48. package/dist/src/parsers/svelte/html/actions.d.ts +3 -0
  49. package/dist/src/parsers/svelte/html/actions.js +40 -0
  50. package/dist/src/parsers/svelte/html/each.d.ts +35 -0
  51. package/dist/src/parsers/svelte/html/each.js +24 -0
  52. package/dist/src/parsers/svelte/html/element.d.ts +3 -0
  53. package/dist/src/parsers/svelte/html/element.js +222 -0
  54. package/dist/src/parsers/svelte/html/fragment.d.ts +3 -0
  55. package/dist/src/parsers/svelte/html/fragment.js +16 -0
  56. package/dist/src/parsers/svelte/html/if-else.d.ts +3 -0
  57. package/dist/src/parsers/svelte/html/if-else.js +37 -0
  58. package/dist/src/parsers/svelte/html/index.d.ts +5 -0
  59. package/dist/src/parsers/svelte/html/index.js +79 -0
  60. package/dist/src/parsers/svelte/html/mustache-tag.d.ts +3 -0
  61. package/dist/src/parsers/svelte/html/mustache-tag.js +23 -0
  62. package/dist/src/parsers/svelte/html/slot.d.ts +3 -0
  63. package/dist/src/parsers/svelte/html/slot.js +25 -0
  64. package/dist/src/parsers/svelte/html/text.d.ts +30 -0
  65. package/dist/src/parsers/svelte/html/text.js +21 -0
  66. package/dist/src/parsers/svelte/index.d.ts +2 -0
  67. package/dist/src/parsers/svelte/index.js +105 -0
  68. package/dist/src/parsers/svelte/instance/context.d.ts +5 -0
  69. package/dist/src/parsers/svelte/instance/context.js +59 -0
  70. package/dist/src/parsers/svelte/instance/expressions.d.ts +3 -0
  71. package/dist/src/parsers/svelte/instance/expressions.js +11 -0
  72. package/dist/src/parsers/svelte/instance/functions.d.ts +3 -0
  73. package/dist/src/parsers/svelte/instance/functions.js +61 -0
  74. package/dist/src/parsers/svelte/instance/hooks.d.ts +5 -0
  75. package/dist/src/parsers/svelte/instance/hooks.js +33 -0
  76. package/dist/src/parsers/svelte/instance/imports.d.ts +3 -0
  77. package/dist/src/parsers/svelte/instance/imports.js +42 -0
  78. package/dist/src/parsers/svelte/instance/index.d.ts +3 -0
  79. package/dist/src/parsers/svelte/instance/index.js +125 -0
  80. package/dist/src/parsers/svelte/instance/properties.d.ts +3 -0
  81. package/dist/src/parsers/svelte/instance/properties.js +34 -0
  82. package/dist/src/parsers/svelte/instance/reactive.d.ts +3 -0
  83. package/dist/src/parsers/svelte/instance/reactive.js +24 -0
  84. package/dist/src/parsers/svelte/instance/references.d.ts +4 -0
  85. package/dist/src/parsers/svelte/instance/references.js +68 -0
  86. package/dist/src/parsers/svelte/instance/statements.d.ts +3 -0
  87. package/dist/src/parsers/svelte/instance/statements.js +10 -0
  88. package/dist/src/parsers/svelte/module/index.d.ts +3 -0
  89. package/dist/src/parsers/svelte/module/index.js +46 -0
  90. package/dist/src/parsers/svelte/types/index.d.ts +4 -0
  91. package/dist/src/parsers/svelte/types/index.js +2 -0
  92. package/dist/src/parsers/svelte/typescript/index.d.ts +7 -0
  93. package/dist/src/parsers/svelte/typescript/index.js +130 -0
  94. package/dist/src/plugins/compile-away-builder-components.d.ts +2 -5
  95. package/dist/src/types/config.d.ts +0 -5
  96. package/dist/src/types/mitosis-component.d.ts +3 -11
  97. package/dist/src/types/mitosis-component.js +0 -11
  98. package/dist/tsconfig.build.tsbuildinfo +1 -1
  99. package/package.json +14 -1
  100. package/dist/src/parsers/builder.d.ts +0 -104
  101. package/dist/src/parsers/constants/outdated-prefixes.d.ts +0 -10
  102. package/dist/src/parsers/constants/outdated-prefixes.js +0 -13
  103. package/dist/src/parsers/helpers/state.js +0 -30
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMitosisNode = void 0;
4
+ function createMitosisNode() {
5
+ return {
6
+ '@type': '@builder.io/mitosis/node',
7
+ name: '',
8
+ meta: {},
9
+ scope: {},
10
+ children: [],
11
+ bindings: {},
12
+ properties: {},
13
+ };
14
+ }
15
+ exports.createMitosisNode = createMitosisNode;
@@ -0,0 +1,9 @@
1
+ import type { SveltosisComponent } from '../types';
2
+ export declare function preventNameCollissions(json: SveltosisComponent, input: string, arguments_: string[], prepend?: string, append?: string): {
3
+ code: string;
4
+ arguments: string[];
5
+ } | {
6
+ code: string;
7
+ arguments?: undefined;
8
+ };
9
+ export declare function postProcess(json: SveltosisComponent): void;
@@ -0,0 +1,177 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.postProcess = exports.preventNameCollissions = void 0;
24
+ var bindings_1 = require("./bindings");
25
+ function preventNameCollissions(json, input, arguments_, prepend, append) {
26
+ if (prepend === void 0) { prepend = ''; }
27
+ if (append === void 0) { append = '_'; }
28
+ var output = input;
29
+ var argumentsOutput = arguments_;
30
+ var keys = __spreadArray(__spreadArray(__spreadArray([], Object.keys(json.props), true), Object.keys(json.state), true), Object.keys(json.refs), true);
31
+ var _loop_1 = function (key) {
32
+ var regex = function () { return new RegExp("(?<!=(?:\\s))".concat(key, "\\b"), 'g'); };
33
+ var isInArguments = false;
34
+ argumentsOutput.forEach(function (argument, index) {
35
+ if (regex().test(argument)) {
36
+ isInArguments = true;
37
+ argumentsOutput.splice(index, 1, argument.replace(regex(), "".concat(prepend).concat(key).concat(append)));
38
+ }
39
+ });
40
+ var isInOutput = regex().test(output);
41
+ if (isInArguments && isInOutput) {
42
+ output = output.replace(regex(), "".concat(prepend).concat(key).concat(append));
43
+ }
44
+ };
45
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
46
+ var key = keys_1[_i];
47
+ _loop_1(key);
48
+ }
49
+ return (argumentsOutput === null || argumentsOutput === void 0 ? void 0 : argumentsOutput.length)
50
+ ? {
51
+ code: output,
52
+ arguments: argumentsOutput,
53
+ }
54
+ : { code: output };
55
+ }
56
+ exports.preventNameCollissions = preventNameCollissions;
57
+ function prependProperties(json, input) {
58
+ var output = input;
59
+ var propertyKeys = Object.keys(json.props);
60
+ for (var _i = 0, propertyKeys_1 = propertyKeys; _i < propertyKeys_1.length; _i++) {
61
+ var property = propertyKeys_1[_i];
62
+ var regex = new RegExp("(?<!(\\.|'|\"|`))\\b(props\\.)?".concat(property, "\\b"), 'g');
63
+ if (regex.test(output)) {
64
+ output = output.replace(regex, "props.".concat(property));
65
+ }
66
+ }
67
+ return output;
68
+ }
69
+ function prependState(json, input) {
70
+ var output = input;
71
+ var stateKeys = Object.keys(json.state);
72
+ for (var _i = 0, stateKeys_1 = stateKeys; _i < stateKeys_1.length; _i++) {
73
+ var state = stateKeys_1[_i];
74
+ var regex = new RegExp("(?<!(\\.|'|\"|`|function ))\\b(state\\.)?".concat(state, "\\b(?!(\\s+)?\\()"), 'g');
75
+ if (regex.test(output)) {
76
+ output = output.replace(regex, "state.".concat(state));
77
+ }
78
+ }
79
+ return output;
80
+ }
81
+ function addPropertiesAndState(json, input) {
82
+ var output = input;
83
+ output = prependProperties(json, output);
84
+ output = prependState(json, output);
85
+ return output;
86
+ }
87
+ function addPropertiesAndStateToNode(json, node) {
88
+ var _a, _b, _c;
89
+ for (var _i = 0, _d = Object.keys(node.bindings); _i < _d.length; _i++) {
90
+ var key = _d[_i];
91
+ if (Object.prototype.hasOwnProperty.call(node.bindings, key)) {
92
+ node.bindings[key] = {
93
+ code: addPropertiesAndState(json, (_b = (_a = node.bindings[key]) === null || _a === void 0 ? void 0 : _a.code) !== null && _b !== void 0 ? _b : '').trim(),
94
+ type: (_c = node.bindings[key]) === null || _c === void 0 ? void 0 : _c.type,
95
+ };
96
+ }
97
+ }
98
+ }
99
+ function postProcessState(json) {
100
+ for (var _i = 0, _a = Object.keys(json.state); _i < _a.length; _i++) {
101
+ var key = _a[_i];
102
+ var item = json.state[key];
103
+ if ((item === null || item === void 0 ? void 0 : item.type) !== 'property') {
104
+ var output = preventNameCollissions(json, item.code, (item === null || item === void 0 ? void 0 : item.arguments) || []);
105
+ output.code = addPropertiesAndState(json, output.code);
106
+ json.state[key] = __assign(__assign({}, item), output);
107
+ }
108
+ }
109
+ }
110
+ function postProcessChildren(json, children) {
111
+ var _a;
112
+ for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
113
+ var node = children_1[_i];
114
+ addPropertiesAndStateToNode(json, node);
115
+ (0, bindings_1.processBindings)(json, node);
116
+ var children_2 = [];
117
+ if (((_a = node.children) === null || _a === void 0 ? void 0 : _a.length) > 0) {
118
+ children_2 = node.children;
119
+ }
120
+ var metaValues = (Object.values(node.meta) || []);
121
+ if (metaValues.length > 0) {
122
+ var metaChildren = metaValues.filter(function (item) {
123
+ return (item === null || item === void 0 ? void 0 : item['@type']) === '@builder.io/mitosis/node';
124
+ });
125
+ children_2 = __spreadArray(__spreadArray([], children_2, true), metaChildren, true);
126
+ }
127
+ postProcessChildren(json, children_2);
128
+ }
129
+ }
130
+ function addPropertiesAndStateToHook(json, hook) {
131
+ return {
132
+ code: addPropertiesAndState(json, hook.code),
133
+ deps: addPropertiesAndState(json, hook.deps || ''),
134
+ };
135
+ }
136
+ function postProcessHooks(json) {
137
+ var hookKeys = Object.keys(json.hooks);
138
+ var _loop_2 = function (key) {
139
+ var hook = json.hooks[key];
140
+ if (!hook) {
141
+ return "continue";
142
+ }
143
+ if (key === 'onUpdate' && Array.isArray(hook)) {
144
+ hook.forEach(function (item, index) {
145
+ var _a;
146
+ (_a = json.hooks[key]) === null || _a === void 0 ? void 0 : _a.splice(index, 1, addPropertiesAndStateToHook(json, item));
147
+ });
148
+ return "continue";
149
+ }
150
+ json.hooks[key] = addPropertiesAndStateToHook(json, hook);
151
+ };
152
+ for (var _i = 0, hookKeys_1 = hookKeys; _i < hookKeys_1.length; _i++) {
153
+ var key = hookKeys_1[_i];
154
+ _loop_2(key);
155
+ }
156
+ }
157
+ function postProcessContext(json) {
158
+ var _a;
159
+ for (var _i = 0, _b = Object.keys(json.context.set); _i < _b.length; _i++) {
160
+ var key = _b[_i];
161
+ if ((_a = json.context.set[key]) === null || _a === void 0 ? void 0 : _a.ref) {
162
+ json.context.set[key].ref = addPropertiesAndState(json, json.context.set[key].ref);
163
+ }
164
+ }
165
+ }
166
+ function postProcess(json) {
167
+ // Call preventNameCollissions here, before the rest (where it applies -- function arguments for now)
168
+ // State (everything except type === 'property')
169
+ postProcessState(json);
170
+ // Children
171
+ postProcessChildren(json, json.children);
172
+ // Hooks
173
+ postProcessHooks(json);
174
+ // Context
175
+ postProcessContext(json);
176
+ }
177
+ exports.postProcess = postProcess;
@@ -0,0 +1,3 @@
1
+ export declare function uniqueName(existingItems: string[], reference: string): string;
2
+ export declare function insertAt(string_: string, sub: string, pos: number): string;
3
+ export declare function stripQuotes(string_: string): string;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stripQuotes = exports.insertAt = exports.uniqueName = void 0;
4
+ // helper functions for strings
5
+ var lodash_1 = require("lodash");
6
+ function uniqueName(existingItems, reference) {
7
+ var index = 0;
8
+ var match = false;
9
+ while (false === match) {
10
+ if (!existingItems.includes(reference)) {
11
+ match = true;
12
+ break;
13
+ }
14
+ index++;
15
+ }
16
+ return (0, lodash_1.camelCase)("".concat(reference).concat(index));
17
+ }
18
+ exports.uniqueName = uniqueName;
19
+ function insertAt(string_, sub, pos) {
20
+ return "".concat(string_.slice(0, pos)).concat(sub).concat(string_.slice(pos));
21
+ }
22
+ exports.insertAt = insertAt;
23
+ function stripQuotes(string_) {
24
+ return string_.replace(/["']+/g, '');
25
+ }
26
+ exports.stripQuotes = stripQuotes;
@@ -0,0 +1,3 @@
1
+ import type { Element } from 'svelte/types/compiler/interfaces';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare function parseAction(json: SveltosisComponent, nodeReference: string, attribute: Element['attributes'][number]): void;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseAction = void 0;
4
+ var string_1 = require("../helpers/string");
5
+ var astring_1 = require("astring");
6
+ function parseAction(json, nodeReference, attribute) {
7
+ var _a, _b;
8
+ var methodName = attribute.name;
9
+ var parameters = '';
10
+ if (['Identifier', 'ObjectExpression'].includes((_a = attribute.expression) === null || _a === void 0 ? void 0 : _a.type)) {
11
+ parameters = (0, astring_1.generate)(attribute.expression);
12
+ }
13
+ var actionHandler = (0, string_1.uniqueName)(Object.keys(json.state), 'actionHandler');
14
+ json.state[actionHandler] = {
15
+ code: 'null',
16
+ type: 'property',
17
+ };
18
+ var initHandler = "if (".concat(nodeReference, ") { ").concat(actionHandler, " = ").concat(methodName, "(").concat(nodeReference, ", ").concat(parameters, "); };\n");
19
+ // Handle Mount
20
+ var onMountCode = ((_b = json.hooks.onMount) === null || _b === void 0 ? void 0 : _b.code) || '';
21
+ json.hooks.onMount = {
22
+ code: "".concat(onMountCode, "\n").concat(initHandler, ";\n"),
23
+ };
24
+ // Handle Destroy / Re-Mount
25
+ var onReferenceUpdate = "\n if (!".concat(nodeReference, " && ").concat(actionHandler, ") { \n ").concat(actionHandler, "?.destroy(); \n ").concat(actionHandler, " = null; \n } else if (").concat(nodeReference, " && !").concat(actionHandler, ") { \n ").concat(initHandler, " \n };\n\n ");
26
+ json.hooks.onUpdate = json.hooks.onUpdate || [];
27
+ json.hooks.onUpdate.push({
28
+ code: onReferenceUpdate,
29
+ deps: "[".concat(nodeReference, "]"),
30
+ });
31
+ // Handle Update
32
+ if (parameters) {
33
+ var onUpdate = "".concat(actionHandler, "?.update(").concat(parameters, ")\n");
34
+ json.hooks.onUpdate.push({
35
+ code: onUpdate,
36
+ deps: "[".concat(parameters, "]"),
37
+ });
38
+ }
39
+ }
40
+ exports.parseAction = parseAction;
@@ -0,0 +1,35 @@
1
+ import type { TemplateNode } from 'svelte/types/compiler/interfaces';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare function parseEach(json: SveltosisComponent, node: TemplateNode): {
4
+ name: string;
5
+ scope: {
6
+ forName: any;
7
+ };
8
+ bindings: {
9
+ each: {
10
+ code: any;
11
+ };
12
+ };
13
+ children: import("../../..").MitosisNode[];
14
+ '@type': "@builder.io/mitosis/node";
15
+ meta: import("../../../types/json").JSONObject;
16
+ properties: {
17
+ [key: string]: string | undefined;
18
+ };
19
+ } | {
20
+ name: string;
21
+ scope: {
22
+ forName: any;
23
+ };
24
+ bindings: {
25
+ each: {
26
+ code: any;
27
+ };
28
+ };
29
+ children: import("../../..").MitosisNode[];
30
+ '@type': "@builder.io/mitosis/node";
31
+ meta: import("../../../types/json").JSONObject;
32
+ properties: {
33
+ [key: string]: string | undefined;
34
+ };
35
+ };
@@ -0,0 +1,24 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.parseEach = void 0;
15
+ var mitosis_node_1 = require("../helpers/mitosis-node");
16
+ var children_1 = require("../helpers/children");
17
+ function parseEach(json, node) {
18
+ return __assign(__assign({}, (0, mitosis_node_1.createMitosisNode)()), { name: 'For', scope: { forName: node.context.name }, bindings: {
19
+ each: {
20
+ code: node.expression.name,
21
+ },
22
+ }, children: (0, children_1.parseChildren)(json, node) });
23
+ }
24
+ exports.parseEach = parseEach;
@@ -0,0 +1,3 @@
1
+ import type { TemplateNode } from 'svelte/types/compiler/interfaces';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare function parseElement(json: SveltosisComponent, node: TemplateNode): import("../../..").MitosisNode;
@@ -0,0 +1,222 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.parseElement = void 0;
15
+ var astring_1 = require("astring");
16
+ var lodash_1 = require("lodash");
17
+ var mitosis_node_1 = require("../helpers/mitosis-node");
18
+ var children_1 = require("../helpers/children");
19
+ var string_1 = require("../helpers/string");
20
+ var actions_1 = require("./actions");
21
+ var SPECIAL_ELEMENTS = new Set(['svelte:component', 'svelte:element']);
22
+ function parseElement(json, node) {
23
+ var _a;
24
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
25
+ var mitosisNode = (0, mitosis_node_1.createMitosisNode)();
26
+ mitosisNode.name = node.name;
27
+ var useReference = function () {
28
+ var nodeReference = (0, string_1.uniqueName)(Object.keys(json.refs), node.name);
29
+ if (!Object.keys(json.refs).includes(nodeReference)) {
30
+ json.refs[nodeReference] = { argument: '', typeParameter: '' };
31
+ mitosisNode.bindings.ref = {
32
+ code: nodeReference,
33
+ };
34
+ }
35
+ return nodeReference;
36
+ };
37
+ /*
38
+ Parse special elements such as svelte:component and svelte:element
39
+ */
40
+ if (SPECIAL_ELEMENTS.has(node.name)) {
41
+ var expression = (0, astring_1.generate)(node.expression || node.tag);
42
+ var prefix = 'state';
43
+ if (json.props[expression]) {
44
+ prefix = 'props';
45
+ }
46
+ mitosisNode.name = "".concat(prefix, ".").concat(expression);
47
+ }
48
+ if ((_b = node.attributes) === null || _b === void 0 ? void 0 : _b.length) {
49
+ for (var _i = 0, _s = node.attributes; _i < _s.length; _i++) {
50
+ var attribute = _s[_i];
51
+ switch (attribute.type) {
52
+ case 'Attribute': {
53
+ switch ((_c = attribute.value[0]) === null || _c === void 0 ? void 0 : _c.type) {
54
+ case 'Text': {
55
+ var value = attribute.value[0];
56
+ // if there are already conditional class declarations
57
+ // add class names defined here to the bindings code as well
58
+ if (attribute.name === 'class' && ((_e = (_d = mitosisNode.bindings.class) === null || _d === void 0 ? void 0 : _d.code) === null || _e === void 0 ? void 0 : _e.length)) {
59
+ mitosisNode.bindings.class.code = (0, string_1.insertAt)(mitosisNode.bindings.class.code, " ".concat(value.data, " "), 1);
60
+ }
61
+ else {
62
+ mitosisNode.properties[attribute.name] = value.data;
63
+ }
64
+ break;
65
+ }
66
+ case 'MustacheTag': {
67
+ var value = attribute.value[0];
68
+ var expression = value.expression;
69
+ var code = (0, astring_1.generate)(expression);
70
+ if (attribute.name === 'class') {
71
+ code = ((_g = (_f = mitosisNode.bindings.class) === null || _f === void 0 ? void 0 : _f.code) === null || _g === void 0 ? void 0 : _g.length)
72
+ ? (0, string_1.insertAt)(mitosisNode.bindings.class.code, ' ${' + code + '}', mitosisNode.bindings.class.code.length - 1)
73
+ : '`${' + code + '}`';
74
+ }
75
+ mitosisNode.bindings[attribute.name] = {
76
+ code: code,
77
+ };
78
+ break;
79
+ }
80
+ case 'AttributeShorthand': {
81
+ // e.g. <input {value}/>
82
+ var value = attribute.value[0];
83
+ var code = value.expression.name;
84
+ mitosisNode.bindings[code] = {
85
+ code: code,
86
+ };
87
+ break;
88
+ }
89
+ default: {
90
+ var name_1 = attribute.name;
91
+ mitosisNode.bindings[name_1] = { code: attribute.value.toString() };
92
+ }
93
+ }
94
+ break;
95
+ }
96
+ case 'Spread': {
97
+ var expression = attribute.expression;
98
+ mitosisNode.bindings[expression.name] = {
99
+ code: expression.name,
100
+ type: 'spread',
101
+ };
102
+ break;
103
+ }
104
+ case 'EventHandler': {
105
+ var object = { code: '', arguments: [] };
106
+ if (((_h = attribute.expression) === null || _h === void 0 ? void 0 : _h.type) === 'ArrowTypeFunction') {
107
+ var expression = attribute.expression;
108
+ object = {
109
+ code: (0, astring_1.generate)(expression.body),
110
+ arguments: (_k = (_j = expression.body) === null || _j === void 0 ? void 0 : _j.arguments) === null || _k === void 0 ? void 0 : _k.map(function (a) { return a.name; }),
111
+ };
112
+ }
113
+ else if (attribute.expression) {
114
+ var code = (0, astring_1.generate)(attribute.expression);
115
+ if (!((_l = attribute.expression.arguments) === null || _l === void 0 ? void 0 : _l.length) &&
116
+ !((_o = (_m = attribute.expression.body) === null || _m === void 0 ? void 0 : _m.arguments) === null || _o === void 0 ? void 0 : _o.length)) {
117
+ code = code.replace(/\(\)/g, '(event)');
118
+ }
119
+ object = {
120
+ code: code,
121
+ arguments: ['event'],
122
+ };
123
+ }
124
+ else {
125
+ object = {
126
+ code: "props.on".concat((0, lodash_1.upperFirst)(attribute.name), "(event)"),
127
+ arguments: ['event'],
128
+ };
129
+ }
130
+ mitosisNode.bindings["on".concat((0, lodash_1.upperFirst)(attribute.name))] = object;
131
+ // add event handlers as props (e.g. props.onClick)
132
+ json.props = __assign(__assign({}, json.props), (_a = {}, _a["on".concat((0, lodash_1.upperFirst)(attribute.name))] = { default: function () { return ({}); } }, _a));
133
+ break;
134
+ }
135
+ case 'Binding': {
136
+ /*
137
+ adding onChange handlers for bind:group and bind:property is done during post processing
138
+ same goes for replacing the group binding with checked
139
+ see helpers/post-process.ts
140
+ */
141
+ var expression = attribute.expression;
142
+ var binding = expression.name;
143
+ var name_2 = attribute.name;
144
+ // template ref
145
+ if (attribute.name === 'this') {
146
+ name_2 = 'ref';
147
+ json.refs[binding] = {
148
+ argument: 'null',
149
+ typeParameter: 'any',
150
+ };
151
+ if (Object.prototype.hasOwnProperty.call(json.state, binding)) {
152
+ delete json.state[binding];
153
+ }
154
+ }
155
+ if (name_2 !== 'ref' && name_2 !== 'group' && name_2 !== 'this') {
156
+ var onChangeCode = "".concat(binding, " = event.target.value");
157
+ mitosisNode.bindings['onChange'] = {
158
+ code: onChangeCode,
159
+ arguments: ['event'],
160
+ };
161
+ }
162
+ mitosisNode.bindings[name_2] = {
163
+ code: binding,
164
+ };
165
+ break;
166
+ }
167
+ case 'Class': {
168
+ var expression = attribute.expression;
169
+ // conditional classes (e.g. class:disabled or class:disabled={disabled})
170
+ var binding = "".concat((0, astring_1.generate)(expression), " ? '").concat(attribute.name, "' : ''");
171
+ var code = '';
172
+ // if there are existing class declarations
173
+ // add them here instead and remove them from properties
174
+ // to avoid duplicate class declarations in certain frameworks
175
+ if ((_q = (_p = mitosisNode.properties) === null || _p === void 0 ? void 0 : _p.class) === null || _q === void 0 ? void 0 : _q.length) {
176
+ code = "".concat(mitosisNode.properties.class, " ");
177
+ delete mitosisNode.properties.class;
178
+ }
179
+ // if class code is already defined (meaning there is more than 1 conditional class declaration)
180
+ // append it to the string instead of assigning it
181
+ if (mitosisNode.bindings.class &&
182
+ Object.prototype.hasOwnProperty.call(mitosisNode.bindings.class, 'code') &&
183
+ ((_r = mitosisNode.bindings.class) === null || _r === void 0 ? void 0 : _r.code.length)) {
184
+ code = (0, string_1.insertAt)(mitosisNode.bindings.class.code, ' ${' + binding + '}', mitosisNode.bindings.class.code.length - 1);
185
+ mitosisNode.bindings.class = {
186
+ code: code,
187
+ };
188
+ }
189
+ else {
190
+ // otherwise just assign
191
+ code = '`' + code + '${' + binding + '}`';
192
+ mitosisNode.bindings.class = {
193
+ code: code,
194
+ };
195
+ }
196
+ break;
197
+ }
198
+ case 'Action': {
199
+ (0, actions_1.parseAction)(json, useReference(), attribute);
200
+ break;
201
+ }
202
+ // No default
203
+ }
204
+ }
205
+ }
206
+ var filteredChildren = [];
207
+ if (node.children) {
208
+ filteredChildren = (0, children_1.filterChildren)(node.children);
209
+ }
210
+ if (filteredChildren.length === 1 && filteredChildren[0].type === 'RawMustacheTag') {
211
+ var child = filteredChildren[0];
212
+ mitosisNode.children = [];
213
+ mitosisNode.bindings.innerHTML = {
214
+ code: (0, astring_1.generate)(child.expression),
215
+ };
216
+ }
217
+ else {
218
+ mitosisNode.children = (0, children_1.parseChildren)(json, node);
219
+ }
220
+ return mitosisNode;
221
+ }
222
+ exports.parseElement = parseElement;
@@ -0,0 +1,3 @@
1
+ import type { TemplateNode } from 'svelte/types/compiler/interfaces';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare function parseFragment(json: SveltosisComponent, node: TemplateNode): import("../../..").MitosisNode;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFragment = void 0;
4
+ var mitosis_node_1 = require("../helpers/mitosis-node");
5
+ var children_1 = require("../helpers/children");
6
+ function parseFragment(json, node) {
7
+ var mitosisNode = (0, mitosis_node_1.createMitosisNode)();
8
+ mitosisNode.name = 'Fragment';
9
+ mitosisNode.children = (0, children_1.parseChildren)(json, node);
10
+ // if there is only one child, don't even bother to render the fragment as it is not necessary
11
+ if (mitosisNode.children.length === 1) {
12
+ mitosisNode = mitosisNode.children[0];
13
+ }
14
+ return mitosisNode;
15
+ }
16
+ exports.parseFragment = parseFragment;
@@ -0,0 +1,3 @@
1
+ import type { TemplateNode } from 'svelte/types/compiler/interfaces';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare function parseIfElse(json: SveltosisComponent, node: TemplateNode): import("../../..").MitosisNode;
@@ -0,0 +1,37 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.parseIfElse = void 0;
15
+ var astring_1 = require("astring");
16
+ var _1 = require(".");
17
+ var mitosis_node_1 = require("../helpers/mitosis-node");
18
+ var children_1 = require("../helpers/children");
19
+ function parseIfElse(json, node) {
20
+ var _a, _b, _c;
21
+ var mitosisNode = (0, mitosis_node_1.createMitosisNode)();
22
+ mitosisNode.name = 'Show';
23
+ mitosisNode.bindings = {
24
+ when: {
25
+ code: (0, astring_1.generate)(node.expression),
26
+ },
27
+ };
28
+ mitosisNode.children = (0, children_1.parseChildren)(json, node);
29
+ if (node.else) {
30
+ mitosisNode.meta.else =
31
+ ((_a = node.else.children) === null || _a === void 0 ? void 0 : _a.length) === 1
32
+ ? (0, _1.parseHtmlNode)(json, node.else.children[0])
33
+ : __assign(__assign({}, (0, mitosis_node_1.createMitosisNode)()), { name: 'div', children: (_c = (_b = node.else.children) === null || _b === void 0 ? void 0 : _b.map(function (n) { return (0, _1.parseHtmlNode)(json, n); })) !== null && _c !== void 0 ? _c : [] });
34
+ }
35
+ return mitosisNode;
36
+ }
37
+ exports.parseIfElse = parseIfElse;
@@ -0,0 +1,5 @@
1
+ import type { MitosisNode } from '../../../types/mitosis-node';
2
+ import type { Ast, TemplateNode } from 'svelte/types/compiler/interfaces';
3
+ import type { SveltosisComponent } from '../types';
4
+ export declare function parseHtml(ast: Ast, json: SveltosisComponent): void;
5
+ export declare function parseHtmlNode(json: SveltosisComponent, node: TemplateNode): MitosisNode | undefined;