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