@builder.io/mitosis 0.0.56-23 → 0.0.56-26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/__tests__/data/blocks/image.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/image.raw.jsx +1 -1
- package/dist/src/__tests__/data/show/nested-show.raw copy.d.ts +6 -0
- package/dist/src/__tests__/data/show/nested-show.raw copy.jsx +11 -0
- package/dist/src/__tests__/data/show/nested-show.raw.d.ts +6 -0
- package/dist/src/__tests__/data/show/nested-show.raw.jsx +11 -0
- package/dist/src/__tests__/data/show/show-with-for.raw.d.ts +6 -0
- package/dist/src/__tests__/data/show/show-with-for.raw.jsx +9 -0
- package/dist/src/__tests__/data/styles/classState.raw.jsx +2 -1
- package/dist/src/__tests__/shared.js +66 -47
- package/dist/src/generators/angular.js +4 -2
- package/dist/src/generators/react.js +3 -2
- package/dist/src/generators/solid.js +1 -1
- package/dist/src/generators/svelte.d.ts +1 -1
- package/dist/src/generators/svelte.js +53 -54
- package/dist/src/generators/vue.d.ts +5 -1
- package/dist/src/generators/vue.js +94 -33
- package/dist/src/helpers/babel-transform.js +2 -2
- package/dist/src/helpers/is-children.js +2 -1
- package/dist/src/helpers/slots.d.ts +1 -0
- package/dist/src/helpers/slots.js +6 -0
- package/dist/src/helpers/styles/collect-css.js +3 -3
- package/dist/src/helpers/styles/collect-styled-components.js +1 -1
- package/dist/src/helpers/styles/helpers.d.ts +4 -2
- package/dist/src/helpers/styles/helpers.js +25 -6
- package/dist/src/parsers/jsx.js +5 -1
- package/dist/src/targets.d.ts +1 -1
- package/dist/src/types/mitosis-node.d.ts +3 -3
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -53,7 +53,7 @@ function Image(props) {
|
|
|
53
53
|
transition: 'opacity 0.2s ease-in-out',
|
|
54
54
|
objectFit: 'cover',
|
|
55
55
|
objectPosition: 'center',
|
|
56
|
-
}} class={'builder-image' + (props.
|
|
56
|
+
}} class={'builder-image' + (props._class ? ' ' + props._class : '')} src={props.image} onLoad={function () { return state.setLoaded(); }}
|
|
57
57
|
// TODO: memoize on image on client
|
|
58
58
|
srcset={props.srcset} sizes={props.sizes}/>
|
|
59
59
|
</mitosis_1.Show>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var mitosis_1 = require("@builder.io/mitosis");
|
|
4
|
+
function NestedShow(props) {
|
|
5
|
+
return (<mitosis_1.Show when={props.conditionA} else={<div>else-condition-A</div>}>
|
|
6
|
+
<mitosis_1.Show when={!props.conditionB} else={<div>else-condition-B</div>}>
|
|
7
|
+
<div>if condition A and condition B</div>
|
|
8
|
+
</mitosis_1.Show>
|
|
9
|
+
</mitosis_1.Show>);
|
|
10
|
+
}
|
|
11
|
+
exports.default = NestedShow;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var mitosis_1 = require("@builder.io/mitosis");
|
|
4
|
+
function NestedShow(props) {
|
|
5
|
+
return (<mitosis_1.Show when={props.conditionA} else={<div>else-condition-A</div>}>
|
|
6
|
+
<mitosis_1.Show when={!props.conditionB} else={<div>else-condition-B</div>}>
|
|
7
|
+
<div>if condition A and condition B</div>
|
|
8
|
+
</mitosis_1.Show>
|
|
9
|
+
</mitosis_1.Show>);
|
|
10
|
+
}
|
|
11
|
+
exports.default = NestedShow;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var mitosis_1 = require("@builder.io/mitosis");
|
|
4
|
+
function NestedShow(props) {
|
|
5
|
+
return (<mitosis_1.Show when={props.conditionA} else={<div>else-condition-A</div>}>
|
|
6
|
+
<mitosis_1.For each={props.items}>{function (item, idx) { return <div key={idx}>{item}</div>; }}</mitosis_1.For>
|
|
7
|
+
</mitosis_1.Show>);
|
|
8
|
+
}
|
|
9
|
+
exports.default = NestedShow;
|
|
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
var mitosis_1 = require("@builder.io/mitosis");
|
|
4
4
|
function MyBasicComponent() {
|
|
5
5
|
var _a = (0, mitosis_1.useState)('testClassName'), classState = _a[0], setClassState = _a[1];
|
|
6
|
+
var _b = (0, mitosis_1.useState)({ color: 'red' }), styleState = _b[0], setStyleState = _b[1];
|
|
6
7
|
return (<div class={classState} css={{
|
|
7
8
|
padding: '10px',
|
|
8
|
-
}}>
|
|
9
|
+
}} style={styleState}>
|
|
9
10
|
Hello! I can run in React, Vue, Solid, or Liquid!
|
|
10
11
|
</div>);
|
|
11
12
|
}
|
|
@@ -4,13 +4,9 @@ exports.runTestsForTarget = void 0;
|
|
|
4
4
|
var jsx_1 = require("../parsers/jsx");
|
|
5
5
|
var basicForShow = require('./data/basic-for-show.raw');
|
|
6
6
|
var basicOnMountUpdate = require('./data/basic-onMount-update.raw');
|
|
7
|
-
var sectionState = require('./data/blocks/section-state.raw');
|
|
8
|
-
var imageState = require('./data/blocks/img-state.raw');
|
|
9
|
-
var onInitonMount = require('./data/blocks/onInit-onMount.raw');
|
|
10
7
|
var basicContext = require('./data/basic-context.raw');
|
|
11
8
|
var basicOutputsMeta = require('./data/basic-outputs-meta.raw');
|
|
12
9
|
var basicOutputs = require('./data/basic-outputs.raw');
|
|
13
|
-
var classNameJsx = require('./data/blocks/classname-jsx.raw');
|
|
14
10
|
var basic = require('./data/basic.raw');
|
|
15
11
|
var basicMitosis = require('./data/basic-custom-mitosis-package.raw');
|
|
16
12
|
var basicChildComponent = require('./data/basic-child-component.raw');
|
|
@@ -20,46 +16,48 @@ var basicForwardRef = require('./data/basic-forwardRef.raw');
|
|
|
20
16
|
var basicForwardRefMetadata = require('./data/basic-forwardRef-metadata.raw');
|
|
21
17
|
var basicRefPrevious = require('./data/basic-ref-usePrevious.raw');
|
|
22
18
|
var basicRefAssignment = require('./data/basic-ref-assignment.raw');
|
|
23
|
-
var
|
|
24
|
-
var
|
|
25
|
-
var
|
|
26
|
-
var
|
|
19
|
+
var propsDestructure = require('./data/basic-props-destructure.raw');
|
|
20
|
+
var preserveExportOrLocalStatement = require('./data/basic-preserve-export-or-local-statement.raw');
|
|
21
|
+
var propsType = require('./data/types/component-props-type.raw');
|
|
22
|
+
var propsInterface = require('./data/types/component-props-interface.raw');
|
|
23
|
+
var preserveTyping = require('./data/types/preserve-typing.raw');
|
|
24
|
+
var classRaw = require('./data/styles/class.raw');
|
|
25
|
+
var className = require('./data/styles/className.raw');
|
|
26
|
+
var classAndClassName = require('./data/styles/class-and-className.raw');
|
|
27
|
+
var classState = require('./data/styles/classState.raw');
|
|
27
28
|
var button = require('./data/blocks/button.raw');
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
var
|
|
31
|
-
var
|
|
32
|
-
var text = require('./data/blocks/text.raw');
|
|
33
|
-
var rawText = require('./data/blocks/raw-text.raw');
|
|
34
|
-
var stamped = require('./data/blocks/stamped-io.raw');
|
|
29
|
+
var classNameJsx = require('./data/blocks/classname-jsx.raw');
|
|
30
|
+
var columns = require('./data/blocks/columns.raw');
|
|
31
|
+
var contentSlotHtml = require('./data/blocks/content-slot-html.raw');
|
|
32
|
+
var contentSlotJsx = require('./data/blocks/content-slot-jsx.raw');
|
|
35
33
|
var customCode = require('./data/blocks/custom-code.raw');
|
|
34
|
+
var formBlock = require('./data/blocks/form.raw');
|
|
36
35
|
var image = require('./data/blocks/image.raw');
|
|
37
|
-
var
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
var onUpdateWithDeps = require('./data/blocks/onUpdateWithDeps.raw');
|
|
36
|
+
var imageState = require('./data/blocks/img-state.raw');
|
|
37
|
+
var img = require('./data/blocks/img.raw');
|
|
38
|
+
var inputBlock = require('./data/blocks/input.raw');
|
|
41
39
|
var multipleOnUpdate = require('./data/blocks/multiple-onUpdate.raw');
|
|
42
40
|
var multipleOnUpdateWithDeps = require('./data/blocks/multiple-onUpdateWithDeps.raw');
|
|
41
|
+
var onInit = require('./data/blocks/onInit.raw');
|
|
42
|
+
var onInitonMount = require('./data/blocks/onInit-onMount.raw');
|
|
43
43
|
var onMount = require('./data/blocks/onMount.raw');
|
|
44
|
-
var
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
var
|
|
44
|
+
var onUpdate = require('./data/blocks/onUpdate.raw');
|
|
45
|
+
var onUpdateWithDeps = require('./data/blocks/onUpdateWithDeps.raw');
|
|
46
|
+
var rawText = require('./data/blocks/raw-text.raw');
|
|
47
|
+
var section = require('./data/blocks/section.raw');
|
|
48
|
+
var sectionState = require('./data/blocks/section-state.raw');
|
|
49
|
+
var selectBlock = require('./data/blocks/select.raw');
|
|
50
|
+
var selfRefCompWChildren = require('./data/blocks/self-referencing-component-with-children.raw');
|
|
51
|
+
var selfRefComp = require('./data/blocks/self-referencing-component.raw');
|
|
48
52
|
var slotHtml = require('./data/blocks/slot-html.raw');
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
52
|
-
var
|
|
53
|
-
var
|
|
54
|
-
var
|
|
55
|
-
var className = require('./data/styles/className.raw');
|
|
56
|
-
var classAndClassName = require('./data/styles/class-and-className.raw');
|
|
53
|
+
var slotJsx = require('./data/blocks/slot-jsx.raw');
|
|
54
|
+
var stamped = require('./data/blocks/stamped-io.raw');
|
|
55
|
+
var submitButtonBlock = require('./data/blocks/submit-button.raw');
|
|
56
|
+
var text = require('./data/blocks/text.raw');
|
|
57
|
+
var textarea = require('./data/blocks/textarea.raw');
|
|
58
|
+
var video = require('./data/blocks/video.raw');
|
|
57
59
|
var path = 'test-path';
|
|
58
60
|
var BASIC_TESTS = {
|
|
59
|
-
ContentSlotJSX: contentSlotJsx,
|
|
60
|
-
ContentSlotHtml: contentSlotHtml,
|
|
61
|
-
SlotJsx: slotJsx,
|
|
62
|
-
SlotHtml: slotHtml,
|
|
63
61
|
Basic: basic,
|
|
64
62
|
BasicRef: basicRef,
|
|
65
63
|
BasicRefPrevious: basicRefPrevious,
|
|
@@ -100,6 +98,15 @@ var BASIC_TESTS = {
|
|
|
100
98
|
'class + css': classRaw,
|
|
101
99
|
'className + css': className,
|
|
102
100
|
'class + ClassName + css': classAndClassName,
|
|
101
|
+
'self-referencing component with children': selfRefCompWChildren,
|
|
102
|
+
'self-referencing component': selfRefComp,
|
|
103
|
+
};
|
|
104
|
+
var SLOTS_TESTS = {
|
|
105
|
+
ContentSlotJSX: contentSlotJsx,
|
|
106
|
+
ContentSlotHtml: contentSlotHtml,
|
|
107
|
+
SlotJsx: slotJsx,
|
|
108
|
+
SlotHtml: slotHtml,
|
|
109
|
+
classState: classState,
|
|
103
110
|
};
|
|
104
111
|
var MULTI_ON_UPDATE_TESTS = {
|
|
105
112
|
multipleOnUpdate: multipleOnUpdate,
|
|
@@ -116,13 +123,16 @@ var FORWARD_REF_TESTS = {
|
|
|
116
123
|
basicForwardRef: basicForwardRef,
|
|
117
124
|
basicForwardRefMetadata: basicForwardRefMetadata,
|
|
118
125
|
};
|
|
119
|
-
var
|
|
120
|
-
rootShow: rootShow,
|
|
126
|
+
var SHOW_TESTS = {
|
|
127
|
+
rootShow: require('./data/blocks/rootShow.raw'),
|
|
128
|
+
nestedShow: require('./data/show/nested-show.raw'),
|
|
129
|
+
showWithFor: require('./data/show/show-with-for.raw'),
|
|
121
130
|
};
|
|
122
131
|
var TESTS_FOR_TARGET = {
|
|
123
132
|
react: [
|
|
124
133
|
BASIC_TESTS,
|
|
125
|
-
|
|
134
|
+
SLOTS_TESTS,
|
|
135
|
+
SHOW_TESTS,
|
|
126
136
|
FORWARD_REF_TESTS,
|
|
127
137
|
MULTI_ON_UPDATE_TESTS,
|
|
128
138
|
FORM_BLOCK_TESTS,
|
|
@@ -130,7 +140,8 @@ var TESTS_FOR_TARGET = {
|
|
|
130
140
|
],
|
|
131
141
|
angular: [
|
|
132
142
|
BASIC_TESTS,
|
|
133
|
-
|
|
143
|
+
SLOTS_TESTS,
|
|
144
|
+
SHOW_TESTS,
|
|
134
145
|
FORWARD_REF_TESTS,
|
|
135
146
|
MULTI_ON_UPDATE_TESTS,
|
|
136
147
|
FORM_BLOCK_TESTS,
|
|
@@ -138,7 +149,8 @@ var TESTS_FOR_TARGET = {
|
|
|
138
149
|
],
|
|
139
150
|
webcomponent: [
|
|
140
151
|
BASIC_TESTS,
|
|
141
|
-
|
|
152
|
+
SLOTS_TESTS,
|
|
153
|
+
SHOW_TESTS,
|
|
142
154
|
FORWARD_REF_TESTS,
|
|
143
155
|
MULTI_ON_UPDATE_TESTS,
|
|
144
156
|
FOR_SHOW_TESTS,
|
|
@@ -146,7 +158,8 @@ var TESTS_FOR_TARGET = {
|
|
|
146
158
|
],
|
|
147
159
|
vue: [
|
|
148
160
|
BASIC_TESTS,
|
|
149
|
-
|
|
161
|
+
SLOTS_TESTS,
|
|
162
|
+
SHOW_TESTS,
|
|
150
163
|
FORWARD_REF_TESTS,
|
|
151
164
|
MULTI_ON_UPDATE_TESTS,
|
|
152
165
|
FORM_BLOCK_TESTS,
|
|
@@ -154,7 +167,7 @@ var TESTS_FOR_TARGET = {
|
|
|
154
167
|
],
|
|
155
168
|
svelte: [
|
|
156
169
|
BASIC_TESTS,
|
|
157
|
-
|
|
170
|
+
SHOW_TESTS,
|
|
158
171
|
FORWARD_REF_TESTS,
|
|
159
172
|
MULTI_ON_UPDATE_TESTS,
|
|
160
173
|
FORM_BLOCK_TESTS,
|
|
@@ -162,7 +175,8 @@ var TESTS_FOR_TARGET = {
|
|
|
162
175
|
],
|
|
163
176
|
html: [
|
|
164
177
|
BASIC_TESTS,
|
|
165
|
-
|
|
178
|
+
SLOTS_TESTS,
|
|
179
|
+
SHOW_TESTS,
|
|
166
180
|
FORWARD_REF_TESTS,
|
|
167
181
|
MULTI_ON_UPDATE_TESTS,
|
|
168
182
|
FOR_SHOW_TESTS,
|
|
@@ -170,6 +184,7 @@ var TESTS_FOR_TARGET = {
|
|
|
170
184
|
],
|
|
171
185
|
stencil: [
|
|
172
186
|
BASIC_TESTS,
|
|
187
|
+
SLOTS_TESTS,
|
|
173
188
|
// ROOT_SHOW_TESTS,
|
|
174
189
|
FORWARD_REF_TESTS,
|
|
175
190
|
// MULTI_ON_UPDATE_TESTS,
|
|
@@ -178,7 +193,8 @@ var TESTS_FOR_TARGET = {
|
|
|
178
193
|
],
|
|
179
194
|
solid: [
|
|
180
195
|
BASIC_TESTS,
|
|
181
|
-
|
|
196
|
+
SLOTS_TESTS,
|
|
197
|
+
SHOW_TESTS,
|
|
182
198
|
// FORWARD_REF_TESTS,
|
|
183
199
|
MULTI_ON_UPDATE_TESTS,
|
|
184
200
|
FORM_BLOCK_TESTS,
|
|
@@ -186,7 +202,8 @@ var TESTS_FOR_TARGET = {
|
|
|
186
202
|
],
|
|
187
203
|
reactNative: [
|
|
188
204
|
BASIC_TESTS,
|
|
189
|
-
|
|
205
|
+
SLOTS_TESTS,
|
|
206
|
+
SHOW_TESTS,
|
|
190
207
|
FORWARD_REF_TESTS,
|
|
191
208
|
MULTI_ON_UPDATE_TESTS,
|
|
192
209
|
FORM_BLOCK_TESTS,
|
|
@@ -194,14 +211,16 @@ var TESTS_FOR_TARGET = {
|
|
|
194
211
|
],
|
|
195
212
|
liquid: [
|
|
196
213
|
BASIC_TESTS,
|
|
197
|
-
|
|
214
|
+
SLOTS_TESTS,
|
|
215
|
+
SHOW_TESTS,
|
|
198
216
|
FORWARD_REF_TESTS,
|
|
199
217
|
MULTI_ON_UPDATE_TESTS,
|
|
200
218
|
FORM_BLOCK_TESTS,
|
|
201
219
|
],
|
|
202
220
|
qwik: [
|
|
203
221
|
BASIC_TESTS,
|
|
204
|
-
|
|
222
|
+
SLOTS_TESTS,
|
|
223
|
+
SHOW_TESTS,
|
|
205
224
|
FORWARD_REF_TESTS,
|
|
206
225
|
MULTI_ON_UPDATE_TESTS,
|
|
207
226
|
FORM_BLOCK_TESTS,
|
|
@@ -36,6 +36,7 @@ var lodash_1 = require("lodash");
|
|
|
36
36
|
var strip_meta_properties_1 = require("../helpers/strip-meta-properties");
|
|
37
37
|
var remove_surrounding_block_1 = require("../helpers/remove-surrounding-block");
|
|
38
38
|
var indent_1 = require("../helpers/indent");
|
|
39
|
+
var slots_1 = require("../helpers/slots");
|
|
39
40
|
var mappers = {
|
|
40
41
|
Fragment: function (json, options, blockOptions) {
|
|
41
42
|
return "<div>".concat(json.children
|
|
@@ -58,6 +59,7 @@ var mappers = {
|
|
|
58
59
|
// TODO: Maybe in the future allow defining `string | function` as values
|
|
59
60
|
var BINDINGS_MAPPER = {
|
|
60
61
|
innerHTML: 'innerHTML',
|
|
62
|
+
style: 'ngStyle',
|
|
61
63
|
};
|
|
62
64
|
var blockToAngular = function (json, options, blockOptions) {
|
|
63
65
|
var _a, _b, _c, _d, _e, _f;
|
|
@@ -153,7 +155,7 @@ var blockToAngular = function (json, options, blockOptions) {
|
|
|
153
155
|
else if (key === 'ref') {
|
|
154
156
|
str += " #".concat(useValue, " ");
|
|
155
157
|
}
|
|
156
|
-
else if (
|
|
158
|
+
else if ((0, slots_1.isSlotProperty)(key)) {
|
|
157
159
|
var lowercaseKey = key.replace('slot', '')[0].toLowerCase() + key.replace('slot', '').substring(1);
|
|
158
160
|
needsToRenderSlots.push("".concat(useValue.replace(/(\/\>)|\>/, " ".concat(lowercaseKey, ">"))));
|
|
159
161
|
}
|
|
@@ -276,7 +278,7 @@ var componentToAngular = function (options) {
|
|
|
276
278
|
var str = (0, dedent_1.default)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n import { ", " ", " Component ", "", " } from '@angular/core';\n\n ", "\n ", "\n ", "\n\n @Component({\n selector: '", "',\n template: `\n ", "\n `,\n ", "\n })\n export default class ", " {\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n ", "\n\n ", "\n\n ", "\n\n }\n "], ["\n import { ", " ", " Component ", "", " } from '@angular/core';\n\n ", "\n ", "\n ", "\n\n @Component({\n selector: '", "',\n template: \\`\n ", "\n \\`,\n ", "\n })\n export default class ", " {\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n ", "\n\n ", "\n\n ", "\n\n }\n "])), outputs.length ? 'Output, EventEmitter, \n' : '', ((_g = options === null || options === void 0 ? void 0 : options.experimental) === null || _g === void 0 ? void 0 : _g.inject) ? 'Inject, forwardRef,' : '', domRefs.size ? ', ViewChild, ElementRef' : '', props.size ? ', Input' : '', json.types ? json.types.join('\n') : '', json.interfaces ? (_h = json.interfaces) === null || _h === void 0 ? void 0 : _h.join('\n') : '', (0, render_imports_1.renderPreComponent)({ component: json, target: 'angular' }), (0, lodash_1.kebabCase)(json.name || 'my-component'), (0, indent_1.indent)(template, 8).replace(/`/g, '\\`').replace(/\$\{/g, '\\${'), css.length
|
|
277
279
|
? "styles: [\n `".concat((0, indent_1.indent)(css, 8), "`\n ],")
|
|
278
280
|
: '', component.name, localExportVars.join('\n'), Array.from(props)
|
|
279
|
-
.filter(function (item) { return !
|
|
281
|
+
.filter(function (item) { return !(0, slots_1.isSlotProperty)(item) && item !== 'children'; })
|
|
280
282
|
.map(function (item) {
|
|
281
283
|
var propType = propsTypeRef ? "".concat(propsTypeRef, "[\"").concat(item, "\"]") : 'any';
|
|
282
284
|
return "@Input() ".concat(item, ": ").concat(propType);
|
|
@@ -53,6 +53,7 @@ var context_1 = require("./helpers/context");
|
|
|
53
53
|
var react_native_1 = require("./react-native");
|
|
54
54
|
var collect_styled_components_1 = require("../helpers/styles/collect-styled-components");
|
|
55
55
|
var helpers_1 = require("../helpers/styles/helpers");
|
|
56
|
+
var slots_1 = require("../helpers/slots");
|
|
56
57
|
/**
|
|
57
58
|
* If the root Mitosis component only has 1 child, and it is a `Show` node, then we need to wrap it in a fragment.
|
|
58
59
|
* Otherwise, we end up with invalid React render code.
|
|
@@ -257,7 +258,7 @@ var processBinding = function (str, options) {
|
|
|
257
258
|
if (options.stateType !== 'useState') {
|
|
258
259
|
return str;
|
|
259
260
|
}
|
|
260
|
-
if (
|
|
261
|
+
if ((0, slots_1.isSlotProperty)(str)) {
|
|
261
262
|
return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(str, {
|
|
262
263
|
includeState: true,
|
|
263
264
|
includeProps: false,
|
|
@@ -420,7 +421,7 @@ var _componentToReact = function (json, options, isSubComponent) {
|
|
|
420
421
|
(0, handle_missing_state_1.handleMissingState)(json);
|
|
421
422
|
(0, process_tag_references_1.processTagReferences)(json);
|
|
422
423
|
addProviderComponents(json, options);
|
|
423
|
-
var componentHasStyles = (0, helpers_1.
|
|
424
|
+
var componentHasStyles = (0, helpers_1.hasCss)(json);
|
|
424
425
|
if (options.stateType === 'useState') {
|
|
425
426
|
(0, getters_to_functions_1.gettersToFunctions)(json);
|
|
426
427
|
updateStateSetters(json, options);
|
|
@@ -226,7 +226,7 @@ var componentToSolid = function (options) {
|
|
|
226
226
|
json = (0, plugins_1.runPreJsonPlugins)(json, options.plugins);
|
|
227
227
|
}
|
|
228
228
|
addProviderComponents(json, options);
|
|
229
|
-
var componentHasStyles = (0, helpers_1.
|
|
229
|
+
var componentHasStyles = (0, helpers_1.hasCss)(json);
|
|
230
230
|
var addWrapper = json.children.filter(filter_empty_text_nodes_1.filterEmptyTextNodes).length !== 1;
|
|
231
231
|
if (options.plugins) {
|
|
232
232
|
json = (0, plugins_1.runPostJsonPlugins)(json, options.plugins);
|
|
@@ -11,5 +11,5 @@ interface BlockToSvelteProps {
|
|
|
11
11
|
}
|
|
12
12
|
declare type BlockToSvelte = (props: BlockToSvelteProps) => string;
|
|
13
13
|
export declare const blockToSvelte: BlockToSvelte;
|
|
14
|
-
export declare const componentToSvelte: ({ plugins, ...
|
|
14
|
+
export declare const componentToSvelte: ({ plugins, ...userProvidedOptions }?: ToSvelteOptions) => Transpiler;
|
|
15
15
|
export {};
|
|
@@ -43,6 +43,7 @@ var dedent_1 = __importDefault(require("dedent"));
|
|
|
43
43
|
var standalone_1 = require("prettier/standalone");
|
|
44
44
|
var traverse_1 = __importDefault(require("traverse"));
|
|
45
45
|
var collect_css_1 = require("../helpers/styles/collect-css");
|
|
46
|
+
var helpers_1 = require("../helpers/styles/helpers");
|
|
46
47
|
var fast_clone_1 = require("../helpers/fast-clone");
|
|
47
48
|
var get_props_1 = require("../helpers/get-props");
|
|
48
49
|
var get_refs_1 = require("../helpers/get-refs");
|
|
@@ -81,18 +82,21 @@ var mappers = {
|
|
|
81
82
|
}
|
|
82
83
|
},
|
|
83
84
|
For: function (_a) {
|
|
84
|
-
var _b;
|
|
85
|
+
var _b, _c;
|
|
85
86
|
var json = _a.json, options = _a.options, parentComponent = _a.parentComponent;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
var firstChild = json.children[0];
|
|
88
|
+
var keyValue = firstChild.properties.key || ((_b = firstChild.bindings.key) === null || _b === void 0 ? void 0 : _b.code);
|
|
89
|
+
if (keyValue) {
|
|
90
|
+
// we remove extraneous prop which Svelte does not use
|
|
91
|
+
delete firstChild.properties.key;
|
|
92
|
+
delete firstChild.bindings.key;
|
|
93
|
+
}
|
|
94
|
+
return "\n{#each ".concat(stripStateAndProps((_c = json.bindings.each) === null || _c === void 0 ? void 0 : _c.code, options), " as ").concat(json.scope.For[0], ", ").concat(json.scope.For[1], " ").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");
|
|
89
95
|
},
|
|
90
96
|
Show: function (_a) {
|
|
91
97
|
var _b;
|
|
92
98
|
var json = _a.json, options = _a.options, parentComponent = _a.parentComponent;
|
|
93
|
-
return "\n{#if ".concat((
|
|
94
|
-
includeState: options.stateType === 'variables',
|
|
95
|
-
}), " }\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
|
|
99
|
+
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
|
|
96
100
|
? "\n {:else}\n ".concat((0, exports.blockToSvelte)({
|
|
97
101
|
json: json.meta.else,
|
|
98
102
|
options: options,
|
|
@@ -144,8 +148,13 @@ var getTagName = function (_a) {
|
|
|
144
148
|
}
|
|
145
149
|
return json.name;
|
|
146
150
|
};
|
|
151
|
+
var stripStateAndProps = function (code, options) {
|
|
152
|
+
return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(code, {
|
|
153
|
+
includeState: options.stateType === 'variables',
|
|
154
|
+
});
|
|
155
|
+
};
|
|
147
156
|
var blockToSvelte = function (_a) {
|
|
148
|
-
var _b, _c, _d;
|
|
157
|
+
var _b, _c, _d, _e, _f;
|
|
149
158
|
var json = _a.json, options = _a.options, parentComponent = _a.parentComponent;
|
|
150
159
|
if (mappers[json.name]) {
|
|
151
160
|
return mappers[json.name]({ json: json, options: options, parentComponent: parentComponent });
|
|
@@ -158,16 +167,18 @@ var blockToSvelte = function (_a) {
|
|
|
158
167
|
return json.properties._text;
|
|
159
168
|
}
|
|
160
169
|
if ((_b = json.bindings._text) === null || _b === void 0 ? void 0 : _b.code) {
|
|
161
|
-
return "{".concat((
|
|
162
|
-
includeState: options.stateType === 'variables',
|
|
163
|
-
}), "}");
|
|
170
|
+
return "{".concat(stripStateAndProps(json.bindings._text.code, options), "}");
|
|
164
171
|
}
|
|
165
172
|
var str = '';
|
|
166
173
|
str += "<".concat(tagName, " ");
|
|
167
174
|
if ((_c = json.bindings._spread) === null || _c === void 0 ? void 0 : _c.code) {
|
|
168
|
-
str += "{...".concat((
|
|
169
|
-
|
|
170
|
-
|
|
175
|
+
str += "{...".concat(stripStateAndProps(json.bindings._spread.code, options), "}");
|
|
176
|
+
}
|
|
177
|
+
if (((_d = json.bindings.style) === null || _d === void 0 ? void 0 : _d.code) || json.properties.style) {
|
|
178
|
+
var useValue = stripStateAndProps(((_e = json.bindings.style) === null || _e === void 0 ? void 0 : _e.code) || json.properties.style, options);
|
|
179
|
+
str += "use:mitosis_styling={".concat(useValue, "}");
|
|
180
|
+
delete json.bindings.style;
|
|
181
|
+
delete json.properties.style;
|
|
171
182
|
}
|
|
172
183
|
for (var key in json.properties) {
|
|
173
184
|
var value = json.properties[key];
|
|
@@ -180,15 +191,13 @@ var blockToSvelte = function (_a) {
|
|
|
180
191
|
if (key === '_spread') {
|
|
181
192
|
continue;
|
|
182
193
|
}
|
|
183
|
-
var
|
|
194
|
+
var _g = json.bindings[key], value = _g.code, _h = _g.arguments, cusArgs = _h === void 0 ? ['event'] : _h;
|
|
184
195
|
// TODO: proper babel transform to replace. Util for this
|
|
185
|
-
var useValue = (
|
|
186
|
-
includeState: options.stateType === 'variables',
|
|
187
|
-
});
|
|
196
|
+
var useValue = stripStateAndProps(value, options);
|
|
188
197
|
if (key.startsWith('on')) {
|
|
189
198
|
var event_1 = key.replace('on', '').toLowerCase();
|
|
190
199
|
// TODO: handle quotes in event handler values
|
|
191
|
-
str += " on:".concat(event_1, "=\"{").concat(cusArgs.join(','), " => ").concat((0, remove_surrounding_block_1.removeSurroundingBlock)(useValue), "}\" ");
|
|
200
|
+
str += " on:".concat(event_1, "=\"{").concat(cusArgs.join(','), " => {").concat((0, remove_surrounding_block_1.removeSurroundingBlock)(useValue), "}}\" ");
|
|
192
201
|
}
|
|
193
202
|
else if (key === 'ref') {
|
|
194
203
|
str += " bind:this={".concat(useValue, "} ");
|
|
@@ -199,7 +208,7 @@ var blockToSvelte = function (_a) {
|
|
|
199
208
|
}
|
|
200
209
|
// if we have innerHTML, it doesn't matter whether we have closing tags or not, or children or not.
|
|
201
210
|
// we use the innerHTML content as children and don't render the self-closing tag.
|
|
202
|
-
if ((
|
|
211
|
+
if ((_f = json.bindings.innerHTML) === null || _f === void 0 ? void 0 : _f.code) {
|
|
203
212
|
str += '>';
|
|
204
213
|
str += BINDINGS_MAPPER.innerHTML(json, options);
|
|
205
214
|
str += "</".concat(tagName, ">");
|
|
@@ -273,21 +282,21 @@ var FUNCTION_HACK_PLUGIN = function () { return ({
|
|
|
273
282
|
}); };
|
|
274
283
|
var componentToSvelte = function (_a) {
|
|
275
284
|
if (_a === void 0) { _a = {}; }
|
|
276
|
-
var _b = _a.plugins, plugins = _b === void 0 ? [] : _b,
|
|
285
|
+
var _b = _a.plugins, plugins = _b === void 0 ? [] : _b, userProvidedOptions = __rest(_a, ["plugins"]);
|
|
277
286
|
return function (_a) {
|
|
278
287
|
var _b, _c, _d, _e, _f, _g;
|
|
279
288
|
var component = _a.component;
|
|
280
|
-
var
|
|
289
|
+
var options = __assign({ stateType: 'variables', prettier: true, plugins: __spreadArray([FUNCTION_HACK_PLUGIN], plugins, true) }, userProvidedOptions);
|
|
281
290
|
// Make a copy we can safely mutate, similar to babel's toolchain
|
|
282
291
|
var json = (0, fast_clone_1.fastClone)(component);
|
|
283
|
-
if (
|
|
284
|
-
json = (0, plugins_1.runPreJsonPlugins)(json,
|
|
292
|
+
if (options.plugins) {
|
|
293
|
+
json = (0, plugins_1.runPreJsonPlugins)(json, options.plugins);
|
|
285
294
|
}
|
|
286
295
|
var refs = Array.from((0, get_refs_1.getRefs)(json));
|
|
287
|
-
useBindValue(json,
|
|
296
|
+
useBindValue(json, options);
|
|
288
297
|
(0, getters_to_functions_1.gettersToFunctions)(json);
|
|
289
|
-
if (
|
|
290
|
-
json = (0, plugins_1.runPostJsonPlugins)(json,
|
|
298
|
+
if (options.plugins) {
|
|
299
|
+
json = (0, plugins_1.runPostJsonPlugins)(json, options.plugins);
|
|
291
300
|
}
|
|
292
301
|
var css = (0, collect_css_1.collectCss)(json);
|
|
293
302
|
(0, strip_meta_properties_1.stripMetaProperties)(json);
|
|
@@ -295,13 +304,9 @@ var componentToSvelte = function (_a) {
|
|
|
295
304
|
data: true,
|
|
296
305
|
functions: false,
|
|
297
306
|
getters: false,
|
|
298
|
-
format:
|
|
299
|
-
keyPrefix:
|
|
300
|
-
valueMapper: function (code) {
|
|
301
|
-
return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(code, {
|
|
302
|
-
includeState: useOptions.stateType === 'variables',
|
|
303
|
-
});
|
|
304
|
-
},
|
|
307
|
+
format: options.stateType === 'proxies' ? 'object' : 'variables',
|
|
308
|
+
keyPrefix: options.stateType === 'variables' ? 'let ' : '',
|
|
309
|
+
valueMapper: function (code) { return stripStateAndProps(code, options); },
|
|
305
310
|
}), babel_transform_1.babelTransformCode);
|
|
306
311
|
var getterString = (0, function_1.pipe)((0, get_state_object_string_1.getStateObjectStringFromComponent)(json, {
|
|
307
312
|
data: false,
|
|
@@ -310,9 +315,7 @@ var componentToSvelte = function (_a) {
|
|
|
310
315
|
format: 'variables',
|
|
311
316
|
keyPrefix: '$: ',
|
|
312
317
|
valueMapper: function (code) {
|
|
313
|
-
return (0, function_1.pipe)((
|
|
314
|
-
includeState: useOptions.stateType === 'variables',
|
|
315
|
-
}), stripThisRefs);
|
|
318
|
+
return (0, function_1.pipe)(stripStateAndProps(code.replace(/^get ([a-zA-Z_\$0-9]+)/, '$1 = ').replace(/\)/, ') => '), options), stripThisRefs);
|
|
316
319
|
},
|
|
317
320
|
}), babel_transform_1.babelTransformCode);
|
|
318
321
|
var functionsString = (0, function_1.pipe)((0, get_state_object_string_1.getStateObjectStringFromComponent)(json, {
|
|
@@ -321,27 +324,23 @@ var componentToSvelte = function (_a) {
|
|
|
321
324
|
functions: true,
|
|
322
325
|
format: 'variables',
|
|
323
326
|
keyPrefix: 'const ',
|
|
324
|
-
valueMapper: function (code) {
|
|
325
|
-
return (0, function_1.pipe)((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(code, {
|
|
326
|
-
includeState: useOptions.stateType === 'variables',
|
|
327
|
-
}), stripThisRefs);
|
|
328
|
-
},
|
|
327
|
+
valueMapper: function (code) { return (0, function_1.pipe)(stripStateAndProps(code, options), stripThisRefs); },
|
|
329
328
|
}), babel_transform_1.babelTransformCode);
|
|
330
329
|
var hasData = dataString.length > 4;
|
|
331
330
|
var props = Array.from((0, get_props_1.getProps)(json));
|
|
332
331
|
var transformHookCode = function (hookCode) {
|
|
333
|
-
return (0, function_1.pipe)((
|
|
334
|
-
includeState: useOptions.stateType === 'variables',
|
|
335
|
-
}), babel_transform_1.babelTransformCode);
|
|
332
|
+
return (0, function_1.pipe)(stripStateAndProps(hookCode, options), babel_transform_1.babelTransformCode);
|
|
336
333
|
};
|
|
337
|
-
var str = (0, dedent_1.default)(templateObject_1 || (templateObject_1 = __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\n ", "\n ", "\n \n ", "\n ", "\n\n ", "\n ", "\n ", "\n\n ", "\n\n ", "\n\n ", "\n </script>\n\n ", "\n\n ", "\n "])), !((_b = json.hooks.onMount) === null || _b === void 0 ? void 0 : _b.code) ? '' : "import { onMount } from 'svelte'", !((_c = json.hooks.onUpdate) === null || _c === void 0 ? void 0 : _c.length) ? '' : "import { afterUpdate } from 'svelte'", !((_d = json.hooks.onUnMount) === null || _d === void 0 ? void 0 : _d.code) ? '' : "import { onDestroy } from 'svelte'", (0, render_imports_1.renderPreComponent)({ component: json, target: 'svelte' }), (0, context_1.hasContext)(component) ? 'import { getContext, setContext } from "svelte";' : '', !hasData ||
|
|
334
|
+
var str = (0, dedent_1.default)(templateObject_1 || (templateObject_1 = __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\n ", "\n ", "\n ", "\n ", "\n ", "\n\n ", "\n ", "\n ", "\n\n ", "\n\n ", "\n\n ", "\n </script>\n\n ", "\n\n ", "\n "])), !((_b = json.hooks.onMount) === null || _b === void 0 ? void 0 : _b.code) ? '' : "import { onMount } from 'svelte'", !((_c = json.hooks.onUpdate) === null || _c === void 0 ? void 0 : _c.length) ? '' : "import { afterUpdate } from 'svelte'", !((_d = json.hooks.onUnMount) === null || _d === void 0 ? void 0 : _d.code) ? '' : "import { onDestroy } from 'svelte'", (0, render_imports_1.renderPreComponent)({ component: json, target: 'svelte' }), (0, context_1.hasContext)(component) ? 'import { getContext, setContext } from "svelte";' : '', !hasData || options.stateType === 'variables' ? '' : "import onChange from 'on-change'", (0, lodash_1.uniq)(refs.map(function (ref) { return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(ref); }).concat(props))
|
|
338
335
|
.map(function (name) {
|
|
339
336
|
if (name === 'children') {
|
|
340
337
|
return '';
|
|
341
338
|
}
|
|
342
339
|
return "export let ".concat(name, ";");
|
|
343
340
|
})
|
|
344
|
-
.join('\n'),
|
|
341
|
+
.join('\n'), (0, helpers_1.hasStyle)(json)
|
|
342
|
+
? "\n function mitosis_styling (node, vars) {\n Object.entries(vars).forEach(([ p, v ]) => { node.style[p] = v })\n }\n "
|
|
343
|
+
: '', functionsString.length < 4 ? '' : functionsString, getterString.length < 4 ? '' : getterString, getContextCode(json), setContextCode(json), options.stateType === 'proxies'
|
|
345
344
|
? dataString.length < 4
|
|
346
345
|
? ''
|
|
347
346
|
: "let state = onChange(".concat(dataString, ", () => state = state)")
|
|
@@ -355,7 +354,7 @@ var componentToSvelte = function (_a) {
|
|
|
355
354
|
var hookCode = transformHookCode(code);
|
|
356
355
|
if (deps) {
|
|
357
356
|
var fnName = "onUpdateFn_".concat(index);
|
|
358
|
-
return "\n function ".concat(fnName, "() {\n ").concat(hookCode, "\n }\n $: ").concat(fnName, "(...").concat(deps, ")\n ");
|
|
357
|
+
return "\n function ".concat(fnName, "() {\n ").concat(hookCode, "\n }\n $: ").concat(fnName, "(...").concat(stripStateAndProps(deps, options), ")\n ");
|
|
359
358
|
}
|
|
360
359
|
else {
|
|
361
360
|
return "afterUpdate(() => { ".concat(hookCode, " })");
|
|
@@ -367,17 +366,17 @@ var componentToSvelte = function (_a) {
|
|
|
367
366
|
.map(function (item) {
|
|
368
367
|
return (0, exports.blockToSvelte)({
|
|
369
368
|
json: item,
|
|
370
|
-
options:
|
|
369
|
+
options: options,
|
|
371
370
|
parentComponent: json,
|
|
372
371
|
});
|
|
373
372
|
})
|
|
374
373
|
.join('\n'), !css.trim().length
|
|
375
374
|
? ''
|
|
376
375
|
: "<style>\n ".concat(css, "\n </style>"));
|
|
377
|
-
if (
|
|
378
|
-
str = (0, plugins_1.runPreCodePlugins)(str,
|
|
376
|
+
if (options.plugins) {
|
|
377
|
+
str = (0, plugins_1.runPreCodePlugins)(str, options.plugins);
|
|
379
378
|
}
|
|
380
|
-
if (
|
|
379
|
+
if (options.prettier !== false) {
|
|
381
380
|
try {
|
|
382
381
|
str = (0, standalone_1.format)(str, {
|
|
383
382
|
parser: 'svelte',
|
|
@@ -396,8 +395,8 @@ var componentToSvelte = function (_a) {
|
|
|
396
395
|
console.warn({ string: str }, err);
|
|
397
396
|
}
|
|
398
397
|
}
|
|
399
|
-
if (
|
|
400
|
-
str = (0, plugins_1.runPostCodePlugins)(str,
|
|
398
|
+
if (options.plugins) {
|
|
399
|
+
str = (0, plugins_1.runPostCodePlugins)(str, options.plugins);
|
|
401
400
|
}
|
|
402
401
|
return str;
|
|
403
402
|
};
|