@builder.io/mitosis 0.0.78 → 0.0.79

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 (143) hide show
  1. package/dist/src/generators/html.js +6 -3
  2. package/dist/src/generators/qwik/component-generator.js +51 -46
  3. package/dist/src/generators/qwik/stable-inject.d.ts +5 -0
  4. package/dist/src/generators/qwik/stable-inject.js +50 -0
  5. package/dist/src/generators/react/state.js +6 -4
  6. package/dist/src/generators/solid/state/signals.js +6 -7
  7. package/dist/src/generators/solid/state/store.js +6 -7
  8. package/dist/src/helpers/babel-transform.d.ts +0 -1
  9. package/dist/src/helpers/babel-transform.js +2 -3
  10. package/dist/src/helpers/get-state-object-string.js +1 -5
  11. package/dist/src/helpers/handle-missing-state.js +1 -1
  12. package/dist/src/helpers/plugins/process-code.js +1 -1
  13. package/dist/src/helpers/process-http-requests.js +1 -1
  14. package/dist/src/index.d.ts +1 -0
  15. package/dist/src/index.js +1 -0
  16. package/dist/src/parsers/builder/builder.js +7 -6
  17. package/dist/src/parsers/builder/helpers.js +1 -1
  18. package/dist/src/parsers/jsx/function-parser.js +2 -2
  19. package/dist/src/parsers/jsx/helpers.js +0 -4
  20. package/dist/src/parsers/jsx/hooks.js +2 -2
  21. package/dist/src/parsers/jsx/state.js +2 -2
  22. package/dist/src/parsers/svelte/css/index.d.ts +3 -0
  23. package/dist/src/parsers/svelte/css/index.js +8 -0
  24. package/dist/src/parsers/svelte/helpers/bindings.d.ts +3 -0
  25. package/dist/src/parsers/svelte/helpers/bindings.js +75 -0
  26. package/dist/src/parsers/svelte/helpers/children.d.ts +5 -0
  27. package/dist/src/parsers/svelte/helpers/children.js +23 -0
  28. package/dist/src/parsers/svelte/helpers/expressions.d.ts +3 -0
  29. package/dist/src/parsers/svelte/helpers/expressions.js +22 -0
  30. package/dist/src/parsers/svelte/helpers/hooks.d.ts +2 -0
  31. package/dist/src/parsers/svelte/helpers/hooks.js +15 -0
  32. package/dist/src/parsers/svelte/helpers/mitosis-node.d.ts +2 -0
  33. package/dist/src/parsers/svelte/helpers/mitosis-node.js +15 -0
  34. package/dist/src/parsers/svelte/helpers/post-process.d.ts +9 -0
  35. package/dist/src/parsers/svelte/helpers/post-process.js +177 -0
  36. package/dist/src/parsers/svelte/helpers/string.d.ts +3 -0
  37. package/dist/src/parsers/svelte/helpers/string.js +26 -0
  38. package/dist/src/parsers/svelte/html/actions.d.ts +3 -0
  39. package/dist/src/parsers/svelte/html/actions.js +40 -0
  40. package/dist/src/parsers/svelte/html/each.d.ts +35 -0
  41. package/dist/src/parsers/svelte/html/each.js +24 -0
  42. package/dist/src/parsers/svelte/html/element.d.ts +3 -0
  43. package/dist/src/parsers/svelte/html/element.js +222 -0
  44. package/dist/src/parsers/svelte/html/fragment.d.ts +3 -0
  45. package/dist/src/parsers/svelte/html/fragment.js +16 -0
  46. package/dist/src/parsers/svelte/html/if-else.d.ts +3 -0
  47. package/dist/src/parsers/svelte/html/if-else.js +37 -0
  48. package/dist/src/parsers/svelte/html/index.d.ts +5 -0
  49. package/dist/src/parsers/svelte/html/index.js +79 -0
  50. package/dist/src/parsers/svelte/html/mustache-tag.d.ts +3 -0
  51. package/dist/src/parsers/svelte/html/mustache-tag.js +23 -0
  52. package/dist/src/parsers/svelte/html/slot.d.ts +3 -0
  53. package/dist/src/parsers/svelte/html/slot.js +25 -0
  54. package/dist/src/parsers/svelte/html/text.d.ts +30 -0
  55. package/dist/src/parsers/svelte/html/text.js +21 -0
  56. package/dist/src/parsers/svelte/index.d.ts +2 -0
  57. package/dist/src/parsers/svelte/index.js +105 -0
  58. package/dist/src/parsers/svelte/instance/context.d.ts +5 -0
  59. package/dist/src/parsers/svelte/instance/context.js +59 -0
  60. package/dist/src/parsers/svelte/instance/expressions.d.ts +3 -0
  61. package/dist/src/parsers/svelte/instance/expressions.js +11 -0
  62. package/dist/src/parsers/svelte/instance/functions.d.ts +3 -0
  63. package/dist/src/parsers/svelte/instance/functions.js +61 -0
  64. package/dist/src/parsers/svelte/instance/hooks.d.ts +5 -0
  65. package/dist/src/parsers/svelte/instance/hooks.js +33 -0
  66. package/dist/src/parsers/svelte/instance/imports.d.ts +3 -0
  67. package/dist/src/parsers/svelte/instance/imports.js +42 -0
  68. package/dist/src/parsers/svelte/instance/index.d.ts +3 -0
  69. package/dist/src/parsers/svelte/instance/index.js +125 -0
  70. package/dist/src/parsers/svelte/instance/properties.d.ts +3 -0
  71. package/dist/src/parsers/svelte/instance/properties.js +34 -0
  72. package/dist/src/parsers/svelte/instance/reactive.d.ts +3 -0
  73. package/dist/src/parsers/svelte/instance/reactive.js +24 -0
  74. package/dist/src/parsers/svelte/instance/references.d.ts +4 -0
  75. package/dist/src/parsers/svelte/instance/references.js +68 -0
  76. package/dist/src/parsers/svelte/instance/statements.d.ts +3 -0
  77. package/dist/src/parsers/svelte/instance/statements.js +10 -0
  78. package/dist/src/parsers/svelte/module/index.d.ts +3 -0
  79. package/dist/src/parsers/svelte/module/index.js +46 -0
  80. package/dist/src/parsers/svelte/types/index.d.ts +4 -0
  81. package/dist/src/parsers/svelte/types/index.js +2 -0
  82. package/dist/src/parsers/svelte/typescript/index.d.ts +7 -0
  83. package/dist/src/parsers/svelte/typescript/index.js +130 -0
  84. package/dist/src/plugins/compile-away-builder-components.d.ts +2 -5
  85. package/dist/src/types/config.d.ts +0 -5
  86. package/dist/src/types/mitosis-component.d.ts +3 -11
  87. package/dist/src/types/mitosis-component.js +0 -11
  88. package/dist/tsconfig.build.tsbuildinfo +1 -1
  89. package/package.json +14 -1
  90. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mAccordion/high.jsx +0 -0
  91. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mAccordion/low.jsx +0 -240
  92. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mAccordion/med.jsx +0 -4
  93. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mFor/high.jsx +0 -0
  94. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mFor/low.jsx +0 -54
  95. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mFor/med.jsx +0 -4
  96. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage/high.js +0 -9
  97. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage/low.js +0 -0
  98. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage/med.js +0 -151
  99. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage.slow/high.js +0 -9
  100. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage.slow/low.js +0 -0
  101. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage.slow/med.js +0 -151
  102. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbindings/high.cjs +0 -0
  103. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbindings/low.cjs +0 -45
  104. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbindings/med.cjs +0 -3
  105. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbutton/high.js +0 -3
  106. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbutton/low.js +0 -25
  107. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbutton/med.js +0 -31
  108. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mbindings/high.jsx +0 -0
  109. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mbindings/low.jsx +0 -108
  110. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mbindings/med.jsx +0 -7
  111. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mcomponent/inputs/high.cjsx +0 -9
  112. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mcomponent/inputs/low.cjsx +0 -0
  113. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mcomponent/inputs/med.cjsx +0 -68
  114. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mfor-loop.bindings/high.cjs +0 -0
  115. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mfor-loop.bindings/low.cjs +0 -58
  116. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mfor-loop.bindings/med.cjs +0 -5
  117. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mhello_world/033[2m/>//033[22mstylesheet/high.jsx +0 -0
  118. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mhello_world/033[2m/>//033[22mstylesheet/low.jsx +0 -26
  119. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mhello_world/033[2m/>//033[22mstylesheet/med.jsx +0 -4
  120. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mmount/high.cjs +0 -0
  121. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mmount/low.cjs +0 -47
  122. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mmount/med.cjs +0 -3
  123. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mpage-with-symbol/high.js +0 -0
  124. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mpage-with-symbol/low.js +0 -33
  125. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mpage-with-symbol/med.js +0 -4
  126. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mshow-hide/high.jsx +0 -9
  127. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mshow-hide/low.jsx +0 -0
  128. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mshow-hide/med.jsx +0 -170
  129. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22msvg/high.js +0 -0
  130. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22msvg/low.js +0 -30
  131. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22msvg/med.js +0 -4
  132. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.cjs/high.cjs +0 -19
  133. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.cjs/low.cjs +0 -0
  134. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.cjs/med.cjs +0 -51
  135. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.js/high.js +0 -19
  136. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.js/low.js +0 -0
  137. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.js/med.js +0 -47
  138. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.tsx/high.tsx +0 -19
  139. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.tsx/low.tsx +0 -0
  140. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.tsx/med.tsx +0 -43
  141. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodos/033[2m/>//033[22mTodo.tsx/high.tsx +0 -7
  142. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodos/033[2m/>//033[22mTodo.tsx/low.tsx +0 -34
  143. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodos/033[2m/>//033[22mTodo.tsx/med.tsx +0 -4
@@ -0,0 +1,222 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.parseElement = void 0;
15
+ var astring_1 = require("astring");
16
+ var lodash_1 = require("lodash");
17
+ var mitosis_node_1 = require("../helpers/mitosis-node");
18
+ var children_1 = require("../helpers/children");
19
+ var string_1 = require("../helpers/string");
20
+ var actions_1 = require("./actions");
21
+ var SPECIAL_ELEMENTS = new Set(['svelte:component', 'svelte:element']);
22
+ function parseElement(json, node) {
23
+ var _a;
24
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
25
+ var mitosisNode = (0, mitosis_node_1.createMitosisNode)();
26
+ mitosisNode.name = node.name;
27
+ var useReference = function () {
28
+ var nodeReference = (0, string_1.uniqueName)(Object.keys(json.refs), node.name);
29
+ if (!Object.keys(json.refs).includes(nodeReference)) {
30
+ json.refs[nodeReference] = { argument: '', typeParameter: '' };
31
+ mitosisNode.bindings.ref = {
32
+ code: nodeReference,
33
+ };
34
+ }
35
+ return nodeReference;
36
+ };
37
+ /*
38
+ Parse special elements such as svelte:component and svelte:element
39
+ */
40
+ if (SPECIAL_ELEMENTS.has(node.name)) {
41
+ var expression = (0, astring_1.generate)(node.expression || node.tag);
42
+ var prefix = 'state';
43
+ if (json.props[expression]) {
44
+ prefix = 'props';
45
+ }
46
+ mitosisNode.name = "".concat(prefix, ".").concat(expression);
47
+ }
48
+ if ((_b = node.attributes) === null || _b === void 0 ? void 0 : _b.length) {
49
+ for (var _i = 0, _s = node.attributes; _i < _s.length; _i++) {
50
+ var attribute = _s[_i];
51
+ switch (attribute.type) {
52
+ case 'Attribute': {
53
+ switch ((_c = attribute.value[0]) === null || _c === void 0 ? void 0 : _c.type) {
54
+ case 'Text': {
55
+ var value = attribute.value[0];
56
+ // if there are already conditional class declarations
57
+ // add class names defined here to the bindings code as well
58
+ if (attribute.name === 'class' && ((_e = (_d = mitosisNode.bindings.class) === null || _d === void 0 ? void 0 : _d.code) === null || _e === void 0 ? void 0 : _e.length)) {
59
+ mitosisNode.bindings.class.code = (0, string_1.insertAt)(mitosisNode.bindings.class.code, " ".concat(value.data, " "), 1);
60
+ }
61
+ else {
62
+ mitosisNode.properties[attribute.name] = value.data;
63
+ }
64
+ break;
65
+ }
66
+ case 'MustacheTag': {
67
+ var value = attribute.value[0];
68
+ var expression = value.expression;
69
+ var code = (0, astring_1.generate)(expression);
70
+ if (attribute.name === 'class') {
71
+ code = ((_g = (_f = mitosisNode.bindings.class) === null || _f === void 0 ? void 0 : _f.code) === null || _g === void 0 ? void 0 : _g.length)
72
+ ? (0, string_1.insertAt)(mitosisNode.bindings.class.code, ' ${' + code + '}', mitosisNode.bindings.class.code.length - 1)
73
+ : '`${' + code + '}`';
74
+ }
75
+ mitosisNode.bindings[attribute.name] = {
76
+ code: code,
77
+ };
78
+ break;
79
+ }
80
+ case 'AttributeShorthand': {
81
+ // e.g. <input {value}/>
82
+ var value = attribute.value[0];
83
+ var code = value.expression.name;
84
+ mitosisNode.bindings[code] = {
85
+ code: code,
86
+ };
87
+ break;
88
+ }
89
+ default: {
90
+ var name_1 = attribute.name;
91
+ mitosisNode.bindings[name_1] = { code: attribute.value.toString() };
92
+ }
93
+ }
94
+ break;
95
+ }
96
+ case 'Spread': {
97
+ var expression = attribute.expression;
98
+ mitosisNode.bindings[expression.name] = {
99
+ code: expression.name,
100
+ type: 'spread',
101
+ };
102
+ break;
103
+ }
104
+ case 'EventHandler': {
105
+ var object = { code: '', arguments: [] };
106
+ if (((_h = attribute.expression) === null || _h === void 0 ? void 0 : _h.type) === 'ArrowTypeFunction') {
107
+ var expression = attribute.expression;
108
+ object = {
109
+ code: (0, astring_1.generate)(expression.body),
110
+ arguments: (_k = (_j = expression.body) === null || _j === void 0 ? void 0 : _j.arguments) === null || _k === void 0 ? void 0 : _k.map(function (a) { return a.name; }),
111
+ };
112
+ }
113
+ else if (attribute.expression) {
114
+ var code = (0, astring_1.generate)(attribute.expression);
115
+ if (!((_l = attribute.expression.arguments) === null || _l === void 0 ? void 0 : _l.length) &&
116
+ !((_o = (_m = attribute.expression.body) === null || _m === void 0 ? void 0 : _m.arguments) === null || _o === void 0 ? void 0 : _o.length)) {
117
+ code = code.replace(/\(\)/g, '(event)');
118
+ }
119
+ object = {
120
+ code: code,
121
+ arguments: ['event'],
122
+ };
123
+ }
124
+ else {
125
+ object = {
126
+ code: "props.on".concat((0, lodash_1.upperFirst)(attribute.name), "(event)"),
127
+ arguments: ['event'],
128
+ };
129
+ }
130
+ mitosisNode.bindings["on".concat((0, lodash_1.upperFirst)(attribute.name))] = object;
131
+ // add event handlers as props (e.g. props.onClick)
132
+ json.props = __assign(__assign({}, json.props), (_a = {}, _a["on".concat((0, lodash_1.upperFirst)(attribute.name))] = { default: function () { return ({}); } }, _a));
133
+ break;
134
+ }
135
+ case 'Binding': {
136
+ /*
137
+ adding onChange handlers for bind:group and bind:property is done during post processing
138
+ same goes for replacing the group binding with checked
139
+ see helpers/post-process.ts
140
+ */
141
+ var expression = attribute.expression;
142
+ var binding = expression.name;
143
+ var name_2 = attribute.name;
144
+ // template ref
145
+ if (attribute.name === 'this') {
146
+ name_2 = 'ref';
147
+ json.refs[binding] = {
148
+ argument: 'null',
149
+ typeParameter: 'any',
150
+ };
151
+ if (Object.prototype.hasOwnProperty.call(json.state, binding)) {
152
+ delete json.state[binding];
153
+ }
154
+ }
155
+ if (name_2 !== 'ref' && name_2 !== 'group' && name_2 !== 'this') {
156
+ var onChangeCode = "".concat(binding, " = event.target.value");
157
+ mitosisNode.bindings['onChange'] = {
158
+ code: onChangeCode,
159
+ arguments: ['event'],
160
+ };
161
+ }
162
+ mitosisNode.bindings[name_2] = {
163
+ code: binding,
164
+ };
165
+ break;
166
+ }
167
+ case 'Class': {
168
+ var expression = attribute.expression;
169
+ // conditional classes (e.g. class:disabled or class:disabled={disabled})
170
+ var binding = "".concat((0, astring_1.generate)(expression), " ? '").concat(attribute.name, "' : ''");
171
+ var code = '';
172
+ // if there are existing class declarations
173
+ // add them here instead and remove them from properties
174
+ // to avoid duplicate class declarations in certain frameworks
175
+ if ((_q = (_p = mitosisNode.properties) === null || _p === void 0 ? void 0 : _p.class) === null || _q === void 0 ? void 0 : _q.length) {
176
+ code = "".concat(mitosisNode.properties.class, " ");
177
+ delete mitosisNode.properties.class;
178
+ }
179
+ // if class code is already defined (meaning there is more than 1 conditional class declaration)
180
+ // append it to the string instead of assigning it
181
+ if (mitosisNode.bindings.class &&
182
+ Object.prototype.hasOwnProperty.call(mitosisNode.bindings.class, 'code') &&
183
+ ((_r = mitosisNode.bindings.class) === null || _r === void 0 ? void 0 : _r.code.length)) {
184
+ code = (0, string_1.insertAt)(mitosisNode.bindings.class.code, ' ${' + binding + '}', mitosisNode.bindings.class.code.length - 1);
185
+ mitosisNode.bindings.class = {
186
+ code: code,
187
+ };
188
+ }
189
+ else {
190
+ // otherwise just assign
191
+ code = '`' + code + '${' + binding + '}`';
192
+ mitosisNode.bindings.class = {
193
+ code: code,
194
+ };
195
+ }
196
+ break;
197
+ }
198
+ case 'Action': {
199
+ (0, actions_1.parseAction)(json, useReference(), attribute);
200
+ break;
201
+ }
202
+ // No default
203
+ }
204
+ }
205
+ }
206
+ var filteredChildren = [];
207
+ if (node.children) {
208
+ filteredChildren = (0, children_1.filterChildren)(node.children);
209
+ }
210
+ if (filteredChildren.length === 1 && filteredChildren[0].type === 'RawMustacheTag') {
211
+ var child = filteredChildren[0];
212
+ mitosisNode.children = [];
213
+ mitosisNode.bindings.innerHTML = {
214
+ code: (0, astring_1.generate)(child.expression),
215
+ };
216
+ }
217
+ else {
218
+ mitosisNode.children = (0, children_1.parseChildren)(json, node);
219
+ }
220
+ return mitosisNode;
221
+ }
222
+ exports.parseElement = parseElement;
@@ -0,0 +1,3 @@
1
+ import type { TemplateNode } from 'svelte/types/compiler/interfaces';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare function parseFragment(json: SveltosisComponent, node: TemplateNode): import("../../..").MitosisNode;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFragment = void 0;
4
+ var mitosis_node_1 = require("../helpers/mitosis-node");
5
+ var children_1 = require("../helpers/children");
6
+ function parseFragment(json, node) {
7
+ var mitosisNode = (0, mitosis_node_1.createMitosisNode)();
8
+ mitosisNode.name = 'Fragment';
9
+ mitosisNode.children = (0, children_1.parseChildren)(json, node);
10
+ // if there is only one child, don't even bother to render the fragment as it is not necessary
11
+ if (mitosisNode.children.length === 1) {
12
+ mitosisNode = mitosisNode.children[0];
13
+ }
14
+ return mitosisNode;
15
+ }
16
+ exports.parseFragment = parseFragment;
@@ -0,0 +1,3 @@
1
+ import type { TemplateNode } from 'svelte/types/compiler/interfaces';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare function parseIfElse(json: SveltosisComponent, node: TemplateNode): import("../../..").MitosisNode;
@@ -0,0 +1,37 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.parseIfElse = void 0;
15
+ var astring_1 = require("astring");
16
+ var _1 = require(".");
17
+ var mitosis_node_1 = require("../helpers/mitosis-node");
18
+ var children_1 = require("../helpers/children");
19
+ function parseIfElse(json, node) {
20
+ var _a, _b, _c;
21
+ var mitosisNode = (0, mitosis_node_1.createMitosisNode)();
22
+ mitosisNode.name = 'Show';
23
+ mitosisNode.bindings = {
24
+ when: {
25
+ code: (0, astring_1.generate)(node.expression),
26
+ },
27
+ };
28
+ mitosisNode.children = (0, children_1.parseChildren)(json, node);
29
+ if (node.else) {
30
+ mitosisNode.meta.else =
31
+ ((_a = node.else.children) === null || _a === void 0 ? void 0 : _a.length) === 1
32
+ ? (0, _1.parseHtmlNode)(json, node.else.children[0])
33
+ : __assign(__assign({}, (0, mitosis_node_1.createMitosisNode)()), { name: 'div', children: (_c = (_b = node.else.children) === null || _b === void 0 ? void 0 : _b.map(function (n) { return (0, _1.parseHtmlNode)(json, n); })) !== null && _c !== void 0 ? _c : [] });
34
+ }
35
+ return mitosisNode;
36
+ }
37
+ exports.parseIfElse = parseIfElse;
@@ -0,0 +1,5 @@
1
+ import type { MitosisNode } from '../../../types/mitosis-node';
2
+ import type { Ast, TemplateNode } from 'svelte/types/compiler/interfaces';
3
+ import type { SveltosisComponent } from '../types';
4
+ export declare function parseHtml(ast: Ast, json: SveltosisComponent): void;
5
+ export declare function parseHtmlNode(json: SveltosisComponent, node: TemplateNode): MitosisNode | undefined;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseHtmlNode = exports.parseHtml = void 0;
4
+ var compiler_1 = require("svelte/compiler");
5
+ var each_1 = require("./each");
6
+ var element_1 = require("./element");
7
+ var fragment_1 = require("./fragment");
8
+ var if_else_1 = require("./if-else");
9
+ var mustache_tag_1 = require("./mustache-tag");
10
+ var slot_1 = require("./slot");
11
+ var text_1 = require("./text");
12
+ function parseHtml(ast, json) {
13
+ var _a, _b;
14
+ // todo: should filter children and check if just 1 has length
15
+ var html = ((_a = ast.html.children) === null || _a === void 0 ? void 0 : _a.length) === 2 && ((_b = ast.html.children[0].raw) === null || _b === void 0 ? void 0 : _b.trim().length) === 0
16
+ ? ast.html.children[1]
17
+ : ast.html;
18
+ (0, compiler_1.walk)(html, {
19
+ enter: function (node, parent) {
20
+ var templateNode = node;
21
+ var parentTemplateNode = parent;
22
+ if ((parentTemplateNode === null || parentTemplateNode === void 0 ? void 0 : parentTemplateNode.children) || templateNode.data === '\n\n') {
23
+ this.skip();
24
+ return;
25
+ }
26
+ var mitosisNode = parseHtmlNode(json, templateNode);
27
+ if (mitosisNode) {
28
+ json.children.push(mitosisNode);
29
+ }
30
+ },
31
+ });
32
+ }
33
+ exports.parseHtml = parseHtml;
34
+ function parseHtmlNode(json, node) {
35
+ var mitosisNode = {
36
+ '@type': '@builder.io/mitosis/node',
37
+ name: '',
38
+ meta: {},
39
+ scope: {},
40
+ children: [],
41
+ bindings: {},
42
+ properties: {},
43
+ };
44
+ switch (node.type) {
45
+ case 'Element':
46
+ case 'InlineComponent': {
47
+ return (0, element_1.parseElement)(json, node);
48
+ }
49
+ case 'MustacheTag': {
50
+ return (0, mustache_tag_1.parseMustacheTag)(node);
51
+ }
52
+ case 'RawMustacheTag': {
53
+ return (0, mustache_tag_1.parseRawMustacheTag)(node);
54
+ }
55
+ case 'IfBlock': {
56
+ return (0, if_else_1.parseIfElse)(json, node);
57
+ }
58
+ case 'EachBlock': {
59
+ return (0, each_1.parseEach)(json, node);
60
+ }
61
+ case 'Text': {
62
+ return (0, text_1.parseText)(node);
63
+ }
64
+ case 'Fragment': {
65
+ return (0, fragment_1.parseFragment)(json, node);
66
+ }
67
+ case 'Slot': {
68
+ return (0, slot_1.parseSlot)(json, node);
69
+ }
70
+ case 'Comment': {
71
+ // do nothing :) probably skip?
72
+ break;
73
+ }
74
+ default: {
75
+ mitosisNode.name = 'div';
76
+ }
77
+ }
78
+ }
79
+ exports.parseHtmlNode = parseHtmlNode;
@@ -0,0 +1,3 @@
1
+ import type { TemplateNode } from 'svelte/types/compiler/interfaces';
2
+ export declare function parseMustacheTag(node: TemplateNode): import("../../..").MitosisNode;
3
+ export declare function parseRawMustacheTag(node: TemplateNode): import("../../..").MitosisNode;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseRawMustacheTag = exports.parseMustacheTag = void 0;
4
+ var astring_1 = require("astring");
5
+ var mitosis_node_1 = require("../helpers/mitosis-node");
6
+ function parseMustacheTag(node) {
7
+ var mitosisNode = (0, mitosis_node_1.createMitosisNode)();
8
+ mitosisNode.name = 'div';
9
+ mitosisNode.bindings['_text'] = {
10
+ code: (0, astring_1.generate)(node.expression),
11
+ };
12
+ return mitosisNode;
13
+ }
14
+ exports.parseMustacheTag = parseMustacheTag;
15
+ function parseRawMustacheTag(node) {
16
+ var mitosisNode = (0, mitosis_node_1.createMitosisNode)();
17
+ mitosisNode.name = 'div';
18
+ mitosisNode.bindings.innerHTML = {
19
+ code: (0, astring_1.generate)(node.expression),
20
+ };
21
+ return mitosisNode;
22
+ }
23
+ exports.parseRawMustacheTag = parseRawMustacheTag;
@@ -0,0 +1,3 @@
1
+ import type { TemplateNode } from 'svelte/types/compiler/interfaces';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare function parseSlot(json: SveltosisComponent, node: TemplateNode): import("../../..").MitosisNode;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSlot = void 0;
4
+ var lodash_1 = require("lodash");
5
+ var children_1 = require("../helpers/children");
6
+ var mitosis_node_1 = require("../helpers/mitosis-node");
7
+ function parseSlot(json, node) {
8
+ var _a, _b;
9
+ var mitosisNode = (0, mitosis_node_1.createMitosisNode)();
10
+ if (node.attributes.length > 0 &&
11
+ node.attributes[0].value.length > 0 &&
12
+ ((_a = node.attributes[0].value[0].data) === null || _a === void 0 ? void 0 : _a.trim().length)) {
13
+ mitosisNode.name = 'div';
14
+ var slotName = (0, lodash_1.upperFirst)((_b = node.attributes[0].value[0]) === null || _b === void 0 ? void 0 : _b.data);
15
+ mitosisNode.bindings._text = {
16
+ code: "props.slot".concat(slotName),
17
+ };
18
+ }
19
+ else {
20
+ mitosisNode.name = 'Slot';
21
+ }
22
+ mitosisNode.children = (0, children_1.parseChildren)(json, node);
23
+ return mitosisNode;
24
+ }
25
+ exports.parseSlot = parseSlot;
@@ -0,0 +1,30 @@
1
+ import type { TemplateNode } from 'svelte/types/compiler/interfaces';
2
+ export declare function parseText(node: TemplateNode): {
3
+ name: string;
4
+ properties: {
5
+ _text: any;
6
+ };
7
+ '@type': "@builder.io/mitosis/node";
8
+ meta: import("../../../types/json").JSONObject;
9
+ scope: {};
10
+ bindings: {
11
+ [key: string]: import("../../..").Binding | undefined;
12
+ };
13
+ children: import("../../..").MitosisNode[];
14
+ } | {
15
+ name: string;
16
+ properties: {
17
+ _text: any;
18
+ };
19
+ '@type': "@builder.io/mitosis/node";
20
+ meta: import("../../../types/json").JSONObject;
21
+ scope: {
22
+ forName: string | undefined;
23
+ indexName: string | undefined;
24
+ collectionName: string | undefined;
25
+ };
26
+ bindings: {
27
+ [key: string]: import("../../..").Binding | undefined;
28
+ };
29
+ children: import("../../..").MitosisNode[];
30
+ };
@@ -0,0 +1,21 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.parseText = void 0;
15
+ var mitosis_node_1 = require("../helpers/mitosis-node");
16
+ function parseText(node) {
17
+ return __assign(__assign({}, (0, mitosis_node_1.createMitosisNode)()), { name: 'div', properties: {
18
+ _text: node.data,
19
+ } });
20
+ }
21
+ exports.parseText = parseText;
@@ -0,0 +1,2 @@
1
+ import type { MitosisComponent } from '../../types/mitosis-component';
2
+ export declare const parseSvelte: (string_: string, path?: string) => Promise<MitosisComponent>;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.parseSvelte = void 0;
43
+ var compiler_1 = require("svelte/compiler");
44
+ var svelte_preprocess_1 = __importDefault(require("svelte-preprocess"));
45
+ var lodash_1 = require("lodash");
46
+ var module_1 = require("./module");
47
+ var instance_1 = require("./instance");
48
+ var css_1 = require("./css");
49
+ var html_1 = require("./html");
50
+ var post_process_1 = require("./helpers/post-process");
51
+ var typescript_1 = require("./typescript");
52
+ function mapAstToMitosisJson(ast, name, string_, usesTypescript) {
53
+ if (string_ === void 0) { string_ = ''; }
54
+ if (usesTypescript === void 0) { usesTypescript = false; }
55
+ var json = {
56
+ '@type': '@builder.io/mitosis/component',
57
+ inputs: [],
58
+ state: {},
59
+ props: {},
60
+ refs: {},
61
+ hooks: {},
62
+ imports: [],
63
+ children: [],
64
+ context: { get: {}, set: {} },
65
+ subComponents: [],
66
+ meta: {},
67
+ name: name,
68
+ style: undefined,
69
+ };
70
+ (0, module_1.parseModule)(ast, json);
71
+ (0, instance_1.parseInstance)(ast, json);
72
+ (0, html_1.parseHtml)(ast, json);
73
+ (0, css_1.parseCss)(ast, json);
74
+ (0, post_process_1.postProcess)(json);
75
+ if (usesTypescript) {
76
+ (0, typescript_1.collectTypes)(string_, json);
77
+ }
78
+ return (0, lodash_1.omit)(json, ['props']);
79
+ }
80
+ var parseSvelte = function (string_, path) {
81
+ var _a, _b;
82
+ if (path === void 0) { path = 'MyComponent.svelte'; }
83
+ return __awaiter(this, void 0, void 0, function () {
84
+ var usesTypescript, processedString, ast, componentName;
85
+ return __generator(this, function (_c) {
86
+ switch (_c.label) {
87
+ case 0:
88
+ usesTypescript = (0, typescript_1.isTypeScriptComponent)(string_);
89
+ return [4 /*yield*/, (0, compiler_1.preprocess)(string_, [
90
+ (0, svelte_preprocess_1.default)({
91
+ typescript: usesTypescript ? { tsconfigFile: false } : false,
92
+ }),
93
+ ], {
94
+ filename: path.split('/').pop(),
95
+ })];
96
+ case 1:
97
+ processedString = _c.sent();
98
+ ast = (0, compiler_1.parse)(processedString.code);
99
+ componentName = (_b = (_a = path.split('/').pop()) === null || _a === void 0 ? void 0 : _a.split('.')[0]) !== null && _b !== void 0 ? _b : 'MyComponent';
100
+ return [2 /*return*/, mapAstToMitosisJson(ast, componentName, string_, usesTypescript)];
101
+ }
102
+ });
103
+ });
104
+ };
105
+ exports.parseSvelte = parseSvelte;
@@ -0,0 +1,5 @@
1
+ import type { VariableDeclaration, ExpressionStatement } from 'estree';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare function parseGetContext(json: SveltosisComponent, node: VariableDeclaration): void;
4
+ export declare function parseHasContext(json: SveltosisComponent, node: VariableDeclaration): void;
5
+ export declare function parseSetContext(json: SveltosisComponent, node: ExpressionStatement): void;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSetContext = exports.parseHasContext = exports.parseGetContext = void 0;
4
+ var astring_1 = require("astring");
5
+ var string_1 = require("../helpers/string");
6
+ function parseGetContext(json, node) {
7
+ var _a;
8
+ if (node.declarations.length > 0) {
9
+ var declaration = node.declarations[0];
10
+ var name_1 = declaration.id.name;
11
+ var arguments_ = (_a = declaration.init) === null || _a === void 0 ? void 0 : _a.arguments;
12
+ if (arguments === null || arguments === void 0 ? void 0 : arguments.length) {
13
+ var argument = arguments_[0];
14
+ json.context.get[name_1] = {
15
+ name: (0, astring_1.generate)(argument),
16
+ path: '',
17
+ };
18
+ }
19
+ }
20
+ }
21
+ exports.parseGetContext = parseGetContext;
22
+ function parseHasContext(json, node) {
23
+ var _a;
24
+ if (node.declarations.length > 0) {
25
+ var declaration = node.declarations[0];
26
+ var name_2 = declaration.id.name;
27
+ var arguments_ = (_a = declaration.init) === null || _a === void 0 ? void 0 : _a.arguments;
28
+ if (arguments === null || arguments === void 0 ? void 0 : arguments.length) {
29
+ var argument = arguments_[0];
30
+ var generatedArgument = (0, astring_1.generate)(argument);
31
+ json.context.get[(0, string_1.stripQuotes)(generatedArgument)] = {
32
+ name: generatedArgument,
33
+ path: '',
34
+ };
35
+ json.state[name_2] = {
36
+ code: "get ".concat(name_2, "() { return ").concat((0, string_1.stripQuotes)(generatedArgument), " !== undefined}"),
37
+ type: 'getter',
38
+ };
39
+ }
40
+ }
41
+ }
42
+ exports.parseHasContext = parseHasContext;
43
+ function parseSetContext(json, node) {
44
+ var _a;
45
+ if (node.type === 'ExpressionStatement' &&
46
+ node.expression.type === 'CallExpression' &&
47
+ ((_a = node.expression.arguments) === null || _a === void 0 ? void 0 : _a.length)) {
48
+ var hook = node.expression.callee.name;
49
+ if (hook === 'setContext') {
50
+ var key = node.expression.arguments[0];
51
+ var value = node.expression.arguments[1];
52
+ json.context.set[key.value] = {
53
+ name: (0, astring_1.generate)(key),
54
+ ref: (0, astring_1.generate)(value),
55
+ };
56
+ }
57
+ }
58
+ }
59
+ exports.parseSetContext = parseSetContext;