@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,71 +22,61 @@ 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.componentFunctionToJson = void 0;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
30
|
+
const babel = __importStar(require("@babel/core"));
|
|
31
|
+
const generator_1 = __importDefault(require("@babel/generator"));
|
|
32
|
+
const hooks_1 = require("../../constants/hooks");
|
|
33
|
+
const create_mitosis_component_1 = require("../../helpers/create-mitosis-component");
|
|
34
|
+
const get_bindings_1 = require("../../helpers/get-bindings");
|
|
35
|
+
const trace_reference_to_module_path_1 = require("../../helpers/trace-reference-to-module-path");
|
|
36
|
+
const component_types_1 = require("./component-types");
|
|
37
|
+
const element_parser_1 = require("./element-parser");
|
|
38
|
+
const helpers_1 = require("./helpers");
|
|
39
|
+
const hooks_2 = require("./hooks");
|
|
40
|
+
const helpers_2 = require("./hooks/helpers");
|
|
41
|
+
const state_1 = require("./state");
|
|
42
|
+
const { types } = babel;
|
|
63
43
|
/**
|
|
64
44
|
* Parses function declarations within the Mitosis copmonent's body to JSON
|
|
65
45
|
*/
|
|
66
|
-
|
|
46
|
+
const componentFunctionToJson = (node, context) => {
|
|
67
47
|
var _a;
|
|
68
|
-
|
|
48
|
+
const hooks = {
|
|
69
49
|
onMount: [],
|
|
70
50
|
onEvent: [],
|
|
71
51
|
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
for (
|
|
77
|
-
var item = _b[_i];
|
|
52
|
+
const state = {};
|
|
53
|
+
const accessedContext = {};
|
|
54
|
+
const setContext = {};
|
|
55
|
+
const refs = {};
|
|
56
|
+
for (const item of node.body.body) {
|
|
78
57
|
if (types.isExpressionStatement(item)) {
|
|
79
|
-
|
|
58
|
+
const expression = item.expression;
|
|
80
59
|
if (types.isCallExpression(expression) && types.isIdentifier(expression.callee)) {
|
|
81
60
|
switch (expression.callee.name) {
|
|
82
61
|
case hooks_1.HOOKS.SET_CONTEXT: {
|
|
83
|
-
|
|
84
|
-
|
|
62
|
+
const keyNode = expression.arguments[0];
|
|
63
|
+
const valueNode = expression.arguments[1];
|
|
85
64
|
if (types.isIdentifier(keyNode)) {
|
|
86
|
-
|
|
87
|
-
|
|
65
|
+
const key = keyNode.name;
|
|
66
|
+
const keyPath = (0, trace_reference_to_module_path_1.traceReferenceToModulePath)(context.builder.component.imports, key);
|
|
88
67
|
if (valueNode) {
|
|
89
68
|
if (types.isObjectExpression(valueNode)) {
|
|
90
|
-
|
|
69
|
+
const value = (0, state_1.parseStateObjectToMitosisState)(valueNode);
|
|
91
70
|
setContext[keyPath] = {
|
|
92
71
|
name: keyNode.name,
|
|
93
|
-
value
|
|
72
|
+
value,
|
|
94
73
|
};
|
|
95
74
|
}
|
|
96
75
|
else {
|
|
97
|
-
|
|
76
|
+
const ref = (0, generator_1.default)(valueNode).code;
|
|
98
77
|
setContext[keyPath] = {
|
|
99
78
|
name: keyNode.name,
|
|
100
|
-
ref
|
|
79
|
+
ref,
|
|
101
80
|
};
|
|
102
81
|
}
|
|
103
82
|
}
|
|
@@ -105,7 +84,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
105
84
|
else if (types.isStringLiteral(keyNode)) {
|
|
106
85
|
if (types.isExpression(valueNode)) {
|
|
107
86
|
setContext[keyNode.value] = {
|
|
108
|
-
name: "
|
|
87
|
+
name: `"${keyNode.value}"`,
|
|
109
88
|
ref: (0, generator_1.default)(valueNode).code,
|
|
110
89
|
};
|
|
111
90
|
}
|
|
@@ -113,33 +92,31 @@ var componentFunctionToJson = function (node, context) {
|
|
|
113
92
|
break;
|
|
114
93
|
}
|
|
115
94
|
case hooks_1.HOOKS.MOUNT: {
|
|
116
|
-
|
|
117
|
-
|
|
95
|
+
const firstArg = expression.arguments[0];
|
|
96
|
+
const hookOptions = expression.arguments[1];
|
|
118
97
|
if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {
|
|
119
|
-
|
|
120
|
-
|
|
98
|
+
const code = (0, helpers_2.processHookCode)(firstArg);
|
|
99
|
+
let onSSR = false;
|
|
121
100
|
if (types.isObjectExpression(hookOptions)) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
property.key.name === 'onSSR';
|
|
126
|
-
});
|
|
101
|
+
const onSSRProp = hookOptions.properties.find((property) => types.isProperty(property) &&
|
|
102
|
+
types.isIdentifier(property.key) &&
|
|
103
|
+
property.key.name === 'onSSR');
|
|
127
104
|
if (types.isObjectProperty(onSSRProp) && types.isBooleanLiteral(onSSRProp.value)) {
|
|
128
105
|
onSSR = onSSRProp.value.value;
|
|
129
106
|
}
|
|
130
107
|
}
|
|
131
108
|
hooks.onMount.push({
|
|
132
|
-
code
|
|
133
|
-
onSSR
|
|
109
|
+
code,
|
|
110
|
+
onSSR,
|
|
134
111
|
});
|
|
135
112
|
}
|
|
136
113
|
break;
|
|
137
114
|
}
|
|
138
115
|
case hooks_1.HOOKS.EVENT: {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
116
|
+
const firstArg = expression.arguments[0];
|
|
117
|
+
const secondArg = expression.arguments[1];
|
|
118
|
+
const thirdArg = expression.arguments[2];
|
|
119
|
+
const fourthArg = expression.arguments[3];
|
|
143
120
|
if (!types.isStringLiteral(firstArg)) {
|
|
144
121
|
console.warn('`onEvent` hook skipped. Event name must be a string literal: ', (0, generator_1.default)(expression).code);
|
|
145
122
|
break;
|
|
@@ -153,54 +130,55 @@ var componentFunctionToJson = function (node, context) {
|
|
|
153
130
|
console.warn('`onEvent` hook skipped. Element ref must be a value: ', (0, generator_1.default)(expression).code);
|
|
154
131
|
break;
|
|
155
132
|
}
|
|
156
|
-
|
|
157
|
-
|
|
133
|
+
const isRoot = types.isBooleanLiteral(fourthArg) ? fourthArg.value : false;
|
|
134
|
+
const eventArgName = types.isIdentifier(secondArg.params[0])
|
|
158
135
|
? secondArg.params[0].name
|
|
159
136
|
: 'event';
|
|
160
|
-
|
|
137
|
+
const elementArgName = types.isIdentifier(secondArg.params[1])
|
|
161
138
|
? secondArg.params[1].name
|
|
162
139
|
: 'element';
|
|
163
140
|
hooks.onEvent.push({
|
|
164
141
|
eventName: firstArg.value,
|
|
165
142
|
code: (0, helpers_2.processHookCode)(secondArg),
|
|
166
143
|
refName: thirdArg.name,
|
|
167
|
-
isRoot
|
|
168
|
-
eventArgName
|
|
169
|
-
elementArgName
|
|
144
|
+
isRoot,
|
|
145
|
+
eventArgName,
|
|
146
|
+
elementArgName,
|
|
170
147
|
});
|
|
171
148
|
break;
|
|
172
149
|
}
|
|
173
150
|
case hooks_1.HOOKS.UPDATE: {
|
|
174
|
-
|
|
175
|
-
|
|
151
|
+
const firstArg = expression.arguments[0];
|
|
152
|
+
const secondArg = expression.arguments[1];
|
|
176
153
|
if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {
|
|
177
|
-
|
|
154
|
+
const code = (0, helpers_2.processHookCode)(firstArg);
|
|
178
155
|
if (!secondArg ||
|
|
179
156
|
(types.isArrayExpression(secondArg) && secondArg.elements.length > 0)) {
|
|
180
|
-
|
|
181
|
-
hooks.onUpdate =
|
|
157
|
+
const depsCode = secondArg ? (0, generator_1.default)(secondArg).code : '';
|
|
158
|
+
hooks.onUpdate = [
|
|
159
|
+
...(hooks.onUpdate || []),
|
|
182
160
|
{
|
|
183
|
-
code
|
|
161
|
+
code,
|
|
184
162
|
deps: depsCode,
|
|
185
163
|
},
|
|
186
|
-
]
|
|
164
|
+
];
|
|
187
165
|
}
|
|
188
166
|
}
|
|
189
167
|
break;
|
|
190
168
|
}
|
|
191
169
|
case hooks_1.HOOKS.UNMOUNT: {
|
|
192
|
-
|
|
170
|
+
const firstArg = expression.arguments[0];
|
|
193
171
|
if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {
|
|
194
|
-
|
|
195
|
-
hooks.onUnMount = { code
|
|
172
|
+
const code = (0, helpers_2.processHookCode)(firstArg);
|
|
173
|
+
hooks.onUnMount = { code };
|
|
196
174
|
}
|
|
197
175
|
break;
|
|
198
176
|
}
|
|
199
177
|
case hooks_1.HOOKS.INIT: {
|
|
200
|
-
|
|
178
|
+
const firstArg = expression.arguments[0];
|
|
201
179
|
if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {
|
|
202
|
-
|
|
203
|
-
hooks.onInit = { code
|
|
180
|
+
const code = (0, helpers_2.processHookCode)(firstArg);
|
|
181
|
+
hooks.onInit = { code };
|
|
204
182
|
}
|
|
205
183
|
break;
|
|
206
184
|
}
|
|
@@ -213,7 +191,10 @@ var componentFunctionToJson = function (node, context) {
|
|
|
213
191
|
break;
|
|
214
192
|
}
|
|
215
193
|
case hooks_1.HOOKS.METADATA: {
|
|
216
|
-
context.builder.component.meta[hooks_1.HOOKS.METADATA] =
|
|
194
|
+
context.builder.component.meta[hooks_1.HOOKS.METADATA] = {
|
|
195
|
+
...context.builder.component.meta[hooks_1.HOOKS.METADATA],
|
|
196
|
+
...(0, helpers_1.parseCodeJson)(expression.arguments[0]),
|
|
197
|
+
};
|
|
217
198
|
break;
|
|
218
199
|
}
|
|
219
200
|
}
|
|
@@ -228,15 +209,15 @@ var componentFunctionToJson = function (node, context) {
|
|
|
228
209
|
}
|
|
229
210
|
}
|
|
230
211
|
if (types.isVariableDeclaration(item)) {
|
|
231
|
-
|
|
232
|
-
|
|
212
|
+
const declaration = item.declarations[0];
|
|
213
|
+
const init = declaration.init;
|
|
233
214
|
if (types.isCallExpression(init) && types.isIdentifier(init.callee)) {
|
|
234
215
|
// React format, like:
|
|
235
216
|
// const [foo, setFoo] = useState(...)
|
|
236
217
|
if (types.isArrayPattern(declaration.id) && init.callee.name === hooks_1.HOOKS.STATE) {
|
|
237
|
-
|
|
218
|
+
const varName = types.isIdentifier(declaration.id.elements[0]) && declaration.id.elements[0].name;
|
|
238
219
|
if (varName) {
|
|
239
|
-
|
|
220
|
+
const value = init.arguments[0];
|
|
240
221
|
// Function as init, like:
|
|
241
222
|
// useState(() => true)
|
|
242
223
|
if (types.isArrowFunctionExpression(value)) {
|
|
@@ -246,14 +227,13 @@ var componentFunctionToJson = function (node, context) {
|
|
|
246
227
|
};
|
|
247
228
|
}
|
|
248
229
|
else {
|
|
249
|
-
|
|
250
|
-
|
|
230
|
+
const stateOptions = init.arguments[1];
|
|
231
|
+
let propertyType = 'normal';
|
|
251
232
|
if (types.isObjectExpression(stateOptions)) {
|
|
252
|
-
for (
|
|
253
|
-
var prop = _d[_c];
|
|
233
|
+
for (const prop of stateOptions.properties) {
|
|
254
234
|
if (!types.isProperty(prop) || !types.isIdentifier(prop.key))
|
|
255
235
|
continue;
|
|
256
|
-
|
|
236
|
+
const isReactive = prop.key.name === 'reactive';
|
|
257
237
|
if (isReactive && types.isBooleanLiteral(prop.value) && prop.value.value) {
|
|
258
238
|
propertyType = 'reactive';
|
|
259
239
|
}
|
|
@@ -264,7 +244,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
264
244
|
state[varName] = {
|
|
265
245
|
code: (0, helpers_1.parseCode)(value),
|
|
266
246
|
type: 'property',
|
|
267
|
-
propertyType
|
|
247
|
+
propertyType,
|
|
268
248
|
};
|
|
269
249
|
}
|
|
270
250
|
// Typescript Parameter
|
|
@@ -274,28 +254,28 @@ var componentFunctionToJson = function (node, context) {
|
|
|
274
254
|
}
|
|
275
255
|
}
|
|
276
256
|
else if (init.callee.name === hooks_1.HOOKS.STORE) {
|
|
277
|
-
|
|
257
|
+
const firstArg = init.arguments[0];
|
|
278
258
|
if (types.isObjectExpression(firstArg)) {
|
|
279
|
-
|
|
259
|
+
const useStoreState = (0, state_1.parseStateObjectToMitosisState)(firstArg);
|
|
280
260
|
Object.assign(state, useStoreState);
|
|
281
261
|
}
|
|
282
262
|
}
|
|
283
263
|
else if (init.callee.name === hooks_1.HOOKS.CONTEXT) {
|
|
284
|
-
|
|
264
|
+
const firstArg = init.arguments[0];
|
|
285
265
|
if (types.isVariableDeclarator(declaration) && types.isIdentifier(declaration.id)) {
|
|
286
266
|
if (types.isIdentifier(firstArg)) {
|
|
287
|
-
|
|
288
|
-
|
|
267
|
+
const varName = declaration.id.name;
|
|
268
|
+
const name = firstArg.name;
|
|
289
269
|
accessedContext[varName] = {
|
|
290
|
-
name
|
|
291
|
-
path: (0, trace_reference_to_module_path_1.traceReferenceToModulePath)(context.builder.component.imports,
|
|
270
|
+
name,
|
|
271
|
+
path: (0, trace_reference_to_module_path_1.traceReferenceToModulePath)(context.builder.component.imports, name),
|
|
292
272
|
};
|
|
293
273
|
}
|
|
294
274
|
else {
|
|
295
|
-
|
|
296
|
-
|
|
275
|
+
const varName = declaration.id.name;
|
|
276
|
+
const name = (0, generator_1.default)(firstArg).code;
|
|
297
277
|
accessedContext[varName] = {
|
|
298
|
-
name
|
|
278
|
+
name,
|
|
299
279
|
path: '',
|
|
300
280
|
};
|
|
301
281
|
}
|
|
@@ -303,8 +283,8 @@ var componentFunctionToJson = function (node, context) {
|
|
|
303
283
|
}
|
|
304
284
|
else if (init.callee.name === hooks_1.HOOKS.REF) {
|
|
305
285
|
if (types.isIdentifier(declaration.id)) {
|
|
306
|
-
|
|
307
|
-
|
|
286
|
+
const firstArg = init.arguments[0];
|
|
287
|
+
const varName = declaration.id.name;
|
|
308
288
|
refs[varName] = {
|
|
309
289
|
argument: (0, generator_1.default)(firstArg).code,
|
|
310
290
|
};
|
|
@@ -317,30 +297,39 @@ var componentFunctionToJson = function (node, context) {
|
|
|
317
297
|
}
|
|
318
298
|
}
|
|
319
299
|
}
|
|
320
|
-
|
|
321
|
-
|
|
300
|
+
const theReturn = node.body.body.find((item) => types.isReturnStatement(item));
|
|
301
|
+
const children = [];
|
|
322
302
|
if (theReturn) {
|
|
323
|
-
|
|
303
|
+
const value = theReturn.argument;
|
|
324
304
|
if (types.isJSXElement(value) || types.isJSXFragment(value)) {
|
|
325
|
-
|
|
305
|
+
const jsxElement = (0, element_parser_1.jsxElementToJson)(value);
|
|
326
306
|
if (jsxElement) {
|
|
327
307
|
children.push(jsxElement);
|
|
328
308
|
}
|
|
329
309
|
}
|
|
330
310
|
}
|
|
331
|
-
|
|
311
|
+
const { exports: localExports } = context.builder.component;
|
|
332
312
|
if (localExports) {
|
|
333
|
-
|
|
334
|
-
Object.keys(localExports).forEach(
|
|
335
|
-
|
|
313
|
+
const bindingsCode = (0, get_bindings_1.getBindingsCode)(children);
|
|
314
|
+
Object.keys(localExports).forEach((name) => {
|
|
315
|
+
const found = bindingsCode.find((code) => code.match(new RegExp(`\\b${name}\\b`)));
|
|
336
316
|
localExports[name].usedInLocal = Boolean(found);
|
|
337
317
|
});
|
|
338
318
|
context.builder.component.exports = localExports;
|
|
339
319
|
}
|
|
340
|
-
|
|
341
|
-
return (0, create_mitosis_component_1.createMitosisComponent)(
|
|
320
|
+
const propsTypeRef = (0, component_types_1.getPropsTypeRef)(node, context);
|
|
321
|
+
return (0, create_mitosis_component_1.createMitosisComponent)({
|
|
322
|
+
...context.builder.component,
|
|
323
|
+
name: (_a = node.id) === null || _a === void 0 ? void 0 : _a.name,
|
|
324
|
+
state,
|
|
325
|
+
children,
|
|
326
|
+
refs: refs,
|
|
327
|
+
hooks,
|
|
328
|
+
context: {
|
|
342
329
|
get: accessedContext,
|
|
343
330
|
set: setContext,
|
|
344
|
-
},
|
|
331
|
+
},
|
|
332
|
+
propsTypeRef,
|
|
333
|
+
});
|
|
345
334
|
};
|
|
346
335
|
exports.componentFunctionToJson = componentFunctionToJson;
|
|
@@ -27,35 +27,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.transformAttributeName = exports.HTML_ATTR_FROM_JSX = exports.isImportOrDefaultExport = exports.parseCodeJson = exports.parseCode = exports.uncapitalize = void 0;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
const babel = __importStar(require("@babel/core"));
|
|
31
|
+
const generator_1 = __importDefault(require("@babel/generator"));
|
|
32
|
+
const json_1 = require("../../helpers/json");
|
|
33
|
+
const typescript_1 = require("../../helpers/typescript");
|
|
34
|
+
const { types } = babel;
|
|
35
|
+
const uncapitalize = (str) => {
|
|
36
36
|
if (!str) {
|
|
37
37
|
return str;
|
|
38
38
|
}
|
|
39
39
|
return str[0].toLowerCase() + str.slice(1);
|
|
40
40
|
};
|
|
41
41
|
exports.uncapitalize = uncapitalize;
|
|
42
|
-
|
|
42
|
+
const parseCode = (node) => {
|
|
43
43
|
return (0, generator_1.default)(node).code;
|
|
44
44
|
};
|
|
45
45
|
exports.parseCode = parseCode;
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
const parseCodeJson = (node) => {
|
|
47
|
+
const code = (0, exports.parseCode)(node);
|
|
48
48
|
return (0, json_1.tryParseJson)(code);
|
|
49
49
|
};
|
|
50
50
|
exports.parseCodeJson = parseCodeJson;
|
|
51
|
-
|
|
52
|
-
return types.isExportDefaultDeclaration(node) || types.isImportDeclaration(node);
|
|
53
|
-
};
|
|
51
|
+
const isImportOrDefaultExport = (node) => types.isExportDefaultDeclaration(node) || types.isImportDeclaration(node);
|
|
54
52
|
exports.isImportOrDefaultExport = isImportOrDefaultExport;
|
|
55
53
|
exports.HTML_ATTR_FROM_JSX = {
|
|
56
54
|
htmlFor: 'for',
|
|
57
55
|
};
|
|
58
|
-
|
|
56
|
+
const transformAttributeName = (name) => {
|
|
59
57
|
if ((0, typescript_1.objectHasKey)(exports.HTML_ATTR_FROM_JSX, name))
|
|
60
58
|
return exports.HTML_ATTR_FROM_JSX[name];
|
|
61
59
|
return name;
|
|
@@ -27,13 +27,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.processHookCode = exports.getHook = void 0;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
const babel = __importStar(require("@babel/core"));
|
|
31
|
+
const generator_1 = __importDefault(require("@babel/generator"));
|
|
32
|
+
const { types } = babel;
|
|
33
|
+
const getHook = (node) => {
|
|
34
|
+
const item = node;
|
|
35
35
|
if (types.isExpressionStatement(item)) {
|
|
36
|
-
|
|
36
|
+
const expression = item.expression;
|
|
37
37
|
if (types.isCallExpression(expression)) {
|
|
38
38
|
if (types.isIdentifier(expression.callee)) {
|
|
39
39
|
return expression;
|
|
@@ -43,14 +43,12 @@ var getHook = function (node) {
|
|
|
43
43
|
return null;
|
|
44
44
|
};
|
|
45
45
|
exports.getHook = getHook;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
.trim();
|
|
55
|
-
};
|
|
46
|
+
const processHookCode = (firstArg) => (0, generator_1.default)(firstArg.body)
|
|
47
|
+
.code.trim()
|
|
48
|
+
// Remove arbitrary block wrapping if any
|
|
49
|
+
// AKA
|
|
50
|
+
// { console.log('hi') } -> console.log('hi')
|
|
51
|
+
.replace(/^{/, '')
|
|
52
|
+
.replace(/}$/, '')
|
|
53
|
+
.trim();
|
|
56
54
|
exports.processHookCode = processHookCode;
|
|
@@ -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);
|
|
@@ -38,15 +27,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
27
|
};
|
|
39
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
29
|
exports.collectModuleScopeHooks = exports.generateUseStyleCode = exports.parseDefaultPropsHook = void 0;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
30
|
+
const babel = __importStar(require("@babel/core"));
|
|
31
|
+
const generator_1 = __importDefault(require("@babel/generator"));
|
|
32
|
+
const hooks_1 = require("../../../constants/hooks");
|
|
33
|
+
const helpers_1 = require("../helpers");
|
|
34
|
+
const state_1 = require("../state");
|
|
35
|
+
const helpers_2 = require("./helpers");
|
|
36
|
+
const { types } = babel;
|
|
48
37
|
function parseDefaultPropsHook(component, expression) {
|
|
49
|
-
|
|
38
|
+
const firstArg = expression.arguments[0];
|
|
50
39
|
if (types.isObjectExpression(firstArg)) {
|
|
51
40
|
component.defaultProps = (0, state_1.parseStateObjectToMitosisState)(firstArg, false);
|
|
52
41
|
}
|
|
@@ -63,33 +52,34 @@ exports.generateUseStyleCode = generateUseStyleCode;
|
|
|
63
52
|
* This function collects metadata and removes the statement from
|
|
64
53
|
* the returned nodes array
|
|
65
54
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
catch (e) {
|
|
80
|
-
console.error("Error parsing metadata hook ".concat(hook.callee.name));
|
|
81
|
-
throw e;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
else if (hook.callee.name === hooks_1.HOOKS.STYLE) {
|
|
85
|
-
component.style = generateUseStyleCode(hook);
|
|
55
|
+
const collectModuleScopeHooks = (component, options) => (nodes) => nodes.filter((node) => {
|
|
56
|
+
const hook = (0, helpers_2.getHook)(node);
|
|
57
|
+
if (!hook) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (types.isIdentifier(hook.callee)) {
|
|
61
|
+
const metadataHooks = new Set((options.jsonHookNames || []).concat(hooks_1.HOOKS.METADATA));
|
|
62
|
+
if (metadataHooks.has(hook.callee.name)) {
|
|
63
|
+
try {
|
|
64
|
+
component.meta[hook.callee.name] = {
|
|
65
|
+
...(component.meta[hook.callee.name] || {}),
|
|
66
|
+
...(0, helpers_1.parseCodeJson)(hook.arguments[0]),
|
|
67
|
+
};
|
|
86
68
|
return false;
|
|
87
69
|
}
|
|
88
|
-
|
|
89
|
-
|
|
70
|
+
catch (e) {
|
|
71
|
+
console.error(`Error parsing metadata hook ${hook.callee.name}`);
|
|
72
|
+
throw e;
|
|
90
73
|
}
|
|
91
74
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
75
|
+
else if (hook.callee.name === hooks_1.HOOKS.STYLE) {
|
|
76
|
+
component.style = generateUseStyleCode(hook);
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
else if (hook.callee.name === hooks_1.HOOKS.DEFAULT_PROPS) {
|
|
80
|
+
parseDefaultPropsHook(component, hook);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
});
|
|
95
85
|
exports.collectModuleScopeHooks = collectModuleScopeHooks;
|