@builder.io/mitosis 0.4.0 → 0.4.2
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/constants/media-sizes.js +4 -5
- package/dist/src/generators/alpine/generate.js +114 -132
- package/dist/src/generators/alpine/render-mount-hook.js +8 -5
- package/dist/src/generators/alpine/render-update-hooks.js +13 -13
- package/dist/src/generators/angular/helpers.js +19 -9
- package/dist/src/generators/angular/index.js +599 -584
- package/dist/src/generators/builder.js +200 -165
- package/dist/src/generators/context/angular.js +32 -26
- package/dist/src/generators/context/helpers/context-with-symbol-key.js +25 -21
- package/dist/src/generators/context/qwik.js +21 -21
- package/dist/src/generators/context/react.js +22 -22
- package/dist/src/generators/context/rsc.js +20 -22
- package/dist/src/generators/context/solid.js +22 -22
- package/dist/src/generators/context/svelte.js +33 -28
- package/dist/src/generators/context/vue.js +1 -1
- package/dist/src/generators/helpers/context.js +6 -13
- package/dist/src/generators/helpers/functions.js +8 -8
- package/dist/src/generators/helpers/on-mount.js +9 -5
- package/dist/src/generators/helpers/rsc.js +7 -9
- package/dist/src/generators/html.js +995 -534
- package/dist/src/generators/liquid.js +81 -79
- package/dist/src/generators/lit/collect-class-string.js +10 -12
- package/dist/src/generators/lit/generate.js +204 -159
- package/dist/src/generators/marko/generate.js +193 -183
- package/dist/src/generators/minify.js +5 -9
- package/dist/src/generators/mitosis.js +135 -134
- package/dist/src/generators/qwik/component-generator.js +159 -154
- package/dist/src/generators/qwik/component.js +51 -81
- package/dist/src/generators/qwik/directives.js +68 -84
- package/dist/src/generators/qwik/helpers/add-prevent-default.js +6 -7
- package/dist/src/generators/qwik/helpers/convert-method-to-function.js +38 -38
- package/dist/src/generators/qwik/helpers/handlers.js +16 -25
- package/dist/src/generators/qwik/helpers/stable-inject.js +7 -8
- package/dist/src/generators/qwik/helpers/stable-serialize.js +7 -8
- package/dist/src/generators/qwik/helpers/state.js +36 -43
- package/dist/src/generators/qwik/helpers/styles.js +19 -40
- package/dist/src/generators/qwik/jsx.js +63 -75
- package/dist/src/generators/qwik/src-generator.js +134 -167
- package/dist/src/generators/react/blocks.js +122 -127
- package/dist/src/generators/react/generator.js +314 -259
- package/dist/src/generators/react/helpers.js +23 -28
- package/dist/src/generators/react/state.js +34 -51
- package/dist/src/generators/react-native/index.js +72 -84
- package/dist/src/generators/react-native/sanitize-react-native-block-styles.js +14 -26
- package/dist/src/generators/rsc.js +30 -36
- package/dist/src/generators/solid/blocks.js +46 -43
- package/dist/src/generators/solid/helpers/styles.js +11 -11
- package/dist/src/generators/solid/index.js +199 -190
- package/dist/src/generators/solid/state/helpers.js +76 -90
- package/dist/src/generators/solid/state/signals.js +30 -37
- package/dist/src/generators/solid/state/state.js +35 -48
- package/dist/src/generators/solid/state/store.js +40 -46
- package/dist/src/generators/stencil/collect-class-string.js +10 -12
- package/dist/src/generators/stencil/generate.js +158 -145
- package/dist/src/generators/svelte/blocks.js +146 -144
- package/dist/src/generators/svelte/helpers.js +10 -17
- package/dist/src/generators/svelte/svelte.js +321 -287
- package/dist/src/generators/swift-ui.js +162 -101
- package/dist/src/generators/taro.js +32 -36
- package/dist/src/generators/template.js +71 -74
- package/dist/src/generators/vue/blocks.js +116 -107
- package/dist/src/generators/vue/compositionApi.js +67 -50
- package/dist/src/generators/vue/helpers.js +71 -96
- package/dist/src/generators/vue/optionsApi.js +134 -105
- package/dist/src/generators/vue/vue.js +210 -207
- package/dist/src/helpers/babel-transform.js +40 -63
- package/dist/src/helpers/bindings.js +4 -12
- package/dist/src/helpers/camel-case.js +4 -5
- package/dist/src/helpers/capitalize.js +1 -1
- package/dist/src/helpers/component-file-extensions.js +23 -35
- package/dist/src/helpers/create-mitosis-component.js +22 -26
- package/dist/src/helpers/create-mitosis-context.js +5 -12
- package/dist/src/helpers/create-mitosis-node.js +10 -12
- package/dist/src/helpers/dash-case.js +2 -2
- package/dist/src/helpers/dedent.js +18 -22
- package/dist/src/helpers/event-handlers.js +1 -1
- package/dist/src/helpers/fast-clone.js +1 -1
- package/dist/src/helpers/filter-empty-text-nodes.js +2 -2
- package/dist/src/helpers/generic-format.js +7 -8
- package/dist/src/helpers/get-bindings.js +4 -4
- package/dist/src/helpers/get-components-used.js +3 -3
- package/dist/src/helpers/get-components.js +4 -4
- package/dist/src/helpers/get-custom-imports.js +10 -12
- package/dist/src/helpers/get-prop-functions.js +7 -8
- package/dist/src/helpers/get-props-ref.js +8 -8
- package/dist/src/helpers/get-props.js +12 -13
- package/dist/src/helpers/get-refs.js +4 -4
- package/dist/src/helpers/get-state-object-string.js +42 -61
- package/dist/src/helpers/get-state-used.js +7 -8
- package/dist/src/helpers/get-styles.js +6 -6
- package/dist/src/helpers/getters-to-functions.js +8 -12
- package/dist/src/helpers/handle-missing-state.js +3 -3
- package/dist/src/helpers/has-bindings-text.js +6 -6
- package/dist/src/helpers/has-component.js +4 -4
- package/dist/src/helpers/has-props.js +3 -3
- package/dist/src/helpers/has-stateful-dom.js +4 -4
- package/dist/src/helpers/has.js +3 -3
- package/dist/src/helpers/indent.js +2 -3
- package/dist/src/helpers/is-children.js +4 -5
- package/dist/src/helpers/is-component.js +1 -1
- package/dist/src/helpers/is-html-attribute.js +2 -11
- package/dist/src/helpers/is-mitosis-node.js +1 -1
- package/dist/src/helpers/is-root-text-node.js +1 -1
- package/dist/src/helpers/is-upper-case.js +1 -1
- package/dist/src/helpers/is-valid-attribute-name.js +1 -1
- package/dist/src/helpers/json.js +2 -2
- package/dist/src/helpers/map-refs.js +29 -40
- package/dist/src/helpers/merge-options.js +20 -31
- package/dist/src/helpers/mitosis-imports.js +5 -6
- package/dist/src/helpers/nodes/for.js +2 -3
- package/dist/src/helpers/nullable.js +1 -3
- package/dist/src/helpers/on-event.js +32 -36
- package/dist/src/helpers/output.js +4 -5
- package/dist/src/helpers/parse-node.js +13 -5
- package/dist/src/helpers/parsers.js +10 -14
- package/dist/src/helpers/patterns.js +6 -8
- package/dist/src/helpers/plugins/process-code/index.js +114 -120
- package/dist/src/helpers/plugins/process-signals.js +114 -125
- package/dist/src/helpers/plugins/process-target-blocks.js +18 -20
- package/dist/src/helpers/process-http-requests.js +8 -4
- package/dist/src/helpers/remove-surrounding-block.js +2 -2
- package/dist/src/helpers/render-imports.js +99 -111
- package/dist/src/helpers/replace-identifiers.js +40 -49
- package/dist/src/helpers/replace-new-lines-in-strings.js +3 -3
- package/dist/src/helpers/signals/signals.js +27 -35
- package/dist/src/helpers/slots.js +11 -20
- package/dist/src/helpers/state.js +1 -3
- package/dist/src/helpers/strip-meta-properties.js +6 -6
- package/dist/src/helpers/strip-state-and-props-refs.js +21 -32
- package/dist/src/helpers/styles/collect-css.js +39 -44
- package/dist/src/helpers/styles/collect-styled-components.js +30 -28
- package/dist/src/helpers/styles/helpers.js +23 -29
- package/dist/src/helpers/trace-reference-to-module-path.js +3 -4
- package/dist/src/helpers/transform-state-setters.js +16 -19
- package/dist/src/helpers/traverse-nodes.js +2 -2
- package/dist/src/helpers/try-prettier-format.js +3 -3
- package/dist/src/helpers/typescript-project.js +25 -25
- package/dist/src/helpers/typescript.js +1 -3
- package/dist/src/modules/plugins.js +20 -28
- package/dist/src/parsers/angular.js +49 -57
- package/dist/src/parsers/builder/builder.js +448 -343
- package/dist/src/parsers/builder/helpers.js +10 -10
- package/dist/src/parsers/context.js +15 -17
- package/dist/src/parsers/jsx/ast.js +11 -11
- package/dist/src/parsers/jsx/component-types.js +22 -32
- package/dist/src/parsers/jsx/context.js +12 -12
- package/dist/src/parsers/jsx/element-parser.js +43 -54
- package/dist/src/parsers/jsx/exports.js +12 -14
- package/dist/src/parsers/jsx/function-parser.js +108 -119
- package/dist/src/parsers/jsx/helpers.js +11 -13
- package/dist/src/parsers/jsx/hooks/helpers.js +14 -16
- package/dist/src/parsers/jsx/hooks/index.js +34 -44
- package/dist/src/parsers/jsx/hooks/use-target.js +27 -27
- package/dist/src/parsers/jsx/imports.js +7 -17
- package/dist/src/parsers/jsx/jsx.js +92 -91
- package/dist/src/parsers/jsx/props-types.js +8 -10
- package/dist/src/parsers/jsx/props.js +15 -23
- package/dist/src/parsers/jsx/signals.js +28 -29
- package/dist/src/parsers/jsx/state.d.ts +2 -4
- package/dist/src/parsers/jsx/state.js +59 -93
- package/dist/src/parsers/svelte/css/index.js +1 -1
- package/dist/src/parsers/svelte/helpers/bindings.js +18 -19
- package/dist/src/parsers/svelte/helpers/children.js +5 -6
- package/dist/src/parsers/svelte/helpers/expressions.js +7 -9
- package/dist/src/parsers/svelte/helpers/hooks.js +2 -2
- package/dist/src/parsers/svelte/helpers/post-process.js +49 -70
- package/dist/src/parsers/svelte/helpers/string.js +5 -5
- package/dist/src/parsers/svelte/html/actions.js +17 -10
- package/dist/src/parsers/svelte/html/each.js +11 -16
- package/dist/src/parsers/svelte/html/element.js +68 -78
- package/dist/src/parsers/svelte/html/fragment.js +3 -3
- package/dist/src/parsers/svelte/html/if-else.js +11 -18
- package/dist/src/parsers/svelte/html/index.js +14 -14
- package/dist/src/parsers/svelte/html/mustache-tag.js +5 -5
- package/dist/src/parsers/svelte/html/slot.js +5 -5
- package/dist/src/parsers/svelte/html/text.js +7 -14
- package/dist/src/parsers/svelte/index.js +23 -72
- package/dist/src/parsers/svelte/instance/context.js +17 -17
- package/dist/src/parsers/svelte/instance/expressions.js +2 -2
- package/dist/src/parsers/svelte/instance/functions.js +35 -30
- package/dist/src/parsers/svelte/instance/hooks.js +4 -5
- package/dist/src/parsers/svelte/instance/imports.js +11 -21
- package/dist/src/parsers/svelte/instance/index.js +22 -22
- package/dist/src/parsers/svelte/instance/properties.js +11 -23
- package/dist/src/parsers/svelte/instance/reactive.js +11 -11
- package/dist/src/parsers/svelte/instance/references.js +13 -13
- package/dist/src/parsers/svelte/instance/statements.js +3 -3
- package/dist/src/parsers/svelte/module/index.js +14 -26
- package/dist/src/parsers/svelte/typescript/index.js +27 -36
- package/dist/src/plugins/compile-away-builder-components.js +223 -156
- package/dist/src/plugins/compile-away-components.js +13 -21
- package/dist/src/plugins/map-styles.js +7 -7
- package/dist/src/symbols/symbol-processor.js +44 -62
- package/dist/src/targets.js +19 -19
- package/dist/src/types/mitosis-node.js +1 -1
- package/package.json +1 -1
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
3
|
if (k2 === undefined) k2 = k;
|
|
15
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -33,62 +22,56 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
22
|
__setModuleDefault(result, mod);
|
|
34
23
|
return result;
|
|
35
24
|
};
|
|
36
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
37
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
38
|
-
if (ar || !(i in from)) {
|
|
39
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
40
|
-
ar[i] = from[i];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
44
|
-
};
|
|
45
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
27
|
};
|
|
48
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
29
|
exports.builderContentToMitosisComponent = exports.isBuilderElement = exports.createBuilderElement = exports.convertExportDefaultToReturn = exports.extractStateHook = exports.getMetaFromBlock = exports.builderElementToMitosisNode = exports.symbolBlocksAsChildren = void 0;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
30
|
+
const symbol_processor_1 = require("../../symbols/symbol-processor");
|
|
31
|
+
const babel = __importStar(require("@babel/core"));
|
|
32
|
+
const generator_1 = __importDefault(require("@babel/generator"));
|
|
33
|
+
const json5_1 = __importDefault(require("json5"));
|
|
34
|
+
const lodash_1 = require("lodash");
|
|
35
|
+
const legacy_1 = __importDefault(require("neotraverse/legacy"));
|
|
36
|
+
const media_sizes_1 = require("../../constants/media-sizes");
|
|
37
|
+
const bindings_1 = require("../../helpers/bindings");
|
|
38
|
+
const capitalize_1 = require("../../helpers/capitalize");
|
|
39
|
+
const create_mitosis_component_1 = require("../../helpers/create-mitosis-component");
|
|
40
|
+
const create_mitosis_node_1 = require("../../helpers/create-mitosis-node");
|
|
41
|
+
const fast_clone_1 = require("../../helpers/fast-clone");
|
|
42
|
+
const parsers_1 = require("../../helpers/parsers");
|
|
43
|
+
const jsx_1 = require("../jsx");
|
|
44
|
+
const state_1 = require("../jsx/state");
|
|
45
|
+
const helpers_1 = require("./helpers");
|
|
66
46
|
// Omit some superflous styles that can come from Builder's web importer
|
|
67
|
-
|
|
47
|
+
const styleOmitList = [
|
|
68
48
|
'backgroundRepeatX',
|
|
69
49
|
'backgroundRepeatY',
|
|
70
50
|
'backgroundPositionX',
|
|
71
51
|
'backgroundPositionY',
|
|
72
52
|
];
|
|
73
|
-
|
|
53
|
+
const getCssFromBlock = (block) => {
|
|
74
54
|
var _a;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
var css = {};
|
|
79
|
-
for (var _i = 0, blockSizes_1 = blockSizes; _i < blockSizes_1.length; _i++) {
|
|
80
|
-
var size = blockSizes_1[_i];
|
|
55
|
+
const blockSizes = Object.keys(block.responsiveStyles || {}).filter((size) => media_sizes_1.sizeNames.includes(size));
|
|
56
|
+
let css = {};
|
|
57
|
+
for (const size of blockSizes) {
|
|
81
58
|
if (size === 'large') {
|
|
82
|
-
css = (0, lodash_1.omit)(
|
|
59
|
+
css = (0, lodash_1.omit)({
|
|
60
|
+
...css,
|
|
61
|
+
...(_a = block.responsiveStyles) === null || _a === void 0 ? void 0 : _a.large,
|
|
62
|
+
}, styleOmitList);
|
|
83
63
|
}
|
|
84
64
|
else if (block.responsiveStyles && block.responsiveStyles[size]) {
|
|
85
|
-
|
|
86
|
-
css[mediaQueryKey] = (0, lodash_1.omit)(
|
|
65
|
+
const mediaQueryKey = `@media (max-width: ${media_sizes_1.sizes[size].max}px)`;
|
|
66
|
+
css[mediaQueryKey] = (0, lodash_1.omit)({
|
|
67
|
+
...css[mediaQueryKey],
|
|
68
|
+
...block.responsiveStyles[size],
|
|
69
|
+
}, styleOmitList);
|
|
87
70
|
}
|
|
88
71
|
}
|
|
89
72
|
return css;
|
|
90
73
|
};
|
|
91
|
-
|
|
74
|
+
const verifyIsValid = (code) => {
|
|
92
75
|
try {
|
|
93
76
|
if (babel.parse(code)) {
|
|
94
77
|
return { valid: true, error: null };
|
|
@@ -99,71 +82,73 @@ var verifyIsValid = function (code) {
|
|
|
99
82
|
}
|
|
100
83
|
return { valid: false, error: null };
|
|
101
84
|
};
|
|
102
|
-
|
|
85
|
+
const getActionBindingsFromBlock = (block, options) => {
|
|
103
86
|
var _a;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
87
|
+
const actions = {
|
|
88
|
+
...block.actions,
|
|
89
|
+
...(_a = block.code) === null || _a === void 0 ? void 0 : _a.actions,
|
|
90
|
+
};
|
|
91
|
+
const bindings = {};
|
|
92
|
+
const actionKeys = Object.keys(actions);
|
|
107
93
|
if (actionKeys.length) {
|
|
108
|
-
for (
|
|
109
|
-
|
|
110
|
-
var value = actions[key];
|
|
94
|
+
for (const key of actionKeys) {
|
|
95
|
+
const value = actions[key];
|
|
111
96
|
// Skip empty values
|
|
112
97
|
if (!value.trim()) {
|
|
113
98
|
continue;
|
|
114
99
|
}
|
|
115
|
-
|
|
100
|
+
const { error, valid } = verifyIsValid(value);
|
|
116
101
|
if (!valid) {
|
|
117
102
|
console.warn('Skipping invalid binding', error);
|
|
118
103
|
continue;
|
|
119
104
|
}
|
|
120
|
-
|
|
121
|
-
bindings[useKey] = (0, bindings_1.createSingleBinding)({ code:
|
|
105
|
+
const useKey = `on${(0, lodash_1.upperFirst)(key)}`;
|
|
106
|
+
bindings[useKey] = (0, bindings_1.createSingleBinding)({ code: `${wrapBindingIfNeeded(value, options)}` });
|
|
122
107
|
}
|
|
123
108
|
}
|
|
124
109
|
return bindings;
|
|
125
110
|
};
|
|
126
|
-
|
|
111
|
+
const getStyleStringFromBlock = (block, options) => {
|
|
127
112
|
var _a, _b;
|
|
128
|
-
|
|
129
|
-
|
|
113
|
+
const styleBindings = {};
|
|
114
|
+
let styleString = '';
|
|
130
115
|
if (block.bindings) {
|
|
131
|
-
for (
|
|
116
|
+
for (const key in block.bindings) {
|
|
132
117
|
if (key.includes('style') && key.includes('.')) {
|
|
133
|
-
|
|
118
|
+
const styleProperty = key.split('.')[1];
|
|
134
119
|
styleBindings[styleProperty] = convertExportDefaultToReturn(((_b = (_a = block.code) === null || _a === void 0 ? void 0 : _a.bindings) === null || _b === void 0 ? void 0 : _b[key]) || block.bindings[key]);
|
|
135
120
|
}
|
|
136
121
|
}
|
|
137
122
|
}
|
|
138
|
-
|
|
123
|
+
const styleKeys = Object.keys(styleBindings);
|
|
139
124
|
if (styleKeys.length) {
|
|
140
125
|
styleString = '{';
|
|
141
|
-
styleKeys.forEach(
|
|
126
|
+
styleKeys.forEach((key) => {
|
|
142
127
|
// TODO: figure out how to have multiline style bindings here
|
|
143
128
|
// I tried (function{binding code})() and that did not work
|
|
144
|
-
styleString +=
|
|
129
|
+
styleString += ` ${key}: ${(options.includeBuilderExtras
|
|
145
130
|
? wrapBinding(styleBindings[key])
|
|
146
131
|
: styleBindings[key]
|
|
147
132
|
.replace(/var _virtual_index\s*=\s*/g, '')
|
|
148
|
-
.replace(/;*\s*return _virtual_index;*/, '')).replace(/;$/, '')
|
|
133
|
+
.replace(/;*\s*return _virtual_index;*/, '')).replace(/;$/, '')},`;
|
|
149
134
|
});
|
|
150
135
|
styleString += ' }';
|
|
151
136
|
}
|
|
152
137
|
return styleString;
|
|
153
138
|
};
|
|
154
|
-
|
|
139
|
+
const hasComponent = (block) => {
|
|
155
140
|
var _a;
|
|
156
141
|
return Boolean((_a = block.component) === null || _a === void 0 ? void 0 : _a.name);
|
|
157
142
|
};
|
|
158
|
-
|
|
143
|
+
const hasProperties = (block) => {
|
|
159
144
|
return Boolean(block.properties && Object.keys(block.properties).length);
|
|
160
145
|
};
|
|
161
|
-
|
|
146
|
+
const hasBindings = (block) => {
|
|
162
147
|
return Boolean(block.bindings && Object.keys(block.bindings).length);
|
|
163
148
|
};
|
|
164
|
-
|
|
149
|
+
const hasStyles = (block) => {
|
|
165
150
|
if (block.responsiveStyles) {
|
|
166
|
-
for (
|
|
151
|
+
for (const key in block.responsiveStyles) {
|
|
167
152
|
if (Object.keys(block.responsiveStyles[key]).length) {
|
|
168
153
|
return true;
|
|
169
154
|
}
|
|
@@ -171,48 +156,53 @@ var hasStyles = function (block) {
|
|
|
171
156
|
}
|
|
172
157
|
return false;
|
|
173
158
|
};
|
|
174
|
-
|
|
159
|
+
const wrapBindingIfNeeded = (value, options) => {
|
|
175
160
|
if (options.includeBuilderExtras) {
|
|
176
161
|
return wrapBinding(value);
|
|
177
162
|
}
|
|
178
163
|
if ((value === null || value === void 0 ? void 0 : value.includes(';')) && !(value === null || value === void 0 ? void 0 : value.trim().startsWith('{'))) {
|
|
179
|
-
return
|
|
164
|
+
return `{ ${value} }`;
|
|
180
165
|
}
|
|
181
166
|
return value;
|
|
182
167
|
};
|
|
183
|
-
|
|
168
|
+
const getBlockActions = (block, options) => {
|
|
184
169
|
var _a;
|
|
185
|
-
|
|
170
|
+
const obj = {
|
|
171
|
+
...block.actions,
|
|
172
|
+
...(_a = block.code) === null || _a === void 0 ? void 0 : _a.actions,
|
|
173
|
+
};
|
|
186
174
|
if (options.includeBuilderExtras) {
|
|
187
|
-
for (
|
|
188
|
-
|
|
175
|
+
for (const key in obj) {
|
|
176
|
+
const value = obj[key];
|
|
189
177
|
// TODO: plugin/option for for this
|
|
190
178
|
obj[key] = wrapBinding(value);
|
|
191
179
|
}
|
|
192
180
|
}
|
|
193
181
|
return obj;
|
|
194
182
|
};
|
|
195
|
-
|
|
196
|
-
return (0, lodash_1.mapKeys)(getBlockActions(block, options),
|
|
183
|
+
const getBlockActionsAsBindings = (block, options) => {
|
|
184
|
+
return (0, lodash_1.mapKeys)(getBlockActions(block, options), (value, key) => `on${(0, capitalize_1.capitalize)(key)}`);
|
|
197
185
|
};
|
|
198
|
-
|
|
186
|
+
const isValidBindingKey = (str) => {
|
|
199
187
|
return Boolean(str && /^[a-z0-9_\.]$/i.test(str));
|
|
200
188
|
};
|
|
201
|
-
|
|
189
|
+
const getBlockNonActionBindings = (block, options) => {
|
|
202
190
|
var _a;
|
|
203
|
-
|
|
204
|
-
|
|
191
|
+
const obj = {
|
|
192
|
+
...block.bindings,
|
|
193
|
+
...(_a = block.code) === null || _a === void 0 ? void 0 : _a.bindings,
|
|
194
|
+
};
|
|
205
195
|
if (options.includeBuilderExtras) {
|
|
206
|
-
for (
|
|
196
|
+
for (const key in obj) {
|
|
207
197
|
if (!isValidBindingKey(key)) {
|
|
208
198
|
console.warn('Skipping invalid binding key:', key);
|
|
209
199
|
continue;
|
|
210
200
|
}
|
|
211
|
-
|
|
201
|
+
const value = obj[key];
|
|
212
202
|
// TODO: verify the bindings are valid
|
|
213
|
-
|
|
203
|
+
let { valid, error } = verifyIsValid(value);
|
|
214
204
|
if (!valid) {
|
|
215
|
-
(
|
|
205
|
+
({ valid, error } = verifyIsValid(`function () { ${value} }`));
|
|
216
206
|
}
|
|
217
207
|
if (valid) {
|
|
218
208
|
obj[key] = wrapBinding(value);
|
|
@@ -232,128 +222,162 @@ function wrapBinding(value) {
|
|
|
232
222
|
if (!(value.includes(';') || value.match(/(^|\s|;)return[^a-z0-9A-Z]/))) {
|
|
233
223
|
return value;
|
|
234
224
|
}
|
|
235
|
-
return
|
|
225
|
+
return `(() => {
|
|
226
|
+
try { ${(0, parsers_1.isExpression)(value) ? 'return ' : ''}${value} }
|
|
227
|
+
catch (err) {
|
|
228
|
+
console.warn('Builder code error', err);
|
|
229
|
+
}
|
|
230
|
+
})()`;
|
|
236
231
|
}
|
|
237
|
-
|
|
238
|
-
|
|
232
|
+
const getBlockBindings = (block, options) => {
|
|
233
|
+
const obj = {
|
|
234
|
+
...getBlockNonActionBindings(block, options),
|
|
235
|
+
...getBlockActionsAsBindings(block, options),
|
|
236
|
+
};
|
|
239
237
|
return obj;
|
|
240
238
|
};
|
|
241
239
|
// add back if this direction (blocks as children not prop) is desired
|
|
242
240
|
exports.symbolBlocksAsChildren = false;
|
|
243
|
-
|
|
241
|
+
const componentMappers = {
|
|
242
|
+
Symbol(block, options) {
|
|
244
243
|
var _a, _b;
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
244
|
+
let css = getCssFromBlock(block);
|
|
245
|
+
const styleString = getStyleStringFromBlock(block, options);
|
|
246
|
+
const actionBindings = getActionBindingsFromBlock(block, options);
|
|
247
|
+
const bindings = {
|
|
248
|
+
symbol: (0, bindings_1.createSingleBinding)({
|
|
249
249
|
code: JSON.stringify({
|
|
250
250
|
data: (_a = block.component) === null || _a === void 0 ? void 0 : _a.options.symbol.data,
|
|
251
251
|
content: (_b = block.component) === null || _b === void 0 ? void 0 : _b.options.symbol.content,
|
|
252
252
|
}),
|
|
253
|
-
})
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
253
|
+
}),
|
|
254
|
+
...actionBindings,
|
|
255
|
+
...(styleString && {
|
|
256
|
+
style: (0, bindings_1.createSingleBinding)({ code: styleString }),
|
|
257
|
+
}),
|
|
258
|
+
...(Object.keys(css).length && {
|
|
259
|
+
css: (0, bindings_1.createSingleBinding)({ code: JSON.stringify(css) }),
|
|
260
|
+
}),
|
|
261
|
+
};
|
|
258
262
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
259
263
|
name: 'Symbol',
|
|
260
264
|
bindings: bindings,
|
|
261
265
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
262
266
|
});
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
267
|
+
},
|
|
268
|
+
...(!exports.symbolBlocksAsChildren
|
|
269
|
+
? {}
|
|
270
|
+
: {
|
|
271
|
+
Symbol(block, options) {
|
|
272
|
+
var _a, _b, _c;
|
|
273
|
+
let css = getCssFromBlock(block);
|
|
274
|
+
const styleString = getStyleStringFromBlock(block, options);
|
|
275
|
+
const actionBindings = getActionBindingsFromBlock(block, options);
|
|
276
|
+
const content = (_a = block.component) === null || _a === void 0 ? void 0 : _a.options.symbol.content;
|
|
277
|
+
const blocks = (_b = content === null || content === void 0 ? void 0 : content.data) === null || _b === void 0 ? void 0 : _b.blocks;
|
|
278
|
+
if (blocks) {
|
|
279
|
+
content.data.blocks = null;
|
|
280
|
+
}
|
|
281
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
282
|
+
name: 'Symbol',
|
|
283
|
+
bindings: {
|
|
284
|
+
// TODO: this doesn't use all attrs
|
|
285
|
+
symbol: (0, bindings_1.createSingleBinding)({
|
|
286
|
+
code: JSON.stringify({
|
|
287
|
+
data: (_c = block.component) === null || _c === void 0 ? void 0 : _c.options.symbol.content.data,
|
|
288
|
+
content: content, // TODO: convert to <SymbolInternal>...</SymbolInternal> so can be parsed
|
|
289
|
+
}),
|
|
284
290
|
}),
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
css: (0, bindings_1.createSingleBinding)({ code: JSON.stringify(css) }),
|
|
289
|
-
})),
|
|
290
|
-
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
291
|
-
children: !blocks
|
|
292
|
-
? []
|
|
293
|
-
: [
|
|
294
|
-
(0, create_mitosis_node_1.createMitosisNode)({
|
|
295
|
-
// TODO: the Builder generator side of this converting to blocks
|
|
296
|
-
name: 'BuilderSymbolContents',
|
|
297
|
-
children: blocks.map(function (item) { return (0, exports.builderElementToMitosisNode)(item, options); }),
|
|
291
|
+
...actionBindings,
|
|
292
|
+
...(styleString && {
|
|
293
|
+
style: (0, bindings_1.createSingleBinding)({ code: styleString }),
|
|
298
294
|
}),
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
295
|
+
...(Object.keys(css).length && {
|
|
296
|
+
css: (0, bindings_1.createSingleBinding)({ code: JSON.stringify(css) }),
|
|
297
|
+
}),
|
|
298
|
+
},
|
|
299
|
+
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
300
|
+
children: !blocks
|
|
301
|
+
? []
|
|
302
|
+
: [
|
|
303
|
+
(0, create_mitosis_node_1.createMitosisNode)({
|
|
304
|
+
// TODO: the Builder generator side of this converting to blocks
|
|
305
|
+
name: 'BuilderSymbolContents',
|
|
306
|
+
children: blocks.map((item) => (0, exports.builderElementToMitosisNode)(item, options)),
|
|
307
|
+
}),
|
|
308
|
+
],
|
|
309
|
+
});
|
|
310
|
+
},
|
|
311
|
+
}),
|
|
312
|
+
Columns(block, options) {
|
|
303
313
|
var _a, _b;
|
|
304
|
-
|
|
314
|
+
const node = (0, exports.builderElementToMitosisNode)(block, options, {
|
|
305
315
|
skipMapper: true,
|
|
306
316
|
});
|
|
307
317
|
delete node.bindings.columns;
|
|
308
318
|
delete node.properties.columns;
|
|
309
319
|
node.children =
|
|
310
|
-
((_b = (_a = block.component) === null || _a === void 0 ? void 0 : _a.options.columns) === null || _b === void 0 ? void 0 : _b.map(
|
|
320
|
+
((_b = (_a = block.component) === null || _a === void 0 ? void 0 : _a.options.columns) === null || _b === void 0 ? void 0 : _b.map((col, index) => {
|
|
311
321
|
var _a;
|
|
312
|
-
return (0, create_mitosis_node_1.createMitosisNode)(
|
|
322
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
323
|
+
name: 'Column',
|
|
324
|
+
bindings: {
|
|
313
325
|
width: { code: (_a = col.width) === null || _a === void 0 ? void 0 : _a.toString() },
|
|
314
|
-
} }, (col.link && {
|
|
315
|
-
properties: {
|
|
316
|
-
link: col.link,
|
|
317
326
|
},
|
|
318
|
-
|
|
327
|
+
...(col.link && {
|
|
328
|
+
properties: {
|
|
329
|
+
link: col.link,
|
|
330
|
+
},
|
|
331
|
+
}),
|
|
332
|
+
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
333
|
+
children: col.blocks.map((col) => (0, exports.builderElementToMitosisNode)(col, options)),
|
|
334
|
+
});
|
|
319
335
|
})) || [];
|
|
320
336
|
return node;
|
|
321
|
-
},
|
|
337
|
+
},
|
|
338
|
+
'Shopify:For': (block, options) => {
|
|
322
339
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
323
340
|
name: 'For',
|
|
324
341
|
bindings: {
|
|
325
342
|
each: (0, bindings_1.createSingleBinding)({
|
|
326
|
-
code:
|
|
343
|
+
code: `state.${block.component.options.repeat.collection}`,
|
|
327
344
|
}),
|
|
328
345
|
},
|
|
329
346
|
scope: {
|
|
330
347
|
forName: block.component.options.repeat.itemName,
|
|
331
|
-
indexName: '$index',
|
|
332
348
|
},
|
|
333
349
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
334
|
-
children: (block.children || []).map(
|
|
350
|
+
children: (block.children || []).map((child) => (0, exports.builderElementToMitosisNode)(updateBindings(child, 'state.$index', 'index'), options)),
|
|
335
351
|
});
|
|
336
|
-
},
|
|
352
|
+
},
|
|
353
|
+
Text: (block, options) => {
|
|
337
354
|
var _a;
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
355
|
+
let css = getCssFromBlock(block);
|
|
356
|
+
const styleString = getStyleStringFromBlock(block, options);
|
|
357
|
+
const actionBindings = getActionBindingsFromBlock(block, options);
|
|
358
|
+
const blockBindings = {
|
|
359
|
+
...mapBuilderBindingsToMitosisBindingWithCode(block.bindings),
|
|
360
|
+
...mapBuilderBindingsToMitosisBindingWithCode((_a = block.code) === null || _a === void 0 ? void 0 : _a.bindings),
|
|
361
|
+
};
|
|
362
|
+
const bindings = {
|
|
363
|
+
...(0, lodash_1.omitBy)(blockBindings, (value, key) => {
|
|
364
|
+
if (key === 'component.options.text') {
|
|
365
|
+
return true;
|
|
366
|
+
}
|
|
367
|
+
if (key && key.includes('style')) {
|
|
368
|
+
return true;
|
|
369
|
+
}
|
|
370
|
+
return false;
|
|
371
|
+
}),
|
|
372
|
+
...actionBindings,
|
|
373
|
+
...(styleString && {
|
|
374
|
+
style: { code: styleString },
|
|
375
|
+
}),
|
|
376
|
+
...(Object.keys(css).length && {
|
|
377
|
+
css: { code: JSON.stringify(css) },
|
|
378
|
+
}),
|
|
379
|
+
};
|
|
380
|
+
const properties = { ...block.properties };
|
|
357
381
|
if (options.includeBuilderExtras && block.id)
|
|
358
382
|
properties['builder-id'] = block.id;
|
|
359
383
|
if (block.class)
|
|
@@ -361,41 +385,47 @@ var componentMappers = __assign(__assign({ Symbol: function (block, options) {
|
|
|
361
385
|
if (block.layerName) {
|
|
362
386
|
properties.$name = block.layerName;
|
|
363
387
|
}
|
|
364
|
-
|
|
365
|
-
|
|
388
|
+
const innerBindings = {};
|
|
389
|
+
const componentOptionsText = blockBindings['component.options.text'];
|
|
366
390
|
if (componentOptionsText) {
|
|
367
391
|
innerBindings[options.preserveTextBlocks ? 'innerHTML' : '_text'] = (0, bindings_1.createSingleBinding)({
|
|
368
392
|
code: wrapBindingIfNeeded(componentOptionsText.code, options),
|
|
369
393
|
});
|
|
370
394
|
}
|
|
371
|
-
|
|
372
|
-
|
|
395
|
+
const text = block.component.options.text;
|
|
396
|
+
const innerProperties = innerBindings._text
|
|
373
397
|
? {}
|
|
374
|
-
:
|
|
375
|
-
|
|
376
|
-
|
|
398
|
+
: {
|
|
399
|
+
[options.preserveTextBlocks ? 'innerHTML' : '_text']: text,
|
|
400
|
+
};
|
|
377
401
|
if (options.preserveTextBlocks) {
|
|
378
402
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
379
403
|
name: block.tagName || 'div',
|
|
380
|
-
bindings
|
|
381
|
-
properties
|
|
404
|
+
bindings,
|
|
405
|
+
properties,
|
|
382
406
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
383
407
|
children: [
|
|
384
408
|
(0, create_mitosis_node_1.createMitosisNode)({
|
|
385
409
|
bindings: innerBindings,
|
|
386
|
-
properties:
|
|
410
|
+
properties: {
|
|
411
|
+
...innerProperties,
|
|
412
|
+
class: 'builder-text',
|
|
413
|
+
},
|
|
387
414
|
}),
|
|
388
415
|
],
|
|
389
416
|
});
|
|
390
417
|
}
|
|
391
418
|
// Disabling for now
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
419
|
+
const assumeLink = false;
|
|
420
|
+
const finalProperties = {
|
|
421
|
+
...(assumeLink
|
|
422
|
+
? {
|
|
423
|
+
href: '...',
|
|
424
|
+
}
|
|
425
|
+
: {}),
|
|
426
|
+
...properties,
|
|
427
|
+
};
|
|
428
|
+
const finalTagname = block.tagName || (assumeLink ? 'a' : 'div');
|
|
399
429
|
if ((block.tagName && block.tagName !== 'div') ||
|
|
400
430
|
hasStyles(block) ||
|
|
401
431
|
hasComponent(block) ||
|
|
@@ -403,7 +433,7 @@ var componentMappers = __assign(__assign({ Symbol: function (block, options) {
|
|
|
403
433
|
hasProperties(block)) {
|
|
404
434
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
405
435
|
name: finalTagname,
|
|
406
|
-
bindings
|
|
436
|
+
bindings,
|
|
407
437
|
properties: finalProperties,
|
|
408
438
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
409
439
|
children: [
|
|
@@ -416,52 +446,57 @@ var componentMappers = __assign(__assign({ Symbol: function (block, options) {
|
|
|
416
446
|
}
|
|
417
447
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
418
448
|
name: finalTagname,
|
|
419
|
-
properties:
|
|
420
|
-
|
|
449
|
+
properties: {
|
|
450
|
+
...finalProperties,
|
|
451
|
+
...properties,
|
|
452
|
+
...innerProperties,
|
|
453
|
+
},
|
|
454
|
+
bindings: {
|
|
455
|
+
...bindings,
|
|
456
|
+
...innerBindings,
|
|
457
|
+
},
|
|
421
458
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
422
459
|
});
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
if (((_b = block.component) === null || _b === void 0 ? void 0 : _b.name) === 'Core:Fragment') {
|
|
460
|
+
},
|
|
461
|
+
};
|
|
462
|
+
const builderElementToMitosisNode = (block, options, _internalOptions = {}) => {
|
|
463
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
464
|
+
const { includeSpecialBindings = true } = options;
|
|
465
|
+
if (((_a = block.component) === null || _a === void 0 ? void 0 : _a.name) === 'Core:Fragment') {
|
|
430
466
|
block.component.name = 'Fragment';
|
|
431
467
|
}
|
|
432
|
-
|
|
468
|
+
const forBinding = (_b = block.repeat) === null || _b === void 0 ? void 0 : _b.collection;
|
|
433
469
|
if (forBinding) {
|
|
434
|
-
|
|
470
|
+
const isFragment = ((_c = block.component) === null || _c === void 0 ? void 0 : _c.name) === 'Fragment';
|
|
435
471
|
// TODO: handle having other things, like a repeat too
|
|
436
472
|
if (isFragment) {
|
|
437
473
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
438
474
|
name: 'For',
|
|
439
475
|
bindings: {
|
|
440
476
|
each: (0, bindings_1.createSingleBinding)({
|
|
441
|
-
code: wrapBindingIfNeeded((
|
|
477
|
+
code: wrapBindingIfNeeded((_d = block.repeat) === null || _d === void 0 ? void 0 : _d.collection, options),
|
|
442
478
|
}),
|
|
443
479
|
},
|
|
444
480
|
scope: {
|
|
445
|
-
forName: ((
|
|
446
|
-
indexName: '$index',
|
|
481
|
+
forName: ((_e = block.repeat) === null || _e === void 0 ? void 0 : _e.itemName) || 'item',
|
|
447
482
|
},
|
|
448
483
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
449
|
-
children: ((
|
|
484
|
+
children: ((_f = block.children) === null || _f === void 0 ? void 0 : _f.map((child) => (0, exports.builderElementToMitosisNode)(updateBindings(child, 'state.$index', 'index'), options))) || [],
|
|
450
485
|
});
|
|
451
486
|
}
|
|
452
487
|
else {
|
|
453
|
-
|
|
488
|
+
const useBlock = ((_g = block.component) === null || _g === void 0 ? void 0 : _g.name) === 'Core:Fragment' && ((_h = block.children) === null || _h === void 0 ? void 0 : _h.length) === 1
|
|
454
489
|
? block.children[0]
|
|
455
490
|
: block;
|
|
456
491
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
457
492
|
name: 'For',
|
|
458
493
|
bindings: {
|
|
459
494
|
each: (0, bindings_1.createSingleBinding)({
|
|
460
|
-
code: wrapBindingIfNeeded((
|
|
495
|
+
code: wrapBindingIfNeeded((_j = block.repeat) === null || _j === void 0 ? void 0 : _j.collection, options),
|
|
461
496
|
}),
|
|
462
497
|
},
|
|
463
498
|
scope: {
|
|
464
|
-
forName: ((
|
|
499
|
+
forName: ((_k = block.repeat) === null || _k === void 0 ? void 0 : _k.itemName) || 'item',
|
|
465
500
|
indexName: '$index',
|
|
466
501
|
},
|
|
467
502
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
@@ -471,77 +506,92 @@ var builderElementToMitosisNode = function (block, options, _internalOptions) {
|
|
|
471
506
|
}
|
|
472
507
|
// Special builder properties
|
|
473
508
|
// TODO: support hide and repeat
|
|
474
|
-
|
|
475
|
-
|
|
509
|
+
const blockBindings = getBlockBindings(block, options);
|
|
510
|
+
let code = undefined;
|
|
476
511
|
if (blockBindings.show) {
|
|
477
512
|
code = wrapBindingIfNeeded(blockBindings.show, options);
|
|
478
513
|
}
|
|
479
514
|
else if (blockBindings.hide) {
|
|
480
|
-
code =
|
|
515
|
+
code = `!(${wrapBindingIfNeeded(blockBindings.hide, options)})`;
|
|
481
516
|
}
|
|
482
517
|
if (code) {
|
|
483
|
-
|
|
518
|
+
const isFragment = ((_l = block.component) === null || _l === void 0 ? void 0 : _l.name) === 'Fragment';
|
|
484
519
|
// TODO: handle having other things, like a repeat too
|
|
485
520
|
if (isFragment) {
|
|
486
521
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
487
522
|
name: 'Show',
|
|
488
|
-
bindings: { when: (0, bindings_1.createSingleBinding)({ code
|
|
523
|
+
bindings: { when: (0, bindings_1.createSingleBinding)({ code }) },
|
|
489
524
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
490
|
-
children: ((
|
|
525
|
+
children: ((_m = block.children) === null || _m === void 0 ? void 0 : _m.map((child) => (0, exports.builderElementToMitosisNode)(child, options))) || [],
|
|
491
526
|
});
|
|
492
527
|
}
|
|
493
528
|
else {
|
|
494
529
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
495
530
|
name: 'Show',
|
|
496
|
-
bindings: { when: (0, bindings_1.createSingleBinding)({ code
|
|
531
|
+
bindings: { when: (0, bindings_1.createSingleBinding)({ code }) },
|
|
497
532
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
498
533
|
children: [
|
|
499
|
-
(0, exports.builderElementToMitosisNode)(
|
|
534
|
+
(0, exports.builderElementToMitosisNode)({
|
|
535
|
+
...block,
|
|
536
|
+
code: {
|
|
537
|
+
...block.code,
|
|
538
|
+
bindings: (0, lodash_1.omit)(blockBindings, 'show', 'hide'),
|
|
539
|
+
},
|
|
540
|
+
bindings: (0, lodash_1.omit)(blockBindings, 'show', 'hide'),
|
|
541
|
+
}, options),
|
|
500
542
|
],
|
|
501
543
|
});
|
|
502
544
|
}
|
|
503
545
|
}
|
|
504
|
-
|
|
546
|
+
const mapper = !_internalOptions.skipMapper && block.component && componentMappers[block.component.name];
|
|
505
547
|
if (mapper) {
|
|
506
548
|
return mapper(block, options);
|
|
507
549
|
}
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
550
|
+
const bindings = {};
|
|
551
|
+
const children = [];
|
|
552
|
+
const slots = {};
|
|
511
553
|
if (blockBindings) {
|
|
512
|
-
for (
|
|
554
|
+
for (const key in blockBindings) {
|
|
513
555
|
if (key === 'css') {
|
|
514
556
|
continue;
|
|
515
557
|
}
|
|
516
|
-
|
|
558
|
+
const useKey = key.replace(/^(component\.)?options\./, '');
|
|
517
559
|
if (!useKey.includes('.')) {
|
|
518
560
|
bindings[useKey] = (0, bindings_1.createSingleBinding)({
|
|
519
561
|
code: blockBindings[key].code || blockBindings[key],
|
|
520
562
|
});
|
|
521
563
|
}
|
|
522
564
|
else if (useKey.includes('style') && useKey.includes('.')) {
|
|
523
|
-
|
|
565
|
+
const styleProperty = useKey.split('.')[1];
|
|
524
566
|
// TODO: add me in
|
|
525
567
|
// styleBindings[styleProperty] =
|
|
526
568
|
// block.code?.bindings?.[key] || blockBindings[key];
|
|
527
569
|
}
|
|
528
570
|
}
|
|
529
571
|
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
572
|
+
const properties = {
|
|
573
|
+
...block.properties,
|
|
574
|
+
...(options.includeBuilderExtras && {
|
|
575
|
+
['builder-id']: block.id,
|
|
576
|
+
// class: `builder-block ${block.id} ${block.properties?.class || ''}`,
|
|
577
|
+
}),
|
|
578
|
+
...(options.includeBuilderExtras && getBuilderPropsForSymbol(block)),
|
|
579
|
+
};
|
|
533
580
|
if (block.layerName) {
|
|
534
581
|
properties.$name = block.layerName;
|
|
535
582
|
}
|
|
536
583
|
if (block.linkUrl) {
|
|
537
584
|
properties.href = block.linkUrl;
|
|
538
585
|
}
|
|
539
|
-
if ((
|
|
540
|
-
for (
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
586
|
+
if ((_o = block.component) === null || _o === void 0 ? void 0 : _o.options) {
|
|
587
|
+
for (const key in block.component.options) {
|
|
588
|
+
const value = block.component.options[key];
|
|
589
|
+
const valueIsArrayOfBuilderElements = Array.isArray(value) && value.every(exports.isBuilderElement);
|
|
590
|
+
const transformBldrElementToMitosisNode = (item) => {
|
|
591
|
+
const node = (0, exports.builderElementToMitosisNode)(item, {
|
|
592
|
+
...options,
|
|
593
|
+
includeSpecialBindings: false,
|
|
594
|
+
});
|
|
545
595
|
return node;
|
|
546
596
|
};
|
|
547
597
|
if ((0, exports.isBuilderElement)(value)) {
|
|
@@ -551,8 +601,8 @@ var builderElementToMitosisNode = function (block, options, _internalOptions) {
|
|
|
551
601
|
properties[key] = value;
|
|
552
602
|
}
|
|
553
603
|
else if (valueIsArrayOfBuilderElements) {
|
|
554
|
-
|
|
555
|
-
.filter(
|
|
604
|
+
const childrenElements = value
|
|
605
|
+
.filter((item) => {
|
|
556
606
|
var _a, _b;
|
|
557
607
|
if ((_b = (_a = item.properties) === null || _a === void 0 ? void 0 : _a.src) === null || _b === void 0 ? void 0 : _b.includes('/api/v1/pixel')) {
|
|
558
608
|
return false;
|
|
@@ -570,41 +620,52 @@ var builderElementToMitosisNode = function (block, options, _internalOptions) {
|
|
|
570
620
|
if (block.component && block.tagName && block.tagName !== 'div') {
|
|
571
621
|
properties.builderTag = block.tagName;
|
|
572
622
|
}
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
for (
|
|
623
|
+
const css = getCssFromBlock(block);
|
|
624
|
+
let styleString = getStyleStringFromBlock(block, options);
|
|
625
|
+
const actionBindings = getActionBindingsFromBlock(block, options);
|
|
626
|
+
for (const binding in blockBindings) {
|
|
577
627
|
if (binding.startsWith('component.options') || binding.startsWith('options')) {
|
|
578
|
-
|
|
579
|
-
|
|
628
|
+
const value = blockBindings[binding];
|
|
629
|
+
const useKey = binding.replace(/^(component\.options\.|options\.)/, '');
|
|
580
630
|
bindings[useKey] = (0, bindings_1.createSingleBinding)({ code: value });
|
|
581
631
|
}
|
|
582
632
|
}
|
|
583
|
-
|
|
584
|
-
name: ((
|
|
633
|
+
const node = (0, create_mitosis_node_1.createMitosisNode)({
|
|
634
|
+
name: ((_q = (_p = block.component) === null || _p === void 0 ? void 0 : _p.name) === null || _q === void 0 ? void 0 : _q.replace(/[^a-z0-9]/gi, '')) ||
|
|
585
635
|
block.tagName ||
|
|
586
636
|
(block.linkUrl ? 'a' : 'div'),
|
|
587
|
-
properties:
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
637
|
+
properties: {
|
|
638
|
+
...(block.component && includeSpecialBindings && { $tagName: block.tagName }),
|
|
639
|
+
...(block.class && { class: block.class }),
|
|
640
|
+
...properties,
|
|
641
|
+
},
|
|
642
|
+
bindings: {
|
|
643
|
+
...bindings,
|
|
644
|
+
...actionBindings,
|
|
645
|
+
...(styleString && {
|
|
646
|
+
style: (0, bindings_1.createSingleBinding)({ code: styleString }),
|
|
647
|
+
}),
|
|
648
|
+
...(css &&
|
|
649
|
+
Object.keys(css).length && {
|
|
650
|
+
css: (0, bindings_1.createSingleBinding)({ code: JSON.stringify(css) }),
|
|
651
|
+
}),
|
|
652
|
+
},
|
|
653
|
+
slots: {
|
|
654
|
+
...slots,
|
|
655
|
+
},
|
|
595
656
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
596
657
|
});
|
|
597
658
|
// Has single text node child
|
|
598
|
-
|
|
599
|
-
if (((
|
|
600
|
-
((
|
|
659
|
+
const firstChild = (_r = block.children) === null || _r === void 0 ? void 0 : _r[0];
|
|
660
|
+
if (((_s = block.children) === null || _s === void 0 ? void 0 : _s.length) === 1 &&
|
|
661
|
+
((_t = firstChild === null || firstChild === void 0 ? void 0 : firstChild.component) === null || _t === void 0 ? void 0 : _t.name) === 'Text' &&
|
|
601
662
|
!options.preserveTextBlocks) {
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
663
|
+
const textProperties = (0, exports.builderElementToMitosisNode)(firstChild, options);
|
|
664
|
+
const parsedNodeCss = json5_1.default.parse(((_u = node.bindings.css) === null || _u === void 0 ? void 0 : _u.code) || '{}');
|
|
665
|
+
const parsedTextCss = json5_1.default.parse(((_v = textProperties.bindings.css) === null || _v === void 0 ? void 0 : _v.code) || '{}');
|
|
666
|
+
const mergedCss = combineStyles(parsedNodeCss, parsedTextCss);
|
|
606
667
|
// Don't merge if text has styling that matters
|
|
607
|
-
|
|
668
|
+
const doNotMerge =
|
|
608
669
|
// Text has flex alignment
|
|
609
670
|
['end', 'right', 'center'].includes(parsedTextCss.alignSelf) ||
|
|
610
671
|
// Text has specific styling
|
|
@@ -613,42 +674,51 @@ var builderElementToMitosisNode = function (block, options, _internalOptions) {
|
|
|
613
674
|
parsedTextCss.background;
|
|
614
675
|
if (!doNotMerge) {
|
|
615
676
|
return (0, lodash_1.merge)({}, textProperties, node, {
|
|
616
|
-
bindings:
|
|
617
|
-
|
|
618
|
-
|
|
677
|
+
bindings: {
|
|
678
|
+
...(Object.keys(mergedCss).length && {
|
|
679
|
+
css: { code: json5_1.default.stringify(mergedCss) },
|
|
680
|
+
}),
|
|
681
|
+
},
|
|
619
682
|
});
|
|
620
683
|
}
|
|
621
684
|
}
|
|
622
|
-
node.children = children.concat((block.children || []).map(
|
|
685
|
+
node.children = children.concat((block.children || []).map((item) => (0, exports.builderElementToMitosisNode)(item, options)));
|
|
623
686
|
return node;
|
|
624
687
|
};
|
|
625
688
|
exports.builderElementToMitosisNode = builderElementToMitosisNode;
|
|
626
|
-
|
|
689
|
+
const getBuilderPropsForSymbol = (block) => {
|
|
627
690
|
var _a, _b;
|
|
628
691
|
if (((_a = block.children) === null || _a === void 0 ? void 0 : _a.length) === 1) {
|
|
629
|
-
|
|
630
|
-
|
|
692
|
+
const child = block.children[0];
|
|
693
|
+
const builderContentId = (_b = child.properties) === null || _b === void 0 ? void 0 : _b['builder-content-id'];
|
|
631
694
|
if (builderContentId) {
|
|
632
695
|
return { 'builder-content-id': builderContentId };
|
|
633
696
|
}
|
|
634
697
|
}
|
|
635
698
|
return undefined;
|
|
636
699
|
};
|
|
637
|
-
|
|
638
|
-
|
|
700
|
+
const getMetaFromBlock = (block, options) => {
|
|
701
|
+
const { includeMeta = false } = options;
|
|
639
702
|
return includeMeta
|
|
640
|
-
?
|
|
703
|
+
? {
|
|
704
|
+
'builder-id': block.id,
|
|
705
|
+
...block.meta,
|
|
706
|
+
}
|
|
707
|
+
: {};
|
|
641
708
|
};
|
|
642
709
|
exports.getMetaFromBlock = getMetaFromBlock;
|
|
643
|
-
|
|
710
|
+
const getHooks = (content) => {
|
|
644
711
|
var _a, _b;
|
|
645
|
-
|
|
712
|
+
const code = convertExportDefaultToReturn(((_a = content.data) === null || _a === void 0 ? void 0 : _a.tsCode) || ((_b = content.data) === null || _b === void 0 ? void 0 : _b.jsCode) || '');
|
|
646
713
|
try {
|
|
647
|
-
return (0, jsx_1.parseJsx)(
|
|
714
|
+
return (0, jsx_1.parseJsx)(`
|
|
715
|
+
export default function TemporaryComponent() {
|
|
716
|
+
${
|
|
648
717
|
// Mitosis parser looks for useStore to be a variable assignment,
|
|
649
718
|
// but in Builder that's not how it works. For now do a replace to
|
|
650
719
|
// easily resuse the same parsing code as this is the only difference
|
|
651
|
-
code.replace(
|
|
720
|
+
code.replace(`useStore(`, `var state = useStore(`)}
|
|
721
|
+
}`);
|
|
652
722
|
}
|
|
653
723
|
catch (err) {
|
|
654
724
|
console.warn('Could not parse js code as a Mitosis component body', err, code);
|
|
@@ -661,18 +731,18 @@ var getHooks = function (content) {
|
|
|
661
731
|
* code extracted
|
|
662
732
|
*/
|
|
663
733
|
function extractStateHook(code) {
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
for (
|
|
669
|
-
|
|
734
|
+
const { types } = babel;
|
|
735
|
+
let state = {};
|
|
736
|
+
const body = (0, parsers_1.parseCode)(code);
|
|
737
|
+
const newBody = body.slice();
|
|
738
|
+
for (let i = 0; i < body.length; i++) {
|
|
739
|
+
const statement = body[i];
|
|
670
740
|
if (types.isExpressionStatement(statement)) {
|
|
671
|
-
|
|
741
|
+
const { expression } = statement;
|
|
672
742
|
// Check for useStore
|
|
673
743
|
if (types.isCallExpression(expression)) {
|
|
674
744
|
if (types.isIdentifier(expression.callee) && expression.callee.name === 'useStore') {
|
|
675
|
-
|
|
745
|
+
const arg = expression.arguments[0];
|
|
676
746
|
if (types.isObjectExpression(arg)) {
|
|
677
747
|
state = (0, state_1.parseStateObjectToMitosisState)(arg);
|
|
678
748
|
newBody.splice(i, 1);
|
|
@@ -683,7 +753,7 @@ function extractStateHook(code) {
|
|
|
683
753
|
expression.callee.object.name === 'Object') {
|
|
684
754
|
if (types.isIdentifier(expression.callee.property) &&
|
|
685
755
|
expression.callee.property.name === 'assign') {
|
|
686
|
-
|
|
756
|
+
const arg = expression.arguments[1];
|
|
687
757
|
if (types.isObjectExpression(arg)) {
|
|
688
758
|
state = (0, state_1.parseStateObjectToMitosisState)(arg);
|
|
689
759
|
newBody.splice(i, 1);
|
|
@@ -694,17 +764,17 @@ function extractStateHook(code) {
|
|
|
694
764
|
}
|
|
695
765
|
}
|
|
696
766
|
}
|
|
697
|
-
|
|
698
|
-
return { code: newCode, state
|
|
767
|
+
const newCode = (0, generator_1.default)(types.program(newBody)).code || '';
|
|
768
|
+
return { code: newCode, state };
|
|
699
769
|
}
|
|
700
770
|
exports.extractStateHook = extractStateHook;
|
|
701
771
|
function convertExportDefaultToReturn(code) {
|
|
702
772
|
try {
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
for (
|
|
707
|
-
|
|
773
|
+
const { types } = babel;
|
|
774
|
+
const body = (0, parsers_1.parseCode)(code);
|
|
775
|
+
const newBody = body.slice();
|
|
776
|
+
for (let i = 0; i < body.length; i++) {
|
|
777
|
+
const statement = body[i];
|
|
708
778
|
if (types.isExportDefaultDeclaration(statement)) {
|
|
709
779
|
if (types.isCallExpression(statement.declaration) ||
|
|
710
780
|
types.isExpression(statement.declaration)) {
|
|
@@ -715,7 +785,7 @@ function convertExportDefaultToReturn(code) {
|
|
|
715
785
|
return (0, generator_1.default)(types.program(newBody)).code || '';
|
|
716
786
|
}
|
|
717
787
|
catch (e) {
|
|
718
|
-
|
|
788
|
+
const error = e;
|
|
719
789
|
if (error.code === 'BABEL_PARSE_ERROR') {
|
|
720
790
|
return code;
|
|
721
791
|
}
|
|
@@ -725,11 +795,32 @@ function convertExportDefaultToReturn(code) {
|
|
|
725
795
|
}
|
|
726
796
|
}
|
|
727
797
|
exports.convertExportDefaultToReturn = convertExportDefaultToReturn;
|
|
798
|
+
const updateBindings = (node, from, to) => {
|
|
799
|
+
(0, legacy_1.default)(node).forEach(function (item) {
|
|
800
|
+
if ((0, exports.isBuilderElement)(item)) {
|
|
801
|
+
if (item.bindings) {
|
|
802
|
+
for (const [key, value] of Object.entries(item.bindings)) {
|
|
803
|
+
if (value === null || value === void 0 ? void 0 : value.includes(from)) {
|
|
804
|
+
item.bindings[key] = value.replaceAll(from, to);
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
if (item.actions) {
|
|
809
|
+
for (const [key, value] of Object.entries(item.actions)) {
|
|
810
|
+
if (value === null || value === void 0 ? void 0 : value.includes(from)) {
|
|
811
|
+
item.actions[key] = value.replaceAll(from, to);
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
});
|
|
817
|
+
return node;
|
|
818
|
+
};
|
|
728
819
|
// TODO: maybe this should be part of the builder -> Mitosis part
|
|
729
820
|
function extractSymbols(json) {
|
|
730
821
|
var _a, _b, _c, _d;
|
|
731
|
-
|
|
732
|
-
|
|
822
|
+
const subComponents = [];
|
|
823
|
+
const symbols = [];
|
|
733
824
|
(0, legacy_1.default)(json).forEach(function (item) {
|
|
734
825
|
var _a;
|
|
735
826
|
if ((0, exports.isBuilderElement)(item)) {
|
|
@@ -738,14 +829,13 @@ function extractSymbols(json) {
|
|
|
738
829
|
}
|
|
739
830
|
}
|
|
740
831
|
});
|
|
741
|
-
|
|
832
|
+
const symbolsSortedDeepestFirst = (0, lodash_1.sortBy)(symbols, (info) => info.depth)
|
|
742
833
|
.reverse()
|
|
743
|
-
.map(
|
|
744
|
-
|
|
745
|
-
for (
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
var elContent = symbolValue === null || symbolValue === void 0 ? void 0 : symbolValue.content;
|
|
834
|
+
.map((el) => el.element);
|
|
835
|
+
let symbolsFound = 0;
|
|
836
|
+
for (const el of symbolsSortedDeepestFirst) {
|
|
837
|
+
const symbolValue = (_b = (_a = el.component) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.symbol;
|
|
838
|
+
const elContent = symbolValue === null || symbolValue === void 0 ? void 0 : symbolValue.content;
|
|
749
839
|
if (!elContent) {
|
|
750
840
|
console.warn('Symbol missing content', el.id);
|
|
751
841
|
if ((_c = el.component) === null || _c === void 0 ? void 0 : _c.options.symbol.content) {
|
|
@@ -753,7 +843,7 @@ function extractSymbols(json) {
|
|
|
753
843
|
}
|
|
754
844
|
continue;
|
|
755
845
|
}
|
|
756
|
-
|
|
846
|
+
const componentName = 'Symbol' + ++symbolsFound;
|
|
757
847
|
el.component.name = componentName;
|
|
758
848
|
if ((_d = el.component) === null || _d === void 0 ? void 0 : _d.options.symbol.content) {
|
|
759
849
|
delete el.component.options.symbol.content;
|
|
@@ -765,18 +855,19 @@ function extractSymbols(json) {
|
|
|
765
855
|
}
|
|
766
856
|
return {
|
|
767
857
|
content: json,
|
|
768
|
-
subComponents
|
|
858
|
+
subComponents,
|
|
769
859
|
};
|
|
770
860
|
}
|
|
771
|
-
|
|
861
|
+
const createBuilderElement = (options) => ({
|
|
862
|
+
'@type': '@builder.io/sdk:Element',
|
|
863
|
+
id: 'builder-' + (0, symbol_processor_1.hashCodeAsString)(options),
|
|
864
|
+
...options,
|
|
865
|
+
});
|
|
772
866
|
exports.createBuilderElement = createBuilderElement;
|
|
773
|
-
|
|
774
|
-
return (el === null || el === void 0 ? void 0 : el['@type']) === '@builder.io/sdk:Element';
|
|
775
|
-
};
|
|
867
|
+
const isBuilderElement = (el) => (el === null || el === void 0 ? void 0 : el['@type']) === '@builder.io/sdk:Element';
|
|
776
868
|
exports.isBuilderElement = isBuilderElement;
|
|
777
|
-
|
|
869
|
+
const builderContentPartToMitosisComponent = (builderContent, options = {}) => {
|
|
778
870
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
779
|
-
if (options === void 0) { options = {}; }
|
|
780
871
|
builderContent = (0, fast_clone_1.fastClone)(builderContent);
|
|
781
872
|
(0, legacy_1.default)(builderContent).forEach(function (elem) {
|
|
782
873
|
var _a, _b;
|
|
@@ -785,7 +876,7 @@ var builderContentPartToMitosisComponent = function (builderContent, options) {
|
|
|
785
876
|
// blocks can contain arbitrary HTML
|
|
786
877
|
// List taken from https://developer.mozilla.org/en-US/docs/Glossary/Empty_element
|
|
787
878
|
// TODO: Maybe this should be using something more robust than a regular expression
|
|
788
|
-
|
|
879
|
+
const voidElemRegex = /(<area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr[^>]+)>/gm;
|
|
789
880
|
try {
|
|
790
881
|
if (((_a = elem.component) === null || _a === void 0 ? void 0 : _a.name) === 'Text') {
|
|
791
882
|
elem.component.options.text = elem.component.options.text.replace(voidElemRegex, '$1 />');
|
|
@@ -804,54 +895,67 @@ var builderContentPartToMitosisComponent = function (builderContent, options) {
|
|
|
804
895
|
}
|
|
805
896
|
}
|
|
806
897
|
});
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
898
|
+
const { state, code } = extractStateHook(((_a = builderContent === null || builderContent === void 0 ? void 0 : builderContent.data) === null || _a === void 0 ? void 0 : _a.tsCode) || ((_b = builderContent === null || builderContent === void 0 ? void 0 : builderContent.data) === null || _b === void 0 ? void 0 : _b.jsCode) || '');
|
|
899
|
+
const customCode = convertExportDefaultToReturn(code);
|
|
900
|
+
const parsed = getHooks(builderContent);
|
|
901
|
+
const parsedState = (parsed === null || parsed === void 0 ? void 0 : parsed.state) || {};
|
|
902
|
+
const mitosisState = Object.keys(parsedState).length > 0
|
|
812
903
|
? parsedState
|
|
813
|
-
:
|
|
814
|
-
|
|
815
|
-
|
|
904
|
+
: {
|
|
905
|
+
...state,
|
|
906
|
+
...(0, helpers_1.mapBuilderContentStateToMitosisState)(((_c = builderContent.data) === null || _c === void 0 ? void 0 : _c.state) || {}),
|
|
907
|
+
};
|
|
908
|
+
const componentJson = (0, create_mitosis_component_1.createMitosisComponent)({
|
|
909
|
+
meta: {
|
|
910
|
+
useMetadata: {
|
|
816
911
|
httpRequests: (_d = builderContent.data) === null || _d === void 0 ? void 0 : _d.httpRequests,
|
|
817
|
-
}
|
|
818
|
-
|
|
912
|
+
},
|
|
913
|
+
...(((_e = builderContent.data) === null || _e === void 0 ? void 0 : _e.cssCode) && { cssCode: builderContent.data.cssCode }),
|
|
914
|
+
},
|
|
915
|
+
inputs: (_g = (_f = builderContent.data) === null || _f === void 0 ? void 0 : _f.inputs) === null || _g === void 0 ? void 0 : _g.map((input) => ({
|
|
819
916
|
name: input.name,
|
|
820
917
|
defaultValue: input.defaultValue,
|
|
821
|
-
})
|
|
918
|
+
})),
|
|
822
919
|
state: mitosisState,
|
|
823
920
|
hooks: {
|
|
824
|
-
onMount:
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
921
|
+
onMount: [
|
|
922
|
+
...((parsed === null || parsed === void 0 ? void 0 : parsed.hooks.onMount.length)
|
|
923
|
+
? parsed === null || parsed === void 0 ? void 0 : parsed.hooks.onMount
|
|
924
|
+
: customCode
|
|
925
|
+
? [{ code: customCode }]
|
|
926
|
+
: []),
|
|
927
|
+
],
|
|
829
928
|
},
|
|
830
929
|
children: (((_h = builderContent.data) === null || _h === void 0 ? void 0 : _h.blocks) || [])
|
|
831
|
-
.filter(
|
|
930
|
+
.filter((item) => {
|
|
832
931
|
var _a, _b;
|
|
833
932
|
if ((_b = (_a = item.properties) === null || _a === void 0 ? void 0 : _a.src) === null || _b === void 0 ? void 0 : _b.includes('/api/v1/pixel')) {
|
|
834
933
|
return false;
|
|
835
934
|
}
|
|
836
935
|
return true;
|
|
837
936
|
})
|
|
838
|
-
.map(
|
|
937
|
+
.map((item) => (0, exports.builderElementToMitosisNode)(item, options)),
|
|
839
938
|
});
|
|
840
939
|
return componentJson;
|
|
841
940
|
};
|
|
842
|
-
|
|
843
|
-
if (options === void 0) { options = {}; }
|
|
941
|
+
const builderContentToMitosisComponent = (builderContent, options = {}) => {
|
|
844
942
|
builderContent = (0, fast_clone_1.fastClone)(builderContent);
|
|
845
|
-
|
|
846
|
-
|
|
943
|
+
const separated = extractSymbols(builderContent);
|
|
944
|
+
const componentJson = {
|
|
945
|
+
...builderContentPartToMitosisComponent(separated.content, options),
|
|
946
|
+
subComponents: separated.subComponents.map((item) => ({
|
|
947
|
+
...builderContentPartToMitosisComponent(item.content, options),
|
|
948
|
+
name: item.name,
|
|
949
|
+
})),
|
|
950
|
+
};
|
|
847
951
|
return componentJson;
|
|
848
952
|
};
|
|
849
953
|
exports.builderContentToMitosisComponent = builderContentToMitosisComponent;
|
|
850
954
|
function mapBuilderBindingsToMitosisBindingWithCode(bindings) {
|
|
851
|
-
|
|
955
|
+
const result = {};
|
|
852
956
|
bindings &&
|
|
853
|
-
Object.keys(bindings).forEach(
|
|
854
|
-
|
|
957
|
+
Object.keys(bindings).forEach((key) => {
|
|
958
|
+
const value = bindings[key];
|
|
855
959
|
if (typeof value === 'string') {
|
|
856
960
|
result[key] = (0, bindings_1.createSingleBinding)({ code: value });
|
|
857
961
|
}
|
|
@@ -865,29 +969,30 @@ function mapBuilderBindingsToMitosisBindingWithCode(bindings) {
|
|
|
865
969
|
return result;
|
|
866
970
|
}
|
|
867
971
|
function removeFalsey(obj) {
|
|
868
|
-
return (0, lodash_1.omitBy)(obj,
|
|
972
|
+
return (0, lodash_1.omitBy)(obj, (value) => !value || value === '0' || value === '0px' || value === 'none' || value === '0%');
|
|
869
973
|
}
|
|
870
974
|
function combineStyles(parent, child) {
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
975
|
+
const marginStyles = ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'];
|
|
976
|
+
const paddingStyles = ['paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight'];
|
|
977
|
+
const distanceStylesToCombine = [...paddingStyles, ...marginStyles];
|
|
978
|
+
const merged = {
|
|
979
|
+
...(0, lodash_1.omit)(removeFalsey(child), distanceStylesToCombine),
|
|
980
|
+
...removeFalsey(parent),
|
|
981
|
+
};
|
|
982
|
+
for (const key of distanceStylesToCombine) {
|
|
877
983
|
// Funky things happen if different alignment
|
|
878
984
|
if (parent.alignSelf !== child.alignSelf && (key === 'marginLeft' || key === 'marginRight')) {
|
|
879
985
|
merged[key] = parent[key];
|
|
880
986
|
continue;
|
|
881
987
|
}
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
988
|
+
const childNum = parseFloat(child[key]) || 0;
|
|
989
|
+
const parentKeyToUse = key.replace(/margin/, 'padding');
|
|
990
|
+
const parentNum = parseFloat(parent[parentKeyToUse]) || 0;
|
|
885
991
|
if (childNum || parentNum) {
|
|
886
|
-
merged[parentKeyToUse] =
|
|
992
|
+
merged[parentKeyToUse] = `${childNum + parentNum}px`;
|
|
887
993
|
}
|
|
888
994
|
}
|
|
889
|
-
for (
|
|
890
|
-
var _c = _b[_a], key = _c[0], value = _c[1];
|
|
995
|
+
for (const [key, value] of Object.entries(merged)) {
|
|
891
996
|
if (value && typeof value === 'object') {
|
|
892
997
|
merged[key] = combineStyles(parent[key] || {}, child[key] || {});
|
|
893
998
|
}
|