@builder.io/mitosis 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/constants/media-sizes.js +4 -5
- package/dist/src/generators/alpine/generate.js +114 -132
- package/dist/src/generators/alpine/render-mount-hook.js +8 -5
- package/dist/src/generators/alpine/render-update-hooks.js +13 -13
- package/dist/src/generators/angular/helpers.js +19 -9
- package/dist/src/generators/angular/index.js +599 -584
- package/dist/src/generators/builder.js +200 -165
- package/dist/src/generators/context/angular.js +32 -26
- package/dist/src/generators/context/helpers/context-with-symbol-key.js +25 -21
- package/dist/src/generators/context/qwik.js +21 -21
- package/dist/src/generators/context/react.js +22 -22
- package/dist/src/generators/context/rsc.js +20 -22
- package/dist/src/generators/context/solid.js +22 -22
- package/dist/src/generators/context/svelte.js +33 -28
- package/dist/src/generators/context/vue.js +1 -1
- package/dist/src/generators/helpers/context.js +6 -13
- package/dist/src/generators/helpers/functions.js +8 -8
- package/dist/src/generators/helpers/on-mount.js +9 -5
- package/dist/src/generators/helpers/rsc.js +7 -9
- package/dist/src/generators/html.js +995 -534
- package/dist/src/generators/liquid.js +81 -79
- package/dist/src/generators/lit/collect-class-string.js +10 -12
- package/dist/src/generators/lit/generate.js +204 -159
- package/dist/src/generators/marko/generate.js +193 -183
- package/dist/src/generators/minify.js +5 -9
- package/dist/src/generators/mitosis.js +135 -134
- package/dist/src/generators/qwik/component-generator.js +159 -154
- package/dist/src/generators/qwik/component.js +51 -81
- package/dist/src/generators/qwik/directives.js +68 -84
- package/dist/src/generators/qwik/helpers/add-prevent-default.js +6 -7
- package/dist/src/generators/qwik/helpers/convert-method-to-function.js +38 -38
- package/dist/src/generators/qwik/helpers/handlers.js +16 -25
- package/dist/src/generators/qwik/helpers/stable-inject.js +7 -8
- package/dist/src/generators/qwik/helpers/stable-serialize.js +7 -8
- package/dist/src/generators/qwik/helpers/state.js +36 -43
- package/dist/src/generators/qwik/helpers/styles.js +19 -40
- package/dist/src/generators/qwik/jsx.js +63 -75
- package/dist/src/generators/qwik/src-generator.js +134 -167
- package/dist/src/generators/react/blocks.js +122 -127
- package/dist/src/generators/react/generator.js +314 -259
- package/dist/src/generators/react/helpers.js +23 -28
- package/dist/src/generators/react/state.js +34 -51
- package/dist/src/generators/react-native/index.js +72 -84
- package/dist/src/generators/react-native/sanitize-react-native-block-styles.js +14 -26
- package/dist/src/generators/rsc.js +30 -36
- package/dist/src/generators/solid/blocks.js +46 -43
- package/dist/src/generators/solid/helpers/styles.js +11 -11
- package/dist/src/generators/solid/index.js +199 -190
- package/dist/src/generators/solid/state/helpers.js +76 -90
- package/dist/src/generators/solid/state/signals.js +30 -37
- package/dist/src/generators/solid/state/state.js +35 -48
- package/dist/src/generators/solid/state/store.js +40 -46
- package/dist/src/generators/stencil/collect-class-string.js +10 -12
- package/dist/src/generators/stencil/generate.js +158 -145
- package/dist/src/generators/svelte/blocks.js +146 -144
- package/dist/src/generators/svelte/helpers.js +10 -17
- package/dist/src/generators/svelte/svelte.js +321 -287
- package/dist/src/generators/swift-ui.js +162 -101
- package/dist/src/generators/taro.js +32 -36
- package/dist/src/generators/template.js +71 -74
- package/dist/src/generators/vue/blocks.js +116 -107
- package/dist/src/generators/vue/compositionApi.js +67 -50
- package/dist/src/generators/vue/helpers.js +71 -96
- package/dist/src/generators/vue/optionsApi.js +134 -105
- package/dist/src/generators/vue/vue.js +210 -207
- package/dist/src/helpers/babel-transform.js +40 -63
- package/dist/src/helpers/bindings.js +4 -12
- package/dist/src/helpers/camel-case.js +4 -5
- package/dist/src/helpers/capitalize.js +1 -1
- package/dist/src/helpers/component-file-extensions.js +23 -35
- package/dist/src/helpers/create-mitosis-component.js +22 -26
- package/dist/src/helpers/create-mitosis-context.js +5 -12
- package/dist/src/helpers/create-mitosis-node.js +10 -12
- package/dist/src/helpers/dash-case.js +2 -2
- package/dist/src/helpers/dedent.js +18 -22
- package/dist/src/helpers/event-handlers.js +1 -1
- package/dist/src/helpers/fast-clone.js +1 -1
- package/dist/src/helpers/filter-empty-text-nodes.js +2 -2
- package/dist/src/helpers/generic-format.js +7 -8
- package/dist/src/helpers/get-bindings.js +4 -4
- package/dist/src/helpers/get-components-used.js +3 -3
- package/dist/src/helpers/get-components.js +4 -4
- package/dist/src/helpers/get-custom-imports.js +10 -12
- package/dist/src/helpers/get-prop-functions.js +7 -8
- package/dist/src/helpers/get-props-ref.js +8 -8
- package/dist/src/helpers/get-props.js +12 -13
- package/dist/src/helpers/get-refs.js +4 -4
- package/dist/src/helpers/get-state-object-string.js +42 -61
- package/dist/src/helpers/get-state-used.js +7 -8
- package/dist/src/helpers/get-styles.js +6 -6
- package/dist/src/helpers/getters-to-functions.js +8 -12
- package/dist/src/helpers/handle-missing-state.js +3 -3
- package/dist/src/helpers/has-bindings-text.js +6 -6
- package/dist/src/helpers/has-component.js +4 -4
- package/dist/src/helpers/has-props.js +3 -3
- package/dist/src/helpers/has-stateful-dom.js +4 -4
- package/dist/src/helpers/has.js +3 -3
- package/dist/src/helpers/indent.js +2 -3
- package/dist/src/helpers/is-children.js +4 -5
- package/dist/src/helpers/is-component.js +1 -1
- package/dist/src/helpers/is-html-attribute.js +2 -11
- package/dist/src/helpers/is-mitosis-node.js +1 -1
- package/dist/src/helpers/is-root-text-node.js +1 -1
- package/dist/src/helpers/is-upper-case.js +1 -1
- package/dist/src/helpers/is-valid-attribute-name.js +1 -1
- package/dist/src/helpers/json.js +2 -2
- package/dist/src/helpers/map-refs.js +29 -40
- package/dist/src/helpers/merge-options.js +20 -31
- package/dist/src/helpers/mitosis-imports.js +5 -6
- package/dist/src/helpers/nodes/for.js +2 -3
- package/dist/src/helpers/nullable.js +1 -3
- package/dist/src/helpers/on-event.js +32 -36
- package/dist/src/helpers/output.js +4 -5
- package/dist/src/helpers/parse-node.js +13 -5
- package/dist/src/helpers/parsers.js +10 -14
- package/dist/src/helpers/patterns.js +6 -8
- package/dist/src/helpers/plugins/process-code/index.js +114 -120
- package/dist/src/helpers/plugins/process-signals.js +114 -125
- package/dist/src/helpers/plugins/process-target-blocks.js +18 -20
- package/dist/src/helpers/process-http-requests.js +8 -4
- package/dist/src/helpers/remove-surrounding-block.js +2 -2
- package/dist/src/helpers/render-imports.js +99 -111
- package/dist/src/helpers/replace-identifiers.js +40 -49
- package/dist/src/helpers/replace-new-lines-in-strings.js +3 -3
- package/dist/src/helpers/signals/signals.js +27 -35
- package/dist/src/helpers/slots.js +11 -20
- package/dist/src/helpers/state.js +1 -3
- package/dist/src/helpers/strip-meta-properties.js +6 -6
- package/dist/src/helpers/strip-state-and-props-refs.js +21 -32
- package/dist/src/helpers/styles/collect-css.js +39 -44
- package/dist/src/helpers/styles/collect-styled-components.js +30 -28
- package/dist/src/helpers/styles/helpers.js +23 -29
- package/dist/src/helpers/trace-reference-to-module-path.js +3 -4
- package/dist/src/helpers/transform-state-setters.js +16 -19
- package/dist/src/helpers/traverse-nodes.js +2 -2
- package/dist/src/helpers/try-prettier-format.js +3 -3
- package/dist/src/helpers/typescript-project.js +25 -25
- package/dist/src/helpers/typescript.js +1 -3
- package/dist/src/modules/plugins.js +20 -28
- package/dist/src/parsers/angular.js +49 -57
- package/dist/src/parsers/builder/builder.js +448 -343
- package/dist/src/parsers/builder/helpers.js +10 -10
- package/dist/src/parsers/context.js +15 -17
- package/dist/src/parsers/jsx/ast.js +11 -11
- package/dist/src/parsers/jsx/component-types.js +22 -32
- package/dist/src/parsers/jsx/context.js +12 -12
- package/dist/src/parsers/jsx/element-parser.js +43 -54
- package/dist/src/parsers/jsx/exports.js +12 -14
- package/dist/src/parsers/jsx/function-parser.js +108 -119
- package/dist/src/parsers/jsx/helpers.js +11 -13
- package/dist/src/parsers/jsx/hooks/helpers.js +14 -16
- package/dist/src/parsers/jsx/hooks/index.js +34 -44
- package/dist/src/parsers/jsx/hooks/use-target.js +27 -27
- package/dist/src/parsers/jsx/imports.js +7 -17
- package/dist/src/parsers/jsx/jsx.js +92 -91
- package/dist/src/parsers/jsx/props-types.js +8 -10
- package/dist/src/parsers/jsx/props.js +15 -23
- package/dist/src/parsers/jsx/signals.js +28 -29
- package/dist/src/parsers/jsx/state.d.ts +2 -4
- package/dist/src/parsers/jsx/state.js +59 -93
- package/dist/src/parsers/svelte/css/index.js +1 -1
- package/dist/src/parsers/svelte/helpers/bindings.js +18 -19
- package/dist/src/parsers/svelte/helpers/children.js +5 -6
- package/dist/src/parsers/svelte/helpers/expressions.js +7 -9
- package/dist/src/parsers/svelte/helpers/hooks.js +2 -2
- package/dist/src/parsers/svelte/helpers/post-process.js +49 -70
- package/dist/src/parsers/svelte/helpers/string.js +5 -5
- package/dist/src/parsers/svelte/html/actions.js +17 -10
- package/dist/src/parsers/svelte/html/each.js +11 -16
- package/dist/src/parsers/svelte/html/element.js +68 -78
- package/dist/src/parsers/svelte/html/fragment.js +3 -3
- package/dist/src/parsers/svelte/html/if-else.js +11 -18
- package/dist/src/parsers/svelte/html/index.js +14 -14
- package/dist/src/parsers/svelte/html/mustache-tag.js +5 -5
- package/dist/src/parsers/svelte/html/slot.js +5 -5
- package/dist/src/parsers/svelte/html/text.js +7 -14
- package/dist/src/parsers/svelte/index.js +23 -72
- package/dist/src/parsers/svelte/instance/context.js +17 -17
- package/dist/src/parsers/svelte/instance/expressions.js +2 -2
- package/dist/src/parsers/svelte/instance/functions.js +35 -30
- package/dist/src/parsers/svelte/instance/hooks.js +4 -5
- package/dist/src/parsers/svelte/instance/imports.js +11 -21
- package/dist/src/parsers/svelte/instance/index.js +22 -22
- package/dist/src/parsers/svelte/instance/properties.js +11 -23
- package/dist/src/parsers/svelte/instance/reactive.js +11 -11
- package/dist/src/parsers/svelte/instance/references.js +13 -13
- package/dist/src/parsers/svelte/instance/statements.js +3 -3
- package/dist/src/parsers/svelte/module/index.js +14 -26
- package/dist/src/parsers/svelte/typescript/index.js +27 -36
- package/dist/src/plugins/compile-away-builder-components.js +223 -156
- package/dist/src/plugins/compile-away-components.js +13 -21
- package/dist/src/plugins/map-styles.js +7 -7
- package/dist/src/symbols/symbol-processor.js +44 -62
- package/dist/src/targets.js +19 -19
- package/dist/src/types/mitosis-node.js +1 -1
- package/package.json +1 -1
|
@@ -18,13 +18,12 @@ exports.sizes = {
|
|
|
18
18
|
default: 991,
|
|
19
19
|
max: 1200,
|
|
20
20
|
},
|
|
21
|
-
getWidthForSize
|
|
21
|
+
getWidthForSize(size) {
|
|
22
22
|
return this[size].default;
|
|
23
23
|
},
|
|
24
|
-
getSizeForWidth
|
|
25
|
-
for (
|
|
26
|
-
|
|
27
|
-
var value = this[size];
|
|
24
|
+
getSizeForWidth(width) {
|
|
25
|
+
for (const size of exports.sizeNames) {
|
|
26
|
+
const value = this[size];
|
|
28
27
|
if (width <= value.max) {
|
|
29
28
|
return size;
|
|
30
29
|
}
|
|
@@ -1,46 +1,32 @@
|
|
|
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
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
3
|
exports.componentToAlpine = exports.isValidAlpineBinding = exports.checkIsComponentNode = void 0;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return node.name === '@builder.io/mitosis/component';
|
|
35
|
-
};
|
|
4
|
+
const babel_transform_1 = require("../../helpers/babel-transform");
|
|
5
|
+
const dash_case_1 = require("../../helpers/dash-case");
|
|
6
|
+
const fast_clone_1 = require("../../helpers/fast-clone");
|
|
7
|
+
const get_refs_1 = require("../../helpers/get-refs");
|
|
8
|
+
const get_state_object_string_1 = require("../../helpers/get-state-object-string");
|
|
9
|
+
const merge_options_1 = require("../../helpers/merge-options");
|
|
10
|
+
const remove_surrounding_block_1 = require("../../helpers/remove-surrounding-block");
|
|
11
|
+
const replace_identifiers_1 = require("../../helpers/replace-identifiers");
|
|
12
|
+
const strip_meta_properties_1 = require("../../helpers/strip-meta-properties");
|
|
13
|
+
const strip_state_and_props_refs_1 = require("../../helpers/strip-state-and-props-refs");
|
|
14
|
+
const collect_css_1 = require("../../helpers/styles/collect-css");
|
|
15
|
+
const mitosis_node_1 = require("../../types/mitosis-node");
|
|
16
|
+
const lodash_1 = require("lodash");
|
|
17
|
+
const standalone_1 = require("prettier/standalone");
|
|
18
|
+
const html_tags_1 = require("../../constants/html_tags");
|
|
19
|
+
const plugins_1 = require("../../modules/plugins");
|
|
20
|
+
const render_mount_hook_1 = require("./render-mount-hook");
|
|
21
|
+
const render_update_hooks_1 = require("./render-update-hooks");
|
|
22
|
+
const checkIsComponentNode = (node) => node.name === '@builder.io/mitosis/component';
|
|
36
23
|
exports.checkIsComponentNode = checkIsComponentNode;
|
|
37
24
|
/**
|
|
38
25
|
* Test if the binding expression would be likely to generate
|
|
39
26
|
* valid or invalid liquid. If we generate invalid liquid tags
|
|
40
27
|
* Shopify will reject our PUT to update the template
|
|
41
28
|
*/
|
|
42
|
-
|
|
43
|
-
if (str === void 0) { str = ''; }
|
|
29
|
+
const isValidAlpineBinding = (str = '') => {
|
|
44
30
|
return true;
|
|
45
31
|
/*
|
|
46
32
|
const strictMatches = Boolean(
|
|
@@ -58,57 +44,53 @@ var isValidAlpineBinding = function (str) {
|
|
|
58
44
|
*/
|
|
59
45
|
};
|
|
60
46
|
exports.isValidAlpineBinding = isValidAlpineBinding;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
(0, get_refs_1.getRefs)(json).forEach(
|
|
66
|
-
str = str.replaceAll(value,
|
|
47
|
+
const removeOnFromEventName = (str) => str.replace(/^on/, '');
|
|
48
|
+
const removeTrailingSemicolon = (str) => str.replace(/;$/, '');
|
|
49
|
+
const trim = (str) => str.trim();
|
|
50
|
+
const replaceInputRefs = (0, lodash_1.curry)((json, str) => {
|
|
51
|
+
(0, get_refs_1.getRefs)(json).forEach((value) => {
|
|
52
|
+
str = str.replaceAll(value, `this.$refs.${value}`);
|
|
67
53
|
});
|
|
68
54
|
return str;
|
|
69
55
|
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
})
|
|
83
|
-
}, removeTrailingSemicolon, trim, remove_surrounding_block_1.removeSurroundingBlock, strip_state_and_props_refs_1.stripStateAndPropsRefs);
|
|
84
|
-
var bindEventHandler = function (_a) {
|
|
85
|
-
var useShorthandSyntax = _a.useShorthandSyntax;
|
|
86
|
-
return function (eventName, code) {
|
|
87
|
-
var bind = useShorthandSyntax ? '@' : 'x-on:';
|
|
88
|
-
return " ".concat(bind).concat(bindEventHandlerKey(eventName), "=\"").concat(bindEventHandlerValue(code).trim(), "\"");
|
|
89
|
-
};
|
|
56
|
+
const replaceStateWithThis = (str) => str.replaceAll('state.', 'this.');
|
|
57
|
+
const getStateObjectString = (json) => (0, lodash_1.flow)(get_state_object_string_1.getStateObjectStringFromComponent, trim, replaceInputRefs(json), (0, render_mount_hook_1.renderMountHook)(json), (0, render_update_hooks_1.renderUpdateHooks)(json), replaceStateWithThis,
|
|
58
|
+
// cleanup bad regexes that result in malformed JSON strings that start with `{,`
|
|
59
|
+
(x) => (x.startsWith('{,') ? x.replace('{,', '{') : x))(json);
|
|
60
|
+
const bindEventHandlerKey = (0, lodash_1.flowRight)(dash_case_1.dashCase, removeOnFromEventName);
|
|
61
|
+
const bindEventHandlerValue = (0, lodash_1.flowRight)((x) => (0, replace_identifiers_1.replaceIdentifiers)({
|
|
62
|
+
code: x,
|
|
63
|
+
from: 'event',
|
|
64
|
+
to: '$event',
|
|
65
|
+
}), removeTrailingSemicolon, trim, remove_surrounding_block_1.removeSurroundingBlock, strip_state_and_props_refs_1.stripStateAndPropsRefs);
|
|
66
|
+
const bindEventHandler = ({ useShorthandSyntax }) => (eventName, code) => {
|
|
67
|
+
const bind = useShorthandSyntax ? '@' : 'x-on:';
|
|
68
|
+
return ` ${bind}${bindEventHandlerKey(eventName)}="${bindEventHandlerValue(code).trim()}"`;
|
|
90
69
|
};
|
|
91
|
-
|
|
92
|
-
For:
|
|
70
|
+
const mappers = {
|
|
71
|
+
For: (json, options) => {
|
|
93
72
|
var _a, _b, _c;
|
|
94
73
|
return !((0, mitosis_node_1.checkIsForNode)(json) &&
|
|
95
74
|
(0, exports.isValidAlpineBinding)((_a = json.bindings.each) === null || _a === void 0 ? void 0 : _a.code) &&
|
|
96
75
|
(0, exports.isValidAlpineBinding)(json.scope.forName))
|
|
97
76
|
? ''
|
|
98
|
-
:
|
|
77
|
+
: `<template x-for="${json.scope.forName} in ${(0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_b = json.bindings.each) === null || _b === void 0 ? void 0 : _b.code)}">
|
|
78
|
+
${((_c = json.children) !== null && _c !== void 0 ? _c : []).map((item) => blockToAlpine(item, options)).join('\n')}
|
|
79
|
+
</template>`;
|
|
99
80
|
},
|
|
100
|
-
Fragment:
|
|
101
|
-
Show:
|
|
81
|
+
Fragment: (json, options) => blockToAlpine({ ...json, name: 'div' }, options),
|
|
82
|
+
Show: (json, options) => {
|
|
102
83
|
var _a, _b, _c;
|
|
103
84
|
return !(0, exports.isValidAlpineBinding)((_a = json.bindings.when) === null || _a === void 0 ? void 0 : _a.code)
|
|
104
85
|
? ''
|
|
105
|
-
:
|
|
86
|
+
: `<template x-if="${(0, strip_state_and_props_refs_1.stripStateAndPropsRefs)((_b = json.bindings.when) === null || _b === void 0 ? void 0 : _b.code)}">
|
|
87
|
+
${((_c = json.children) !== null && _c !== void 0 ? _c : []).map((item) => blockToAlpine(item, options)).join('\n')}
|
|
88
|
+
</template>`;
|
|
106
89
|
},
|
|
107
90
|
};
|
|
108
91
|
// TODO: spread support
|
|
109
|
-
|
|
92
|
+
const blockToAlpine = (json, options = {}) => {
|
|
110
93
|
var _a, _b;
|
|
111
|
-
if (options === void 0) { options = {}; }
|
|
112
94
|
if (mappers[json.name]) {
|
|
113
95
|
return mappers[json.name](json, options);
|
|
114
96
|
}
|
|
@@ -118,10 +100,10 @@ var blockToAlpine = function (json, options) {
|
|
|
118
100
|
}
|
|
119
101
|
if ((_a = json.bindings._text) === null || _a === void 0 ? void 0 : _a.code) {
|
|
120
102
|
return (0, exports.isValidAlpineBinding)(json.bindings._text.code)
|
|
121
|
-
?
|
|
103
|
+
? `<span x-html="${(0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(json.bindings._text.code)}"></span>`
|
|
122
104
|
: '';
|
|
123
105
|
}
|
|
124
|
-
|
|
106
|
+
let str = `<${json.name} `;
|
|
125
107
|
/*
|
|
126
108
|
// Copied from the liquid generator. Not sure what it does.
|
|
127
109
|
if (
|
|
@@ -135,84 +117,84 @@ var blockToAlpine = function (json, options) {
|
|
|
135
117
|
`;
|
|
136
118
|
}
|
|
137
119
|
*/
|
|
138
|
-
for (
|
|
139
|
-
|
|
140
|
-
str +=
|
|
120
|
+
for (const key in json.properties) {
|
|
121
|
+
const value = json.properties[key];
|
|
122
|
+
str += ` ${key}="${value}" `;
|
|
141
123
|
}
|
|
142
|
-
for (
|
|
124
|
+
for (const key in json.bindings) {
|
|
143
125
|
if (key === '_spread' || key === 'css') {
|
|
144
126
|
continue;
|
|
145
127
|
}
|
|
146
|
-
|
|
128
|
+
const { code: value, type: bindingType } = json.bindings[key];
|
|
147
129
|
// TODO: proper babel transform to replace. Util for this
|
|
148
|
-
|
|
130
|
+
const useValue = (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(value);
|
|
149
131
|
if (key.startsWith('on')) {
|
|
150
132
|
str += bindEventHandler(options)(key, value);
|
|
151
133
|
}
|
|
152
134
|
else if (key === 'ref') {
|
|
153
|
-
str +=
|
|
135
|
+
str += ` x-ref="${useValue}"`;
|
|
154
136
|
}
|
|
155
137
|
else if ((0, exports.isValidAlpineBinding)(useValue)) {
|
|
156
|
-
|
|
157
|
-
str +=
|
|
138
|
+
const bind = options.useShorthandSyntax && bindingType !== 'spread' ? ':' : 'x-bind:';
|
|
139
|
+
str += ` ${bind}${bindingType === 'spread' ? '' : key}="${useValue}" `.replace(':=', '=');
|
|
158
140
|
}
|
|
159
141
|
}
|
|
160
142
|
return html_tags_1.SELF_CLOSING_HTML_TAGS.has(json.name)
|
|
161
|
-
?
|
|
162
|
-
:
|
|
143
|
+
? `${str} />`
|
|
144
|
+
: `${str}>${((_b = json.children) !== null && _b !== void 0 ? _b : []).map((item) => blockToAlpine(item, options)).join('\n')}</${json.name}>`;
|
|
163
145
|
};
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
}
|
|
208
|
-
catch (err) {
|
|
209
|
-
console.warn('Could not prettify', { string: str }, err);
|
|
210
|
-
}
|
|
146
|
+
const componentToAlpine = (_options = {}) => ({ component }) => {
|
|
147
|
+
const options = (0, merge_options_1.initializeOptions)({ target: 'alpine', component, defaults: _options });
|
|
148
|
+
let json = (0, fast_clone_1.fastClone)(component);
|
|
149
|
+
if (options.plugins) {
|
|
150
|
+
json = (0, plugins_1.runPreJsonPlugins)({ json, plugins: options.plugins });
|
|
151
|
+
}
|
|
152
|
+
const css = (0, collect_css_1.collectCss)(json);
|
|
153
|
+
(0, strip_meta_properties_1.stripMetaProperties)(json);
|
|
154
|
+
if (options.plugins) {
|
|
155
|
+
json = (0, plugins_1.runPostJsonPlugins)({ json, plugins: options.plugins });
|
|
156
|
+
}
|
|
157
|
+
const componentName = (0, lodash_1.camelCase)(json.name) || 'MyComponent';
|
|
158
|
+
const stateObjectString = getStateObjectString(json);
|
|
159
|
+
// Set x-data on root element
|
|
160
|
+
json.children[0].properties['x-data'] = options.inlineState
|
|
161
|
+
? stateObjectString
|
|
162
|
+
: `${componentName}()`;
|
|
163
|
+
if ((0, render_update_hooks_1.hasRootUpdateHook)(json)) {
|
|
164
|
+
json.children[0].properties['x-effect'] = 'onUpdate';
|
|
165
|
+
}
|
|
166
|
+
let str = css.trim().length ? `<style>${css}</style>` : '';
|
|
167
|
+
str += json.children.map((item) => blockToAlpine(item, options)).join('\n');
|
|
168
|
+
if (!options.inlineState) {
|
|
169
|
+
str += `<script>
|
|
170
|
+
${(0, babel_transform_1.babelTransformCode)(`document.addEventListener('alpine:init', () => {
|
|
171
|
+
Alpine.data('${componentName}', () => (${stateObjectString}))
|
|
172
|
+
})`)}
|
|
173
|
+
</script>`;
|
|
174
|
+
}
|
|
175
|
+
if (options.plugins) {
|
|
176
|
+
str = (0, plugins_1.runPreCodePlugins)({ json, code: str, plugins: options.plugins });
|
|
177
|
+
}
|
|
178
|
+
if (options.prettier !== false) {
|
|
179
|
+
try {
|
|
180
|
+
str = (0, standalone_1.format)(str, {
|
|
181
|
+
parser: 'html',
|
|
182
|
+
htmlWhitespaceSensitivity: 'ignore',
|
|
183
|
+
plugins: [
|
|
184
|
+
// To support running in browsers
|
|
185
|
+
require('prettier/parser-html'),
|
|
186
|
+
require('prettier/parser-postcss'),
|
|
187
|
+
require('prettier/parser-babel'),
|
|
188
|
+
],
|
|
189
|
+
});
|
|
211
190
|
}
|
|
212
|
-
|
|
213
|
-
|
|
191
|
+
catch (err) {
|
|
192
|
+
console.warn('Could not prettify', { string: str }, err);
|
|
214
193
|
}
|
|
215
|
-
|
|
216
|
-
|
|
194
|
+
}
|
|
195
|
+
if (options.plugins) {
|
|
196
|
+
str = (0, plugins_1.runPostCodePlugins)({ json, code: str, plugins: options.plugins });
|
|
197
|
+
}
|
|
198
|
+
return str;
|
|
217
199
|
};
|
|
218
200
|
exports.componentToAlpine = componentToAlpine;
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.renderMountHook = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const on_mount_1 = require("../helpers/on-mount");
|
|
6
|
+
const render_update_hooks_1 = require("./render-update-hooks");
|
|
7
7
|
function shouldRenderMountHook(json) {
|
|
8
8
|
return json.hooks.onMount.length > 0 || (0, render_update_hooks_1.hasWatchHooks)(json);
|
|
9
9
|
}
|
|
10
|
-
exports.renderMountHook = (0, lodash_1.curry)(
|
|
10
|
+
exports.renderMountHook = (0, lodash_1.curry)((json, objectString) => {
|
|
11
11
|
return shouldRenderMountHook(json)
|
|
12
|
-
? objectString.replace(/(?:,)?(\s*)(}\s*)$/,
|
|
12
|
+
? objectString.replace(/(?:,)?(\s*)(}\s*)$/, `, init() {
|
|
13
|
+
${(0, render_update_hooks_1.renderWatchHooks)(json)}
|
|
14
|
+
${(0, on_mount_1.stringifySingleScopeOnMount)(json)}
|
|
15
|
+
}$1$2`)
|
|
13
16
|
: objectString;
|
|
14
17
|
});
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.renderWatchHooks = exports.hasWatchHooks = exports.renderUpdateHooks = exports.hasRootUpdateHook = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const extractCode = (hook) => hook.code;
|
|
6
6
|
function renderRootUpdateHook(hooks, output) {
|
|
7
7
|
if (hooks.length === 0) {
|
|
8
8
|
return output;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const str = `onUpdate() {
|
|
11
|
+
${hooks.map(extractCode).join('\n')}
|
|
12
|
+
}`;
|
|
13
|
+
return output.replace(/,?(\s*})$/, `,\n${str}$1`);
|
|
12
14
|
}
|
|
13
15
|
function getRootUpdateHooks(json) {
|
|
14
16
|
var _a;
|
|
15
|
-
return ((_a = json.hooks.onUpdate) !== null && _a !== void 0 ? _a : []).filter(
|
|
17
|
+
return ((_a = json.hooks.onUpdate) !== null && _a !== void 0 ? _a : []).filter((hook) => hook.deps == '');
|
|
16
18
|
}
|
|
17
19
|
function hasRootUpdateHook(json) {
|
|
18
20
|
return getRootUpdateHooks(json).length > 0;
|
|
19
21
|
}
|
|
20
22
|
exports.hasRootUpdateHook = hasRootUpdateHook;
|
|
21
|
-
exports.renderUpdateHooks = (0, lodash_1.curry)(
|
|
23
|
+
exports.renderUpdateHooks = (0, lodash_1.curry)((json, output) => {
|
|
22
24
|
return renderRootUpdateHook(getRootUpdateHooks(json), output);
|
|
23
25
|
});
|
|
24
26
|
function getWatchHooks(json) {
|
|
25
27
|
var _a;
|
|
26
|
-
return ((_a = json.hooks.onUpdate) !== null && _a !== void 0 ? _a : []).filter(
|
|
28
|
+
return ((_a = json.hooks.onUpdate) !== null && _a !== void 0 ? _a : []).filter((hook) => { var _a; return (_a = hook.deps) === null || _a === void 0 ? void 0 : _a.match(/state|this/); });
|
|
27
29
|
}
|
|
28
|
-
|
|
30
|
+
const hasWatchHooks = (json) => {
|
|
29
31
|
return getWatchHooks(json).length > 0;
|
|
30
32
|
};
|
|
31
33
|
exports.hasWatchHooks = hasWatchHooks;
|
|
32
34
|
function renderWatchHook(hook) {
|
|
33
35
|
var _a, _b;
|
|
34
|
-
|
|
36
|
+
const deps = (_b = ((_a = hook.deps) !== null && _a !== void 0 ? _a : '')) === null || _b === void 0 ? void 0 : _b.slice(1).slice(0, -1).split(', ').filter((dep) => dep.match(/state|this/));
|
|
35
37
|
return deps
|
|
36
|
-
.map(
|
|
37
|
-
return "this.$watch('".concat(dep.replace(/(state|this)\./, ''), "', (value, oldValue) => { ").concat(hook.code, " });");
|
|
38
|
-
})
|
|
38
|
+
.map((dep) => `this.$watch('${dep.replace(/(state|this)\./, '')}', (value, oldValue) => { ${hook.code} });`)
|
|
39
39
|
.join('\n');
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
const renderWatchHooks = (json) => {
|
|
42
42
|
return (0, exports.hasWatchHooks)(json) ? getWatchHooks(json).map(renderWatchHook).join('\n') : '';
|
|
43
43
|
};
|
|
44
44
|
exports.renderWatchHooks = renderWatchHooks;
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAppropriateTemplateFunctionKeys = exports.HELPER_FUNCTIONS = void 0;
|
|
4
|
-
|
|
5
|
-
useObjectWrapper:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
});
|
|
4
|
+
const HELPER_FUNCTIONS = (isTs) => ({
|
|
5
|
+
useObjectWrapper: `useObjectWrapper(...args${isTs ? ': any[]' : ''}) {
|
|
6
|
+
let obj = {}
|
|
7
|
+
args.forEach((arg) => {
|
|
8
|
+
obj = { ...obj, ...arg };
|
|
9
|
+
});
|
|
10
|
+
return obj;
|
|
11
|
+
}`,
|
|
12
|
+
useObjectDotValues: `useObjectDotValues(obj${isTs ? ': any' : ''})${isTs ? ': any[]' : ''}) {
|
|
13
|
+
return Object.values(obj);
|
|
14
|
+
}`,
|
|
15
|
+
useTypeOf: `useTypeOf(obj${isTs ? ': any' : ''})${isTs ? ': string' : ''}) {
|
|
16
|
+
return typeof obj;
|
|
17
|
+
}`,
|
|
18
|
+
useJsonStringify: `useJsonStringify(...args${isTs ? ': any' : ''})${isTs ? ': string' : ''}) {
|
|
19
|
+
return JSON.stringify(...args);
|
|
20
|
+
}`,
|
|
21
|
+
});
|
|
10
22
|
exports.HELPER_FUNCTIONS = HELPER_FUNCTIONS;
|
|
11
|
-
|
|
12
|
-
return Object.keys((0, exports.HELPER_FUNCTIONS)()).filter(function (key) { return code.includes(key); });
|
|
13
|
-
};
|
|
23
|
+
const getAppropriateTemplateFunctionKeys = (code) => Object.keys((0, exports.HELPER_FUNCTIONS)()).filter((key) => code.includes(key));
|
|
14
24
|
exports.getAppropriateTemplateFunctionKeys = getAppropriateTemplateFunctionKeys;
|