@builder.io/mitosis 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/constants/media-sizes.js +4 -5
- package/dist/src/generators/alpine/generate.js +114 -132
- package/dist/src/generators/alpine/render-mount-hook.js +8 -5
- package/dist/src/generators/alpine/render-update-hooks.js +13 -13
- package/dist/src/generators/angular/helpers.js +19 -9
- package/dist/src/generators/angular/index.js +599 -584
- package/dist/src/generators/builder.js +200 -165
- package/dist/src/generators/context/angular.js +32 -26
- package/dist/src/generators/context/helpers/context-with-symbol-key.js +25 -21
- package/dist/src/generators/context/qwik.js +21 -21
- package/dist/src/generators/context/react.js +22 -22
- package/dist/src/generators/context/rsc.js +20 -22
- package/dist/src/generators/context/solid.js +22 -22
- package/dist/src/generators/context/svelte.js +33 -28
- package/dist/src/generators/context/vue.js +1 -1
- package/dist/src/generators/helpers/context.js +6 -13
- package/dist/src/generators/helpers/functions.js +8 -8
- package/dist/src/generators/helpers/on-mount.js +9 -5
- package/dist/src/generators/helpers/rsc.js +7 -9
- package/dist/src/generators/html.js +995 -534
- package/dist/src/generators/liquid.js +81 -79
- package/dist/src/generators/lit/collect-class-string.js +10 -12
- package/dist/src/generators/lit/generate.js +204 -159
- package/dist/src/generators/marko/generate.js +193 -183
- package/dist/src/generators/minify.js +5 -9
- package/dist/src/generators/mitosis.js +135 -134
- package/dist/src/generators/qwik/component-generator.js +159 -154
- package/dist/src/generators/qwik/component.js +51 -81
- package/dist/src/generators/qwik/directives.js +68 -84
- package/dist/src/generators/qwik/helpers/add-prevent-default.js +6 -7
- package/dist/src/generators/qwik/helpers/convert-method-to-function.js +38 -38
- package/dist/src/generators/qwik/helpers/handlers.js +16 -25
- package/dist/src/generators/qwik/helpers/stable-inject.js +7 -8
- package/dist/src/generators/qwik/helpers/stable-serialize.js +7 -8
- package/dist/src/generators/qwik/helpers/state.js +36 -43
- package/dist/src/generators/qwik/helpers/styles.js +19 -40
- package/dist/src/generators/qwik/jsx.js +63 -75
- package/dist/src/generators/qwik/src-generator.js +134 -167
- package/dist/src/generators/react/blocks.js +122 -127
- package/dist/src/generators/react/generator.js +314 -259
- package/dist/src/generators/react/helpers.js +23 -28
- package/dist/src/generators/react/state.js +34 -51
- package/dist/src/generators/react-native/index.js +72 -84
- package/dist/src/generators/react-native/sanitize-react-native-block-styles.js +14 -26
- package/dist/src/generators/rsc.js +30 -36
- package/dist/src/generators/solid/blocks.js +46 -43
- package/dist/src/generators/solid/helpers/styles.js +11 -11
- package/dist/src/generators/solid/index.js +199 -190
- package/dist/src/generators/solid/state/helpers.js +76 -90
- package/dist/src/generators/solid/state/signals.js +30 -37
- package/dist/src/generators/solid/state/state.js +35 -48
- package/dist/src/generators/solid/state/store.js +40 -46
- package/dist/src/generators/stencil/collect-class-string.js +10 -12
- package/dist/src/generators/stencil/generate.js +158 -145
- package/dist/src/generators/svelte/blocks.js +146 -144
- package/dist/src/generators/svelte/helpers.js +10 -17
- package/dist/src/generators/svelte/svelte.js +321 -287
- package/dist/src/generators/swift-ui.js +162 -101
- package/dist/src/generators/taro.js +32 -36
- package/dist/src/generators/template.js +71 -74
- package/dist/src/generators/vue/blocks.js +116 -107
- package/dist/src/generators/vue/compositionApi.js +67 -50
- package/dist/src/generators/vue/helpers.js +71 -96
- package/dist/src/generators/vue/optionsApi.js +134 -105
- package/dist/src/generators/vue/vue.js +210 -207
- package/dist/src/helpers/babel-transform.js +40 -63
- package/dist/src/helpers/bindings.js +4 -12
- package/dist/src/helpers/camel-case.js +4 -5
- package/dist/src/helpers/capitalize.js +1 -1
- package/dist/src/helpers/component-file-extensions.js +23 -35
- package/dist/src/helpers/create-mitosis-component.js +22 -26
- package/dist/src/helpers/create-mitosis-context.js +5 -12
- package/dist/src/helpers/create-mitosis-node.js +10 -12
- package/dist/src/helpers/dash-case.js +2 -2
- package/dist/src/helpers/dedent.js +18 -22
- package/dist/src/helpers/event-handlers.js +1 -1
- package/dist/src/helpers/fast-clone.js +1 -1
- package/dist/src/helpers/filter-empty-text-nodes.js +2 -2
- package/dist/src/helpers/generic-format.js +7 -8
- package/dist/src/helpers/get-bindings.js +4 -4
- package/dist/src/helpers/get-components-used.js +3 -3
- package/dist/src/helpers/get-components.js +4 -4
- package/dist/src/helpers/get-custom-imports.js +10 -12
- package/dist/src/helpers/get-prop-functions.js +7 -8
- package/dist/src/helpers/get-props-ref.js +8 -8
- package/dist/src/helpers/get-props.js +12 -13
- package/dist/src/helpers/get-refs.js +4 -4
- package/dist/src/helpers/get-state-object-string.js +42 -61
- package/dist/src/helpers/get-state-used.js +7 -8
- package/dist/src/helpers/get-styles.js +6 -6
- package/dist/src/helpers/getters-to-functions.js +8 -12
- package/dist/src/helpers/handle-missing-state.js +3 -3
- package/dist/src/helpers/has-bindings-text.js +6 -6
- package/dist/src/helpers/has-component.js +4 -4
- package/dist/src/helpers/has-props.js +3 -3
- package/dist/src/helpers/has-stateful-dom.js +4 -4
- package/dist/src/helpers/has.js +3 -3
- package/dist/src/helpers/indent.js +2 -3
- package/dist/src/helpers/is-children.js +4 -5
- package/dist/src/helpers/is-component.js +1 -1
- package/dist/src/helpers/is-html-attribute.js +2 -11
- package/dist/src/helpers/is-mitosis-node.js +1 -1
- package/dist/src/helpers/is-root-text-node.js +1 -1
- package/dist/src/helpers/is-upper-case.js +1 -1
- package/dist/src/helpers/is-valid-attribute-name.js +1 -1
- package/dist/src/helpers/json.js +2 -2
- package/dist/src/helpers/map-refs.js +29 -40
- package/dist/src/helpers/merge-options.js +20 -31
- package/dist/src/helpers/mitosis-imports.js +5 -6
- package/dist/src/helpers/nodes/for.js +2 -3
- package/dist/src/helpers/nullable.js +1 -3
- package/dist/src/helpers/on-event.js +32 -36
- package/dist/src/helpers/output.js +4 -5
- package/dist/src/helpers/parse-node.js +13 -5
- package/dist/src/helpers/parsers.js +10 -14
- package/dist/src/helpers/patterns.js +6 -8
- package/dist/src/helpers/plugins/process-code/index.js +114 -120
- package/dist/src/helpers/plugins/process-signals.js +114 -125
- package/dist/src/helpers/plugins/process-target-blocks.js +18 -20
- package/dist/src/helpers/process-http-requests.js +8 -4
- package/dist/src/helpers/remove-surrounding-block.js +2 -2
- package/dist/src/helpers/render-imports.js +99 -111
- package/dist/src/helpers/replace-identifiers.js +40 -49
- package/dist/src/helpers/replace-new-lines-in-strings.js +3 -3
- package/dist/src/helpers/signals/signals.js +27 -35
- package/dist/src/helpers/slots.js +11 -20
- package/dist/src/helpers/state.js +1 -3
- package/dist/src/helpers/strip-meta-properties.js +6 -6
- package/dist/src/helpers/strip-state-and-props-refs.js +21 -32
- package/dist/src/helpers/styles/collect-css.js +39 -44
- package/dist/src/helpers/styles/collect-styled-components.js +30 -28
- package/dist/src/helpers/styles/helpers.js +23 -29
- package/dist/src/helpers/trace-reference-to-module-path.js +3 -4
- package/dist/src/helpers/transform-state-setters.js +16 -19
- package/dist/src/helpers/traverse-nodes.js +2 -2
- package/dist/src/helpers/try-prettier-format.js +3 -3
- package/dist/src/helpers/typescript-project.js +25 -25
- package/dist/src/helpers/typescript.js +1 -3
- package/dist/src/modules/plugins.js +20 -28
- package/dist/src/parsers/angular.js +49 -57
- package/dist/src/parsers/builder/builder.js +448 -343
- package/dist/src/parsers/builder/helpers.js +10 -10
- package/dist/src/parsers/context.js +15 -17
- package/dist/src/parsers/jsx/ast.js +11 -11
- package/dist/src/parsers/jsx/component-types.js +22 -32
- package/dist/src/parsers/jsx/context.js +12 -12
- package/dist/src/parsers/jsx/element-parser.js +43 -54
- package/dist/src/parsers/jsx/exports.js +12 -14
- package/dist/src/parsers/jsx/function-parser.js +108 -119
- package/dist/src/parsers/jsx/helpers.js +11 -13
- package/dist/src/parsers/jsx/hooks/helpers.js +14 -16
- package/dist/src/parsers/jsx/hooks/index.js +34 -44
- package/dist/src/parsers/jsx/hooks/use-target.js +27 -27
- package/dist/src/parsers/jsx/imports.js +7 -17
- package/dist/src/parsers/jsx/jsx.js +92 -91
- package/dist/src/parsers/jsx/props-types.js +8 -10
- package/dist/src/parsers/jsx/props.js +15 -23
- package/dist/src/parsers/jsx/signals.js +28 -29
- package/dist/src/parsers/jsx/state.d.ts +2 -4
- package/dist/src/parsers/jsx/state.js +59 -93
- package/dist/src/parsers/svelte/css/index.js +1 -1
- package/dist/src/parsers/svelte/helpers/bindings.js +18 -19
- package/dist/src/parsers/svelte/helpers/children.js +5 -6
- package/dist/src/parsers/svelte/helpers/expressions.js +7 -9
- package/dist/src/parsers/svelte/helpers/hooks.js +2 -2
- package/dist/src/parsers/svelte/helpers/post-process.js +49 -70
- package/dist/src/parsers/svelte/helpers/string.js +5 -5
- package/dist/src/parsers/svelte/html/actions.js +17 -10
- package/dist/src/parsers/svelte/html/each.js +11 -16
- package/dist/src/parsers/svelte/html/element.js +68 -78
- package/dist/src/parsers/svelte/html/fragment.js +3 -3
- package/dist/src/parsers/svelte/html/if-else.js +11 -18
- package/dist/src/parsers/svelte/html/index.js +14 -14
- package/dist/src/parsers/svelte/html/mustache-tag.js +5 -5
- package/dist/src/parsers/svelte/html/slot.js +5 -5
- package/dist/src/parsers/svelte/html/text.js +7 -14
- package/dist/src/parsers/svelte/index.js +23 -72
- package/dist/src/parsers/svelte/instance/context.js +17 -17
- package/dist/src/parsers/svelte/instance/expressions.js +2 -2
- package/dist/src/parsers/svelte/instance/functions.js +35 -30
- package/dist/src/parsers/svelte/instance/hooks.js +4 -5
- package/dist/src/parsers/svelte/instance/imports.js +11 -21
- package/dist/src/parsers/svelte/instance/index.js +22 -22
- package/dist/src/parsers/svelte/instance/properties.js +11 -23
- package/dist/src/parsers/svelte/instance/reactive.js +11 -11
- package/dist/src/parsers/svelte/instance/references.js +13 -13
- package/dist/src/parsers/svelte/instance/statements.js +3 -3
- package/dist/src/parsers/svelte/module/index.js +14 -26
- package/dist/src/parsers/svelte/typescript/index.js +27 -36
- package/dist/src/plugins/compile-away-builder-components.js +223 -156
- package/dist/src/plugins/compile-away-components.js +13 -21
- package/dist/src/plugins/map-styles.js +7 -7
- package/dist/src/symbols/symbol-processor.js +44 -62
- package/dist/src/targets.js +19 -19
- package/dist/src/types/mitosis-node.js +1 -1
- package/package.json +1 -1
|
@@ -1,31 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.replaceSlotsInString = exports.toKebabSlot = exports.stripSlotPrefix = exports.isSlotProperty = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (slotPrefix === void 0) { slotPrefix = SLOT_PREFIX; }
|
|
11
|
-
return key.startsWith(slotPrefix);
|
|
12
|
-
};
|
|
4
|
+
const core_1 = require("@babel/core");
|
|
5
|
+
const function_1 = require("fp-ts/function");
|
|
6
|
+
const lodash_1 = require("lodash");
|
|
7
|
+
const babel_transform_1 = require("./babel-transform");
|
|
8
|
+
const SLOT_PREFIX = 'slot';
|
|
9
|
+
const isSlotProperty = (key, slotPrefix = SLOT_PREFIX) => key.startsWith(slotPrefix);
|
|
13
10
|
exports.isSlotProperty = isSlotProperty;
|
|
14
|
-
|
|
15
|
-
if (slotPrefix === void 0) { slotPrefix = SLOT_PREFIX; }
|
|
16
|
-
return (0, exports.isSlotProperty)(key, slotPrefix) ? key.substring(slotPrefix.length) : key;
|
|
17
|
-
};
|
|
11
|
+
const stripSlotPrefix = (key, slotPrefix = SLOT_PREFIX) => (0, exports.isSlotProperty)(key, slotPrefix) ? key.substring(slotPrefix.length) : key;
|
|
18
12
|
exports.stripSlotPrefix = stripSlotPrefix;
|
|
19
|
-
|
|
20
|
-
if (slotPrefix === void 0) { slotPrefix = SLOT_PREFIX; }
|
|
21
|
-
return (0, function_1.pipe)((0, exports.stripSlotPrefix)(key, slotPrefix), lodash_1.kebabCase);
|
|
22
|
-
};
|
|
13
|
+
const toKebabSlot = (key, slotPrefix = SLOT_PREFIX) => (0, function_1.pipe)((0, exports.stripSlotPrefix)(key, slotPrefix), lodash_1.kebabCase);
|
|
23
14
|
exports.toKebabSlot = toKebabSlot;
|
|
24
15
|
function replaceSlotsInString(code, mapper) {
|
|
25
16
|
return (0, babel_transform_1.babelTransformExpression)(code, {
|
|
26
|
-
Identifier
|
|
27
|
-
|
|
28
|
-
|
|
17
|
+
Identifier(path) {
|
|
18
|
+
const name = path.node.name;
|
|
19
|
+
const isSlot = (0, exports.isSlotProperty)(name);
|
|
29
20
|
if (isSlot) {
|
|
30
21
|
path.replaceWith(core_1.types.identifier(mapper((0, exports.stripSlotPrefix)(name).toLowerCase())));
|
|
31
22
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.checkHasState = void 0;
|
|
4
|
-
|
|
5
|
-
return Boolean(Object.keys(component.state).length);
|
|
6
|
-
};
|
|
4
|
+
const checkHasState = (component) => Boolean(Object.keys(component.state).length);
|
|
7
5
|
exports.checkHasState = checkHasState;
|
|
@@ -4,17 +4,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.stripMetaProperties = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
(0, legacy_1.default)(json).forEach(
|
|
7
|
+
const legacy_1 = __importDefault(require("neotraverse/legacy"));
|
|
8
|
+
const is_mitosis_node_1 = require("./is-mitosis-node");
|
|
9
|
+
const stripMetaProperties = (json) => {
|
|
10
|
+
(0, legacy_1.default)(json).forEach((item) => {
|
|
11
11
|
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
12
|
-
for (
|
|
12
|
+
for (const property in item.properties) {
|
|
13
13
|
if (property.startsWith('$')) {
|
|
14
14
|
delete item.properties[property];
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
for (
|
|
17
|
+
for (const property in item.bindings) {
|
|
18
18
|
if (property.startsWith('$')) {
|
|
19
19
|
delete item.bindings[property];
|
|
20
20
|
}
|
|
@@ -1,19 +1,8 @@
|
|
|
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.stripStateAndPropsRefs = exports.DO_NOT_USE_VARS_TRANSFORMS = exports.DO_NOT_USE_CONTEXT_VARS_TRANSFORMS = void 0;
|
|
15
|
-
|
|
16
|
-
|
|
4
|
+
const replace_identifiers_1 = require("./replace-identifiers");
|
|
5
|
+
const DEFAULT_OPTIONS = {
|
|
17
6
|
replaceWith: '',
|
|
18
7
|
includeProps: true,
|
|
19
8
|
includeState: true,
|
|
@@ -24,9 +13,8 @@ var DEFAULT_OPTIONS = {
|
|
|
24
13
|
*
|
|
25
14
|
* If you need to re-use this, re-create it as an AST tranform first.
|
|
26
15
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
contextVars === null || contextVars === void 0 ? void 0 : contextVars.forEach(function (_var) {
|
|
16
|
+
const DO_NOT_USE_CONTEXT_VARS_TRANSFORMS = ({ code, contextVars, context, }) => {
|
|
17
|
+
contextVars === null || contextVars === void 0 ? void 0 : contextVars.forEach((_var) => {
|
|
30
18
|
code = code.replace(
|
|
31
19
|
// determine expression edge cases - https://regex101.com/r/iNcTSM/1
|
|
32
20
|
new RegExp('(^|\\n|\\r| |;|\\(|\\[|!)' + _var + '(\\?\\.|\\.|\\(| |;|\\)|$)', 'g'), '$1' + context + _var + '$2');
|
|
@@ -40,21 +28,20 @@ exports.DO_NOT_USE_CONTEXT_VARS_TRANSFORMS = DO_NOT_USE_CONTEXT_VARS_TRANSFORMS;
|
|
|
40
28
|
*
|
|
41
29
|
* If you need to re-use a part of this, re-create it as an AST tranform first.
|
|
42
30
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
outputVars === null || outputVars === void 0 ? void 0 : outputVars.forEach(function (_var) {
|
|
31
|
+
const DO_NOT_USE_VARS_TRANSFORMS = (newCode, { context = 'this.', domRefs, outputVars, stateVars, contextVars }) => {
|
|
32
|
+
newCode = (0, exports.DO_NOT_USE_CONTEXT_VARS_TRANSFORMS)({ code: newCode, context, contextVars });
|
|
33
|
+
outputVars === null || outputVars === void 0 ? void 0 : outputVars.forEach((_var) => {
|
|
47
34
|
// determine expression edge cases onMessage( to this.onMessage.emit(
|
|
48
|
-
|
|
49
|
-
|
|
35
|
+
const regexp = '(^|\\s|;|\\()(props\\.?)' + _var + '\\(';
|
|
36
|
+
const replacer = '$1' + context + _var + '.emit(';
|
|
50
37
|
newCode = newCode.replace(new RegExp(regexp, 'g'), replacer);
|
|
51
38
|
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
domRefs === null || domRefs === void 0 ? void 0 : domRefs.forEach(
|
|
55
|
-
newCode = newCode.replace(new RegExp(
|
|
39
|
+
const matchPropertyAccessorsArguments = '\\?\\.|,|\\.|\\(| |;|\\)|\\]|$'; // foo?.stuff | foo) | foo | foo] etc.
|
|
40
|
+
const matchVariableUseInClass = '^|\\n|\\r| |;|\\(|\\[|!|,'; // foo | (foo | !foo | foo, | [foo etc.
|
|
41
|
+
domRefs === null || domRefs === void 0 ? void 0 : domRefs.forEach((_var) => {
|
|
42
|
+
newCode = newCode.replace(new RegExp(`(${matchVariableUseInClass})${_var}(${matchPropertyAccessorsArguments})`, 'g'), '$1' + 'this.' + _var + '$2');
|
|
56
43
|
});
|
|
57
|
-
stateVars === null || stateVars === void 0 ? void 0 : stateVars.forEach(
|
|
44
|
+
stateVars === null || stateVars === void 0 ? void 0 : stateVars.forEach((_var) => {
|
|
58
45
|
newCode = newCode.replace(
|
|
59
46
|
/*
|
|
60
47
|
1. Skip anything that is a class variable declaration
|
|
@@ -66,7 +53,7 @@ var DO_NOT_USE_VARS_TRANSFORMS = function (newCode, _a) {
|
|
|
66
53
|
stuff = function stuff() {} or get stuff
|
|
67
54
|
3. If the conditions are met then try to match all use cases of the class variables, see above.
|
|
68
55
|
*/
|
|
69
|
-
new RegExp(
|
|
56
|
+
new RegExp(`(?!^${_var}|^ ${_var})(?<!function|get)(${matchVariableUseInClass})${_var}(${matchPropertyAccessorsArguments})`, 'g'), '$1' + 'this.' + _var + '$2');
|
|
70
57
|
});
|
|
71
58
|
return newCode;
|
|
72
59
|
};
|
|
@@ -78,10 +65,12 @@ exports.DO_NOT_USE_VARS_TRANSFORMS = DO_NOT_USE_VARS_TRANSFORMS;
|
|
|
78
65
|
* This is for support for frameworks like Vue, Svelte, liquid, etc
|
|
79
66
|
*
|
|
80
67
|
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
68
|
+
const stripStateAndPropsRefs = (code, _options = {}) => {
|
|
69
|
+
let newCode = code || '';
|
|
70
|
+
const { replaceWith, includeProps, includeState } = {
|
|
71
|
+
...DEFAULT_OPTIONS,
|
|
72
|
+
..._options,
|
|
73
|
+
};
|
|
85
74
|
if (includeProps !== false) {
|
|
86
75
|
newCode = (0, replace_identifiers_1.replacePropsIdentifier)(replaceWith)(newCode);
|
|
87
76
|
// TODO: webcomponent edge-case
|
|
@@ -4,51 +4,50 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.collectCss = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
const legacy_1 = __importDefault(require("neotraverse/legacy"));
|
|
8
|
+
const object_hash_1 = __importDefault(require("object-hash"));
|
|
9
|
+
const dash_case_1 = require("../dash-case");
|
|
10
|
+
const is_mitosis_node_1 = require("../is-mitosis-node");
|
|
11
|
+
const helpers_1 = require("./helpers");
|
|
12
|
+
const trimClassStr = (classStr) => classStr.trim().replace(/\s{2,}/g, ' ');
|
|
13
|
+
const updateClassForNode = (item, className) => {
|
|
14
14
|
if (item.bindings.class) {
|
|
15
15
|
// combine className with existing binding. We use single quotes because in Vue, bindings are wrapped in double quotes
|
|
16
16
|
// e.g. <div :class="_classStringToObject(this.className + ' div-21azgz5avex')" />
|
|
17
|
-
item.bindings.class.code = trimClassStr(
|
|
17
|
+
item.bindings.class.code = trimClassStr(`${item.bindings.class.code} + ' ${className}'`);
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
|
-
item.properties.class = trimClassStr(
|
|
20
|
+
item.properties.class = trimClassStr(`${item.properties.class || ''} ${className}`);
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var componentHashes = {};
|
|
23
|
+
const collectStyles = (json, options = {}) => {
|
|
24
|
+
const styleMap = {};
|
|
25
|
+
const componentIndexes = {};
|
|
26
|
+
const componentHashes = {};
|
|
28
27
|
(0, legacy_1.default)(json).forEach(function (item) {
|
|
29
28
|
var _a;
|
|
30
29
|
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
31
30
|
if ((0, helpers_1.nodeHasCss)(item)) {
|
|
32
|
-
|
|
31
|
+
const value = (0, helpers_1.parseCssObject)((_a = item.bindings.css) === null || _a === void 0 ? void 0 : _a.code);
|
|
33
32
|
delete item.bindings.css;
|
|
34
|
-
|
|
33
|
+
const componentName = item.properties.$name
|
|
35
34
|
? (0, dash_case_1.dashCase)(item.properties.$name)
|
|
36
35
|
: /^h\d$/.test(item.name || '') // don't dashcase h1 into h-1
|
|
37
36
|
? item.name
|
|
38
37
|
: (0, dash_case_1.dashCase)(item.name || 'div');
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
const classNameWPrefix = `${componentName}${options.prefix ? `-${options.prefix}` : ''}`;
|
|
39
|
+
const stylesHash = (0, object_hash_1.default)(value);
|
|
41
40
|
if (componentHashes[componentName] === stylesHash) {
|
|
42
|
-
|
|
43
|
-
updateClassForNode(item,
|
|
41
|
+
const className = classNameWPrefix;
|
|
42
|
+
updateClassForNode(item, className);
|
|
44
43
|
return;
|
|
45
44
|
}
|
|
46
45
|
if (!componentHashes[componentName]) {
|
|
47
46
|
componentHashes[componentName] = stylesHash;
|
|
48
47
|
}
|
|
49
|
-
|
|
48
|
+
const index = (componentIndexes[componentName] =
|
|
50
49
|
(componentIndexes[componentName] || 0) + 1);
|
|
51
|
-
|
|
50
|
+
const className = `${classNameWPrefix}${index === 1 ? '' : `-${index}`}`;
|
|
52
51
|
updateClassForNode(item, className);
|
|
53
52
|
styleMap[className] = value;
|
|
54
53
|
}
|
|
@@ -57,44 +56,40 @@ var collectStyles = function (json, options) {
|
|
|
57
56
|
});
|
|
58
57
|
return styleMap;
|
|
59
58
|
};
|
|
60
|
-
|
|
59
|
+
const collectCss = (json, options = {}) => {
|
|
61
60
|
var _a;
|
|
62
|
-
|
|
63
|
-
var styles = collectStyles(json, options);
|
|
61
|
+
const styles = collectStyles(json, options);
|
|
64
62
|
// TODO create and use a root selector
|
|
65
|
-
|
|
66
|
-
css += !!((_a = json.style) === null || _a === void 0 ? void 0 : _a.length) ?
|
|
63
|
+
let css = '';
|
|
64
|
+
css += !!((_a = json.style) === null || _a === void 0 ? void 0 : _a.length) ? `${json.style}\n` : '';
|
|
67
65
|
css += classStyleMapToCss(styles);
|
|
68
66
|
return css;
|
|
69
67
|
};
|
|
70
68
|
exports.collectCss = collectCss;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
str +=
|
|
76
|
-
|
|
77
|
-
for (
|
|
78
|
-
|
|
69
|
+
const classStyleMapToCss = (map) => {
|
|
70
|
+
let str = '';
|
|
71
|
+
for (const key in map) {
|
|
72
|
+
const styles = (0, helpers_1.getStylesOnly)(map[key]);
|
|
73
|
+
str += `.${key} {\n${(0, helpers_1.styleMapToCss)(styles)}\n}`;
|
|
74
|
+
const nestedSelectors = (0, helpers_1.getNestedSelectors)(map[key]);
|
|
75
|
+
for (const nestedSelector in nestedSelectors) {
|
|
76
|
+
const value = nestedSelectors[nestedSelector];
|
|
79
77
|
if (nestedSelector.startsWith('@')) {
|
|
80
|
-
str +=
|
|
78
|
+
str += `${nestedSelector} { .${key} { ${(0, helpers_1.styleMapToCss)(value)} } }`;
|
|
81
79
|
}
|
|
82
80
|
else {
|
|
83
|
-
|
|
81
|
+
const getSelector = (nestedSelector) => {
|
|
84
82
|
if (nestedSelector.startsWith(':')) {
|
|
85
|
-
return
|
|
83
|
+
return `.${key}${nestedSelector}`;
|
|
86
84
|
}
|
|
87
85
|
if (nestedSelector.includes('&')) {
|
|
88
|
-
return nestedSelector.replace(/&/g,
|
|
86
|
+
return nestedSelector.replace(/&/g, `.${key}`);
|
|
89
87
|
}
|
|
90
|
-
return
|
|
88
|
+
return `.${key} ${nestedSelector}`;
|
|
91
89
|
};
|
|
92
|
-
str +=
|
|
90
|
+
str += `${getSelector(nestedSelector)} {\n${(0, helpers_1.styleMapToCss)(value)}\n}`;
|
|
93
91
|
}
|
|
94
92
|
}
|
|
95
|
-
};
|
|
96
|
-
for (var key in map) {
|
|
97
|
-
_loop_1(key);
|
|
98
93
|
}
|
|
99
94
|
return str;
|
|
100
95
|
};
|
|
@@ -4,54 +4,56 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.collectStyledComponents = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
const lodash_1 = require("lodash");
|
|
8
|
+
const legacy_1 = __importDefault(require("neotraverse/legacy"));
|
|
9
|
+
const object_hash_1 = __importDefault(require("object-hash"));
|
|
10
|
+
const capitalize_1 = require("../capitalize");
|
|
11
|
+
const is_mitosis_node_1 = require("../is-mitosis-node");
|
|
12
|
+
const is_upper_case_1 = require("../is-upper-case");
|
|
13
|
+
const helpers_1 = require("./helpers");
|
|
14
|
+
const collectStyledComponents = (json) => {
|
|
15
|
+
let styledComponentsCode = '';
|
|
16
|
+
const componentIndexes = {};
|
|
17
|
+
const componentHashes = {};
|
|
18
18
|
(0, legacy_1.default)(json).forEach(function (item) {
|
|
19
19
|
var _a;
|
|
20
20
|
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
21
21
|
if ((0, helpers_1.nodeHasCss)(item)) {
|
|
22
|
-
|
|
22
|
+
const value = (0, helpers_1.parseCssObject)((_a = item.bindings.css) === null || _a === void 0 ? void 0 : _a.code);
|
|
23
23
|
delete item.bindings.css;
|
|
24
|
-
|
|
24
|
+
const normalizedNameProperty = item.properties.$name
|
|
25
25
|
? (0, capitalize_1.capitalize)((0, lodash_1.camelCase)(item.properties.$name.replace(/[^a-z]/gi, '')))
|
|
26
26
|
: null;
|
|
27
|
-
|
|
27
|
+
const componentName = normalizedNameProperty
|
|
28
28
|
? normalizedNameProperty
|
|
29
29
|
: /^h\d$/.test(item.name || '')
|
|
30
30
|
? item.name
|
|
31
31
|
: (0, capitalize_1.capitalize)((0, lodash_1.camelCase)(item.name || 'div'));
|
|
32
|
-
|
|
32
|
+
const index = (componentIndexes[componentName] =
|
|
33
33
|
(componentIndexes[componentName] || 0) + 1);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
const className = `${componentName}${componentName !== item.name && index === 1 ? '' : index}`;
|
|
35
|
+
let str = '';
|
|
36
|
+
const styles = (0, helpers_1.getStylesOnly)(value);
|
|
37
|
+
const stylesHash = (0, object_hash_1.default)(styles);
|
|
38
38
|
if (stylesHash === componentHashes[componentName]) {
|
|
39
39
|
return;
|
|
40
40
|
}
|
|
41
41
|
if (!componentHashes[componentName]) {
|
|
42
42
|
componentHashes[componentName] = stylesHash;
|
|
43
43
|
}
|
|
44
|
-
str +=
|
|
45
|
-
|
|
46
|
-
for (
|
|
47
|
-
|
|
48
|
-
str +=
|
|
44
|
+
str += `${(0, helpers_1.styleMapToCss)(styles)}\n`;
|
|
45
|
+
const nestedSelectors = (0, helpers_1.getNestedSelectors)(value);
|
|
46
|
+
for (const nestedSelector in nestedSelectors) {
|
|
47
|
+
const value = nestedSelectors[nestedSelector];
|
|
48
|
+
str += `${nestedSelector} { ${(0, helpers_1.styleMapToCss)(value)} }`;
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
?
|
|
52
|
-
:
|
|
50
|
+
const prefix = (0, is_upper_case_1.isUpperCase)(item.name[0])
|
|
51
|
+
? `styled(${item.name})\``
|
|
52
|
+
: `styled.${item.name}\``;
|
|
53
53
|
item.name = className;
|
|
54
|
-
styledComponentsCode +=
|
|
54
|
+
styledComponentsCode += `
|
|
55
|
+
const ${className} = ${prefix}${str}\`;
|
|
56
|
+
`;
|
|
55
57
|
}
|
|
56
58
|
delete item.bindings.css;
|
|
57
59
|
}
|
|
@@ -4,26 +4,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.styleMapToCss = exports.parseCssObject = exports.getStylesOnly = exports.getNestedSelectors = exports.hasStyle = exports.hasCss = exports.nodeHasStyle = exports.nodeHasCss = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
const json5_1 = __importDefault(require("json5"));
|
|
8
|
+
const lodash_1 = require("lodash");
|
|
9
|
+
const legacy_1 = __importDefault(require("neotraverse/legacy"));
|
|
10
|
+
const dash_case_1 = require("../dash-case");
|
|
11
|
+
const is_mitosis_node_1 = require("../is-mitosis-node");
|
|
12
|
+
const is_upper_case_1 = require("../is-upper-case");
|
|
13
|
+
const nodeHasCss = (node) => {
|
|
14
14
|
var _a;
|
|
15
15
|
return Boolean(typeof ((_a = node.bindings.css) === null || _a === void 0 ? void 0 : _a.code) === 'string' && node.bindings.css.code.trim().length > 6);
|
|
16
16
|
};
|
|
17
17
|
exports.nodeHasCss = nodeHasCss;
|
|
18
|
-
|
|
18
|
+
const nodeHasStyle = (node) => {
|
|
19
19
|
var _a;
|
|
20
20
|
return (Boolean(typeof ((_a = node.bindings.style) === null || _a === void 0 ? void 0 : _a.code) === 'string') ||
|
|
21
21
|
Boolean(typeof node.properties.style === 'string'));
|
|
22
22
|
};
|
|
23
23
|
exports.nodeHasStyle = nodeHasStyle;
|
|
24
|
-
|
|
24
|
+
const hasCss = (component) => {
|
|
25
25
|
var _a;
|
|
26
|
-
|
|
26
|
+
let hasStyles = !!((_a = component.style) === null || _a === void 0 ? void 0 : _a.length);
|
|
27
27
|
if (hasStyles) {
|
|
28
28
|
return true;
|
|
29
29
|
}
|
|
@@ -38,8 +38,8 @@ var hasCss = function (component) {
|
|
|
38
38
|
return hasStyles;
|
|
39
39
|
};
|
|
40
40
|
exports.hasCss = hasCss;
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
const hasStyle = (component) => {
|
|
42
|
+
let hasStyles = false;
|
|
43
43
|
(0, legacy_1.default)(component).forEach(function (item) {
|
|
44
44
|
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
45
45
|
if ((0, exports.nodeHasStyle)(item)) {
|
|
@@ -51,15 +51,15 @@ var hasStyle = function (component) {
|
|
|
51
51
|
return hasStyles;
|
|
52
52
|
};
|
|
53
53
|
exports.hasStyle = hasStyle;
|
|
54
|
-
|
|
55
|
-
return (0, lodash_1.pickBy)(map,
|
|
54
|
+
const getNestedSelectors = (map) => {
|
|
55
|
+
return (0, lodash_1.pickBy)(map, (value) => typeof value === 'object');
|
|
56
56
|
};
|
|
57
57
|
exports.getNestedSelectors = getNestedSelectors;
|
|
58
|
-
|
|
59
|
-
return (0, lodash_1.pickBy)(map,
|
|
58
|
+
const getStylesOnly = (map) => {
|
|
59
|
+
return (0, lodash_1.pickBy)(map, (value) => typeof value === 'string');
|
|
60
60
|
};
|
|
61
61
|
exports.getStylesOnly = getStylesOnly;
|
|
62
|
-
|
|
62
|
+
const parseCssObject = (css) => {
|
|
63
63
|
try {
|
|
64
64
|
return json5_1.default.parse(css);
|
|
65
65
|
}
|
|
@@ -69,28 +69,22 @@ var parseCssObject = function (css) {
|
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
71
|
exports.parseCssObject = parseCssObject;
|
|
72
|
-
|
|
72
|
+
const getCssPropertyName = (cssObjectKey) => {
|
|
73
73
|
// Allow custom CSS properties
|
|
74
74
|
if (cssObjectKey.startsWith('--')) {
|
|
75
75
|
return cssObjectKey;
|
|
76
76
|
}
|
|
77
|
-
|
|
77
|
+
let str = (0, dash_case_1.dashCase)(cssObjectKey);
|
|
78
78
|
// Convert vendor prefixes like 'WebkitFoo' to '-webkit-foo'
|
|
79
79
|
if ((0, is_upper_case_1.isUpperCase)(cssObjectKey[0])) {
|
|
80
|
-
str =
|
|
80
|
+
str = `-${str}`;
|
|
81
81
|
}
|
|
82
82
|
return str;
|
|
83
83
|
};
|
|
84
|
-
|
|
84
|
+
const styleMapToCss = (map) => {
|
|
85
85
|
return Object.entries(map)
|
|
86
|
-
.filter(
|
|
87
|
-
|
|
88
|
-
return typeof value === 'string';
|
|
89
|
-
})
|
|
90
|
-
.map(function (_a) {
|
|
91
|
-
var key = _a[0], value = _a[1];
|
|
92
|
-
return " ".concat(getCssPropertyName(key), ": ").concat(value, ";");
|
|
93
|
-
})
|
|
86
|
+
.filter(([key, value]) => typeof value === 'string')
|
|
87
|
+
.map(([key, value]) => ` ${getCssPropertyName(key)}: ${value};`)
|
|
94
88
|
.join('\n');
|
|
95
89
|
};
|
|
96
90
|
exports.styleMapToCss = styleMapToCss;
|
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.traceReferenceToModulePath = void 0;
|
|
4
4
|
function traceReferenceToModulePath(imports, name) {
|
|
5
|
-
|
|
6
|
-
for (
|
|
7
|
-
var importInfo = imports_1[_i];
|
|
5
|
+
let response = null;
|
|
6
|
+
for (const importInfo of imports) {
|
|
8
7
|
if (name in importInfo.imports) {
|
|
9
|
-
return
|
|
8
|
+
return `${importInfo.path}:${importInfo.imports[name]}`;
|
|
10
9
|
}
|
|
11
10
|
}
|
|
12
11
|
return response;
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.transformStateSetters = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const core_1 = require("@babel/core");
|
|
5
|
+
const babel_transform_1 = require("./babel-transform");
|
|
6
6
|
/**
|
|
7
7
|
* Finds instances of state being set in `value`, and transforms them using the
|
|
8
8
|
* provided `transformer`.
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
};
|
|
10
|
+
const transformStateSetters = ({ value, transformer, }) => (0, babel_transform_1.babelTransformExpression)(value, {
|
|
11
|
+
AssignmentExpression(path) {
|
|
12
|
+
const { node } = path;
|
|
13
|
+
if (core_1.types.isMemberExpression(node.left) &&
|
|
14
|
+
core_1.types.isIdentifier(node.left.object) &&
|
|
15
|
+
// TODO: utillity to properly trace this reference to the beginning
|
|
16
|
+
node.left.object.name === 'state') {
|
|
17
|
+
// TODO: ultimately support other property access like strings
|
|
18
|
+
const propertyName = node.left.property.name;
|
|
19
|
+
const newExpression = transformer({ path, propertyName });
|
|
20
|
+
path.replaceWith(newExpression);
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
});
|
|
27
24
|
exports.transformStateSetters = transformStateSetters;
|
|
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.traverseNodes = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const legacy_1 = __importDefault(require("neotraverse/legacy"));
|
|
8
|
+
const is_mitosis_node_1 = require("./is-mitosis-node");
|
|
9
9
|
function traverseNodes(component, cb) {
|
|
10
10
|
(0, legacy_1.default)(component).forEach(function (item) {
|
|
11
11
|
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tryPrettierFormat = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const standalone_1 = require("prettier/standalone");
|
|
5
|
+
const tryPrettierFormat = (str, parser) => {
|
|
6
6
|
try {
|
|
7
7
|
return (0, standalone_1.format)(str, {
|
|
8
|
-
parser
|
|
8
|
+
parser,
|
|
9
9
|
plugins: [
|
|
10
10
|
// To support running in browsers
|
|
11
11
|
require('prettier/parser-typescript'),
|