@builder.io/mitosis 0.0.56-2 → 0.0.56-22
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/__tests__/angular.test.js +2 -13
- package/dist/src/__tests__/builder.test.js +3 -3
- package/dist/src/__tests__/data/basic-child-component.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-child-component.raw.jsx +21 -0
- package/dist/src/__tests__/data/basic-context.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-context.raw.jsx +29 -0
- package/dist/src/__tests__/data/basic-custom-mitosis-package.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-custom-mitosis-package.raw.jsx +10 -0
- package/dist/src/__tests__/data/basic-for-show.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-for-show.raw.jsx +20 -0
- package/dist/src/__tests__/data/basic-for.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-for.raw.jsx +23 -0
- package/dist/src/__tests__/data/basic-forwardRef-metadata.raw.d.ts +5 -0
- package/dist/src/__tests__/data/basic-forwardRef-metadata.raw.jsx +17 -0
- package/dist/src/__tests__/data/basic-forwardRef.raw.d.ts +5 -0
- package/dist/src/__tests__/data/basic-forwardRef.raw.jsx +14 -0
- package/dist/src/__tests__/data/basic-onChange.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-onChange.raw.jsx +17 -0
- package/dist/src/__tests__/data/basic-onMount-update.raw.d.ts +5 -0
- package/dist/src/__tests__/data/basic-onMount-update.raw.jsx +17 -0
- package/dist/src/__tests__/data/basic-onUpdate-return.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-onUpdate-return.raw.jsx +24 -0
- package/dist/src/__tests__/data/basic-outputs-meta.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-outputs-meta.raw.jsx +17 -0
- package/dist/src/__tests__/data/basic-outputs.raw.d.ts +1 -0
- package/dist/src/__tests__/data/basic-outputs.raw.jsx +14 -0
- package/dist/src/__tests__/data/basic-preserve-export-or-local-statement.raw.d.ts +6 -0
- package/dist/src/__tests__/data/basic-preserve-export-or-local-statement.raw.jsx +14 -0
- package/dist/src/__tests__/data/basic-props-destructure.raw.d.ts +6 -0
- package/dist/src/__tests__/data/basic-props-destructure.raw.jsx +14 -0
- package/dist/src/__tests__/data/basic-props.raw.d.ts +6 -0
- package/dist/src/__tests__/data/basic-props.raw.jsx +13 -0
- package/dist/src/__tests__/data/basic-ref-assignment.raw.d.ts +4 -0
- package/dist/src/__tests__/data/basic-ref-assignment.raw.jsx +15 -0
- package/dist/src/__tests__/data/basic-ref-usePrevious.raw.d.ts +5 -0
- package/dist/src/__tests__/data/basic-ref-usePrevious.raw.jsx +35 -0
- package/dist/src/__tests__/data/basic-ref.raw.d.ts +4 -0
- package/dist/src/__tests__/data/basic-ref.raw.jsx +36 -0
- package/dist/src/__tests__/data/basic.raw.d.ts +6 -1
- package/dist/src/__tests__/data/basic.raw.jsx +13 -4
- package/dist/src/__tests__/data/blocks/button-with-metadata.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/button.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/classname-jsx.raw.d.ts +7 -0
- package/dist/src/__tests__/data/blocks/classname-jsx.raw.jsx +15 -0
- package/dist/src/__tests__/data/blocks/columns.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/columns.raw.jsx +1 -1
- package/dist/src/__tests__/data/blocks/content-slot-html.raw.d.ts +7 -0
- package/dist/src/__tests__/data/blocks/content-slot-html.raw.jsx +15 -0
- package/dist/src/__tests__/data/blocks/content-slot-jsx.raw.d.ts +6 -0
- package/dist/src/__tests__/data/blocks/content-slot-jsx.raw.jsx +12 -0
- package/dist/src/__tests__/data/blocks/custom-code.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/custom-code.raw.jsx +3 -7
- package/dist/src/__tests__/data/blocks/embed.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/embed.raw.jsx +3 -7
- package/dist/src/__tests__/data/blocks/form.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/form.raw.jsx +3 -3
- package/dist/src/__tests__/data/blocks/image.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/image.raw.jsx +8 -9
- package/dist/src/__tests__/data/blocks/img-state.raw.d.ts +1 -0
- package/dist/src/__tests__/data/blocks/img-state.raw.jsx +17 -0
- package/dist/src/__tests__/data/blocks/img.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/input.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/input.raw.jsx +1 -3
- package/dist/src/__tests__/data/blocks/multiple-onUpdate.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/multiple-onUpdateWithDeps.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/multiple-onUpdateWithDeps.raw.jsx +7 -1
- package/dist/src/__tests__/data/blocks/onInit-onMount.raw.d.ts +1 -0
- package/dist/src/__tests__/data/blocks/onInit-onMount.raw.jsx +13 -0
- package/dist/src/__tests__/data/blocks/onInit.raw.d.ts +8 -0
- package/dist/src/__tests__/data/blocks/onInit.raw.jsx +20 -0
- package/dist/src/__tests__/data/blocks/onMount.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/onUpdate.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/onUpdateWithDeps.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/onUpdateWithDeps.raw.jsx +1 -1
- package/dist/src/__tests__/data/blocks/raw-text.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/rootShow.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/section-state.raw.d.ts +6 -0
- package/dist/src/__tests__/data/blocks/section-state.raw.jsx +17 -0
- package/dist/src/__tests__/data/blocks/section.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/select.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/select.raw.jsx +1 -3
- package/dist/src/__tests__/data/blocks/self-referencing-component-with-children.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/self-referencing-component.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/shadow-dom.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/shadow-dom.raw.jsx +2 -4
- package/dist/src/__tests__/data/blocks/slot-html.raw.d.ts +5 -0
- package/dist/src/__tests__/data/blocks/slot-html.raw.jsx +15 -0
- package/dist/src/__tests__/data/blocks/slot-jsx.raw.d.ts +5 -0
- package/dist/src/__tests__/data/blocks/slot-jsx.raw.jsx +12 -0
- package/dist/src/__tests__/data/blocks/stamped-io.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/stamped-io.raw.jsx +2 -4
- package/dist/src/__tests__/data/blocks/submit-button.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/text.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/text.raw.jsx +3 -1
- package/dist/src/__tests__/data/blocks/textarea.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/video.raw.d.ts +1 -1
- package/dist/src/__tests__/data/blocks/video.raw.jsx +1 -1
- package/dist/src/__tests__/data/context/component-with-context.lite.d.ts +3 -1
- package/dist/src/__tests__/data/context/component-with-context.lite.jsx +7 -2
- package/dist/src/__tests__/data/styles/class-and-className.raw.d.ts +1 -0
- package/dist/src/__tests__/data/styles/class-and-className.raw.jsx +10 -0
- package/dist/src/__tests__/data/styles/class.raw.d.ts +1 -0
- package/dist/src/__tests__/data/styles/class.raw.jsx +10 -0
- package/dist/src/__tests__/data/styles/className.raw.d.ts +1 -0
- package/dist/src/__tests__/data/styles/className.raw.jsx +10 -0
- package/dist/src/__tests__/data/styles/classState.raw.d.ts +1 -0
- package/dist/src/__tests__/data/styles/classState.raw.jsx +12 -0
- package/dist/src/__tests__/data/types/component-props-interface.raw.d.ts +6 -0
- package/dist/src/__tests__/data/types/component-props-interface.raw.jsx +6 -0
- package/dist/src/__tests__/data/types/component-props-type.raw.d.ts +6 -0
- package/dist/src/__tests__/data/types/component-props-type.raw.jsx +6 -0
- package/dist/src/__tests__/data/types/preserve-typing.raw.d.ts +8 -0
- package/dist/src/__tests__/data/types/preserve-typing.raw.jsx +6 -0
- package/dist/src/__tests__/html.test.js +2 -13
- package/dist/src/__tests__/liquid.test.js +2 -103
- package/dist/src/__tests__/parse-jsx.test.js +22 -0
- package/dist/src/__tests__/qwik/convertMethodToFunction.test.d.ts +1 -0
- package/dist/src/__tests__/qwik/convertMethodToFunction.test.js +34 -0
- package/dist/src/__tests__/qwik/src-generator.test.d.ts +1 -0
- package/dist/src/__tests__/qwik/src-generator.test.js +65 -0
- package/dist/src/__tests__/qwik.directive.test.js +1 -0
- package/dist/src/__tests__/qwik.test.js +54 -23
- package/dist/src/__tests__/react-native.test.js +3 -136
- package/dist/src/__tests__/react.test.js +5 -135
- package/dist/src/__tests__/shared.d.ts +3 -0
- package/dist/src/__tests__/shared.js +232 -0
- package/dist/src/__tests__/solid.test.js +2 -97
- package/dist/src/__tests__/stencil.test.js +3 -98
- package/dist/src/__tests__/styles.test.d.ts +1 -0
- package/dist/src/__tests__/styles.test.js +23 -0
- package/dist/src/__tests__/svelte.test.js +2 -31
- package/dist/src/__tests__/vue.test.js +2 -134
- package/dist/src/__tests__/webcomponent.test.js +8 -5
- package/dist/src/constants/hooks.d.ts +6 -0
- package/dist/src/constants/hooks.js +9 -0
- package/dist/src/flow.d.ts +6 -0
- package/dist/src/flow.js +6 -2
- package/dist/src/generators/angular.d.ts +8 -2
- package/dist/src/generators/angular.js +202 -44
- package/dist/src/generators/builder.d.ts +2 -2
- package/dist/src/generators/builder.js +19 -26
- package/dist/src/generators/context/{react copy.d.ts → qwik.d.ts} +2 -2
- package/dist/src/generators/context/{react copy.js → qwik.js} +4 -5
- package/dist/src/generators/context/svelte.d.ts +1 -1
- package/dist/src/generators/helpers/context.js +1 -2
- package/dist/src/generators/html.d.ts +1 -1
- package/dist/src/generators/html.js +365 -108
- package/dist/src/generators/liquid.d.ts +1 -1
- package/dist/src/generators/liquid.js +18 -25
- package/dist/src/generators/mitosis.d.ts +1 -1
- package/dist/src/generators/mitosis.js +37 -35
- package/dist/src/generators/qwik/component-generator.d.ts +4 -0
- package/dist/src/generators/qwik/component-generator.js +276 -0
- package/dist/src/generators/qwik/component.js +21 -25
- package/dist/src/generators/qwik/convertMethodToFunction.d.ts +1 -0
- package/dist/src/generators/qwik/convertMethodToFunction.js +161 -0
- package/dist/src/generators/qwik/directives.js +27 -22
- package/dist/src/generators/qwik/handlers.js +3 -19
- package/dist/src/generators/qwik/index.d.ts +3 -1
- package/dist/src/generators/qwik/index.js +3 -1
- package/dist/src/generators/qwik/jsx.js +33 -13
- package/dist/src/generators/qwik/src-generator.d.ts +21 -8
- package/dist/src/generators/qwik/src-generator.js +163 -42
- package/dist/src/generators/qwik/styles.js +3 -3
- package/dist/src/generators/react-native.d.ts +2 -2
- package/dist/src/generators/react-native.js +8 -10
- package/dist/src/generators/react.d.ts +4 -2
- package/dist/src/generators/react.js +152 -80
- package/dist/src/generators/solid.d.ts +1 -1
- package/dist/src/generators/solid.js +41 -35
- package/dist/src/generators/stencil/collect-class-string.js +5 -8
- package/dist/src/generators/stencil/generate.d.ts +1 -1
- package/dist/src/generators/stencil/generate.js +16 -21
- package/dist/src/generators/svelte.d.ts +2 -2
- package/dist/src/generators/svelte.js +97 -43
- package/dist/src/generators/swift-ui.d.ts +1 -1
- package/dist/src/generators/swift-ui.js +17 -19
- package/dist/src/generators/template.d.ts +1 -1
- package/dist/src/generators/template.js +11 -18
- package/dist/src/generators/vue.d.ts +12 -8
- package/dist/src/generators/vue.js +111 -63
- package/dist/src/helpers/babel-transform.js +3 -8
- package/dist/src/helpers/create-mitosis-component.d.ts +1 -1
- package/dist/src/helpers/create-mitosis-component.js +1 -1
- package/dist/src/helpers/create-mitosis-node.js +1 -1
- package/dist/src/helpers/fast-clone.js +1 -3
- package/dist/src/helpers/filter-empty-text-nodes.js +1 -2
- package/dist/src/helpers/get-bindings.d.ts +2 -0
- package/dist/src/helpers/get-bindings.js +18 -0
- package/dist/src/helpers/get-prop-functions.d.ts +5 -0
- package/dist/src/helpers/get-prop-functions.js +29 -0
- package/dist/src/helpers/get-props-ref.d.ts +2 -0
- package/dist/src/helpers/get-props-ref.js +32 -0
- package/dist/src/helpers/get-refs.js +3 -2
- package/dist/src/helpers/get-state-object-string.d.ts +4 -3
- package/dist/src/helpers/get-state-object-string.js +23 -20
- package/dist/src/helpers/get-styles.js +4 -3
- package/dist/src/helpers/getters-to-functions.d.ts +1 -1
- package/dist/src/helpers/getters-to-functions.js +1 -1
- package/dist/src/helpers/has-bindings-text.d.ts +2 -0
- package/dist/src/helpers/has-bindings-text.js +21 -0
- package/dist/src/helpers/has-stateful-dom.d.ts +2 -0
- package/dist/src/helpers/has-stateful-dom.js +21 -0
- package/dist/src/helpers/is-children.js +2 -1
- package/dist/src/helpers/is-component.js +1 -3
- package/dist/src/helpers/is-html-attribute.d.ts +4 -0
- package/dist/src/helpers/is-html-attribute.js +380 -0
- package/dist/src/helpers/map-refs.js +17 -3
- package/dist/src/helpers/parsers.js +1 -2
- package/dist/src/helpers/render-imports.d.ts +18 -2
- package/dist/src/helpers/render-imports.js +100 -54
- package/dist/src/helpers/render-imports.test.d.ts +1 -0
- package/dist/src/helpers/render-imports.test.js +19 -0
- package/dist/src/helpers/replace-idenifiers.js +5 -7
- package/dist/src/helpers/strip-state-and-props-refs.d.ts +4 -1
- package/dist/src/helpers/strip-state-and-props-refs.js +24 -6
- package/dist/src/helpers/styles/collect-css.d.ts +6 -0
- package/dist/src/helpers/styles/collect-css.js +87 -0
- package/dist/src/helpers/styles/collect-css.test.d.ts +1 -0
- package/dist/src/helpers/styles/collect-css.test.js +18 -0
- package/dist/src/helpers/styles/collect-styled-components.d.ts +2 -0
- package/dist/src/helpers/styles/collect-styled-components.js +61 -0
- package/dist/src/helpers/{collect-styles.d.ts → styles/helpers.d.ts} +5 -10
- package/dist/src/helpers/styles/helpers.js +61 -0
- package/dist/src/helpers/typescript.d.ts +2 -0
- package/dist/src/{jsx-types.js → helpers/typescript.js} +0 -0
- package/dist/src/index.d.ts +7 -4
- package/dist/src/index.js +24 -8
- package/dist/src/modules/plugins.d.ts +1 -1
- package/dist/src/parsers/angular.js +22 -34
- package/dist/src/parsers/builder.d.ts +25 -23
- package/dist/src/parsers/builder.js +59 -67
- package/dist/src/parsers/jsx.d.ts +2 -1
- package/dist/src/parsers/jsx.js +300 -93
- package/dist/src/parsers/liquid.js +51 -149
- package/dist/src/plugins/compile-away-builder-components.js +158 -115
- package/dist/src/symbols/symbol-processor.js +10 -7
- package/dist/src/targets.d.ts +7 -5
- package/dist/src/targets.js +7 -1
- package/dist/src/types/config.d.ts +42 -13
- package/dist/src/types/mitosis-component.d.ts +31 -10
- package/dist/src/types/mitosis-node.d.ts +15 -9
- package/dist/src/types/transpiler.d.ts +14 -0
- package/dist/src/types/transpiler.js +2 -0
- package/dist/test/qwik/Accordion/low.jsx +9 -3
- package/dist/test/qwik/Accordion/med.jsx +2 -8
- package/dist/test/qwik/For/low.jsx +29 -25
- package/dist/test/qwik/For/med.jsx +2 -8
- package/dist/test/qwik/Image/high.js +1 -1
- package/dist/test/qwik/Image/med.js +15 -13
- package/dist/test/qwik/Image.slow/high.js +1 -1
- package/dist/test/qwik/Image.slow/med.js +15 -13
- package/dist/test/qwik/bindings/low.cjs +12 -3
- package/dist/test/qwik/bindings/med.cjs +1 -10
- package/dist/test/qwik/button/high.js +1 -1
- package/dist/test/qwik/button/low.js +9 -3
- package/dist/test/qwik/button/med.js +2 -8
- package/dist/test/qwik/component/bindings/low.jsx +48 -5
- package/dist/test/qwik/component/bindings/med.jsx +3 -49
- package/dist/test/qwik/component/component/inputs/high.cjsx +1 -1
- package/dist/test/qwik/component/component/inputs/med.cjsx +8 -9
- package/dist/test/qwik/for-loop.bindings/high.cjs +0 -0
- package/dist/test/qwik/for-loop.bindings/low.cjs +46 -0
- package/dist/test/qwik/for-loop.bindings/med.cjs +5 -0
- package/dist/test/qwik/hello_world/stylesheet/low.jsx +9 -3
- package/dist/test/qwik/hello_world/stylesheet/med.jsx +2 -8
- package/dist/test/qwik/mount/high.cjs +0 -0
- package/dist/test/qwik/mount/low.cjs +45 -0
- package/dist/test/qwik/mount/med.cjs +3 -0
- package/dist/test/qwik/page-with-symbol/low.js +9 -3
- package/dist/test/qwik/page-with-symbol/med.js +2 -8
- package/dist/test/qwik/show-hide/high.jsx +1 -1
- package/dist/test/qwik/show-hide/med.jsx +15 -13
- package/dist/test/qwik/svg/low.js +9 -3
- package/dist/test/qwik/svg/med.js +2 -8
- package/dist/test/qwik/todo/Todo.cjs/high.cjs +6 -10
- package/dist/test/qwik/todo/Todo.cjs/med.cjs +9 -9
- package/dist/test/qwik/todo/Todo.js/high.js +7 -10
- package/dist/test/qwik/todo/Todo.js/med.js +9 -9
- package/dist/test/qwik/todo/Todo.tsx/high.tsx +7 -10
- package/dist/test/qwik/todo/Todo.tsx/med.tsx +9 -9
- package/dist/test/qwik/todos/Todo.tsx/high.tsx +1 -1
- package/dist/test/qwik/todos/Todo.tsx/low.tsx +15 -12
- package/dist/test/qwik/todos/Todo.tsx/med.tsx +1 -6
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -6
- package/README.md +0 -239
- package/dist/src/__tests__/data/blocks/onUpdate.raw copy.d.ts +0 -1
- package/dist/src/__tests__/data/blocks/onUpdate.raw copy.jsx +0 -10
- package/dist/src/__tests__/data/blocks/slot.raw.d.ts +0 -5
- package/dist/src/__tests__/data/blocks/slot.raw.jsx +0 -6
- package/dist/src/__tests__/data/blocks/styles.raw.d.ts +0 -1
- package/dist/src/__tests__/data/blocks/styles.raw.jsx +0 -10
- package/dist/src/helpers/babel-transform copy.d.ts +0 -8
- package/dist/src/helpers/babel-transform copy.js +0 -138
- package/dist/src/helpers/collect-styles.js +0 -178
- package/dist/src/jsx-types.d.ts +0 -1171
package/package.json
CHANGED
|
@@ -25,12 +25,13 @@
|
|
|
25
25
|
"engines": {
|
|
26
26
|
"npm": "99999999.9.9"
|
|
27
27
|
},
|
|
28
|
-
"version": "0.0.56-
|
|
28
|
+
"version": "0.0.56-22",
|
|
29
29
|
"homepage": "https://github.com/BuilderIO/mitosis",
|
|
30
30
|
"main": "./dist/src/index.js",
|
|
31
31
|
"exports": {
|
|
32
32
|
".": "./dist/src/index.js",
|
|
33
|
-
"./lib/*": "./dist/src/*"
|
|
33
|
+
"./lib/*": "./dist/src/*",
|
|
34
|
+
"./jsx-runtime": "./jsx-runtime.d.ts"
|
|
34
35
|
},
|
|
35
36
|
"types": "./dist/src/index.d.ts",
|
|
36
37
|
"license": "MIT",
|
|
@@ -40,11 +41,12 @@
|
|
|
40
41
|
},
|
|
41
42
|
"scripts": {
|
|
42
43
|
"test": "jest",
|
|
44
|
+
"snapupdate": "jest --updateSnapshot",
|
|
43
45
|
"build": "tsc --build tsconfig.build.json",
|
|
44
46
|
"clean": "tsc --build --clean tsconfig.build.json",
|
|
45
47
|
"remove-stableVersion": "./scripts/remove-stableVersion.sh",
|
|
46
|
-
"release:dev": "yarn build && yarn run remove-stableVersion && yarn version prerelease &&
|
|
47
|
-
"release:patch": "yarn build && yarn run remove-stableVersion && yarn version patch &&
|
|
48
|
+
"release:dev": "yarn build && yarn run remove-stableVersion && yarn version prerelease && yarn npm publish --tag dev",
|
|
49
|
+
"release:patch": "yarn build && yarn run remove-stableVersion && yarn version patch && yarn npm publish",
|
|
48
50
|
"mitosis-save-artifacts": "node -r esbuild-register ../../scripts/mitosis-save-artifacts.ts",
|
|
49
51
|
"start": "yarn build --watch",
|
|
50
52
|
"script": "ts-node -O '{\"module\": \"commonjs\"}'"
|
|
@@ -76,9 +78,12 @@
|
|
|
76
78
|
"prettier-plugin-svelte": "^1.4.1",
|
|
77
79
|
"svelte": "^3.30.0",
|
|
78
80
|
"traverse": "^0.6.6",
|
|
81
|
+
"typescript": "^4.7.3",
|
|
82
|
+
"vue": "^2",
|
|
79
83
|
"vue-template-compiler": "^2.6.12"
|
|
80
84
|
},
|
|
81
85
|
"devDependencies": {
|
|
86
|
+
"@babel/preset-env": "^7.6.0",
|
|
82
87
|
"@builder.io/sdk": "^1.1.26",
|
|
83
88
|
"@rollup/plugin-node-resolve": "^11.2.1",
|
|
84
89
|
"@rollup/plugin-virtual": "^2.1.0",
|
|
@@ -102,8 +107,8 @@
|
|
|
102
107
|
"rollup": "^2.70.1",
|
|
103
108
|
"ts-jest": "^26.4.4",
|
|
104
109
|
"ts-node": "^9.1.1",
|
|
105
|
-
"typescript": "4
|
|
110
|
+
"typescript": "^4",
|
|
106
111
|
"universalify": "^2.0.0"
|
|
107
112
|
},
|
|
108
|
-
"stableVersion": "0.0.56-
|
|
113
|
+
"stableVersion": "0.0.56-21"
|
|
109
114
|
}
|
package/README.md
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
<p align="center"><img width="400" src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fbd8709e610d44cde8f623ebcc960e7dd"></p>
|
|
2
|
-
|
|
3
|
-
<p align="center">
|
|
4
|
-
Write components once, run everywhere. Compiles to Vue, React, Solid, Angular, Svelte, and Liquid.
|
|
5
|
-
</p>
|
|
6
|
-
|
|
7
|
-
<p align="center">
|
|
8
|
-
<a href="https://github.com/prettier/prettier"><img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg" /></a>
|
|
9
|
-
<a href="https://github.com/BuilderIO/mitosis/pulls"><img alt="PRs Welcome" src="https://img.shields.io/badghttps://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fbd8709e610d44cde8f623ebcc960e7dde/PRs-welcome-brightgreen.svg" /></a>
|
|
10
|
-
<a href="https://github.com/BuilderIO/mitosis"><img alt="License" src="https://img.shields.io/github/license/BuilderIO/mitosis" /></a>
|
|
11
|
-
<a href="https://www.npmjs.com/package/@builder.io/mitosis"><img alt="Types" src="https://img.shields.io/npm/types/@builder.io/mitosis" /></a>
|
|
12
|
-
<a href="https://www.npmjs.com/package/@builder.io/mitosis" rel="nofollow"><img src="https://img.shields.io/npm/v/@builder.io/mitosis.svg?sanitize=true"></a>
|
|
13
|
-
</p>
|
|
14
|
-
|
|
15
|
-
<br />
|
|
16
|
-
<h3 align="center">Try it out</h2>
|
|
17
|
-
|
|
18
|
-
<table>
|
|
19
|
-
<tbody>
|
|
20
|
-
<tr>
|
|
21
|
-
<td>
|
|
22
|
-
<p> </p> <!-- spacer -->
|
|
23
|
-
<p align="center">
|
|
24
|
-
<img height="50" src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Ffb77e93c28e044178e4694cc939bf4cf" />
|
|
25
|
-
</p>
|
|
26
|
-
<p align="center">
|
|
27
|
-
Use our <a href="https://github.com/builderio/figma-html"><b>Figma plugin</b></a> to turn designs into code!
|
|
28
|
-
</p>
|
|
29
|
-
</td>
|
|
30
|
-
<td>
|
|
31
|
-
<p> </p> <!-- spacer -->
|
|
32
|
-
<p align="center">
|
|
33
|
-
<img height="50" src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F467c9b604d4e486abfc39d27a2fddc12" />
|
|
34
|
-
</p>
|
|
35
|
-
<p align="center">
|
|
36
|
-
Try our <a href="https://jsx-lite.builder.io/"><b>interactive fiddle</b></a>
|
|
37
|
-
</p>
|
|
38
|
-
</td>
|
|
39
|
-
</tr>
|
|
40
|
-
<tr>
|
|
41
|
-
<td>
|
|
42
|
-
<a href="https://github.com/builderio/figma-html"><img width="400" alt="Figma plugin" src="https://i.imgur.com/BoKsLFs.gif" /></a>
|
|
43
|
-
</td>
|
|
44
|
-
<td>
|
|
45
|
-
<a href="https://jsx-lite.builder.io/"><img width="400" alt="Fiddle" src="https://imgur.com/H1WTtGe.gif" /></a>
|
|
46
|
-
</td>
|
|
47
|
-
</tr>
|
|
48
|
-
<tr>
|
|
49
|
-
<td>
|
|
50
|
-
<p> </p> <!-- spacer -->
|
|
51
|
-
<p align="center">
|
|
52
|
-
<img height="50" src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Ff83e94a9c504427cbc8a557f682efec3" />
|
|
53
|
-
</p>
|
|
54
|
-
<p align="center">
|
|
55
|
-
Try our <a href="https://github.com/BuilderIO/vscode"><b>VS Code extension</b></a> for in-IDE visual coding
|
|
56
|
-
</p>
|
|
57
|
-
</td>
|
|
58
|
-
<td>
|
|
59
|
-
<p> </p> <!-- spacer -->
|
|
60
|
-
<p align="center">
|
|
61
|
-
<img height="50" src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F0f577e84eb4e4aa4a69d602dd376aa11" />
|
|
62
|
-
</p>
|
|
63
|
-
<p align="center">
|
|
64
|
-
Try our <a href="https://apps.shopify.com/builder-2"><b>Shopify app</b></a> for visual Shopify store building
|
|
65
|
-
</td>
|
|
66
|
-
</tr>
|
|
67
|
-
<tr>
|
|
68
|
-
<td>
|
|
69
|
-
<a href="https://github.com/BuilderIO/vscode"><img width="400" alt="Vscode plugin" src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F1d59909e2a214c79ad2b1e8ad3fb8245" /></a>
|
|
70
|
-
</td>
|
|
71
|
-
<td>
|
|
72
|
-
<a href="https://apps.shopify.com/builder-2"><img width="400" alt="Vscode plugin" src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F97c87a29d88e463b9c1ad22b0329b2f7" /></a>
|
|
73
|
-
</td>
|
|
74
|
-
</tr>
|
|
75
|
-
<tr>
|
|
76
|
-
<td>
|
|
77
|
-
<p> </p> <!-- spacer -->
|
|
78
|
-
<p align="center">
|
|
79
|
-
<img height="50" src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F084b1ebc3de4422185f9d36a409f3a24" />
|
|
80
|
-
</p>
|
|
81
|
-
<p align="center">
|
|
82
|
-
Try our <a href="https://github.com/builderio/builder"><b>headless CMS</b></a> for no-code APIs for all sites and apps
|
|
83
|
-
</p>
|
|
84
|
-
</td>
|
|
85
|
-
<td>
|
|
86
|
-
<p> </p> <!-- spacer -->
|
|
87
|
-
<p align="center">
|
|
88
|
-
<img height="50" src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F2025f53be0ab472ca8fbb87381bfbc00" />
|
|
89
|
-
</p>
|
|
90
|
-
<p align="center">
|
|
91
|
-
View our upcoming ecommerce integrations
|
|
92
|
-
</p>
|
|
93
|
-
</td>
|
|
94
|
-
</tr>
|
|
95
|
-
<tr>
|
|
96
|
-
<td>
|
|
97
|
-
<a href="https://github.com/builderio/builder"><img width="400" alt="Vscode plugin" src="https://cdn.builder.io/api/v1/image/assets%2F444142b2cae54a19aeb8b5ba245feffe%2F8c2699f47fea48b296b43dbb422336e8" /></a>
|
|
98
|
-
</td>
|
|
99
|
-
<td>
|
|
100
|
-
<a href="https://headlessapp.store"><img width="400" alt="Vscode plugin" src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fd416b330ae7543089f70af8b930d8d85" /></a>
|
|
101
|
-
</td>
|
|
102
|
-
</tr>
|
|
103
|
-
</tbody>
|
|
104
|
-
</table>
|
|
105
|
-
|
|
106
|
-
## Why
|
|
107
|
-
|
|
108
|
-
### Component libraries
|
|
109
|
-
|
|
110
|
-
Managing support for libraries that provide UI components across frameworks is a _pain_, esp when webcomponents are not an option (e.g. for server side rendering, best performance, etc). With Mitosis you can write once, and run everywhere with full compatibilty
|
|
111
|
-
|
|
112
|
-
### Modern workflows for all platforms
|
|
113
|
-
|
|
114
|
-
JSX lite allows you to incrementally adopt modern and familiar workflows for many different platforms, for for Shopify instance you can server side render to liquid and hydrate with React
|
|
115
|
-
|
|
116
|
-
### JS framework fatigue
|
|
117
|
-
|
|
118
|
-
If you have ever had to migrate a huge codebase from one framework to another, it's an absolute nightmare. Writing at a higher level of abstraction allows you to move from one to another with ease
|
|
119
|
-
|
|
120
|
-
### Design to code
|
|
121
|
-
|
|
122
|
-
With JSX lite, you can convert designs from [Figma](https://github.com/BuilderIO/html-to-figma) or Sketch and convert it to clean code for the framework of your choice. You can even use [Builder.io](https://github.com/builderio/builder) to visually drag/drop to build UIs and edit the code _side by side_
|
|
123
|
-
|
|
124
|
-
<p align="center">
|
|
125
|
-
<img src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F28066781f8584569b131fb4bffd893eb" />
|
|
126
|
-
</p>
|
|
127
|
-
|
|
128
|
-
## How does it work
|
|
129
|
-
|
|
130
|
-
Mitosis uses a static subset of JSX, inspired by [Solid](https://github.com/ryansolid/solid/blob/master/documentation/rendering.md). This means we can parse it to a simple JSON structure that it is easy easy to build stringifers off of for various frameworks and implementations
|
|
131
|
-
|
|
132
|
-
```tsx
|
|
133
|
-
export function MyComponent() {
|
|
134
|
-
const state = useState({
|
|
135
|
-
name: 'Steve',
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
return (
|
|
139
|
-
<div>
|
|
140
|
-
<input
|
|
141
|
-
value={state.name}
|
|
142
|
-
onChange={(e) => (state.name = e.target.value)}
|
|
143
|
-
/>
|
|
144
|
-
</div>
|
|
145
|
-
);
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
becomes:
|
|
150
|
-
|
|
151
|
-
```json
|
|
152
|
-
{
|
|
153
|
-
"@type": "@builder.io/mitosis/component",
|
|
154
|
-
"state": {
|
|
155
|
-
"name": "Steve"
|
|
156
|
-
},
|
|
157
|
-
"nodes": [
|
|
158
|
-
{
|
|
159
|
-
"@type": "@builder.io/mitosis/node",
|
|
160
|
-
"name": "div",
|
|
161
|
-
"children": [
|
|
162
|
-
{
|
|
163
|
-
"@type": "@builder.io/mitosis/node",
|
|
164
|
-
"bindings": {
|
|
165
|
-
"value": "state.name",
|
|
166
|
-
"onChange": "state.name = event.target.value"
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
]
|
|
170
|
-
}
|
|
171
|
-
]
|
|
172
|
-
}
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
Which can be reserialized into many languges and framworks. For instance, to support angular, we just make a serializer that loops over the json and produces:
|
|
176
|
-
|
|
177
|
-
```ts
|
|
178
|
-
@Component({
|
|
179
|
-
template: `
|
|
180
|
-
<div>
|
|
181
|
-
<input [value]="name" (change)="name = $event.target.value" />
|
|
182
|
-
</div>
|
|
183
|
-
`,
|
|
184
|
-
})
|
|
185
|
-
class MyComponent {
|
|
186
|
-
name = 'Steve';
|
|
187
|
-
}
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
Adding framework support is surprisingly easy with our plugins (docs coming soon!)
|
|
191
|
-
|
|
192
|
-
## No-code tooling
|
|
193
|
-
|
|
194
|
-
Mitosis's static JSON format also enables no-code tooling for visual code editing and importing, for instance with [Builder.io](https://github.com/builderio/builder) or [Figma](https://github.com/BuilderIO/html-to-figma)
|
|
195
|
-
|
|
196
|
-
<img src="https://imgur.com/3TjfY2H.gif" >
|
|
197
|
-
|
|
198
|
-
<img src="https://i.imgur.com/vsAKt7f.gif" >
|
|
199
|
-
|
|
200
|
-
## Formatting options
|
|
201
|
-
|
|
202
|
-
Mitosis supports settings for generating code to match your preferred formatting, libraries, etc. These output options will be customizable and extensible with plugins soon too
|
|
203
|
-
|
|
204
|
-
<img src="https://imgur.com/hWXfNF3.gif "/>
|
|
205
|
-
|
|
206
|
-
## Who uses it
|
|
207
|
-
|
|
208
|
-
- [Builder.io](https://github.com/builderio/builder)
|
|
209
|
-
- [Snap](https://github.com/builderio/snap)
|
|
210
|
-
- [HTML <> Figma](https://github.com/builderio/html-to-figma)
|
|
211
|
-
- [Build.](https://github.com/builderio/build.) (coming soon)
|
|
212
|
-
|
|
213
|
-
## Status
|
|
214
|
-
|
|
215
|
-
| Framework | Status |
|
|
216
|
-
| ------------- | ------------ |
|
|
217
|
-
| React | Alpha |
|
|
218
|
-
| Vue | Alpha |
|
|
219
|
-
| Liquid | Alpha |
|
|
220
|
-
| Builder.io | Alpha |
|
|
221
|
-
| Solid | Alpha |
|
|
222
|
-
| Figma | Alpha |
|
|
223
|
-
| Angular | Alpha |
|
|
224
|
-
| Svelte | Alpha |
|
|
225
|
-
| HTML/CSS/JS | Alpha |
|
|
226
|
-
| Webcomponents | Alpha |
|
|
227
|
-
| React Native | Alpha |
|
|
228
|
-
| SwiftUI | Experimental |
|
|
229
|
-
|
|
230
|
-
## Coming soon
|
|
231
|
-
|
|
232
|
-
- Stable (v1) release
|
|
233
|
-
- Plugin API docs for custom syntaxes and extensions
|
|
234
|
-
- VS code plugin
|
|
235
|
-
|
|
236
|
-
<br />
|
|
237
|
-
<p align="center">
|
|
238
|
-
Made with ❤️ by <a target="_blank" href="https://www.builder.io/">Builder.io</a>
|
|
239
|
-
</p>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function OnUpdate(): JSX.Element;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var mitosis_1 = require("@builder.io/mitosis");
|
|
4
|
-
function OnUpdate() {
|
|
5
|
-
(0, mitosis_1.onUpdate)(function () {
|
|
6
|
-
console.log('Runs on every update/rerender');
|
|
7
|
-
});
|
|
8
|
-
return <div />;
|
|
9
|
-
}
|
|
10
|
-
exports.default = OnUpdate;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function OnUpdate(): JSX.Element;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var mitosis_1 = require("@builder.io/mitosis");
|
|
4
|
-
function OnUpdate() {
|
|
5
|
-
(0, mitosis_1.onUpdate)(function () {
|
|
6
|
-
console.log('Runs on every update/rerender');
|
|
7
|
-
});
|
|
8
|
-
return <div />;
|
|
9
|
-
}
|
|
10
|
-
exports.default = OnUpdate;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import * as babel from '@babel/core';
|
|
2
|
-
declare type Visitor<ContextType = any> = {
|
|
3
|
-
[key: string]: (path: any, context: ContextType) => void;
|
|
4
|
-
};
|
|
5
|
-
export declare const babelTransform: <VisitorContextType = any>(code: string, visitor?: Visitor<VisitorContextType> | undefined) => babel.BabelFileResult | null;
|
|
6
|
-
export declare const babelTransformCode: <VisitorContextType = any>(code: string, visitor?: Visitor<VisitorContextType> | undefined) => string;
|
|
7
|
-
export declare const babelTransformExpression: <VisitorContextType = any>(code: string, visitor: Visitor<VisitorContextType>, type?: 'expression' | 'unknown' | 'block' | 'functionBody') => string;
|
|
8
|
-
export {};
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
26
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
27
|
-
if (ar || !(i in from)) {
|
|
28
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
29
|
-
ar[i] = from[i];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
33
|
-
};
|
|
34
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.babelTransformExpression = exports.babelTransformCode = exports.babelTransform = void 0;
|
|
36
|
-
var babel = __importStar(require("@babel/core"));
|
|
37
|
-
var lodash_1 = require("lodash");
|
|
38
|
-
var jsxPlugin = require('@babel/plugin-syntax-jsx');
|
|
39
|
-
var tsPreset = require('@babel/preset-typescript');
|
|
40
|
-
var decorators = require('@babel/plugin-syntax-decorators');
|
|
41
|
-
var babelTransform = function (code, visitor) {
|
|
42
|
-
return babel.transform(code, {
|
|
43
|
-
sourceFileName: 'file.tsx',
|
|
44
|
-
configFile: false,
|
|
45
|
-
babelrc: false,
|
|
46
|
-
presets: [[tsPreset, { isTSX: true, allExtensions: true }]],
|
|
47
|
-
plugins: __spreadArray([
|
|
48
|
-
[decorators, { legacy: true }],
|
|
49
|
-
jsxPlugin
|
|
50
|
-
], (visitor ? [function () { return ({ visitor: visitor }); }] : []), true),
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
exports.babelTransform = babelTransform;
|
|
54
|
-
var babelTransformCode = function (code, visitor) {
|
|
55
|
-
var _a;
|
|
56
|
-
return ((_a = (0, exports.babelTransform)(code, visitor)) === null || _a === void 0 ? void 0 : _a.code) || '';
|
|
57
|
-
};
|
|
58
|
-
exports.babelTransformCode = babelTransformCode;
|
|
59
|
-
var babelTransformExpression = function (code, visitor, type) {
|
|
60
|
-
var _a;
|
|
61
|
-
if (type === void 0) { type = 'unknown'; }
|
|
62
|
-
if (!code) {
|
|
63
|
-
return '';
|
|
64
|
-
}
|
|
65
|
-
// match for object literal like { foo: ... }
|
|
66
|
-
if (type === 'unknown' && code.trim().match(/^\s*{\s*[a-z0-9]+:/i)) {
|
|
67
|
-
type = 'expression';
|
|
68
|
-
}
|
|
69
|
-
// For Builder content
|
|
70
|
-
if (type === 'unknown' &&
|
|
71
|
-
(code.includes('return _virtual_index') ||
|
|
72
|
-
code.trim().startsWith('return ')) &&
|
|
73
|
-
!code.trim().startsWith('function')) {
|
|
74
|
-
type = 'functionBody';
|
|
75
|
-
}
|
|
76
|
-
var useCode = code;
|
|
77
|
-
if (type === 'functionBody') {
|
|
78
|
-
useCode = "function(){".concat(useCode, "}");
|
|
79
|
-
}
|
|
80
|
-
var result = type === 'expression'
|
|
81
|
-
? null
|
|
82
|
-
: (0, lodash_1.attempt)(function () {
|
|
83
|
-
var _a;
|
|
84
|
-
var result = ((_a = (0, exports.babelTransform)(useCode, visitor)) === null || _a === void 0 ? void 0 : _a.code) || '';
|
|
85
|
-
if (type === 'functionBody') {
|
|
86
|
-
return result.replace(/^function\(\)\{/, '').replace(/\};$/, '');
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
// Babel addes trailing semicolons, but for expressions we need those gone
|
|
90
|
-
// TODO: maybe detect if the original code ended with one, and keep it if so, for the case
|
|
91
|
-
// of appending several fragements
|
|
92
|
-
return result.replace(/;$/, '');
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
if ((0, lodash_1.isError)(result) || type === 'expression') {
|
|
96
|
-
try {
|
|
97
|
-
// If it can't, e.g. this is an expression or code fragment, modify the code below and try again
|
|
98
|
-
// Detect method fragments. These get passed sometimes and otherwise
|
|
99
|
-
// generate compile errors. They are of the form `foo() { ... }`
|
|
100
|
-
var isMethod = Boolean(!code.startsWith('function') &&
|
|
101
|
-
code.match(/^[a-z0-9]+\s*\([^\)]*\)\s*[\{:]/i));
|
|
102
|
-
if (isMethod) {
|
|
103
|
-
useCode = "function ".concat(useCode);
|
|
104
|
-
}
|
|
105
|
-
// Parse the code as an expression (instead of the default, a block) by giving it a fake variable assignment
|
|
106
|
-
// e.g. if the code parsed is { ... } babel will treat that as a block by deafult, unless processed as an expression
|
|
107
|
-
// that is an object
|
|
108
|
-
useCode = "let _ = ".concat(useCode);
|
|
109
|
-
result = (((_a = (0, exports.babelTransform)(useCode, visitor)) === null || _a === void 0 ? void 0 : _a.code) || '')
|
|
110
|
-
// Babel addes trailing semicolons, but for expressions we need those gone
|
|
111
|
-
.replace(/;$/, '')
|
|
112
|
-
// Remove our fake variable assignment
|
|
113
|
-
.replace(/let _ =\s/, '');
|
|
114
|
-
if (isMethod) {
|
|
115
|
-
result = result.replace('function', '');
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
catch (err) {
|
|
119
|
-
console.error('Error parsing code:\n', code, '\n', result);
|
|
120
|
-
try {
|
|
121
|
-
return (0, exports.babelTransformExpression)(code, visitor, 'functionBody');
|
|
122
|
-
}
|
|
123
|
-
catch (err) {
|
|
124
|
-
throw err;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
if (type === 'functionBody') {
|
|
129
|
-
return result.replace(/^function\s*\(\)\s*\{/, '').replace(/\};?$/, '');
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
// Babel addes trailing semicolons, but for expressions we need those gone
|
|
133
|
-
// TODO: maybe detect if the original code ended with one, and keep it if so, for the case
|
|
134
|
-
// of appending several fragements
|
|
135
|
-
return result.replace(/;$/, '');
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
exports.babelTransformExpression = babelTransformExpression;
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.styleMapToCss = exports.collectCss = exports.collectStyles = exports.parseCssObject = exports.collectStyledComponents = exports.hasStyles = exports.nodeHasStyles = void 0;
|
|
7
|
-
var json5_1 = __importDefault(require("json5"));
|
|
8
|
-
var lodash_1 = require("lodash");
|
|
9
|
-
var traverse_1 = __importDefault(require("traverse"));
|
|
10
|
-
var capitalize_1 = require("./capitalize");
|
|
11
|
-
var dash_case_1 = require("./dash-case");
|
|
12
|
-
var is_mitosis_node_1 = require("./is-mitosis-node");
|
|
13
|
-
var is_upper_case_1 = require("./is-upper-case");
|
|
14
|
-
var object_hash_1 = __importDefault(require("object-hash"));
|
|
15
|
-
var nodeHasStyles = function (node) {
|
|
16
|
-
return Boolean(typeof node.bindings.css === 'string' &&
|
|
17
|
-
node.bindings.css.trim().length > 6);
|
|
18
|
-
};
|
|
19
|
-
exports.nodeHasStyles = nodeHasStyles;
|
|
20
|
-
var hasStyles = function (component) {
|
|
21
|
-
var hasStyles = false;
|
|
22
|
-
(0, traverse_1.default)(component).forEach(function (item) {
|
|
23
|
-
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
24
|
-
if ((0, exports.nodeHasStyles)(item)) {
|
|
25
|
-
hasStyles = true;
|
|
26
|
-
this.stop();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
return hasStyles;
|
|
31
|
-
};
|
|
32
|
-
exports.hasStyles = hasStyles;
|
|
33
|
-
var collectStyledComponents = function (json) {
|
|
34
|
-
var styledComponentsCode = '';
|
|
35
|
-
var componentIndexes = {};
|
|
36
|
-
var componentHashes = {};
|
|
37
|
-
(0, traverse_1.default)(json).forEach(function (item) {
|
|
38
|
-
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
39
|
-
if ((0, exports.nodeHasStyles)(item)) {
|
|
40
|
-
var value = (0, exports.parseCssObject)(item.bindings.css);
|
|
41
|
-
delete item.bindings.css;
|
|
42
|
-
var normalizedNameProperty = item.properties.$name
|
|
43
|
-
? (0, capitalize_1.capitalize)((0, lodash_1.camelCase)(item.properties.$name.replace(/[^a-z]/gi, '')))
|
|
44
|
-
: null;
|
|
45
|
-
var componentName = normalizedNameProperty
|
|
46
|
-
? normalizedNameProperty
|
|
47
|
-
: /^h\d$/.test(item.name || '')
|
|
48
|
-
? item.name
|
|
49
|
-
: (0, capitalize_1.capitalize)((0, lodash_1.camelCase)(item.name || 'div'));
|
|
50
|
-
var index = (componentIndexes[componentName] =
|
|
51
|
-
(componentIndexes[componentName] || 0) + 1);
|
|
52
|
-
var className = "".concat(componentName).concat(componentName !== item.name && index === 1 ? '' : index);
|
|
53
|
-
var str = '';
|
|
54
|
-
var styles = getStylesOnly(value);
|
|
55
|
-
var stylesHash = (0, object_hash_1.default)(styles);
|
|
56
|
-
if (stylesHash === componentHashes[componentName]) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
if (!componentHashes[componentName]) {
|
|
60
|
-
componentHashes[componentName] = stylesHash;
|
|
61
|
-
}
|
|
62
|
-
str += "".concat((0, exports.styleMapToCss)(styles), "\n");
|
|
63
|
-
var nestedSelectors = getNestedSelectors(value);
|
|
64
|
-
for (var nestedSelector in nestedSelectors) {
|
|
65
|
-
var value_1 = nestedSelectors[nestedSelector];
|
|
66
|
-
str += "".concat(nestedSelector, " { ").concat((0, exports.styleMapToCss)(value_1), " }");
|
|
67
|
-
}
|
|
68
|
-
var prefix = (0, is_upper_case_1.isUpperCase)(item.name[0])
|
|
69
|
-
? "styled(".concat(item.name, ")`")
|
|
70
|
-
: "styled.".concat(item.name, "`");
|
|
71
|
-
item.name = className;
|
|
72
|
-
styledComponentsCode += "\n const ".concat(className, " = ").concat(prefix).concat(str, "`\n ");
|
|
73
|
-
}
|
|
74
|
-
delete item.bindings.css;
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
return styledComponentsCode;
|
|
78
|
-
};
|
|
79
|
-
exports.collectStyledComponents = collectStyledComponents;
|
|
80
|
-
var parseCssObject = function (css) {
|
|
81
|
-
try {
|
|
82
|
-
return json5_1.default.parse(css);
|
|
83
|
-
}
|
|
84
|
-
catch (e) {
|
|
85
|
-
console.warn('Could not parse CSS object', css);
|
|
86
|
-
throw e;
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
exports.parseCssObject = parseCssObject;
|
|
90
|
-
var collectStyles = function (json, options) {
|
|
91
|
-
if (options === void 0) { options = {}; }
|
|
92
|
-
var styleMap = {};
|
|
93
|
-
var classProperty = options.classProperty || 'class';
|
|
94
|
-
var componentIndexes = {};
|
|
95
|
-
var componentHashes = {};
|
|
96
|
-
(0, traverse_1.default)(json).forEach(function (item) {
|
|
97
|
-
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
98
|
-
if ((0, exports.nodeHasStyles)(item)) {
|
|
99
|
-
var value = (0, exports.parseCssObject)(item.bindings.css);
|
|
100
|
-
delete item.bindings.css;
|
|
101
|
-
var componentName = item.properties.$name
|
|
102
|
-
? (0, dash_case_1.dashCase)(item.properties.$name)
|
|
103
|
-
: /^h\d$/.test(item.name || '') // don't dashcase h1 into h-1
|
|
104
|
-
? item.name
|
|
105
|
-
: (0, dash_case_1.dashCase)(item.name || 'div');
|
|
106
|
-
var stylesHash = (0, object_hash_1.default)(value);
|
|
107
|
-
if (componentHashes[componentName] === stylesHash) {
|
|
108
|
-
var className_1 = "".concat(componentName).concat(options.prefix ? "-".concat(options.prefix) : '');
|
|
109
|
-
item.properties[classProperty] = "".concat(item.properties[classProperty] || '', " ").concat(className_1)
|
|
110
|
-
.trim()
|
|
111
|
-
.replace(/\s{2,}/g, ' ');
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
if (!componentHashes[componentName]) {
|
|
115
|
-
componentHashes[componentName] = stylesHash;
|
|
116
|
-
}
|
|
117
|
-
var index = (componentIndexes[componentName] =
|
|
118
|
-
(componentIndexes[componentName] || 0) + 1);
|
|
119
|
-
var className = "".concat(componentName).concat(options.prefix ? "-".concat(options.prefix) : '').concat(index === 1 ? '' : "-".concat(index));
|
|
120
|
-
item.properties[classProperty] = "".concat(item.properties[classProperty] || '', " ").concat(className)
|
|
121
|
-
.trim()
|
|
122
|
-
.replace(/\s{2,}/g, ' ');
|
|
123
|
-
styleMap[className] = value;
|
|
124
|
-
}
|
|
125
|
-
delete item.bindings.css;
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
return styleMap;
|
|
129
|
-
};
|
|
130
|
-
exports.collectStyles = collectStyles;
|
|
131
|
-
var collectCss = function (json, options) {
|
|
132
|
-
if (options === void 0) { options = {}; }
|
|
133
|
-
var styles = (0, exports.collectStyles)(json, options);
|
|
134
|
-
// TODO create and use a root selector
|
|
135
|
-
return classStyleMapToCss(styles);
|
|
136
|
-
};
|
|
137
|
-
exports.collectCss = collectCss;
|
|
138
|
-
var getNestedSelectors = function (map) {
|
|
139
|
-
return (0, lodash_1.pickBy)(map, function (value) { return typeof value === 'object'; });
|
|
140
|
-
};
|
|
141
|
-
var getStylesOnly = function (map) {
|
|
142
|
-
return (0, lodash_1.pickBy)(map, function (value) { return typeof value === 'string'; });
|
|
143
|
-
};
|
|
144
|
-
var classStyleMapToCss = function (map) {
|
|
145
|
-
var str = '';
|
|
146
|
-
for (var key in map) {
|
|
147
|
-
var styles = getStylesOnly(map[key]);
|
|
148
|
-
str += ".".concat(key, " { ").concat((0, exports.styleMapToCss)(styles), " }");
|
|
149
|
-
var nestedSelectors = getNestedSelectors(map[key]);
|
|
150
|
-
for (var nestedSelector in nestedSelectors) {
|
|
151
|
-
var value = nestedSelectors[nestedSelector];
|
|
152
|
-
if (nestedSelector.startsWith('@')) {
|
|
153
|
-
str += "".concat(nestedSelector, " { .").concat(key, " { ").concat((0, exports.styleMapToCss)(value), " } }");
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
var useSelector = nestedSelector.includes('&')
|
|
157
|
-
? nestedSelector.replace(/&/g, ".".concat(key))
|
|
158
|
-
: ".".concat(key, " ").concat(nestedSelector);
|
|
159
|
-
str += "".concat(useSelector, " { ").concat((0, exports.styleMapToCss)(value), " }");
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return str;
|
|
164
|
-
};
|
|
165
|
-
var styleMapToCss = function (map) {
|
|
166
|
-
var str = '';
|
|
167
|
-
for (var key in map) {
|
|
168
|
-
var value = map[key];
|
|
169
|
-
if (typeof value === 'string') {
|
|
170
|
-
str += "\n".concat((0, dash_case_1.dashCase)(key), ": ").concat(value, ";");
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
// TODO: do nothing
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
return str;
|
|
177
|
-
};
|
|
178
|
-
exports.styleMapToCss = styleMapToCss;
|