@builder.io/mitosis 0.0.56-99 → 0.0.58
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/content-slot-jsx.raw.jsx +4 -1
- package/dist/src/__tests__/data/blocks/form.raw.jsx +5 -5
- package/dist/src/__tests__/data/blocks/onUpdateWithDeps.raw.d.ts +5 -1
- package/dist/src/__tests__/data/blocks/onUpdateWithDeps.raw.jsx +3 -3
- package/dist/src/__tests__/data/jsx-json.spec.d.ts +2 -0
- package/dist/src/__tests__/data/jsx-json.spec.js +10226 -0
- package/dist/src/__tests__/shared.d.ts +7 -2
- package/dist/src/__tests__/shared.js +66 -9
- package/dist/src/constants/method-literal-prefix.d.ts +0 -1
- package/dist/src/constants/method-literal-prefix.js +0 -3
- package/dist/src/generators/angular.d.ts +2 -2
- package/dist/src/generators/angular.js +14 -6
- package/dist/src/generators/builder.d.ts +4 -11
- package/dist/src/generators/builder.js +3 -2
- package/dist/src/generators/context/qwik.js +1 -1
- package/dist/src/generators/context/svelte.d.ts +3 -0
- package/dist/src/generators/context/svelte.js +3 -0
- package/dist/src/generators/helpers/functions.d.ts +2 -0
- package/dist/src/generators/helpers/functions.js +28 -0
- package/dist/src/generators/html.d.ts +3 -3
- package/dist/src/generators/html.js +9 -7
- package/dist/src/generators/liquid.d.ts +2 -2
- package/dist/src/generators/liquid.js +4 -4
- package/dist/src/generators/lit/generate.d.ts +2 -2
- package/dist/src/generators/lit/generate.js +3 -2
- package/dist/src/generators/marko/generate.d.ts +2 -2
- package/dist/src/generators/marko/generate.js +10 -8
- package/dist/src/generators/mitosis.d.ts +3 -4
- package/dist/src/generators/mitosis.js +3 -2
- package/dist/src/generators/qwik/component-generator.d.ts +2 -2
- package/dist/src/generators/qwik/component-generator.js +68 -64
- package/dist/src/generators/qwik/component.d.ts +0 -1
- package/dist/src/generators/qwik/component.js +22 -19
- package/dist/src/generators/qwik/directives.d.ts +1 -0
- package/dist/src/generators/qwik/directives.js +11 -14
- package/dist/src/generators/qwik/jsx.d.ts +1 -1
- package/dist/src/generators/qwik/jsx.js +9 -5
- package/dist/src/generators/qwik/src-generator.js +11 -3
- package/dist/src/generators/qwik/stable-serialize.d.ts +6 -0
- package/dist/src/generators/qwik/stable-serialize.js +51 -0
- package/dist/src/generators/react/generator.d.ts +6 -0
- package/dist/src/generators/{react.js → react/generator.js} +58 -150
- package/dist/src/generators/react/helpers.d.ts +2 -0
- package/dist/src/generators/react/helpers.js +14 -0
- package/dist/src/generators/react/index.d.ts +2 -0
- package/dist/src/generators/react/index.js +18 -0
- package/dist/src/generators/react/state.d.ts +9 -0
- package/dist/src/generators/react/state.js +107 -0
- package/dist/src/generators/react/types.d.ts +10 -0
- package/dist/src/{types/string-map.js → generators/react/types.js} +0 -0
- package/dist/src/generators/react-native.d.ts +2 -2
- package/dist/src/generators/solid/index.d.ts +3 -0
- package/dist/src/generators/{solid.js → solid/index.js} +80 -40
- package/dist/src/generators/solid/state.d.ts +19 -0
- package/dist/src/generators/solid/state.js +144 -0
- package/dist/src/generators/solid/types.d.ts +6 -0
- package/dist/src/generators/solid/types.js +2 -0
- package/dist/src/generators/stencil/generate.d.ts +2 -2
- package/dist/src/generators/stencil/generate.js +5 -2
- package/dist/src/generators/svelte.d.ts +6 -7
- package/dist/src/generators/svelte.js +43 -40
- package/dist/src/generators/swift-ui.d.ts +3 -5
- package/dist/src/generators/swift-ui.js +3 -2
- package/dist/src/generators/template.d.ts +2 -2
- package/dist/src/generators/template.js +3 -2
- package/dist/src/generators/vue.d.ts +5 -3
- package/dist/src/generators/vue.js +256 -113
- package/dist/src/helpers/babel-transform.d.ts +3 -1
- package/dist/src/helpers/babel-transform.js +52 -56
- package/dist/src/helpers/get-bindings.js +3 -5
- package/dist/src/helpers/get-props.js +14 -1
- package/dist/src/helpers/get-state-object-string.js +24 -21
- package/dist/src/helpers/getters-to-functions.js +1 -11
- package/dist/src/helpers/map-refs.js +25 -25
- package/dist/src/helpers/nodes/for.d.ts +4 -0
- package/dist/src/helpers/nodes/for.js +13 -0
- package/dist/src/helpers/nullable.d.ts +2 -0
- package/dist/src/helpers/nullable.js +7 -0
- package/dist/src/helpers/patterns.d.ts +2 -0
- package/dist/src/helpers/patterns.js +5 -1
- package/dist/src/helpers/render-imports.js +3 -3
- package/dist/src/helpers/replace-identifiers.d.ts +5 -0
- package/dist/src/helpers/{replace-idenifiers.js → replace-identifiers.js} +2 -1
- package/dist/src/helpers/slots.d.ts +2 -0
- package/dist/src/helpers/slots.js +15 -1
- package/dist/src/helpers/state.d.ts +0 -2
- package/dist/src/helpers/state.js +1 -10
- package/dist/src/helpers/strip-state-and-props-refs.d.ts +1 -1
- package/dist/src/helpers/strip-state-and-props-refs.js +43 -31
- package/dist/src/helpers/styles/helpers.d.ts +3 -2
- package/dist/src/index.d.ts +0 -2
- package/dist/src/index.js +0 -2
- package/dist/src/parsers/angular.js +2 -2
- package/dist/src/parsers/builder.d.ts +2 -2
- package/dist/src/parsers/builder.js +61 -43
- package/dist/src/parsers/constants/outdated-prefixes.d.ts +10 -0
- package/dist/src/parsers/constants/outdated-prefixes.js +13 -0
- package/dist/src/parsers/context.js +2 -2
- package/dist/src/parsers/helpers/state.d.ts +3 -0
- package/dist/src/parsers/helpers/state.js +30 -0
- package/dist/src/parsers/jsx/component-types.d.ts +1 -1
- package/dist/src/parsers/jsx/component-types.js +15 -2
- package/dist/src/parsers/jsx/context.js +1 -1
- package/dist/src/parsers/jsx/element-parser.d.ts +6 -0
- package/dist/src/parsers/jsx/element-parser.js +243 -0
- package/dist/src/parsers/jsx/exports.d.ts +3 -0
- package/dist/src/parsers/jsx/exports.js +78 -0
- package/dist/src/parsers/jsx/function-parser.d.ts +7 -0
- package/dist/src/parsers/jsx/function-parser.js +291 -0
- package/dist/src/parsers/jsx/helpers.d.ts +2 -0
- package/dist/src/parsers/jsx/helpers.js +30 -1
- package/dist/src/parsers/jsx/imports.d.ts +7 -0
- package/dist/src/parsers/jsx/imports.js +65 -0
- package/dist/src/parsers/jsx/index.d.ts +1 -1
- package/dist/src/parsers/jsx/index.js +1 -2
- package/dist/src/parsers/jsx/jsx.js +29 -516
- package/dist/src/parsers/jsx/state.d.ts +2 -3
- package/dist/src/parsers/jsx/state.js +15 -22
- package/dist/src/plugins/compile-away-builder-components.js +6 -0
- package/dist/src/symbols/symbol-processor.js +3 -0
- package/dist/src/targets.d.ts +21 -28
- package/dist/src/targets.js +2 -2
- package/dist/src/types/config.d.ts +11 -1
- package/dist/src/types/mitosis-component.d.ts +12 -6
- package/dist/src/types/mitosis-component.js +11 -0
- package/dist/src/types/mitosis-context.d.ts +2 -2
- package/dist/src/types/mitosis-node.d.ts +14 -5
- package/dist/src/types/mitosis-node.js +3 -0
- package/dist/src/types/transpiler.d.ts +6 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/dist/src/__tests__/angular.test.d.ts +0 -1
- package/dist/src/__tests__/angular.test.js +0 -10
- package/dist/src/__tests__/builder.test.d.ts +0 -1
- package/dist/src/__tests__/builder.test.js +0 -235
- package/dist/src/__tests__/context.test.d.ts +0 -1
- package/dist/src/__tests__/context.test.js +0 -35
- package/dist/src/__tests__/hash-code.test.d.ts +0 -1
- package/dist/src/__tests__/hash-code.test.js +0 -11
- package/dist/src/__tests__/html.test.d.ts +0 -1
- package/dist/src/__tests__/html.test.js +0 -7
- package/dist/src/__tests__/liquid.test.d.ts +0 -1
- package/dist/src/__tests__/liquid.test.js +0 -7
- package/dist/src/__tests__/lit.test.d.ts +0 -1
- package/dist/src/__tests__/lit.test.js +0 -7
- package/dist/src/__tests__/marko.test.d.ts +0 -1
- package/dist/src/__tests__/marko.test.js +0 -14
- package/dist/src/__tests__/parse-jsx.test.d.ts +0 -1
- package/dist/src/__tests__/parse-jsx.test.js +0 -37
- package/dist/src/__tests__/qwik/convert-method-to-function.test.d.ts +0 -1
- package/dist/src/__tests__/qwik/convert-method-to-function.test.js +0 -37
- package/dist/src/__tests__/qwik/src-generator.test.d.ts +0 -1
- package/dist/src/__tests__/qwik/src-generator.test.js +0 -65
- package/dist/src/__tests__/qwik.directive.test.d.ts +0 -1
- package/dist/src/__tests__/qwik.directive.test.js +0 -108
- package/dist/src/__tests__/qwik.test.d.ts +0 -1
- package/dist/src/__tests__/qwik.test.js +0 -465
- package/dist/src/__tests__/react-native.test.d.ts +0 -1
- package/dist/src/__tests__/react-native.test.js +0 -7
- package/dist/src/__tests__/react.test.d.ts +0 -1
- package/dist/src/__tests__/react.test.js +0 -20
- package/dist/src/__tests__/solid.test.d.ts +0 -1
- package/dist/src/__tests__/solid.test.js +0 -10
- package/dist/src/__tests__/stencil.test.d.ts +0 -1
- package/dist/src/__tests__/stencil.test.js +0 -7
- package/dist/src/__tests__/styles.test.d.ts +0 -1
- package/dist/src/__tests__/styles.test.js +0 -23
- package/dist/src/__tests__/svelte.test.d.ts +0 -1
- package/dist/src/__tests__/svelte.test.js +0 -7
- package/dist/src/__tests__/vue.test.d.ts +0 -1
- package/dist/src/__tests__/vue.test.js +0 -7
- package/dist/src/__tests__/webcomponent.test.d.ts +0 -1
- package/dist/src/__tests__/webcomponent.test.js +0 -15
- package/dist/src/constants/function-literal-prefix.d.ts +0 -1
- package/dist/src/constants/function-literal-prefix.js +0 -4
- package/dist/src/generators/react.d.ts +0 -14
- package/dist/src/generators/solid.d.ts +0 -5
- package/dist/src/helpers/babel-transform.test.d.ts +0 -1
- package/dist/src/helpers/babel-transform.test.js +0 -7
- package/dist/src/helpers/generic-format.test.d.ts +0 -1
- package/dist/src/helpers/generic-format.test.js +0 -8
- package/dist/src/helpers/map-to-attributes.d.ts +0 -2
- package/dist/src/helpers/map-to-attributes.js +0 -19
- package/dist/src/helpers/map-to-css.d.ts +0 -2
- package/dist/src/helpers/map-to-css.js +0 -16
- package/dist/src/helpers/parse-reactive-script.d.ts +0 -7
- package/dist/src/helpers/parse-reactive-script.js +0 -87
- package/dist/src/helpers/remove-surrounding-block.test.d.ts +0 -1
- package/dist/src/helpers/remove-surrounding-block.test.js +0 -9
- package/dist/src/helpers/render-imports.test.d.ts +0 -1
- package/dist/src/helpers/render-imports.test.js +0 -33
- package/dist/src/helpers/replace-idenifiers.d.ts +0 -1
- package/dist/src/helpers/styles/collect-css.test.d.ts +0 -1
- package/dist/src/helpers/styles/collect-css.test.js +0 -18
- package/dist/src/parsers/html.d.ts +0 -0
- package/dist/src/parsers/html.js +0 -2
- package/dist/src/parsers/liquid.d.ts +0 -70
- package/dist/src/parsers/liquid.js +0 -2538
- package/dist/src/types/string-map.d.ts +0 -3
- package/dist/test/qwik/Accordion/high.jsx +0 -0
- package/dist/test/qwik/Accordion/low.jsx +0 -240
- package/dist/test/qwik/Accordion/med.jsx +0 -4
- package/dist/test/qwik/For/high.jsx +0 -0
- package/dist/test/qwik/For/low.jsx +0 -52
- package/dist/test/qwik/For/med.jsx +0 -4
- package/dist/test/qwik/Image/high.js +0 -9
- package/dist/test/qwik/Image/low.js +0 -0
- package/dist/test/qwik/Image/med.js +0 -155
- package/dist/test/qwik/Image.slow/high.js +0 -9
- package/dist/test/qwik/Image.slow/low.js +0 -0
- package/dist/test/qwik/Image.slow/med.js +0 -155
- package/dist/test/qwik/bindings/high.cjs +0 -0
- package/dist/test/qwik/bindings/low.cjs +0 -45
- package/dist/test/qwik/bindings/med.cjs +0 -3
- package/dist/test/qwik/button/high.js +0 -3
- package/dist/test/qwik/button/low.js +0 -25
- package/dist/test/qwik/button/med.js +0 -31
- package/dist/test/qwik/component/bindings/high.jsx +0 -0
- package/dist/test/qwik/component/bindings/low.jsx +0 -104
- package/dist/test/qwik/component/bindings/med.jsx +0 -7
- package/dist/test/qwik/component/component/inputs/high.cjsx +0 -9
- package/dist/test/qwik/component/component/inputs/low.cjsx +0 -0
- package/dist/test/qwik/component/component/inputs/med.cjsx +0 -68
- package/dist/test/qwik/for-loop.bindings/high.cjs +0 -0
- package/dist/test/qwik/for-loop.bindings/low.cjs +0 -56
- package/dist/test/qwik/for-loop.bindings/med.cjs +0 -5
- package/dist/test/qwik/hello_world/stylesheet/high.jsx +0 -0
- package/dist/test/qwik/hello_world/stylesheet/low.jsx +0 -26
- package/dist/test/qwik/hello_world/stylesheet/med.jsx +0 -4
- package/dist/test/qwik/mount/high.cjs +0 -0
- package/dist/test/qwik/mount/low.cjs +0 -47
- package/dist/test/qwik/mount/med.cjs +0 -3
- package/dist/test/qwik/page-with-symbol/high.js +0 -0
- package/dist/test/qwik/page-with-symbol/low.js +0 -33
- package/dist/test/qwik/page-with-symbol/med.js +0 -4
- package/dist/test/qwik/show-hide/high.jsx +0 -9
- package/dist/test/qwik/show-hide/low.jsx +0 -0
- package/dist/test/qwik/show-hide/med.jsx +0 -181
- package/dist/test/qwik/svg/high.js +0 -0
- package/dist/test/qwik/svg/low.js +0 -30
- package/dist/test/qwik/svg/med.js +0 -4
- package/dist/test/qwik/todo/Todo.cjs/high.cjs +0 -19
- package/dist/test/qwik/todo/Todo.cjs/low.cjs +0 -0
- package/dist/test/qwik/todo/Todo.cjs/med.cjs +0 -51
- package/dist/test/qwik/todo/Todo.js/high.js +0 -19
- package/dist/test/qwik/todo/Todo.js/low.js +0 -0
- package/dist/test/qwik/todo/Todo.js/med.js +0 -47
- package/dist/test/qwik/todo/Todo.tsx/high.tsx +0 -19
- package/dist/test/qwik/todo/Todo.tsx/low.tsx +0 -0
- package/dist/test/qwik/todo/Todo.tsx/med.tsx +0 -43
- package/dist/test/qwik/todos/Todo.tsx/high.tsx +0 -7
- package/dist/test/qwik/todos/Todo.tsx/low.tsx +0 -32
- package/dist/test/qwik/todos/Todo.tsx/med.tsx +0 -4
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -30,26 +30,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
30
30
|
exports.componentToSolid = void 0;
|
|
31
31
|
var dedent_1 = __importDefault(require("dedent"));
|
|
32
32
|
var standalone_1 = require("prettier/standalone");
|
|
33
|
-
var helpers_1 = require("
|
|
34
|
-
var get_refs_1 = require("
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var plugins_1 = require("
|
|
39
|
-
var fast_clone_1 = require("
|
|
40
|
-
var strip_meta_properties_1 = require("
|
|
41
|
-
var get_components_used_1 = require("
|
|
33
|
+
var helpers_1 = require("../../helpers/styles/helpers");
|
|
34
|
+
var get_refs_1 = require("../../helpers/get-refs");
|
|
35
|
+
var render_imports_1 = require("../../helpers/render-imports");
|
|
36
|
+
var jsx_1 = require("../../parsers/jsx");
|
|
37
|
+
var mitosis_node_1 = require("../../types/mitosis-node");
|
|
38
|
+
var plugins_1 = require("../../modules/plugins");
|
|
39
|
+
var fast_clone_1 = require("../../helpers/fast-clone");
|
|
40
|
+
var strip_meta_properties_1 = require("../../helpers/strip-meta-properties");
|
|
41
|
+
var get_components_used_1 = require("../../helpers/get-components-used");
|
|
42
42
|
var traverse_1 = __importDefault(require("traverse"));
|
|
43
|
-
var is_mitosis_node_1 = require("
|
|
44
|
-
var filter_empty_text_nodes_1 = require("
|
|
45
|
-
var create_mitosis_node_1 = require("
|
|
46
|
-
var context_1 = require("
|
|
47
|
-
var babel_transform_1 = require("
|
|
43
|
+
var is_mitosis_node_1 = require("../../helpers/is-mitosis-node");
|
|
44
|
+
var filter_empty_text_nodes_1 = require("../../helpers/filter-empty-text-nodes");
|
|
45
|
+
var create_mitosis_node_1 = require("../../helpers/create-mitosis-node");
|
|
46
|
+
var context_1 = require("../helpers/context");
|
|
47
|
+
var babel_transform_1 = require("../../helpers/babel-transform");
|
|
48
48
|
var core_1 = require("@babel/core");
|
|
49
49
|
var lodash_1 = require("lodash");
|
|
50
|
-
var state_1 = require("
|
|
51
|
-
var
|
|
50
|
+
var state_1 = require("./state");
|
|
51
|
+
var nullable_1 = require("../../helpers/nullable");
|
|
52
|
+
var get_state_object_string_1 = require("../../helpers/get-state-object-string");
|
|
53
|
+
var collect_css_1 = require("../../helpers/styles/collect-css");
|
|
52
54
|
var hash_sum_1 = __importDefault(require("hash-sum"));
|
|
55
|
+
var DEFAULT_OPTIONS = {
|
|
56
|
+
state: 'signals',
|
|
57
|
+
stylesType: 'styled-components',
|
|
58
|
+
};
|
|
53
59
|
// Transform <foo.bar key="value" /> to <component :is="foo.bar" key="value" />
|
|
54
60
|
function processDynamicComponents(json, options) {
|
|
55
61
|
var found = false;
|
|
@@ -114,22 +120,41 @@ var collectClassString = function (json, options) {
|
|
|
114
120
|
}
|
|
115
121
|
return null;
|
|
116
122
|
};
|
|
117
|
-
var
|
|
118
|
-
var _a,
|
|
119
|
-
|
|
123
|
+
var preProcessBlockCode = function (_a) {
|
|
124
|
+
var json = _a.json, options = _a.options, component = _a.component;
|
|
125
|
+
for (var key in json.properties) {
|
|
126
|
+
var value = json.properties[key];
|
|
127
|
+
if (value) {
|
|
128
|
+
json.properties[key] = (0, state_1.updateStateCode)({ options: options, component: component, updateSetters: false })(value);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
for (var key in json.bindings) {
|
|
132
|
+
var value = json.bindings[key];
|
|
133
|
+
if (value === null || value === void 0 ? void 0 : value.code) {
|
|
134
|
+
json.bindings[key] = {
|
|
135
|
+
arguments: value.arguments,
|
|
136
|
+
code: (0, state_1.updateStateCode)({ options: options, component: component, updateSetters: true })(value.code),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
var blockToSolid = function (_a) {
|
|
142
|
+
var _b, _c, _d;
|
|
143
|
+
var json = _a.json, options = _a.options, component = _a.component;
|
|
144
|
+
preProcessBlockCode({ json: json, options: options, component: component });
|
|
120
145
|
if (json.properties._text) {
|
|
121
146
|
return json.properties._text;
|
|
122
147
|
}
|
|
123
|
-
if ((
|
|
148
|
+
if ((_b = json.bindings._text) === null || _b === void 0 ? void 0 : _b.code) {
|
|
124
149
|
return "{".concat(json.bindings._text.code, "}");
|
|
125
150
|
}
|
|
126
|
-
if (
|
|
151
|
+
if ((0, mitosis_node_1.checkIsForNode)(json)) {
|
|
127
152
|
var needsWrapper = json.children.length !== 1;
|
|
128
153
|
// The SolidJS `<For>` component has a special index() signal function.
|
|
129
154
|
// https://www.solidjs.com/docs/latest#%3Cfor%3E
|
|
130
|
-
return "<For each={".concat((
|
|
155
|
+
return "<For each={".concat((_c = json.bindings.each) === null || _c === void 0 ? void 0 : _c.code, "}>\n {(").concat(json.scope.forName, ", _index) => {\n const ").concat(json.scope.indexName || 'index', " = _index();\n return ").concat(needsWrapper ? '<>' : '').concat(json.children
|
|
131
156
|
.filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
|
|
132
|
-
.map(function (child) { return blockToSolid(child, options); }), "}}\n ").concat(needsWrapper ? '</>' : '', "\n </For>");
|
|
157
|
+
.map(function (child) { return blockToSolid({ component: component, json: child, options: options }); }), "}}\n ").concat(needsWrapper ? '</>' : '', "\n </For>");
|
|
133
158
|
}
|
|
134
159
|
var str = '';
|
|
135
160
|
if (json.name === 'Fragment') {
|
|
@@ -139,13 +164,13 @@ var blockToSolid = function (json, options) {
|
|
|
139
164
|
str += "<".concat(json.name, " ");
|
|
140
165
|
}
|
|
141
166
|
if (json.name === 'Show' && json.meta.else) {
|
|
142
|
-
str += "fallback={".concat(blockToSolid(json.meta.else, options), "}");
|
|
167
|
+
str += "fallback={".concat(blockToSolid({ component: component, json: json.meta.else, options: options }), "}");
|
|
143
168
|
}
|
|
144
169
|
var classString = collectClassString(json, options);
|
|
145
170
|
if (classString) {
|
|
146
171
|
str += " class=".concat(classString, " ");
|
|
147
172
|
}
|
|
148
|
-
if ((
|
|
173
|
+
if ((_d = json.bindings._spread) === null || _d === void 0 ? void 0 : _d.code) {
|
|
149
174
|
str += " {...(".concat(json.bindings._spread.code, ")} ");
|
|
150
175
|
}
|
|
151
176
|
for (var key in json.properties) {
|
|
@@ -153,7 +178,7 @@ var blockToSolid = function (json, options) {
|
|
|
153
178
|
str += " ".concat(key, "=\"").concat(value, "\" ");
|
|
154
179
|
}
|
|
155
180
|
for (var key in json.bindings) {
|
|
156
|
-
var
|
|
181
|
+
var _e = json.bindings[key], code = _e.code, _f = _e.arguments, cusArg = _f === void 0 ? ['event'] : _f;
|
|
157
182
|
if (key === '_spread' || key === '_forName') {
|
|
158
183
|
continue;
|
|
159
184
|
}
|
|
@@ -198,7 +223,7 @@ var blockToSolid = function (json, options) {
|
|
|
198
223
|
if (json.children) {
|
|
199
224
|
str += json.children
|
|
200
225
|
.filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
|
|
201
|
-
.map(function (item) { return blockToSolid(item, options); })
|
|
226
|
+
.map(function (item) { return blockToSolid({ component: component, json: item, options: options }); })
|
|
202
227
|
.join('\n');
|
|
203
228
|
}
|
|
204
229
|
if (json.name === 'Fragment') {
|
|
@@ -226,12 +251,28 @@ function addProviderComponents(json, options) {
|
|
|
226
251
|
];
|
|
227
252
|
}
|
|
228
253
|
}
|
|
229
|
-
var
|
|
230
|
-
|
|
254
|
+
var preProcessComponentCode = function (json, options) {
|
|
255
|
+
var _a;
|
|
256
|
+
var processCode = (0, state_1.updateStateCode)({ options: options, component: json });
|
|
257
|
+
if ((_a = json.hooks.onMount) === null || _a === void 0 ? void 0 : _a.code) {
|
|
258
|
+
json.hooks.onMount.code = processCode(json.hooks.onMount.code);
|
|
259
|
+
}
|
|
260
|
+
if (json.hooks.onUpdate) {
|
|
261
|
+
for (var _i = 0, _b = json.hooks.onUpdate; _i < _b.length; _i++) {
|
|
262
|
+
var hook = _b[_i];
|
|
263
|
+
hook.code = processCode(hook.code);
|
|
264
|
+
if (hook.deps) {
|
|
265
|
+
hook.deps = processCode(hook.deps);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
var componentToSolid = function (passedOptions) {
|
|
271
|
+
if (passedOptions === void 0) { passedOptions = DEFAULT_OPTIONS; }
|
|
231
272
|
return function (_a) {
|
|
232
|
-
var _b, _c, _d;
|
|
273
|
+
var _b, _c, _d, _e, _f, _g;
|
|
233
274
|
var component = _a.component;
|
|
234
|
-
var options = __assign({
|
|
275
|
+
var options = __assign(__assign({}, DEFAULT_OPTIONS), passedOptions);
|
|
235
276
|
var json = (0, fast_clone_1.fastClone)(component);
|
|
236
277
|
if (options.plugins) {
|
|
237
278
|
json = (0, plugins_1.runPreJsonPlugins)(json, options.plugins);
|
|
@@ -242,29 +283,28 @@ var componentToSolid = function (_options) {
|
|
|
242
283
|
if (options.plugins) {
|
|
243
284
|
json = (0, plugins_1.runPostJsonPlugins)(json, options.plugins);
|
|
244
285
|
}
|
|
286
|
+
preProcessComponentCode(json, options);
|
|
245
287
|
(0, strip_meta_properties_1.stripMetaProperties)(json);
|
|
246
288
|
var foundDynamicComponents = processDynamicComponents(json, options);
|
|
247
289
|
var css = options.stylesType === 'style-tag' &&
|
|
248
290
|
(0, collect_css_1.collectCss)(json, {
|
|
249
291
|
prefix: (0, hash_sum_1.default)(json),
|
|
250
292
|
});
|
|
251
|
-
var
|
|
252
|
-
var hasState = (0, state_1.checkHasState)(json);
|
|
293
|
+
var state = (0, state_1.getState)({ json: json, options: options });
|
|
253
294
|
var componentsUsed = (0, get_components_used_1.getComponentsUsed)(json);
|
|
254
295
|
var componentHasContext = (0, context_1.hasContext)(json);
|
|
255
296
|
var hasShowComponent = componentsUsed.has('Show');
|
|
256
297
|
var hasForComponent = componentsUsed.has('For');
|
|
257
|
-
var solidJSImports = __spreadArray([
|
|
298
|
+
var solidJSImports = __spreadArray(__spreadArray([
|
|
258
299
|
componentHasContext ? 'useContext' : undefined,
|
|
259
300
|
hasShowComponent ? 'Show' : undefined,
|
|
260
301
|
hasForComponent ? 'For' : undefined,
|
|
261
302
|
((_b = json.hooks.onMount) === null || _b === void 0 ? void 0 : _b.code) ? 'onMount' : undefined
|
|
262
|
-
], (((_c = json.hooks.onUpdate) === null || _c === void 0 ? void 0 : _c.length) ? ['on', 'createEffect'] : []), true).filter(
|
|
263
|
-
var
|
|
264
|
-
|
|
265
|
-
: '', !foundDynamicComponents ? '' : "import { Dynamic } from 'solid-js/web';", !hasState ? '' : "import { createMutable } from 'solid-js/store';", !componentHasStyles && options.stylesType === 'styled-components'
|
|
303
|
+
], (((_c = json.hooks.onUpdate) === null || _c === void 0 ? void 0 : _c.length) ? ['on', 'createEffect'] : []), true), ((_d = state === null || state === void 0 ? void 0 : state.import.solidjs) !== null && _d !== void 0 ? _d : []), true).filter(nullable_1.checkIsDefined);
|
|
304
|
+
var storeImports = (_e = state === null || state === void 0 ? void 0 : state.import.store) !== null && _e !== void 0 ? _e : [];
|
|
305
|
+
var str = (0, dedent_1.default)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", "\n ", "\n ", "\n ", "\n ", "\n\n function ", "(props) {\n ", "\n \n ", "\n ", "\n\n ", "\n ", "\n\n return (", "\n ", "\n ", "\n ", ")\n }\n\n export default ", ";\n "], ["\n ", "\n ", "\n ", "\n ", "\n ", "\n\n function ", "(props) {\n ", "\n \n ", "\n ", "\n\n ", "\n ", "\n\n return (", "\n ", "\n ", "\n ", ")\n }\n\n export default ", ";\n "])), solidJSImports.length > 0 ? "import { ".concat(solidJSImports.join(', '), " } from 'solid-js';") : '', !foundDynamicComponents ? '' : "import { Dynamic } from 'solid-js/web';", storeImports.length > 0 ? "import { ".concat(storeImports.join(', '), " } from 'solid-js/store';") : '', !componentHasStyles && options.stylesType === 'styled-components'
|
|
266
306
|
? ''
|
|
267
|
-
: "import { css } from \"solid-styled-components\";", (0, render_imports_1.renderPreComponent)({ component: json, target: 'solid' }), json.name,
|
|
307
|
+
: "import { css } from \"solid-styled-components\";", (0, render_imports_1.renderPreComponent)({ component: json, target: 'solid' }), json.name, (_f = state === null || state === void 0 ? void 0 : state.str) !== null && _f !== void 0 ? _f : '', getRefsString(json), getContextString(json, options), !((_g = json.hooks.onMount) === null || _g === void 0 ? void 0 : _g.code) ? '' : "onMount(() => { ".concat(json.hooks.onMount.code, " })"), json.hooks.onUpdate
|
|
268
308
|
? json.hooks.onUpdate
|
|
269
309
|
.map(function (hook, index) {
|
|
270
310
|
if (hook.deps) {
|
|
@@ -279,7 +319,7 @@ var componentToSolid = function (_options) {
|
|
|
279
319
|
.join('\n')
|
|
280
320
|
: '', addWrapper ? '<>' : '', json.children
|
|
281
321
|
.filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
|
|
282
|
-
.map(function (item) { return blockToSolid(item, options); })
|
|
322
|
+
.map(function (item) { return blockToSolid({ component: component, json: item, options: options }); })
|
|
283
323
|
.join('\n'), options.stylesType === 'style-tag' && css && css.trim().length > 4
|
|
284
324
|
? // We add the jsx attribute so prettier formats this nicely
|
|
285
325
|
"<style jsx>{`".concat(css, "`}</style>")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MitosisComponent } from '../../types/mitosis-component';
|
|
2
|
+
import { ToSolidOptions } from './types';
|
|
3
|
+
declare type State = {
|
|
4
|
+
str: string;
|
|
5
|
+
import: {
|
|
6
|
+
store?: [string];
|
|
7
|
+
solidjs?: [string];
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export declare const updateStateCode: ({ options, component, updateSetters, }: {
|
|
11
|
+
options: ToSolidOptions;
|
|
12
|
+
component: MitosisComponent;
|
|
13
|
+
updateSetters?: boolean | undefined;
|
|
14
|
+
}) => (value: string) => string;
|
|
15
|
+
export declare const getState: ({ json, options, }: {
|
|
16
|
+
json: MitosisComponent;
|
|
17
|
+
options: ToSolidOptions;
|
|
18
|
+
}) => State | undefined;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getState = exports.updateStateCode = void 0;
|
|
7
|
+
var core_1 = require("@babel/core");
|
|
8
|
+
var json5_1 = __importDefault(require("json5"));
|
|
9
|
+
var strip_state_and_props_refs_1 = require("../../helpers/strip-state-and-props-refs");
|
|
10
|
+
var babel_transform_1 = require("../../helpers/babel-transform");
|
|
11
|
+
var capitalize_1 = require("../../helpers/capitalize");
|
|
12
|
+
var get_state_object_string_1 = require("../../helpers/get-state-object-string");
|
|
13
|
+
var function_1 = require("fp-ts/lib/function");
|
|
14
|
+
var state_1 = require("../../helpers/state");
|
|
15
|
+
var patterns_1 = require("../../helpers/patterns");
|
|
16
|
+
var getStateSetterName = function (stateName) { return "set".concat((0, capitalize_1.capitalize)(stateName)); };
|
|
17
|
+
var updateStateSettersInCode = function (options) { return function (value) {
|
|
18
|
+
switch (options.state) {
|
|
19
|
+
case 'mutable':
|
|
20
|
+
return value;
|
|
21
|
+
case 'signals':
|
|
22
|
+
try {
|
|
23
|
+
return (0, babel_transform_1.babelTransformExpression)(value, {
|
|
24
|
+
AssignmentExpression: function (path) {
|
|
25
|
+
var node = path.node;
|
|
26
|
+
if (core_1.types.isMemberExpression(node.left)) {
|
|
27
|
+
if (core_1.types.isIdentifier(node.left.object)) {
|
|
28
|
+
// TODO: utillity to properly trace this reference to the beginning
|
|
29
|
+
if (node.left.object.name === 'state') {
|
|
30
|
+
// TODO: ultimately support other property access like strings
|
|
31
|
+
var propertyName = node.left.property.name;
|
|
32
|
+
path.replaceWith(core_1.types.callExpression(core_1.types.identifier(getStateSetterName(propertyName)), [
|
|
33
|
+
node.right,
|
|
34
|
+
]));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.log('[Solid.js]: could not update state setters in signals code', value);
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}; };
|
|
47
|
+
var updateStateGettersInCode = function (options, component) { return function (value) {
|
|
48
|
+
switch (options.state) {
|
|
49
|
+
case 'mutable':
|
|
50
|
+
return value;
|
|
51
|
+
case 'signals':
|
|
52
|
+
return (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(value, {
|
|
53
|
+
includeState: true,
|
|
54
|
+
includeProps: false,
|
|
55
|
+
replaceWith: function (name) {
|
|
56
|
+
var state = component.state[name];
|
|
57
|
+
if (options.state === 'signals' &&
|
|
58
|
+
// signal accessors are lazy, so we need to add a function call to property calls
|
|
59
|
+
((state === null || state === void 0 ? void 0 : state.type) === 'property' ||
|
|
60
|
+
// getters become plain functions, requiring a function call to access their value
|
|
61
|
+
(state === null || state === void 0 ? void 0 : state.type) === 'getter')) {
|
|
62
|
+
return "".concat(name, "()");
|
|
63
|
+
}
|
|
64
|
+
return name;
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}; };
|
|
69
|
+
var updateStateCode = function (_a) {
|
|
70
|
+
var options = _a.options, component = _a.component, _b = _a.updateSetters, updateSetters = _b === void 0 ? true : _b;
|
|
71
|
+
return (0, function_1.flow)(updateSetters ? updateStateSettersInCode(options) : function_1.identity, updateStateGettersInCode(options, component), function (x) { return x.trim(); });
|
|
72
|
+
};
|
|
73
|
+
exports.updateStateCode = updateStateCode;
|
|
74
|
+
var processStateValue = function (_a) {
|
|
75
|
+
var options = _a.options, component = _a.component;
|
|
76
|
+
var mapValue = (0, exports.updateStateCode)({ options: options, component: component });
|
|
77
|
+
return function (_a) {
|
|
78
|
+
var key = _a[0], stateVal = _a[1];
|
|
79
|
+
var getDefaultCase = function () {
|
|
80
|
+
return (0, function_1.pipe)(value, json5_1.default.stringify, mapValue, function (x) { return "const [".concat(key, ", ").concat(getStateSetterName(key), "] = createSignal(").concat(x, ")"); });
|
|
81
|
+
};
|
|
82
|
+
var value = stateVal === null || stateVal === void 0 ? void 0 : stateVal.code;
|
|
83
|
+
var type = stateVal === null || stateVal === void 0 ? void 0 : stateVal.type;
|
|
84
|
+
if (typeof value === 'string') {
|
|
85
|
+
switch (type) {
|
|
86
|
+
case 'getter':
|
|
87
|
+
return (0, function_1.pipe)(value, patterns_1.replaceGetterWithFunction, mapValue);
|
|
88
|
+
case 'function':
|
|
89
|
+
return mapValue(value);
|
|
90
|
+
case 'method':
|
|
91
|
+
return (0, function_1.pipe)(value, patterns_1.prefixWithFunction, mapValue);
|
|
92
|
+
default:
|
|
93
|
+
return getDefaultCase();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return getDefaultCase();
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
var LINE_ITEM_DELIMITER = '\n\n\n';
|
|
102
|
+
var getSignalsCode = function (_a) {
|
|
103
|
+
var json = _a.json, options = _a.options;
|
|
104
|
+
return Object.entries(json.state)
|
|
105
|
+
.map(processStateValue({ options: options, component: json }))
|
|
106
|
+
/**
|
|
107
|
+
* We need to sort state so that signals are at the top.
|
|
108
|
+
*/
|
|
109
|
+
.sort(function (a, b) {
|
|
110
|
+
var aHasSignal = a.includes('createSignal(');
|
|
111
|
+
var bHasSignal = b.includes('createSignal(');
|
|
112
|
+
if (aHasSignal && !bHasSignal) {
|
|
113
|
+
return -1;
|
|
114
|
+
}
|
|
115
|
+
else if (!aHasSignal && bHasSignal) {
|
|
116
|
+
return 1;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
return 0;
|
|
120
|
+
}
|
|
121
|
+
})
|
|
122
|
+
.join(LINE_ITEM_DELIMITER);
|
|
123
|
+
};
|
|
124
|
+
var getState = function (_a) {
|
|
125
|
+
var json = _a.json, options = _a.options;
|
|
126
|
+
var hasState = (0, state_1.checkHasState)(json);
|
|
127
|
+
if (!hasState) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
switch (options.state) {
|
|
131
|
+
case 'mutable':
|
|
132
|
+
var stateString = (0, function_1.pipe)((0, get_state_object_string_1.getStateObjectStringFromComponent)(json), function (str) { return "const state = createMutable(".concat(str, ");"); });
|
|
133
|
+
return {
|
|
134
|
+
str: stateString,
|
|
135
|
+
import: { store: ['createMutable'] },
|
|
136
|
+
};
|
|
137
|
+
case 'signals':
|
|
138
|
+
return {
|
|
139
|
+
str: getSignalsCode({ json: json, options: options }),
|
|
140
|
+
import: { solidjs: ['createSignal'] },
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
exports.getState = getState;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseTranspilerOptions,
|
|
1
|
+
import { BaseTranspilerOptions, TranspilerGenerator } from '../../types/transpiler';
|
|
2
2
|
export interface ToStencilOptions extends BaseTranspilerOptions {
|
|
3
3
|
}
|
|
4
|
-
export declare const componentToStencil:
|
|
4
|
+
export declare const componentToStencil: TranspilerGenerator<ToStencilOptions>;
|
|
@@ -13,6 +13,7 @@ var standalone_1 = require("prettier/standalone");
|
|
|
13
13
|
var get_state_object_string_1 = require("../../helpers/get-state-object-string");
|
|
14
14
|
var render_imports_1 = require("../../helpers/render-imports");
|
|
15
15
|
var jsx_1 = require("../../parsers/jsx");
|
|
16
|
+
var mitosis_node_1 = require("../../types/mitosis-node");
|
|
16
17
|
var plugins_1 = require("../../modules/plugins");
|
|
17
18
|
var fast_clone_1 = require("../../helpers/fast-clone");
|
|
18
19
|
var strip_meta_properties_1 = require("../../helpers/strip-meta-properties");
|
|
@@ -24,6 +25,7 @@ var dash_case_1 = require("../../helpers/dash-case");
|
|
|
24
25
|
var collect_css_1 = require("../../helpers/styles/collect-css");
|
|
25
26
|
var indent_1 = require("../../helpers/indent");
|
|
26
27
|
var map_refs_1 = require("../../helpers/map-refs");
|
|
28
|
+
var for_1 = require("../../helpers/nodes/for");
|
|
27
29
|
var blockToStencil = function (json, options) {
|
|
28
30
|
var _a, _b, _c, _d, _e;
|
|
29
31
|
if (options === void 0) { options = {}; }
|
|
@@ -33,9 +35,10 @@ var blockToStencil = function (json, options) {
|
|
|
33
35
|
if ((_a = json.bindings._text) === null || _a === void 0 ? void 0 : _a.code) {
|
|
34
36
|
return "{".concat(processBinding((_b = json.bindings) === null || _b === void 0 ? void 0 : _b._text.code), "}");
|
|
35
37
|
}
|
|
36
|
-
if (
|
|
38
|
+
if ((0, mitosis_node_1.checkIsForNode)(json)) {
|
|
37
39
|
var wrap = json.children.length !== 1;
|
|
38
|
-
|
|
40
|
+
var forArgs = (0, for_1.getForArguments)(json).join(', ');
|
|
41
|
+
return "{".concat(processBinding((_c = json.bindings.each) === null || _c === void 0 ? void 0 : _c.code), "?.map((").concat(forArgs, ") => (\n ").concat(wrap ? '<>' : '').concat(json.children
|
|
39
42
|
.filter(filter_empty_text_nodes_1.filterEmptyTextNodes)
|
|
40
43
|
.map(function (item) { return blockToStencil(item, options); })
|
|
41
44
|
.join('\n')).concat(wrap ? '</>' : '', "\n ))}");
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { MitosisComponent } from '../types/mitosis-component';
|
|
2
|
-
import { MitosisNode } from '../types/mitosis-node';
|
|
3
|
-
import { BaseTranspilerOptions,
|
|
2
|
+
import { BaseNode, MitosisNode } from '../types/mitosis-node';
|
|
3
|
+
import { BaseTranspilerOptions, TranspilerGenerator } from '../types/transpiler';
|
|
4
4
|
export interface ToSvelteOptions extends BaseTranspilerOptions {
|
|
5
5
|
stateType?: 'proxies' | 'variables';
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
json:
|
|
7
|
+
declare type BlockToSvelte<T extends BaseNode = MitosisNode> = (props: {
|
|
8
|
+
json: T;
|
|
9
9
|
options: ToSvelteOptions;
|
|
10
10
|
parentComponent: MitosisComponent;
|
|
11
|
-
}
|
|
12
|
-
declare type BlockToSvelte = (props: BlockToSvelteProps) => string;
|
|
11
|
+
}) => string;
|
|
13
12
|
export declare const blockToSvelte: BlockToSvelte;
|
|
14
|
-
export declare const componentToSvelte:
|
|
13
|
+
export declare const componentToSvelte: TranspilerGenerator<ToSvelteOptions>;
|
|
15
14
|
export {};
|