@builder.io/mitosis 0.0.56-10 → 0.0.56-13
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__/angular.test.js +31 -0
- package/dist/src/__tests__/data/basic-child-component.raw.jsx +4 -2
- package/dist/src/__tests__/data/basic-onMount-update.raw.d.ts +5 -1
- package/dist/src/__tests__/data/basic-onMount-update.raw.jsx +3 -3
- package/dist/src/__tests__/data/basic.raw.jsx +4 -2
- package/dist/src/__tests__/data/blocks/text.raw.jsx +6 -1
- package/dist/src/__tests__/data/blocks/video.raw.jsx +1 -1
- package/dist/src/__tests__/data/styles/class-and-className.raw.d.ts +1 -0
- package/dist/src/__tests__/data/styles/class-and-className.raw.jsx +12 -0
- package/dist/src/__tests__/data/styles/class.raw.d.ts +1 -0
- package/dist/src/__tests__/data/styles/class.raw.jsx +10 -0
- package/dist/src/__tests__/data/styles/className.raw.d.ts +1 -0
- package/dist/src/__tests__/data/styles/className.raw.jsx +12 -0
- package/dist/src/__tests__/html.test.js +6 -0
- package/dist/src/__tests__/liquid.test.js +6 -0
- package/dist/src/__tests__/qwik.directive.test.js +1 -0
- package/dist/src/__tests__/qwik.test.js +11 -3
- package/dist/src/__tests__/react-native.test.js +1 -1
- package/dist/src/__tests__/react.test.js +6 -0
- package/dist/src/__tests__/styles.test.d.ts +1 -0
- package/dist/src/__tests__/styles.test.js +15 -0
- package/dist/src/__tests__/svelte.test.js +6 -0
- package/dist/src/__tests__/webcomponent.test.js +6 -0
- package/dist/src/generators/angular.js +23 -21
- package/dist/src/generators/builder.d.ts +1 -1
- package/dist/src/generators/builder.js +16 -17
- package/dist/src/generators/html.js +65 -41
- package/dist/src/generators/liquid.js +12 -11
- package/dist/src/generators/mitosis.js +7 -6
- package/dist/src/generators/qwik/component.js +17 -20
- package/dist/src/generators/qwik/directives.js +7 -4
- package/dist/src/generators/qwik/handlers.js +3 -19
- package/dist/src/generators/qwik/jsx.js +25 -9
- package/dist/src/generators/qwik/src-generator.d.ts +2 -1
- package/dist/src/generators/qwik/src-generator.js +18 -15
- package/dist/src/generators/qwik/styles.js +2 -1
- package/dist/src/generators/react-native.js +6 -5
- package/dist/src/generators/react.js +29 -20
- package/dist/src/generators/solid.js +23 -23
- package/dist/src/generators/stencil/collect-class-string.js +5 -8
- package/dist/src/generators/stencil/generate.js +12 -11
- package/dist/src/generators/svelte.js +18 -16
- package/dist/src/generators/swift-ui.js +13 -9
- package/dist/src/generators/template.js +5 -4
- package/dist/src/generators/vue.d.ts +0 -2
- package/dist/src/generators/vue.js +51 -34
- package/dist/src/helpers/collect-styles.d.ts +1 -7
- package/dist/src/helpers/collect-styles.js +19 -21
- package/dist/src/helpers/get-refs.js +3 -2
- package/dist/src/helpers/get-styles.js +4 -3
- package/dist/src/helpers/is-children.js +3 -1
- package/dist/src/helpers/is-html-attribute.d.ts +4 -0
- package/dist/src/helpers/is-html-attribute.js +395 -0
- package/dist/src/helpers/map-refs.js +13 -2
- package/dist/src/helpers/strip-state-and-props-refs.js +1 -1
- package/dist/src/parsers/angular.js +12 -6
- package/dist/src/parsers/builder.js +44 -34
- package/dist/src/parsers/jsx.js +59 -28
- package/dist/src/plugins/compile-away-builder-components.js +159 -110
- package/dist/src/symbols/symbol-processor.js +9 -4
- package/dist/src/targets.d.ts +1 -1
- package/dist/src/types/mitosis-node.d.ts +4 -1
- package/dist/test/qwik/Accordion/low.jsx +8 -3
- package/dist/test/qwik/Accordion/med.jsx +2 -8
- package/dist/test/qwik/For/low.jsx +8 -3
- package/dist/test/qwik/For/med.jsx +2 -8
- package/dist/test/qwik/Image/high.js +1 -1
- package/dist/test/qwik/Image/med.js +14 -13
- package/dist/test/qwik/Image.slow/high.js +1 -1
- package/dist/test/qwik/Image.slow/med.js +14 -13
- package/dist/test/qwik/bindings/low.cjs +10 -3
- package/dist/test/qwik/bindings/med.cjs +1 -10
- package/dist/test/qwik/button/high.js +1 -1
- package/dist/test/qwik/button/low.js +8 -3
- package/dist/test/qwik/button/med.js +2 -8
- package/dist/test/qwik/component/bindings/low.jsx +47 -5
- package/dist/test/qwik/component/bindings/med.jsx +3 -49
- package/dist/test/qwik/component/component/inputs/high.cjsx +1 -1
- package/dist/test/qwik/component/component/inputs/med.cjsx +7 -9
- package/dist/test/qwik/hello_world/stylesheet/low.jsx +8 -3
- package/dist/test/qwik/hello_world/stylesheet/med.jsx +2 -8
- package/dist/test/qwik/page-with-symbol/low.js +8 -3
- package/dist/test/qwik/page-with-symbol/med.js +2 -8
- package/dist/test/qwik/show-hide/high.jsx +1 -1
- package/dist/test/qwik/show-hide/med.jsx +14 -13
- package/dist/test/qwik/svg/low.js +8 -3
- package/dist/test/qwik/svg/med.js +2 -8
- package/dist/test/qwik/todo/Todo.cjs/high.cjs +6 -10
- package/dist/test/qwik/todo/Todo.cjs/med.cjs +7 -9
- package/dist/test/qwik/todo/Todo.js/high.js +7 -10
- package/dist/test/qwik/todo/Todo.js/med.js +8 -9
- package/dist/test/qwik/todo/Todo.tsx/high.tsx +7 -10
- package/dist/test/qwik/todo/Todo.tsx/med.tsx +8 -9
- package/dist/test/qwik/todos/Todo.tsx/high.tsx +1 -1
- package/dist/test/qwik/todos/Todo.tsx/low.tsx +8 -4
- package/dist/test/qwik/todos/Todo.tsx/med.tsx +1 -6
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
|
@@ -8,18 +8,44 @@ var onMount = require('./data/blocks/onMount.raw');
|
|
|
8
8
|
var onInitonMount = require('./data/blocks/onInit-onMount.raw');
|
|
9
9
|
var onInit = require('./data/blocks/onInit.raw');
|
|
10
10
|
var basicFor = require('./data/basic-for.raw');
|
|
11
|
+
var basic = require('./data/basic.raw');
|
|
12
|
+
var basicChildComponent = require('./data/basic-child-component.raw');
|
|
13
|
+
var basicOutputsMeta = require('./data/basic-outputs-meta.raw');
|
|
11
14
|
var basicOutputs = require('./data/basic-outputs.raw');
|
|
12
15
|
var contentSlotHtml = require('./data/blocks/content-slot-html.raw');
|
|
13
16
|
var contentSlotJsx = require('./data/blocks/content-slot-jsx.raw');
|
|
14
17
|
var slotJsx = require('./data/blocks/slot-jsx.raw');
|
|
15
18
|
var classNameJsx = require('./data/blocks/classname-jsx.raw');
|
|
19
|
+
var text = require('./data/blocks/text.raw');
|
|
16
20
|
// const slotHtml = require('./data/blocks/slot-html.raw');
|
|
17
21
|
describe('Angular', function () {
|
|
22
|
+
test('Basic', function () {
|
|
23
|
+
var component = (0, jsx_1.parseJsx)(basic);
|
|
24
|
+
var output = (0, angular_1.componentToAngular)()({ component: component });
|
|
25
|
+
expect(output).toMatchSnapshot();
|
|
26
|
+
});
|
|
27
|
+
test('Basic Child Component', function () {
|
|
28
|
+
var component = (0, jsx_1.parseJsx)(basicChildComponent);
|
|
29
|
+
var output = (0, angular_1.componentToAngular)()({ component: component });
|
|
30
|
+
expect(output).toMatchSnapshot();
|
|
31
|
+
});
|
|
32
|
+
test('basic outputs meta', function () {
|
|
33
|
+
var component = (0, jsx_1.parseJsx)(basicOutputsMeta);
|
|
34
|
+
var output = (0, angular_1.componentToAngular)()({ component: component });
|
|
35
|
+
expect(output).toMatchSnapshot();
|
|
36
|
+
});
|
|
18
37
|
test('basic outputs', function () {
|
|
19
38
|
var component = (0, jsx_1.parseJsx)(basicOutputs);
|
|
20
39
|
var output = (0, angular_1.componentToAngular)()({ component: component });
|
|
21
40
|
expect(output).toMatchSnapshot();
|
|
22
41
|
});
|
|
42
|
+
test('basic outputs same as meta', function () {
|
|
43
|
+
var component = (0, jsx_1.parseJsx)(basicOutputs);
|
|
44
|
+
var componentMeta = (0, jsx_1.parseJsx)(basicOutputsMeta);
|
|
45
|
+
var output = (0, angular_1.componentToAngular)()({ component: component });
|
|
46
|
+
var outputMeta = (0, angular_1.componentToAngular)()({ component: componentMeta });
|
|
47
|
+
expect(output).toMatch(outputMeta);
|
|
48
|
+
});
|
|
23
49
|
test('multiple onUpdate', function () {
|
|
24
50
|
var component = (0, jsx_1.parseJsx)(multipleOnUpdate);
|
|
25
51
|
var output = (0, angular_1.componentToAngular)()({ component: component });
|
|
@@ -75,4 +101,9 @@ describe('Angular', function () {
|
|
|
75
101
|
var output = (0, angular_1.componentToAngular)()({ component: component });
|
|
76
102
|
expect(output).toMatchSnapshot();
|
|
77
103
|
});
|
|
104
|
+
test('Text', function () {
|
|
105
|
+
var component = (0, jsx_1.parseJsx)(text);
|
|
106
|
+
var output = (0, angular_1.componentToAngular)()({ component: component });
|
|
107
|
+
expect(output).toMatchSnapshot();
|
|
108
|
+
});
|
|
78
109
|
});
|
|
@@ -9,11 +9,13 @@ var basic_onMount_update_raw_1 = __importDefault(require("./basic-onMount-update
|
|
|
9
9
|
function MyBasicChildComponent() {
|
|
10
10
|
var state = (0, mitosis_1.useState)({
|
|
11
11
|
name: 'Steve',
|
|
12
|
+
dev: 'PatrickJS',
|
|
12
13
|
});
|
|
13
14
|
return (<div>
|
|
14
|
-
|
|
15
|
+
{/*// @ts-ignore */}
|
|
16
|
+
<basic_raw_1.default id={state.dev}/>
|
|
15
17
|
<div>
|
|
16
|
-
<basic_onMount_update_raw_1.default />
|
|
18
|
+
<basic_onMount_update_raw_1.default hi={state.name} bye={state.dev}/>
|
|
17
19
|
</div>
|
|
18
20
|
</div>);
|
|
19
21
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var mitosis_1 = require("@builder.io/mitosis");
|
|
4
|
-
function MyBasicOnMountUpdateComponent() {
|
|
4
|
+
function MyBasicOnMountUpdateComponent(props) {
|
|
5
5
|
var state = (0, mitosis_1.useState)({
|
|
6
6
|
name: 'PatrickJS',
|
|
7
7
|
names: ['Steve', 'PatrickJS'],
|
|
8
8
|
});
|
|
9
9
|
(0, mitosis_1.onInit)(function () {
|
|
10
|
-
state.name = 'PatrickJS onInit';
|
|
10
|
+
state.name = 'PatrickJS onInit' + props.hi;
|
|
11
11
|
});
|
|
12
12
|
(0, mitosis_1.onMount)(function () {
|
|
13
|
-
state.name = 'PatrickJS onMount';
|
|
13
|
+
state.name = 'PatrickJS onMount' + props.bye;
|
|
14
14
|
});
|
|
15
15
|
return <div>Hello {state.name}</div>;
|
|
16
16
|
}
|
|
@@ -5,8 +5,10 @@ function MyBasicComponent() {
|
|
|
5
5
|
var state = (0, mitosis_1.useState)({
|
|
6
6
|
name: 'Steve',
|
|
7
7
|
});
|
|
8
|
-
return (<div
|
|
9
|
-
|
|
8
|
+
return (<div class="test" css={{
|
|
9
|
+
padding: '10px',
|
|
10
|
+
}}>
|
|
11
|
+
<input value={state.name} onChange={function (myEvent) { return (state.name = myEvent.target.value); }}/>
|
|
10
12
|
Hello! I can run in React, Vue, Solid, or Liquid!
|
|
11
13
|
</div>);
|
|
12
14
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var sdk_1 = require("@builder.io/sdk");
|
|
4
|
+
var mitosis_1 = require("@builder.io/mitosis");
|
|
4
5
|
function Text(props) {
|
|
5
6
|
var _a, _b, _c, _d, _e, _f;
|
|
6
7
|
var allowEditingText = sdk_1.Builder.isBrowser &&
|
|
@@ -9,9 +10,13 @@ function Text(props) {
|
|
|
9
10
|
!(((_b = (_a = props.builderBlock) === null || _a === void 0 ? void 0 : _a.bindings) === null || _b === void 0 ? void 0 : _b['component.options.text']) ||
|
|
10
11
|
((_d = (_c = props.builderBlock) === null || _c === void 0 ? void 0 : _c.bindings) === null || _d === void 0 ? void 0 : _d['options.text']) ||
|
|
11
12
|
((_f = (_e = props.builderBlock) === null || _e === void 0 ? void 0 : _e.bindings) === null || _f === void 0 ? void 0 : _f['text']));
|
|
13
|
+
var state = (0, mitosis_1.useState)({ name: 'Decadef20' });
|
|
12
14
|
// TODO: Add back dynamic `direction` CSS prop when we add support for some
|
|
13
15
|
// sort of dynamic CSS
|
|
14
16
|
// css={{ direction: props.rtlMode ? 'rtl' : 'ltr' }}
|
|
15
|
-
return (<div contentEditable={allowEditingText || undefined}
|
|
17
|
+
return (<div contentEditable={allowEditingText || undefined} data-name={{ test: state.name || 'any name' }} innerHTML={props.text ||
|
|
18
|
+
props.content ||
|
|
19
|
+
state.name ||
|
|
20
|
+
'<p class="text-lg">my name</p>'}/>);
|
|
16
21
|
}
|
|
17
22
|
exports.default = Text;
|
|
@@ -16,6 +16,6 @@ function Video(props) {
|
|
|
16
16
|
return (<video {...props.attributes} style={__assign(__assign({ width: '100%', height: '100%' }, (_a = props.attributes) === null || _a === void 0 ? void 0 : _a.style), { objectFit: props.fit, objectPosition: props.position,
|
|
17
17
|
// Hack to get object fit to work as expected and
|
|
18
18
|
// not have the video overflow
|
|
19
|
-
borderRadius: 1 })} preload="none" key={props.video || 'no-src'} poster={props.posterImage}
|
|
19
|
+
borderRadius: 1 })} preload="none" key={props.video || 'no-src'} poster={props.posterImage} autoplay={props.autoPlay} muted={props.muted} controls={props.controls} loop={props.loop}/>);
|
|
20
20
|
}
|
|
21
21
|
exports.default = Video;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function MyBasicComponent(): JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function MyBasicComponent() {
|
|
4
|
+
return (<div
|
|
5
|
+
// @ts-ignore
|
|
6
|
+
className="test" class="test2" css={{
|
|
7
|
+
padding: '10px',
|
|
8
|
+
}}>
|
|
9
|
+
Hello! I can run in React, Vue, Solid, or Liquid!
|
|
10
|
+
</div>);
|
|
11
|
+
}
|
|
12
|
+
exports.default = MyBasicComponent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function MyBasicComponent(): JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function MyBasicComponent() {
|
|
4
|
+
return (<div class="test" css={{
|
|
5
|
+
padding: '10px',
|
|
6
|
+
}}>
|
|
7
|
+
Hello! I can run in React, Vue, Solid, or Liquid!
|
|
8
|
+
</div>);
|
|
9
|
+
}
|
|
10
|
+
exports.default = MyBasicComponent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function MyBasicComponent(): JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function MyBasicComponent() {
|
|
4
|
+
return (<div
|
|
5
|
+
// @ts-ignore
|
|
6
|
+
className="test" css={{
|
|
7
|
+
padding: '10px',
|
|
8
|
+
}}>
|
|
9
|
+
Hello! I can run in React, Vue, Solid, or Liquid!
|
|
10
|
+
</div>);
|
|
11
|
+
}
|
|
12
|
+
exports.default = MyBasicComponent;
|
|
@@ -4,6 +4,7 @@ var html_1 = require("../generators/html");
|
|
|
4
4
|
var jsx_1 = require("../parsers/jsx");
|
|
5
5
|
var basic = require('./data/basic.raw');
|
|
6
6
|
var basicFor = require('./data/basic-for.raw');
|
|
7
|
+
var className = require('./data/blocks/classname-jsx.raw');
|
|
7
8
|
var submitButtonBlock = require('./data/blocks/submit-button.raw');
|
|
8
9
|
var inputBlock = require('./data/blocks/input.raw');
|
|
9
10
|
var selectBlock = require('./data/blocks/select.raw');
|
|
@@ -26,6 +27,11 @@ var onMount = require('./data/blocks/onMount.raw');
|
|
|
26
27
|
var stamped = require('./data/blocks/stamped-io.raw');
|
|
27
28
|
var shadowDom = require('./data/blocks/shadow-dom.raw');
|
|
28
29
|
describe('Html', function () {
|
|
30
|
+
test('className', function () {
|
|
31
|
+
var component = (0, jsx_1.parseJsx)(className);
|
|
32
|
+
var output = (0, html_1.componentToHtml)()({ component: component });
|
|
33
|
+
expect(output).toMatchSnapshot();
|
|
34
|
+
});
|
|
29
35
|
test('Basic', function () {
|
|
30
36
|
var component = (0, jsx_1.parseJsx)(basic);
|
|
31
37
|
var output = (0, html_1.componentToHtml)()({ component: component });
|
|
@@ -19,6 +19,7 @@ var stamped = require('./data/blocks/stamped-io.raw');
|
|
|
19
19
|
var embed = require('./data/blocks/embed.raw');
|
|
20
20
|
var image = require('./data/blocks/image.raw');
|
|
21
21
|
var columns = require('./data/blocks/columns.raw');
|
|
22
|
+
var classNameJsx = require('./data/blocks/classname-jsx.raw');
|
|
22
23
|
describe('Liquid', function () {
|
|
23
24
|
test('Basic', function () {
|
|
24
25
|
var component = (0, jsx_1.parseJsx)(basic);
|
|
@@ -105,4 +106,9 @@ describe('Liquid', function () {
|
|
|
105
106
|
var output = (0, liquid_1.componentToLiquid)()({ component: component });
|
|
106
107
|
expect(output).toMatchSnapshot();
|
|
107
108
|
});
|
|
109
|
+
test('ClassName', function () {
|
|
110
|
+
var component = (0, jsx_1.parseJsx)(classNameJsx);
|
|
111
|
+
var output = (0, liquid_1.componentToLiquid)()({ component: component });
|
|
112
|
+
expect(output).toMatchSnapshot();
|
|
113
|
+
});
|
|
108
114
|
});
|
|
@@ -395,16 +395,24 @@ describe('qwik', function () {
|
|
|
395
395
|
});
|
|
396
396
|
}); });
|
|
397
397
|
describe('src-generator', function () {
|
|
398
|
-
|
|
399
|
-
|
|
398
|
+
var file;
|
|
399
|
+
beforeEach(function () {
|
|
400
|
+
return (file = new qwik_1.File('test.js', {
|
|
400
401
|
isPretty: true,
|
|
401
402
|
isTypeScript: false,
|
|
402
403
|
isJSX: true,
|
|
403
404
|
isModule: true,
|
|
404
|
-
}, '', '');
|
|
405
|
+
}, '', ''));
|
|
406
|
+
});
|
|
407
|
+
test('should format code', function () {
|
|
405
408
|
file.src.emit('const x=1');
|
|
406
409
|
expect(file.toString()).toEqual('const x = 1;\n');
|
|
407
410
|
});
|
|
411
|
+
test('should deal with empty bindings', function () {
|
|
412
|
+
file.src.jsxBegin('Image', {}, { image: '' });
|
|
413
|
+
file.src.jsxEnd('Image');
|
|
414
|
+
expect(file.toString()).toEqual('<Image></Image>;\n');
|
|
415
|
+
});
|
|
408
416
|
});
|
|
409
417
|
describe('helper functions', function () {
|
|
410
418
|
describe('isStatement', function () {
|
|
@@ -24,7 +24,7 @@ var onUpdateWithDeps = require('./data/blocks/onUpdateWithDeps.raw');
|
|
|
24
24
|
var multipleOnUpdate = require('./data/blocks/multiple-onUpdate.raw');
|
|
25
25
|
var multipleOnUpdateWithDeps = require('./data/blocks/multiple-onUpdateWithDeps.raw');
|
|
26
26
|
var onMount = require('./data/blocks/onMount.raw');
|
|
27
|
-
describe('React', function () {
|
|
27
|
+
describe('React Native', function () {
|
|
28
28
|
test('Basic', function () {
|
|
29
29
|
var component = (0, jsx_1.parseJsx)(basic);
|
|
30
30
|
var output = (0, react_native_1.componentToReactNative)()({ component: component });
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
var react_1 = require("../generators/react");
|
|
4
4
|
var jsx_1 = require("../parsers/jsx");
|
|
5
5
|
var basic = require('./data/basic.raw');
|
|
6
|
+
var basicChildComponent = require('./data/basic-child-component.raw');
|
|
6
7
|
var basicFor = require('./data/basic-for.raw');
|
|
7
8
|
var submitButtonBlock = require('./data/blocks/submit-button.raw');
|
|
8
9
|
var inputBlock = require('./data/blocks/input.raw');
|
|
@@ -57,6 +58,11 @@ describe('React', function () {
|
|
|
57
58
|
var output = (0, react_1.componentToReact)()({ component: component });
|
|
58
59
|
expect(output).toMatchSnapshot();
|
|
59
60
|
});
|
|
61
|
+
test('Basic Child Component', function () {
|
|
62
|
+
var component = (0, jsx_1.parseJsx)(basicChildComponent);
|
|
63
|
+
var output = (0, react_1.componentToReact)()({ component: component });
|
|
64
|
+
expect(output).toMatchSnapshot();
|
|
65
|
+
});
|
|
60
66
|
test('BasicFor', function () {
|
|
61
67
|
var component = (0, jsx_1.parseJsx)(basicFor);
|
|
62
68
|
var output = (0, react_1.componentToReact)()({ component: component });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var jsx_1 = require("../parsers/jsx");
|
|
4
|
+
var classRaw = require('./data/styles/class.raw');
|
|
5
|
+
var className = require('./data/styles/className.raw');
|
|
6
|
+
var classAndClassName = require('./data/styles/class-and-className.raw');
|
|
7
|
+
describe('Styles', function () {
|
|
8
|
+
test('class and className are equivalent', function () {
|
|
9
|
+
expect((0, jsx_1.parseJsx)(classRaw)).toMatchSnapshot(className);
|
|
10
|
+
});
|
|
11
|
+
test('class and className are merged', function () {
|
|
12
|
+
var component = (0, jsx_1.parseJsx)(classAndClassName);
|
|
13
|
+
expect(component).toMatchSnapshot();
|
|
14
|
+
});
|
|
15
|
+
});
|
|
@@ -13,6 +13,7 @@ var rootShow = require('./data/blocks/rootShow.raw');
|
|
|
13
13
|
var simpleExample = require('./data/context/simple.context.lite');
|
|
14
14
|
var componentWithContext = require('./data/context/component-with-context.lite');
|
|
15
15
|
var renderBlock = require('./data/blocks/builder-render-block.raw');
|
|
16
|
+
var text = require('./data/blocks/text.raw');
|
|
16
17
|
describe('Svelte', function () {
|
|
17
18
|
test('onUpdate', function () {
|
|
18
19
|
var component = (0, jsx_1.parseJsx)(onUpdate);
|
|
@@ -67,4 +68,9 @@ describe('Svelte', function () {
|
|
|
67
68
|
expect(output).toMatchSnapshot();
|
|
68
69
|
});
|
|
69
70
|
});
|
|
71
|
+
test('Text', function () {
|
|
72
|
+
var component = (0, jsx_1.parseJsx)(text);
|
|
73
|
+
var output = (0, svelte_2.componentToSvelte)()({ component: component });
|
|
74
|
+
expect(output).toMatchSnapshot();
|
|
75
|
+
});
|
|
70
76
|
});
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
var html_1 = require("../generators/html");
|
|
4
4
|
var jsx_1 = require("../parsers/jsx");
|
|
5
5
|
var basic = require('./data/basic.raw');
|
|
6
|
+
var basicChildComponent = require('./data/basic-child-component.raw');
|
|
6
7
|
var basicFor = require('./data/basic-for.raw');
|
|
7
8
|
var basicForShow = require('./data/basic-for-show.raw');
|
|
8
9
|
var basicOnMountUpdate = require('./data/basic-onMount-update.raw');
|
|
@@ -35,6 +36,11 @@ describe('webcomponent', function () {
|
|
|
35
36
|
var output = (0, html_1.componentToCustomElement)()({ component: component });
|
|
36
37
|
expect(output).toMatchSnapshot();
|
|
37
38
|
});
|
|
39
|
+
test('Basic Child Component', function () {
|
|
40
|
+
var component = (0, jsx_1.parseJsx)(basicChildComponent);
|
|
41
|
+
var output = (0, html_1.componentToCustomElement)()({ component: component });
|
|
42
|
+
expect(output).toMatchSnapshot();
|
|
43
|
+
});
|
|
38
44
|
test('BasicFor', function () {
|
|
39
45
|
var component = (0, jsx_1.parseJsx)(basicFor);
|
|
40
46
|
var output = (0, html_1.componentToCustomElement)()({ component: component });
|
|
@@ -44,18 +44,22 @@ var mappers = {
|
|
|
44
44
|
Slot: function (json, options, blockOptions) {
|
|
45
45
|
return "<ng-content ".concat(Object.keys(json.bindings)
|
|
46
46
|
.map(function (binding) {
|
|
47
|
-
var _a;
|
|
47
|
+
var _a, _b, _c;
|
|
48
48
|
if (binding === 'name') {
|
|
49
|
-
var selector = (0, lodash_1.kebabCase)((_a = json.bindings.name) === null || _a === void 0 ? void 0 : _a.replace('props.slot', ''));
|
|
49
|
+
var selector = (0, lodash_1.kebabCase)((_b = (_a = json.bindings.name) === null || _a === void 0 ? void 0 : _a.code) === null || _b === void 0 ? void 0 : _b.replace('props.slot', ''));
|
|
50
50
|
return "select=\"[".concat(selector, "]\"");
|
|
51
51
|
}
|
|
52
|
-
return "".concat(json.bindings[binding]);
|
|
52
|
+
return "".concat((_c = json.bindings[binding]) === null || _c === void 0 ? void 0 : _c.code);
|
|
53
53
|
})
|
|
54
54
|
.join('\n'), "></ng-content>");
|
|
55
55
|
},
|
|
56
56
|
};
|
|
57
|
+
// TODO: Maybe in the future allow defining `string | function` as values
|
|
58
|
+
var BINDINGS_MAPPER = {
|
|
59
|
+
innerHTML: 'innerHTML',
|
|
60
|
+
};
|
|
57
61
|
var blockToAngular = function (json, options, blockOptions) {
|
|
58
|
-
var _a;
|
|
62
|
+
var _a, _b, _c, _d, _e, _f;
|
|
59
63
|
if (options === void 0) { options = {}; }
|
|
60
64
|
if (blockOptions === void 0) { blockOptions = {}; }
|
|
61
65
|
var contextVars = (blockOptions === null || blockOptions === void 0 ? void 0 : blockOptions.contextVars) || [];
|
|
@@ -70,12 +74,12 @@ var blockToAngular = function (json, options, blockOptions) {
|
|
|
70
74
|
if (json.properties._text) {
|
|
71
75
|
return json.properties._text;
|
|
72
76
|
}
|
|
73
|
-
if (/props\.slot/.test(json.bindings._text)) {
|
|
74
|
-
var selector = (0, lodash_1.kebabCase)((
|
|
77
|
+
if (/props\.slot/.test((_a = json.bindings._text) === null || _a === void 0 ? void 0 : _a.code)) {
|
|
78
|
+
var selector = (0, lodash_1.kebabCase)((_c = (_b = json.bindings._text) === null || _b === void 0 ? void 0 : _b.code) === null || _c === void 0 ? void 0 : _c.replace('props.slot', ''));
|
|
75
79
|
return "<ng-content select=\"[".concat(selector, "]\"></ng-content>");
|
|
76
80
|
}
|
|
77
|
-
if (json.bindings._text) {
|
|
78
|
-
return "{{".concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(json.bindings._text, {
|
|
81
|
+
if ((_d = json.bindings._text) === null || _d === void 0 ? void 0 : _d.code) {
|
|
82
|
+
return "{{".concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(json.bindings._text.code, {
|
|
79
83
|
contextVars: contextVars,
|
|
80
84
|
outputVars: outputVars,
|
|
81
85
|
}), "}}");
|
|
@@ -83,7 +87,7 @@ var blockToAngular = function (json, options, blockOptions) {
|
|
|
83
87
|
var str = '';
|
|
84
88
|
var needsToRenderSlots = [];
|
|
85
89
|
if (json.name === 'For') {
|
|
86
|
-
str += "<ng-container *ngFor=\"let ".concat(json.properties._forName, " of ").concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(json.bindings.each, {
|
|
90
|
+
str += "<ng-container *ngFor=\"let ".concat(json.properties._forName, " of ").concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_e = json.bindings.each) === null || _e === void 0 ? void 0 : _e.code, {
|
|
87
91
|
contextVars: contextVars,
|
|
88
92
|
outputVars: outputVars,
|
|
89
93
|
}), "\">");
|
|
@@ -93,7 +97,7 @@ var blockToAngular = function (json, options, blockOptions) {
|
|
|
93
97
|
str += "</ng-container>";
|
|
94
98
|
}
|
|
95
99
|
else if (json.name === 'Show') {
|
|
96
|
-
str += "<ng-container *ngIf=\"".concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(json.bindings.when, { contextVars: contextVars, outputVars: outputVars }), "\">");
|
|
100
|
+
str += "<ng-container *ngIf=\"".concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_f = json.bindings.when) === null || _f === void 0 ? void 0 : _f.code, { contextVars: contextVars, outputVars: outputVars }), "\">");
|
|
97
101
|
str += json.children
|
|
98
102
|
.map(function (item) { return (0, exports.blockToAngular)(item, options, blockOptions); })
|
|
99
103
|
.join('\n');
|
|
@@ -115,12 +119,7 @@ var blockToAngular = function (json, options, blockOptions) {
|
|
|
115
119
|
continue;
|
|
116
120
|
}
|
|
117
121
|
var value = json.properties[key];
|
|
118
|
-
|
|
119
|
-
str += " class=\"".concat(value, "\" ");
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
str += " ".concat(key, "=\"").concat(value, "\" ");
|
|
123
|
-
}
|
|
122
|
+
str += " ".concat(key, "=\"").concat(value, "\" ");
|
|
124
123
|
}
|
|
125
124
|
for (var key in json.bindings) {
|
|
126
125
|
if (key === '_spread') {
|
|
@@ -129,9 +128,9 @@ var blockToAngular = function (json, options, blockOptions) {
|
|
|
129
128
|
if (key.startsWith('$')) {
|
|
130
129
|
continue;
|
|
131
130
|
}
|
|
132
|
-
var
|
|
131
|
+
var _g = json.bindings[key], code = _g.code, _h = _g.arguments, cusArgs = _h === void 0 ? ['event'] : _h;
|
|
133
132
|
// TODO: proper babel transform to replace. Util for this
|
|
134
|
-
var useValue = (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(
|
|
133
|
+
var useValue = (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(code, {
|
|
135
134
|
contextVars: contextVars,
|
|
136
135
|
outputVars: outputVars,
|
|
137
136
|
});
|
|
@@ -142,10 +141,10 @@ var blockToAngular = function (json, options, blockOptions) {
|
|
|
142
141
|
event_1 = 'input';
|
|
143
142
|
}
|
|
144
143
|
// TODO: proper babel transform to replace. Util for this
|
|
145
|
-
var finalValue = (0, remove_surrounding_block_1.removeSurroundingBlock)(useValue.replace(
|
|
144
|
+
var finalValue = (0, remove_surrounding_block_1.removeSurroundingBlock)(useValue.replace(new RegExp("".concat(cusArgs[0], "\\."), 'g'), '$event.'));
|
|
146
145
|
str += " (".concat(event_1, ")=\"").concat(finalValue, "\" ");
|
|
147
146
|
}
|
|
148
|
-
else if (key === '
|
|
147
|
+
else if (key === 'class') {
|
|
149
148
|
str += " [class]=\"".concat(useValue, "\" ");
|
|
150
149
|
}
|
|
151
150
|
else if (key === 'ref') {
|
|
@@ -156,8 +155,11 @@ var blockToAngular = function (json, options, blockOptions) {
|
|
|
156
155
|
key.replace('slot', '').substring(1);
|
|
157
156
|
needsToRenderSlots.push("".concat(useValue.replace(/(\/\>)|\>/, " ".concat(lowercaseKey, ">"))));
|
|
158
157
|
}
|
|
158
|
+
else if (BINDINGS_MAPPER[key]) {
|
|
159
|
+
str += " [".concat(BINDINGS_MAPPER[key], "]=\"").concat(useValue.replace(/"/g, "\\'"), "\" ");
|
|
160
|
+
}
|
|
159
161
|
else {
|
|
160
|
-
str += " [".concat(key, "]
|
|
162
|
+
str += " [".concat(key, "]='").concat(useValue, "' ");
|
|
161
163
|
}
|
|
162
164
|
}
|
|
163
165
|
if (jsx_1.selfClosingTags.has(json.name)) {
|
|
@@ -10,7 +10,7 @@ declare type InternalOptions = {
|
|
|
10
10
|
export declare const blockToBuilder: (json: MitosisNode, options?: ToBuilderOptions, _internalOptions?: InternalOptions) => BuilderElement;
|
|
11
11
|
export declare const componentToBuilder: (options?: ToBuilderOptions) => ({ component }: TranspilerArgs) => {
|
|
12
12
|
data: {
|
|
13
|
-
httpRequests:
|
|
13
|
+
httpRequests: import("../types/json").JSON;
|
|
14
14
|
jsCode: string;
|
|
15
15
|
tsCode: string;
|
|
16
16
|
blocks: BuilderElement[];
|
|
@@ -57,8 +57,7 @@ var componentMappers = __assign(__assign({}, (!builder_1.symbolBlocksAsChildren
|
|
|
57
57
|
: {
|
|
58
58
|
Symbol: function (node, options) {
|
|
59
59
|
var child = node.children[0];
|
|
60
|
-
var symbolOptions = (node.bindings.symbol &&
|
|
61
|
-
json5_1.default.parse(node.bindings.symbol)) ||
|
|
60
|
+
var symbolOptions = (node.bindings.symbol && json5_1.default.parse(node.bindings.symbol.code)) ||
|
|
62
61
|
{};
|
|
63
62
|
if (child) {
|
|
64
63
|
(0, lodash_1.set)(symbolOptions, 'content.data.blocks', child.children.map(function (item) { return (0, exports.blockToBuilder)(item, options); }));
|
|
@@ -82,12 +81,13 @@ var componentMappers = __assign(__assign({}, (!builder_1.symbolBlocksAsChildren
|
|
|
82
81
|
block.children = [];
|
|
83
82
|
return block;
|
|
84
83
|
}, For: function (node, options) {
|
|
84
|
+
var _a;
|
|
85
85
|
return el({
|
|
86
86
|
component: {
|
|
87
87
|
name: 'Core:Fragment',
|
|
88
88
|
},
|
|
89
89
|
repeat: {
|
|
90
|
-
collection: node.bindings.each,
|
|
90
|
+
collection: (_a = node.bindings.each) === null || _a === void 0 ? void 0 : _a.code,
|
|
91
91
|
itemName: node.properties._forName,
|
|
92
92
|
},
|
|
93
93
|
children: node.children
|
|
@@ -95,13 +95,14 @@ var componentMappers = __assign(__assign({}, (!builder_1.symbolBlocksAsChildren
|
|
|
95
95
|
.map(function (node) { return (0, exports.blockToBuilder)(node, options); }),
|
|
96
96
|
}, options);
|
|
97
97
|
}, Show: function (node, options) {
|
|
98
|
+
var _a;
|
|
98
99
|
return el({
|
|
99
100
|
// TODO: the reverse mapping for this
|
|
100
101
|
component: {
|
|
101
102
|
name: 'Core:Fragment',
|
|
102
103
|
},
|
|
103
104
|
bindings: {
|
|
104
|
-
show: node.bindings.when,
|
|
105
|
+
show: (_a = node.bindings.when) === null || _a === void 0 ? void 0 : _a.code,
|
|
105
106
|
},
|
|
106
107
|
children: node.children
|
|
107
108
|
.filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
|
|
@@ -129,20 +130,20 @@ function tryFormat(code) {
|
|
|
129
130
|
}
|
|
130
131
|
var blockToBuilder = function (json, options, _internalOptions) {
|
|
131
132
|
var _a;
|
|
132
|
-
var _b;
|
|
133
|
+
var _b, _c, _d, _e, _f, _g;
|
|
133
134
|
if (options === void 0) { options = {}; }
|
|
134
135
|
if (_internalOptions === void 0) { _internalOptions = {}; }
|
|
135
136
|
var mapper = !_internalOptions.skipMapper && componentMappers[json.name];
|
|
136
137
|
if (mapper) {
|
|
137
138
|
return mapper(json, options);
|
|
138
139
|
}
|
|
139
|
-
if (json.properties._text || json.bindings._text) {
|
|
140
|
+
if (json.properties._text || ((_b = json.bindings._text) === null || _b === void 0 ? void 0 : _b.code)) {
|
|
140
141
|
return el({
|
|
141
142
|
tagName: 'span',
|
|
142
|
-
bindings: __assign({}, (json.bindings._text
|
|
143
|
+
bindings: __assign({}, (((_c = json.bindings._text) === null || _c === void 0 ? void 0 : _c.code)
|
|
143
144
|
? {
|
|
144
|
-
'component.options.text': json.bindings._text,
|
|
145
|
-
'json.bindings._text': undefined,
|
|
145
|
+
'component.options.text': json.bindings._text.code,
|
|
146
|
+
'json.bindings._text.code': undefined,
|
|
146
147
|
}
|
|
147
148
|
: {})),
|
|
148
149
|
component: {
|
|
@@ -158,9 +159,9 @@ var blockToBuilder = function (json, options, _internalOptions) {
|
|
|
158
159
|
var actions = {};
|
|
159
160
|
for (var key in bindings) {
|
|
160
161
|
var eventBindingKeyRegex = /^on([A-Z])/;
|
|
161
|
-
var firstCharMatchForEventBindingKey = (
|
|
162
|
+
var firstCharMatchForEventBindingKey = (_d = key.match(eventBindingKeyRegex)) === null || _d === void 0 ? void 0 : _d[1];
|
|
162
163
|
if (firstCharMatchForEventBindingKey) {
|
|
163
|
-
actions[key.replace(eventBindingKeyRegex, firstCharMatchForEventBindingKey.toLowerCase())] = (0, remove_surrounding_block_1.removeSurroundingBlock)(bindings[key]);
|
|
164
|
+
actions[key.replace(eventBindingKeyRegex, firstCharMatchForEventBindingKey.toLowerCase())] = (0, remove_surrounding_block_1.removeSurroundingBlock)((_e = bindings[key]) === null || _e === void 0 ? void 0 : _e.code);
|
|
164
165
|
delete bindings[key];
|
|
165
166
|
}
|
|
166
167
|
}
|
|
@@ -172,7 +173,7 @@ var blockToBuilder = function (json, options, _internalOptions) {
|
|
|
172
173
|
return "continue";
|
|
173
174
|
}
|
|
174
175
|
var value = bindings[key];
|
|
175
|
-
var parsed = (0, lodash_1.attempt)(function () { return json5_1.default.parse(value); });
|
|
176
|
+
var parsed = (0, lodash_1.attempt)(function () { return json5_1.default.parse(value === null || value === void 0 ? void 0 : value.code); });
|
|
176
177
|
if (!(parsed instanceof Error)) {
|
|
177
178
|
componentOptions[key] = parsed;
|
|
178
179
|
}
|
|
@@ -184,12 +185,12 @@ var blockToBuilder = function (json, options, _internalOptions) {
|
|
|
184
185
|
_loop_1(key);
|
|
185
186
|
}
|
|
186
187
|
}
|
|
187
|
-
var hasCss = !!bindings.css;
|
|
188
|
+
var hasCss = !!((_f = bindings.css) === null || _f === void 0 ? void 0 : _f.code);
|
|
188
189
|
var responsiveStyles = {
|
|
189
190
|
large: {},
|
|
190
191
|
};
|
|
191
192
|
if (hasCss) {
|
|
192
|
-
var cssRules = json5_1.default.parse(bindings.css);
|
|
193
|
+
var cssRules = json5_1.default.parse((_g = bindings.css) === null || _g === void 0 ? void 0 : _g.code);
|
|
193
194
|
var cssRuleKeys = Object.keys(cssRules);
|
|
194
195
|
for (var _i = 0, cssRuleKeys_1 = cssRuleKeys; _i < cssRuleKeys_1.length; _i++) {
|
|
195
196
|
var ruleKey = cssRuleKeys_1[_i];
|
|
@@ -223,9 +224,7 @@ var blockToBuilder = function (json, options, _internalOptions) {
|
|
|
223
224
|
actions: actions,
|
|
224
225
|
}, properties: thisIsComponent
|
|
225
226
|
? undefined
|
|
226
|
-
: omitMetaProperties(json.properties), bindings: thisIsComponent
|
|
227
|
-
? builderBindings
|
|
228
|
-
: (0, lodash_1.omit)(bindings, 'css'), actions: actions, children: json.children
|
|
227
|
+
: omitMetaProperties(json.properties), bindings: thisIsComponent ? builderBindings : (0, lodash_1.omit)(bindings, 'css'), actions: actions, children: json.children
|
|
229
228
|
.filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
|
|
230
229
|
.map(function (child) { return (0, exports.blockToBuilder)(child, options); }) }), options);
|
|
231
230
|
};
|