@builder.io/mitosis 0.0.93 → 0.0.94
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/context/qwik.js +1 -1
- package/dist/src/generators/mitosis.js +2 -1
- package/dist/src/generators/qwik/component-generator.js +80 -163
- package/dist/src/generators/qwik/component.js +3 -3
- package/dist/src/generators/qwik/{add-prevent-default.d.ts → helpers/add-prevent-default.d.ts} +1 -1
- package/dist/src/generators/qwik/{add-prevent-default.js → helpers/add-prevent-default.js} +1 -1
- package/dist/src/generators/qwik/helpers/convert-method-to-function.d.ts +2 -0
- package/dist/src/generators/qwik/helpers/handlers.d.ts +3 -0
- package/dist/src/generators/qwik/{handlers.js → helpers/handlers.js} +3 -4
- package/dist/src/generators/qwik/helpers/state.d.ts +27 -0
- package/dist/src/generators/qwik/helpers/state.js +118 -0
- package/dist/src/generators/qwik/{styles.d.ts → helpers/styles.d.ts} +2 -2
- package/dist/src/generators/qwik/{styles.js → helpers/styles.js} +1 -1
- package/dist/src/generators/qwik/helpers/transform-code.d.ts +1 -0
- package/dist/src/generators/qwik/helpers/transform-code.js +8 -0
- package/dist/src/generators/qwik/jsx.d.ts +1 -1
- package/dist/src/generators/qwik/jsx.js +3 -1
- package/dist/src/generators/qwik/src-generator.d.ts +0 -4
- package/dist/src/generators/qwik/src-generator.js +8 -13
- package/dist/src/generators/react/generator.js +2 -1
- package/dist/src/generators/{react-native.d.ts → react-native/index.d.ts} +3 -3
- package/dist/src/generators/{react-native.js → react-native/index.js} +46 -35
- package/dist/src/generators/react-native/sanitize-react-native-block-styles.d.ts +3 -0
- package/dist/src/generators/react-native/sanitize-react-native-block-styles.js +63 -0
- package/dist/src/generators/solid/index.js +4 -1
- package/dist/src/helpers/babel-transform.js +13 -10
- package/dist/src/helpers/is-root-text-node.d.ts +4 -0
- package/dist/src/helpers/is-root-text-node.js +12 -0
- package/dist/src/helpers/map-refs.js +2 -26
- package/dist/src/helpers/parsers.js +11 -5
- package/dist/src/helpers/patterns.d.ts +1 -0
- package/dist/src/helpers/patterns.js +3 -1
- package/dist/src/helpers/plugins/process-code.d.ts +1 -1
- package/dist/src/helpers/plugins/process-code.js +9 -9
- package/dist/src/helpers/render-imports.js +1 -0
- package/dist/src/parsers/jsx/component-types.d.ts +2 -2
- package/dist/src/parsers/jsx/component-types.js +7 -16
- package/dist/src/parsers/jsx/index.d.ts +1 -1
- package/dist/src/parsers/jsx/index.js +3 -16
- package/dist/src/parsers/jsx/jsx.js +17 -22
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/dist/src/generators/qwik/convert-method-to-function.d.ts +0 -1
- package/dist/src/generators/qwik/handlers.d.ts +0 -4
- /package/dist/src/generators/qwik/{convert-method-to-function.js → helpers/convert-method-to-function.js} +0 -0
- /package/dist/src/generators/qwik/{stable-inject.d.ts → helpers/stable-inject.d.ts} +0 -0
- /package/dist/src/generators/qwik/{stable-inject.js → helpers/stable-inject.js} +0 -0
- /package/dist/src/generators/qwik/{stable-serialize.d.ts → helpers/stable-serialize.d.ts} +0 -0
- /package/dist/src/generators/qwik/{stable-serialize.js → helpers/stable-serialize.js} +0 -0
|
@@ -6,7 +6,7 @@ var contextToQwik = function (options) {
|
|
|
6
6
|
if (options === void 0) { options = {}; }
|
|
7
7
|
return function (_a) {
|
|
8
8
|
var context = _a.context;
|
|
9
|
-
var str = "\n import {
|
|
9
|
+
var str = "\n import { createContextId } from '@builder.io/qwik';\n\n export default createContextId<any>(\"".concat(context.name, "\")\n ");
|
|
10
10
|
if (options.format !== false) {
|
|
11
11
|
try {
|
|
12
12
|
str = (0, standalone_1.format)(str, {
|
|
@@ -41,6 +41,7 @@ var jsx_1 = require("../parsers/jsx");
|
|
|
41
41
|
var mitosis_node_1 = require("../types/mitosis-node");
|
|
42
42
|
var react_1 = require("./react");
|
|
43
43
|
var state_1 = require("../helpers/state");
|
|
44
|
+
var is_root_text_node_1 = require("../helpers/is-root-text-node");
|
|
44
45
|
exports.DEFAULT_FORMAT = 'legacy';
|
|
45
46
|
// Special isValidAttributeName for Mitosis so we can allow for $ in names
|
|
46
47
|
var isValidAttributeName = function (str) {
|
|
@@ -148,7 +149,7 @@ var componentToMitosis = function (toMitosisOptions) {
|
|
|
148
149
|
(0, map_refs_1.mapRefs)(json, function (refName) {
|
|
149
150
|
return "".concat(refName).concat(domRefs.has(refName) ? ".current" : '');
|
|
150
151
|
});
|
|
151
|
-
var addWrapper = json.children.length !== 1;
|
|
152
|
+
var addWrapper = json.children.length !== 1 || (0, is_root_text_node_1.isRootTextNode)(json);
|
|
152
153
|
var components = Array.from((0, get_components_1.getComponents)(json));
|
|
153
154
|
var mitosisComponents = components.filter(function (item) { return mitosisCoreComponents.includes(item); });
|
|
154
155
|
var otherComponents = components.filter(function (item) { return !mitosisCoreComponents.includes(item); });
|
|
@@ -1,33 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
-
if (ar || !(i in from)) {
|
|
5
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
-
ar[i] = from[i];
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
3
|
exports.componentToQwik = void 0;
|
|
16
4
|
var standalone_1 = require("prettier/standalone");
|
|
17
|
-
var babel_transform_1 = require("../../helpers/babel-transform");
|
|
18
5
|
var fast_clone_1 = require("../../helpers/fast-clone");
|
|
19
6
|
var collect_css_1 = require("../../helpers/styles/collect-css");
|
|
20
7
|
var state_1 = require("../../helpers/state");
|
|
21
|
-
var add_prevent_default_1 = require("./add-prevent-default");
|
|
22
|
-
var convert_method_to_function_1 = require("./convert-method-to-function");
|
|
8
|
+
var add_prevent_default_1 = require("./helpers/add-prevent-default");
|
|
9
|
+
var convert_method_to_function_1 = require("./helpers/convert-method-to-function");
|
|
23
10
|
var jsx_1 = require("./jsx");
|
|
24
11
|
var src_generator_1 = require("./src-generator");
|
|
25
12
|
var plugins_1 = require("../../modules/plugins");
|
|
26
|
-
var
|
|
27
|
-
var
|
|
13
|
+
var stable_inject_1 = require("./helpers/stable-inject");
|
|
14
|
+
var merge_options_1 = require("../../helpers/merge-options");
|
|
15
|
+
var state_2 = require("./helpers/state");
|
|
16
|
+
var transform_code_1 = require("./helpers/transform-code");
|
|
17
|
+
var process_code_1 = require("../../helpers/plugins/process-code");
|
|
18
|
+
var replace_identifiers_1 = require("../../helpers/replace-identifiers");
|
|
28
19
|
Error.stackTraceLimit = 9999;
|
|
29
|
-
// TODO(misko): styles are not processed.
|
|
30
20
|
var DEBUG = false;
|
|
21
|
+
var PLUGINS = [
|
|
22
|
+
function () { return ({
|
|
23
|
+
json: {
|
|
24
|
+
post: function (json) {
|
|
25
|
+
(0, add_prevent_default_1.addPreventDefault)(json);
|
|
26
|
+
return json;
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
}); },
|
|
30
|
+
(0, process_code_1.CODE_PROCESSOR_PLUGIN)(function (codeType, json) {
|
|
31
|
+
switch (codeType) {
|
|
32
|
+
case 'bindings':
|
|
33
|
+
case 'state':
|
|
34
|
+
case 'hooks':
|
|
35
|
+
case 'hooks-deps':
|
|
36
|
+
case 'properties':
|
|
37
|
+
// update signal getters to have `.value`
|
|
38
|
+
return function (code, k) {
|
|
39
|
+
// `ref` should not update the signal value access
|
|
40
|
+
if (k === 'ref') {
|
|
41
|
+
return code;
|
|
42
|
+
}
|
|
43
|
+
Object.keys(json.refs).forEach(function (ref) {
|
|
44
|
+
code = (0, replace_identifiers_1.replaceIdentifiers)({
|
|
45
|
+
code: code,
|
|
46
|
+
from: ref,
|
|
47
|
+
to: function (x) { return (x === ref ? "".concat(x, ".value") : "".concat(ref, ".value.").concat(x)); },
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
return code;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}),
|
|
54
|
+
];
|
|
55
|
+
var DEFAULT_OPTIONS = {
|
|
56
|
+
plugins: PLUGINS,
|
|
57
|
+
};
|
|
31
58
|
var componentToQwik = function (userOptions) {
|
|
32
59
|
if (userOptions === void 0) { userOptions = {}; }
|
|
33
60
|
return function (_a) {
|
|
@@ -35,14 +62,10 @@ var componentToQwik = function (userOptions) {
|
|
|
35
62
|
var _component = _a.component, path = _a.path;
|
|
36
63
|
// Make a copy we can safely mutate, similar to babel's toolchain
|
|
37
64
|
var component = (0, fast_clone_1.fastClone)(_component);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (userOptions.plugins) {
|
|
43
|
-
component = (0, plugins_1.runPostJsonPlugins)(component, userOptions.plugins);
|
|
44
|
-
}
|
|
45
|
-
var isTypeScript = !!userOptions.typescript;
|
|
65
|
+
var options = (0, merge_options_1.mergeOptions)(DEFAULT_OPTIONS, userOptions);
|
|
66
|
+
component = (0, plugins_1.runPreJsonPlugins)(component, options.plugins);
|
|
67
|
+
component = (0, plugins_1.runPostJsonPlugins)(component, options.plugins);
|
|
68
|
+
var isTypeScript = !!options.typescript;
|
|
46
69
|
var file = new src_generator_1.File(component.name + (isTypeScript ? '.ts' : '.js'), {
|
|
47
70
|
isPretty: true,
|
|
48
71
|
isJSX: true,
|
|
@@ -57,9 +80,9 @@ var componentToQwik = function (userOptions) {
|
|
|
57
80
|
var metadata = component.meta.useMetadata || {};
|
|
58
81
|
var isLightComponent = ((_c = (_b = metadata === null || metadata === void 0 ? void 0 : metadata.qwik) === null || _b === void 0 ? void 0 : _b.component) === null || _c === void 0 ? void 0 : _c.isLight) || false;
|
|
59
82
|
var mutable_1 = ((_d = metadata === null || metadata === void 0 ? void 0 : metadata.qwik) === null || _d === void 0 ? void 0 : _d.mutable) || [];
|
|
60
|
-
var imports_1 = (_e = metadata === null || metadata === void 0 ? void 0 : metadata.qwik) === null || _e === void 0 ? void 0 : _e.imports;
|
|
61
|
-
|
|
62
|
-
var
|
|
83
|
+
var imports_1 = ((_e = metadata === null || metadata === void 0 ? void 0 : metadata.qwik) === null || _e === void 0 ? void 0 : _e.imports) || {};
|
|
84
|
+
Object.keys(imports_1).forEach(function (key) { return file.import(imports_1[key], key); });
|
|
85
|
+
var state_3 = (0, state_2.emitStateMethodsAndRewriteBindings)(file, component, metadata);
|
|
63
86
|
var hasState_1 = (0, state_1.checkHasState)(component);
|
|
64
87
|
var css_1 = null;
|
|
65
88
|
var componentFn = (0, src_generator_1.arrowFnBlock)(['props'], [
|
|
@@ -68,12 +91,11 @@ var componentToQwik = function (userOptions) {
|
|
|
68
91
|
css_1 = emitUseStyles(file, component);
|
|
69
92
|
emitUseContext(file, component);
|
|
70
93
|
emitUseRef(file, component);
|
|
71
|
-
hasState_1 && emitUseStore(file,
|
|
94
|
+
hasState_1 && (0, state_2.emitUseStore)(file, state_3);
|
|
72
95
|
emitUseContextProvider(file, component);
|
|
73
96
|
emitUseClientEffect(file, component);
|
|
74
97
|
emitUseMount(file, component);
|
|
75
98
|
emitUseTask(file, component);
|
|
76
|
-
emitUseCleanup(file, component);
|
|
77
99
|
emitTagNameHack(file, component, (_a = component.meta.useMetadata) === null || _a === void 0 ? void 0 : _a.elementTag);
|
|
78
100
|
emitTagNameHack(file, component, (_b = component.meta.useMetadata) === null || _b === void 0 ? void 0 : _b.componentElementTag);
|
|
79
101
|
emitJSX(file, component, mutable_1);
|
|
@@ -86,10 +108,8 @@ var componentToQwik = function (userOptions) {
|
|
|
86
108
|
emitStyles(file, css_1);
|
|
87
109
|
DEBUG && file.exportConst('COMPONENT', JSON.stringify(component));
|
|
88
110
|
var sourceFile = file.toString();
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
sourceFile = (0, plugins_1.runPostCodePlugins)(sourceFile, userOptions.plugins);
|
|
92
|
-
}
|
|
111
|
+
sourceFile = (0, plugins_1.runPreCodePlugins)(sourceFile, options.plugins);
|
|
112
|
+
sourceFile = (0, plugins_1.runPostCodePlugins)(sourceFile, options.plugins);
|
|
93
113
|
return sourceFile;
|
|
94
114
|
}
|
|
95
115
|
catch (e) {
|
|
@@ -108,7 +128,7 @@ function emitExports(file, component) {
|
|
|
108
128
|
}
|
|
109
129
|
function emitTagNameHack(file, component, metadataValue) {
|
|
110
130
|
if (typeof metadataValue === 'string' && metadataValue) {
|
|
111
|
-
file.src.emit(metadataValue, '=', (0, convert_method_to_function_1.convertMethodToFunction)(metadataValue, getStateMethodsAndGetters(component.state), getLexicalScopeVars(component)), ';');
|
|
131
|
+
file.src.emit(metadataValue, '=', (0, convert_method_to_function_1.convertMethodToFunction)(metadataValue, (0, state_2.getStateMethodsAndGetters)(component.state), (0, state_2.getLexicalScopeVars)(component)), ';');
|
|
112
132
|
}
|
|
113
133
|
}
|
|
114
134
|
function emitUseClientEffect(file, component) {
|
|
@@ -116,13 +136,13 @@ function emitUseClientEffect(file, component) {
|
|
|
116
136
|
// This is called useMount, but in practice it is used as
|
|
117
137
|
// useClientEffect. Not sure if this is correct, but for now.
|
|
118
138
|
var code = component.hooks.onMount.code;
|
|
119
|
-
file.src.emit(file.import(file.qwikModule, '
|
|
139
|
+
file.src.emit(file.import(file.qwikModule, 'useVisibleTask$').localName, '(()=>{', code, '});');
|
|
120
140
|
}
|
|
121
141
|
}
|
|
122
142
|
function emitUseMount(file, component) {
|
|
123
143
|
if (component.hooks.onInit) {
|
|
124
144
|
var code = component.hooks.onInit.code;
|
|
125
|
-
file.src.emit(file.import(file.qwikModule, '
|
|
145
|
+
file.src.emit(file.import(file.qwikModule, 'useTask$').localName, '(()=>{', code, '});');
|
|
126
146
|
}
|
|
127
147
|
}
|
|
128
148
|
function emitUseTask(file, component) {
|
|
@@ -130,7 +150,7 @@ function emitUseTask(file, component) {
|
|
|
130
150
|
component.hooks.onUpdate.forEach(function (onUpdate) {
|
|
131
151
|
file.src.emit(file.import(file.qwikModule, 'useTask$').localName, '(({track})=>{');
|
|
132
152
|
emitTrackExpressions(file.src, onUpdate.deps);
|
|
133
|
-
file.src.emit(convertTypeScriptToJS(onUpdate.code));
|
|
153
|
+
file.src.emit((0, transform_code_1.convertTypeScriptToJS)(onUpdate.code));
|
|
134
154
|
file.src.emit('});');
|
|
135
155
|
});
|
|
136
156
|
}
|
|
@@ -144,12 +164,6 @@ function emitTrackExpressions(src, deps) {
|
|
|
144
164
|
src.emit("track(() => ".concat(dep, ");"));
|
|
145
165
|
});
|
|
146
166
|
}
|
|
147
|
-
function emitUseCleanup(file, component) {
|
|
148
|
-
if (component.hooks.onUnMount) {
|
|
149
|
-
var code = component.hooks.onUnMount.code;
|
|
150
|
-
file.src.emit(file.import(file.qwikModule, 'useCleanup$').localName, '(()=>{', code, '});');
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
167
|
function emitJSX(file, component, mutable) {
|
|
154
168
|
var directives = new Map();
|
|
155
169
|
var handlers = new Map();
|
|
@@ -191,7 +205,7 @@ function emitUseContext(file, component) {
|
|
|
191
205
|
}
|
|
192
206
|
function emitUseRef(file, component) {
|
|
193
207
|
Object.keys(component.refs).forEach(function (refKey) {
|
|
194
|
-
file.src.emit("const ", refKey, '=', file.import(file.qwikModule, '
|
|
208
|
+
file.src.emit("const ", refKey, '=', file.import(file.qwikModule, 'useSignal').localName, "".concat(file.options.isTypeScript ? '<Element>' : '', "();"));
|
|
195
209
|
});
|
|
196
210
|
}
|
|
197
211
|
function emitUseStyles(file, component) {
|
|
@@ -205,49 +219,29 @@ function emitUseStyles(file, component) {
|
|
|
205
219
|
return css;
|
|
206
220
|
}
|
|
207
221
|
function emitStyles(file, css) {
|
|
208
|
-
if (css) {
|
|
209
|
-
|
|
210
|
-
file.src.emit('\n\n');
|
|
211
|
-
try {
|
|
212
|
-
css = (0, standalone_1.format)(css, {
|
|
213
|
-
parser: 'css',
|
|
214
|
-
plugins: [
|
|
215
|
-
// To support running in browsers
|
|
216
|
-
require('prettier/parser-postcss'),
|
|
217
|
-
],
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
catch (e) {
|
|
221
|
-
throw new Error(e +
|
|
222
|
-
'\n' +
|
|
223
|
-
'========================================================================\n' +
|
|
224
|
-
css +
|
|
225
|
-
'\n\n========================================================================');
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
file.exportConst('STYLES', '`\n' + css.replace(/`/g, '\\`') + '`\n');
|
|
222
|
+
if (!css) {
|
|
223
|
+
return;
|
|
229
224
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
225
|
+
if (file.options.isPretty) {
|
|
226
|
+
file.src.emit('\n\n');
|
|
227
|
+
try {
|
|
228
|
+
css = (0, standalone_1.format)(css, {
|
|
229
|
+
parser: 'css',
|
|
230
|
+
plugins: [
|
|
231
|
+
// To support running in browsers
|
|
232
|
+
require('prettier/parser-postcss'),
|
|
233
|
+
],
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
catch (e) {
|
|
237
|
+
throw new Error(e +
|
|
238
|
+
'\n' +
|
|
239
|
+
'========================================================================\n' +
|
|
240
|
+
css +
|
|
241
|
+
'\n\n========================================================================');
|
|
242
242
|
}
|
|
243
|
-
file.src.emit('(');
|
|
244
|
-
file.src.emit((0, stable_inject_1.stableInject)(state));
|
|
245
|
-
file.src.emit(');');
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
// TODO hack for now so that `state` variable is defined, even though it is never read.
|
|
249
|
-
file.src.emit('const state' + (file.options.isTypeScript ? ': any' : '') + ' = {};');
|
|
250
243
|
}
|
|
244
|
+
file.exportConst('STYLES', '`\n' + css.replace(/`/g, '\\`') + '`\n');
|
|
251
245
|
}
|
|
252
246
|
function emitTypes(file, component) {
|
|
253
247
|
var _a;
|
|
@@ -255,33 +249,6 @@ function emitTypes(file, component) {
|
|
|
255
249
|
(_a = component.types) === null || _a === void 0 ? void 0 : _a.forEach(function (t) { return file.src.emit(t, '\n'); });
|
|
256
250
|
}
|
|
257
251
|
}
|
|
258
|
-
function emitStateMethodsAndRewriteBindings(file, component, metadata) {
|
|
259
|
-
var _a;
|
|
260
|
-
var lexicalArgs = getLexicalScopeVars(component);
|
|
261
|
-
var state = emitStateMethods(file, component.state, lexicalArgs);
|
|
262
|
-
var methodMap = getStateMethodsAndGetters(component.state);
|
|
263
|
-
rewriteCodeExpr(component, methodMap, lexicalArgs, (_a = metadata.qwik) === null || _a === void 0 ? void 0 : _a.replace);
|
|
264
|
-
return state;
|
|
265
|
-
}
|
|
266
|
-
var checkIsObjectWithCodeBlock = function (obj) {
|
|
267
|
-
return typeof obj == 'object' && (obj === null || obj === void 0 ? void 0 : obj.code) && typeof obj.code === 'string';
|
|
268
|
-
};
|
|
269
|
-
function rewriteCodeExpr(component, methodMap, lexicalArgs, replace) {
|
|
270
|
-
if (replace === void 0) { replace = {}; }
|
|
271
|
-
(0, traverse_1.default)(component).forEach(function (item) {
|
|
272
|
-
if (!checkIsObjectWithCodeBlock(item)) {
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
var code = (0, convert_method_to_function_1.convertMethodToFunction)(item.code, methodMap, lexicalArgs);
|
|
276
|
-
Object.keys(replace).forEach(function (key) {
|
|
277
|
-
code = code.replace(key, replace[key]);
|
|
278
|
-
});
|
|
279
|
-
item.code = code;
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
function getLexicalScopeVars(component) {
|
|
283
|
-
return __spreadArray(__spreadArray(['props', 'state'], Object.keys(component.refs), true), Object.keys(component.context.get), true);
|
|
284
|
-
}
|
|
285
252
|
function emitImports(file, component) {
|
|
286
253
|
var _a;
|
|
287
254
|
// <SELF> is used for self-referencing within the file.
|
|
@@ -293,58 +260,8 @@ function emitImports(file, component) {
|
|
|
293
260
|
});
|
|
294
261
|
});
|
|
295
262
|
}
|
|
296
|
-
function emitStateMethods(file, componentState, lexicalArgs) {
|
|
297
|
-
var stateValues = {};
|
|
298
|
-
var stateInit = [stateValues];
|
|
299
|
-
var methodMap = getStateMethodsAndGetters(componentState);
|
|
300
|
-
for (var key in componentState) {
|
|
301
|
-
var stateValue = componentState[key];
|
|
302
|
-
switch (stateValue === null || stateValue === void 0 ? void 0 : stateValue.type) {
|
|
303
|
-
case 'method':
|
|
304
|
-
case 'getter':
|
|
305
|
-
case 'function':
|
|
306
|
-
var code = stateValue.code;
|
|
307
|
-
var prefixIdx = 0;
|
|
308
|
-
if (stateValue.type === 'getter') {
|
|
309
|
-
prefixIdx += 'get '.length;
|
|
310
|
-
}
|
|
311
|
-
else if (stateValue.type === 'function') {
|
|
312
|
-
prefixIdx += 'function '.length;
|
|
313
|
-
}
|
|
314
|
-
code = code.substring(prefixIdx);
|
|
315
|
-
code = (0, convert_method_to_function_1.convertMethodToFunction)(code, methodMap, lexicalArgs).replace('(', "(".concat(lexicalArgs.join(','), ","));
|
|
316
|
-
var functionName = code.split(/\(/)[0];
|
|
317
|
-
if (stateValue.type === 'getter') {
|
|
318
|
-
stateInit.push("state.".concat(key, "=").concat(functionName, "(").concat(lexicalArgs.join(','), ")"));
|
|
319
|
-
}
|
|
320
|
-
if (!file.options.isTypeScript) {
|
|
321
|
-
// Erase type information
|
|
322
|
-
code = convertTypeScriptToJS(code);
|
|
323
|
-
}
|
|
324
|
-
file.exportConst(functionName, 'function ' + code, true);
|
|
325
|
-
continue;
|
|
326
|
-
case 'property':
|
|
327
|
-
stateValues[key] = stateValue.code;
|
|
328
|
-
continue;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
return stateInit;
|
|
332
|
-
}
|
|
333
|
-
function convertTypeScriptToJS(code) {
|
|
334
|
-
return (0, babel_transform_1.babelTransformExpression)(code, {});
|
|
335
|
-
}
|
|
336
263
|
function extractGetterBody(code) {
|
|
337
264
|
var start = code.indexOf('{');
|
|
338
265
|
var end = code.lastIndexOf('}');
|
|
339
266
|
return code.substring(start + 1, end).trim();
|
|
340
267
|
}
|
|
341
|
-
function getStateMethodsAndGetters(state) {
|
|
342
|
-
var methodMap = {};
|
|
343
|
-
Object.keys(state).forEach(function (key) {
|
|
344
|
-
var stateVal = state[key];
|
|
345
|
-
if ((stateVal === null || stateVal === void 0 ? void 0 : stateVal.type) === 'getter' || (stateVal === null || stateVal === void 0 ? void 0 : stateVal.type) === 'method') {
|
|
346
|
-
methodMap[key] = stateVal.type;
|
|
347
|
-
}
|
|
348
|
-
});
|
|
349
|
-
return methodMap;
|
|
350
|
-
}
|
|
@@ -22,11 +22,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.addCommonStyles = exports.renderUseLexicalScope = exports.addComponent = exports.createFileSet = void 0;
|
|
24
24
|
var compile_away_builder_components_1 = require("../../plugins/compile-away-builder-components");
|
|
25
|
-
var handlers_1 = require("./handlers");
|
|
25
|
+
var handlers_1 = require("./helpers/handlers");
|
|
26
26
|
var jsx_1 = require("./jsx");
|
|
27
27
|
var src_generator_1 = require("./src-generator");
|
|
28
|
-
var stable_serialize_1 = require("./stable-serialize");
|
|
29
|
-
var styles_1 = require("./styles");
|
|
28
|
+
var stable_serialize_1 = require("./helpers/stable-serialize");
|
|
29
|
+
var styles_1 = require("./helpers/styles");
|
|
30
30
|
function createFileSet(options) {
|
|
31
31
|
if (options === void 0) { options = {}; }
|
|
32
32
|
var opts = __assign({ qwikLib: '@builder.io/qwik', qrlPrefix: './', output: 'ts', minify: false, jsx: true }, options);
|
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.addPreventDefault = void 0;
|
|
7
7
|
var traverse_1 = __importDefault(require("traverse"));
|
|
8
|
-
var is_mitosis_node_1 = require("
|
|
8
|
+
var is_mitosis_node_1 = require("../../../helpers/is-mitosis-node");
|
|
9
9
|
/**
|
|
10
10
|
* Find event handlers that explicitly call .preventDefault() and
|
|
11
11
|
* add preventdefault:event
|
|
@@ -9,9 +9,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
9
9
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.renderHandlers =
|
|
13
|
-
var component_1 = require("
|
|
14
|
-
var src_generator_1 = require("
|
|
12
|
+
exports.renderHandlers = void 0;
|
|
13
|
+
var component_1 = require("../component");
|
|
14
|
+
var src_generator_1 = require("../src-generator");
|
|
15
15
|
var IIF_START = '(() => {';
|
|
16
16
|
var IIF_END = '})()';
|
|
17
17
|
function extractJSBlock(binding) {
|
|
@@ -28,7 +28,6 @@ function extractJSBlock(binding) {
|
|
|
28
28
|
}
|
|
29
29
|
return null;
|
|
30
30
|
}
|
|
31
|
-
exports.extractJSBlock = extractJSBlock;
|
|
32
31
|
function renderHandlers(file, componentName, children) {
|
|
33
32
|
var id = 0;
|
|
34
33
|
var map = new Map();
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { MitosisComponent } from '../../../types/mitosis-component';
|
|
2
|
+
import { File } from '../src-generator';
|
|
3
|
+
/**
|
|
4
|
+
* Stores getters and initialization map.
|
|
5
|
+
*/
|
|
6
|
+
export declare type StateInit = [
|
|
7
|
+
StateValues,
|
|
8
|
+
/**
|
|
9
|
+
* Set of state initializers.
|
|
10
|
+
*/
|
|
11
|
+
...string[]
|
|
12
|
+
];
|
|
13
|
+
export declare type PropertyName = string;
|
|
14
|
+
export declare type StateValue = string;
|
|
15
|
+
/**
|
|
16
|
+
* Map of getters that need to be rewritten to function invocations.
|
|
17
|
+
*/
|
|
18
|
+
export declare type StateValues = Record<PropertyName, StateValue>;
|
|
19
|
+
/**
|
|
20
|
+
* @param file
|
|
21
|
+
* @param stateInit
|
|
22
|
+
*/
|
|
23
|
+
export declare function emitUseStore(file: File, stateInit: StateInit): void;
|
|
24
|
+
export declare function emitStateMethodsAndRewriteBindings(file: File, component: MitosisComponent, metadata: Record<string, any>): StateInit;
|
|
25
|
+
export declare function getLexicalScopeVars(component: MitosisComponent): string[];
|
|
26
|
+
export declare type MethodMap = Record<string, 'method' | 'getter'>;
|
|
27
|
+
export declare function getStateMethodsAndGetters(state: MitosisComponent['state']): MethodMap;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
+
if (ar || !(i in from)) {
|
|
5
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
+
ar[i] = from[i];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.getStateMethodsAndGetters = exports.getLexicalScopeVars = exports.emitStateMethodsAndRewriteBindings = exports.emitUseStore = void 0;
|
|
16
|
+
var traverse_1 = __importDefault(require("traverse"));
|
|
17
|
+
var convert_method_to_function_1 = require("./convert-method-to-function");
|
|
18
|
+
var stable_inject_1 = require("./stable-inject");
|
|
19
|
+
var transform_code_1 = require("./transform-code");
|
|
20
|
+
/**
|
|
21
|
+
* @param file
|
|
22
|
+
* @param stateInit
|
|
23
|
+
*/
|
|
24
|
+
function emitUseStore(file, stateInit) {
|
|
25
|
+
var state = stateInit[0];
|
|
26
|
+
var hasState = state && Object.keys(state).length > 0;
|
|
27
|
+
if (hasState) {
|
|
28
|
+
file.src.emit('const state=', file.import(file.qwikModule, 'useStore').localName);
|
|
29
|
+
if (file.options.isTypeScript) {
|
|
30
|
+
file.src.emit('<any>');
|
|
31
|
+
}
|
|
32
|
+
file.src.emit("(".concat((0, stable_inject_1.stableInject)(state), ");"));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// TODO hack for now so that `state` variable is defined, even though it is never read.
|
|
36
|
+
file.src.emit("const state".concat(file.options.isTypeScript ? ': any' : '', " = {};"));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.emitUseStore = emitUseStore;
|
|
40
|
+
function emitStateMethods(file, componentState, lexicalArgs) {
|
|
41
|
+
var stateValues = {};
|
|
42
|
+
var stateInit = [stateValues];
|
|
43
|
+
var methodMap = getStateMethodsAndGetters(componentState);
|
|
44
|
+
for (var key in componentState) {
|
|
45
|
+
var stateValue = componentState[key];
|
|
46
|
+
console.log(componentState);
|
|
47
|
+
switch (stateValue === null || stateValue === void 0 ? void 0 : stateValue.type) {
|
|
48
|
+
case 'method':
|
|
49
|
+
case 'getter':
|
|
50
|
+
case 'function':
|
|
51
|
+
var code = stateValue.code;
|
|
52
|
+
var prefixIdx = 0;
|
|
53
|
+
if (stateValue.type === 'getter') {
|
|
54
|
+
prefixIdx += 'get '.length;
|
|
55
|
+
}
|
|
56
|
+
else if (stateValue.type === 'function') {
|
|
57
|
+
prefixIdx += 'function '.length;
|
|
58
|
+
}
|
|
59
|
+
code = code.substring(prefixIdx);
|
|
60
|
+
code = (0, convert_method_to_function_1.convertMethodToFunction)(code, methodMap, lexicalArgs).replace('(', "(".concat(lexicalArgs.join(','), ","));
|
|
61
|
+
var functionName = code.split(/\(/)[0];
|
|
62
|
+
if (stateValue.type === 'getter') {
|
|
63
|
+
stateInit.push("state.".concat(key, "=").concat(functionName, "(").concat(lexicalArgs.join(','), ")"));
|
|
64
|
+
}
|
|
65
|
+
if (!file.options.isTypeScript) {
|
|
66
|
+
// Erase type information
|
|
67
|
+
code = (0, transform_code_1.convertTypeScriptToJS)(code);
|
|
68
|
+
}
|
|
69
|
+
file.exportConst(functionName, 'function ' + code, true);
|
|
70
|
+
console.log(functionName, 'function ' + code);
|
|
71
|
+
continue;
|
|
72
|
+
case 'property':
|
|
73
|
+
stateValues[key] = stateValue.code;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return stateInit;
|
|
78
|
+
}
|
|
79
|
+
function emitStateMethodsAndRewriteBindings(file, component, metadata) {
|
|
80
|
+
var _a;
|
|
81
|
+
var lexicalArgs = getLexicalScopeVars(component);
|
|
82
|
+
var state = emitStateMethods(file, component.state, lexicalArgs);
|
|
83
|
+
var methodMap = getStateMethodsAndGetters(component.state);
|
|
84
|
+
rewriteCodeExpr(component, methodMap, lexicalArgs, (_a = metadata.qwik) === null || _a === void 0 ? void 0 : _a.replace);
|
|
85
|
+
return state;
|
|
86
|
+
}
|
|
87
|
+
exports.emitStateMethodsAndRewriteBindings = emitStateMethodsAndRewriteBindings;
|
|
88
|
+
var checkIsObjectWithCodeBlock = function (obj) {
|
|
89
|
+
return typeof obj == 'object' && (obj === null || obj === void 0 ? void 0 : obj.code) && typeof obj.code === 'string';
|
|
90
|
+
};
|
|
91
|
+
function getLexicalScopeVars(component) {
|
|
92
|
+
return __spreadArray(__spreadArray(['props', 'state'], Object.keys(component.refs), true), Object.keys(component.context.get), true);
|
|
93
|
+
}
|
|
94
|
+
exports.getLexicalScopeVars = getLexicalScopeVars;
|
|
95
|
+
function rewriteCodeExpr(component, methodMap, lexicalArgs, replace) {
|
|
96
|
+
if (replace === void 0) { replace = {}; }
|
|
97
|
+
(0, traverse_1.default)(component).forEach(function (item) {
|
|
98
|
+
if (!checkIsObjectWithCodeBlock(item)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
var code = (0, convert_method_to_function_1.convertMethodToFunction)(item.code, methodMap, lexicalArgs);
|
|
102
|
+
Object.keys(replace).forEach(function (key) {
|
|
103
|
+
code = code.replace(key, replace[key]);
|
|
104
|
+
});
|
|
105
|
+
item.code = code;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
function getStateMethodsAndGetters(state) {
|
|
109
|
+
var methodMap = {};
|
|
110
|
+
Object.keys(state).forEach(function (key) {
|
|
111
|
+
var stateVal = state[key];
|
|
112
|
+
if ((stateVal === null || stateVal === void 0 ? void 0 : stateVal.type) === 'getter' || (stateVal === null || stateVal === void 0 ? void 0 : stateVal.type) === 'method') {
|
|
113
|
+
methodMap[key] = stateVal.type;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
return methodMap;
|
|
117
|
+
}
|
|
118
|
+
exports.getStateMethodsAndGetters = getStateMethodsAndGetters;
|
|
@@ -25,7 +25,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.renderStyles = exports.collectStyles = void 0;
|
|
27
27
|
var json5_1 = __importDefault(require("json5"));
|
|
28
|
-
var dash_case_1 = require("
|
|
28
|
+
var dash_case_1 = require("../../../helpers/dash-case");
|
|
29
29
|
function collectStyles(children, styleMap) {
|
|
30
30
|
var _a;
|
|
31
31
|
var nodes = __spreadArray([], children, true);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function convertTypeScriptToJS(code: string): string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertTypeScriptToJS = void 0;
|
|
4
|
+
var babel_transform_1 = require("../../../helpers/babel-transform");
|
|
5
|
+
function convertTypeScriptToJS(code) {
|
|
6
|
+
return (0, babel_transform_1.babelTransformExpression)(code, {});
|
|
7
|
+
}
|
|
8
|
+
exports.convertTypeScriptToJS = convertTypeScriptToJS;
|
|
@@ -45,7 +45,9 @@ function renderJSXNodes(file, directives, handlers, children, styles, parentSymb
|
|
|
45
45
|
return;
|
|
46
46
|
if (root)
|
|
47
47
|
this.emit('(');
|
|
48
|
-
var needsFragment = root &&
|
|
48
|
+
var needsFragment = root &&
|
|
49
|
+
(children.length > 1 ||
|
|
50
|
+
(children.length && (isInlinedDirective(children[0]) || isTextNode(children[0]))));
|
|
49
51
|
file.import(file.qwikModule, 'h');
|
|
50
52
|
var fragmentSymbol = file.import(file.qwikModule, 'Fragment');
|
|
51
53
|
if (needsFragment) {
|