@builder.io/mitosis 0.3.22 → 0.4.1
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 +176 -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.d.ts +1 -1
- package/dist/src/parsers/builder/builder.js +432 -344
- 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,98 +222,125 @@ 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: {
|
|
@@ -331,29 +348,37 @@ var componentMappers = __assign(__assign({ Symbol: function (block, options) {
|
|
|
331
348
|
indexName: '$index',
|
|
332
349
|
},
|
|
333
350
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
334
|
-
children: (block.children || []).map(
|
|
351
|
+
children: (block.children || []).map((child) => (0, exports.builderElementToMitosisNode)(child, options)),
|
|
335
352
|
});
|
|
336
|
-
},
|
|
353
|
+
},
|
|
354
|
+
Text: (block, options) => {
|
|
337
355
|
var _a;
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
356
|
+
let css = getCssFromBlock(block);
|
|
357
|
+
const styleString = getStyleStringFromBlock(block, options);
|
|
358
|
+
const actionBindings = getActionBindingsFromBlock(block, options);
|
|
359
|
+
const blockBindings = {
|
|
360
|
+
...mapBuilderBindingsToMitosisBindingWithCode(block.bindings),
|
|
361
|
+
...mapBuilderBindingsToMitosisBindingWithCode((_a = block.code) === null || _a === void 0 ? void 0 : _a.bindings),
|
|
362
|
+
};
|
|
363
|
+
const bindings = {
|
|
364
|
+
...(0, lodash_1.omitBy)(blockBindings, (value, key) => {
|
|
365
|
+
if (key === 'component.options.text') {
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
if (key && key.includes('style')) {
|
|
369
|
+
return true;
|
|
370
|
+
}
|
|
371
|
+
return false;
|
|
372
|
+
}),
|
|
373
|
+
...actionBindings,
|
|
374
|
+
...(styleString && {
|
|
375
|
+
style: { code: styleString },
|
|
376
|
+
}),
|
|
377
|
+
...(Object.keys(css).length && {
|
|
378
|
+
css: { code: JSON.stringify(css) },
|
|
379
|
+
}),
|
|
380
|
+
};
|
|
381
|
+
const properties = { ...block.properties };
|
|
357
382
|
if (options.includeBuilderExtras && block.id)
|
|
358
383
|
properties['builder-id'] = block.id;
|
|
359
384
|
if (block.class)
|
|
@@ -361,39 +386,47 @@ var componentMappers = __assign(__assign({ Symbol: function (block, options) {
|
|
|
361
386
|
if (block.layerName) {
|
|
362
387
|
properties.$name = block.layerName;
|
|
363
388
|
}
|
|
364
|
-
|
|
365
|
-
|
|
389
|
+
const innerBindings = {};
|
|
390
|
+
const componentOptionsText = blockBindings['component.options.text'];
|
|
366
391
|
if (componentOptionsText) {
|
|
367
392
|
innerBindings[options.preserveTextBlocks ? 'innerHTML' : '_text'] = (0, bindings_1.createSingleBinding)({
|
|
368
393
|
code: wrapBindingIfNeeded(componentOptionsText.code, options),
|
|
369
394
|
});
|
|
370
395
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
396
|
+
const text = block.component.options.text;
|
|
397
|
+
const innerProperties = innerBindings._text
|
|
398
|
+
? {}
|
|
399
|
+
: {
|
|
400
|
+
[options.preserveTextBlocks ? 'innerHTML' : '_text']: text,
|
|
401
|
+
};
|
|
375
402
|
if (options.preserveTextBlocks) {
|
|
376
403
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
377
404
|
name: block.tagName || 'div',
|
|
378
|
-
bindings
|
|
379
|
-
properties
|
|
405
|
+
bindings,
|
|
406
|
+
properties,
|
|
380
407
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
381
408
|
children: [
|
|
382
409
|
(0, create_mitosis_node_1.createMitosisNode)({
|
|
383
410
|
bindings: innerBindings,
|
|
384
|
-
properties:
|
|
411
|
+
properties: {
|
|
412
|
+
...innerProperties,
|
|
413
|
+
class: 'builder-text',
|
|
414
|
+
},
|
|
385
415
|
}),
|
|
386
416
|
],
|
|
387
417
|
});
|
|
388
418
|
}
|
|
389
419
|
// Disabling for now
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
420
|
+
const assumeLink = false;
|
|
421
|
+
const finalProperties = {
|
|
422
|
+
...(assumeLink
|
|
423
|
+
? {
|
|
424
|
+
href: '...',
|
|
425
|
+
}
|
|
426
|
+
: {}),
|
|
427
|
+
...properties,
|
|
428
|
+
};
|
|
429
|
+
const finalTagname = block.tagName || (assumeLink ? 'a' : 'div');
|
|
397
430
|
if ((block.tagName && block.tagName !== 'div') ||
|
|
398
431
|
hasStyles(block) ||
|
|
399
432
|
hasComponent(block) ||
|
|
@@ -401,7 +434,7 @@ var componentMappers = __assign(__assign({ Symbol: function (block, options) {
|
|
|
401
434
|
hasProperties(block)) {
|
|
402
435
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
403
436
|
name: finalTagname,
|
|
404
|
-
bindings
|
|
437
|
+
bindings,
|
|
405
438
|
properties: finalProperties,
|
|
406
439
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
407
440
|
children: [
|
|
@@ -414,52 +447,58 @@ var componentMappers = __assign(__assign({ Symbol: function (block, options) {
|
|
|
414
447
|
}
|
|
415
448
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
416
449
|
name: finalTagname,
|
|
417
|
-
properties:
|
|
418
|
-
|
|
450
|
+
properties: {
|
|
451
|
+
...finalProperties,
|
|
452
|
+
...properties,
|
|
453
|
+
...innerProperties,
|
|
454
|
+
},
|
|
455
|
+
bindings: {
|
|
456
|
+
...bindings,
|
|
457
|
+
...innerBindings,
|
|
458
|
+
},
|
|
419
459
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
420
460
|
});
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
if (((_b = block.component) === null || _b === void 0 ? void 0 : _b.name) === 'Core:Fragment') {
|
|
461
|
+
},
|
|
462
|
+
};
|
|
463
|
+
const builderElementToMitosisNode = (block, options, _internalOptions = {}) => {
|
|
464
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
465
|
+
const { includeSpecialBindings = true } = options;
|
|
466
|
+
if (((_a = block.component) === null || _a === void 0 ? void 0 : _a.name) === 'Core:Fragment') {
|
|
428
467
|
block.component.name = 'Fragment';
|
|
429
468
|
}
|
|
430
|
-
|
|
469
|
+
const forBinding = (_b = block.repeat) === null || _b === void 0 ? void 0 : _b.collection;
|
|
431
470
|
if (forBinding) {
|
|
432
|
-
|
|
471
|
+
const isFragment = ((_c = block.component) === null || _c === void 0 ? void 0 : _c.name) === 'Fragment';
|
|
433
472
|
// TODO: handle having other things, like a repeat too
|
|
434
473
|
if (isFragment) {
|
|
435
474
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
436
475
|
name: 'For',
|
|
437
476
|
bindings: {
|
|
438
477
|
each: (0, bindings_1.createSingleBinding)({
|
|
439
|
-
code: wrapBindingIfNeeded((
|
|
478
|
+
code: wrapBindingIfNeeded((_d = block.repeat) === null || _d === void 0 ? void 0 : _d.collection, options),
|
|
440
479
|
}),
|
|
441
480
|
},
|
|
442
481
|
scope: {
|
|
443
|
-
forName: ((
|
|
482
|
+
forName: ((_e = block.repeat) === null || _e === void 0 ? void 0 : _e.itemName) || 'item',
|
|
444
483
|
indexName: '$index',
|
|
445
484
|
},
|
|
446
485
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
447
|
-
children: ((
|
|
486
|
+
children: ((_f = block.children) === null || _f === void 0 ? void 0 : _f.map((child) => (0, exports.builderElementToMitosisNode)(child, options))) || [],
|
|
448
487
|
});
|
|
449
488
|
}
|
|
450
489
|
else {
|
|
451
|
-
|
|
490
|
+
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
|
|
452
491
|
? block.children[0]
|
|
453
492
|
: block;
|
|
454
493
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
455
494
|
name: 'For',
|
|
456
495
|
bindings: {
|
|
457
496
|
each: (0, bindings_1.createSingleBinding)({
|
|
458
|
-
code: wrapBindingIfNeeded((
|
|
497
|
+
code: wrapBindingIfNeeded((_j = block.repeat) === null || _j === void 0 ? void 0 : _j.collection, options),
|
|
459
498
|
}),
|
|
460
499
|
},
|
|
461
500
|
scope: {
|
|
462
|
-
forName: ((
|
|
501
|
+
forName: ((_k = block.repeat) === null || _k === void 0 ? void 0 : _k.itemName) || 'item',
|
|
463
502
|
indexName: '$index',
|
|
464
503
|
},
|
|
465
504
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
@@ -469,77 +508,92 @@ var builderElementToMitosisNode = function (block, options, _internalOptions) {
|
|
|
469
508
|
}
|
|
470
509
|
// Special builder properties
|
|
471
510
|
// TODO: support hide and repeat
|
|
472
|
-
|
|
473
|
-
|
|
511
|
+
const blockBindings = getBlockBindings(block, options);
|
|
512
|
+
let code = undefined;
|
|
474
513
|
if (blockBindings.show) {
|
|
475
514
|
code = wrapBindingIfNeeded(blockBindings.show, options);
|
|
476
515
|
}
|
|
477
516
|
else if (blockBindings.hide) {
|
|
478
|
-
code =
|
|
517
|
+
code = `!(${wrapBindingIfNeeded(blockBindings.hide, options)})`;
|
|
479
518
|
}
|
|
480
519
|
if (code) {
|
|
481
|
-
|
|
520
|
+
const isFragment = ((_l = block.component) === null || _l === void 0 ? void 0 : _l.name) === 'Fragment';
|
|
482
521
|
// TODO: handle having other things, like a repeat too
|
|
483
522
|
if (isFragment) {
|
|
484
523
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
485
524
|
name: 'Show',
|
|
486
|
-
bindings: { when: (0, bindings_1.createSingleBinding)({ code
|
|
525
|
+
bindings: { when: (0, bindings_1.createSingleBinding)({ code }) },
|
|
487
526
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
488
|
-
children: ((
|
|
527
|
+
children: ((_m = block.children) === null || _m === void 0 ? void 0 : _m.map((child) => (0, exports.builderElementToMitosisNode)(child, options))) || [],
|
|
489
528
|
});
|
|
490
529
|
}
|
|
491
530
|
else {
|
|
492
531
|
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
493
532
|
name: 'Show',
|
|
494
|
-
bindings: { when: (0, bindings_1.createSingleBinding)({ code
|
|
533
|
+
bindings: { when: (0, bindings_1.createSingleBinding)({ code }) },
|
|
495
534
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
496
535
|
children: [
|
|
497
|
-
(0, exports.builderElementToMitosisNode)(
|
|
536
|
+
(0, exports.builderElementToMitosisNode)({
|
|
537
|
+
...block,
|
|
538
|
+
code: {
|
|
539
|
+
...block.code,
|
|
540
|
+
bindings: (0, lodash_1.omit)(blockBindings, 'show', 'hide'),
|
|
541
|
+
},
|
|
542
|
+
bindings: (0, lodash_1.omit)(blockBindings, 'show', 'hide'),
|
|
543
|
+
}, options),
|
|
498
544
|
],
|
|
499
545
|
});
|
|
500
546
|
}
|
|
501
547
|
}
|
|
502
|
-
|
|
548
|
+
const mapper = !_internalOptions.skipMapper && block.component && componentMappers[block.component.name];
|
|
503
549
|
if (mapper) {
|
|
504
550
|
return mapper(block, options);
|
|
505
551
|
}
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
552
|
+
const bindings = {};
|
|
553
|
+
const children = [];
|
|
554
|
+
const slots = {};
|
|
509
555
|
if (blockBindings) {
|
|
510
|
-
for (
|
|
556
|
+
for (const key in blockBindings) {
|
|
511
557
|
if (key === 'css') {
|
|
512
558
|
continue;
|
|
513
559
|
}
|
|
514
|
-
|
|
560
|
+
const useKey = key.replace(/^(component\.)?options\./, '');
|
|
515
561
|
if (!useKey.includes('.')) {
|
|
516
562
|
bindings[useKey] = (0, bindings_1.createSingleBinding)({
|
|
517
563
|
code: blockBindings[key].code || blockBindings[key],
|
|
518
564
|
});
|
|
519
565
|
}
|
|
520
566
|
else if (useKey.includes('style') && useKey.includes('.')) {
|
|
521
|
-
|
|
567
|
+
const styleProperty = useKey.split('.')[1];
|
|
522
568
|
// TODO: add me in
|
|
523
569
|
// styleBindings[styleProperty] =
|
|
524
570
|
// block.code?.bindings?.[key] || blockBindings[key];
|
|
525
571
|
}
|
|
526
572
|
}
|
|
527
573
|
}
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
574
|
+
const properties = {
|
|
575
|
+
...block.properties,
|
|
576
|
+
...(options.includeBuilderExtras && {
|
|
577
|
+
['builder-id']: block.id,
|
|
578
|
+
// class: `builder-block ${block.id} ${block.properties?.class || ''}`,
|
|
579
|
+
}),
|
|
580
|
+
...(options.includeBuilderExtras && getBuilderPropsForSymbol(block)),
|
|
581
|
+
};
|
|
531
582
|
if (block.layerName) {
|
|
532
583
|
properties.$name = block.layerName;
|
|
533
584
|
}
|
|
534
585
|
if (block.linkUrl) {
|
|
535
586
|
properties.href = block.linkUrl;
|
|
536
587
|
}
|
|
537
|
-
if ((
|
|
538
|
-
for (
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
588
|
+
if ((_o = block.component) === null || _o === void 0 ? void 0 : _o.options) {
|
|
589
|
+
for (const key in block.component.options) {
|
|
590
|
+
const value = block.component.options[key];
|
|
591
|
+
const valueIsArrayOfBuilderElements = Array.isArray(value) && value.every(exports.isBuilderElement);
|
|
592
|
+
const transformBldrElementToMitosisNode = (item) => {
|
|
593
|
+
const node = (0, exports.builderElementToMitosisNode)(item, {
|
|
594
|
+
...options,
|
|
595
|
+
includeSpecialBindings: false,
|
|
596
|
+
});
|
|
543
597
|
return node;
|
|
544
598
|
};
|
|
545
599
|
if ((0, exports.isBuilderElement)(value)) {
|
|
@@ -549,8 +603,8 @@ var builderElementToMitosisNode = function (block, options, _internalOptions) {
|
|
|
549
603
|
properties[key] = value;
|
|
550
604
|
}
|
|
551
605
|
else if (valueIsArrayOfBuilderElements) {
|
|
552
|
-
|
|
553
|
-
.filter(
|
|
606
|
+
const childrenElements = value
|
|
607
|
+
.filter((item) => {
|
|
554
608
|
var _a, _b;
|
|
555
609
|
if ((_b = (_a = item.properties) === null || _a === void 0 ? void 0 : _a.src) === null || _b === void 0 ? void 0 : _b.includes('/api/v1/pixel')) {
|
|
556
610
|
return false;
|
|
@@ -568,41 +622,52 @@ var builderElementToMitosisNode = function (block, options, _internalOptions) {
|
|
|
568
622
|
if (block.component && block.tagName && block.tagName !== 'div') {
|
|
569
623
|
properties.builderTag = block.tagName;
|
|
570
624
|
}
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
for (
|
|
625
|
+
const css = getCssFromBlock(block);
|
|
626
|
+
let styleString = getStyleStringFromBlock(block, options);
|
|
627
|
+
const actionBindings = getActionBindingsFromBlock(block, options);
|
|
628
|
+
for (const binding in blockBindings) {
|
|
575
629
|
if (binding.startsWith('component.options') || binding.startsWith('options')) {
|
|
576
|
-
|
|
577
|
-
|
|
630
|
+
const value = blockBindings[binding];
|
|
631
|
+
const useKey = binding.replace(/^(component\.options\.|options\.)/, '');
|
|
578
632
|
bindings[useKey] = (0, bindings_1.createSingleBinding)({ code: value });
|
|
579
633
|
}
|
|
580
634
|
}
|
|
581
|
-
|
|
582
|
-
name: ((
|
|
635
|
+
const node = (0, create_mitosis_node_1.createMitosisNode)({
|
|
636
|
+
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, '')) ||
|
|
583
637
|
block.tagName ||
|
|
584
638
|
(block.linkUrl ? 'a' : 'div'),
|
|
585
|
-
properties:
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
639
|
+
properties: {
|
|
640
|
+
...(block.component && includeSpecialBindings && { $tagName: block.tagName }),
|
|
641
|
+
...(block.class && { class: block.class }),
|
|
642
|
+
...properties,
|
|
643
|
+
},
|
|
644
|
+
bindings: {
|
|
645
|
+
...bindings,
|
|
646
|
+
...actionBindings,
|
|
647
|
+
...(styleString && {
|
|
648
|
+
style: (0, bindings_1.createSingleBinding)({ code: styleString }),
|
|
649
|
+
}),
|
|
650
|
+
...(css &&
|
|
651
|
+
Object.keys(css).length && {
|
|
652
|
+
css: (0, bindings_1.createSingleBinding)({ code: JSON.stringify(css) }),
|
|
653
|
+
}),
|
|
654
|
+
},
|
|
655
|
+
slots: {
|
|
656
|
+
...slots,
|
|
657
|
+
},
|
|
593
658
|
meta: (0, exports.getMetaFromBlock)(block, options),
|
|
594
659
|
});
|
|
595
660
|
// Has single text node child
|
|
596
|
-
|
|
597
|
-
if (((
|
|
598
|
-
((
|
|
661
|
+
const firstChild = (_r = block.children) === null || _r === void 0 ? void 0 : _r[0];
|
|
662
|
+
if (((_s = block.children) === null || _s === void 0 ? void 0 : _s.length) === 1 &&
|
|
663
|
+
((_t = firstChild === null || firstChild === void 0 ? void 0 : firstChild.component) === null || _t === void 0 ? void 0 : _t.name) === 'Text' &&
|
|
599
664
|
!options.preserveTextBlocks) {
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
665
|
+
const textProperties = (0, exports.builderElementToMitosisNode)(firstChild, options);
|
|
666
|
+
const parsedNodeCss = json5_1.default.parse(((_u = node.bindings.css) === null || _u === void 0 ? void 0 : _u.code) || '{}');
|
|
667
|
+
const parsedTextCss = json5_1.default.parse(((_v = textProperties.bindings.css) === null || _v === void 0 ? void 0 : _v.code) || '{}');
|
|
668
|
+
const mergedCss = combineStyles(parsedNodeCss, parsedTextCss);
|
|
604
669
|
// Don't merge if text has styling that matters
|
|
605
|
-
|
|
670
|
+
const doNotMerge =
|
|
606
671
|
// Text has flex alignment
|
|
607
672
|
['end', 'right', 'center'].includes(parsedTextCss.alignSelf) ||
|
|
608
673
|
// Text has specific styling
|
|
@@ -611,42 +676,51 @@ var builderElementToMitosisNode = function (block, options, _internalOptions) {
|
|
|
611
676
|
parsedTextCss.background;
|
|
612
677
|
if (!doNotMerge) {
|
|
613
678
|
return (0, lodash_1.merge)({}, textProperties, node, {
|
|
614
|
-
bindings:
|
|
615
|
-
|
|
616
|
-
|
|
679
|
+
bindings: {
|
|
680
|
+
...(Object.keys(mergedCss).length && {
|
|
681
|
+
css: { code: json5_1.default.stringify(mergedCss) },
|
|
682
|
+
}),
|
|
683
|
+
},
|
|
617
684
|
});
|
|
618
685
|
}
|
|
619
686
|
}
|
|
620
|
-
node.children = children.concat((block.children || []).map(
|
|
687
|
+
node.children = children.concat((block.children || []).map((item) => (0, exports.builderElementToMitosisNode)(item, options)));
|
|
621
688
|
return node;
|
|
622
689
|
};
|
|
623
690
|
exports.builderElementToMitosisNode = builderElementToMitosisNode;
|
|
624
|
-
|
|
691
|
+
const getBuilderPropsForSymbol = (block) => {
|
|
625
692
|
var _a, _b;
|
|
626
693
|
if (((_a = block.children) === null || _a === void 0 ? void 0 : _a.length) === 1) {
|
|
627
|
-
|
|
628
|
-
|
|
694
|
+
const child = block.children[0];
|
|
695
|
+
const builderContentId = (_b = child.properties) === null || _b === void 0 ? void 0 : _b['builder-content-id'];
|
|
629
696
|
if (builderContentId) {
|
|
630
697
|
return { 'builder-content-id': builderContentId };
|
|
631
698
|
}
|
|
632
699
|
}
|
|
633
700
|
return undefined;
|
|
634
701
|
};
|
|
635
|
-
|
|
636
|
-
|
|
702
|
+
const getMetaFromBlock = (block, options) => {
|
|
703
|
+
const { includeMeta = false } = options;
|
|
637
704
|
return includeMeta
|
|
638
|
-
?
|
|
705
|
+
? {
|
|
706
|
+
'builder-id': block.id,
|
|
707
|
+
...block.meta,
|
|
708
|
+
}
|
|
709
|
+
: {};
|
|
639
710
|
};
|
|
640
711
|
exports.getMetaFromBlock = getMetaFromBlock;
|
|
641
|
-
|
|
712
|
+
const getHooks = (content) => {
|
|
642
713
|
var _a, _b;
|
|
643
|
-
|
|
714
|
+
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) || '');
|
|
644
715
|
try {
|
|
645
|
-
return (0, jsx_1.parseJsx)(
|
|
646
|
-
|
|
716
|
+
return (0, jsx_1.parseJsx)(`
|
|
717
|
+
export default function TemporaryComponent() {
|
|
718
|
+
${
|
|
719
|
+
// Mitosis parser looks for useStore to be a variable assignment,
|
|
647
720
|
// but in Builder that's not how it works. For now do a replace to
|
|
648
721
|
// easily resuse the same parsing code as this is the only difference
|
|
649
|
-
code.replace(
|
|
722
|
+
code.replace(`useStore(`, `var state = useStore(`)}
|
|
723
|
+
}`);
|
|
650
724
|
}
|
|
651
725
|
catch (err) {
|
|
652
726
|
console.warn('Could not parse js code as a Mitosis component body', err, code);
|
|
@@ -654,23 +728,23 @@ var getHooks = function (content) {
|
|
|
654
728
|
}
|
|
655
729
|
};
|
|
656
730
|
/**
|
|
657
|
-
* Take Builder custom jsCode and extract the contents of the
|
|
731
|
+
* Take Builder custom jsCode and extract the contents of the useStore hook
|
|
658
732
|
* and return it as a JS object along with the inputted code with the hook
|
|
659
733
|
* code extracted
|
|
660
734
|
*/
|
|
661
735
|
function extractStateHook(code) {
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
for (
|
|
667
|
-
|
|
736
|
+
const { types } = babel;
|
|
737
|
+
let state = {};
|
|
738
|
+
const body = (0, parsers_1.parseCode)(code);
|
|
739
|
+
const newBody = body.slice();
|
|
740
|
+
for (let i = 0; i < body.length; i++) {
|
|
741
|
+
const statement = body[i];
|
|
668
742
|
if (types.isExpressionStatement(statement)) {
|
|
669
|
-
|
|
670
|
-
// Check for
|
|
743
|
+
const { expression } = statement;
|
|
744
|
+
// Check for useStore
|
|
671
745
|
if (types.isCallExpression(expression)) {
|
|
672
|
-
if (types.isIdentifier(expression.callee) && expression.callee.name === '
|
|
673
|
-
|
|
746
|
+
if (types.isIdentifier(expression.callee) && expression.callee.name === 'useStore') {
|
|
747
|
+
const arg = expression.arguments[0];
|
|
674
748
|
if (types.isObjectExpression(arg)) {
|
|
675
749
|
state = (0, state_1.parseStateObjectToMitosisState)(arg);
|
|
676
750
|
newBody.splice(i, 1);
|
|
@@ -681,7 +755,7 @@ function extractStateHook(code) {
|
|
|
681
755
|
expression.callee.object.name === 'Object') {
|
|
682
756
|
if (types.isIdentifier(expression.callee.property) &&
|
|
683
757
|
expression.callee.property.name === 'assign') {
|
|
684
|
-
|
|
758
|
+
const arg = expression.arguments[1];
|
|
685
759
|
if (types.isObjectExpression(arg)) {
|
|
686
760
|
state = (0, state_1.parseStateObjectToMitosisState)(arg);
|
|
687
761
|
newBody.splice(i, 1);
|
|
@@ -692,17 +766,17 @@ function extractStateHook(code) {
|
|
|
692
766
|
}
|
|
693
767
|
}
|
|
694
768
|
}
|
|
695
|
-
|
|
696
|
-
return { code: newCode, state
|
|
769
|
+
const newCode = (0, generator_1.default)(types.program(newBody)).code || '';
|
|
770
|
+
return { code: newCode, state };
|
|
697
771
|
}
|
|
698
772
|
exports.extractStateHook = extractStateHook;
|
|
699
773
|
function convertExportDefaultToReturn(code) {
|
|
700
774
|
try {
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
for (
|
|
705
|
-
|
|
775
|
+
const { types } = babel;
|
|
776
|
+
const body = (0, parsers_1.parseCode)(code);
|
|
777
|
+
const newBody = body.slice();
|
|
778
|
+
for (let i = 0; i < body.length; i++) {
|
|
779
|
+
const statement = body[i];
|
|
706
780
|
if (types.isExportDefaultDeclaration(statement)) {
|
|
707
781
|
if (types.isCallExpression(statement.declaration) ||
|
|
708
782
|
types.isExpression(statement.declaration)) {
|
|
@@ -713,7 +787,7 @@ function convertExportDefaultToReturn(code) {
|
|
|
713
787
|
return (0, generator_1.default)(types.program(newBody)).code || '';
|
|
714
788
|
}
|
|
715
789
|
catch (e) {
|
|
716
|
-
|
|
790
|
+
const error = e;
|
|
717
791
|
if (error.code === 'BABEL_PARSE_ERROR') {
|
|
718
792
|
return code;
|
|
719
793
|
}
|
|
@@ -726,8 +800,8 @@ exports.convertExportDefaultToReturn = convertExportDefaultToReturn;
|
|
|
726
800
|
// TODO: maybe this should be part of the builder -> Mitosis part
|
|
727
801
|
function extractSymbols(json) {
|
|
728
802
|
var _a, _b, _c, _d;
|
|
729
|
-
|
|
730
|
-
|
|
803
|
+
const subComponents = [];
|
|
804
|
+
const symbols = [];
|
|
731
805
|
(0, legacy_1.default)(json).forEach(function (item) {
|
|
732
806
|
var _a;
|
|
733
807
|
if ((0, exports.isBuilderElement)(item)) {
|
|
@@ -736,14 +810,13 @@ function extractSymbols(json) {
|
|
|
736
810
|
}
|
|
737
811
|
}
|
|
738
812
|
});
|
|
739
|
-
|
|
813
|
+
const symbolsSortedDeepestFirst = (0, lodash_1.sortBy)(symbols, (info) => info.depth)
|
|
740
814
|
.reverse()
|
|
741
|
-
.map(
|
|
742
|
-
|
|
743
|
-
for (
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
var elContent = symbolValue === null || symbolValue === void 0 ? void 0 : symbolValue.content;
|
|
815
|
+
.map((el) => el.element);
|
|
816
|
+
let symbolsFound = 0;
|
|
817
|
+
for (const el of symbolsSortedDeepestFirst) {
|
|
818
|
+
const symbolValue = (_b = (_a = el.component) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.symbol;
|
|
819
|
+
const elContent = symbolValue === null || symbolValue === void 0 ? void 0 : symbolValue.content;
|
|
747
820
|
if (!elContent) {
|
|
748
821
|
console.warn('Symbol missing content', el.id);
|
|
749
822
|
if ((_c = el.component) === null || _c === void 0 ? void 0 : _c.options.symbol.content) {
|
|
@@ -751,7 +824,7 @@ function extractSymbols(json) {
|
|
|
751
824
|
}
|
|
752
825
|
continue;
|
|
753
826
|
}
|
|
754
|
-
|
|
827
|
+
const componentName = 'Symbol' + ++symbolsFound;
|
|
755
828
|
el.component.name = componentName;
|
|
756
829
|
if ((_d = el.component) === null || _d === void 0 ? void 0 : _d.options.symbol.content) {
|
|
757
830
|
delete el.component.options.symbol.content;
|
|
@@ -763,18 +836,19 @@ function extractSymbols(json) {
|
|
|
763
836
|
}
|
|
764
837
|
return {
|
|
765
838
|
content: json,
|
|
766
|
-
subComponents
|
|
839
|
+
subComponents,
|
|
767
840
|
};
|
|
768
841
|
}
|
|
769
|
-
|
|
842
|
+
const createBuilderElement = (options) => ({
|
|
843
|
+
'@type': '@builder.io/sdk:Element',
|
|
844
|
+
id: 'builder-' + (0, symbol_processor_1.hashCodeAsString)(options),
|
|
845
|
+
...options,
|
|
846
|
+
});
|
|
770
847
|
exports.createBuilderElement = createBuilderElement;
|
|
771
|
-
|
|
772
|
-
return (el === null || el === void 0 ? void 0 : el['@type']) === '@builder.io/sdk:Element';
|
|
773
|
-
};
|
|
848
|
+
const isBuilderElement = (el) => (el === null || el === void 0 ? void 0 : el['@type']) === '@builder.io/sdk:Element';
|
|
774
849
|
exports.isBuilderElement = isBuilderElement;
|
|
775
|
-
|
|
850
|
+
const builderContentPartToMitosisComponent = (builderContent, options = {}) => {
|
|
776
851
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
777
|
-
if (options === void 0) { options = {}; }
|
|
778
852
|
builderContent = (0, fast_clone_1.fastClone)(builderContent);
|
|
779
853
|
(0, legacy_1.default)(builderContent).forEach(function (elem) {
|
|
780
854
|
var _a, _b;
|
|
@@ -783,7 +857,7 @@ var builderContentPartToMitosisComponent = function (builderContent, options) {
|
|
|
783
857
|
// blocks can contain arbitrary HTML
|
|
784
858
|
// List taken from https://developer.mozilla.org/en-US/docs/Glossary/Empty_element
|
|
785
859
|
// TODO: Maybe this should be using something more robust than a regular expression
|
|
786
|
-
|
|
860
|
+
const voidElemRegex = /(<area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr[^>]+)>/gm;
|
|
787
861
|
try {
|
|
788
862
|
if (((_a = elem.component) === null || _a === void 0 ? void 0 : _a.name) === 'Text') {
|
|
789
863
|
elem.component.options.text = elem.component.options.text.replace(voidElemRegex, '$1 />');
|
|
@@ -802,54 +876,67 @@ var builderContentPartToMitosisComponent = function (builderContent, options) {
|
|
|
802
876
|
}
|
|
803
877
|
}
|
|
804
878
|
});
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
879
|
+
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) || '');
|
|
880
|
+
const customCode = convertExportDefaultToReturn(code);
|
|
881
|
+
const parsed = getHooks(builderContent);
|
|
882
|
+
const parsedState = (parsed === null || parsed === void 0 ? void 0 : parsed.state) || {};
|
|
883
|
+
const mitosisState = Object.keys(parsedState).length > 0
|
|
810
884
|
? parsedState
|
|
811
|
-
:
|
|
812
|
-
|
|
813
|
-
|
|
885
|
+
: {
|
|
886
|
+
...state,
|
|
887
|
+
...(0, helpers_1.mapBuilderContentStateToMitosisState)(((_c = builderContent.data) === null || _c === void 0 ? void 0 : _c.state) || {}),
|
|
888
|
+
};
|
|
889
|
+
const componentJson = (0, create_mitosis_component_1.createMitosisComponent)({
|
|
890
|
+
meta: {
|
|
891
|
+
useMetadata: {
|
|
814
892
|
httpRequests: (_d = builderContent.data) === null || _d === void 0 ? void 0 : _d.httpRequests,
|
|
815
|
-
}
|
|
816
|
-
|
|
893
|
+
},
|
|
894
|
+
...(((_e = builderContent.data) === null || _e === void 0 ? void 0 : _e.cssCode) && { cssCode: builderContent.data.cssCode }),
|
|
895
|
+
},
|
|
896
|
+
inputs: (_g = (_f = builderContent.data) === null || _f === void 0 ? void 0 : _f.inputs) === null || _g === void 0 ? void 0 : _g.map((input) => ({
|
|
817
897
|
name: input.name,
|
|
818
898
|
defaultValue: input.defaultValue,
|
|
819
|
-
})
|
|
899
|
+
})),
|
|
820
900
|
state: mitosisState,
|
|
821
901
|
hooks: {
|
|
822
|
-
onMount:
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
902
|
+
onMount: [
|
|
903
|
+
...((parsed === null || parsed === void 0 ? void 0 : parsed.hooks.onMount.length)
|
|
904
|
+
? parsed === null || parsed === void 0 ? void 0 : parsed.hooks.onMount
|
|
905
|
+
: customCode
|
|
906
|
+
? [{ code: customCode }]
|
|
907
|
+
: []),
|
|
908
|
+
],
|
|
827
909
|
},
|
|
828
910
|
children: (((_h = builderContent.data) === null || _h === void 0 ? void 0 : _h.blocks) || [])
|
|
829
|
-
.filter(
|
|
911
|
+
.filter((item) => {
|
|
830
912
|
var _a, _b;
|
|
831
913
|
if ((_b = (_a = item.properties) === null || _a === void 0 ? void 0 : _a.src) === null || _b === void 0 ? void 0 : _b.includes('/api/v1/pixel')) {
|
|
832
914
|
return false;
|
|
833
915
|
}
|
|
834
916
|
return true;
|
|
835
917
|
})
|
|
836
|
-
.map(
|
|
918
|
+
.map((item) => (0, exports.builderElementToMitosisNode)(item, options)),
|
|
837
919
|
});
|
|
838
920
|
return componentJson;
|
|
839
921
|
};
|
|
840
|
-
|
|
841
|
-
if (options === void 0) { options = {}; }
|
|
922
|
+
const builderContentToMitosisComponent = (builderContent, options = {}) => {
|
|
842
923
|
builderContent = (0, fast_clone_1.fastClone)(builderContent);
|
|
843
|
-
|
|
844
|
-
|
|
924
|
+
const separated = extractSymbols(builderContent);
|
|
925
|
+
const componentJson = {
|
|
926
|
+
...builderContentPartToMitosisComponent(separated.content, options),
|
|
927
|
+
subComponents: separated.subComponents.map((item) => ({
|
|
928
|
+
...builderContentPartToMitosisComponent(item.content, options),
|
|
929
|
+
name: item.name,
|
|
930
|
+
})),
|
|
931
|
+
};
|
|
845
932
|
return componentJson;
|
|
846
933
|
};
|
|
847
934
|
exports.builderContentToMitosisComponent = builderContentToMitosisComponent;
|
|
848
935
|
function mapBuilderBindingsToMitosisBindingWithCode(bindings) {
|
|
849
|
-
|
|
936
|
+
const result = {};
|
|
850
937
|
bindings &&
|
|
851
|
-
Object.keys(bindings).forEach(
|
|
852
|
-
|
|
938
|
+
Object.keys(bindings).forEach((key) => {
|
|
939
|
+
const value = bindings[key];
|
|
853
940
|
if (typeof value === 'string') {
|
|
854
941
|
result[key] = (0, bindings_1.createSingleBinding)({ code: value });
|
|
855
942
|
}
|
|
@@ -863,29 +950,30 @@ function mapBuilderBindingsToMitosisBindingWithCode(bindings) {
|
|
|
863
950
|
return result;
|
|
864
951
|
}
|
|
865
952
|
function removeFalsey(obj) {
|
|
866
|
-
return (0, lodash_1.omitBy)(obj,
|
|
953
|
+
return (0, lodash_1.omitBy)(obj, (value) => !value || value === '0' || value === '0px' || value === 'none' || value === '0%');
|
|
867
954
|
}
|
|
868
955
|
function combineStyles(parent, child) {
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
956
|
+
const marginStyles = ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'];
|
|
957
|
+
const paddingStyles = ['paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight'];
|
|
958
|
+
const distanceStylesToCombine = [...paddingStyles, ...marginStyles];
|
|
959
|
+
const merged = {
|
|
960
|
+
...(0, lodash_1.omit)(removeFalsey(child), distanceStylesToCombine),
|
|
961
|
+
...removeFalsey(parent),
|
|
962
|
+
};
|
|
963
|
+
for (const key of distanceStylesToCombine) {
|
|
875
964
|
// Funky things happen if different alignment
|
|
876
965
|
if (parent.alignSelf !== child.alignSelf && (key === 'marginLeft' || key === 'marginRight')) {
|
|
877
966
|
merged[key] = parent[key];
|
|
878
967
|
continue;
|
|
879
968
|
}
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
969
|
+
const childNum = parseFloat(child[key]) || 0;
|
|
970
|
+
const parentKeyToUse = key.replace(/margin/, 'padding');
|
|
971
|
+
const parentNum = parseFloat(parent[parentKeyToUse]) || 0;
|
|
883
972
|
if (childNum || parentNum) {
|
|
884
|
-
merged[parentKeyToUse] =
|
|
973
|
+
merged[parentKeyToUse] = `${childNum + parentNum}px`;
|
|
885
974
|
}
|
|
886
975
|
}
|
|
887
|
-
for (
|
|
888
|
-
var _c = _b[_a], key = _c[0], value = _c[1];
|
|
976
|
+
for (const [key, value] of Object.entries(merged)) {
|
|
889
977
|
if (value && typeof value === 'object') {
|
|
890
978
|
merged[key] = combineStyles(parent[key] || {}, child[key] || {});
|
|
891
979
|
}
|