@builder.io/mitosis 0.0.92 → 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 +93 -150
- package/dist/src/generators/qwik/component.js +9 -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 +1 -4
- package/dist/src/generators/qwik/src-generator.js +34 -16
- package/dist/src/generators/react/generator.js +4 -3
- 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} +48 -34
- 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/generators/svelte/blocks.js +9 -3
- package/dist/src/generators/svelte/helpers.js +8 -1
- package/dist/src/generators/vue/blocks.js +10 -4
- package/dist/src/generators/vue/helpers.d.ts +2 -1
- package/dist/src/generators/vue/helpers.js +51 -12
- package/dist/src/generators/vue/vue.js +6 -3
- 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/helpers/replace-identifiers.js +2 -2
- package/dist/src/helpers/slots.d.ts +2 -2
- package/dist/src/helpers/slots.js +7 -3
- 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/src/plugins/compile-away-builder-components.js +22 -4
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -3
- 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,32 +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
|
-
var
|
|
4
|
+
var standalone_1 = require("prettier/standalone");
|
|
17
5
|
var fast_clone_1 = require("../../helpers/fast-clone");
|
|
18
6
|
var collect_css_1 = require("../../helpers/styles/collect-css");
|
|
19
7
|
var state_1 = require("../../helpers/state");
|
|
20
|
-
var add_prevent_default_1 = require("./add-prevent-default");
|
|
21
|
-
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");
|
|
22
10
|
var jsx_1 = require("./jsx");
|
|
23
11
|
var src_generator_1 = require("./src-generator");
|
|
24
12
|
var plugins_1 = require("../../modules/plugins");
|
|
25
|
-
var
|
|
26
|
-
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");
|
|
27
19
|
Error.stackTraceLimit = 9999;
|
|
28
|
-
// TODO(misko): styles are not processed.
|
|
29
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
|
+
};
|
|
30
58
|
var componentToQwik = function (userOptions) {
|
|
31
59
|
if (userOptions === void 0) { userOptions = {}; }
|
|
32
60
|
return function (_a) {
|
|
@@ -34,14 +62,10 @@ var componentToQwik = function (userOptions) {
|
|
|
34
62
|
var _component = _a.component, path = _a.path;
|
|
35
63
|
// Make a copy we can safely mutate, similar to babel's toolchain
|
|
36
64
|
var component = (0, fast_clone_1.fastClone)(_component);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (userOptions.plugins) {
|
|
42
|
-
component = (0, plugins_1.runPostJsonPlugins)(component, userOptions.plugins);
|
|
43
|
-
}
|
|
44
|
-
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;
|
|
45
69
|
var file = new src_generator_1.File(component.name + (isTypeScript ? '.ts' : '.js'), {
|
|
46
70
|
isPretty: true,
|
|
47
71
|
isJSX: true,
|
|
@@ -56,9 +80,9 @@ var componentToQwik = function (userOptions) {
|
|
|
56
80
|
var metadata = component.meta.useMetadata || {};
|
|
57
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;
|
|
58
82
|
var mutable_1 = ((_d = metadata === null || metadata === void 0 ? void 0 : metadata.qwik) === null || _d === void 0 ? void 0 : _d.mutable) || [];
|
|
59
|
-
var imports_1 = (_e = metadata === null || metadata === void 0 ? void 0 : metadata.qwik) === null || _e === void 0 ? void 0 : _e.imports;
|
|
60
|
-
|
|
61
|
-
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);
|
|
62
86
|
var hasState_1 = (0, state_1.checkHasState)(component);
|
|
63
87
|
var css_1 = null;
|
|
64
88
|
var componentFn = (0, src_generator_1.arrowFnBlock)(['props'], [
|
|
@@ -67,12 +91,11 @@ var componentToQwik = function (userOptions) {
|
|
|
67
91
|
css_1 = emitUseStyles(file, component);
|
|
68
92
|
emitUseContext(file, component);
|
|
69
93
|
emitUseRef(file, component);
|
|
70
|
-
hasState_1 && emitUseStore(file,
|
|
94
|
+
hasState_1 && (0, state_2.emitUseStore)(file, state_3);
|
|
71
95
|
emitUseContextProvider(file, component);
|
|
72
96
|
emitUseClientEffect(file, component);
|
|
73
97
|
emitUseMount(file, component);
|
|
74
98
|
emitUseTask(file, component);
|
|
75
|
-
emitUseCleanup(file, component);
|
|
76
99
|
emitTagNameHack(file, component, (_a = component.meta.useMetadata) === null || _a === void 0 ? void 0 : _a.elementTag);
|
|
77
100
|
emitTagNameHack(file, component, (_b = component.meta.useMetadata) === null || _b === void 0 ? void 0 : _b.componentElementTag);
|
|
78
101
|
emitJSX(file, component, mutable_1);
|
|
@@ -84,11 +107,9 @@ var componentToQwik = function (userOptions) {
|
|
|
84
107
|
file.exportDefault(component.name);
|
|
85
108
|
emitStyles(file, css_1);
|
|
86
109
|
DEBUG && file.exportConst('COMPONENT', JSON.stringify(component));
|
|
87
|
-
var sourceFile =
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
sourceFile = (0, plugins_1.runPostCodePlugins)(sourceFile, userOptions.plugins);
|
|
91
|
-
}
|
|
110
|
+
var sourceFile = file.toString();
|
|
111
|
+
sourceFile = (0, plugins_1.runPreCodePlugins)(sourceFile, options.plugins);
|
|
112
|
+
sourceFile = (0, plugins_1.runPostCodePlugins)(sourceFile, options.plugins);
|
|
92
113
|
return sourceFile;
|
|
93
114
|
}
|
|
94
115
|
catch (e) {
|
|
@@ -99,15 +120,15 @@ var componentToQwik = function (userOptions) {
|
|
|
99
120
|
};
|
|
100
121
|
exports.componentToQwik = componentToQwik;
|
|
101
122
|
function emitExports(file, component) {
|
|
102
|
-
component.exports
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
123
|
+
Object.keys(component.exports || {}).forEach(function (key) {
|
|
124
|
+
var exportObj = component.exports[key];
|
|
125
|
+
var code = exportObj.code.startsWith('export ') ? exportObj.code : "export ".concat(exportObj.code);
|
|
126
|
+
file.src.emit(code);
|
|
127
|
+
});
|
|
107
128
|
}
|
|
108
129
|
function emitTagNameHack(file, component, metadataValue) {
|
|
109
130
|
if (typeof metadataValue === 'string' && metadataValue) {
|
|
110
|
-
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)), ';');
|
|
111
132
|
}
|
|
112
133
|
}
|
|
113
134
|
function emitUseClientEffect(file, component) {
|
|
@@ -115,13 +136,13 @@ function emitUseClientEffect(file, component) {
|
|
|
115
136
|
// This is called useMount, but in practice it is used as
|
|
116
137
|
// useClientEffect. Not sure if this is correct, but for now.
|
|
117
138
|
var code = component.hooks.onMount.code;
|
|
118
|
-
file.src.emit(file.import(file.qwikModule, '
|
|
139
|
+
file.src.emit(file.import(file.qwikModule, 'useVisibleTask$').localName, '(()=>{', code, '});');
|
|
119
140
|
}
|
|
120
141
|
}
|
|
121
142
|
function emitUseMount(file, component) {
|
|
122
143
|
if (component.hooks.onInit) {
|
|
123
144
|
var code = component.hooks.onInit.code;
|
|
124
|
-
file.src.emit(file.import(file.qwikModule, '
|
|
145
|
+
file.src.emit(file.import(file.qwikModule, 'useTask$').localName, '(()=>{', code, '});');
|
|
125
146
|
}
|
|
126
147
|
}
|
|
127
148
|
function emitUseTask(file, component) {
|
|
@@ -129,7 +150,7 @@ function emitUseTask(file, component) {
|
|
|
129
150
|
component.hooks.onUpdate.forEach(function (onUpdate) {
|
|
130
151
|
file.src.emit(file.import(file.qwikModule, 'useTask$').localName, '(({track})=>{');
|
|
131
152
|
emitTrackExpressions(file.src, onUpdate.deps);
|
|
132
|
-
file.src.emit(convertTypeScriptToJS(onUpdate.code));
|
|
153
|
+
file.src.emit((0, transform_code_1.convertTypeScriptToJS)(onUpdate.code));
|
|
133
154
|
file.src.emit('});');
|
|
134
155
|
});
|
|
135
156
|
}
|
|
@@ -143,17 +164,14 @@ function emitTrackExpressions(src, deps) {
|
|
|
143
164
|
src.emit("track(() => ".concat(dep, ");"));
|
|
144
165
|
});
|
|
145
166
|
}
|
|
146
|
-
function emitUseCleanup(file, component) {
|
|
147
|
-
if (component.hooks.onUnMount) {
|
|
148
|
-
var code = component.hooks.onUnMount.code;
|
|
149
|
-
file.src.emit(file.import(file.qwikModule, 'useCleanup$').localName, '(()=>{', code, '});');
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
167
|
function emitJSX(file, component, mutable) {
|
|
153
168
|
var directives = new Map();
|
|
154
169
|
var handlers = new Map();
|
|
155
170
|
var styles = new Map();
|
|
156
171
|
var parentSymbolBindings = {};
|
|
172
|
+
if (file.options.isPretty) {
|
|
173
|
+
file.src.emit('\n\n');
|
|
174
|
+
}
|
|
157
175
|
file.src.emit('return ', (0, jsx_1.renderJSXNodes)(file, directives, handlers, component.children, styles, parentSymbolBindings));
|
|
158
176
|
}
|
|
159
177
|
function emitUseContextProvider(file, component) {
|
|
@@ -187,41 +205,43 @@ function emitUseContext(file, component) {
|
|
|
187
205
|
}
|
|
188
206
|
function emitUseRef(file, component) {
|
|
189
207
|
Object.keys(component.refs).forEach(function (refKey) {
|
|
190
|
-
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>' : '', "();"));
|
|
191
209
|
});
|
|
192
210
|
}
|
|
193
211
|
function emitUseStyles(file, component) {
|
|
194
212
|
var css = (0, collect_css_1.collectCss)(component, { prefix: component.name });
|
|
195
213
|
if (css) {
|
|
196
214
|
file.src.emit(file.import(file.qwikModule, 'useStylesScoped$').localName, '(STYLES);');
|
|
215
|
+
if (file.options.isPretty) {
|
|
216
|
+
file.src.emit('\n\n');
|
|
217
|
+
}
|
|
197
218
|
}
|
|
198
219
|
return css;
|
|
199
220
|
}
|
|
200
221
|
function emitStyles(file, css) {
|
|
201
|
-
if (css) {
|
|
202
|
-
|
|
222
|
+
if (!css) {
|
|
223
|
+
return;
|
|
203
224
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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========================================================================');
|
|
216
242
|
}
|
|
217
|
-
file.src.emit('(');
|
|
218
|
-
file.src.emit((0, stable_inject_1.stableInject)(state));
|
|
219
|
-
file.src.emit(');');
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
// TODO hack for now so that `state` variable is defined, even though it is never read.
|
|
223
|
-
file.src.emit('const state' + (file.options.isTypeScript ? ': any' : '') + ' = {};');
|
|
224
243
|
}
|
|
244
|
+
file.exportConst('STYLES', '`\n' + css.replace(/`/g, '\\`') + '`\n');
|
|
225
245
|
}
|
|
226
246
|
function emitTypes(file, component) {
|
|
227
247
|
var _a;
|
|
@@ -229,33 +249,6 @@ function emitTypes(file, component) {
|
|
|
229
249
|
(_a = component.types) === null || _a === void 0 ? void 0 : _a.forEach(function (t) { return file.src.emit(t, '\n'); });
|
|
230
250
|
}
|
|
231
251
|
}
|
|
232
|
-
function emitStateMethodsAndRewriteBindings(file, component, metadata) {
|
|
233
|
-
var _a;
|
|
234
|
-
var lexicalArgs = getLexicalScopeVars(component);
|
|
235
|
-
var state = emitStateMethods(file, component.state, lexicalArgs);
|
|
236
|
-
var methodMap = getStateMethodsAndGetters(component.state);
|
|
237
|
-
rewriteCodeExpr(component, methodMap, lexicalArgs, (_a = metadata.qwik) === null || _a === void 0 ? void 0 : _a.replace);
|
|
238
|
-
return state;
|
|
239
|
-
}
|
|
240
|
-
var checkIsObjectWithCodeBlock = function (obj) {
|
|
241
|
-
return typeof obj == 'object' && (obj === null || obj === void 0 ? void 0 : obj.code) && typeof obj.code === 'string';
|
|
242
|
-
};
|
|
243
|
-
function rewriteCodeExpr(component, methodMap, lexicalArgs, replace) {
|
|
244
|
-
if (replace === void 0) { replace = {}; }
|
|
245
|
-
(0, traverse_1.default)(component).forEach(function (item) {
|
|
246
|
-
if (!checkIsObjectWithCodeBlock(item)) {
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
var code = (0, convert_method_to_function_1.convertMethodToFunction)(item.code, methodMap, lexicalArgs);
|
|
250
|
-
Object.keys(replace).forEach(function (key) {
|
|
251
|
-
code = code.replace(key, replace[key]);
|
|
252
|
-
});
|
|
253
|
-
item.code = code;
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
function getLexicalScopeVars(component) {
|
|
257
|
-
return __spreadArray(__spreadArray(['props', 'state'], Object.keys(component.refs), true), Object.keys(component.context.get), true);
|
|
258
|
-
}
|
|
259
252
|
function emitImports(file, component) {
|
|
260
253
|
var _a;
|
|
261
254
|
// <SELF> is used for self-referencing within the file.
|
|
@@ -267,58 +260,8 @@ function emitImports(file, component) {
|
|
|
267
260
|
});
|
|
268
261
|
});
|
|
269
262
|
}
|
|
270
|
-
function emitStateMethods(file, componentState, lexicalArgs) {
|
|
271
|
-
var stateValues = {};
|
|
272
|
-
var stateInit = [stateValues];
|
|
273
|
-
var methodMap = getStateMethodsAndGetters(componentState);
|
|
274
|
-
for (var key in componentState) {
|
|
275
|
-
var stateValue = componentState[key];
|
|
276
|
-
switch (stateValue === null || stateValue === void 0 ? void 0 : stateValue.type) {
|
|
277
|
-
case 'method':
|
|
278
|
-
case 'getter':
|
|
279
|
-
case 'function':
|
|
280
|
-
var code = stateValue.code;
|
|
281
|
-
var prefixIdx = 0;
|
|
282
|
-
if (stateValue.type === 'getter') {
|
|
283
|
-
prefixIdx += 'get '.length;
|
|
284
|
-
}
|
|
285
|
-
else if (stateValue.type === 'function') {
|
|
286
|
-
prefixIdx += 'function '.length;
|
|
287
|
-
}
|
|
288
|
-
code = code.substring(prefixIdx);
|
|
289
|
-
code = (0, convert_method_to_function_1.convertMethodToFunction)(code, methodMap, lexicalArgs).replace('(', "(".concat(lexicalArgs.join(','), ","));
|
|
290
|
-
var functionName = code.split(/\(/)[0];
|
|
291
|
-
if (stateValue.type === 'getter') {
|
|
292
|
-
stateInit.push("state.".concat(key, "=").concat(functionName, "(").concat(lexicalArgs.join(','), ")"));
|
|
293
|
-
}
|
|
294
|
-
if (!file.options.isTypeScript) {
|
|
295
|
-
// Erase type information
|
|
296
|
-
code = convertTypeScriptToJS(code);
|
|
297
|
-
}
|
|
298
|
-
file.exportConst(functionName, 'function ' + code, true);
|
|
299
|
-
continue;
|
|
300
|
-
case 'property':
|
|
301
|
-
stateValues[key] = stateValue.code;
|
|
302
|
-
continue;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
return stateInit;
|
|
306
|
-
}
|
|
307
|
-
function convertTypeScriptToJS(code) {
|
|
308
|
-
return (0, babel_transform_1.babelTransformExpression)(code, {});
|
|
309
|
-
}
|
|
310
263
|
function extractGetterBody(code) {
|
|
311
264
|
var start = code.indexOf('{');
|
|
312
265
|
var end = code.lastIndexOf('}');
|
|
313
266
|
return code.substring(start + 1, end).trim();
|
|
314
267
|
}
|
|
315
|
-
function getStateMethodsAndGetters(state) {
|
|
316
|
-
var methodMap = {};
|
|
317
|
-
Object.keys(state).forEach(function (key) {
|
|
318
|
-
var stateVal = state[key];
|
|
319
|
-
if ((stateVal === null || stateVal === void 0 ? void 0 : stateVal.type) === 'getter' || (stateVal === null || stateVal === void 0 ? void 0 : stateVal.type) === 'method') {
|
|
320
|
-
methodMap[key] = stateVal.type;
|
|
321
|
-
}
|
|
322
|
-
});
|
|
323
|
-
return methodMap;
|
|
324
|
-
}
|
|
@@ -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);
|
|
@@ -109,9 +109,15 @@ function addComponent(fileSet, component, opts) {
|
|
|
109
109
|
exports.addComponent = addComponent;
|
|
110
110
|
function generateStyles(fromFile, dstFile, symbol, scoped) {
|
|
111
111
|
return function () {
|
|
112
|
+
if (this.file.options.isPretty) {
|
|
113
|
+
this.emit('\n\n');
|
|
114
|
+
}
|
|
112
115
|
this.emit((0, src_generator_1.invoke)(fromFile.import(fromFile.qwikModule, scoped ? 'useStylesScopedQrl' : 'useStylesQrl'), [
|
|
113
116
|
generateQrl(fromFile, dstFile, symbol),
|
|
114
117
|
]), ';');
|
|
118
|
+
if (this.file.options.isPretty) {
|
|
119
|
+
this.emit('\n\n');
|
|
120
|
+
}
|
|
115
121
|
};
|
|
116
122
|
}
|
|
117
123
|
function addBuilderBlockClass(children) {
|
|
@@ -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;
|