@builder.io/mitosis 0.0.56-13 → 0.0.56-16
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/__tests__/angular.test.js +2 -104
- package/dist/src/__tests__/builder.test.js +3 -3
- package/dist/src/__tests__/data/basic-child-component.raw.jsx +1 -2
- package/dist/src/__tests__/data/basic-context.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-context.raw.jsx +29 -0
- package/dist/src/__tests__/data/basic-custom-mitosis-package.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-custom-mitosis-package.raw.jsx +10 -0
- package/dist/src/__tests__/data/basic-for-show.raw.jsx +2 -3
- package/dist/src/__tests__/data/basic-for.raw.jsx +2 -3
- package/dist/src/__tests__/data/basic-forwardRef-metadata.raw.d.ts +5 -0
- package/dist/src/__tests__/data/basic-forwardRef-metadata.raw.jsx +17 -0
- package/dist/src/__tests__/data/basic-forwardRef.raw.d.ts +5 -0
- package/dist/src/__tests__/data/basic-forwardRef.raw.jsx +14 -0
- package/dist/src/__tests__/data/basic-onChange.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-onChange.raw.jsx +17 -0
- package/dist/src/__tests__/data/basic-onMount-update.raw.jsx +1 -1
- package/dist/src/__tests__/data/basic-onUpdate-return.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-onUpdate-return.raw.jsx +24 -0
- package/dist/src/__tests__/data/basic-outputs-meta.raw.jsx +1 -1
- package/dist/src/__tests__/data/basic-outputs.raw.jsx +1 -1
- package/dist/src/__tests__/data/basic-preserve-export-or-local-statement.raw.d.ts +6 -0
- package/dist/src/__tests__/data/basic-preserve-export-or-local-statement.raw.jsx +14 -0
- package/dist/src/__tests__/data/basic-props-destructure.raw.d.ts +6 -0
- package/dist/src/__tests__/data/basic-props-destructure.raw.jsx +14 -0
- package/dist/src/__tests__/data/basic-props.raw.d.ts +6 -0
- package/dist/src/__tests__/data/basic-props.raw.jsx +13 -0
- package/dist/src/__tests__/data/basic-ref-assignment.raw.d.ts +4 -0
- package/dist/src/__tests__/data/basic-ref-assignment.raw.jsx +15 -0
- package/dist/src/__tests__/data/basic-ref-usePrevious.raw.d.ts +5 -0
- package/dist/src/__tests__/data/basic-ref-usePrevious.raw.jsx +35 -0
- package/dist/src/__tests__/data/basic-ref.raw.d.ts +4 -0
- package/dist/src/__tests__/data/basic-ref.raw.jsx +36 -0
- package/dist/src/__tests__/data/basic.raw.d.ts +6 -1
- package/dist/src/__tests__/data/basic.raw.jsx +10 -3
- package/dist/src/__tests__/data/blocks/classname-jsx.raw.jsx +1 -1
- package/dist/src/__tests__/data/blocks/columns.raw.jsx +1 -1
- package/dist/src/__tests__/data/blocks/custom-code.raw.jsx +3 -7
- package/dist/src/__tests__/data/blocks/embed.raw.jsx +3 -7
- package/dist/src/__tests__/data/blocks/form.raw.jsx +3 -3
- package/dist/src/__tests__/data/blocks/image.raw.jsx +8 -9
- package/dist/src/__tests__/data/blocks/img-state.raw.jsx +1 -1
- package/dist/src/__tests__/data/blocks/input.raw.jsx +1 -3
- package/dist/src/__tests__/data/blocks/multiple-onUpdateWithDeps.raw.jsx +7 -1
- package/dist/src/__tests__/data/blocks/onInit.raw.d.ts +8 -1
- package/dist/src/__tests__/data/blocks/onInit.raw.jsx +13 -3
- package/dist/src/__tests__/data/blocks/onUpdateWithDeps.raw.jsx +1 -1
- package/dist/src/__tests__/data/blocks/section-state.raw.jsx +1 -1
- package/dist/src/__tests__/data/blocks/select.raw.jsx +1 -3
- package/dist/src/__tests__/data/blocks/shadow-dom.raw.jsx +2 -4
- package/dist/src/__tests__/data/blocks/stamped-io.raw.jsx +2 -4
- package/dist/src/__tests__/data/blocks/text.raw.jsx +2 -5
- package/dist/src/__tests__/data/styles/class-and-className.raw.jsx +1 -3
- package/dist/src/__tests__/data/styles/className.raw.jsx +1 -3
- package/dist/src/__tests__/data/styles/classState.raw.d.ts +1 -0
- package/dist/src/__tests__/data/styles/classState.raw.jsx +12 -0
- package/dist/src/__tests__/data/types/component-props-interface.raw.d.ts +6 -0
- package/dist/src/__tests__/data/types/component-props-interface.raw.jsx +6 -0
- package/dist/src/__tests__/data/types/component-props-type.raw.d.ts +6 -0
- package/dist/src/__tests__/data/types/component-props-type.raw.jsx +6 -0
- package/dist/src/__tests__/data/types/preserve-typing.raw.d.ts +8 -0
- package/dist/src/__tests__/data/types/preserve-typing.raw.jsx +6 -0
- package/dist/src/__tests__/html.test.js +2 -145
- package/dist/src/__tests__/liquid.test.js +2 -109
- package/dist/src/__tests__/parse-jsx.test.js +22 -0
- package/dist/src/__tests__/qwik/convertMethodToFunction.test.d.ts +1 -0
- package/dist/src/__tests__/qwik/convertMethodToFunction.test.js +34 -0
- package/dist/src/__tests__/qwik/src-generator.test.d.ts +1 -0
- package/dist/src/__tests__/qwik/src-generator.test.js +65 -0
- package/dist/src/__tests__/qwik.test.js +44 -21
- package/dist/src/__tests__/react-native.test.js +2 -135
- package/dist/src/__tests__/react.test.js +5 -177
- package/dist/src/__tests__/shared.d.ts +3 -0
- package/dist/src/__tests__/shared.js +224 -0
- package/dist/src/__tests__/solid.test.js +2 -103
- package/dist/src/__tests__/stencil.test.js +3 -98
- package/dist/src/__tests__/styles.test.js +9 -1
- package/dist/src/__tests__/svelte.test.js +6 -0
- package/dist/src/__tests__/vue.test.js +2 -134
- package/dist/src/__tests__/webcomponent.test.js +6 -165
- package/dist/src/constants/hooks.d.ts +6 -0
- package/dist/src/constants/hooks.js +9 -0
- package/dist/src/generators/angular.d.ts +1 -1
- package/dist/src/generators/angular.js +66 -34
- package/dist/src/generators/builder.d.ts +1 -1
- package/dist/src/generators/builder.js +6 -12
- package/dist/src/generators/context/{react copy.d.ts → qwik.d.ts} +2 -2
- package/dist/src/generators/context/{react copy.js → qwik.js} +4 -5
- package/dist/src/generators/context/svelte.d.ts +1 -1
- package/dist/src/generators/helpers/context.js +1 -2
- package/dist/src/generators/html.d.ts +1 -1
- package/dist/src/generators/html.js +206 -120
- package/dist/src/generators/liquid.d.ts +1 -1
- package/dist/src/generators/liquid.js +6 -14
- package/dist/src/generators/mitosis.d.ts +1 -1
- package/dist/src/generators/mitosis.js +30 -29
- package/dist/src/generators/qwik/component-generator.d.ts +4 -0
- package/dist/src/generators/qwik/component-generator.js +271 -0
- package/dist/src/generators/qwik/component.js +4 -5
- package/dist/src/generators/qwik/convertMethodToFunction.d.ts +1 -0
- package/dist/src/generators/qwik/convertMethodToFunction.js +161 -0
- package/dist/src/generators/qwik/directives.js +20 -18
- package/dist/src/generators/qwik/index.d.ts +3 -1
- package/dist/src/generators/qwik/index.js +3 -1
- package/dist/src/generators/qwik/jsx.js +10 -6
- package/dist/src/generators/qwik/src-generator.d.ts +19 -7
- package/dist/src/generators/qwik/src-generator.js +149 -31
- package/dist/src/generators/qwik/styles.js +1 -2
- package/dist/src/generators/react-native.d.ts +2 -2
- package/dist/src/generators/react-native.js +3 -6
- package/dist/src/generators/react.d.ts +4 -2
- package/dist/src/generators/react.js +88 -68
- package/dist/src/generators/solid.d.ts +1 -1
- package/dist/src/generators/solid.js +9 -12
- package/dist/src/generators/stencil/generate.d.ts +1 -1
- package/dist/src/generators/stencil/generate.js +5 -11
- package/dist/src/generators/svelte.d.ts +1 -1
- package/dist/src/generators/svelte.js +19 -26
- package/dist/src/generators/swift-ui.d.ts +1 -1
- package/dist/src/generators/swift-ui.js +6 -12
- package/dist/src/generators/template.d.ts +1 -1
- package/dist/src/generators/template.js +6 -14
- package/dist/src/generators/vue.d.ts +12 -6
- package/dist/src/generators/vue.js +62 -31
- package/dist/src/helpers/babel-transform.js +3 -8
- package/dist/src/helpers/create-mitosis-component.d.ts +1 -1
- package/dist/src/helpers/create-mitosis-component.js +1 -1
- package/dist/src/helpers/fast-clone.js +1 -3
- package/dist/src/helpers/filter-empty-text-nodes.js +1 -2
- package/dist/src/helpers/get-bindings.d.ts +2 -0
- package/dist/src/helpers/get-bindings.js +18 -0
- package/dist/src/helpers/get-props-ref.d.ts +2 -0
- package/dist/src/helpers/get-props-ref.js +32 -0
- package/dist/src/helpers/getters-to-functions.d.ts +1 -1
- package/dist/src/helpers/getters-to-functions.js +1 -1
- package/dist/src/helpers/has-bindings-text.d.ts +2 -0
- package/dist/src/helpers/has-bindings-text.js +21 -0
- package/dist/src/helpers/has-stateful-dom.d.ts +2 -0
- package/dist/src/helpers/has-stateful-dom.js +21 -0
- package/dist/src/helpers/is-children.js +1 -2
- package/dist/src/helpers/is-component.js +1 -3
- package/dist/src/helpers/is-html-attribute.d.ts +1 -1
- package/dist/src/helpers/is-html-attribute.js +4 -19
- package/dist/src/helpers/map-refs.js +4 -1
- package/dist/src/helpers/parsers.js +1 -2
- package/dist/src/helpers/render-imports.d.ts +18 -2
- package/dist/src/helpers/render-imports.js +86 -45
- package/dist/src/helpers/render-imports.test.d.ts +1 -0
- package/dist/src/helpers/render-imports.test.js +19 -0
- package/dist/src/helpers/replace-idenifiers.js +2 -5
- package/dist/src/helpers/strip-state-and-props-refs.d.ts +2 -1
- package/dist/src/helpers/strip-state-and-props-refs.js +5 -8
- package/dist/src/helpers/styles/collect-css.d.ts +6 -0
- package/dist/src/helpers/styles/collect-css.js +87 -0
- package/dist/src/helpers/styles/collect-css.test.d.ts +1 -0
- package/dist/src/helpers/styles/collect-css.test.js +18 -0
- package/dist/src/helpers/styles/collect-styled-components.d.ts +2 -0
- package/dist/src/helpers/styles/collect-styled-components.js +61 -0
- package/dist/src/helpers/styles/helpers.d.ts +30 -0
- package/dist/src/helpers/styles/helpers.js +61 -0
- package/dist/src/helpers/typescript.d.ts +2 -0
- package/dist/src/helpers/typescript.js +2 -0
- package/dist/src/index.d.ts +7 -4
- package/dist/src/index.js +24 -8
- package/dist/src/jsx-types.d.ts +1 -0
- package/dist/src/modules/plugins.d.ts +1 -1
- package/dist/src/parsers/angular.js +10 -28
- package/dist/src/parsers/builder.d.ts +23 -23
- package/dist/src/parsers/builder.js +15 -33
- package/dist/src/parsers/jsx.d.ts +2 -1
- package/dist/src/parsers/jsx.js +214 -64
- package/dist/src/parsers/liquid.js +51 -149
- package/dist/src/plugins/compile-away-builder-components.js +4 -10
- package/dist/src/symbols/symbol-processor.js +4 -6
- package/dist/src/targets.d.ts +5 -3
- package/dist/src/targets.js +7 -1
- package/dist/src/types/config.d.ts +37 -17
- package/dist/src/types/mitosis-component.d.ts +30 -10
- package/dist/src/types/transpiler.d.ts +14 -0
- package/dist/src/types/transpiler.js +2 -0
- package/dist/test/qwik/Accordion/low.jsx +1 -0
- package/dist/test/qwik/For/low.jsx +1 -0
- package/dist/test/qwik/Image/med.js +2 -1
- package/dist/test/qwik/Image.slow/med.js +2 -1
- package/dist/test/qwik/bindings/low.cjs +3 -2
- package/dist/test/qwik/button/low.js +1 -0
- package/dist/test/qwik/component/bindings/low.jsx +2 -1
- package/dist/test/qwik/component/component/inputs/med.cjsx +2 -1
- package/dist/test/qwik/for-loop.bindings/high.cjs +0 -0
- package/dist/test/qwik/for-loop.bindings/low.cjs +47 -0
- package/dist/test/qwik/for-loop.bindings/med.cjs +5 -0
- package/dist/test/qwik/hello_world/stylesheet/low.jsx +1 -0
- package/dist/test/qwik/mount/high.cjs +0 -0
- package/dist/test/qwik/mount/low.cjs +44 -0
- package/dist/test/qwik/mount/med.cjs +3 -0
- package/dist/test/qwik/page-with-symbol/low.js +1 -0
- package/dist/test/qwik/show-hide/med.jsx +2 -1
- package/dist/test/qwik/svg/low.js +1 -0
- package/dist/test/qwik/todo/Todo.cjs/med.cjs +1 -0
- package/dist/test/qwik/todo/Todo.js/med.js +1 -0
- package/dist/test/qwik/todo/Todo.tsx/med.tsx +1 -0
- package/dist/test/qwik/todos/Todo.tsx/low.tsx +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -3
- package/README.md +0 -239
- package/dist/src/__tests__/data/blocks/content-slot.raw.d.ts +0 -6
- package/dist/src/__tests__/data/blocks/content-slot.raw.jsx +0 -13
- package/dist/src/__tests__/data/blocks/onUpdate.raw copy.d.ts +0 -1
- package/dist/src/__tests__/data/blocks/onUpdate.raw copy.jsx +0 -10
- package/dist/src/__tests__/data/blocks/slot.raw.d.ts +0 -5
- package/dist/src/__tests__/data/blocks/slot.raw.jsx +0 -6
- package/dist/src/__tests__/data/blocks/styles.raw.d.ts +0 -1
- package/dist/src/__tests__/data/blocks/styles.raw.jsx +0 -10
- package/dist/src/helpers/babel-transform copy.d.ts +0 -8
- package/dist/src/helpers/babel-transform copy.js +0 -138
- package/dist/src/helpers/collect-styles.d.ts +0 -29
- package/dist/src/helpers/collect-styles.js +0 -176
package/dist/src/parsers/jsx.js
CHANGED
|
@@ -59,8 +59,10 @@ var create_mitosis_component_1 = require("../helpers/create-mitosis-component");
|
|
|
59
59
|
var create_mitosis_node_1 = require("../helpers/create-mitosis-node");
|
|
60
60
|
var is_mitosis_node_1 = require("../helpers/is-mitosis-node");
|
|
61
61
|
var replace_idenifiers_1 = require("../helpers/replace-idenifiers");
|
|
62
|
+
var get_bindings_1 = require("../helpers/get-bindings");
|
|
62
63
|
var replace_new_lines_in_strings_1 = require("../helpers/replace-new-lines-in-strings");
|
|
63
64
|
var json_1 = require("../helpers/json");
|
|
65
|
+
var hooks_1 = require("../constants/hooks");
|
|
64
66
|
var jsxPlugin = require('@babel/plugin-syntax-jsx');
|
|
65
67
|
var tsPreset = require('@babel/preset-typescript');
|
|
66
68
|
exports.selfClosingTags = new Set([
|
|
@@ -80,9 +82,7 @@ exports.selfClosingTags = new Set([
|
|
|
80
82
|
'wbr',
|
|
81
83
|
]);
|
|
82
84
|
var types = babel.types;
|
|
83
|
-
var arrayToAst = function (array) {
|
|
84
|
-
return types.arrayExpression(array.map(function (item) { return jsonToAst(item); }));
|
|
85
|
-
};
|
|
85
|
+
var arrayToAst = function (array) { return types.arrayExpression(array.map(jsonToAst)); };
|
|
86
86
|
var jsonToAst = function (json) {
|
|
87
87
|
if (types.isNode(json)) {
|
|
88
88
|
if (types.isJSXText(json)) {
|
|
@@ -111,6 +111,7 @@ var jsonToAst = function (json) {
|
|
|
111
111
|
};
|
|
112
112
|
var jsonObjectToAst = function (json) {
|
|
113
113
|
if (!json) {
|
|
114
|
+
// TO-DO: This looks concerning...
|
|
114
115
|
return json;
|
|
115
116
|
}
|
|
116
117
|
var properties = [];
|
|
@@ -144,8 +145,7 @@ var parseStateObject = function (object) {
|
|
|
144
145
|
var properties = object.properties;
|
|
145
146
|
var useProperties = properties.map(function (item) {
|
|
146
147
|
if (types.isObjectProperty(item)) {
|
|
147
|
-
if (types.isFunctionExpression(item.value) ||
|
|
148
|
-
types.isArrowFunctionExpression(item.value)) {
|
|
148
|
+
if (types.isFunctionExpression(item.value) || types.isArrowFunctionExpression(item.value)) {
|
|
149
149
|
return (0, exports.createFunctionStringLiteralObjectProperty)(item.key, item.value);
|
|
150
150
|
}
|
|
151
151
|
}
|
|
@@ -172,12 +172,28 @@ var parseCodeJson = function (node) {
|
|
|
172
172
|
var code = (0, generator_1.default)(node).code;
|
|
173
173
|
return (0, json_1.tryParseJson)(code);
|
|
174
174
|
};
|
|
175
|
+
var getPropsTypeRef = function (node) {
|
|
176
|
+
var param = node.params[0];
|
|
177
|
+
// TODO: component function params name must be props
|
|
178
|
+
if (babel.types.isIdentifier(param) &&
|
|
179
|
+
param.name === 'props' &&
|
|
180
|
+
babel.types.isTSTypeAnnotation(param.typeAnnotation)) {
|
|
181
|
+
var paramIdentifier = babel.types.variableDeclaration('let', [
|
|
182
|
+
babel.types.variableDeclarator(param),
|
|
183
|
+
]);
|
|
184
|
+
return (0, generator_1.default)(paramIdentifier)
|
|
185
|
+
.code.replace(/^let\sprops:\s+/, '')
|
|
186
|
+
.replace(/;/g, '');
|
|
187
|
+
}
|
|
188
|
+
return undefined;
|
|
189
|
+
};
|
|
175
190
|
var componentFunctionToJson = function (node, context) {
|
|
176
191
|
var _a;
|
|
177
192
|
var hooks = {};
|
|
178
193
|
var state = {};
|
|
179
194
|
var accessedContext = {};
|
|
180
195
|
var setContext = {};
|
|
196
|
+
var refs = {};
|
|
181
197
|
for (var _i = 0, _b = node.body.body; _i < _b.length; _i++) {
|
|
182
198
|
var item = _b[_i];
|
|
183
199
|
if (types.isExpressionStatement(item)) {
|
|
@@ -191,19 +207,28 @@ var componentFunctionToJson = function (node, context) {
|
|
|
191
207
|
var key = keyNode.name;
|
|
192
208
|
var keyPath = (0, trace_reference_to_module_path_1.traceReferenceToModulePath)(context.builder.component.imports, key);
|
|
193
209
|
var valueNode = expression.arguments[1];
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
210
|
+
if (valueNode) {
|
|
211
|
+
if (types.isObjectExpression(valueNode)) {
|
|
212
|
+
var value = (0, exports.parseStateObject)(valueNode);
|
|
213
|
+
setContext[keyPath] = {
|
|
214
|
+
name: keyNode.name,
|
|
215
|
+
value: value,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
var ref = (0, generator_1.default)(valueNode).code;
|
|
220
|
+
setContext[keyPath] = {
|
|
221
|
+
name: keyNode.name,
|
|
222
|
+
ref: ref,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
}
|
|
200
226
|
}
|
|
201
227
|
}
|
|
202
228
|
else if (expression.callee.name === 'onMount' ||
|
|
203
229
|
expression.callee.name === 'useEffect') {
|
|
204
230
|
var firstArg = expression.arguments[0];
|
|
205
|
-
if (types.isFunctionExpression(firstArg) ||
|
|
206
|
-
types.isArrowFunctionExpression(firstArg)) {
|
|
231
|
+
if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {
|
|
207
232
|
var code = (0, generator_1.default)(firstArg.body)
|
|
208
233
|
.code.trim()
|
|
209
234
|
// Remove arbitrary block wrapping if any
|
|
@@ -218,8 +243,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
218
243
|
else if (expression.callee.name === 'onUpdate') {
|
|
219
244
|
var firstArg = expression.arguments[0];
|
|
220
245
|
var secondArg = expression.arguments[1];
|
|
221
|
-
if (types.isFunctionExpression(firstArg) ||
|
|
222
|
-
types.isArrowFunctionExpression(firstArg)) {
|
|
246
|
+
if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {
|
|
223
247
|
var code = (0, generator_1.default)(firstArg.body)
|
|
224
248
|
.code.trim()
|
|
225
249
|
// Remove arbitrary block wrapping if any
|
|
@@ -228,8 +252,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
228
252
|
.replace(/^{/, '')
|
|
229
253
|
.replace(/}$/, '');
|
|
230
254
|
if (!secondArg ||
|
|
231
|
-
(types.isArrayExpression(secondArg) &&
|
|
232
|
-
secondArg.elements.length > 0)) {
|
|
255
|
+
(types.isArrayExpression(secondArg) && secondArg.elements.length > 0)) {
|
|
233
256
|
var depsCode = secondArg ? (0, generator_1.default)(secondArg).code : '';
|
|
234
257
|
hooks.onUpdate = __spreadArray(__spreadArray([], (hooks.onUpdate || []), true), [
|
|
235
258
|
{
|
|
@@ -242,8 +265,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
242
265
|
}
|
|
243
266
|
else if (expression.callee.name === 'onUnMount') {
|
|
244
267
|
var firstArg = expression.arguments[0];
|
|
245
|
-
if (types.isFunctionExpression(firstArg) ||
|
|
246
|
-
types.isArrowFunctionExpression(firstArg)) {
|
|
268
|
+
if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {
|
|
247
269
|
var code = (0, generator_1.default)(firstArg.body)
|
|
248
270
|
.code.trim()
|
|
249
271
|
// Remove arbitrary block wrapping if any
|
|
@@ -256,8 +278,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
256
278
|
}
|
|
257
279
|
else if (expression.callee.name === 'onInit') {
|
|
258
280
|
var firstArg = expression.arguments[0];
|
|
259
|
-
if (types.isFunctionExpression(firstArg) ||
|
|
260
|
-
types.isArrowFunctionExpression(firstArg)) {
|
|
281
|
+
if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {
|
|
261
282
|
var code = (0, generator_1.default)(firstArg.body)
|
|
262
283
|
.code.trim()
|
|
263
284
|
// Remove arbitrary block wrapping if any
|
|
@@ -283,8 +304,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
283
304
|
// React format, like:
|
|
284
305
|
// const [foo, setFoo] = useState(...)
|
|
285
306
|
if (types.isArrayPattern(declaration.id)) {
|
|
286
|
-
var varName = types.isIdentifier(declaration.id.elements[0]) &&
|
|
287
|
-
declaration.id.elements[0].name;
|
|
307
|
+
var varName = types.isIdentifier(declaration.id.elements[0]) && declaration.id.elements[0].name;
|
|
288
308
|
if (varName) {
|
|
289
309
|
var value = init.arguments[0];
|
|
290
310
|
// Function as init, like:
|
|
@@ -300,18 +320,17 @@ var componentFunctionToJson = function (node, context) {
|
|
|
300
320
|
}
|
|
301
321
|
}
|
|
302
322
|
// Legacy format, like:
|
|
303
|
-
// const state =
|
|
323
|
+
// const state = useStore({...})
|
|
304
324
|
else if (types.isIdentifier(init.callee)) {
|
|
305
|
-
if (init.callee.name ===
|
|
325
|
+
if (init.callee.name === hooks_1.HOOKS.STATE || init.callee.name === hooks_1.HOOKS.STORE) {
|
|
306
326
|
var firstArg = init.arguments[0];
|
|
307
327
|
if (types.isObjectExpression(firstArg)) {
|
|
308
|
-
state
|
|
328
|
+
Object.assign(state, (0, exports.parseStateObject)(firstArg));
|
|
309
329
|
}
|
|
310
330
|
}
|
|
311
|
-
else if (init.callee.name ===
|
|
331
|
+
else if (init.callee.name === hooks_1.HOOKS.CONTEXT) {
|
|
312
332
|
var firstArg = init.arguments[0];
|
|
313
|
-
if (types.isVariableDeclarator(declaration) &&
|
|
314
|
-
types.isIdentifier(declaration.id)) {
|
|
333
|
+
if (types.isVariableDeclarator(declaration) && types.isIdentifier(declaration.id)) {
|
|
315
334
|
if (types.isIdentifier(firstArg)) {
|
|
316
335
|
var varName = declaration.id.name;
|
|
317
336
|
var name_1 = firstArg.name;
|
|
@@ -320,15 +339,34 @@ var componentFunctionToJson = function (node, context) {
|
|
|
320
339
|
path: (0, trace_reference_to_module_path_1.traceReferenceToModulePath)(context.builder.component.imports, name_1),
|
|
321
340
|
};
|
|
322
341
|
}
|
|
342
|
+
else {
|
|
343
|
+
var varName = declaration.id.name;
|
|
344
|
+
var name_2 = (0, generator_1.default)(firstArg).code;
|
|
345
|
+
accessedContext[varName] = {
|
|
346
|
+
name: name_2,
|
|
347
|
+
path: '',
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
else if (init.callee.name === hooks_1.HOOKS.REF) {
|
|
353
|
+
if (types.isIdentifier(declaration.id)) {
|
|
354
|
+
var firstArg = init.arguments[0];
|
|
355
|
+
var varName = declaration.id.name;
|
|
356
|
+
refs[varName] = {
|
|
357
|
+
argument: (0, generator_1.default)(firstArg).code,
|
|
358
|
+
};
|
|
359
|
+
// Typescript Parameter
|
|
360
|
+
if (types.isTSTypeParameterInstantiation(init.typeParameters)) {
|
|
361
|
+
refs[varName].typeParameter = (0, generator_1.default)(init.typeParameters.params[0]).code;
|
|
362
|
+
}
|
|
323
363
|
}
|
|
324
364
|
}
|
|
325
365
|
}
|
|
326
366
|
}
|
|
327
367
|
}
|
|
328
368
|
}
|
|
329
|
-
var theReturn = node.body.body.find(function (item) {
|
|
330
|
-
return types.isReturnStatement(item);
|
|
331
|
-
});
|
|
369
|
+
var theReturn = node.body.body.find(function (item) { return types.isReturnStatement(item); });
|
|
332
370
|
var children = [];
|
|
333
371
|
if (theReturn) {
|
|
334
372
|
var value = theReturn.argument;
|
|
@@ -336,10 +374,19 @@ var componentFunctionToJson = function (node, context) {
|
|
|
336
374
|
children.push(jsxElementToJson(value));
|
|
337
375
|
}
|
|
338
376
|
}
|
|
339
|
-
|
|
377
|
+
var localExports = context.builder.component.exports;
|
|
378
|
+
if (localExports) {
|
|
379
|
+
var bindingsCode_1 = (0, get_bindings_1.getBindingsCode)(children);
|
|
380
|
+
Object.keys(localExports).forEach(function (name) {
|
|
381
|
+
var found = bindingsCode_1.find(function (code) { return code.match(new RegExp("\\b".concat(name, "\\b"))); });
|
|
382
|
+
localExports[name].usedInLocal = Boolean(found);
|
|
383
|
+
});
|
|
384
|
+
context.builder.component.exports = localExports;
|
|
385
|
+
}
|
|
386
|
+
return (0, create_mitosis_component_1.createMitosisComponent)(__assign(__assign({}, context.builder.component), { name: (_a = node.id) === null || _a === void 0 ? void 0 : _a.name, state: state, children: children, refs: refs, hooks: hooks, context: {
|
|
340
387
|
get: accessedContext,
|
|
341
388
|
set: setContext,
|
|
342
|
-
} }));
|
|
389
|
+
}, propsTypeRef: getPropsTypeRef(node) }));
|
|
343
390
|
};
|
|
344
391
|
var jsxElementToJson = function (node) {
|
|
345
392
|
if (types.isJSXText(node)) {
|
|
@@ -422,9 +469,7 @@ var jsxElementToJson = function (node) {
|
|
|
422
469
|
if (types.isJSXFragment(node)) {
|
|
423
470
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
424
471
|
name: 'Fragment',
|
|
425
|
-
children: node.children
|
|
426
|
-
.map(function (item) { return jsxElementToJson(item); })
|
|
427
|
-
.filter(Boolean),
|
|
472
|
+
children: node.children.map(function (item) { return jsxElementToJson(item); }).filter(Boolean),
|
|
428
473
|
});
|
|
429
474
|
}
|
|
430
475
|
var nodeName = (0, generator_1.default)(node.openingElement.name).code;
|
|
@@ -443,16 +488,12 @@ var jsxElementToJson = function (node) {
|
|
|
443
488
|
else: elseValue || undefined,
|
|
444
489
|
},
|
|
445
490
|
bindings: __assign({}, (whenValue ? { when: { code: whenValue } } : {})),
|
|
446
|
-
children: node.children
|
|
447
|
-
.map(function (item) { return jsxElementToJson(item); })
|
|
448
|
-
.filter(Boolean),
|
|
491
|
+
children: node.children.map(function (item) { return jsxElementToJson(item); }).filter(Boolean),
|
|
449
492
|
});
|
|
450
493
|
}
|
|
451
494
|
// <For ...> control flow component
|
|
452
495
|
if (nodeName === 'For') {
|
|
453
|
-
var child = node.children.find(function (item) {
|
|
454
|
-
return types.isJSXExpressionContainer(item);
|
|
455
|
-
});
|
|
496
|
+
var child = node.children.find(function (item) { return types.isJSXExpressionContainer(item); });
|
|
456
497
|
if (types.isJSXExpressionContainer(child)) {
|
|
457
498
|
var childExpression = child.expression;
|
|
458
499
|
if (types.isArrowFunctionExpression(childExpression)) {
|
|
@@ -461,8 +502,8 @@ var jsxElementToJson = function (node) {
|
|
|
461
502
|
name: 'For',
|
|
462
503
|
bindings: {
|
|
463
504
|
each: {
|
|
464
|
-
code: (0, generator_1.default)(node.openingElement
|
|
465
|
-
.
|
|
505
|
+
code: (0, generator_1.default)(node.openingElement.attributes[0]
|
|
506
|
+
.value.expression).code,
|
|
466
507
|
},
|
|
467
508
|
},
|
|
468
509
|
scope: {
|
|
@@ -524,9 +565,7 @@ var jsxElementToJson = function (node) {
|
|
|
524
565
|
}
|
|
525
566
|
return memo;
|
|
526
567
|
}, {}),
|
|
527
|
-
children: node.children
|
|
528
|
-
.map(function (item) { return jsxElementToJson(item); })
|
|
529
|
-
.filter(Boolean),
|
|
568
|
+
children: node.children.map(function (item) { return jsxElementToJson(item); }).filter(Boolean),
|
|
530
569
|
});
|
|
531
570
|
};
|
|
532
571
|
var getHook = function (node) {
|
|
@@ -645,8 +684,7 @@ function mapReactIdentifiers(json) {
|
|
|
645
684
|
}
|
|
646
685
|
var expressionToNode = function (str) {
|
|
647
686
|
var code = "export default ".concat(str);
|
|
648
|
-
return babel.parse(code).program
|
|
649
|
-
.body[0].declaration;
|
|
687
|
+
return babel.parse(code).program.body[0].declaration;
|
|
650
688
|
};
|
|
651
689
|
/**
|
|
652
690
|
* Convert <Context.Provider /> to hooks formats by mutating the
|
|
@@ -658,10 +696,10 @@ function extractContextComponents(json) {
|
|
|
658
696
|
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
659
697
|
if (item.name.endsWith('.Provider')) {
|
|
660
698
|
var value = (_b = (_a = item.bindings) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.code;
|
|
661
|
-
var
|
|
662
|
-
var refPath = (0, trace_reference_to_module_path_1.traceReferenceToModulePath)(json.imports,
|
|
699
|
+
var name_3 = item.name.split('.')[0];
|
|
700
|
+
var refPath = (0, trace_reference_to_module_path_1.traceReferenceToModulePath)(json.imports, name_3);
|
|
663
701
|
json.context.set[refPath] = {
|
|
664
|
-
name:
|
|
702
|
+
name: name_3,
|
|
665
703
|
value: value
|
|
666
704
|
? (0, exports.parseStateObject)(expressionToNode(value))
|
|
667
705
|
: undefined,
|
|
@@ -679,6 +717,63 @@ function extractContextComponents(json) {
|
|
|
679
717
|
var isImportOrDefaultExport = function (node) {
|
|
680
718
|
return types.isExportDefaultDeclaration(node) || types.isImportDeclaration(node);
|
|
681
719
|
};
|
|
720
|
+
var isTypeOrInterface = function (node) {
|
|
721
|
+
return types.isTSTypeAliasDeclaration(node) ||
|
|
722
|
+
types.isTSInterfaceDeclaration(node) ||
|
|
723
|
+
(types.isExportNamedDeclaration(node) && types.isTSTypeAliasDeclaration(node.declaration)) ||
|
|
724
|
+
(types.isExportNamedDeclaration(node) && types.isTSInterfaceDeclaration(node.declaration));
|
|
725
|
+
};
|
|
726
|
+
var collectTypes = function (node, context) {
|
|
727
|
+
var typeStr = (0, generator_1.default)(node).code;
|
|
728
|
+
var _a = context.builder.component.types, types = _a === void 0 ? [] : _a;
|
|
729
|
+
types.push(typeStr);
|
|
730
|
+
context.builder.component.types = types.filter(Boolean);
|
|
731
|
+
};
|
|
732
|
+
var collectInterfaces = function (node, context) {
|
|
733
|
+
var interfaceStr = (0, generator_1.default)(node).code;
|
|
734
|
+
var _a = context.builder.component.interfaces, interfaces = _a === void 0 ? [] : _a;
|
|
735
|
+
interfaces.push(interfaceStr);
|
|
736
|
+
context.builder.component.interfaces = interfaces.filter(Boolean);
|
|
737
|
+
};
|
|
738
|
+
var beforeParse = function (path) {
|
|
739
|
+
path.traverse({
|
|
740
|
+
FunctionDeclaration: function (path) {
|
|
741
|
+
undoPropsDestructure(path);
|
|
742
|
+
},
|
|
743
|
+
});
|
|
744
|
+
};
|
|
745
|
+
function undoPropsDestructure(path) {
|
|
746
|
+
var node = path.node;
|
|
747
|
+
if (node.params.length && types.isObjectPattern(node.params[0])) {
|
|
748
|
+
var param = node.params[0];
|
|
749
|
+
var propsMap_1 = param.properties.reduce(function (pre, cur) {
|
|
750
|
+
if (types.isObjectProperty(cur) &&
|
|
751
|
+
types.isIdentifier(cur.key) &&
|
|
752
|
+
types.isIdentifier(cur.value)) {
|
|
753
|
+
pre[cur.value.name] = "props.".concat(cur.key.name);
|
|
754
|
+
return pre;
|
|
755
|
+
}
|
|
756
|
+
return pre;
|
|
757
|
+
}, {});
|
|
758
|
+
if (param.typeAnnotation) {
|
|
759
|
+
node.params = [
|
|
760
|
+
__assign(__assign({}, babel.types.identifier('props')), { typeAnnotation: param.typeAnnotation }),
|
|
761
|
+
];
|
|
762
|
+
path.replaceWith(node);
|
|
763
|
+
}
|
|
764
|
+
path.traverse({
|
|
765
|
+
JSXExpressionContainer: function (path) {
|
|
766
|
+
var node = path.node;
|
|
767
|
+
if (types.isIdentifier(node.expression)) {
|
|
768
|
+
var name_4 = node.expression.name;
|
|
769
|
+
if (propsMap_1[name_4]) {
|
|
770
|
+
path.replaceWith(babel.types.jsxExpressionContainer(babel.types.identifier(propsMap_1[name_4])));
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
},
|
|
774
|
+
});
|
|
775
|
+
}
|
|
776
|
+
}
|
|
682
777
|
/**
|
|
683
778
|
* This function takes the raw string from a Mitosis component, and converts it into a JSON that can be processed by
|
|
684
779
|
* each generator function.
|
|
@@ -708,17 +803,56 @@ function parseJsx(jsx, options) {
|
|
|
708
803
|
if (context.builder) {
|
|
709
804
|
return;
|
|
710
805
|
}
|
|
806
|
+
beforeParse(path);
|
|
711
807
|
context.builder = {
|
|
712
808
|
component: (0, create_mitosis_component_1.createMitosisComponent)(),
|
|
713
809
|
};
|
|
714
|
-
var keepStatements = path.node.body.filter(function (statement) {
|
|
715
|
-
|
|
810
|
+
var keepStatements = path.node.body.filter(function (statement) { return isImportOrDefaultExport(statement) || isTypeOrInterface(statement); });
|
|
811
|
+
var exportsOrLocalVariables = path.node.body.filter(function (statement) {
|
|
812
|
+
return !isImportOrDefaultExport(statement) &&
|
|
813
|
+
!isTypeOrInterface(statement) &&
|
|
814
|
+
!types.isExpressionStatement(statement);
|
|
716
815
|
});
|
|
816
|
+
context.builder.component.exports = exportsOrLocalVariables.reduce(function (pre, node) {
|
|
817
|
+
var _a, _b;
|
|
818
|
+
var name, isFunction;
|
|
819
|
+
if (babel.types.isExportNamedDeclaration(node)) {
|
|
820
|
+
if (babel.types.isVariableDeclaration(node.declaration) &&
|
|
821
|
+
babel.types.isIdentifier(node.declaration.declarations[0].id)) {
|
|
822
|
+
name = node.declaration.declarations[0].id.name;
|
|
823
|
+
isFunction = babel.types.isFunction(node.declaration.declarations[0].init);
|
|
824
|
+
}
|
|
825
|
+
if (babel.types.isFunctionDeclaration(node.declaration)) {
|
|
826
|
+
name = (_a = node.declaration.id) === null || _a === void 0 ? void 0 : _a.name;
|
|
827
|
+
isFunction = true;
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
else {
|
|
831
|
+
if (babel.types.isVariableDeclaration(node) &&
|
|
832
|
+
babel.types.isIdentifier(node.declarations[0].id)) {
|
|
833
|
+
name = node.declarations[0].id.name;
|
|
834
|
+
isFunction = babel.types.isFunction(node.declarations[0].init);
|
|
835
|
+
}
|
|
836
|
+
if (babel.types.isFunctionDeclaration(node)) {
|
|
837
|
+
name = (_b = node.id) === null || _b === void 0 ? void 0 : _b.name;
|
|
838
|
+
isFunction = true;
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
if (name) {
|
|
842
|
+
pre[name] = {
|
|
843
|
+
code: (0, generator_1.default)(node).code,
|
|
844
|
+
isFunction: isFunction,
|
|
845
|
+
};
|
|
846
|
+
}
|
|
847
|
+
else {
|
|
848
|
+
console.warn('Could not parse export or variable: ignoring node', node);
|
|
849
|
+
}
|
|
850
|
+
return pre;
|
|
851
|
+
}, {});
|
|
717
852
|
var cutStatements = path.node.body.filter(function (statement) { return !isImportOrDefaultExport(statement); });
|
|
718
853
|
subComponentFunctions = path.node.body
|
|
719
854
|
.filter(function (node) {
|
|
720
|
-
return !types.isExportDefaultDeclaration(node) &&
|
|
721
|
-
types.isFunctionDeclaration(node);
|
|
855
|
+
return !types.isExportDefaultDeclaration(node) && types.isFunctionDeclaration(node);
|
|
722
856
|
})
|
|
723
857
|
.map(function (node) { return "export default ".concat((0, generator_1.default)(node).code); });
|
|
724
858
|
cutStatements = collectMetadata(cutStatements, context.builder.component, useOptions);
|
|
@@ -731,15 +865,16 @@ function parseJsx(jsx, options) {
|
|
|
731
865
|
FunctionDeclaration: function (path, context) {
|
|
732
866
|
var node = path.node;
|
|
733
867
|
if (types.isIdentifier(node.id)) {
|
|
734
|
-
var
|
|
735
|
-
if (
|
|
868
|
+
var name_5 = node.id.name;
|
|
869
|
+
if (name_5[0].toUpperCase() === name_5[0]) {
|
|
736
870
|
path.replaceWith(jsonToAst(componentFunctionToJson(node, context)));
|
|
737
871
|
}
|
|
738
872
|
}
|
|
739
873
|
},
|
|
740
874
|
ImportDeclaration: function (path, context) {
|
|
741
875
|
// @builder.io/mitosis or React imports compile away
|
|
742
|
-
|
|
876
|
+
var customPackages = (options === null || options === void 0 ? void 0 : options.compileAwayPackages) || [];
|
|
877
|
+
if (__spreadArray(['react', '@builder.io/mitosis', '@emotion/react'], customPackages, true).includes(path.node.source.value)) {
|
|
743
878
|
path.remove();
|
|
744
879
|
return;
|
|
745
880
|
}
|
|
@@ -750,7 +885,8 @@ function parseJsx(jsx, options) {
|
|
|
750
885
|
for (var _i = 0, _a = path.node.specifiers; _i < _a.length; _i++) {
|
|
751
886
|
var specifier = _a[_i];
|
|
752
887
|
if (types.isImportSpecifier(specifier)) {
|
|
753
|
-
importObject.imports[specifier.imported.name] =
|
|
888
|
+
importObject.imports[specifier.imported.name] =
|
|
889
|
+
specifier.local.name;
|
|
754
890
|
}
|
|
755
891
|
else if (types.isImportDefaultSpecifier(specifier)) {
|
|
756
892
|
importObject.imports[specifier.local.name] = 'default';
|
|
@@ -769,6 +905,22 @@ function parseJsx(jsx, options) {
|
|
|
769
905
|
var node = path.node;
|
|
770
906
|
path.replaceWith(jsonToAst(jsxElementToJson(node)));
|
|
771
907
|
},
|
|
908
|
+
ExportNamedDeclaration: function (path, context) {
|
|
909
|
+
var node = path.node;
|
|
910
|
+
var newTypeStr = (0, generator_1.default)(node).code;
|
|
911
|
+
if (babel.types.isTSInterfaceDeclaration(node.declaration)) {
|
|
912
|
+
collectInterfaces(path.node, context);
|
|
913
|
+
}
|
|
914
|
+
if (babel.types.isTSTypeAliasDeclaration(node.declaration)) {
|
|
915
|
+
collectTypes(path.node, context);
|
|
916
|
+
}
|
|
917
|
+
},
|
|
918
|
+
TSTypeAliasDeclaration: function (path, context) {
|
|
919
|
+
collectTypes(path.node, context);
|
|
920
|
+
},
|
|
921
|
+
TSInterfaceDeclaration: function (path, context) {
|
|
922
|
+
collectInterfaces(path.node, context);
|
|
923
|
+
},
|
|
772
924
|
},
|
|
773
925
|
}); },
|
|
774
926
|
],
|
|
@@ -785,9 +937,7 @@ function parseJsx(jsx, options) {
|
|
|
785
937
|
var parsed = (0, json_1.tryParseJson)(toParse);
|
|
786
938
|
mapReactIdentifiers(parsed);
|
|
787
939
|
extractContextComponents(parsed);
|
|
788
|
-
parsed.subComponents = subComponentFunctions.map(function (item) {
|
|
789
|
-
return parseJsx(item, useOptions);
|
|
790
|
-
});
|
|
940
|
+
parsed.subComponents = subComponentFunctions.map(function (item) { return parseJsx(item, useOptions); });
|
|
791
941
|
return parsed;
|
|
792
942
|
}
|
|
793
943
|
exports.parseJsx = parseJsx;
|