@builder.io/mitosis 0.0.74 → 0.0.76
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/angular.d.ts +2 -0
- package/dist/src/generators/angular.js +16 -5
- package/dist/src/generators/lit/generate.js +0 -3
- package/dist/src/generators/marko/generate.js +0 -3
- package/dist/src/generators/qwik/component-generator.js +9 -8
- package/dist/src/generators/qwik/directives.js +4 -0
- package/dist/src/generators/qwik/jsx.d.ts +1 -1
- package/dist/src/generators/qwik/jsx.js +5 -9
- package/dist/src/generators/react/generator.js +15 -11
- package/dist/src/generators/solid/index.js +24 -26
- package/dist/src/generators/stencil/generate.js +0 -3
- package/dist/src/generators/svelte/blocks.d.ts +10 -0
- package/dist/src/generators/svelte/blocks.js +188 -0
- package/dist/src/generators/svelte/helpers.d.ts +2 -0
- package/dist/src/generators/svelte/helpers.js +11 -0
- package/dist/src/generators/svelte/index.d.ts +1 -0
- package/dist/src/generators/svelte/index.js +5 -0
- package/dist/src/generators/svelte/svelte.d.ts +3 -0
- package/dist/src/generators/svelte/svelte.js +250 -0
- package/dist/src/generators/svelte/types.d.ts +4 -0
- package/dist/src/generators/svelte/types.js +2 -0
- package/dist/src/generators/vue/blocks.js +13 -23
- package/dist/src/generators/vue/compositionApi.js +23 -83
- package/dist/src/generators/vue/helpers.d.ts +10 -4
- package/dist/src/generators/vue/helpers.js +100 -18
- package/dist/src/generators/vue/optionsApi.js +6 -28
- package/dist/src/generators/vue/types.d.ts +5 -2
- package/dist/src/generators/vue/vue.d.ts +1 -4
- package/dist/src/generators/vue/vue.js +70 -49
- package/dist/src/helpers/is-children.js +3 -2
- package/dist/src/helpers/merge-options.d.ts +7 -0
- package/dist/src/helpers/merge-options.js +31 -0
- package/dist/src/helpers/plugins/process-code.d.ts +8 -0
- package/dist/src/helpers/plugins/process-code.js +69 -0
- package/dist/src/helpers/render-imports.d.ts +11 -3
- package/dist/src/helpers/render-imports.js +18 -4
- package/dist/src/helpers/replace-identifiers.js +18 -8
- package/dist/src/helpers/typescript.d.ts +1 -1
- package/dist/src/parsers/angular.js +4 -3
- package/dist/src/parsers/builder.d.ts +2 -2
- package/dist/src/parsers/jsx/ast.d.ts +2 -0
- package/dist/src/parsers/jsx/component-types.d.ts +2 -0
- package/dist/src/parsers/jsx/element-parser.d.ts +3 -1
- package/dist/src/parsers/jsx/exports.d.ts +4 -2
- package/dist/src/parsers/jsx/function-parser.d.ts +2 -0
- package/dist/src/parsers/jsx/helpers.d.ts +2 -0
- package/dist/src/parsers/jsx/imports.d.ts +2 -0
- package/dist/src/parsers/jsx/metadata.d.ts +2 -0
- package/dist/src/parsers/jsx/state.d.ts +2 -0
- package/dist/src/targets.d.ts +1 -1
- package/dist/src/types/mitosis-component.d.ts +8 -7
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/src/generators/svelte.d.ts +0 -14
- package/dist/src/generators/svelte.js +0 -455
package/package.json
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"engines": {
|
|
26
26
|
"npm": "99999999.9.9"
|
|
27
27
|
},
|
|
28
|
-
"version": "0.0.
|
|
28
|
+
"version": "0.0.76",
|
|
29
29
|
"homepage": "https://github.com/BuilderIO/mitosis",
|
|
30
30
|
"main": "./dist/src/index.js",
|
|
31
31
|
"exports": {
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"prettier-plugin-svelte": "^2.7.0",
|
|
87
87
|
"svelte": "^3.30.0",
|
|
88
88
|
"traverse": "^0.6.6",
|
|
89
|
-
"typescript": "^4.
|
|
89
|
+
"typescript": "^4.8.4",
|
|
90
90
|
"vue": "~2.6"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"rollup": "^2.70.1",
|
|
116
116
|
"ts-jest": "^26.4.4",
|
|
117
117
|
"ts-node": "^9.1.1",
|
|
118
|
-
"typescript": "^4",
|
|
118
|
+
"typescript": "^4.8.4",
|
|
119
119
|
"universalify": "^2.0.0"
|
|
120
120
|
}
|
|
121
121
|
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { MitosisComponent } from '../types/mitosis-component';
|
|
2
|
-
import { BaseNode, MitosisNode } from '../types/mitosis-node';
|
|
3
|
-
import { BaseTranspilerOptions, TranspilerGenerator } from '../types/transpiler';
|
|
4
|
-
export interface ToSvelteOptions extends BaseTranspilerOptions {
|
|
5
|
-
stateType?: 'proxies' | 'variables';
|
|
6
|
-
}
|
|
7
|
-
declare type BlockToSvelte<T extends BaseNode = MitosisNode> = (props: {
|
|
8
|
-
json: T;
|
|
9
|
-
options: ToSvelteOptions;
|
|
10
|
-
parentComponent: MitosisComponent;
|
|
11
|
-
}) => string;
|
|
12
|
-
export declare const blockToSvelte: BlockToSvelte;
|
|
13
|
-
export declare const componentToSvelte: TranspilerGenerator<ToSvelteOptions>;
|
|
14
|
-
export {};
|
|
@@ -1,455 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
-
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
-
return cooked;
|
|
5
|
-
};
|
|
6
|
-
var __assign = (this && this.__assign) || function () {
|
|
7
|
-
__assign = Object.assign || function(t) {
|
|
8
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
-
s = arguments[i];
|
|
10
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
-
t[p] = s[p];
|
|
12
|
-
}
|
|
13
|
-
return t;
|
|
14
|
-
};
|
|
15
|
-
return __assign.apply(this, arguments);
|
|
16
|
-
};
|
|
17
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
18
|
-
var t = {};
|
|
19
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
20
|
-
t[p] = s[p];
|
|
21
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
22
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
23
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
24
|
-
t[p[i]] = s[p[i]];
|
|
25
|
-
}
|
|
26
|
-
return t;
|
|
27
|
-
};
|
|
28
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
29
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
30
|
-
if (ar || !(i in from)) {
|
|
31
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
32
|
-
ar[i] = from[i];
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
36
|
-
};
|
|
37
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
38
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
39
|
-
};
|
|
40
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.componentToSvelte = exports.blockToSvelte = void 0;
|
|
42
|
-
var dedent_1 = __importDefault(require("dedent"));
|
|
43
|
-
var standalone_1 = require("prettier/standalone");
|
|
44
|
-
var traverse_1 = __importDefault(require("traverse"));
|
|
45
|
-
var collect_css_1 = require("../helpers/styles/collect-css");
|
|
46
|
-
var helpers_1 = require("../helpers/styles/helpers");
|
|
47
|
-
var fast_clone_1 = require("../helpers/fast-clone");
|
|
48
|
-
var get_props_1 = require("../helpers/get-props");
|
|
49
|
-
var get_refs_1 = require("../helpers/get-refs");
|
|
50
|
-
var get_state_object_string_1 = require("../helpers/get-state-object-string");
|
|
51
|
-
var is_mitosis_node_1 = require("../helpers/is-mitosis-node");
|
|
52
|
-
var render_imports_1 = require("../helpers/render-imports");
|
|
53
|
-
var strip_state_and_props_refs_1 = require("../helpers/strip-state-and-props-refs");
|
|
54
|
-
var jsx_1 = require("../parsers/jsx");
|
|
55
|
-
var plugins_1 = require("../modules/plugins");
|
|
56
|
-
var is_children_1 = __importDefault(require("../helpers/is-children"));
|
|
57
|
-
var strip_meta_properties_1 = require("../helpers/strip-meta-properties");
|
|
58
|
-
var remove_surrounding_block_1 = require("../helpers/remove-surrounding-block");
|
|
59
|
-
var getters_to_functions_1 = require("../helpers/getters-to-functions");
|
|
60
|
-
var babel_transform_1 = require("../helpers/babel-transform");
|
|
61
|
-
var function_1 = require("fp-ts/lib/function");
|
|
62
|
-
var context_1 = require("./helpers/context");
|
|
63
|
-
var slots_1 = require("../helpers/slots");
|
|
64
|
-
var html_tags_1 = require("../constants/html_tags");
|
|
65
|
-
var is_upper_case_1 = require("../helpers/is-upper-case");
|
|
66
|
-
var json5_1 = __importDefault(require("json5"));
|
|
67
|
-
var functions_1 = require("./helpers/functions");
|
|
68
|
-
var for_1 = require("../helpers/nodes/for");
|
|
69
|
-
var mappers = {
|
|
70
|
-
Fragment: function (_a) {
|
|
71
|
-
var _b;
|
|
72
|
-
var json = _a.json, options = _a.options, parentComponent = _a.parentComponent;
|
|
73
|
-
if ((_b = json.bindings.innerHTML) === null || _b === void 0 ? void 0 : _b.code) {
|
|
74
|
-
return BINDINGS_MAPPER.innerHTML(json, options);
|
|
75
|
-
}
|
|
76
|
-
else if (json.children.length > 0) {
|
|
77
|
-
return "".concat(json.children
|
|
78
|
-
.map(function (item) { return (0, exports.blockToSvelte)({ json: item, options: options, parentComponent: parentComponent }); })
|
|
79
|
-
.join('\n'));
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
return '';
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
For: function (_a) {
|
|
86
|
-
var _b, _c;
|
|
87
|
-
var json = _a.json, options = _a.options, parentComponent = _a.parentComponent;
|
|
88
|
-
var firstChild = json.children[0];
|
|
89
|
-
var keyValue = firstChild.properties.key || ((_b = firstChild.bindings.key) === null || _b === void 0 ? void 0 : _b.code);
|
|
90
|
-
if (keyValue) {
|
|
91
|
-
// we remove extraneous prop which Svelte does not use
|
|
92
|
-
delete firstChild.properties.key;
|
|
93
|
-
delete firstChild.bindings.key;
|
|
94
|
-
}
|
|
95
|
-
var args = (0, for_1.getForArguments)(json, { excludeCollectionName: true }).join(', ');
|
|
96
|
-
return "\n{#each ".concat(stripStateAndProps((_c = json.bindings.each) === null || _c === void 0 ? void 0 : _c.code, options), " as ").concat(args, " ").concat(keyValue ? "(".concat(keyValue, ")") : '', "}\n").concat(json.children.map(function (item) { return (0, exports.blockToSvelte)({ json: item, options: options, parentComponent: parentComponent }); }).join('\n'), "\n{/each}\n");
|
|
97
|
-
},
|
|
98
|
-
Show: function (_a) {
|
|
99
|
-
var _b;
|
|
100
|
-
var json = _a.json, options = _a.options, parentComponent = _a.parentComponent;
|
|
101
|
-
return "\n{#if ".concat(stripStateAndProps((_b = json.bindings.when) === null || _b === void 0 ? void 0 : _b.code, options), " }\n").concat(json.children.map(function (item) { return (0, exports.blockToSvelte)({ json: item, options: options, parentComponent: parentComponent }); }).join('\n'), "\n\n ").concat(json.meta.else
|
|
102
|
-
? "\n {:else}\n ".concat((0, exports.blockToSvelte)({
|
|
103
|
-
json: json.meta.else,
|
|
104
|
-
options: options,
|
|
105
|
-
parentComponent: parentComponent,
|
|
106
|
-
}), "\n ")
|
|
107
|
-
: '', "\n{/if}");
|
|
108
|
-
},
|
|
109
|
-
Slot: function (_a) {
|
|
110
|
-
var _b, _c;
|
|
111
|
-
var json = _a.json, options = _a.options, parentComponent = _a.parentComponent;
|
|
112
|
-
if (!json.bindings.name) {
|
|
113
|
-
var key = Object.keys(json.bindings).find(Boolean);
|
|
114
|
-
if (!key)
|
|
115
|
-
return '<slot />';
|
|
116
|
-
return "\n <span #".concat(key, ">\n ").concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_b = json.bindings[key]) === null || _b === void 0 ? void 0 : _b.code), "\n </span>\n ");
|
|
117
|
-
}
|
|
118
|
-
var strippedTextCode = (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(json.bindings.name.code);
|
|
119
|
-
return "<slot name=\"".concat((0, slots_1.stripSlotPrefix)(strippedTextCode).toLowerCase(), "\">").concat((_c = json.children) === null || _c === void 0 ? void 0 : _c.map(function (item) { return (0, exports.blockToSvelte)({ json: item, options: options, parentComponent: parentComponent }); }).join('\n'), "</slot>");
|
|
120
|
-
},
|
|
121
|
-
};
|
|
122
|
-
var getContextCode = function (json) {
|
|
123
|
-
var contextGetters = json.context.get;
|
|
124
|
-
return Object.keys(contextGetters)
|
|
125
|
-
.map(function (key) { return "let ".concat(key, " = getContext(").concat(contextGetters[key].name, ".key);"); })
|
|
126
|
-
.join('\n');
|
|
127
|
-
};
|
|
128
|
-
var setContextCode = function (json) {
|
|
129
|
-
var contextSetters = json.context.set;
|
|
130
|
-
return Object.keys(contextSetters)
|
|
131
|
-
.map(function (key) {
|
|
132
|
-
var _a = contextSetters[key], ref = _a.ref, value = _a.value, name = _a.name;
|
|
133
|
-
return "setContext(".concat(value ? "".concat(name, ".key") : name, ", ").concat(value
|
|
134
|
-
? (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((0, get_state_object_string_1.stringifyContextValue)(value))
|
|
135
|
-
: ref
|
|
136
|
-
? (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(ref)
|
|
137
|
-
: 'undefined', ");");
|
|
138
|
-
})
|
|
139
|
-
.join('\n');
|
|
140
|
-
};
|
|
141
|
-
var BINDINGS_MAPPER = {
|
|
142
|
-
innerHTML: function (json, options) { var _a; return "{@html ".concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_a = json.bindings.innerHTML) === null || _a === void 0 ? void 0 : _a.code), "}"); },
|
|
143
|
-
};
|
|
144
|
-
var SVELTE_SPECIAL_TAGS = {
|
|
145
|
-
COMPONENT: 'svelte:component',
|
|
146
|
-
ELEMENT: 'svelte:element',
|
|
147
|
-
SELF: 'svelte:self',
|
|
148
|
-
};
|
|
149
|
-
var getTagName = function (_a) {
|
|
150
|
-
var json = _a.json, parentComponent = _a.parentComponent;
|
|
151
|
-
if (parentComponent && json.name === parentComponent.name) {
|
|
152
|
-
return SVELTE_SPECIAL_TAGS.SELF;
|
|
153
|
-
}
|
|
154
|
-
var isValidHtmlTag = html_tags_1.VALID_HTML_TAGS.includes(json.name);
|
|
155
|
-
var isSpecialSvelteTag = json.name.startsWith('svelte:');
|
|
156
|
-
// Check if any import matches `json.name`
|
|
157
|
-
var hasMatchingImport = parentComponent.imports.some(function (_a) {
|
|
158
|
-
var imports = _a.imports;
|
|
159
|
-
return Object.keys(imports).some(function (name) { return name === json.name; });
|
|
160
|
-
});
|
|
161
|
-
// TO-DO: no way to decide between <svelte:component> and <svelte:element>...need to do that through metadata
|
|
162
|
-
// overrides for now
|
|
163
|
-
if (!isValidHtmlTag && !isSpecialSvelteTag && !hasMatchingImport) {
|
|
164
|
-
json.bindings.this = { code: json.name };
|
|
165
|
-
return SVELTE_SPECIAL_TAGS.COMPONENT;
|
|
166
|
-
}
|
|
167
|
-
return json.name;
|
|
168
|
-
};
|
|
169
|
-
var stripStateAndProps = function (code, options) {
|
|
170
|
-
return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(code, {
|
|
171
|
-
includeState: options.stateType === 'variables',
|
|
172
|
-
replaceWith: function (name) { return (name === 'children' ? '$$slots.default' : name); },
|
|
173
|
-
});
|
|
174
|
-
};
|
|
175
|
-
var blockToSvelte = function (_a) {
|
|
176
|
-
var _b, _c, _d, _e;
|
|
177
|
-
var json = _a.json, options = _a.options, parentComponent = _a.parentComponent;
|
|
178
|
-
if (mappers[json.name]) {
|
|
179
|
-
return mappers[json.name]({
|
|
180
|
-
json: json,
|
|
181
|
-
options: options,
|
|
182
|
-
parentComponent: parentComponent,
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
var tagName = getTagName({ json: json, parentComponent: parentComponent });
|
|
186
|
-
if ((0, is_children_1.default)(json)) {
|
|
187
|
-
return "<slot></slot>";
|
|
188
|
-
}
|
|
189
|
-
if (json.properties._text) {
|
|
190
|
-
return json.properties._text;
|
|
191
|
-
}
|
|
192
|
-
var textCode = (_b = json.bindings._text) === null || _b === void 0 ? void 0 : _b.code;
|
|
193
|
-
if (textCode) {
|
|
194
|
-
var strippedTextCode = stripStateAndProps(textCode, options);
|
|
195
|
-
if ((0, slots_1.isSlotProperty)(strippedTextCode)) {
|
|
196
|
-
return "<slot name=\"".concat((0, slots_1.stripSlotPrefix)(strippedTextCode).toLowerCase(), "\"/>");
|
|
197
|
-
}
|
|
198
|
-
return "{".concat(strippedTextCode, "}");
|
|
199
|
-
}
|
|
200
|
-
var str = '';
|
|
201
|
-
str += "<".concat(tagName, " ");
|
|
202
|
-
var isComponent = Boolean(tagName[0] && (0, is_upper_case_1.isUpperCase)(tagName[0]));
|
|
203
|
-
if ((((_c = json.bindings.style) === null || _c === void 0 ? void 0 : _c.code) || json.properties.style) && !isComponent) {
|
|
204
|
-
var useValue = stripStateAndProps(((_d = json.bindings.style) === null || _d === void 0 ? void 0 : _d.code) || json.properties.style, options);
|
|
205
|
-
str += "use:mitosis_styling={".concat(useValue, "}");
|
|
206
|
-
delete json.bindings.style;
|
|
207
|
-
delete json.properties.style;
|
|
208
|
-
}
|
|
209
|
-
for (var key in json.properties) {
|
|
210
|
-
var value = json.properties[key];
|
|
211
|
-
str += " ".concat(key, "=\"").concat(value, "\" ");
|
|
212
|
-
}
|
|
213
|
-
for (var key in json.bindings) {
|
|
214
|
-
if (key === 'innerHTML') {
|
|
215
|
-
continue;
|
|
216
|
-
}
|
|
217
|
-
var _f = json.bindings[key], value = _f.code, _g = _f.arguments, cusArgs = _g === void 0 ? ['event'] : _g, type = _f.type;
|
|
218
|
-
// TODO: proper babel transform to replace. Util for this
|
|
219
|
-
var useValue = stripStateAndProps(value, options);
|
|
220
|
-
if (type === 'spread') {
|
|
221
|
-
str += ' {...';
|
|
222
|
-
if (key === 'props') {
|
|
223
|
-
str += "$$";
|
|
224
|
-
}
|
|
225
|
-
str += "".concat(useValue, "}");
|
|
226
|
-
}
|
|
227
|
-
else if (key.startsWith('on')) {
|
|
228
|
-
var event_1 = key.replace('on', '').toLowerCase();
|
|
229
|
-
// TODO: handle quotes in event handler values
|
|
230
|
-
var valueWithoutBlock = (0, remove_surrounding_block_1.removeSurroundingBlock)(useValue);
|
|
231
|
-
if (valueWithoutBlock === key) {
|
|
232
|
-
str += " on:".concat(event_1, "={").concat(valueWithoutBlock, "} ");
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
str += " on:".concat(event_1, "=\"{").concat(cusArgs.join(','), " => {").concat(valueWithoutBlock, "}}\" ");
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
else if (key === 'ref') {
|
|
239
|
-
str += " bind:this={".concat(useValue, "} ");
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
str += " ".concat(key, "={").concat(useValue, "} ");
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
// if we have innerHTML, it doesn't matter whether we have closing tags or not, or children or not.
|
|
246
|
-
// we use the innerHTML content as children and don't render the self-closing tag.
|
|
247
|
-
if ((_e = json.bindings.innerHTML) === null || _e === void 0 ? void 0 : _e.code) {
|
|
248
|
-
str += '>';
|
|
249
|
-
str += BINDINGS_MAPPER.innerHTML(json, options);
|
|
250
|
-
str += "</".concat(tagName, ">");
|
|
251
|
-
return str;
|
|
252
|
-
}
|
|
253
|
-
if (jsx_1.selfClosingTags.has(tagName)) {
|
|
254
|
-
return str + ' />';
|
|
255
|
-
}
|
|
256
|
-
str += '>';
|
|
257
|
-
if (json.children) {
|
|
258
|
-
str += json.children
|
|
259
|
-
.map(function (item) { return (0, exports.blockToSvelte)({ json: item, options: options, parentComponent: parentComponent }); })
|
|
260
|
-
.join('');
|
|
261
|
-
}
|
|
262
|
-
str += "</".concat(tagName, ">");
|
|
263
|
-
return str;
|
|
264
|
-
};
|
|
265
|
-
exports.blockToSvelte = blockToSvelte;
|
|
266
|
-
/**
|
|
267
|
-
* Replace
|
|
268
|
-
* <input value={state.name} onChange={event => state.name = event.target.value}
|
|
269
|
-
* with
|
|
270
|
-
* <input bind:value={state.name}/>
|
|
271
|
-
* when easily identified, for more idiomatic svelte code
|
|
272
|
-
*/
|
|
273
|
-
var useBindValue = function (json, options) {
|
|
274
|
-
function normalizeStr(str) {
|
|
275
|
-
return str
|
|
276
|
-
.trim()
|
|
277
|
-
.replace(/\n|\r/g, '')
|
|
278
|
-
.replace(/^{/, '')
|
|
279
|
-
.replace(/}$/, '')
|
|
280
|
-
.replace(/;$/, '')
|
|
281
|
-
.replace(/\s+/g, '');
|
|
282
|
-
}
|
|
283
|
-
(0, traverse_1.default)(json).forEach(function (item) {
|
|
284
|
-
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
285
|
-
var _a = item.bindings, value = _a.value, onChange = _a.onChange;
|
|
286
|
-
if (value && onChange) {
|
|
287
|
-
var _b = onChange.arguments, cusArgs = _b === void 0 ? ['event'] : _b;
|
|
288
|
-
if (normalizeStr(onChange.code) === "".concat(normalizeStr(value.code), "=").concat(cusArgs[0], ".target.value")) {
|
|
289
|
-
delete item.bindings.value;
|
|
290
|
-
delete item.bindings.onChange;
|
|
291
|
-
item.bindings['bind:value'] = value;
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
});
|
|
296
|
-
};
|
|
297
|
-
/**
|
|
298
|
-
* Removes all `this.` references.
|
|
299
|
-
*/
|
|
300
|
-
var stripThisRefs = function (str) {
|
|
301
|
-
return str.replace(/this\.([a-zA-Z_\$0-9]+)/g, '$1');
|
|
302
|
-
};
|
|
303
|
-
var componentToSvelte = function (_a) {
|
|
304
|
-
if (_a === void 0) { _a = {}; }
|
|
305
|
-
var _b = _a.plugins, plugins = _b === void 0 ? [] : _b, userProvidedOptions = __rest(_a, ["plugins"]);
|
|
306
|
-
return function (_a) {
|
|
307
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
308
|
-
var component = _a.component;
|
|
309
|
-
var options = __assign({ stateType: 'variables', prettier: true, plugins: __spreadArray([functions_1.FUNCTION_HACK_PLUGIN], plugins, true) }, userProvidedOptions);
|
|
310
|
-
// Make a copy we can safely mutate, similar to babel's toolchain
|
|
311
|
-
var json = (0, fast_clone_1.fastClone)(component);
|
|
312
|
-
if (options.plugins) {
|
|
313
|
-
json = (0, plugins_1.runPreJsonPlugins)(json, options.plugins);
|
|
314
|
-
}
|
|
315
|
-
var refs = Array.from((0, get_refs_1.getRefs)(json));
|
|
316
|
-
useBindValue(json, options);
|
|
317
|
-
(0, getters_to_functions_1.gettersToFunctions)(json);
|
|
318
|
-
if (options.plugins) {
|
|
319
|
-
json = (0, plugins_1.runPostJsonPlugins)(json, options.plugins);
|
|
320
|
-
}
|
|
321
|
-
var css = (0, collect_css_1.collectCss)(json);
|
|
322
|
-
(0, strip_meta_properties_1.stripMetaProperties)(json);
|
|
323
|
-
var dataString = (0, function_1.pipe)((0, get_state_object_string_1.getStateObjectStringFromComponent)(json, {
|
|
324
|
-
data: true,
|
|
325
|
-
functions: false,
|
|
326
|
-
getters: false,
|
|
327
|
-
format: options.stateType === 'proxies' ? 'object' : 'variables',
|
|
328
|
-
keyPrefix: options.stateType === 'variables' ? 'let ' : '',
|
|
329
|
-
valueMapper: function (code) { return stripStateAndProps(code, options); },
|
|
330
|
-
}), babel_transform_1.babelTransformCode);
|
|
331
|
-
var getterString = (0, function_1.pipe)((0, get_state_object_string_1.getStateObjectStringFromComponent)(json, {
|
|
332
|
-
data: false,
|
|
333
|
-
getters: true,
|
|
334
|
-
functions: false,
|
|
335
|
-
format: 'variables',
|
|
336
|
-
keyPrefix: '$: ',
|
|
337
|
-
valueMapper: function (code) {
|
|
338
|
-
return (0, function_1.pipe)(code.replace(/^get ([a-zA-Z_\$0-9]+)/, '$1 = ').replace(/\)/, ') => '), function (str) { return stripStateAndProps(str, options); }, stripThisRefs);
|
|
339
|
-
},
|
|
340
|
-
}), babel_transform_1.babelTransformCode);
|
|
341
|
-
var functionsString = (0, function_1.pipe)((0, get_state_object_string_1.getStateObjectStringFromComponent)(json, {
|
|
342
|
-
data: false,
|
|
343
|
-
getters: false,
|
|
344
|
-
functions: true,
|
|
345
|
-
format: 'variables',
|
|
346
|
-
valueMapper: function (code) { return (0, function_1.pipe)(stripStateAndProps(code, options), stripThisRefs); },
|
|
347
|
-
}), babel_transform_1.babelTransformCode);
|
|
348
|
-
var hasData = dataString.length > 4;
|
|
349
|
-
var props = Array.from((0, get_props_1.getProps)(json)).filter(function (prop) { return !(0, slots_1.isSlotProperty)(prop); });
|
|
350
|
-
var transformHookCode = function (hookCode) {
|
|
351
|
-
return (0, function_1.pipe)(stripStateAndProps(hookCode, options), babel_transform_1.babelTransformCode);
|
|
352
|
-
};
|
|
353
|
-
var str = '';
|
|
354
|
-
var tsLangAttribute = options.typescript ? "lang='ts'" : '';
|
|
355
|
-
if (options.typescript && ((_b = json.types) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
356
|
-
str += (0, dedent_1.default)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n <script context='module' ", ">\n ", "\n </script>\n \n\n \n\n "], ["\n <script context='module' ", ">\n ", "\n </script>\n \\n\n \\n\n "])), tsLangAttribute, json.types ? json.types.join('\n\n') + '\n' : '');
|
|
357
|
-
}
|
|
358
|
-
// prepare svelte imports
|
|
359
|
-
var svelteImports = [];
|
|
360
|
-
if ((_d = (_c = json.hooks.onMount) === null || _c === void 0 ? void 0 : _c.code) === null || _d === void 0 ? void 0 : _d.length) {
|
|
361
|
-
svelteImports.push('onMount');
|
|
362
|
-
}
|
|
363
|
-
if ((_e = json.hooks.onUpdate) === null || _e === void 0 ? void 0 : _e.length) {
|
|
364
|
-
svelteImports.push('afterUpdate');
|
|
365
|
-
}
|
|
366
|
-
if ((_g = (_f = json.hooks.onUnMount) === null || _f === void 0 ? void 0 : _f.code) === null || _g === void 0 ? void 0 : _g.length) {
|
|
367
|
-
svelteImports.push('onDestroy');
|
|
368
|
-
}
|
|
369
|
-
if ((0, context_1.hasContext)(component)) {
|
|
370
|
-
svelteImports.push('getContext', 'setContext');
|
|
371
|
-
}
|
|
372
|
-
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 </script>\n\n ", "\n\n ", "\n "], ["\n <script ", ">\n ", "\n ", "\n\n ", "\n ", "\n "
|
|
373
|
-
// https://svelte.dev/repl/bd9b56891f04414982517bbd10c52c82?version=3.31.0
|
|
374
|
-
, "\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'"), (0, render_imports_1.renderPreComponent)({ component: json, target: 'svelte' }), !hasData || options.stateType === 'variables' ? '' : "import onChange from 'on-change'", props
|
|
375
|
-
.map(function (name) {
|
|
376
|
-
if (name === 'children') {
|
|
377
|
-
return '';
|
|
378
|
-
}
|
|
379
|
-
var propDeclaration = "export let ".concat(name);
|
|
380
|
-
if (options.typescript && json.propsTypeRef && json.propsTypeRef !== 'any') {
|
|
381
|
-
propDeclaration += ": ".concat(json.propsTypeRef.split(' |')[0], "['").concat(name, "']");
|
|
382
|
-
}
|
|
383
|
-
if (json.defaultProps && json.defaultProps.hasOwnProperty(name)) {
|
|
384
|
-
propDeclaration += "=".concat(json5_1.default.stringify(json.defaultProps[name]));
|
|
385
|
-
}
|
|
386
|
-
propDeclaration += ';';
|
|
387
|
-
return propDeclaration;
|
|
388
|
-
})
|
|
389
|
-
.join('\n'),
|
|
390
|
-
// https://svelte.dev/repl/bd9b56891f04414982517bbd10c52c82?version=3.31.0
|
|
391
|
-
(0, helpers_1.hasStyle)(json)
|
|
392
|
-
? "\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 "
|
|
393
|
-
: '', getContextCode(json), setContextCode(json), functionsString.length < 4 ? '' : functionsString, getterString.length < 4 ? '' : getterString, refs.map(function (ref) { return "let ".concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(ref)); }).join('\n'), options.stateType === 'proxies'
|
|
394
|
-
? dataString.length < 4
|
|
395
|
-
? ''
|
|
396
|
-
: "let state = onChange(".concat(dataString, ", () => state = state)")
|
|
397
|
-
: dataString, (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_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)
|
|
398
|
-
? ''
|
|
399
|
-
: "onMount(() => { ".concat(transformHookCode(json.hooks.onMount.code), " });"), !((_l = json.hooks.onUpdate) === null || _l === void 0 ? void 0 : _l.length)
|
|
400
|
-
? ''
|
|
401
|
-
: json.hooks.onUpdate
|
|
402
|
-
.map(function (_a, index) {
|
|
403
|
-
var code = _a.code, deps = _a.deps;
|
|
404
|
-
var hookCode = transformHookCode(code);
|
|
405
|
-
if (deps) {
|
|
406
|
-
var fnName = "onUpdateFn_".concat(index);
|
|
407
|
-
return "\n function ".concat(fnName, "() {\n ").concat(hookCode, "\n }\n $: ").concat(fnName, "(...").concat(stripStateAndProps(deps, options), ")\n ");
|
|
408
|
-
}
|
|
409
|
-
else {
|
|
410
|
-
return "afterUpdate(() => { ".concat(hookCode, " })");
|
|
411
|
-
}
|
|
412
|
-
})
|
|
413
|
-
.join(';'), !((_m = json.hooks.onUnMount) === null || _m === void 0 ? void 0 : _m.code)
|
|
414
|
-
? ''
|
|
415
|
-
: "onDestroy(() => { ".concat(transformHookCode(json.hooks.onUnMount.code), " });"), json.children
|
|
416
|
-
.map(function (item) {
|
|
417
|
-
return (0, exports.blockToSvelte)({
|
|
418
|
-
json: item,
|
|
419
|
-
options: options,
|
|
420
|
-
parentComponent: json,
|
|
421
|
-
});
|
|
422
|
-
})
|
|
423
|
-
.join('\n'), !css.trim().length
|
|
424
|
-
? ''
|
|
425
|
-
: "<style>\n ".concat(css, "\n </style>"));
|
|
426
|
-
if (options.plugins) {
|
|
427
|
-
str = (0, plugins_1.runPreCodePlugins)(str, options.plugins);
|
|
428
|
-
}
|
|
429
|
-
if (options.prettier !== false) {
|
|
430
|
-
try {
|
|
431
|
-
str = (0, standalone_1.format)(str, {
|
|
432
|
-
parser: 'svelte',
|
|
433
|
-
plugins: [
|
|
434
|
-
// To support running in browsers
|
|
435
|
-
require('prettier/parser-html'),
|
|
436
|
-
require('prettier/parser-postcss'),
|
|
437
|
-
require('prettier/parser-babel'),
|
|
438
|
-
require('prettier/parser-typescript'),
|
|
439
|
-
require('prettier-plugin-svelte'),
|
|
440
|
-
],
|
|
441
|
-
});
|
|
442
|
-
}
|
|
443
|
-
catch (err) {
|
|
444
|
-
console.warn('Could not prettify');
|
|
445
|
-
console.warn({ string: str }, err);
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
if (options.plugins) {
|
|
449
|
-
str = (0, plugins_1.runPostCodePlugins)(str, options.plugins);
|
|
450
|
-
}
|
|
451
|
-
return str;
|
|
452
|
-
};
|
|
453
|
-
};
|
|
454
|
-
exports.componentToSvelte = componentToSvelte;
|
|
455
|
-
var templateObject_1, templateObject_2;
|