@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.
Files changed (36) hide show
  1. package/dist/src/generators/angular.js +3 -3
  2. package/dist/src/generators/html.js +4 -4
  3. package/dist/src/generators/lit/generate.js +8 -8
  4. package/dist/src/generators/marko/generate.js +8 -8
  5. package/dist/src/generators/mitosis.js +5 -8
  6. package/dist/src/generators/qwik/jsx.js +2 -2
  7. package/dist/src/generators/qwik/src-generator.js +1 -1
  8. package/dist/src/generators/react/generator.d.ts +0 -1
  9. package/dist/src/generators/react/generator.js +36 -62
  10. package/dist/src/generators/react/state.js +1 -0
  11. package/dist/src/generators/react/types.d.ts +1 -6
  12. package/dist/src/generators/solid/index.js +8 -7
  13. package/dist/src/generators/stencil/generate.js +7 -7
  14. package/dist/src/generators/svelte.js +13 -12
  15. package/dist/src/generators/template.js +3 -3
  16. package/dist/src/generators/vue/blocks.js +17 -7
  17. package/dist/src/generators/vue/compositionApi.js +42 -7
  18. package/dist/src/helpers/has.d.ts +1 -1
  19. package/dist/src/helpers/has.js +1 -1
  20. package/dist/src/index.d.ts +0 -2
  21. package/dist/src/index.js +0 -2
  22. package/dist/src/parsers/jsx/element-parser.js +3 -1
  23. package/dist/src/parsers/jsx/function-parser.d.ts +1 -0
  24. package/dist/src/parsers/jsx/function-parser.js +6 -2
  25. package/dist/src/parsers/jsx/metadata.js +15 -7
  26. package/dist/src/parsers/jsx/state.js +4 -1
  27. package/dist/src/targets.d.ts +0 -1
  28. package/dist/src/targets.js +0 -2
  29. package/dist/src/types/mitosis-node.d.ts +6 -4
  30. package/dist/tsconfig.build.tsbuildinfo +1 -1
  31. package/package.json +2 -3
  32. package/dist/src/generators/context/rsc.d.ts +0 -12
  33. package/dist/src/generators/context/rsc.js +0 -32
  34. package/dist/src/generators/rsc.d.ts +0 -4
  35. package/dist/src/generators/rsc.js +0 -93
  36. 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 === '_spread') {
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 _b = value.arguments, cusArgs = _b === void 0 ? ['event'] : _b;
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, _b;
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((0, lodash_1.pickBy)(component.state, function (i) { return (i === null || i === void 0 ? void 0 : i.type) === 'property'; }));
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 (!(core_1.types.isFunctionDeclaration(path.parent) && path.parent.id === path.node) &&
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 => Boolean(node.bindings._spread));
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;
@@ -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 => Boolean(node.bindings._spread));
13
+ * const hasSpread = has(component, node => some(node.bindings, { type: 'spread' }));
14
14
  */
15
15
  function has(json, test) {
16
16
  var found = false;
@@ -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
- memo._spread = {
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 = (0, generator_1.default)(expression.arguments[0]).code.replace(/(^("|'|`)|("|'|`)$)/g, '');
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) && hookNames.has(hook.callee.name)) {
58
- try {
59
- component.meta[hook.callee.name] = (0, helpers_1.parseCodeJson)(hook.arguments[0]);
60
- return false;
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
- catch (e) {
63
- console.error("Error parsing metadata hook ".concat(hook.callee.name));
64
- throw e;
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) {
@@ -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
  };
@@ -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
  };