@builder.io/mitosis 0.0.72-4 → 0.0.72
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/generators/angular.js +3 -3
- package/dist/src/generators/html.js +4 -4
- package/dist/src/generators/lit/generate.js +8 -8
- package/dist/src/generators/marko/generate.js +8 -8
- package/dist/src/generators/mitosis.js +5 -8
- package/dist/src/generators/qwik/jsx.js +2 -2
- package/dist/src/generators/qwik/src-generator.js +1 -1
- package/dist/src/generators/react/generator.d.ts +0 -1
- package/dist/src/generators/react/generator.js +36 -62
- package/dist/src/generators/react/state.js +1 -0
- package/dist/src/generators/react/types.d.ts +1 -6
- package/dist/src/generators/solid/index.js +8 -7
- package/dist/src/generators/stencil/generate.js +7 -7
- package/dist/src/generators/svelte.js +13 -12
- package/dist/src/generators/template.js +3 -3
- package/dist/src/generators/vue/blocks.js +17 -7
- package/dist/src/generators/vue/compositionApi.js +42 -7
- package/dist/src/helpers/has.d.ts +1 -1
- package/dist/src/helpers/has.js +1 -1
- package/dist/src/index.d.ts +0 -2
- package/dist/src/index.js +0 -2
- package/dist/src/parsers/jsx/element-parser.js +3 -1
- package/dist/src/parsers/jsx/function-parser.d.ts +1 -0
- package/dist/src/parsers/jsx/function-parser.js +6 -2
- package/dist/src/parsers/jsx/metadata.js +15 -7
- package/dist/src/parsers/jsx/state.js +4 -1
- package/dist/src/targets.d.ts +0 -1
- package/dist/src/targets.js +0 -2
- package/dist/src/types/mitosis-node.d.ts +6 -4
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -3
- package/dist/src/generators/context/rsc.d.ts +0 -12
- package/dist/src/generators/context/rsc.js +0 -32
- package/dist/src/generators/rsc.d.ts +0 -4
- package/dist/src/generators/rsc.js +0 -93
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -16,6 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.blockToVue = void 0;
|
|
18
18
|
var function_1 = require("fp-ts/lib/function");
|
|
19
|
+
var lodash_1 = require("lodash");
|
|
19
20
|
var filter_empty_text_nodes_1 = require("../../helpers/filter-empty-text-nodes");
|
|
20
21
|
var is_children_1 = __importDefault(require("../../helpers/is-children"));
|
|
21
22
|
var is_mitosis_node_1 = require("../../helpers/is-mitosis-node");
|
|
@@ -186,9 +187,10 @@ var NODE_MAPPERS = {
|
|
|
186
187
|
};
|
|
187
188
|
var stringifyBinding = function (node) {
|
|
188
189
|
return function (_a) {
|
|
190
|
+
var _b;
|
|
189
191
|
var key = _a[0], value = _a[1];
|
|
190
|
-
if (key === '
|
|
191
|
-
return '';
|
|
192
|
+
if (((_b = node.bindings[key]) === null || _b === void 0 ? void 0 : _b.type) === 'spread') {
|
|
193
|
+
return ''; // we handle this after
|
|
192
194
|
}
|
|
193
195
|
else if (key === 'class') {
|
|
194
196
|
return " :class=\"_classStringToObject(".concat((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(value === null || value === void 0 ? void 0 : value.code, {
|
|
@@ -201,7 +203,7 @@ var stringifyBinding = function (node) {
|
|
|
201
203
|
// TODO: proper babel transform to replace. Util for this
|
|
202
204
|
var useValue = (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(value === null || value === void 0 ? void 0 : value.code);
|
|
203
205
|
if (key.startsWith('on')) {
|
|
204
|
-
var
|
|
206
|
+
var _c = value.arguments, cusArgs = _c === void 0 ? ['event'] : _c;
|
|
205
207
|
var event_1 = key.replace('on', '').toLowerCase();
|
|
206
208
|
if (event_1 === 'change' && node.name === 'input') {
|
|
207
209
|
event_1 = 'input';
|
|
@@ -233,7 +235,7 @@ var stringifyBinding = function (node) {
|
|
|
233
235
|
};
|
|
234
236
|
};
|
|
235
237
|
var blockToVue = function (node, options, scope) {
|
|
236
|
-
var _a
|
|
238
|
+
var _a;
|
|
237
239
|
var nodeMapper = NODE_MAPPERS[node.name];
|
|
238
240
|
if (nodeMapper) {
|
|
239
241
|
return nodeMapper(node, options, scope);
|
|
@@ -260,9 +262,6 @@ var blockToVue = function (node, options, scope) {
|
|
|
260
262
|
}
|
|
261
263
|
var str = '';
|
|
262
264
|
str += "<".concat(node.name, " ");
|
|
263
|
-
if ((_b = node.bindings._spread) === null || _b === void 0 ? void 0 : _b.code) {
|
|
264
|
-
str += "v-bind=\"".concat((0, helpers_1.encodeQuotes)((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(node.bindings._spread.code)), "\"");
|
|
265
|
-
}
|
|
266
265
|
for (var key in node.properties) {
|
|
267
266
|
var value = node.properties[key];
|
|
268
267
|
if (key === 'className') {
|
|
@@ -282,6 +281,17 @@ var blockToVue = function (node, options, scope) {
|
|
|
282
281
|
})
|
|
283
282
|
.join('');
|
|
284
283
|
str += stringifiedBindings;
|
|
284
|
+
// spreads
|
|
285
|
+
var spreads = (0, lodash_1.filter)(node.bindings, function (binding) { return (binding === null || binding === void 0 ? void 0 : binding.type) === 'spread'; }).map(function (value) { return value === null || value === void 0 ? void 0 : value.code; });
|
|
286
|
+
if (spreads === null || spreads === void 0 ? void 0 : spreads.length) {
|
|
287
|
+
if (spreads.length > 1) {
|
|
288
|
+
var spreadsString = "{...".concat(spreads.join(', ...'), "}");
|
|
289
|
+
str += " v-bind=\"".concat((0, helpers_1.encodeQuotes)((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(spreadsString)), "\"");
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
str += " v-bind=\"".concat((0, helpers_1.encodeQuotes)((0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(spreads.join(''))), "\"");
|
|
293
|
+
}
|
|
294
|
+
}
|
|
285
295
|
if (jsx_1.selfClosingTags.has(node.name)) {
|
|
286
296
|
return str + ' />';
|
|
287
297
|
}
|
|
@@ -3,6 +3,15 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
|
|
|
3
3
|
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
4
|
return cooked;
|
|
5
5
|
};
|
|
6
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
7
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
8
|
+
if (ar || !(i in from)) {
|
|
9
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
10
|
+
ar[i] = from[i];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
14
|
+
};
|
|
6
15
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
16
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
17
|
};
|
|
@@ -31,17 +40,43 @@ var getCompositionPropDefinition = function (_a) {
|
|
|
31
40
|
}
|
|
32
41
|
return str;
|
|
33
42
|
};
|
|
43
|
+
function shouldAppendValueToRef(path) {
|
|
44
|
+
var parent = path.parent, node = path.node;
|
|
45
|
+
if (core_1.types.isFunctionDeclaration(parent) && parent.id === node) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (core_1.types.isCallExpression(parent)) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
var isMemberExpression = core_1.types.isMemberExpression(parent);
|
|
52
|
+
if (isMemberExpression &&
|
|
53
|
+
core_1.types.isThisExpression(parent.object) &&
|
|
54
|
+
core_1.types.isProgram(path.scope.block) &&
|
|
55
|
+
path.scope.hasReference(node.name)) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (isMemberExpression &&
|
|
59
|
+
core_1.types.isIdentifier(parent.object) &&
|
|
60
|
+
core_1.types.isIdentifier(parent.property) &&
|
|
61
|
+
parent.property.name === node.name) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
if (Object.keys(path.scope.bindings).includes(path.node.name)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
if (path.parentPath.listKey === 'arguments' || path.parentPath.listKey === 'params') {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
34
72
|
function appendValueToRefs(input, component, options) {
|
|
35
|
-
var refKeys = Object.keys(
|
|
73
|
+
var refKeys = Object.keys(component.refs);
|
|
74
|
+
var stateKeys = Object.keys((0, lodash_1.pickBy)(component.state, function (i) { return (i === null || i === void 0 ? void 0 : i.type) === 'property'; }));
|
|
75
|
+
var allKeys = __spreadArray(__spreadArray([], refKeys, true), stateKeys, true);
|
|
36
76
|
var output = (0, helpers_1.processBinding)({ code: input, options: options, json: component, includeProps: false });
|
|
37
77
|
return (0, babel_transform_1.babelTransformExpression)(output, {
|
|
38
78
|
Identifier: function (path) {
|
|
39
|
-
if (
|
|
40
|
-
!core_1.types.isCallExpression(path.parent) &&
|
|
41
|
-
(!core_1.types.isMemberExpression(path.parent) || core_1.types.isThisExpression(path.parent.object)) &&
|
|
42
|
-
path.parentPath.listKey !== 'arguments' &&
|
|
43
|
-
path.parentPath.listKey !== 'params' &&
|
|
44
|
-
refKeys.includes(path.node.name)) {
|
|
79
|
+
if (allKeys.includes(path.node.name) && shouldAppendValueToRef(path)) {
|
|
45
80
|
path.replaceWith(core_1.types.identifier("".concat(path.node.name, ".value")));
|
|
46
81
|
}
|
|
47
82
|
},
|
|
@@ -4,6 +4,6 @@ import { MitosisNode } from '../types/mitosis-node';
|
|
|
4
4
|
* Test if the component has something
|
|
5
5
|
*
|
|
6
6
|
* e.g.
|
|
7
|
-
* const hasSpread = has(component, node =>
|
|
7
|
+
* const hasSpread = has(component, node => some(node.bindings, { type: 'spread' }));
|
|
8
8
|
*/
|
|
9
9
|
export declare function has(json: MitosisComponent, test: (node: MitosisNode) => boolean): boolean;
|
package/dist/src/helpers/has.js
CHANGED
|
@@ -10,7 +10,7 @@ var is_mitosis_node_1 = require("./is-mitosis-node");
|
|
|
10
10
|
* Test if the component has something
|
|
11
11
|
*
|
|
12
12
|
* e.g.
|
|
13
|
-
* const hasSpread = has(component, node =>
|
|
13
|
+
* const hasSpread = has(component, node => some(node.bindings, { type: 'spread' }));
|
|
14
14
|
*/
|
|
15
15
|
function has(json, test) {
|
|
16
16
|
var found = false;
|
package/dist/src/index.d.ts
CHANGED
|
@@ -39,12 +39,10 @@ export * from './generators/vue';
|
|
|
39
39
|
export * from './generators/angular';
|
|
40
40
|
export * from './generators/context/react';
|
|
41
41
|
export * from './generators/context/qwik';
|
|
42
|
-
export * from './generators/context/rsc';
|
|
43
42
|
export * from './generators/context/solid';
|
|
44
43
|
export * from './generators/context/vue';
|
|
45
44
|
export * from './generators/context/svelte';
|
|
46
45
|
export * from './generators/react';
|
|
47
|
-
export * from './generators/rsc';
|
|
48
46
|
export * from './generators/solid';
|
|
49
47
|
export * from './generators/liquid';
|
|
50
48
|
export * from './generators/builder';
|
package/dist/src/index.js
CHANGED
|
@@ -77,12 +77,10 @@ __exportStar(require("./generators/vue"), exports);
|
|
|
77
77
|
__exportStar(require("./generators/angular"), exports);
|
|
78
78
|
__exportStar(require("./generators/context/react"), exports);
|
|
79
79
|
__exportStar(require("./generators/context/qwik"), exports);
|
|
80
|
-
__exportStar(require("./generators/context/rsc"), exports);
|
|
81
80
|
__exportStar(require("./generators/context/solid"), exports);
|
|
82
81
|
__exportStar(require("./generators/context/vue"), exports);
|
|
83
82
|
__exportStar(require("./generators/context/svelte"), exports);
|
|
84
83
|
__exportStar(require("./generators/react"), exports);
|
|
85
|
-
__exportStar(require("./generators/rsc"), exports);
|
|
86
84
|
__exportStar(require("./generators/solid"), exports);
|
|
87
85
|
__exportStar(require("./generators/liquid"), exports);
|
|
88
86
|
__exportStar(require("./generators/builder"), exports);
|
|
@@ -238,8 +238,10 @@ var jsxElementToJson = function (node) {
|
|
|
238
238
|
// TODO: potentially like Vue store bindings and properties as array of key value pairs
|
|
239
239
|
// too so can do this accurately when order matters. Also tempting to not support spread,
|
|
240
240
|
// as some frameworks do not support it (e.g. Angular) tho Angular may be the only one
|
|
241
|
-
|
|
241
|
+
var key = (0, generator_1.default)(item.argument).code;
|
|
242
|
+
memo[key] = {
|
|
242
243
|
code: types.stringLiteral((0, generator_1.default)(item.argument).code).value,
|
|
244
|
+
type: 'spread',
|
|
243
245
|
};
|
|
244
246
|
}
|
|
245
247
|
return memo;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as babel from '@babel/core';
|
|
2
2
|
import { JSONOrNode } from '../../types/json';
|
|
3
3
|
import { Context } from './types';
|
|
4
|
+
export declare function generateUseStyleCode(expression: babel.types.CallExpression): string;
|
|
4
5
|
/**
|
|
5
6
|
* Parses function declarations within the Mitosis copmonent's body to JSON
|
|
6
7
|
*/
|
|
@@ -46,7 +46,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
46
46
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
47
|
};
|
|
48
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
-
exports.componentFunctionToJson = void 0;
|
|
49
|
+
exports.componentFunctionToJson = exports.generateUseStyleCode = void 0;
|
|
50
50
|
var babel = __importStar(require("@babel/core"));
|
|
51
51
|
var generator_1 = __importDefault(require("@babel/generator"));
|
|
52
52
|
var trace_reference_to_module_path_1 = require("../../helpers/trace-reference-to-module-path");
|
|
@@ -58,6 +58,10 @@ var helpers_1 = require("./helpers");
|
|
|
58
58
|
var component_types_1 = require("./component-types");
|
|
59
59
|
var element_parser_1 = require("./element-parser");
|
|
60
60
|
var types = babel.types;
|
|
61
|
+
function generateUseStyleCode(expression) {
|
|
62
|
+
return (0, generator_1.default)(expression.arguments[0]).code.replace(/(^("|'|`)|("|'|`)$)/g, '');
|
|
63
|
+
}
|
|
64
|
+
exports.generateUseStyleCode = generateUseStyleCode;
|
|
61
65
|
/**
|
|
62
66
|
* Parses function declarations within the Mitosis copmonent's body to JSON
|
|
63
67
|
*/
|
|
@@ -187,7 +191,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
187
191
|
}
|
|
188
192
|
}
|
|
189
193
|
else if (expression.callee.name === hooks_1.HOOKS.STYLE) {
|
|
190
|
-
context.builder.component.style = (
|
|
194
|
+
context.builder.component.style = generateUseStyleCode(expression);
|
|
191
195
|
}
|
|
192
196
|
}
|
|
193
197
|
}
|
|
@@ -25,6 +25,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.collectMetadata = exports.METADATA_HOOK_NAME = void 0;
|
|
27
27
|
var babel = __importStar(require("@babel/core"));
|
|
28
|
+
var hooks_1 = require("../../constants/hooks");
|
|
29
|
+
var function_parser_1 = require("./function-parser");
|
|
28
30
|
var helpers_1 = require("./helpers");
|
|
29
31
|
var types = babel.types;
|
|
30
32
|
var getHook = function (node) {
|
|
@@ -54,14 +56,20 @@ var collectMetadata = function (nodes, component, options) {
|
|
|
54
56
|
if (!hook) {
|
|
55
57
|
return true;
|
|
56
58
|
}
|
|
57
|
-
if (types.isIdentifier(hook.callee)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
if (types.isIdentifier(hook.callee)) {
|
|
60
|
+
if (hookNames.has(hook.callee.name)) {
|
|
61
|
+
try {
|
|
62
|
+
component.meta[hook.callee.name] = (0, helpers_1.parseCodeJson)(hook.arguments[0]);
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
console.error("Error parsing metadata hook ".concat(hook.callee.name));
|
|
67
|
+
throw e;
|
|
68
|
+
}
|
|
61
69
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
70
|
+
else if (hook.callee.name === hooks_1.HOOKS.STYLE) {
|
|
71
|
+
component.style = (0, function_parser_1.generateUseStyleCode)(hook);
|
|
72
|
+
return false;
|
|
65
73
|
}
|
|
66
74
|
}
|
|
67
75
|
return true;
|
|
@@ -85,7 +85,7 @@ function mapStateIdentifiers(json) {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
(0, traverse_1.default)(json).forEach(function (item) {
|
|
88
|
-
var _a;
|
|
88
|
+
var _a, _b;
|
|
89
89
|
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
90
90
|
for (var key in item.bindings) {
|
|
91
91
|
var value = item.bindings[key];
|
|
@@ -96,6 +96,9 @@ function mapStateIdentifiers(json) {
|
|
|
96
96
|
if ((_a = value.arguments) === null || _a === void 0 ? void 0 : _a.length) {
|
|
97
97
|
item.bindings[key].arguments = value.arguments;
|
|
98
98
|
}
|
|
99
|
+
if ((_b = value.type) === null || _b === void 0 ? void 0 : _b.length) {
|
|
100
|
+
item.bindings[key].type = value.type;
|
|
101
|
+
}
|
|
99
102
|
}
|
|
100
103
|
}
|
|
101
104
|
if (item.bindings.className) {
|
package/dist/src/targets.d.ts
CHANGED
|
@@ -20,5 +20,4 @@ export declare const targets: {
|
|
|
20
20
|
readonly marko: import(".").TranspilerGenerator<import("./generators/marko").ToMarkoOptions, string>;
|
|
21
21
|
readonly preact: import(".").TranspilerGenerator<import("./generators/react").ToReactOptions, string>;
|
|
22
22
|
readonly lit: import(".").TranspilerGenerator<import("./generators/lit").ToLitOptions, string>;
|
|
23
|
-
readonly rsc: import(".").TranspilerGenerator<import("./generators/rsc").ToRscOptions, string>;
|
|
24
23
|
};
|
package/dist/src/targets.js
CHANGED
|
@@ -18,7 +18,6 @@ var stencil_1 = require("./generators/stencil");
|
|
|
18
18
|
var qwik_1 = require("./generators/qwik");
|
|
19
19
|
var marko_1 = require("./generators/marko");
|
|
20
20
|
var lit_1 = require("./generators/lit");
|
|
21
|
-
var rsc_1 = require("./generators/rsc");
|
|
22
21
|
exports.builder = builder_1.componentToBuilder;
|
|
23
22
|
exports.targets = {
|
|
24
23
|
angular: angular_1.componentToAngular,
|
|
@@ -41,5 +40,4 @@ exports.targets = {
|
|
|
41
40
|
marko: marko_1.componentToMarko,
|
|
42
41
|
preact: react_2.componentToPreact,
|
|
43
42
|
lit: lit_1.componentToLit,
|
|
44
|
-
rsc: rsc_1.componentToRsc,
|
|
45
43
|
};
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { JSONObject } from './json';
|
|
2
|
+
export declare type Binding = {
|
|
3
|
+
code: string;
|
|
4
|
+
arguments?: string[];
|
|
5
|
+
type?: 'spread';
|
|
6
|
+
};
|
|
2
7
|
export declare type BaseNode = {
|
|
3
8
|
'@type': '@builder.io/mitosis/node';
|
|
4
9
|
meta: JSONObject;
|
|
@@ -29,10 +34,7 @@ export declare type BaseNode = {
|
|
|
29
34
|
* ```
|
|
30
35
|
*/
|
|
31
36
|
bindings: {
|
|
32
|
-
[key: string]:
|
|
33
|
-
code: string;
|
|
34
|
-
arguments?: string[];
|
|
35
|
-
} | undefined;
|
|
37
|
+
[key: string]: Binding | undefined;
|
|
36
38
|
};
|
|
37
39
|
children: MitosisNode[];
|
|
38
40
|
};
|