@builder.io/mitosis 0.0.75 → 0.0.77-0
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/generators/alpine/generate.d.ts +20 -0
- package/dist/src/generators/alpine/generate.js +207 -0
- package/dist/src/generators/alpine/index.d.ts +1 -0
- package/dist/src/generators/alpine/index.js +17 -0
- package/dist/src/generators/alpine/render-mount-hook.d.ts +2 -0
- package/dist/src/generators/alpine/render-mount-hook.js +14 -0
- package/dist/src/generators/alpine/render-update-hooks.d.ts +5 -0
- package/dist/src/generators/alpine/render-update-hooks.js +44 -0
- package/dist/src/generators/angular.d.ts +2 -3
- package/dist/src/generators/angular.js +89 -97
- package/dist/src/generators/helpers/functions.js +2 -1
- package/dist/src/generators/html.js +1 -1
- package/dist/src/generators/qwik/component-generator.js +8 -1
- package/dist/src/generators/svelte/blocks.js +19 -21
- package/dist/src/generators/svelte/helpers.d.ts +5 -1
- package/dist/src/generators/svelte/helpers.js +8 -5
- package/dist/src/generators/svelte/svelte.js +34 -31
- package/dist/src/generators/swift-ui.js +1 -1
- package/dist/src/generators/vue/blocks.js +4 -2
- package/dist/src/generators/vue/compositionApi.js +3 -1
- package/dist/src/generators/vue/helpers.d.ts +2 -2
- package/dist/src/generators/vue/helpers.js +13 -5
- package/dist/src/generators/vue/optionsApi.js +0 -5
- package/dist/src/generators/vue/vue.js +4 -26
- package/dist/src/helpers/babel-transform.d.ts +2 -1
- package/dist/src/helpers/babel-transform.js +16 -19
- package/dist/src/helpers/get-state-object-string.d.ts +1 -1
- package/dist/src/helpers/get-state-object-string.js +5 -5
- package/dist/src/helpers/has-bindings-text.js +1 -1
- package/dist/src/helpers/is-children.d.ts +4 -1
- package/dist/src/helpers/is-children.js +5 -4
- package/dist/src/helpers/patterns.d.ts +1 -0
- package/dist/src/helpers/patterns.js +3 -1
- package/dist/src/helpers/plugins/process-code.js +1 -1
- package/dist/src/helpers/render-imports.d.ts +11 -3
- package/dist/src/helpers/render-imports.js +18 -4
- package/dist/src/helpers/styles/helpers.d.ts +0 -1
- package/dist/src/helpers/traverse-nodes.d.ts +1 -1
- package/dist/src/helpers/traverse-nodes.js +3 -3
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +2 -3
- package/dist/src/parsers/builder.d.ts +4 -4
- package/dist/src/parsers/jsx/function-parser.js +8 -0
- package/dist/src/parsers/jsx/metadata.js +17 -1
- package/dist/src/parsers/jsx/state.js +6 -1
- package/dist/src/plugins/map-styles.js +1 -1
- package/dist/src/targets.d.ts +1 -0
- package/dist/src/targets.js +2 -0
- package/dist/src/types/mitosis-component.d.ts +4 -8
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/jsx-runtime.d.ts +2 -0
- package/package.json +9 -10
|
@@ -28,7 +28,6 @@ var get_refs_1 = require("../../helpers/get-refs");
|
|
|
28
28
|
var get_state_object_string_1 = require("../../helpers/get-state-object-string");
|
|
29
29
|
var is_mitosis_node_1 = require("../../helpers/is-mitosis-node");
|
|
30
30
|
var render_imports_1 = require("../../helpers/render-imports");
|
|
31
|
-
var strip_state_and_props_refs_1 = require("../../helpers/strip-state-and-props-refs");
|
|
32
31
|
var plugins_1 = require("../../modules/plugins");
|
|
33
32
|
var strip_meta_properties_1 = require("../../helpers/strip-meta-properties");
|
|
34
33
|
var getters_to_functions_1 = require("../../helpers/getters-to-functions");
|
|
@@ -42,22 +41,30 @@ var merge_options_1 = require("../../helpers/merge-options");
|
|
|
42
41
|
var process_code_1 = require("../../helpers/plugins/process-code");
|
|
43
42
|
var helpers_2 = require("./helpers");
|
|
44
43
|
var blocks_1 = require("./blocks");
|
|
44
|
+
var patterns_1 = require("../../helpers/patterns");
|
|
45
45
|
var getContextCode = function (json) {
|
|
46
46
|
var contextGetters = json.context.get;
|
|
47
|
-
return Object.
|
|
48
|
-
.map(function (
|
|
47
|
+
return Object.entries(contextGetters)
|
|
48
|
+
.map(function (_a) {
|
|
49
|
+
var key = _a[0], context = _a[1];
|
|
50
|
+
var name = context.name;
|
|
51
|
+
return "let ".concat(key, " = getContext(").concat(name, ".key);");
|
|
52
|
+
})
|
|
49
53
|
.join('\n');
|
|
50
54
|
};
|
|
51
|
-
var setContextCode = function (
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
var setContextCode = function (_a) {
|
|
56
|
+
var json = _a.json, options = _a.options;
|
|
57
|
+
var processCode = (0, helpers_2.stripStateAndProps)({ json: json, options: options });
|
|
58
|
+
return Object.values(json.context.set)
|
|
59
|
+
.map(function (context) {
|
|
60
|
+
var value = context.value, name = context.name, ref = context.ref;
|
|
61
|
+
var key = value ? "".concat(name, ".key") : name;
|
|
62
|
+
var valueStr = value
|
|
63
|
+
? processCode((0, get_state_object_string_1.stringifyContextValue)(value))
|
|
58
64
|
: ref
|
|
59
|
-
? (
|
|
60
|
-
: 'undefined'
|
|
65
|
+
? processCode(ref)
|
|
66
|
+
: 'undefined';
|
|
67
|
+
return "setContext(".concat(key, ", ").concat(valueStr, ");");
|
|
61
68
|
})
|
|
62
69
|
.join('\n');
|
|
63
70
|
};
|
|
@@ -92,20 +99,11 @@ var useBindValue = function (json, options) {
|
|
|
92
99
|
}
|
|
93
100
|
});
|
|
94
101
|
};
|
|
95
|
-
/**
|
|
96
|
-
* Removes all `this.` references.
|
|
97
|
-
*/
|
|
98
|
-
var stripThisRefs = function (str) {
|
|
99
|
-
return str.replace(/this\.([a-zA-Z_\$0-9]+)/g, '$1');
|
|
100
|
-
};
|
|
101
102
|
var DEFAULT_OPTIONS = {
|
|
102
103
|
stateType: 'variables',
|
|
103
104
|
prettier: true,
|
|
104
105
|
plugins: [functions_1.FUNCTION_HACK_PLUGIN],
|
|
105
106
|
};
|
|
106
|
-
var transformHookCode = function (options) { return function (hookCode) {
|
|
107
|
-
return (0, function_1.pipe)((0, helpers_2.stripStateAndProps)(hookCode, options), babel_transform_1.babelTransformCode);
|
|
108
|
-
}; };
|
|
109
107
|
var componentToSvelte = function (userProvidedOptions) {
|
|
110
108
|
return function (_a) {
|
|
111
109
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
@@ -115,12 +113,13 @@ var componentToSvelte = function (userProvidedOptions) {
|
|
|
115
113
|
(0, process_code_1.CODE_PROCESSOR_PLUGIN)(function (codeType) {
|
|
116
114
|
switch (codeType) {
|
|
117
115
|
case 'hooks':
|
|
118
|
-
return
|
|
116
|
+
return (0, function_1.flow)((0, helpers_2.stripStateAndProps)({ json: json, options: options }), babel_transform_1.babelTransformCode);
|
|
119
117
|
case 'bindings':
|
|
120
118
|
case 'hooks-deps':
|
|
121
119
|
case 'state':
|
|
120
|
+
return (0, function_1.flow)((0, helpers_2.stripStateAndProps)({ json: json, options: options }), patterns_1.stripGetter);
|
|
122
121
|
case 'properties':
|
|
123
|
-
return
|
|
122
|
+
return (0, helpers_2.stripStateAndProps)({ json: json, options: options });
|
|
124
123
|
}
|
|
125
124
|
}),
|
|
126
125
|
], false);
|
|
@@ -140,7 +139,6 @@ var componentToSvelte = function (userProvidedOptions) {
|
|
|
140
139
|
getters: false,
|
|
141
140
|
format: options.stateType === 'proxies' ? 'object' : 'variables',
|
|
142
141
|
keyPrefix: options.stateType === 'variables' ? 'let ' : '',
|
|
143
|
-
valueMapper: function (code) { return (0, helpers_2.stripStateAndProps)(code, options); },
|
|
144
142
|
}), babel_transform_1.babelTransformCode);
|
|
145
143
|
var getterString = (0, function_1.pipe)((0, get_state_object_string_1.getStateObjectStringFromComponent)(json, {
|
|
146
144
|
data: false,
|
|
@@ -149,7 +147,10 @@ var componentToSvelte = function (userProvidedOptions) {
|
|
|
149
147
|
format: 'variables',
|
|
150
148
|
keyPrefix: '$: ',
|
|
151
149
|
valueMapper: function (code) {
|
|
152
|
-
return
|
|
150
|
+
return code
|
|
151
|
+
.trim()
|
|
152
|
+
.replace(/^([a-zA-Z_\$0-9]+)/, '$1 = ')
|
|
153
|
+
.replace(/\)/, ') => ');
|
|
153
154
|
},
|
|
154
155
|
}), babel_transform_1.babelTransformCode);
|
|
155
156
|
var functionsString = (0, function_1.pipe)((0, get_state_object_string_1.getStateObjectStringFromComponent)(json, {
|
|
@@ -157,7 +158,6 @@ var componentToSvelte = function (userProvidedOptions) {
|
|
|
157
158
|
getters: false,
|
|
158
159
|
functions: true,
|
|
159
160
|
format: 'variables',
|
|
160
|
-
valueMapper: function (code) { return (0, function_1.pipe)((0, helpers_2.stripStateAndProps)(code, options), stripThisRefs); },
|
|
161
161
|
}), babel_transform_1.babelTransformCode);
|
|
162
162
|
var hasData = dataString.length > 4;
|
|
163
163
|
var str = '';
|
|
@@ -167,6 +167,7 @@ var componentToSvelte = function (userProvidedOptions) {
|
|
|
167
167
|
}
|
|
168
168
|
// prepare svelte imports
|
|
169
169
|
var svelteImports = [];
|
|
170
|
+
var svelteStoreImports = [];
|
|
170
171
|
if ((_d = (_c = json.hooks.onMount) === null || _c === void 0 ? void 0 : _c.code) === null || _d === void 0 ? void 0 : _d.length) {
|
|
171
172
|
svelteImports.push('onMount');
|
|
172
173
|
}
|
|
@@ -179,9 +180,11 @@ var componentToSvelte = function (userProvidedOptions) {
|
|
|
179
180
|
if ((0, context_1.hasContext)(component)) {
|
|
180
181
|
svelteImports.push('getContext', 'setContext');
|
|
181
182
|
}
|
|
182
|
-
str += (0, dedent_1.default)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n <script ", ">\n ", "\n ", "\n\n ", "\n ", "\n ", "\n ", "\n ", "\n\n ", "\n ", "\n\n ", "\n\n ", "\n ", "\n \n ", "\n\n ", "\n\n ", "\n </script>\n\n ", "\n\n ", "\n "], ["\n <script ", ">\n ", "\n ", "\n\n ", "\n ", "\n "
|
|
183
|
+
str += (0, dedent_1.default)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n <script ", ">\n ", "\n ", "\n\n ", "\n\n ", "\n ", "\n ", "\n ", "\n ", "\n\n ", "\n ", "\n\n ", "\n\n ", "\n ", "\n \n ", "\n\n ", "\n\n ", "\n </script>\n\n ", "\n\n ", "\n "], ["\n <script ", ">\n ", "\n ", "\n\n ", "\n\n ", "\n ", "\n "
|
|
183
184
|
// https://svelte.dev/repl/bd9b56891f04414982517bbd10c52c82?version=3.31.0
|
|
184
|
-
, "\n ", "\n ", "\n\n ", "\n ", "\n\n ", "\n\n ", "\n ", "\n \n ", "\n\n ", "\n\n ", "\n </script>\n\n ", "\n\n ", "\n "])), tsLangAttribute, !svelteImports.length ? '' : "import { ".concat(svelteImports.sort().join(', '), " } from 'svelte'"),
|
|
185
|
+
, "\n ", "\n ", "\n\n ", "\n ", "\n\n ", "\n\n ", "\n ", "\n \n ", "\n\n ", "\n\n ", "\n </script>\n\n ", "\n\n ", "\n "])), tsLangAttribute, !svelteImports.length ? '' : "import { ".concat(svelteImports.sort().join(', '), " } from 'svelte'"), !svelteStoreImports.length
|
|
186
|
+
? ''
|
|
187
|
+
: "import { ".concat(svelteStoreImports.sort().join(', '), " } from 'svelte/store'"), (0, render_imports_1.renderPreComponent)({ component: json, target: 'svelte' }), !hasData || options.stateType === 'variables' ? '' : "import onChange from 'on-change'", props
|
|
185
188
|
.map(function (name) {
|
|
186
189
|
if (name === 'children') {
|
|
187
190
|
return '';
|
|
@@ -200,17 +203,17 @@ var componentToSvelte = function (userProvidedOptions) {
|
|
|
200
203
|
// https://svelte.dev/repl/bd9b56891f04414982517bbd10c52c82?version=3.31.0
|
|
201
204
|
(0, helpers_1.hasStyle)(json)
|
|
202
205
|
? "\n function mitosis_styling (node, vars) {\n Object.entries(vars || {}).forEach(([ p, v ]) => {\n if (p.startsWith('--')) {\n node.style.setProperty(p, v);\n } else {\n node.style[p] = v;\n }\n })\n }\n "
|
|
203
|
-
: '', getContextCode(json), setContextCode(json), functionsString.length < 4 ? '' : functionsString, getterString.length < 4 ? '' : getterString, refs.map(function (ref) { return "let ".concat((0,
|
|
206
|
+
: '', getContextCode(json), setContextCode({ json: json, options: options }), functionsString.length < 4 ? '' : functionsString, getterString.length < 4 ? '' : getterString, refs.map(function (ref) { return "let ".concat((0, helpers_2.stripStateAndProps)({ json: json, options: options })(ref)); }).join('\n'), options.stateType === 'proxies'
|
|
204
207
|
? dataString.length < 4
|
|
205
208
|
? ''
|
|
206
209
|
: "let state = onChange(".concat(dataString, ", () => state = state)")
|
|
207
|
-
: dataString, (
|
|
210
|
+
: dataString, (_j = (_h = json.hooks.onInit) === null || _h === void 0 ? void 0 : _h.code) !== null && _j !== void 0 ? _j : '', !((_k = json.hooks.onMount) === null || _k === void 0 ? void 0 : _k.code) ? '' : "onMount(() => { ".concat(json.hooks.onMount.code, " });"), ((_l = json.hooks.onUpdate) === null || _l === void 0 ? void 0 : _l.map(function (_a, index) {
|
|
208
211
|
var code = _a.code, deps = _a.deps;
|
|
209
212
|
if (!deps) {
|
|
210
213
|
return "afterUpdate(() => { ".concat(code, " });");
|
|
211
214
|
}
|
|
212
215
|
var fnName = "onUpdateFn_".concat(index);
|
|
213
|
-
return "\n function ".concat(fnName, "() {\n ").concat(code, "\n }\n $: ").concat(fnName, "(...").concat(
|
|
216
|
+
return "\n function ".concat(fnName, "() {\n ").concat(code, "\n }\n $: ").concat(fnName, "(...").concat(deps, ")\n ");
|
|
214
217
|
}).join(';')) || '', !((_m = json.hooks.onUnMount) === null || _m === void 0 ? void 0 : _m.code) ? '' : "onDestroy(() => { ".concat(json.hooks.onUnMount.code, " });"), json.children
|
|
215
218
|
.map(function (item) {
|
|
216
219
|
return (0, blocks_1.blockToSvelte)({
|
|
@@ -59,7 +59,7 @@ var blockToSwift = function (json, options) {
|
|
|
59
59
|
// TODO: Add support for `{props.children}` bindings
|
|
60
60
|
// Right now we return an empty string because the generated code
|
|
61
61
|
// is very likely wrong.
|
|
62
|
-
if ((0, is_children_1.default)(json)) {
|
|
62
|
+
if ((0, is_children_1.default)({ node: json })) {
|
|
63
63
|
return '/* `props.children` is not supported yet for SwiftUI */';
|
|
64
64
|
}
|
|
65
65
|
if (json.properties._text) {
|
|
@@ -236,7 +236,7 @@ var blockToVue = function (node, options, scope) {
|
|
|
236
236
|
if (nodeMapper) {
|
|
237
237
|
return nodeMapper(node, options, scope);
|
|
238
238
|
}
|
|
239
|
-
if ((0, is_children_1.default)(node)) {
|
|
239
|
+
if ((0, is_children_1.default)({ node: node })) {
|
|
240
240
|
return "<slot/>";
|
|
241
241
|
}
|
|
242
242
|
if (node.name === 'style') {
|
|
@@ -272,7 +272,9 @@ var blockToVue = function (node, options, scope) {
|
|
|
272
272
|
var stringifiedBindings = Object.entries(node.bindings).map(stringifyBinding(node)).join('');
|
|
273
273
|
str += stringifiedBindings;
|
|
274
274
|
// spreads
|
|
275
|
-
var spreads = (0, lodash_1.filter)(node.bindings, function (binding) { return (binding === null || binding === void 0 ? void 0 : binding.type) === 'spread'; }).map(function (value) {
|
|
275
|
+
var spreads = (0, lodash_1.filter)(node.bindings, function (binding) { return (binding === null || binding === void 0 ? void 0 : binding.type) === 'spread'; }).map(function (value) {
|
|
276
|
+
return (value === null || value === void 0 ? void 0 : value.code) === 'props' ? '$props' : value === null || value === void 0 ? void 0 : value.code;
|
|
277
|
+
});
|
|
276
278
|
if (spreads === null || spreads === void 0 ? void 0 : spreads.length) {
|
|
277
279
|
if (spreads.length > 1) {
|
|
278
280
|
var spreadsString = "{...".concat(spreads.join(', ...'), "}");
|
|
@@ -36,7 +36,9 @@ function generateCompositionApiScript(component, options, template, props, onUpd
|
|
|
36
36
|
functions: false,
|
|
37
37
|
getters: false,
|
|
38
38
|
format: 'variables',
|
|
39
|
-
valueMapper: function (code
|
|
39
|
+
valueMapper: function (code, _, typeParameter) {
|
|
40
|
+
return options.typescript && typeParameter ? "ref<".concat(typeParameter, ">(").concat(code, ")") : "ref(".concat(code, ")");
|
|
41
|
+
},
|
|
40
42
|
keyPrefix: 'const',
|
|
41
43
|
});
|
|
42
44
|
var methods = (0, get_state_object_string_1.getStateObjectStringFromComponent)(component, {
|
|
@@ -9,11 +9,11 @@ export declare const invertBooleanExpression: (expression: string) => string;
|
|
|
9
9
|
export declare function encodeQuotes(string: string): string;
|
|
10
10
|
export declare const renameMitosisComponentsToKebabCase: (str: string) => string;
|
|
11
11
|
export declare function getContextNames(json: MitosisComponent): string[];
|
|
12
|
-
export declare const processBinding: ({ code, options, json,
|
|
12
|
+
export declare const processBinding: ({ code, options, json, preserveGetter, }: {
|
|
13
13
|
code: string;
|
|
14
14
|
options: ToVueOptions;
|
|
15
15
|
json: MitosisComponent;
|
|
16
|
-
|
|
16
|
+
preserveGetter?: boolean | undefined;
|
|
17
17
|
}) => string;
|
|
18
18
|
export declare const getContextValue: ({ options, json }: {
|
|
19
19
|
options: ToVueOptions;
|
|
@@ -27,6 +27,7 @@ var function_1 = require("fp-ts/lib/function");
|
|
|
27
27
|
var babel_transform_1 = require("../../helpers/babel-transform");
|
|
28
28
|
var core_1 = require("@babel/core");
|
|
29
29
|
var lodash_1 = require("lodash");
|
|
30
|
+
var patterns_1 = require("../../helpers/patterns");
|
|
30
31
|
var addPropertiesToJson = function (properties) {
|
|
31
32
|
return function (json) { return (__assign(__assign({}, json), { properties: __assign(__assign({}, json.properties), properties) })); };
|
|
32
33
|
};
|
|
@@ -103,10 +104,12 @@ function processRefs(input, component, options) {
|
|
|
103
104
|
// TODO: migrate all stripStateAndPropsRefs to use this here
|
|
104
105
|
// to properly replace context refs
|
|
105
106
|
var processBinding = function (_a) {
|
|
106
|
-
var code = _a.code, options = _a.options, json = _a.json, _b = _a.
|
|
107
|
+
var code = _a.code, options = _a.options, json = _a.json, _b = _a.preserveGetter, preserveGetter = _b === void 0 ? false : _b;
|
|
107
108
|
return (0, function_1.pipe)((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(code, {
|
|
108
109
|
includeState: true,
|
|
109
|
-
|
|
110
|
+
// we don't want to process `props` in the Composition API because it has a `props` ref,
|
|
111
|
+
// therefore we can keep pointing to `props.${value}`
|
|
112
|
+
includeProps: options.api === 'options',
|
|
110
113
|
replaceWith: function (name) {
|
|
111
114
|
switch (options.api) {
|
|
112
115
|
case 'composition':
|
|
@@ -118,7 +121,12 @@ var processBinding = function (_a) {
|
|
|
118
121
|
return "this.".concat(name);
|
|
119
122
|
}
|
|
120
123
|
},
|
|
121
|
-
}), function (
|
|
124
|
+
}), function (x) {
|
|
125
|
+
var wasGetter = x.match(patterns_1.GETTER);
|
|
126
|
+
return (0, function_1.pipe)(x,
|
|
127
|
+
// workaround so that getter code is valid and parseable by babel.
|
|
128
|
+
patterns_1.stripGetter, function (code) { return processRefs(code, json, options); }, function (code) { return (preserveGetter && wasGetter ? "get ".concat(code) : code); });
|
|
129
|
+
});
|
|
122
130
|
};
|
|
123
131
|
exports.processBinding = processBinding;
|
|
124
132
|
var getContextValue = function (_a) {
|
|
@@ -127,10 +135,10 @@ var getContextValue = function (_a) {
|
|
|
127
135
|
var name = _a.name, ref = _a.ref, value = _a.value;
|
|
128
136
|
var valueStr = value
|
|
129
137
|
? (0, get_state_object_string_1.stringifyContextValue)(value, {
|
|
130
|
-
valueMapper: function (code) { return (0, exports.processBinding)({ code: code, options: options, json: json }); },
|
|
138
|
+
valueMapper: function (code) { return (0, exports.processBinding)({ code: code, options: options, json: json, preserveGetter: true }); },
|
|
131
139
|
})
|
|
132
140
|
: ref
|
|
133
|
-
? (0, exports.processBinding)({ code: ref, options: options, json: json })
|
|
141
|
+
? (0, exports.processBinding)({ code: ref, options: options, json: json, preserveGetter: true })
|
|
134
142
|
: null;
|
|
135
143
|
return valueStr;
|
|
136
144
|
};
|
|
@@ -19,7 +19,6 @@ var get_components_used_1 = require("../../helpers/get-components-used");
|
|
|
19
19
|
var get_custom_imports_1 = require("../../helpers/get-custom-imports");
|
|
20
20
|
var get_state_object_string_1 = require("../../helpers/get-state-object-string");
|
|
21
21
|
var nullable_1 = require("../../helpers/nullable");
|
|
22
|
-
var patterns_1 = require("../../helpers/patterns");
|
|
23
22
|
var render_imports_1 = require("../../helpers/render-imports");
|
|
24
23
|
var helpers_1 = require("./helpers");
|
|
25
24
|
function getContextInjectString(component, options) {
|
|
@@ -86,15 +85,11 @@ function generateOptionsApiScript(component, options, path, template, props, onU
|
|
|
86
85
|
data: false,
|
|
87
86
|
getters: true,
|
|
88
87
|
functions: false,
|
|
89
|
-
valueMapper: function (code) {
|
|
90
|
-
return (0, helpers_1.processBinding)({ code: code.replace(patterns_1.GETTER, ''), options: options, json: component });
|
|
91
|
-
},
|
|
92
88
|
});
|
|
93
89
|
var functionsString = (0, get_state_object_string_1.getStateObjectStringFromComponent)(component, {
|
|
94
90
|
data: false,
|
|
95
91
|
getters: false,
|
|
96
92
|
functions: true,
|
|
97
|
-
valueMapper: function (code) { return (0, helpers_1.processBinding)({ code: code, options: options, json: component }); },
|
|
98
93
|
});
|
|
99
94
|
var includeClassMapHelper = template.includes('_classStringToObject');
|
|
100
95
|
if (includeClassMapHelper) {
|
|
@@ -42,7 +42,6 @@ var blocks_1 = require("./blocks");
|
|
|
42
42
|
var merge_options_1 = require("../../helpers/merge-options");
|
|
43
43
|
var process_code_1 = require("../../helpers/plugins/process-code");
|
|
44
44
|
var strip_state_and_props_refs_1 = require("../../helpers/strip-state-and-props-refs");
|
|
45
|
-
var patterns_1 = require("../../helpers/patterns");
|
|
46
45
|
// Transform <foo.bar key="value" /> to <component :is="foo.bar" key="value" />
|
|
47
46
|
function processDynamicComponents(json, _options) {
|
|
48
47
|
(0, traverse_1.default)(json).forEach(function (node) {
|
|
@@ -108,31 +107,9 @@ var componentToVue = function (userOptions) {
|
|
|
108
107
|
if (options.api === 'composition') {
|
|
109
108
|
switch (codeType) {
|
|
110
109
|
case 'hooks':
|
|
111
|
-
return function (code) {
|
|
112
|
-
return (0, helpers_1.processBinding)({
|
|
113
|
-
code: code,
|
|
114
|
-
options: options,
|
|
115
|
-
json: component,
|
|
116
|
-
// we don't want to process `props`, because Vue 3 code has a `props` ref, and
|
|
117
|
-
// therefore we can keep pointing to `props.${value}`
|
|
118
|
-
includeProps: false,
|
|
119
|
-
});
|
|
120
|
-
};
|
|
110
|
+
return function (code) { return (0, helpers_1.processBinding)({ code: code, options: options, json: component }); };
|
|
121
111
|
case 'state':
|
|
122
|
-
return function (code) {
|
|
123
|
-
return (0, function_1.pipe)(
|
|
124
|
-
// workaround so that getter code is valid and parseable by babel.
|
|
125
|
-
code.replace(patterns_1.GETTER, ''), function (c) {
|
|
126
|
-
return (0, helpers_1.processBinding)({
|
|
127
|
-
code: c,
|
|
128
|
-
options: options,
|
|
129
|
-
json: component,
|
|
130
|
-
// we don't want to process `props`, because Vue 3 code has a `props` ref, and
|
|
131
|
-
// therefore we can keep pointing to `props.${value}`
|
|
132
|
-
includeProps: false,
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
};
|
|
112
|
+
return function (code) { return (0, helpers_1.processBinding)({ code: code, options: options, json: component }); };
|
|
136
113
|
case 'bindings':
|
|
137
114
|
return function (c) { return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(c); };
|
|
138
115
|
case 'hooks-deps':
|
|
@@ -149,8 +126,9 @@ var componentToVue = function (userOptions) {
|
|
|
149
126
|
return function (c) { return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(c); };
|
|
150
127
|
case 'properties':
|
|
151
128
|
case 'hooks-deps':
|
|
152
|
-
case 'state':
|
|
153
129
|
return function (c) { return c; };
|
|
130
|
+
case 'state':
|
|
131
|
+
return function (c) { return (0, helpers_1.processBinding)({ code: c, options: options, json: component }); };
|
|
154
132
|
}
|
|
155
133
|
}
|
|
156
134
|
}));
|
|
@@ -3,5 +3,6 @@ import type { Visitor } from '@babel/traverse';
|
|
|
3
3
|
export declare const babelTransform: <VisitorContextType = any>(code: string, visitor?: babel.Visitor<VisitorContextType> | undefined) => babel.BabelFileResult | null;
|
|
4
4
|
export declare const babelTransformCode: <VisitorContextType = any>(code: string, visitor?: babel.Visitor<VisitorContextType> | undefined) => string;
|
|
5
5
|
declare type ExpressionType = 'expression' | 'unknown' | 'block' | 'functionBody';
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const getType: (code: string, initialType: ExpressionType) => ExpressionType;
|
|
7
|
+
export declare const babelTransformExpression: <VisitorContextType = any>(code: string, visitor: babel.Visitor<VisitorContextType>, initialType?: ExpressionType) => string;
|
|
7
8
|
export {};
|
|
@@ -32,7 +32,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
32
32
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
33
33
|
};
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.babelTransformExpression = exports.babelTransformCode = exports.babelTransform = void 0;
|
|
35
|
+
exports.babelTransformExpression = exports.getType = exports.babelTransformCode = exports.babelTransform = void 0;
|
|
36
36
|
var babel = __importStar(require("@babel/core"));
|
|
37
37
|
var jsxPlugin = require('@babel/plugin-syntax-jsx');
|
|
38
38
|
var tsPreset = require('@babel/preset-typescript');
|
|
@@ -63,12 +63,7 @@ var handleErrorOrExpression = function (_a) {
|
|
|
63
63
|
}
|
|
64
64
|
catch (err) {
|
|
65
65
|
console.error('Error parsing code:\n', code, '\n', result);
|
|
66
|
-
|
|
67
|
-
return (0, exports.babelTransformExpression)(code, visitor, 'functionBody');
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
throw err;
|
|
71
|
-
}
|
|
66
|
+
throw err;
|
|
72
67
|
}
|
|
73
68
|
};
|
|
74
69
|
var babelTransform = function (code, visitor) {
|
|
@@ -96,25 +91,27 @@ var trimExpression = function (type) { return function (code) {
|
|
|
96
91
|
return trimSemicolons(code);
|
|
97
92
|
}
|
|
98
93
|
}; };
|
|
99
|
-
var
|
|
100
|
-
if (type === void 0) { type = 'unknown'; }
|
|
101
|
-
if (!code) {
|
|
102
|
-
return '';
|
|
103
|
-
}
|
|
94
|
+
var getType = function (code, initialType) {
|
|
104
95
|
// match for object literal like { foo: ... }
|
|
105
|
-
if (
|
|
106
|
-
|
|
96
|
+
if (initialType === 'unknown' && code.trim().match(/^\s*{\s*[a-z0-9]+:/i)) {
|
|
97
|
+
return 'expression';
|
|
107
98
|
}
|
|
108
99
|
// For Builder content
|
|
109
|
-
if (
|
|
100
|
+
if (initialType === 'unknown' &&
|
|
110
101
|
(code.includes('return _virtual_index') || code.trim().startsWith('return ')) &&
|
|
111
102
|
!code.trim().startsWith('function')) {
|
|
112
|
-
|
|
103
|
+
return 'functionBody';
|
|
113
104
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
105
|
+
return initialType;
|
|
106
|
+
};
|
|
107
|
+
exports.getType = getType;
|
|
108
|
+
var babelTransformExpression = function (code, visitor, initialType) {
|
|
109
|
+
if (initialType === void 0) { initialType = 'unknown'; }
|
|
110
|
+
if (!code) {
|
|
111
|
+
return '';
|
|
117
112
|
}
|
|
113
|
+
var type = (0, exports.getType)(code, initialType);
|
|
114
|
+
var useCode = type === 'functionBody' ? "function(){".concat(code, "}") : code;
|
|
118
115
|
if (type !== 'expression') {
|
|
119
116
|
try {
|
|
120
117
|
return (0, function_1.pipe)((0, exports.babelTransformCode)(useCode, visitor), trimExpression(type));
|
|
@@ -4,7 +4,7 @@ interface GetStateObjectStringOptions {
|
|
|
4
4
|
data?: boolean;
|
|
5
5
|
functions?: boolean;
|
|
6
6
|
getters?: boolean;
|
|
7
|
-
valueMapper?: (code: string, type: 'data' | 'function' | 'getter') => string;
|
|
7
|
+
valueMapper?: (code: string, type: 'data' | 'function' | 'getter', typeParameter?: string) => string;
|
|
8
8
|
format?: 'object' | 'class' | 'variables';
|
|
9
9
|
keyPrefix?: string;
|
|
10
10
|
}
|
|
@@ -32,31 +32,31 @@ var convertStateMemberToString = function (_a) {
|
|
|
32
32
|
if (!state) {
|
|
33
33
|
return undefined;
|
|
34
34
|
}
|
|
35
|
-
var code = state.code;
|
|
35
|
+
var code = state.code, typeParameter = state.typeParameter;
|
|
36
36
|
switch (state.type) {
|
|
37
37
|
case 'function': {
|
|
38
38
|
if (functions === false || typeof code !== 'string') {
|
|
39
39
|
return undefined;
|
|
40
40
|
}
|
|
41
|
-
return "".concat(keyPrefix, " ").concat(key, " ").concat(keyValueDelimiter, " ").concat(valueMapper(code, 'function'));
|
|
41
|
+
return "".concat(keyPrefix, " ").concat(key, " ").concat(keyValueDelimiter, " ").concat(valueMapper(code, 'function', typeParameter));
|
|
42
42
|
}
|
|
43
43
|
case 'method': {
|
|
44
44
|
if (functions === false || typeof code !== 'string') {
|
|
45
45
|
return undefined;
|
|
46
46
|
}
|
|
47
|
-
return "".concat(keyPrefix, " ").concat(valueMapper(code, 'function'));
|
|
47
|
+
return "".concat(keyPrefix, " ").concat(valueMapper(code, 'function', typeParameter));
|
|
48
48
|
}
|
|
49
49
|
case 'getter': {
|
|
50
50
|
if (getters === false || typeof code !== 'string') {
|
|
51
51
|
return undefined;
|
|
52
52
|
}
|
|
53
|
-
return "".concat(keyPrefix, " ").concat(valueMapper(code, 'getter'));
|
|
53
|
+
return "".concat(keyPrefix, " ").concat(valueMapper(code, 'getter', typeParameter));
|
|
54
54
|
}
|
|
55
55
|
case 'property': {
|
|
56
56
|
if (data === false) {
|
|
57
57
|
return undefined;
|
|
58
58
|
}
|
|
59
|
-
return "".concat(keyPrefix, " ").concat(key).concat(keyValueDelimiter, " ").concat(valueMapper(json5_1.default.stringify(code), 'data'));
|
|
59
|
+
return "".concat(keyPrefix, " ").concat(key).concat(keyValueDelimiter, " ").concat(valueMapper(json5_1.default.stringify(code), 'data', typeParameter));
|
|
60
60
|
}
|
|
61
61
|
default:
|
|
62
62
|
break;
|
|
@@ -11,7 +11,7 @@ var hasBindingsText = function (json) {
|
|
|
11
11
|
var has = false;
|
|
12
12
|
(0, traverse_1.default)(json).forEach(function (node) {
|
|
13
13
|
var _a;
|
|
14
|
-
if ((0, is_mitosis_node_1.isMitosisNode)(node) && !(0, is_children_1.default)(node) && ((_a = node.bindings._text) === null || _a === void 0 ? void 0 : _a.code)) {
|
|
14
|
+
if ((0, is_mitosis_node_1.isMitosisNode)(node) && !(0, is_children_1.default)({ node: node }) && ((_a = node.bindings._text) === null || _a === void 0 ? void 0 : _a.code)) {
|
|
15
15
|
has = true;
|
|
16
16
|
this.stop();
|
|
17
17
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function isChildren(
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
function isChildren(_a) {
|
|
4
|
+
var _b;
|
|
5
|
+
var node = _a.node, _c = _a.extraMatches, extraMatches = _c === void 0 ? [] : _c;
|
|
6
|
+
var textValue = ((_b = node.bindings._text) === null || _b === void 0 ? void 0 : _b.code) || node.properties.__text || '';
|
|
6
7
|
var trimmedTextValue = textValue.replace(/\s+/g, '');
|
|
7
|
-
return ['props.children', 'children'].includes(trimmedTextValue);
|
|
8
|
+
return ['props.children', 'children'].concat(extraMatches).includes(trimmedTextValue);
|
|
8
9
|
}
|
|
9
10
|
exports.default = isChildren;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const GETTER: RegExp;
|
|
2
2
|
export declare const SETTER: RegExp;
|
|
3
|
+
export declare const stripGetter: (str: string) => string;
|
|
3
4
|
export declare const replaceGetterWithFunction: (str: string) => string;
|
|
4
5
|
export declare const prefixWithFunction: (str: string) => string;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.prefixWithFunction = exports.replaceGetterWithFunction = exports.SETTER = exports.GETTER = void 0;
|
|
3
|
+
exports.prefixWithFunction = exports.replaceGetterWithFunction = exports.stripGetter = exports.SETTER = exports.GETTER = void 0;
|
|
4
4
|
exports.GETTER = /^get /;
|
|
5
5
|
exports.SETTER = /^set /;
|
|
6
|
+
var stripGetter = function (str) { return str.replace(exports.GETTER, ''); };
|
|
7
|
+
exports.stripGetter = stripGetter;
|
|
6
8
|
var replaceGetterWithFunction = function (str) { return str.replace(/^(get )?/, 'function '); };
|
|
7
9
|
exports.replaceGetterWithFunction = replaceGetterWithFunction;
|
|
8
10
|
var prefixWithFunction = function (str) { return "function ".concat(str); };
|
|
@@ -59,7 +59,7 @@ var CODE_PROCESSOR_PLUGIN = function (codeProcessor) {
|
|
|
59
59
|
state.code = codeProcessor('state')(state.code);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
-
(0, traverse_nodes_1.
|
|
62
|
+
(0, traverse_nodes_1.traverseNodes)(json, function (node) {
|
|
63
63
|
preProcessBlockCode({ json: node, codeProcessor: codeProcessor });
|
|
64
64
|
});
|
|
65
65
|
},
|
|
@@ -1,24 +1,32 @@
|
|
|
1
1
|
import { Target } from '../types/config';
|
|
2
2
|
import { MitosisComponent, MitosisImport } from '../types/mitosis-component';
|
|
3
3
|
export declare const checkIsComponentImport: (theImport: MitosisImport) => boolean;
|
|
4
|
-
export declare const renderImport: ({ theImport, target, asyncComponentImports, preserveFileExtensions, }: {
|
|
4
|
+
export declare const renderImport: ({ theImport, target, asyncComponentImports, preserveFileExtensions, component, componentsUsed, importMapper, }: {
|
|
5
5
|
theImport: MitosisImport;
|
|
6
6
|
target: Target;
|
|
7
7
|
asyncComponentImports: boolean;
|
|
8
8
|
preserveFileExtensions?: boolean | undefined;
|
|
9
|
+
component?: MitosisComponent | null | undefined;
|
|
10
|
+
componentsUsed?: string[] | undefined;
|
|
11
|
+
importMapper?: Function | null | undefined;
|
|
9
12
|
}) => string;
|
|
10
|
-
export declare const renderImports: ({ imports, target, asyncComponentImports, excludeMitosisComponents, preserveFileExtensions, }: {
|
|
13
|
+
export declare const renderImports: ({ imports, target, asyncComponentImports, excludeMitosisComponents, preserveFileExtensions, component, componentsUsed, importMapper, }: {
|
|
11
14
|
imports: MitosisImport[];
|
|
12
15
|
target: Target;
|
|
13
16
|
asyncComponentImports: boolean;
|
|
14
17
|
excludeMitosisComponents?: boolean | undefined;
|
|
15
18
|
preserveFileExtensions?: boolean | undefined;
|
|
19
|
+
component: MitosisComponent;
|
|
20
|
+
componentsUsed?: string[] | undefined;
|
|
21
|
+
importMapper?: Function | null | undefined;
|
|
16
22
|
}) => string;
|
|
17
|
-
export declare const renderPreComponent: ({ component, target, excludeMitosisComponents, asyncComponentImports, preserveFileExtensions, }: {
|
|
23
|
+
export declare const renderPreComponent: ({ component, target, excludeMitosisComponents, asyncComponentImports, preserveFileExtensions, componentsUsed, importMapper, }: {
|
|
18
24
|
component: MitosisComponent;
|
|
19
25
|
target: Target;
|
|
20
26
|
asyncComponentImports?: boolean | undefined;
|
|
21
27
|
excludeMitosisComponents?: boolean | undefined;
|
|
22
28
|
preserveFileExtensions?: boolean | undefined;
|
|
29
|
+
componentsUsed?: string[] | undefined;
|
|
30
|
+
importMapper?: Function | null | undefined;
|
|
23
31
|
}) => string;
|
|
24
32
|
export declare const renderExportAndLocal: (component: MitosisComponent) => string;
|