@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.
- package/dist/src/constants/media-sizes.js +4 -5
- package/dist/src/generators/alpine/generate.js +114 -132
- package/dist/src/generators/alpine/render-mount-hook.js +8 -5
- package/dist/src/generators/alpine/render-update-hooks.js +13 -13
- package/dist/src/generators/angular/helpers.js +19 -9
- package/dist/src/generators/angular/index.js +599 -584
- package/dist/src/generators/builder.js +200 -165
- package/dist/src/generators/context/angular.js +32 -26
- package/dist/src/generators/context/helpers/context-with-symbol-key.js +25 -21
- package/dist/src/generators/context/qwik.js +21 -21
- package/dist/src/generators/context/react.js +22 -22
- package/dist/src/generators/context/rsc.js +20 -22
- package/dist/src/generators/context/solid.js +22 -22
- package/dist/src/generators/context/svelte.js +33 -28
- package/dist/src/generators/context/vue.js +1 -1
- package/dist/src/generators/helpers/context.js +6 -13
- package/dist/src/generators/helpers/functions.js +8 -8
- package/dist/src/generators/helpers/on-mount.js +9 -5
- package/dist/src/generators/helpers/rsc.js +7 -9
- package/dist/src/generators/html.js +995 -534
- package/dist/src/generators/liquid.js +81 -79
- package/dist/src/generators/lit/collect-class-string.js +10 -12
- package/dist/src/generators/lit/generate.js +204 -159
- package/dist/src/generators/marko/generate.js +193 -183
- package/dist/src/generators/minify.js +5 -9
- package/dist/src/generators/mitosis.js +135 -134
- package/dist/src/generators/qwik/component-generator.js +159 -154
- package/dist/src/generators/qwik/component.js +51 -81
- package/dist/src/generators/qwik/directives.js +68 -84
- package/dist/src/generators/qwik/helpers/add-prevent-default.js +6 -7
- package/dist/src/generators/qwik/helpers/convert-method-to-function.js +38 -38
- package/dist/src/generators/qwik/helpers/handlers.js +16 -25
- package/dist/src/generators/qwik/helpers/stable-inject.js +7 -8
- package/dist/src/generators/qwik/helpers/stable-serialize.js +7 -8
- package/dist/src/generators/qwik/helpers/state.js +36 -43
- package/dist/src/generators/qwik/helpers/styles.js +19 -40
- package/dist/src/generators/qwik/jsx.js +63 -75
- package/dist/src/generators/qwik/src-generator.js +134 -167
- package/dist/src/generators/react/blocks.js +122 -127
- package/dist/src/generators/react/generator.js +314 -259
- package/dist/src/generators/react/helpers.js +23 -28
- package/dist/src/generators/react/state.js +34 -51
- package/dist/src/generators/react-native/index.js +72 -84
- package/dist/src/generators/react-native/sanitize-react-native-block-styles.js +14 -26
- package/dist/src/generators/rsc.js +30 -36
- package/dist/src/generators/solid/blocks.js +46 -43
- package/dist/src/generators/solid/helpers/styles.js +11 -11
- package/dist/src/generators/solid/index.js +199 -190
- package/dist/src/generators/solid/state/helpers.js +76 -90
- package/dist/src/generators/solid/state/signals.js +30 -37
- package/dist/src/generators/solid/state/state.js +35 -48
- package/dist/src/generators/solid/state/store.js +40 -46
- package/dist/src/generators/stencil/collect-class-string.js +10 -12
- package/dist/src/generators/stencil/generate.js +158 -145
- package/dist/src/generators/svelte/blocks.js +146 -144
- package/dist/src/generators/svelte/helpers.js +10 -17
- package/dist/src/generators/svelte/svelte.js +321 -287
- package/dist/src/generators/swift-ui.js +162 -101
- package/dist/src/generators/taro.js +32 -36
- package/dist/src/generators/template.js +71 -74
- package/dist/src/generators/vue/blocks.js +116 -107
- package/dist/src/generators/vue/compositionApi.js +67 -50
- package/dist/src/generators/vue/helpers.js +71 -96
- package/dist/src/generators/vue/optionsApi.js +134 -105
- package/dist/src/generators/vue/vue.js +210 -207
- package/dist/src/helpers/babel-transform.js +40 -63
- package/dist/src/helpers/bindings.js +4 -12
- package/dist/src/helpers/camel-case.js +4 -5
- package/dist/src/helpers/capitalize.js +1 -1
- package/dist/src/helpers/component-file-extensions.js +23 -35
- package/dist/src/helpers/create-mitosis-component.js +22 -26
- package/dist/src/helpers/create-mitosis-context.js +5 -12
- package/dist/src/helpers/create-mitosis-node.js +10 -12
- package/dist/src/helpers/dash-case.js +2 -2
- package/dist/src/helpers/dedent.js +18 -22
- package/dist/src/helpers/event-handlers.js +1 -1
- package/dist/src/helpers/fast-clone.js +1 -1
- package/dist/src/helpers/filter-empty-text-nodes.js +2 -2
- package/dist/src/helpers/generic-format.js +7 -8
- package/dist/src/helpers/get-bindings.js +4 -4
- package/dist/src/helpers/get-components-used.js +3 -3
- package/dist/src/helpers/get-components.js +4 -4
- package/dist/src/helpers/get-custom-imports.js +10 -12
- package/dist/src/helpers/get-prop-functions.js +7 -8
- package/dist/src/helpers/get-props-ref.js +8 -8
- package/dist/src/helpers/get-props.js +12 -13
- package/dist/src/helpers/get-refs.js +4 -4
- package/dist/src/helpers/get-state-object-string.js +42 -61
- package/dist/src/helpers/get-state-used.js +7 -8
- package/dist/src/helpers/get-styles.js +6 -6
- package/dist/src/helpers/getters-to-functions.js +8 -12
- package/dist/src/helpers/handle-missing-state.js +3 -3
- package/dist/src/helpers/has-bindings-text.js +6 -6
- package/dist/src/helpers/has-component.js +4 -4
- package/dist/src/helpers/has-props.js +3 -3
- package/dist/src/helpers/has-stateful-dom.js +4 -4
- package/dist/src/helpers/has.js +3 -3
- package/dist/src/helpers/indent.js +2 -3
- package/dist/src/helpers/is-children.js +4 -5
- package/dist/src/helpers/is-component.js +1 -1
- package/dist/src/helpers/is-html-attribute.js +2 -11
- package/dist/src/helpers/is-mitosis-node.js +1 -1
- package/dist/src/helpers/is-root-text-node.js +1 -1
- package/dist/src/helpers/is-upper-case.js +1 -1
- package/dist/src/helpers/is-valid-attribute-name.js +1 -1
- package/dist/src/helpers/json.js +2 -2
- package/dist/src/helpers/map-refs.js +29 -40
- package/dist/src/helpers/merge-options.js +20 -31
- package/dist/src/helpers/mitosis-imports.js +5 -6
- package/dist/src/helpers/nodes/for.js +2 -3
- package/dist/src/helpers/nullable.js +1 -3
- package/dist/src/helpers/on-event.js +32 -36
- package/dist/src/helpers/output.js +4 -5
- package/dist/src/helpers/parse-node.js +13 -5
- package/dist/src/helpers/parsers.js +10 -14
- package/dist/src/helpers/patterns.js +6 -8
- package/dist/src/helpers/plugins/process-code/index.js +114 -120
- package/dist/src/helpers/plugins/process-signals.js +114 -125
- package/dist/src/helpers/plugins/process-target-blocks.js +18 -20
- package/dist/src/helpers/process-http-requests.js +8 -4
- package/dist/src/helpers/remove-surrounding-block.js +2 -2
- package/dist/src/helpers/render-imports.js +99 -111
- package/dist/src/helpers/replace-identifiers.js +40 -49
- package/dist/src/helpers/replace-new-lines-in-strings.js +3 -3
- package/dist/src/helpers/signals/signals.js +27 -35
- package/dist/src/helpers/slots.js +11 -20
- package/dist/src/helpers/state.js +1 -3
- package/dist/src/helpers/strip-meta-properties.js +6 -6
- package/dist/src/helpers/strip-state-and-props-refs.js +21 -32
- package/dist/src/helpers/styles/collect-css.js +39 -44
- package/dist/src/helpers/styles/collect-styled-components.js +30 -28
- package/dist/src/helpers/styles/helpers.js +23 -29
- package/dist/src/helpers/trace-reference-to-module-path.js +3 -4
- package/dist/src/helpers/transform-state-setters.js +16 -19
- package/dist/src/helpers/traverse-nodes.js +2 -2
- package/dist/src/helpers/try-prettier-format.js +3 -3
- package/dist/src/helpers/typescript-project.js +25 -25
- package/dist/src/helpers/typescript.js +1 -3
- package/dist/src/modules/plugins.js +20 -28
- package/dist/src/parsers/angular.js +49 -57
- package/dist/src/parsers/builder/builder.js +448 -343
- package/dist/src/parsers/builder/helpers.js +10 -10
- package/dist/src/parsers/context.js +15 -17
- package/dist/src/parsers/jsx/ast.js +11 -11
- package/dist/src/parsers/jsx/component-types.js +22 -32
- package/dist/src/parsers/jsx/context.js +12 -12
- package/dist/src/parsers/jsx/element-parser.js +43 -54
- package/dist/src/parsers/jsx/exports.js +12 -14
- package/dist/src/parsers/jsx/function-parser.js +108 -119
- package/dist/src/parsers/jsx/helpers.js +11 -13
- package/dist/src/parsers/jsx/hooks/helpers.js +14 -16
- package/dist/src/parsers/jsx/hooks/index.js +34 -44
- package/dist/src/parsers/jsx/hooks/use-target.js +27 -27
- package/dist/src/parsers/jsx/imports.js +7 -17
- package/dist/src/parsers/jsx/jsx.js +92 -91
- package/dist/src/parsers/jsx/props-types.js +8 -10
- package/dist/src/parsers/jsx/props.js +15 -23
- package/dist/src/parsers/jsx/signals.js +28 -29
- package/dist/src/parsers/jsx/state.d.ts +2 -4
- package/dist/src/parsers/jsx/state.js +59 -93
- package/dist/src/parsers/svelte/css/index.js +1 -1
- package/dist/src/parsers/svelte/helpers/bindings.js +18 -19
- package/dist/src/parsers/svelte/helpers/children.js +5 -6
- package/dist/src/parsers/svelte/helpers/expressions.js +7 -9
- package/dist/src/parsers/svelte/helpers/hooks.js +2 -2
- package/dist/src/parsers/svelte/helpers/post-process.js +49 -70
- package/dist/src/parsers/svelte/helpers/string.js +5 -5
- package/dist/src/parsers/svelte/html/actions.js +17 -10
- package/dist/src/parsers/svelte/html/each.js +11 -16
- package/dist/src/parsers/svelte/html/element.js +68 -78
- package/dist/src/parsers/svelte/html/fragment.js +3 -3
- package/dist/src/parsers/svelte/html/if-else.js +11 -18
- package/dist/src/parsers/svelte/html/index.js +14 -14
- package/dist/src/parsers/svelte/html/mustache-tag.js +5 -5
- package/dist/src/parsers/svelte/html/slot.js +5 -5
- package/dist/src/parsers/svelte/html/text.js +7 -14
- package/dist/src/parsers/svelte/index.js +23 -72
- package/dist/src/parsers/svelte/instance/context.js +17 -17
- package/dist/src/parsers/svelte/instance/expressions.js +2 -2
- package/dist/src/parsers/svelte/instance/functions.js +35 -30
- package/dist/src/parsers/svelte/instance/hooks.js +4 -5
- package/dist/src/parsers/svelte/instance/imports.js +11 -21
- package/dist/src/parsers/svelte/instance/index.js +22 -22
- package/dist/src/parsers/svelte/instance/properties.js +11 -23
- package/dist/src/parsers/svelte/instance/reactive.js +11 -11
- package/dist/src/parsers/svelte/instance/references.js +13 -13
- package/dist/src/parsers/svelte/instance/statements.js +3 -3
- package/dist/src/parsers/svelte/module/index.js +14 -26
- package/dist/src/parsers/svelte/typescript/index.js +27 -36
- package/dist/src/plugins/compile-away-builder-components.js +223 -156
- package/dist/src/plugins/compile-away-components.js +13 -21
- package/dist/src/plugins/map-styles.js +7 -7
- package/dist/src/symbols/symbol-processor.js +44 -62
- package/dist/src/targets.js +19 -19
- package/dist/src/types/mitosis-node.js +1 -1
- package/package.json +1 -1
|
@@ -1,15 +1,4 @@
|
|
|
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
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
3
|
if (k2 === undefined) k2 = k;
|
|
15
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -33,116 +22,111 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
22
|
__setModuleDefault(result, mod);
|
|
34
23
|
return result;
|
|
35
24
|
};
|
|
36
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
37
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
38
|
-
if (ar || !(i in from)) {
|
|
39
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
40
|
-
ar[i] = from[i];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
44
|
-
};
|
|
45
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
27
|
};
|
|
48
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
29
|
exports.postProcess = exports.preventNameCollissions = void 0;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
30
|
+
const generator_1 = __importDefault(require("@babel/generator"));
|
|
31
|
+
const parser = __importStar(require("@babel/parser"));
|
|
32
|
+
const types = __importStar(require("@babel/types"));
|
|
33
|
+
const replace_identifiers_1 = require("../../../helpers/replace-identifiers");
|
|
34
|
+
const bindings_1 = require("./bindings");
|
|
35
|
+
const getArgs = (code) => {
|
|
56
36
|
try {
|
|
57
|
-
|
|
58
|
-
|
|
37
|
+
let parsed = parser.parse(code);
|
|
38
|
+
let body = parsed.program.body[0];
|
|
59
39
|
if (types.isFunctionDeclaration(body)) {
|
|
60
|
-
return body.params.map(
|
|
40
|
+
return body.params.map((p) => (0, generator_1.default)(p).code);
|
|
61
41
|
}
|
|
62
42
|
}
|
|
63
43
|
catch (e) { }
|
|
64
44
|
return [];
|
|
65
45
|
};
|
|
66
46
|
function preventNameCollissions(json, item) {
|
|
67
|
-
|
|
68
|
-
|
|
47
|
+
let output = item.code;
|
|
48
|
+
const argumentsOutput = getArgs(output);
|
|
69
49
|
output = (0, replace_identifiers_1.replaceNodes)({
|
|
70
50
|
code: output,
|
|
71
|
-
nodeMaps: argumentsOutput.map(
|
|
51
|
+
nodeMaps: argumentsOutput.map((arg) => ({
|
|
72
52
|
from: types.identifier(arg),
|
|
73
|
-
to: types.identifier(
|
|
74
|
-
})
|
|
53
|
+
to: types.identifier(`${arg}_`),
|
|
54
|
+
})),
|
|
75
55
|
});
|
|
76
56
|
return (argumentsOutput === null || argumentsOutput === void 0 ? void 0 : argumentsOutput.length)
|
|
77
|
-
?
|
|
57
|
+
? {
|
|
58
|
+
...item,
|
|
59
|
+
code: output,
|
|
60
|
+
arguments: getArgs(output),
|
|
61
|
+
}
|
|
62
|
+
: { ...item, code: output };
|
|
78
63
|
}
|
|
79
64
|
exports.preventNameCollissions = preventNameCollissions;
|
|
80
65
|
function prependProperties(json, code) {
|
|
81
66
|
return (0, replace_identifiers_1.replaceNodes)({
|
|
82
|
-
code
|
|
83
|
-
nodeMaps: Object.keys(json.props).map(
|
|
67
|
+
code,
|
|
68
|
+
nodeMaps: Object.keys(json.props).map((property) => ({
|
|
84
69
|
from: types.identifier(property),
|
|
85
70
|
to: types.memberExpression(types.identifier('props'), types.identifier(property)),
|
|
86
|
-
})
|
|
71
|
+
})),
|
|
87
72
|
});
|
|
88
73
|
}
|
|
89
74
|
function prependState(json, input) {
|
|
90
|
-
|
|
91
|
-
for (
|
|
92
|
-
var stateKey = _a[_i];
|
|
75
|
+
let output = input;
|
|
76
|
+
for (const stateKey of Object.keys(json.state)) {
|
|
93
77
|
output = (0, replace_identifiers_1.replaceIdentifiers)({
|
|
94
78
|
code: output,
|
|
95
79
|
from: stateKey,
|
|
96
|
-
to:
|
|
80
|
+
to: `state.${stateKey}`,
|
|
97
81
|
});
|
|
98
82
|
}
|
|
99
83
|
return output;
|
|
100
84
|
}
|
|
101
85
|
function addPropertiesAndState(json, input) {
|
|
102
|
-
|
|
86
|
+
let output = input;
|
|
103
87
|
output = prependProperties(json, output);
|
|
104
88
|
output = prependState(json, output);
|
|
105
89
|
return output;
|
|
106
90
|
}
|
|
107
91
|
function addPropertiesAndStateToNode(json, node) {
|
|
108
92
|
var _a;
|
|
109
|
-
for (
|
|
110
|
-
var key = _b[_i];
|
|
93
|
+
for (const key of Object.keys(node.bindings)) {
|
|
111
94
|
if (Object.prototype.hasOwnProperty.call(node.bindings, key)) {
|
|
112
|
-
|
|
95
|
+
const value = node.bindings[key];
|
|
113
96
|
node.bindings[key].code = addPropertiesAndState(json, (_a = value === null || value === void 0 ? void 0 : value.code) !== null && _a !== void 0 ? _a : '').trim();
|
|
114
97
|
}
|
|
115
98
|
}
|
|
116
99
|
}
|
|
117
100
|
function postProcessState(json) {
|
|
118
|
-
for (
|
|
119
|
-
|
|
120
|
-
var item = json.state[key];
|
|
101
|
+
for (const key of Object.keys(json.state)) {
|
|
102
|
+
const item = json.state[key];
|
|
121
103
|
if ((item === null || item === void 0 ? void 0 : item.type) !== 'property') {
|
|
122
|
-
|
|
104
|
+
const output = preventNameCollissions(json, item);
|
|
123
105
|
output.code = addPropertiesAndState(json, output.code);
|
|
124
|
-
json.state[key] =
|
|
106
|
+
json.state[key] = {
|
|
107
|
+
...item,
|
|
108
|
+
...output,
|
|
109
|
+
};
|
|
125
110
|
}
|
|
126
111
|
}
|
|
127
112
|
}
|
|
128
113
|
function postProcessChildren(json, children) {
|
|
129
114
|
var _a;
|
|
130
|
-
for (
|
|
131
|
-
var node = children_1[_i];
|
|
115
|
+
for (const node of children) {
|
|
132
116
|
addPropertiesAndStateToNode(json, node);
|
|
133
117
|
(0, bindings_1.processBindings)(json, node);
|
|
134
|
-
|
|
118
|
+
let children = [];
|
|
135
119
|
if (((_a = node.children) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
136
|
-
|
|
120
|
+
children = node.children;
|
|
137
121
|
}
|
|
138
|
-
|
|
122
|
+
const metaValues = (Object.values(node.meta) || []);
|
|
139
123
|
if (metaValues.length > 0) {
|
|
140
|
-
|
|
124
|
+
const metaChildren = metaValues.filter((item) => {
|
|
141
125
|
return (item === null || item === void 0 ? void 0 : item['@type']) === '@builder.io/mitosis/node';
|
|
142
126
|
});
|
|
143
|
-
|
|
127
|
+
children = [...children, ...metaChildren];
|
|
144
128
|
}
|
|
145
|
-
postProcessChildren(json,
|
|
129
|
+
postProcessChildren(json, children);
|
|
146
130
|
}
|
|
147
131
|
}
|
|
148
132
|
function addPropertiesAndStateToHook(json, hook) {
|
|
@@ -152,30 +136,25 @@ function addPropertiesAndStateToHook(json, hook) {
|
|
|
152
136
|
};
|
|
153
137
|
}
|
|
154
138
|
function postProcessHooks(json) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
139
|
+
const hookKeys = Object.keys(json.hooks);
|
|
140
|
+
for (const key of hookKeys) {
|
|
141
|
+
let hook = json.hooks[key];
|
|
158
142
|
if (!hook) {
|
|
159
|
-
|
|
143
|
+
continue;
|
|
160
144
|
}
|
|
161
145
|
if (Array.isArray(hook)) {
|
|
162
|
-
hook.forEach(
|
|
146
|
+
hook.forEach((item, index) => {
|
|
163
147
|
hook.splice(index, 1, addPropertiesAndStateToHook(json, item));
|
|
164
148
|
});
|
|
165
149
|
}
|
|
166
150
|
else {
|
|
167
151
|
hook = addPropertiesAndStateToHook(json, hook);
|
|
168
152
|
}
|
|
169
|
-
};
|
|
170
|
-
for (var _i = 0, hookKeys_1 = hookKeys; _i < hookKeys_1.length; _i++) {
|
|
171
|
-
var key = hookKeys_1[_i];
|
|
172
|
-
_loop_1(key);
|
|
173
153
|
}
|
|
174
154
|
}
|
|
175
155
|
function postProcessContext(json) {
|
|
176
156
|
var _a;
|
|
177
|
-
for (
|
|
178
|
-
var key = _b[_i];
|
|
157
|
+
for (const key of Object.keys(json.context.set)) {
|
|
179
158
|
if ((_a = json.context.set[key]) === null || _a === void 0 ? void 0 : _a.ref) {
|
|
180
159
|
json.context.set[key].ref = addPropertiesAndState(json, json.context.set[key].ref);
|
|
181
160
|
}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.stripQuotes = exports.insertAt = exports.uniqueName = void 0;
|
|
4
4
|
// helper functions for strings
|
|
5
|
-
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
6
|
function uniqueName(existingItems, reference) {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
let index = 0;
|
|
8
|
+
let match = false;
|
|
9
9
|
while (false === match) {
|
|
10
10
|
if (!existingItems.includes(reference)) {
|
|
11
11
|
match = true;
|
|
@@ -13,11 +13,11 @@ function uniqueName(existingItems, reference) {
|
|
|
13
13
|
}
|
|
14
14
|
index++;
|
|
15
15
|
}
|
|
16
|
-
return (0, lodash_1.camelCase)(
|
|
16
|
+
return (0, lodash_1.camelCase)(`${reference}${index}`);
|
|
17
17
|
}
|
|
18
18
|
exports.uniqueName = uniqueName;
|
|
19
19
|
function insertAt(string_, sub, pos) {
|
|
20
|
-
return
|
|
20
|
+
return `${string_.slice(0, pos)}${sub}${string_.slice(pos)}`;
|
|
21
21
|
}
|
|
22
22
|
exports.insertAt = insertAt;
|
|
23
23
|
function stripQuotes(string_) {
|
|
@@ -1,38 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseAction = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const astring_1 = require("astring");
|
|
5
|
+
const string_1 = require("../helpers/string");
|
|
6
6
|
function parseAction(json, nodeReference, attribute) {
|
|
7
7
|
var _a;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const methodName = attribute.name;
|
|
9
|
+
let parameters = '';
|
|
10
10
|
if (['Identifier', 'ObjectExpression'].includes((_a = attribute.expression) === null || _a === void 0 ? void 0 : _a.type)) {
|
|
11
11
|
parameters = (0, astring_1.generate)(attribute.expression);
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
const actionHandler = (0, string_1.uniqueName)(Object.keys(json.state), 'actionHandler');
|
|
14
14
|
json.state[actionHandler] = {
|
|
15
15
|
code: 'null',
|
|
16
16
|
type: 'property',
|
|
17
17
|
propertyType: 'normal',
|
|
18
18
|
};
|
|
19
|
-
|
|
19
|
+
const initHandler = `if (${nodeReference}) { ${actionHandler} = ${methodName}(${nodeReference}, ${parameters}); };\n`;
|
|
20
20
|
json.hooks.onMount.push({
|
|
21
21
|
code: initHandler,
|
|
22
22
|
});
|
|
23
23
|
// Handle Destroy / Re-Mount
|
|
24
|
-
|
|
24
|
+
const onReferenceUpdate = `
|
|
25
|
+
if (!${nodeReference} && ${actionHandler}) {
|
|
26
|
+
${actionHandler}?.destroy();
|
|
27
|
+
${actionHandler} = null;
|
|
28
|
+
} else if (${nodeReference} && !${actionHandler}) {
|
|
29
|
+
${initHandler}
|
|
30
|
+
};\n
|
|
31
|
+
`;
|
|
25
32
|
json.hooks.onUpdate = json.hooks.onUpdate || [];
|
|
26
33
|
json.hooks.onUpdate.push({
|
|
27
34
|
code: onReferenceUpdate,
|
|
28
|
-
deps:
|
|
35
|
+
deps: `[${nodeReference}]`,
|
|
29
36
|
});
|
|
30
37
|
// Handle Update
|
|
31
38
|
if (parameters) {
|
|
32
|
-
|
|
39
|
+
const onUpdate = `${actionHandler}?.update(${parameters})\n`;
|
|
33
40
|
json.hooks.onUpdate.push({
|
|
34
41
|
code: onUpdate,
|
|
35
|
-
deps:
|
|
42
|
+
deps: `[${parameters}]`,
|
|
36
43
|
});
|
|
37
44
|
}
|
|
38
45
|
}
|
|
@@ -1,25 +1,20 @@
|
|
|
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
3
|
exports.parseEach = void 0;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
4
|
+
const children_1 = require("../helpers/children");
|
|
5
|
+
const mitosis_node_1 = require("../helpers/mitosis-node");
|
|
6
|
+
const bindings_1 = require("../../../helpers/bindings");
|
|
18
7
|
function parseEach(json, node) {
|
|
19
|
-
return
|
|
8
|
+
return {
|
|
9
|
+
...(0, mitosis_node_1.createMitosisNode)(),
|
|
10
|
+
name: 'For',
|
|
11
|
+
scope: { forName: node.context.name },
|
|
12
|
+
bindings: {
|
|
20
13
|
each: (0, bindings_1.createSingleBinding)({
|
|
21
14
|
code: node.expression.name,
|
|
22
15
|
}),
|
|
23
|
-
},
|
|
16
|
+
},
|
|
17
|
+
children: (0, children_1.parseChildren)(json, node),
|
|
18
|
+
};
|
|
24
19
|
}
|
|
25
20
|
exports.parseEach = parseEach;
|
|
@@ -1,32 +1,20 @@
|
|
|
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
3
|
exports.parseElement = void 0;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
4
|
+
const astring_1 = require("astring");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
const children_1 = require("../helpers/children");
|
|
7
|
+
const mitosis_node_1 = require("../helpers/mitosis-node");
|
|
8
|
+
const string_1 = require("../helpers/string");
|
|
9
|
+
const actions_1 = require("./actions");
|
|
10
|
+
const bindings_1 = require("../../../helpers/bindings");
|
|
11
|
+
const SPECIAL_ELEMENTS = new Set(['svelte:component', 'svelte:element']);
|
|
23
12
|
function parseElement(json, node) {
|
|
24
|
-
var _a;
|
|
25
|
-
|
|
26
|
-
var mitosisNode = (0, mitosis_node_1.createMitosisNode)();
|
|
13
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
14
|
+
const mitosisNode = (0, mitosis_node_1.createMitosisNode)();
|
|
27
15
|
mitosisNode.name = node.name;
|
|
28
|
-
|
|
29
|
-
|
|
16
|
+
const useReference = () => {
|
|
17
|
+
const nodeReference = (0, string_1.uniqueName)(Object.keys(json.refs), node.name);
|
|
30
18
|
if (!Object.keys(json.refs).includes(nodeReference)) {
|
|
31
19
|
json.refs[nodeReference] = { argument: '', typeParameter: '' };
|
|
32
20
|
mitosisNode.bindings.ref = (0, bindings_1.createSingleBinding)({ code: nodeReference });
|
|
@@ -37,25 +25,24 @@ function parseElement(json, node) {
|
|
|
37
25
|
Parse special elements such as svelte:component and svelte:element
|
|
38
26
|
*/
|
|
39
27
|
if (SPECIAL_ELEMENTS.has(node.name)) {
|
|
40
|
-
|
|
41
|
-
|
|
28
|
+
const expression = (0, astring_1.generate)(node.expression || node.tag);
|
|
29
|
+
let prefix = 'state';
|
|
42
30
|
if (json.props[expression]) {
|
|
43
31
|
prefix = 'props';
|
|
44
32
|
}
|
|
45
|
-
mitosisNode.name =
|
|
33
|
+
mitosisNode.name = `${prefix}.${expression}`;
|
|
46
34
|
}
|
|
47
|
-
if ((
|
|
48
|
-
for (
|
|
49
|
-
var attribute = _v[_i];
|
|
35
|
+
if ((_a = node.attributes) === null || _a === void 0 ? void 0 : _a.length) {
|
|
36
|
+
for (const attribute of node.attributes) {
|
|
50
37
|
switch (attribute.type) {
|
|
51
38
|
case 'Attribute': {
|
|
52
|
-
switch ((
|
|
39
|
+
switch ((_b = attribute.value[0]) === null || _b === void 0 ? void 0 : _b.type) {
|
|
53
40
|
case 'Text': {
|
|
54
|
-
|
|
41
|
+
const value = attribute.value[0];
|
|
55
42
|
// if there are already conditional class declarations
|
|
56
43
|
// add class names defined here to the bindings code as well
|
|
57
|
-
if (attribute.name === 'class' && ((
|
|
58
|
-
mitosisNode.bindings.class.code = (0, string_1.insertAt)(mitosisNode.bindings.class.code,
|
|
44
|
+
if (attribute.name === 'class' && ((_d = (_c = mitosisNode.bindings.class) === null || _c === void 0 ? void 0 : _c.code) === null || _d === void 0 ? void 0 : _d.length)) {
|
|
45
|
+
mitosisNode.bindings.class.code = (0, string_1.insertAt)(mitosisNode.bindings.class.code, ` ${value.data} `, 1);
|
|
59
46
|
}
|
|
60
47
|
else {
|
|
61
48
|
mitosisNode.properties[attribute.name] = value.data;
|
|
@@ -63,27 +50,27 @@ function parseElement(json, node) {
|
|
|
63
50
|
break;
|
|
64
51
|
}
|
|
65
52
|
case 'MustacheTag': {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
53
|
+
const value = attribute.value[0];
|
|
54
|
+
const expression = value.expression;
|
|
55
|
+
let code = (0, astring_1.generate)(expression);
|
|
69
56
|
if (attribute.name === 'class') {
|
|
70
|
-
code = ((
|
|
57
|
+
code = ((_f = (_e = mitosisNode.bindings.class) === null || _e === void 0 ? void 0 : _e.code) === null || _f === void 0 ? void 0 : _f.length)
|
|
71
58
|
? (0, string_1.insertAt)(mitosisNode.bindings.class.code, ' ${' + code + '}', mitosisNode.bindings.class.code.length - 1)
|
|
72
59
|
: '`${' + code + '}`';
|
|
73
60
|
}
|
|
74
|
-
mitosisNode.bindings[attribute.name] = (0, bindings_1.createSingleBinding)({ code
|
|
61
|
+
mitosisNode.bindings[attribute.name] = (0, bindings_1.createSingleBinding)({ code });
|
|
75
62
|
break;
|
|
76
63
|
}
|
|
77
64
|
case 'AttributeShorthand': {
|
|
78
65
|
// e.g. <input {value}/>
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
mitosisNode.bindings[code] = (0, bindings_1.createSingleBinding)({ code
|
|
66
|
+
const value = attribute.value[0];
|
|
67
|
+
const code = value.expression.name;
|
|
68
|
+
mitosisNode.bindings[code] = (0, bindings_1.createSingleBinding)({ code });
|
|
82
69
|
break;
|
|
83
70
|
}
|
|
84
71
|
default: {
|
|
85
|
-
|
|
86
|
-
mitosisNode.bindings[
|
|
72
|
+
const name = attribute.name;
|
|
73
|
+
mitosisNode.bindings[name] = (0, bindings_1.createSingleBinding)({
|
|
87
74
|
code: attribute.value.toString(),
|
|
88
75
|
});
|
|
89
76
|
}
|
|
@@ -91,7 +78,7 @@ function parseElement(json, node) {
|
|
|
91
78
|
break;
|
|
92
79
|
}
|
|
93
80
|
case 'Spread': {
|
|
94
|
-
|
|
81
|
+
const expression = attribute.expression;
|
|
95
82
|
mitosisNode.bindings[expression.name] = {
|
|
96
83
|
code: expression.name,
|
|
97
84
|
type: 'spread',
|
|
@@ -100,52 +87,55 @@ function parseElement(json, node) {
|
|
|
100
87
|
break;
|
|
101
88
|
}
|
|
102
89
|
case 'EventHandler': {
|
|
103
|
-
|
|
90
|
+
let object = {
|
|
104
91
|
code: '',
|
|
105
92
|
arguments: [],
|
|
106
93
|
};
|
|
107
|
-
if (((
|
|
108
|
-
|
|
109
|
-
|
|
94
|
+
if (((_g = attribute.expression) === null || _g === void 0 ? void 0 : _g.type) === 'ArrowTypeFunction') {
|
|
95
|
+
const expression = attribute.expression;
|
|
96
|
+
let code = (0, astring_1.generate)(expression.body);
|
|
110
97
|
object = {
|
|
111
|
-
code
|
|
112
|
-
arguments: (
|
|
98
|
+
code,
|
|
99
|
+
arguments: (_j = (_h = expression.body) === null || _h === void 0 ? void 0 : _h.arguments) === null || _j === void 0 ? void 0 : _j.map((a) => { var _a; return (_a = a.name) !== null && _a !== void 0 ? _a : []; }),
|
|
113
100
|
};
|
|
114
101
|
}
|
|
115
102
|
else if (attribute.expression) {
|
|
116
|
-
|
|
117
|
-
if (((
|
|
103
|
+
let code = (0, astring_1.generate)(attribute.expression);
|
|
104
|
+
if (((_k = attribute.expression.body) === null || _k === void 0 ? void 0 : _k.type) === 'CallExpression') {
|
|
118
105
|
code = (0, astring_1.generate)(attribute.expression.body);
|
|
119
106
|
}
|
|
120
107
|
if (!code.startsWith(')') && !code.endsWith(')')) {
|
|
121
108
|
code += '()';
|
|
122
109
|
}
|
|
123
|
-
if (!((
|
|
124
|
-
!((
|
|
110
|
+
if (!((_l = attribute.expression.arguments) === null || _l === void 0 ? void 0 : _l.length) &&
|
|
111
|
+
!((_o = (_m = attribute.expression.body) === null || _m === void 0 ? void 0 : _m.arguments) === null || _o === void 0 ? void 0 : _o.length)) {
|
|
125
112
|
code = code.replace(/\(\)/g, '(event)');
|
|
126
113
|
}
|
|
127
|
-
|
|
114
|
+
let args = undefined;
|
|
128
115
|
if (attribute.expression.type === 'ArrowFunctionExpression') {
|
|
129
|
-
args = (
|
|
116
|
+
args = (_q = (_p = attribute.expression.params) === null || _p === void 0 ? void 0 : _p.map((arg) => (0, astring_1.generate)(arg))) !== null && _q !== void 0 ? _q : [];
|
|
130
117
|
}
|
|
131
118
|
else if (attribute.expression.type === 'CallExpression' &&
|
|
132
119
|
attribute.expression.arguments.length) {
|
|
133
120
|
args = [];
|
|
134
121
|
}
|
|
135
122
|
object = {
|
|
136
|
-
code
|
|
123
|
+
code,
|
|
137
124
|
arguments: args,
|
|
138
125
|
};
|
|
139
126
|
}
|
|
140
127
|
else {
|
|
141
128
|
object = {
|
|
142
|
-
code:
|
|
129
|
+
code: `props.on${(0, lodash_1.upperFirst)(attribute.name)}(event)`,
|
|
143
130
|
arguments: ['event'],
|
|
144
131
|
};
|
|
145
132
|
}
|
|
146
|
-
mitosisNode.bindings[
|
|
133
|
+
mitosisNode.bindings[`on${(0, lodash_1.upperFirst)(attribute.name)}`] = (0, bindings_1.createSingleBinding)(object);
|
|
147
134
|
// add event handlers as props (e.g. props.onClick)
|
|
148
|
-
json.props =
|
|
135
|
+
json.props = {
|
|
136
|
+
...json.props,
|
|
137
|
+
[`on${(0, lodash_1.upperFirst)(attribute.name)}`]: { default: () => ({}) },
|
|
138
|
+
};
|
|
149
139
|
break;
|
|
150
140
|
}
|
|
151
141
|
case 'Binding': {
|
|
@@ -154,12 +144,12 @@ function parseElement(json, node) {
|
|
|
154
144
|
same goes for replacing the group binding with checked
|
|
155
145
|
see helpers/post-process.ts
|
|
156
146
|
*/
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
147
|
+
const expression = attribute.expression;
|
|
148
|
+
const binding = expression.name;
|
|
149
|
+
let name = attribute.name;
|
|
160
150
|
// template ref
|
|
161
151
|
if (attribute.name === 'this') {
|
|
162
|
-
|
|
152
|
+
name = 'ref';
|
|
163
153
|
json.refs[binding] = {
|
|
164
154
|
argument: 'null',
|
|
165
155
|
typeParameter: 'any',
|
|
@@ -168,42 +158,42 @@ function parseElement(json, node) {
|
|
|
168
158
|
delete json.state[binding];
|
|
169
159
|
}
|
|
170
160
|
}
|
|
171
|
-
if (
|
|
172
|
-
|
|
161
|
+
if (name !== 'ref' && name !== 'group' && name !== 'this') {
|
|
162
|
+
const onChangeCode = `${binding} = event.target.value`;
|
|
173
163
|
mitosisNode.bindings['onChange'] = (0, bindings_1.createSingleBinding)({
|
|
174
164
|
code: onChangeCode,
|
|
175
165
|
arguments: ['event'],
|
|
176
166
|
});
|
|
177
167
|
}
|
|
178
|
-
mitosisNode.bindings[
|
|
168
|
+
mitosisNode.bindings[name] = (0, bindings_1.createSingleBinding)({
|
|
179
169
|
code: binding,
|
|
180
170
|
});
|
|
181
171
|
break;
|
|
182
172
|
}
|
|
183
173
|
case 'Class': {
|
|
184
|
-
|
|
174
|
+
const expression = attribute.expression;
|
|
185
175
|
// conditional classes (e.g. class:disabled or class:disabled={disabled})
|
|
186
|
-
|
|
187
|
-
|
|
176
|
+
const binding = `${(0, astring_1.generate)(expression)} ? '${attribute.name}' : ''`;
|
|
177
|
+
let code = '';
|
|
188
178
|
// if there are existing class declarations
|
|
189
179
|
// add them here instead and remove them from properties
|
|
190
180
|
// to avoid duplicate class declarations in certain frameworks
|
|
191
|
-
if ((
|
|
192
|
-
code =
|
|
181
|
+
if ((_s = (_r = mitosisNode.properties) === null || _r === void 0 ? void 0 : _r.class) === null || _s === void 0 ? void 0 : _s.length) {
|
|
182
|
+
code = `${mitosisNode.properties.class} `;
|
|
193
183
|
delete mitosisNode.properties.class;
|
|
194
184
|
}
|
|
195
185
|
// if class code is already defined (meaning there is more than 1 conditional class declaration)
|
|
196
186
|
// append it to the string instead of assigning it
|
|
197
187
|
if (mitosisNode.bindings.class &&
|
|
198
188
|
Object.prototype.hasOwnProperty.call(mitosisNode.bindings.class, 'code') &&
|
|
199
|
-
((
|
|
189
|
+
((_t = mitosisNode.bindings.class) === null || _t === void 0 ? void 0 : _t.code.length)) {
|
|
200
190
|
code = (0, string_1.insertAt)(mitosisNode.bindings.class.code, ' ${' + binding + '}', mitosisNode.bindings.class.code.length - 1);
|
|
201
|
-
mitosisNode.bindings.class = (0, bindings_1.createSingleBinding)({ code
|
|
191
|
+
mitosisNode.bindings.class = (0, bindings_1.createSingleBinding)({ code });
|
|
202
192
|
}
|
|
203
193
|
else {
|
|
204
194
|
// otherwise just assign
|
|
205
195
|
code = '`' + code + '${' + binding + '}`';
|
|
206
|
-
mitosisNode.bindings.class = (0, bindings_1.createSingleBinding)({ code
|
|
196
|
+
mitosisNode.bindings.class = (0, bindings_1.createSingleBinding)({ code });
|
|
207
197
|
}
|
|
208
198
|
break;
|
|
209
199
|
}
|
|
@@ -215,12 +205,12 @@ function parseElement(json, node) {
|
|
|
215
205
|
}
|
|
216
206
|
}
|
|
217
207
|
}
|
|
218
|
-
|
|
208
|
+
let filteredChildren = [];
|
|
219
209
|
if (node.children) {
|
|
220
210
|
filteredChildren = (0, children_1.filterChildren)(node.children);
|
|
221
211
|
}
|
|
222
212
|
if (filteredChildren.length === 1 && filteredChildren[0].type === 'RawMustacheTag') {
|
|
223
|
-
|
|
213
|
+
const child = filteredChildren[0];
|
|
224
214
|
mitosisNode.children = [];
|
|
225
215
|
mitosisNode.bindings.innerHTML = (0, bindings_1.createSingleBinding)({
|
|
226
216
|
code: (0, astring_1.generate)(child.expression),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseFragment = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const children_1 = require("../helpers/children");
|
|
5
|
+
const mitosis_node_1 = require("../helpers/mitosis-node");
|
|
6
6
|
function parseFragment(json, node) {
|
|
7
|
-
|
|
7
|
+
let mitosisNode = (0, mitosis_node_1.createMitosisNode)();
|
|
8
8
|
mitosisNode.name = 'Fragment';
|
|
9
9
|
mitosisNode.children = (0, children_1.parseChildren)(json, node);
|
|
10
10
|
// if there is only one child, don't even bother to render the fragment as it is not necessary
|