@vue-jsx-vapor/compiler 0.0.0
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/LICENSE +21 -0
- package/dist/index.cjs +1439 -0
- package/dist/index.d.cts +353 -0
- package/dist/index.d.ts +353 -0
- package/dist/index.js +1439 -0
- package/package.json +67 -0
package/dist/index.cjs
ADDED
@@ -0,0 +1,1439 @@
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/index.ts
|
2
|
+
var _compilervapor = require('@vue/compiler-vapor');
|
3
|
+
|
4
|
+
// src/compile.ts
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
var _compilerdom = require('@vue/compiler-dom');
|
10
|
+
var _shared = require('@vue/shared');
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
var _parser = require('@babel/parser');
|
15
|
+
|
16
|
+
// src/transform.ts
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
// src/transforms/utils.ts
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
var _types = require('@babel/types');
|
37
|
+
|
38
|
+
// src/utils.ts
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
var __BROWSER__ = false;
|
49
|
+
function isConstantExpression(exp) {
|
50
|
+
return _compilerdom.isLiteralWhitelisted.call(void 0, exp.content) || _shared.isGloballyAllowed.call(void 0, exp.content) || getLiteralExpressionValue(exp) !== null;
|
51
|
+
}
|
52
|
+
function getLiteralExpressionValue(exp) {
|
53
|
+
if (!__BROWSER__ && exp.ast) {
|
54
|
+
if (["StringLiteral", "NumericLiteral", "BigIntLiteral"].includes(
|
55
|
+
exp.ast.type
|
56
|
+
)) {
|
57
|
+
return exp.ast.value;
|
58
|
+
} else if (exp.ast.type === "TemplateLiteral" && exp.ast.expressions.length === 0) {
|
59
|
+
return exp.ast.quasis[0].value.cooked;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
return exp.isStatic ? exp.content : null;
|
63
|
+
}
|
64
|
+
function resolveExpression(node, context) {
|
65
|
+
const isStatic = !!node && (node.type === "StringLiteral" || node.type === "JSXText" || node.type === "JSXIdentifier");
|
66
|
+
const source = !node ? "" : node.type === "JSXIdentifier" ? node.name : isStatic ? node.value : node.type === "JSXExpressionContainer" ? node.expression.type === "Identifier" ? node.expression.name : context.ir.source.slice(
|
67
|
+
node.expression.start,
|
68
|
+
node.expression.end
|
69
|
+
) : context.ir.source.slice(node.start, node.end);
|
70
|
+
const location = node ? node.loc : null;
|
71
|
+
let ast = false;
|
72
|
+
if (!isStatic && context.options.prefixIdentifiers) {
|
73
|
+
ast = _parser.parseExpression.call(void 0, ` ${source}`, {
|
74
|
+
sourceType: "module",
|
75
|
+
plugins: context.options.expressionPlugins
|
76
|
+
});
|
77
|
+
}
|
78
|
+
return resolveSimpleExpression(source, isStatic, location, ast);
|
79
|
+
}
|
80
|
+
function resolveSimpleExpression(source, isStatic, location, ast) {
|
81
|
+
const result = _compilerdom.createSimpleExpression.call(void 0,
|
82
|
+
source,
|
83
|
+
isStatic,
|
84
|
+
resolveLocation(location, source)
|
85
|
+
);
|
86
|
+
result.ast = _nullishCoalesce(ast, () => ( null));
|
87
|
+
return result;
|
88
|
+
}
|
89
|
+
function resolveLocation(location, context) {
|
90
|
+
return location ? {
|
91
|
+
start: {
|
92
|
+
line: location.start.line,
|
93
|
+
column: location.start.column + 1,
|
94
|
+
offset: location.start.index
|
95
|
+
},
|
96
|
+
end: {
|
97
|
+
line: location.end.line,
|
98
|
+
column: location.end.column + 1,
|
99
|
+
offset: location.end.index
|
100
|
+
},
|
101
|
+
source: _shared.isString.call(void 0, context) ? context : context.ir.source.slice(location.start.index, location.end.index)
|
102
|
+
} : {
|
103
|
+
start: { line: 1, column: 1, offset: 0 },
|
104
|
+
end: { line: 1, column: 1, offset: 0 },
|
105
|
+
source: ""
|
106
|
+
};
|
107
|
+
}
|
108
|
+
function resolveValue(value, context) {
|
109
|
+
return value ? {
|
110
|
+
type: _compilerdom.NodeTypes.TEXT,
|
111
|
+
content: value.type === "StringLiteral" ? value.value : value.type === "JSXExpressionContainer" ? context.ir.source.slice(
|
112
|
+
value.expression.start,
|
113
|
+
value.expression.end
|
114
|
+
) : "",
|
115
|
+
loc: resolveLocation(value.loc, context)
|
116
|
+
} : void 0;
|
117
|
+
}
|
118
|
+
function resolveNode(node, context) {
|
119
|
+
const tag = node.openingElement.name.type === "JSXIdentifier" ? node.openingElement.name.name : "";
|
120
|
+
const loc = resolveLocation(node.loc, context);
|
121
|
+
const tagType = isJSXComponent(node) ? _compilerdom.ElementTypes.COMPONENT : _compilerdom.ElementTypes.ELEMENT;
|
122
|
+
const props = node.openingElement.attributes.reduce(
|
123
|
+
(result, attr) => {
|
124
|
+
if (attr.type === "JSXAttribute") {
|
125
|
+
if (tagType === _compilerdom.ElementTypes.COMPONENT) {
|
126
|
+
result.push(resolveDirectiveNode(attr, context));
|
127
|
+
} else {
|
128
|
+
result.push({
|
129
|
+
type: _compilerdom.NodeTypes.ATTRIBUTE,
|
130
|
+
name: `${attr.name.name}`,
|
131
|
+
nameLoc: resolveLocation(attr.name.loc, context),
|
132
|
+
value: resolveValue(attr.value, context),
|
133
|
+
loc: resolveLocation(attr.loc, context)
|
134
|
+
});
|
135
|
+
}
|
136
|
+
}
|
137
|
+
return result;
|
138
|
+
},
|
139
|
+
[]
|
140
|
+
);
|
141
|
+
return {
|
142
|
+
type: _compilerdom.NodeTypes.ELEMENT,
|
143
|
+
props,
|
144
|
+
children: node.children,
|
145
|
+
tag,
|
146
|
+
loc,
|
147
|
+
ns: _compilerdom.Namespaces.HTML,
|
148
|
+
tagType,
|
149
|
+
isSelfClosing: !!node.selfClosing,
|
150
|
+
codegenNode: void 0
|
151
|
+
};
|
152
|
+
}
|
153
|
+
function resolveDirectiveNode(node, context) {
|
154
|
+
const { value, name } = node;
|
155
|
+
const nameString = name.type === "JSXIdentifier" ? name.name : "";
|
156
|
+
const argString = name.type === "JSXNamespacedName" ? name.namespace.name : "";
|
157
|
+
const arg = name.type === "JSXNamespacedName" ? resolveSimpleExpression(argString, true, name.namespace.loc) : void 0;
|
158
|
+
const exp = value ? resolveExpression(value, context) : void 0;
|
159
|
+
const [tag, ...modifiers] = argString.split("_");
|
160
|
+
return {
|
161
|
+
type: _compilerdom.NodeTypes.DIRECTIVE,
|
162
|
+
name: nameString,
|
163
|
+
rawName: `${name}:${tag}`,
|
164
|
+
exp,
|
165
|
+
arg,
|
166
|
+
loc: resolveLocation(node.loc, context),
|
167
|
+
modifiers: modifiers.map((modifier) => _compilerdom.createSimpleExpression.call(void 0, modifier))
|
168
|
+
};
|
169
|
+
}
|
170
|
+
var isHtmlTags = _shared.makeMap.call(void 0,
|
171
|
+
"a,abbr,address,area,article,aside,audio,b,base,bdi,bdo,blockquote,body,br,button,canvas,caption,cite,code,col,colgroup,data,datalist,dd,del,details,dfn,dialog,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,i,iframe,img,input,ins,kbd,label,legend,li,link,main,map,mark,math,menu,menuitem,meta,meter,nav,noscript,object,ol,optgroup,option,output,p,param,picture,pre,progress,q,rb,rp,rt,rtc,ruby,s,samp,script,search,section,select,slot,small,source,span,strong,style,sub,summary,sup,svg,table,tbody,td,template,textarea,tfoot,th,thead,time,title,tr,track,u,ul,var,video,wbr"
|
172
|
+
);
|
173
|
+
var isSvgTags = _shared.makeMap.call(void 0,
|
174
|
+
"a,altGlyph,altGlyphDef,altGlyphItem,animate,animateColor,animateMotion,animateTransform,circle,clipPath,color-profile,cursor,defs,desc,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,font,font-face,font-face-format,font-face-name,font-face-src,font-face-uri,foreignObject,g,glyph,glyphRef,hkern,image,line,linearGradient,marker,mask,metadata,missing-glyph,mpath,path,pattern,polygon,polyline,radialGradient,rect,script,set,stop,style,svg,switch,symbol,text,textPath,title,tref,tspan,use,view,vkern"
|
175
|
+
);
|
176
|
+
function isJSXComponent(node) {
|
177
|
+
if (node.type !== "JSXElement") return false;
|
178
|
+
const { openingElement } = node;
|
179
|
+
if (openingElement.name.type === "JSXIdentifier") {
|
180
|
+
const name = openingElement.name.name;
|
181
|
+
return !isHtmlTags(name) && !isSvgTags(name);
|
182
|
+
} else {
|
183
|
+
return openingElement.name.type === "JSXMemberExpression";
|
184
|
+
}
|
185
|
+
}
|
186
|
+
function isMapCallExpression(node) {
|
187
|
+
return !!node && node.type === "CallExpression" && node.callee.type === "MemberExpression" && node.callee.property.type === "Identifier" && node.callee.property.name === "map";
|
188
|
+
}
|
189
|
+
function findProp(expression, key) {
|
190
|
+
if (_optionalChain([expression, 'optionalAccess', _2 => _2.type]) === "JSXElement") {
|
191
|
+
for (const attr of expression.openingElement.attributes) {
|
192
|
+
if (attr.type === "JSXAttribute" && attr.name.name === key) {
|
193
|
+
return attr;
|
194
|
+
}
|
195
|
+
}
|
196
|
+
}
|
197
|
+
}
|
198
|
+
function getReturnExpression(node) {
|
199
|
+
if (node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression") {
|
200
|
+
if (node.body.type !== "BlockStatement") {
|
201
|
+
return node.body;
|
202
|
+
} else {
|
203
|
+
for (const statement of node.body.body) {
|
204
|
+
if (statement.type === "ReturnStatement" && statement.argument)
|
205
|
+
return statement.argument;
|
206
|
+
}
|
207
|
+
}
|
208
|
+
}
|
209
|
+
}
|
210
|
+
function isJSXElement(node) {
|
211
|
+
return !!node && (node.type === "JSXElement" || node.type === "JSXFragment");
|
212
|
+
}
|
213
|
+
|
214
|
+
// src/transforms/utils.ts
|
215
|
+
function newDynamic() {
|
216
|
+
return {
|
217
|
+
flags: _compilervapor.DynamicFlag.REFERENCED,
|
218
|
+
children: []
|
219
|
+
};
|
220
|
+
}
|
221
|
+
function newBlock(node) {
|
222
|
+
return {
|
223
|
+
type: 1,
|
224
|
+
node,
|
225
|
+
dynamic: newDynamic(),
|
226
|
+
effect: [],
|
227
|
+
operation: [],
|
228
|
+
returns: []
|
229
|
+
};
|
230
|
+
}
|
231
|
+
function createBranch(node, context, isVFor) {
|
232
|
+
context.node = node = wrapFragment(node, isVFor);
|
233
|
+
const branch = newBlock(node);
|
234
|
+
const exitBlock = context.enterBlock(branch, isVFor);
|
235
|
+
context.reference();
|
236
|
+
return [branch, exitBlock];
|
237
|
+
}
|
238
|
+
function wrapFragment(node, isVFor) {
|
239
|
+
if (node.type === "JSXFragment") {
|
240
|
+
return node;
|
241
|
+
}
|
242
|
+
if (isVFor && (node.type === "ArrowFunctionExpression" || node.type === "FunctionExpression")) {
|
243
|
+
if (isJSXElement(node.body)) {
|
244
|
+
node = node.body;
|
245
|
+
} else if (node.body.type === "BlockStatement" && node.body.body[0].type === "ReturnStatement" && node.body.body[0].argument) {
|
246
|
+
node = node.body.body[0].argument;
|
247
|
+
} else {
|
248
|
+
node = {
|
249
|
+
..._types.callExpression.call(void 0,
|
250
|
+
_types.parenthesizedExpression.call(void 0, _types.arrowFunctionExpression.call(void 0, [], node.body)),
|
251
|
+
[]
|
252
|
+
),
|
253
|
+
start: node.body.start,
|
254
|
+
end: node.body.end
|
255
|
+
};
|
256
|
+
}
|
257
|
+
}
|
258
|
+
return _types.jsxFragment.call(void 0, _types.jsxOpeningFragment.call(void 0, ), _types.jsxClosingFragment.call(void 0, ), [
|
259
|
+
node.type === "JSXElement" ? node : _types.jsxExpressionContainer.call(void 0, node)
|
260
|
+
]);
|
261
|
+
}
|
262
|
+
var EMPTY_EXPRESSION = _compilerdom.createSimpleExpression.call(void 0, "", true);
|
263
|
+
|
264
|
+
// src/ir/component.ts
|
265
|
+
var IRDynamicPropsKind = /* @__PURE__ */ ((IRDynamicPropsKind2) => {
|
266
|
+
IRDynamicPropsKind2[IRDynamicPropsKind2["EXPRESSION"] = 0] = "EXPRESSION";
|
267
|
+
IRDynamicPropsKind2[IRDynamicPropsKind2["ATTRIBUTE"] = 1] = "ATTRIBUTE";
|
268
|
+
return IRDynamicPropsKind2;
|
269
|
+
})(IRDynamicPropsKind || {});
|
270
|
+
var IRSlotType = /* @__PURE__ */ ((IRSlotType2) => {
|
271
|
+
IRSlotType2[IRSlotType2["STATIC"] = 0] = "STATIC";
|
272
|
+
IRSlotType2[IRSlotType2["DYNAMIC"] = 1] = "DYNAMIC";
|
273
|
+
IRSlotType2[IRSlotType2["LOOP"] = 2] = "LOOP";
|
274
|
+
IRSlotType2[IRSlotType2["CONDITIONAL"] = 3] = "CONDITIONAL";
|
275
|
+
IRSlotType2[IRSlotType2["EXPRESSION"] = 4] = "EXPRESSION";
|
276
|
+
return IRSlotType2;
|
277
|
+
})(IRSlotType || {});
|
278
|
+
|
279
|
+
// src/ir/index.ts
|
280
|
+
var IRNodeTypes = /* @__PURE__ */ ((IRNodeTypes2) => {
|
281
|
+
IRNodeTypes2[IRNodeTypes2["ROOT"] = 0] = "ROOT";
|
282
|
+
IRNodeTypes2[IRNodeTypes2["BLOCK"] = 1] = "BLOCK";
|
283
|
+
IRNodeTypes2[IRNodeTypes2["SET_PROP"] = 2] = "SET_PROP";
|
284
|
+
IRNodeTypes2[IRNodeTypes2["SET_DYNAMIC_PROPS"] = 3] = "SET_DYNAMIC_PROPS";
|
285
|
+
IRNodeTypes2[IRNodeTypes2["SET_TEXT"] = 4] = "SET_TEXT";
|
286
|
+
IRNodeTypes2[IRNodeTypes2["SET_EVENT"] = 5] = "SET_EVENT";
|
287
|
+
IRNodeTypes2[IRNodeTypes2["SET_DYNAMIC_EVENTS"] = 6] = "SET_DYNAMIC_EVENTS";
|
288
|
+
IRNodeTypes2[IRNodeTypes2["SET_HTML"] = 7] = "SET_HTML";
|
289
|
+
IRNodeTypes2[IRNodeTypes2["SET_TEMPLATE_REF"] = 8] = "SET_TEMPLATE_REF";
|
290
|
+
IRNodeTypes2[IRNodeTypes2["SET_MODEL_VALUE"] = 9] = "SET_MODEL_VALUE";
|
291
|
+
IRNodeTypes2[IRNodeTypes2["INSERT_NODE"] = 10] = "INSERT_NODE";
|
292
|
+
IRNodeTypes2[IRNodeTypes2["PREPEND_NODE"] = 11] = "PREPEND_NODE";
|
293
|
+
IRNodeTypes2[IRNodeTypes2["CREATE_TEXT_NODE"] = 12] = "CREATE_TEXT_NODE";
|
294
|
+
IRNodeTypes2[IRNodeTypes2["CREATE_COMPONENT_NODE"] = 13] = "CREATE_COMPONENT_NODE";
|
295
|
+
IRNodeTypes2[IRNodeTypes2["SLOT_OUTLET_NODE"] = 14] = "SLOT_OUTLET_NODE";
|
296
|
+
IRNodeTypes2[IRNodeTypes2["WITH_DIRECTIVE"] = 15] = "WITH_DIRECTIVE";
|
297
|
+
IRNodeTypes2[IRNodeTypes2["DECLARE_OLD_REF"] = 16] = "DECLARE_OLD_REF";
|
298
|
+
IRNodeTypes2[IRNodeTypes2["IF"] = 17] = "IF";
|
299
|
+
IRNodeTypes2[IRNodeTypes2["FOR"] = 18] = "FOR";
|
300
|
+
return IRNodeTypes2;
|
301
|
+
})(IRNodeTypes || {});
|
302
|
+
var DynamicFlag2 = /* @__PURE__ */ ((DynamicFlag3) => {
|
303
|
+
DynamicFlag3[DynamicFlag3["NONE"] = 0] = "NONE";
|
304
|
+
DynamicFlag3[DynamicFlag3["REFERENCED"] = 1] = "REFERENCED";
|
305
|
+
DynamicFlag3[DynamicFlag3["NON_TEMPLATE"] = 2] = "NON_TEMPLATE";
|
306
|
+
DynamicFlag3[DynamicFlag3["INSERT"] = 4] = "INSERT";
|
307
|
+
return DynamicFlag3;
|
308
|
+
})(DynamicFlag2 || {});
|
309
|
+
|
310
|
+
// src/transform.ts
|
311
|
+
var defaultOptions = {
|
312
|
+
filename: "",
|
313
|
+
prefixIdentifiers: false,
|
314
|
+
hoistStatic: false,
|
315
|
+
hmr: false,
|
316
|
+
cacheHandlers: false,
|
317
|
+
nodeTransforms: [],
|
318
|
+
directiveTransforms: {},
|
319
|
+
transformHoist: null,
|
320
|
+
isBuiltInComponent: _shared.NOOP,
|
321
|
+
isCustomElement: _shared.NOOP,
|
322
|
+
expressionPlugins: [],
|
323
|
+
scopeId: null,
|
324
|
+
slotted: true,
|
325
|
+
ssr: false,
|
326
|
+
inSSR: false,
|
327
|
+
ssrCssVars: ``,
|
328
|
+
bindingMetadata: _shared.EMPTY_OBJ,
|
329
|
+
inline: false,
|
330
|
+
isTS: false,
|
331
|
+
onError: _compilerdom.defaultOnError,
|
332
|
+
onWarn: _compilerdom.defaultOnWarn
|
333
|
+
};
|
334
|
+
var TransformContext = class _TransformContext {
|
335
|
+
constructor(ir, node, options = {}) {
|
336
|
+
this.ir = ir;
|
337
|
+
this.node = node;
|
338
|
+
this.parent = null;
|
339
|
+
this.index = 0;
|
340
|
+
this.block = this.ir.block;
|
341
|
+
this.template = "";
|
342
|
+
this.childrenTemplate = [];
|
343
|
+
this.dynamic = this.ir.block.dynamic;
|
344
|
+
this.inVOnce = false;
|
345
|
+
this.inVFor = 0;
|
346
|
+
this.comment = [];
|
347
|
+
this.component = this.ir.component;
|
348
|
+
this.directive = this.ir.directive;
|
349
|
+
this.slots = [];
|
350
|
+
this.globalId = 0;
|
351
|
+
this.increaseId = () => this.globalId++;
|
352
|
+
this.options = _shared.extend.call(void 0, {}, defaultOptions, options);
|
353
|
+
this.root = this;
|
354
|
+
}
|
355
|
+
enterBlock(ir, isVFor = false) {
|
356
|
+
const { block, template, dynamic, childrenTemplate, slots } = this;
|
357
|
+
this.block = ir;
|
358
|
+
this.dynamic = ir.dynamic;
|
359
|
+
this.template = "";
|
360
|
+
this.childrenTemplate = [];
|
361
|
+
this.slots = [];
|
362
|
+
isVFor && this.inVFor++;
|
363
|
+
return () => {
|
364
|
+
this.registerTemplate();
|
365
|
+
this.block = block;
|
366
|
+
this.template = template;
|
367
|
+
this.dynamic = dynamic;
|
368
|
+
this.childrenTemplate = childrenTemplate;
|
369
|
+
this.slots = slots;
|
370
|
+
isVFor && this.inVFor--;
|
371
|
+
};
|
372
|
+
}
|
373
|
+
reference() {
|
374
|
+
if (this.dynamic.id !== void 0) return this.dynamic.id;
|
375
|
+
this.dynamic.flags |= 1 /* REFERENCED */;
|
376
|
+
return this.dynamic.id = this.increaseId();
|
377
|
+
}
|
378
|
+
pushTemplate(content) {
|
379
|
+
const existing = this.ir.template.indexOf(content);
|
380
|
+
if (existing !== -1) return existing;
|
381
|
+
this.ir.template.push(content);
|
382
|
+
return this.ir.template.length - 1;
|
383
|
+
}
|
384
|
+
registerTemplate() {
|
385
|
+
if (!this.template) return -1;
|
386
|
+
const id = this.pushTemplate(this.template);
|
387
|
+
return this.dynamic.template = id;
|
388
|
+
}
|
389
|
+
registerEffect(expressions, ...operations) {
|
390
|
+
expressions = expressions.filter((exp) => !isConstantExpression(exp));
|
391
|
+
if (this.inVOnce || expressions.length === 0) {
|
392
|
+
return this.registerOperation(...operations);
|
393
|
+
}
|
394
|
+
const existing = this.block.effect.find(
|
395
|
+
(e) => isSameExpression(e.expressions, expressions)
|
396
|
+
);
|
397
|
+
if (existing) {
|
398
|
+
existing.operations.push(...operations);
|
399
|
+
} else {
|
400
|
+
this.block.effect.push({
|
401
|
+
expressions,
|
402
|
+
operations
|
403
|
+
});
|
404
|
+
}
|
405
|
+
function isSameExpression(a, b) {
|
406
|
+
if (a.length !== b.length) return false;
|
407
|
+
return a.every((exp, i) => exp.content === b[i].content);
|
408
|
+
}
|
409
|
+
}
|
410
|
+
registerOperation(...node) {
|
411
|
+
this.block.operation.push(...node);
|
412
|
+
}
|
413
|
+
create(node, index) {
|
414
|
+
return Object.assign(Object.create(_TransformContext.prototype), this, {
|
415
|
+
node,
|
416
|
+
parent: this,
|
417
|
+
index,
|
418
|
+
template: "",
|
419
|
+
childrenTemplate: [],
|
420
|
+
dynamic: newDynamic()
|
421
|
+
});
|
422
|
+
}
|
423
|
+
};
|
424
|
+
function transform(node, options = {}) {
|
425
|
+
const ir = {
|
426
|
+
type: 0 /* ROOT */,
|
427
|
+
node,
|
428
|
+
source: node.source,
|
429
|
+
template: [],
|
430
|
+
component: /* @__PURE__ */ new Set(),
|
431
|
+
directive: /* @__PURE__ */ new Set(),
|
432
|
+
block: newBlock(node)
|
433
|
+
};
|
434
|
+
const context = new TransformContext(ir, node, options);
|
435
|
+
transformNode(context);
|
436
|
+
return ir;
|
437
|
+
}
|
438
|
+
function transformNode(context) {
|
439
|
+
let { node } = context;
|
440
|
+
const { nodeTransforms } = context.options;
|
441
|
+
const exitFns = [];
|
442
|
+
for (const nodeTransform of nodeTransforms) {
|
443
|
+
const onExit = nodeTransform(node, context);
|
444
|
+
if (onExit) {
|
445
|
+
if (_shared.isArray.call(void 0, onExit)) {
|
446
|
+
exitFns.push(...onExit);
|
447
|
+
} else {
|
448
|
+
exitFns.push(onExit);
|
449
|
+
}
|
450
|
+
}
|
451
|
+
if (!context.node) {
|
452
|
+
return;
|
453
|
+
} else {
|
454
|
+
node = context.node;
|
455
|
+
}
|
456
|
+
}
|
457
|
+
context.node = node;
|
458
|
+
let i = exitFns.length;
|
459
|
+
while (i--) {
|
460
|
+
exitFns[i]();
|
461
|
+
}
|
462
|
+
if (context.node.type === 0 /* ROOT */) {
|
463
|
+
context.registerTemplate();
|
464
|
+
}
|
465
|
+
}
|
466
|
+
|
467
|
+
// src/transforms/transformElement.ts
|
468
|
+
|
469
|
+
|
470
|
+
|
471
|
+
|
472
|
+
|
473
|
+
|
474
|
+
|
475
|
+
|
476
|
+
|
477
|
+
// src/html-nesting.ts
|
478
|
+
function isValidHTMLNesting(parent, child) {
|
479
|
+
if (parent in onlyValidChildren) {
|
480
|
+
return onlyValidChildren[parent].has(child);
|
481
|
+
}
|
482
|
+
if (child in onlyValidParents) {
|
483
|
+
return onlyValidParents[child].has(parent);
|
484
|
+
}
|
485
|
+
if (parent in knownInvalidChildren && // check if the child is in the list of invalid children
|
486
|
+
// if so, return false
|
487
|
+
knownInvalidChildren[parent].has(child))
|
488
|
+
return false;
|
489
|
+
if (child in knownInvalidParents && // check if the parent is in the list of invalid parents
|
490
|
+
// if so, return false
|
491
|
+
knownInvalidParents[child].has(parent))
|
492
|
+
return false;
|
493
|
+
return true;
|
494
|
+
}
|
495
|
+
var headings = /* @__PURE__ */ new Set(["h1", "h2", "h3", "h4", "h5", "h6"]);
|
496
|
+
var emptySet = /* @__PURE__ */ new Set([]);
|
497
|
+
var onlyValidChildren = {
|
498
|
+
head: /* @__PURE__ */ new Set([
|
499
|
+
"base",
|
500
|
+
"basefront",
|
501
|
+
"bgsound",
|
502
|
+
"link",
|
503
|
+
"meta",
|
504
|
+
"title",
|
505
|
+
"noscript",
|
506
|
+
"noframes",
|
507
|
+
"style",
|
508
|
+
"script",
|
509
|
+
"template"
|
510
|
+
]),
|
511
|
+
optgroup: /* @__PURE__ */ new Set(["option"]),
|
512
|
+
select: /* @__PURE__ */ new Set(["optgroup", "option"]),
|
513
|
+
math: /* @__PURE__ */ new Set(["mrow"]),
|
514
|
+
script: /* @__PURE__ */ new Set(),
|
515
|
+
// table
|
516
|
+
table: /* @__PURE__ */ new Set(["caption", "colgroup", "tbody", "tfoot", "thead"]),
|
517
|
+
tr: /* @__PURE__ */ new Set(["td", "th"]),
|
518
|
+
colgroup: /* @__PURE__ */ new Set(["col"]),
|
519
|
+
tbody: /* @__PURE__ */ new Set(["tr"]),
|
520
|
+
thead: /* @__PURE__ */ new Set(["tr"]),
|
521
|
+
tfoot: /* @__PURE__ */ new Set(["tr"]),
|
522
|
+
// these elements can not have any children elements
|
523
|
+
iframe: emptySet,
|
524
|
+
option: emptySet,
|
525
|
+
textarea: emptySet,
|
526
|
+
style: emptySet,
|
527
|
+
title: emptySet
|
528
|
+
};
|
529
|
+
var onlyValidParents = {
|
530
|
+
// sections
|
531
|
+
html: emptySet,
|
532
|
+
body: /* @__PURE__ */ new Set(["html"]),
|
533
|
+
head: /* @__PURE__ */ new Set(["html"]),
|
534
|
+
// table
|
535
|
+
td: /* @__PURE__ */ new Set(["tr"]),
|
536
|
+
colgroup: /* @__PURE__ */ new Set(["table"]),
|
537
|
+
caption: /* @__PURE__ */ new Set(["table"]),
|
538
|
+
tbody: /* @__PURE__ */ new Set(["table"]),
|
539
|
+
tfoot: /* @__PURE__ */ new Set(["table"]),
|
540
|
+
col: /* @__PURE__ */ new Set(["colgroup"]),
|
541
|
+
th: /* @__PURE__ */ new Set(["tr"]),
|
542
|
+
thead: /* @__PURE__ */ new Set(["table"]),
|
543
|
+
tr: /* @__PURE__ */ new Set(["tbody", "thead", "tfoot"]),
|
544
|
+
// data list
|
545
|
+
dd: /* @__PURE__ */ new Set(["dl", "div"]),
|
546
|
+
dt: /* @__PURE__ */ new Set(["dl", "div"]),
|
547
|
+
// other
|
548
|
+
figcaption: /* @__PURE__ */ new Set(["figure"]),
|
549
|
+
// li: new Set(["ul", "ol"]),
|
550
|
+
summary: /* @__PURE__ */ new Set(["details"]),
|
551
|
+
area: /* @__PURE__ */ new Set(["map"])
|
552
|
+
};
|
553
|
+
var knownInvalidChildren = {
|
554
|
+
p: /* @__PURE__ */ new Set([
|
555
|
+
"address",
|
556
|
+
"article",
|
557
|
+
"aside",
|
558
|
+
"blockquote",
|
559
|
+
"center",
|
560
|
+
"details",
|
561
|
+
"dialog",
|
562
|
+
"dir",
|
563
|
+
"div",
|
564
|
+
"dl",
|
565
|
+
"fieldset",
|
566
|
+
"figure",
|
567
|
+
"footer",
|
568
|
+
"form",
|
569
|
+
"h1",
|
570
|
+
"h2",
|
571
|
+
"h3",
|
572
|
+
"h4",
|
573
|
+
"h5",
|
574
|
+
"h6",
|
575
|
+
"header",
|
576
|
+
"hgroup",
|
577
|
+
"hr",
|
578
|
+
"li",
|
579
|
+
"main",
|
580
|
+
"nav",
|
581
|
+
"menu",
|
582
|
+
"ol",
|
583
|
+
"p",
|
584
|
+
"pre",
|
585
|
+
"section",
|
586
|
+
"table",
|
587
|
+
"ul"
|
588
|
+
]),
|
589
|
+
svg: /* @__PURE__ */ new Set([
|
590
|
+
"b",
|
591
|
+
"blockquote",
|
592
|
+
"br",
|
593
|
+
"code",
|
594
|
+
"dd",
|
595
|
+
"div",
|
596
|
+
"dl",
|
597
|
+
"dt",
|
598
|
+
"em",
|
599
|
+
"embed",
|
600
|
+
"h1",
|
601
|
+
"h2",
|
602
|
+
"h3",
|
603
|
+
"h4",
|
604
|
+
"h5",
|
605
|
+
"h6",
|
606
|
+
"hr",
|
607
|
+
"i",
|
608
|
+
"img",
|
609
|
+
"li",
|
610
|
+
"menu",
|
611
|
+
"meta",
|
612
|
+
"ol",
|
613
|
+
"p",
|
614
|
+
"pre",
|
615
|
+
"ruby",
|
616
|
+
"s",
|
617
|
+
"small",
|
618
|
+
"span",
|
619
|
+
"strong",
|
620
|
+
"sub",
|
621
|
+
"sup",
|
622
|
+
"table",
|
623
|
+
"u",
|
624
|
+
"ul",
|
625
|
+
"var"
|
626
|
+
])
|
627
|
+
};
|
628
|
+
var knownInvalidParents = {
|
629
|
+
a: /* @__PURE__ */ new Set(["a"]),
|
630
|
+
button: /* @__PURE__ */ new Set(["button"]),
|
631
|
+
dd: /* @__PURE__ */ new Set(["dd", "dt"]),
|
632
|
+
dt: /* @__PURE__ */ new Set(["dd", "dt"]),
|
633
|
+
form: /* @__PURE__ */ new Set(["form"]),
|
634
|
+
li: /* @__PURE__ */ new Set(["li"]),
|
635
|
+
h1: headings,
|
636
|
+
h2: headings,
|
637
|
+
h3: headings,
|
638
|
+
h4: headings,
|
639
|
+
h5: headings,
|
640
|
+
h6: headings
|
641
|
+
};
|
642
|
+
|
643
|
+
// src/transforms/transformElement.ts
|
644
|
+
var isReservedProp = /* @__PURE__ */ _shared.makeMap.call(void 0,
|
645
|
+
// the leading comma is intentional so empty string "" is also included
|
646
|
+
",key,ref,ref_for,ref_key,"
|
647
|
+
);
|
648
|
+
var __BROWSER__2 = false;
|
649
|
+
var isEventRegex = /^on[A-Z]/;
|
650
|
+
var isDirectiveRegex = /^v-[a-z]/;
|
651
|
+
var transformElement = (node, context) => {
|
652
|
+
return function postTransformElement() {
|
653
|
+
;
|
654
|
+
({ node } = context);
|
655
|
+
if (node.type !== "JSXElement") return;
|
656
|
+
const {
|
657
|
+
openingElement: { name }
|
658
|
+
} = node;
|
659
|
+
const tag = name.type === "JSXIdentifier" ? name.name : name.type === "JSXMemberExpression" ? context.ir.source.slice(name.start, name.end) : "";
|
660
|
+
const isComponent = isJSXComponent(node);
|
661
|
+
const propsResult = buildProps(
|
662
|
+
node,
|
663
|
+
context,
|
664
|
+
isComponent
|
665
|
+
);
|
666
|
+
(isComponent ? transformComponentElement : transformNativeElement)(
|
667
|
+
tag,
|
668
|
+
propsResult,
|
669
|
+
context
|
670
|
+
);
|
671
|
+
};
|
672
|
+
};
|
673
|
+
function transformComponentElement(tag, propsResult, context) {
|
674
|
+
let asset = true;
|
675
|
+
if (!__BROWSER__2) {
|
676
|
+
const fromSetup = resolveSetupReference(tag, context);
|
677
|
+
if (fromSetup) {
|
678
|
+
tag = fromSetup;
|
679
|
+
asset = false;
|
680
|
+
}
|
681
|
+
const dotIndex = tag.indexOf(".");
|
682
|
+
if (dotIndex > 0) {
|
683
|
+
const ns = resolveSetupReference(tag.slice(0, dotIndex), context);
|
684
|
+
if (ns) {
|
685
|
+
tag = ns + tag.slice(dotIndex);
|
686
|
+
asset = false;
|
687
|
+
}
|
688
|
+
}
|
689
|
+
}
|
690
|
+
if (asset) {
|
691
|
+
context.component.add(tag);
|
692
|
+
}
|
693
|
+
context.dynamic.flags |= 2 /* NON_TEMPLATE */ | 4 /* INSERT */;
|
694
|
+
const root = context.root === context.parent && context.parent.node.children.length === 1;
|
695
|
+
context.registerOperation({
|
696
|
+
type: 13 /* CREATE_COMPONENT_NODE */,
|
697
|
+
id: context.reference(),
|
698
|
+
tag,
|
699
|
+
props: propsResult[0] ? propsResult[1] : [propsResult[1]],
|
700
|
+
asset,
|
701
|
+
root,
|
702
|
+
slots: context.slots,
|
703
|
+
once: context.inVOnce
|
704
|
+
});
|
705
|
+
context.slots = [];
|
706
|
+
}
|
707
|
+
function resolveSetupReference(name, context) {
|
708
|
+
const bindings = context.options.bindingMetadata;
|
709
|
+
if (!context.options.prefixIdentifiers) return name;
|
710
|
+
if (!bindings || bindings.__isScriptSetup === false) {
|
711
|
+
return;
|
712
|
+
}
|
713
|
+
const camelName = _shared.camelize.call(void 0, name);
|
714
|
+
const PascalName = _shared.capitalize.call(void 0, camelName);
|
715
|
+
return bindings[name] ? name : bindings[camelName] ? camelName : bindings[PascalName] ? PascalName : void 0;
|
716
|
+
}
|
717
|
+
function transformNativeElement(tag, propsResult, context) {
|
718
|
+
const { scopeId } = context.options;
|
719
|
+
let template = "";
|
720
|
+
template += `<${tag}`;
|
721
|
+
if (scopeId) template += ` ${scopeId}`;
|
722
|
+
if (propsResult[0]) {
|
723
|
+
const [, dynamicArgs, expressions] = propsResult;
|
724
|
+
context.registerEffect(expressions, {
|
725
|
+
type: 3 /* SET_DYNAMIC_PROPS */,
|
726
|
+
element: context.reference(),
|
727
|
+
props: dynamicArgs
|
728
|
+
});
|
729
|
+
} else {
|
730
|
+
for (const prop of propsResult[1]) {
|
731
|
+
const { key, values } = prop;
|
732
|
+
if (key.isStatic && values.length === 1 && values[0].isStatic) {
|
733
|
+
template += ` ${key.content}`;
|
734
|
+
if (values[0].content) template += `="${values[0].content}"`;
|
735
|
+
} else {
|
736
|
+
context.registerEffect(values, {
|
737
|
+
type: 2 /* SET_PROP */,
|
738
|
+
element: context.reference(),
|
739
|
+
prop
|
740
|
+
});
|
741
|
+
}
|
742
|
+
}
|
743
|
+
}
|
744
|
+
template += `>${context.childrenTemplate.join("")}`;
|
745
|
+
if (!_shared.isVoidTag.call(void 0, tag)) {
|
746
|
+
template += `</${tag}>`;
|
747
|
+
}
|
748
|
+
if (context.parent && context.parent.node.type === "JSXElement" && context.parent.node.openingElement.name.type === "JSXIdentifier" && !isValidHTMLNesting(context.parent.node.openingElement.name.name, tag)) {
|
749
|
+
context.reference();
|
750
|
+
context.dynamic.template = context.pushTemplate(template);
|
751
|
+
context.dynamic.flags |= 4 /* INSERT */ | 2 /* NON_TEMPLATE */;
|
752
|
+
} else {
|
753
|
+
context.template += template;
|
754
|
+
}
|
755
|
+
}
|
756
|
+
function buildProps(node, context, isComponent) {
|
757
|
+
const props = node.openingElement.attributes;
|
758
|
+
if (props.length === 0) return [false, []];
|
759
|
+
const dynamicArgs = [];
|
760
|
+
const dynamicExpr = [];
|
761
|
+
let results = [];
|
762
|
+
function pushMergeArg() {
|
763
|
+
if (results.length) {
|
764
|
+
dynamicArgs.push(dedupeProperties(results));
|
765
|
+
results = [];
|
766
|
+
}
|
767
|
+
}
|
768
|
+
for (const prop of props) {
|
769
|
+
if (prop.type === "JSXSpreadAttribute" && prop.argument) {
|
770
|
+
const value = resolveExpression(prop.argument, context);
|
771
|
+
dynamicExpr.push(value);
|
772
|
+
pushMergeArg();
|
773
|
+
dynamicArgs.push({
|
774
|
+
kind: 0 /* EXPRESSION */,
|
775
|
+
value
|
776
|
+
});
|
777
|
+
continue;
|
778
|
+
}
|
779
|
+
const result = transformProp(prop, node, context);
|
780
|
+
if (result) {
|
781
|
+
dynamicExpr.push(result.key, result.value);
|
782
|
+
if (isComponent && !result.key.isStatic) {
|
783
|
+
pushMergeArg();
|
784
|
+
dynamicArgs.push(
|
785
|
+
_shared.extend.call(void 0, resolveDirectiveResult(result), {
|
786
|
+
kind: 1 /* ATTRIBUTE */
|
787
|
+
})
|
788
|
+
);
|
789
|
+
} else {
|
790
|
+
results.push(result);
|
791
|
+
}
|
792
|
+
}
|
793
|
+
}
|
794
|
+
if (dynamicArgs.length || results.some(({ key }) => !key.isStatic)) {
|
795
|
+
pushMergeArg();
|
796
|
+
return [true, dynamicArgs, dynamicExpr];
|
797
|
+
}
|
798
|
+
const irProps = dedupeProperties(results);
|
799
|
+
return [false, irProps];
|
800
|
+
}
|
801
|
+
function transformProp(prop, node, context) {
|
802
|
+
if (prop.type === "JSXSpreadAttribute") return;
|
803
|
+
let name = prop.name.type === "JSXIdentifier" ? prop.name.name : prop.name.type === "JSXNamespacedName" ? prop.name.namespace.name : "";
|
804
|
+
if (!isDirectiveRegex.test(name) && (!prop.value || prop.value.type === "StringLiteral")) {
|
805
|
+
if (isReservedProp(name)) return;
|
806
|
+
return {
|
807
|
+
key: resolveSimpleExpression(name, true, prop.name.loc),
|
808
|
+
value: prop.value && prop.value.type === "StringLiteral" ? resolveSimpleExpression(prop.value.value, true, prop.value.loc) : EMPTY_EXPRESSION
|
809
|
+
};
|
810
|
+
}
|
811
|
+
name = isEventRegex.test(name) ? "on" : isDirectiveRegex.test(name) ? name.slice(2) : "bind";
|
812
|
+
const directiveTransform = context.options.directiveTransforms[name];
|
813
|
+
if (directiveTransform) {
|
814
|
+
return directiveTransform(prop, node, context);
|
815
|
+
}
|
816
|
+
if (!_shared.isBuiltInDirective.call(void 0, name)) {
|
817
|
+
const fromSetup = !__BROWSER__2 && resolveSetupReference(`v-${name}`, context);
|
818
|
+
if (fromSetup) {
|
819
|
+
name = fromSetup;
|
820
|
+
} else {
|
821
|
+
context.directive.add(name);
|
822
|
+
}
|
823
|
+
}
|
824
|
+
}
|
825
|
+
function dedupeProperties(results) {
|
826
|
+
const knownProps = /* @__PURE__ */ new Map();
|
827
|
+
const deduped = [];
|
828
|
+
for (const result of results) {
|
829
|
+
const prop = resolveDirectiveResult(result);
|
830
|
+
if (!prop.key.isStatic) {
|
831
|
+
deduped.push(prop);
|
832
|
+
continue;
|
833
|
+
}
|
834
|
+
const name = prop.key.content;
|
835
|
+
const existing = knownProps.get(name);
|
836
|
+
if (existing) {
|
837
|
+
if (name === "style" || name === "class") {
|
838
|
+
mergePropValues(existing, prop);
|
839
|
+
}
|
840
|
+
} else {
|
841
|
+
knownProps.set(name, prop);
|
842
|
+
deduped.push(prop);
|
843
|
+
}
|
844
|
+
}
|
845
|
+
return deduped;
|
846
|
+
}
|
847
|
+
function resolveDirectiveResult(prop) {
|
848
|
+
return _shared.extend.call(void 0, {}, prop, {
|
849
|
+
value: void 0,
|
850
|
+
values: [prop.value]
|
851
|
+
});
|
852
|
+
}
|
853
|
+
function mergePropValues(existing, incoming) {
|
854
|
+
const newValues = incoming.values;
|
855
|
+
existing.values.push(...newValues);
|
856
|
+
}
|
857
|
+
|
858
|
+
// src/transforms/transformChildren.ts
|
859
|
+
var transformChildren = (node, context) => {
|
860
|
+
const isFragment = node.type === 0 /* ROOT */ || node.type === "JSXFragment" || isJSXComponent(node);
|
861
|
+
if (node.type !== "JSXElement" && !isFragment) return;
|
862
|
+
Array.from(node.children).forEach((child, index) => {
|
863
|
+
if (child.type === "JSXText" && !child.value.trim()) {
|
864
|
+
child.value = " ";
|
865
|
+
if (!index) {
|
866
|
+
node.children.splice(0, 1);
|
867
|
+
} else if (index === node.children.length) {
|
868
|
+
node.children.splice(-1, 1);
|
869
|
+
}
|
870
|
+
}
|
871
|
+
});
|
872
|
+
for (const [i, child] of node.children.entries()) {
|
873
|
+
const childContext = context.create(child, i);
|
874
|
+
transformNode(childContext);
|
875
|
+
if (isFragment) {
|
876
|
+
childContext.reference();
|
877
|
+
childContext.registerTemplate();
|
878
|
+
if (!(childContext.dynamic.flags & 2 /* NON_TEMPLATE */) || childContext.dynamic.flags & 4 /* INSERT */) {
|
879
|
+
context.block.returns.push(childContext.dynamic.id);
|
880
|
+
}
|
881
|
+
} else {
|
882
|
+
context.childrenTemplate.push(childContext.template);
|
883
|
+
}
|
884
|
+
context.dynamic.children[i] = childContext.dynamic;
|
885
|
+
}
|
886
|
+
if (!isFragment) {
|
887
|
+
processDynamicChildren(context);
|
888
|
+
}
|
889
|
+
};
|
890
|
+
function processDynamicChildren(context) {
|
891
|
+
let prevDynamics = [];
|
892
|
+
let hasStaticTemplate = false;
|
893
|
+
const children = context.dynamic.children;
|
894
|
+
for (const [index, child] of children.entries()) {
|
895
|
+
if (child.flags & 4 /* INSERT */) {
|
896
|
+
prevDynamics.push(child);
|
897
|
+
}
|
898
|
+
if (!(child.flags & 2 /* NON_TEMPLATE */)) {
|
899
|
+
if (prevDynamics.length) {
|
900
|
+
if (hasStaticTemplate) {
|
901
|
+
context.childrenTemplate[index - prevDynamics.length] = `<!>`;
|
902
|
+
prevDynamics[0].flags -= 2 /* NON_TEMPLATE */;
|
903
|
+
const anchor = prevDynamics[0].anchor = context.increaseId();
|
904
|
+
context.registerOperation({
|
905
|
+
type: 10 /* INSERT_NODE */,
|
906
|
+
elements: prevDynamics.map((child2) => child2.id),
|
907
|
+
parent: context.reference(),
|
908
|
+
anchor
|
909
|
+
});
|
910
|
+
} else {
|
911
|
+
context.registerOperation({
|
912
|
+
type: 11 /* PREPEND_NODE */,
|
913
|
+
elements: prevDynamics.map((child2) => child2.id),
|
914
|
+
parent: context.reference()
|
915
|
+
});
|
916
|
+
}
|
917
|
+
prevDynamics = [];
|
918
|
+
}
|
919
|
+
hasStaticTemplate = true;
|
920
|
+
}
|
921
|
+
}
|
922
|
+
if (prevDynamics.length) {
|
923
|
+
context.registerOperation({
|
924
|
+
type: 10 /* INSERT_NODE */,
|
925
|
+
elements: prevDynamics.map((child) => child.id),
|
926
|
+
parent: context.reference()
|
927
|
+
});
|
928
|
+
}
|
929
|
+
}
|
930
|
+
|
931
|
+
// src/transforms/transformTemplateRef.ts
|
932
|
+
var transformTemplateRef = (node, context) => {
|
933
|
+
if (node.type !== "JSXElement") return;
|
934
|
+
const dir = findProp(node, "ref");
|
935
|
+
if (!_optionalChain([dir, 'optionalAccess', _3 => _3.value])) return;
|
936
|
+
const value = resolveExpression(dir.value, context);
|
937
|
+
return () => {
|
938
|
+
const id = context.reference();
|
939
|
+
const effect = !isConstantExpression(value);
|
940
|
+
effect && context.registerOperation({
|
941
|
+
type: 16 /* DECLARE_OLD_REF */,
|
942
|
+
id
|
943
|
+
});
|
944
|
+
context.registerEffect([value], {
|
945
|
+
type: 8 /* SET_TEMPLATE_REF */,
|
946
|
+
element: id,
|
947
|
+
value,
|
948
|
+
refFor: !!context.inVFor,
|
949
|
+
effect
|
950
|
+
});
|
951
|
+
};
|
952
|
+
};
|
953
|
+
|
954
|
+
// src/transforms/vIf.ts
|
955
|
+
function processConditionalExpression(node, context) {
|
956
|
+
const { test, consequent, alternate } = node;
|
957
|
+
context.dynamic.flags |= 2 /* NON_TEMPLATE */ | 4 /* INSERT */;
|
958
|
+
const id = context.reference();
|
959
|
+
const condition = resolveExpression(test, context);
|
960
|
+
const [branch, onExit] = createBranch(consequent, context);
|
961
|
+
const operation = {
|
962
|
+
type: 17 /* IF */,
|
963
|
+
id,
|
964
|
+
condition,
|
965
|
+
positive: branch,
|
966
|
+
once: context.inVOnce
|
967
|
+
};
|
968
|
+
return [
|
969
|
+
() => {
|
970
|
+
onExit();
|
971
|
+
context.registerOperation(operation);
|
972
|
+
},
|
973
|
+
() => {
|
974
|
+
const [branch2, onExit2] = createBranch(alternate, context);
|
975
|
+
operation.negative = branch2;
|
976
|
+
transformNode(context);
|
977
|
+
onExit2();
|
978
|
+
}
|
979
|
+
];
|
980
|
+
}
|
981
|
+
function processLogicalExpression(node, context) {
|
982
|
+
const { left, right, operator } = node;
|
983
|
+
context.dynamic.flags |= 2 /* NON_TEMPLATE */;
|
984
|
+
context.dynamic.flags |= 4 /* INSERT */;
|
985
|
+
const id = context.reference();
|
986
|
+
const condition = resolveExpression(left, context);
|
987
|
+
const [branch, onExit] = createBranch(
|
988
|
+
operator === "&&" ? right : left,
|
989
|
+
context
|
990
|
+
);
|
991
|
+
const operation = {
|
992
|
+
type: 17 /* IF */,
|
993
|
+
id,
|
994
|
+
condition,
|
995
|
+
positive: branch,
|
996
|
+
once: context.inVOnce
|
997
|
+
};
|
998
|
+
return [
|
999
|
+
() => {
|
1000
|
+
onExit();
|
1001
|
+
context.registerOperation(operation);
|
1002
|
+
},
|
1003
|
+
() => {
|
1004
|
+
const [branch2, onExit2] = createBranch(
|
1005
|
+
operator === "&&" ? left : right,
|
1006
|
+
context
|
1007
|
+
);
|
1008
|
+
operation.negative = branch2;
|
1009
|
+
transformNode(context);
|
1010
|
+
onExit2();
|
1011
|
+
}
|
1012
|
+
];
|
1013
|
+
}
|
1014
|
+
|
1015
|
+
// src/transforms/vFor.ts
|
1016
|
+
function processMapCallExpression(node, context) {
|
1017
|
+
const {
|
1018
|
+
callee,
|
1019
|
+
arguments: [argument]
|
1020
|
+
} = node;
|
1021
|
+
if (!(argument.type === "FunctionExpression" || argument.type === "ArrowFunctionExpression") || _optionalChain([callee, 'optionalAccess', _4 => _4.type]) !== "MemberExpression")
|
1022
|
+
return;
|
1023
|
+
context.dynamic.flags |= 2 /* NON_TEMPLATE */ | 4 /* INSERT */;
|
1024
|
+
const id = context.reference();
|
1025
|
+
const [render, exitBlock] = createBranch(argument, context, true);
|
1026
|
+
const source = resolveExpression(callee.object, context);
|
1027
|
+
const value = argument.params[0] && resolveExpression(argument.params[0], context);
|
1028
|
+
const key = argument.params[1] && resolveExpression(argument.params[1], context);
|
1029
|
+
const index = argument.params[2] && resolveExpression(argument.params[2], context);
|
1030
|
+
const returnExpression = getReturnExpression(argument);
|
1031
|
+
const keyProp = findProp(returnExpression, "key");
|
1032
|
+
const keyProperty = keyProp && resolveExpression(keyProp.value, context);
|
1033
|
+
return () => {
|
1034
|
+
exitBlock();
|
1035
|
+
context.registerOperation({
|
1036
|
+
type: 18 /* FOR */,
|
1037
|
+
id,
|
1038
|
+
source,
|
1039
|
+
value,
|
1040
|
+
key,
|
1041
|
+
index,
|
1042
|
+
keyProp: keyProperty,
|
1043
|
+
render,
|
1044
|
+
once: context.inVOnce
|
1045
|
+
});
|
1046
|
+
};
|
1047
|
+
}
|
1048
|
+
|
1049
|
+
// src/transforms/transformText.ts
|
1050
|
+
var seen = /* @__PURE__ */ new WeakMap();
|
1051
|
+
var transformText = (node, context) => {
|
1052
|
+
if (!seen.has(context.root)) seen.set(context.root, /* @__PURE__ */ new WeakSet());
|
1053
|
+
if (seen.get(context.root).has(node)) {
|
1054
|
+
context.dynamic.flags |= 2 /* NON_TEMPLATE */;
|
1055
|
+
return;
|
1056
|
+
}
|
1057
|
+
if (node.type === "JSXElement" && !isJSXComponent(node) && isAllTextLike(node.children)) {
|
1058
|
+
processTextLikeContainer(
|
1059
|
+
node.children,
|
1060
|
+
context
|
1061
|
+
);
|
1062
|
+
} else if (node.type === "JSXExpressionContainer") {
|
1063
|
+
if (node.expression.type === "ConditionalExpression") {
|
1064
|
+
return processConditionalExpression(node.expression, context);
|
1065
|
+
} else if (node.expression.type === "LogicalExpression") {
|
1066
|
+
return processLogicalExpression(node.expression, context);
|
1067
|
+
} else if (node.expression.type === "CallExpression") {
|
1068
|
+
if (isMapCallExpression(node.expression)) {
|
1069
|
+
return processMapCallExpression(node.expression, context);
|
1070
|
+
} else {
|
1071
|
+
processCallExpression(node.expression, context);
|
1072
|
+
}
|
1073
|
+
} else {
|
1074
|
+
processTextLike(context);
|
1075
|
+
}
|
1076
|
+
} else if (node.type === "JSXText") {
|
1077
|
+
context.template += node.value;
|
1078
|
+
}
|
1079
|
+
};
|
1080
|
+
function processTextLike(context) {
|
1081
|
+
const nexts = _optionalChain([context, 'access', _5 => _5.parent, 'access', _6 => _6.node, 'access', _7 => _7.children, 'optionalAccess', _8 => _8.slice, 'call', _9 => _9(context.index)]);
|
1082
|
+
const idx = nexts.findIndex((n) => !isTextLike(n));
|
1083
|
+
const nodes = idx > -1 ? nexts.slice(0, idx) : nexts;
|
1084
|
+
const id = context.reference();
|
1085
|
+
const values = nodes.map((node) => createTextLikeExpression(node, context));
|
1086
|
+
context.dynamic.flags |= 4 /* INSERT */ | 2 /* NON_TEMPLATE */;
|
1087
|
+
context.registerOperation({
|
1088
|
+
type: 12 /* CREATE_TEXT_NODE */,
|
1089
|
+
id,
|
1090
|
+
values,
|
1091
|
+
effect: !values.every(isConstantExpression) && !context.inVOnce
|
1092
|
+
});
|
1093
|
+
}
|
1094
|
+
function processTextLikeContainer(children, context) {
|
1095
|
+
const values = children.map(
|
1096
|
+
(child) => createTextLikeExpression(child, context)
|
1097
|
+
);
|
1098
|
+
const literals = values.map(getLiteralExpressionValue);
|
1099
|
+
if (literals.every((l) => l != null)) {
|
1100
|
+
context.childrenTemplate = literals.map((l) => String(l));
|
1101
|
+
} else {
|
1102
|
+
context.registerEffect(values, {
|
1103
|
+
type: 4 /* SET_TEXT */,
|
1104
|
+
element: context.reference(),
|
1105
|
+
values
|
1106
|
+
});
|
1107
|
+
}
|
1108
|
+
}
|
1109
|
+
function createTextLikeExpression(node, context) {
|
1110
|
+
seen.get(context.root).add(node);
|
1111
|
+
return resolveExpression(node, context);
|
1112
|
+
}
|
1113
|
+
function isAllTextLike(children) {
|
1114
|
+
return !!children.length && children.every(isTextLike) && // at least one an interpolation
|
1115
|
+
children.some((n) => n.type === "JSXExpressionContainer");
|
1116
|
+
}
|
1117
|
+
function isTextLike(node) {
|
1118
|
+
return node.type === "JSXExpressionContainer" && !(node.expression.type === "ConditionalExpression" || node.expression.type === "LogicalExpression") && node.expression.type !== "CallExpression" || node.type === "JSXText";
|
1119
|
+
}
|
1120
|
+
function processCallExpression(node, context) {
|
1121
|
+
context.dynamic.flags |= 2 /* NON_TEMPLATE */ | 4 /* INSERT */;
|
1122
|
+
const root = context.root === context.parent && context.parent.node.children.length === 1;
|
1123
|
+
const tag = `() => ${context.ir.source.slice(node.start, node.end)}`;
|
1124
|
+
context.registerOperation({
|
1125
|
+
type: 13 /* CREATE_COMPONENT_NODE */,
|
1126
|
+
id: context.reference(),
|
1127
|
+
tag,
|
1128
|
+
props: [],
|
1129
|
+
asset: false,
|
1130
|
+
root,
|
1131
|
+
slots: context.slots,
|
1132
|
+
once: context.inVOnce
|
1133
|
+
});
|
1134
|
+
}
|
1135
|
+
|
1136
|
+
// src/transforms/vBind.ts
|
1137
|
+
|
1138
|
+
var transformVBind = (dir, node, context) => {
|
1139
|
+
const { name, value, loc } = dir;
|
1140
|
+
if (!loc || name.type === "JSXNamespacedName") return;
|
1141
|
+
const [nameString, ...modifiers] = name.name.split("_");
|
1142
|
+
const exp = resolveExpression(value, context);
|
1143
|
+
let arg = resolveSimpleExpression(nameString, true, dir.name.loc);
|
1144
|
+
if (arg.isStatic && isReservedProp(arg.content)) return;
|
1145
|
+
let camel = false;
|
1146
|
+
if (modifiers.includes("camel")) {
|
1147
|
+
if (arg.isStatic) {
|
1148
|
+
arg = _shared.extend.call(void 0, {}, arg, { content: _shared.camelize.call(void 0, arg.content) });
|
1149
|
+
} else {
|
1150
|
+
camel = true;
|
1151
|
+
}
|
1152
|
+
}
|
1153
|
+
return {
|
1154
|
+
key: arg,
|
1155
|
+
value: exp,
|
1156
|
+
loc,
|
1157
|
+
runtimeCamelize: camel,
|
1158
|
+
modifier: modifiers.includes("prop") ? "." : modifiers.includes("attr") ? "^" : void 0
|
1159
|
+
};
|
1160
|
+
};
|
1161
|
+
|
1162
|
+
// src/transforms/vOn.ts
|
1163
|
+
|
1164
|
+
|
1165
|
+
|
1166
|
+
|
1167
|
+
|
1168
|
+
|
1169
|
+
|
1170
|
+
var delegatedEvents = /* @__PURE__ */ _shared.makeMap.call(void 0,
|
1171
|
+
"beforeinput,click,dblclick,contextmenu,focusin,focusout,input,keydown,keyup,mousedown,mousemove,mouseout,mouseover,mouseup,pointerdown,pointermove,pointerout,pointerover,pointerup,touchend,touchmove,touchstart"
|
1172
|
+
);
|
1173
|
+
var transformVOn = (dir, node, context) => {
|
1174
|
+
const { name, loc, value } = dir;
|
1175
|
+
if (name.type === "JSXNamespacedName") return;
|
1176
|
+
const isComponent = isJSXComponent(node);
|
1177
|
+
const [nameString, ...modifiers] = name.name.replace(/^on([A-Z])/, (_, $1) => $1.toLowerCase()).split("_");
|
1178
|
+
if (!value && !modifiers.length) {
|
1179
|
+
context.options.onError(
|
1180
|
+
_compilerdom.createCompilerError.call(void 0,
|
1181
|
+
_compilerdom.ErrorCodes.X_V_ON_NO_EXPRESSION,
|
1182
|
+
resolveLocation(loc, context)
|
1183
|
+
)
|
1184
|
+
);
|
1185
|
+
}
|
1186
|
+
let arg = resolveSimpleExpression(nameString, true, dir.name.loc);
|
1187
|
+
const exp = resolveExpression(dir.value, context);
|
1188
|
+
const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = _compilerdom.resolveModifiers.call(void 0,
|
1189
|
+
arg.isStatic ? `on${nameString}` : arg,
|
1190
|
+
modifiers.map((modifier) => _compilerdom.createSimpleExpression.call(void 0, modifier)),
|
1191
|
+
null,
|
1192
|
+
resolveLocation(loc, context)
|
1193
|
+
);
|
1194
|
+
let keyOverride;
|
1195
|
+
const isStaticClick = arg.isStatic && arg.content.toLowerCase() === "click";
|
1196
|
+
const delegate = arg.isStatic && !eventOptionModifiers.length && delegatedEvents(arg.content);
|
1197
|
+
if (nonKeyModifiers.includes("middle")) {
|
1198
|
+
if (keyOverride) {
|
1199
|
+
}
|
1200
|
+
if (isStaticClick) {
|
1201
|
+
arg = _shared.extend.call(void 0, {}, arg, { content: "mouseup" });
|
1202
|
+
} else if (!arg.isStatic) {
|
1203
|
+
keyOverride = ["click", "mouseup"];
|
1204
|
+
}
|
1205
|
+
}
|
1206
|
+
if (nonKeyModifiers.includes("right")) {
|
1207
|
+
if (isStaticClick) {
|
1208
|
+
arg = _shared.extend.call(void 0, {}, arg, { content: "contextmenu" });
|
1209
|
+
} else if (!arg.isStatic) {
|
1210
|
+
keyOverride = ["click", "contextmenu"];
|
1211
|
+
}
|
1212
|
+
}
|
1213
|
+
if (isComponent) {
|
1214
|
+
const handler = exp || EMPTY_EXPRESSION;
|
1215
|
+
return {
|
1216
|
+
key: arg,
|
1217
|
+
value: handler,
|
1218
|
+
handler: true
|
1219
|
+
};
|
1220
|
+
}
|
1221
|
+
const operation = {
|
1222
|
+
type: 5 /* SET_EVENT */,
|
1223
|
+
element: context.reference(),
|
1224
|
+
key: arg,
|
1225
|
+
value: exp,
|
1226
|
+
modifiers: {
|
1227
|
+
keys: keyModifiers,
|
1228
|
+
nonKeys: nonKeyModifiers,
|
1229
|
+
options: eventOptionModifiers
|
1230
|
+
},
|
1231
|
+
keyOverride,
|
1232
|
+
delegate,
|
1233
|
+
effect: !arg.isStatic
|
1234
|
+
};
|
1235
|
+
context.registerEffect([arg], operation);
|
1236
|
+
};
|
1237
|
+
|
1238
|
+
// src/transforms/vSlot.ts
|
1239
|
+
var transformVSlot = (node, context) => {
|
1240
|
+
if (node.type !== "JSXElement") return;
|
1241
|
+
if (!isJSXComponent(node)) return;
|
1242
|
+
const { openingElement, children } = node;
|
1243
|
+
const vSlotsIndex = openingElement.attributes.findIndex(
|
1244
|
+
(attr) => attr.type === "JSXAttribute" && ["v-slots", "vSlots"].includes(attr.name.name.toString())
|
1245
|
+
);
|
1246
|
+
const vSlotsDir = openingElement.attributes[vSlotsIndex];
|
1247
|
+
if (vSlotsDir && _optionalChain([vSlotsDir, 'access', _10 => _10.value, 'optionalAccess', _11 => _11.type]) === "JSXExpressionContainer") {
|
1248
|
+
node.openingElement.attributes.splice(vSlotsIndex, 1);
|
1249
|
+
context.slots = [
|
1250
|
+
{
|
1251
|
+
slotType: 4 /* EXPRESSION */,
|
1252
|
+
slots: resolveExpression(vSlotsDir.value.expression, context)
|
1253
|
+
}
|
1254
|
+
];
|
1255
|
+
}
|
1256
|
+
if (children.length) {
|
1257
|
+
return transformComponentSlot(node, context);
|
1258
|
+
}
|
1259
|
+
};
|
1260
|
+
function transformComponentSlot(node, context) {
|
1261
|
+
const { children } = node;
|
1262
|
+
const nonWhitespaceChildren = children.filter(
|
1263
|
+
() => isNonWhitespaceContent(node)
|
1264
|
+
);
|
1265
|
+
const [block, onExit] = createSlotBlock(node, context);
|
1266
|
+
const { slots } = context;
|
1267
|
+
return () => {
|
1268
|
+
onExit();
|
1269
|
+
if (nonWhitespaceChildren.length) {
|
1270
|
+
registerSlot(slots, block);
|
1271
|
+
context.slots = slots;
|
1272
|
+
}
|
1273
|
+
};
|
1274
|
+
}
|
1275
|
+
function ensureStaticSlots(slots) {
|
1276
|
+
let lastSlots = slots.at(-1);
|
1277
|
+
if (!slots.length || lastSlots.slotType !== 0 /* STATIC */) {
|
1278
|
+
slots.push(
|
1279
|
+
lastSlots = {
|
1280
|
+
slotType: 0 /* STATIC */,
|
1281
|
+
slots: {}
|
1282
|
+
}
|
1283
|
+
);
|
1284
|
+
}
|
1285
|
+
return lastSlots;
|
1286
|
+
}
|
1287
|
+
function registerSlot(slots, block) {
|
1288
|
+
const staticSlots = ensureStaticSlots(slots);
|
1289
|
+
staticSlots.slots.default = block;
|
1290
|
+
}
|
1291
|
+
function createSlotBlock(slotNode, context) {
|
1292
|
+
const block = newBlock(slotNode);
|
1293
|
+
const exitBlock = context.enterBlock(block);
|
1294
|
+
return [block, exitBlock];
|
1295
|
+
}
|
1296
|
+
function isNonWhitespaceContent(node) {
|
1297
|
+
if (node.type !== "JSXText") return true;
|
1298
|
+
return !!node.value.trim();
|
1299
|
+
}
|
1300
|
+
|
1301
|
+
// src/transforms/vModel.ts
|
1302
|
+
|
1303
|
+
var transformVModel = (dir, node, context) => {
|
1304
|
+
return _compilervapor.transformVModel.call(void 0,
|
1305
|
+
resolveDirectiveNode(dir, context),
|
1306
|
+
resolveNode(node, context),
|
1307
|
+
context
|
1308
|
+
);
|
1309
|
+
};
|
1310
|
+
|
1311
|
+
// src/transforms/vShow.ts
|
1312
|
+
|
1313
|
+
var transformVShow = (dir, node, context) => {
|
1314
|
+
return _compilervapor.transformVShow.call(void 0,
|
1315
|
+
resolveDirectiveNode(dir, context),
|
1316
|
+
resolveNode(node, context),
|
1317
|
+
context
|
1318
|
+
);
|
1319
|
+
};
|
1320
|
+
|
1321
|
+
// src/transforms/vHtml.ts
|
1322
|
+
|
1323
|
+
var transformVHtml = (dir, node, context) => {
|
1324
|
+
return _compilervapor.transformVHtml.call(void 0,
|
1325
|
+
resolveDirectiveNode(dir, context),
|
1326
|
+
resolveNode(node, context),
|
1327
|
+
context
|
1328
|
+
);
|
1329
|
+
};
|
1330
|
+
|
1331
|
+
// src/compile.ts
|
1332
|
+
function compile(source, options = {}) {
|
1333
|
+
const onError = options.onError || _compilerdom.defaultOnError;
|
1334
|
+
const isModuleMode = options.mode === "module";
|
1335
|
+
const __BROWSER__3 = false;
|
1336
|
+
if (__BROWSER__3) {
|
1337
|
+
if (options.prefixIdentifiers === true) {
|
1338
|
+
onError(_compilerdom.createCompilerError.call(void 0, _compilerdom.ErrorCodes.X_PREFIX_ID_NOT_SUPPORTED));
|
1339
|
+
} else if (isModuleMode) {
|
1340
|
+
onError(_compilerdom.createCompilerError.call(void 0, _compilerdom.ErrorCodes.X_MODULE_MODE_NOT_SUPPORTED));
|
1341
|
+
}
|
1342
|
+
}
|
1343
|
+
const prefixIdentifiers = !__BROWSER__3 && options.prefixIdentifiers === true;
|
1344
|
+
if (options.scopeId && !isModuleMode) {
|
1345
|
+
onError(_compilerdom.createCompilerError.call(void 0, _compilerdom.ErrorCodes.X_SCOPE_ID_NOT_SUPPORTED));
|
1346
|
+
}
|
1347
|
+
const resolvedOptions = _shared.extend.call(void 0, {}, options, {
|
1348
|
+
prefixIdentifiers,
|
1349
|
+
expressionPlugins: options.expressionPlugins || ["jsx"]
|
1350
|
+
});
|
1351
|
+
if (!__BROWSER__3 && options.isTS) {
|
1352
|
+
const { expressionPlugins } = resolvedOptions;
|
1353
|
+
if (!expressionPlugins.includes("typescript")) {
|
1354
|
+
resolvedOptions.expressionPlugins = [
|
1355
|
+
...expressionPlugins || [],
|
1356
|
+
"typescript"
|
1357
|
+
];
|
1358
|
+
}
|
1359
|
+
}
|
1360
|
+
const {
|
1361
|
+
body: [statement]
|
1362
|
+
} = _shared.isString.call(void 0, source) ? _parser.parse.call(void 0, source, {
|
1363
|
+
sourceType: "module",
|
1364
|
+
plugins: resolvedOptions.expressionPlugins
|
1365
|
+
}).program : source;
|
1366
|
+
let children;
|
1367
|
+
if (statement.type === "ExpressionStatement") {
|
1368
|
+
children = statement.expression.type === "JSXFragment" ? statement.expression.children : statement.expression.type === "JSXElement" ? [statement.expression] : [];
|
1369
|
+
}
|
1370
|
+
const ast = {
|
1371
|
+
type: 0 /* ROOT */,
|
1372
|
+
children,
|
1373
|
+
source: _shared.isString.call(void 0, source) ? source : "",
|
1374
|
+
// TODO
|
1375
|
+
components: [],
|
1376
|
+
directives: [],
|
1377
|
+
helpers: /* @__PURE__ */ new Set(),
|
1378
|
+
temps: 0
|
1379
|
+
};
|
1380
|
+
const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers);
|
1381
|
+
const ir = transform(
|
1382
|
+
ast,
|
1383
|
+
_shared.extend.call(void 0, {}, resolvedOptions, {
|
1384
|
+
nodeTransforms: [
|
1385
|
+
...nodeTransforms,
|
1386
|
+
...options.nodeTransforms || []
|
1387
|
+
// user transforms
|
1388
|
+
],
|
1389
|
+
directiveTransforms: _shared.extend.call(void 0,
|
1390
|
+
{},
|
1391
|
+
directiveTransforms,
|
1392
|
+
options.directiveTransforms || {}
|
1393
|
+
// user transforms
|
1394
|
+
)
|
1395
|
+
})
|
1396
|
+
);
|
1397
|
+
return _compilervapor.generate.call(void 0, ir, resolvedOptions);
|
1398
|
+
}
|
1399
|
+
function getBaseTransformPreset(prefixIdentifiers) {
|
1400
|
+
return [
|
1401
|
+
[
|
1402
|
+
transformTemplateRef,
|
1403
|
+
transformText,
|
1404
|
+
transformElement,
|
1405
|
+
transformVSlot,
|
1406
|
+
transformChildren
|
1407
|
+
],
|
1408
|
+
{
|
1409
|
+
bind: transformVBind,
|
1410
|
+
on: transformVOn,
|
1411
|
+
model: transformVModel,
|
1412
|
+
show: transformVShow,
|
1413
|
+
html: transformVHtml
|
1414
|
+
}
|
1415
|
+
];
|
1416
|
+
}
|
1417
|
+
|
1418
|
+
|
1419
|
+
|
1420
|
+
|
1421
|
+
|
1422
|
+
|
1423
|
+
|
1424
|
+
|
1425
|
+
|
1426
|
+
|
1427
|
+
|
1428
|
+
|
1429
|
+
|
1430
|
+
|
1431
|
+
|
1432
|
+
|
1433
|
+
|
1434
|
+
|
1435
|
+
|
1436
|
+
|
1437
|
+
|
1438
|
+
|
1439
|
+
exports.DynamicFlag = DynamicFlag2; exports.IRDynamicPropsKind = IRDynamicPropsKind; exports.IRNodeTypes = IRNodeTypes; exports.IRSlotType = IRSlotType; exports.TransformContext = TransformContext; exports.compile = compile; exports.generate = _compilervapor.generate; exports.resolveDirectiveNode = resolveDirectiveNode; exports.resolveNode = resolveNode; exports.transform = transform; exports.transformChildren = transformChildren; exports.transformElement = transformElement; exports.transformNode = transformNode; exports.transformTemplateRef = transformTemplateRef; exports.transformText = transformText; exports.transformVBind = transformVBind; exports.transformVHtml = transformVHtml; exports.transformVModel = transformVModel; exports.transformVOn = transformVOn; exports.transformVShow = transformVShow; exports.transformVSlot = transformVSlot;
|