var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); // src/index.ts import * as t5 from "@babel/types"; import _template from "@babel/template"; import _syntaxJsx from "@babel/plugin-syntax-jsx"; import { addNamed, addNamespace, isModule } from "@babel/helper-module-imports"; import ResolveType from "@vue/babel-plugin-resolve-type"; import { declare } from "@babel/helper-plugin-utils"; // src/transform-vue-jsx.ts import * as t3 from "@babel/types"; import { addDefault } from "@babel/helper-module-imports"; // src/utils.ts import * as t from "@babel/types"; import htmlTags from "html-tags"; import svgTags from "svg-tags"; // src/slotFlags.ts var SlotFlags = /* @__PURE__ */ ((SlotFlags2) => { SlotFlags2[SlotFlags2["STABLE"] = 1] = "STABLE"; SlotFlags2[SlotFlags2["DYNAMIC"] = 2] = "DYNAMIC"; SlotFlags2[SlotFlags2["FORWARDED"] = 3] = "FORWARDED"; return SlotFlags2; })(SlotFlags || {}); var slotFlags_default = SlotFlags; // src/utils.ts var FRAGMENT = "Fragment"; var KEEP_ALIVE = "KeepAlive"; var createIdentifier = (state, name) => state.get(name)(); var isDirective = (src) => src.startsWith("v-") || src.startsWith("v") && src.length >= 2 && src[1] >= "A" && src[1] <= "Z"; var shouldTransformedToSlots = (tag) => !(tag.match(RegExp(`^_?${FRAGMENT}\\d*$`)) || tag === KEEP_ALIVE); var checkIsComponent = (path, state) => { var _a, _b; const namePath = path.get("name"); if (namePath.isJSXMemberExpression()) { return shouldTransformedToSlots(namePath.node.property.name); } const tag = namePath.node.name; return !((_b = (_a = state.opts).isCustomElement) == null ? void 0 : _b.call(_a, tag)) && shouldTransformedToSlots(tag) && !htmlTags.includes(tag) && !svgTags.includes(tag); }; var transformJSXMemberExpression = (path) => { const objectPath = path.node.object; const propertyPath = path.node.property; const transformedObject = t.isJSXMemberExpression(objectPath) ? transformJSXMemberExpression( path.get("object") ) : t.isJSXIdentifier(objectPath) ? t.identifier(objectPath.name) : t.nullLiteral(); const transformedProperty = t.identifier(propertyPath.name); return t.memberExpression(transformedObject, transformedProperty); }; var getTag = (path, state) => { var _a, _b; const namePath = path.get("openingElement").get("name"); if (namePath.isJSXIdentifier()) { const { name } = namePath.node; if (!htmlTags.includes(name) && !svgTags.includes(name)) { return name === FRAGMENT ? createIdentifier(state, FRAGMENT) : path.scope.hasBinding(name) ? t.identifier(name) : ((_b = (_a = state.opts).isCustomElement) == null ? void 0 : _b.call(_a, name)) ? t.stringLiteral(name) : t.callExpression(createIdentifier(state, "resolveComponent"), [ t.stringLiteral(name) ]); } return t.stringLiteral(name); } if (namePath.isJSXMemberExpression()) { return transformJSXMemberExpression(namePath); } throw new Error(`getTag: ${namePath.type} is not supported`); }; var getJSXAttributeName = (path) => { const nameNode = path.node.name; if (t.isJSXIdentifier(nameNode)) { return nameNode.name; } return `${nameNode.namespace.name}:${nameNode.name.name}`; }; var transformJSXText = (path) => { const str = transformText(path.node.value); return str !== "" ? t.stringLiteral(str) : null; }; var transformText = (text) => { const lines = text.split(/\r\n|\n|\r/); let lastNonEmptyLine = 0; for (let i = 0; i < lines.length; i++) { if (lines[i].match(/[^ \t]/)) { lastNonEmptyLine = i; } } let str = ""; for (let i = 0; i < lines.length; i++) { const line = lines[i]; const isFirstLine = i === 0; const isLastLine = i === lines.length - 1; const isLastNonEmptyLine = i === lastNonEmptyLine; let trimmedLine = line.replace(/\t/g, " "); if (!isFirstLine) { trimmedLine = trimmedLine.replace(/^[ ]+/, ""); } if (!isLastLine) { trimmedLine = trimmedLine.replace(/[ ]+$/, ""); } if (trimmedLine) { if (!isLastNonEmptyLine) { trimmedLine += " "; } str += trimmedLine; } } return str; }; var transformJSXExpressionContainer = (path) => path.get("expression").node; var transformJSXSpreadChild = (path) => t.spreadElement(path.get("expression").node); var walksScope = (path, name, slotFlag) => { if (path.scope.hasBinding(name) && path.parentPath) { if (t.isJSXElement(path.parentPath.node)) { path.parentPath.setData("slotFlag", slotFlag); } walksScope(path.parentPath, name, slotFlag); } }; var buildIIFE = (path, children) => { const { parentPath } = path; if (parentPath.isAssignmentExpression()) { const { left } = parentPath.node; if (t.isIdentifier(left)) { return children.map((child) => { if (t.isIdentifier(child) && child.name === left.name) { const insertName = path.scope.generateUidIdentifier(child.name); parentPath.insertBefore( t.variableDeclaration("const", [ t.variableDeclarator( insertName, t.callExpression( t.functionExpression( null, [], t.blockStatement([t.returnStatement(child)]) ), [] ) ) ]) ); return insertName; } return child; }); } } return children; }; var onRE = /^on[^a-z]/; var isOn = (key) => onRE.test(key); var mergeAsArray = (existing, incoming) => { if (t.isArrayExpression(existing.value)) { existing.value.elements.push(incoming.value); } else { existing.value = t.arrayExpression([ existing.value, incoming.value ]); } }; var dedupeProperties = (properties = [], mergeProps) => { if (!mergeProps) { return properties; } const knownProps = /* @__PURE__ */ new Map(); const deduped = []; properties.forEach((prop) => { if (t.isStringLiteral(prop.key)) { const { value: name } = prop.key; const existing = knownProps.get(name); if (existing) { if (name === "style" || name === "class" || name.startsWith("on")) { mergeAsArray(existing, prop); } } else { knownProps.set(name, prop); deduped.push(prop); } } else { deduped.push(prop); } }); return deduped; }; var isConstant = (node) => { if (t.isIdentifier(node)) { return node.name === "undefined"; } if (t.isArrayExpression(node)) { const { elements } = node; return elements.every((element) => element && isConstant(element)); } if (t.isObjectExpression(node)) { return node.properties.every( (property) => isConstant(property.value) ); } if (t.isLiteral(node)) { return true; } return false; }; var transformJSXSpreadAttribute = (nodePath, path, mergeProps, args) => { const argument = path.get("argument"); const properties = t.isObjectExpression(argument.node) ? argument.node.properties : void 0; if (!properties) { if (argument.isIdentifier()) { walksScope( nodePath, argument.node.name, slotFlags_default.DYNAMIC ); } args.push(mergeProps ? argument.node : t.spreadElement(argument.node)); } else if (mergeProps) { args.push(t.objectExpression(properties)); } else { args.push(...properties); } }; // src/parseDirectives.ts import * as t2 from "@babel/types"; var getType = (path) => { const typePath = path.get("attributes").find((attribute) => { if (!attribute.isJSXAttribute()) { return false; } return attribute.get("name").isJSXIdentifier() && attribute.get("name").node.name === "type"; }); return typePath ? typePath.get("value").node : null; }; var parseModifiers = (value) => t2.isArrayExpression(value) ? value.elements.map((el) => t2.isStringLiteral(el) ? el.value : "").filter(Boolean) : []; var parseDirectives = (params) => { var _a, _b; const { path, value, state, tag, isComponent } = params; const args = []; const vals = []; const modifiersSet = []; let directiveName; let directiveArgument; let directiveModifiers; if ("namespace" in path.node.name) { [directiveName, directiveArgument] = params.name.split(":"); directiveName = path.node.name.namespace.name; directiveArgument = path.node.name.name.name; directiveModifiers = directiveArgument.split("_").slice(1); } else { const underscoreModifiers = params.name.split("_"); directiveName = underscoreModifiers.shift() || ""; directiveModifiers = underscoreModifiers; } directiveName = directiveName.replace(/^v/, "").replace(/^-/, "").replace(/^\S/, (s) => s.toLowerCase()); if (directiveArgument) { args.push(t2.stringLiteral(directiveArgument.split("_")[0])); } const isVModels = directiveName === "models"; const isVModel = directiveName === "model"; if (isVModel && !path.get("value").isJSXExpressionContainer()) { throw new Error("You have to use JSX Expression inside your v-model"); } if (isVModels && !isComponent) { throw new Error("v-models can only use in custom components"); } const shouldResolve = !["html", "text", "model", "slots", "models"].includes(directiveName) || isVModel && !isComponent; let modifiers = directiveModifiers; if (t2.isArrayExpression(value)) { const elementsList = isVModels ? value.elements : [value]; elementsList.forEach((element) => { if (isVModels && !t2.isArrayExpression(element)) { throw new Error("You should pass a Two-dimensional Arrays to v-models"); } const { elements } = element; const [first, second, third] = elements; if (second && !t2.isArrayExpression(second) && !t2.isSpreadElement(second)) { args.push(second); modifiers = parseModifiers(third); } else if (t2.isArrayExpression(second)) { if (!shouldResolve) { args.push(t2.nullLiteral()); } modifiers = parseModifiers(second); } else if (!shouldResolve) { args.push(t2.nullLiteral()); } modifiersSet.push(new Set(modifiers)); vals.push(first); }); } else if (isVModel && !shouldResolve) { args.push(t2.nullLiteral()); modifiersSet.push(new Set(directiveModifiers)); } else { modifiersSet.push(new Set(directiveModifiers)); } return { directiveName, modifiers: modifiersSet, values: vals.length ? vals : [value], args, directive: shouldResolve ? [ resolveDirective(path, state, tag, directiveName), vals[0] || value, ((_a = modifiersSet[0]) == null ? void 0 : _a.size) ? args[0] || t2.unaryExpression("void", t2.numericLiteral(0), true) : args[0], !!((_b = modifiersSet[0]) == null ? void 0 : _b.size) && t2.objectExpression( [...modifiersSet[0]].map( (modifier) => t2.objectProperty(t2.identifier(modifier), t2.booleanLiteral(true)) ) ) ].filter(Boolean) : void 0 }; }; var resolveDirective = (path, state, tag, directiveName) => { if (directiveName === "show") { return createIdentifier(state, "vShow"); } if (directiveName === "model") { let modelToUse; const type = getType(path.parentPath); switch (tag.value) { case "select": modelToUse = createIdentifier(state, "vModelSelect"); break; case "textarea": modelToUse = createIdentifier(state, "vModelText"); break; default: if (t2.isStringLiteral(type) || !type) { switch (type == null ? void 0 : type.value) { case "checkbox": modelToUse = createIdentifier(state, "vModelCheckbox"); break; case "radio": modelToUse = createIdentifier(state, "vModelRadio"); break; default: modelToUse = createIdentifier(state, "vModelText"); } } else { modelToUse = createIdentifier(state, "vModelDynamic"); } } return modelToUse; } return t2.callExpression(createIdentifier(state, "resolveDirective"), [ t2.stringLiteral(directiveName) ]); }; var parseDirectives_default = parseDirectives; // src/transform-vue-jsx.ts var xlinkRE = /^xlink([A-Z])/; var getJSXAttributeValue = (path, state) => { const valuePath = path.get("value"); if (valuePath.isJSXElement()) { return transformJSXElement(valuePath, state); } if (valuePath.isStringLiteral()) { return t3.stringLiteral(transformText(valuePath.node.value)); } if (valuePath.isJSXExpressionContainer()) { return transformJSXExpressionContainer(valuePath); } return null; }; var buildProps = (path, state) => { const tag = getTag(path, state); const isComponent = checkIsComponent(path.get("openingElement"), state); const props = path.get("openingElement").get("attributes"); const directives = []; const dynamicPropNames = /* @__PURE__ */ new Set(); let slots = null; let patchFlag = 0; if (props.length === 0) { return { tag, isComponent, slots, props: t3.nullLiteral(), directives, patchFlag, dynamicPropNames }; } let properties = []; let hasRef = false; let hasClassBinding = false; let hasStyleBinding = false; let hasHydrationEventBinding = false; let hasDynamicKeys = false; const mergeArgs = []; const { mergeProps = true } = state.opts; props.forEach((prop) => { if (prop.isJSXAttribute()) { let name = getJSXAttributeName(prop); const attributeValue = getJSXAttributeValue(prop, state); if (!isConstant(attributeValue) || name === "ref") { if (!isComponent && isOn(name) && // omit the flag for click handlers becaues hydration gives click // dedicated fast path. name.toLowerCase() !== "onclick" && // omit v-model handlers name !== "onUpdate:modelValue") { hasHydrationEventBinding = true; } if (name === "ref") { hasRef = true; } else if (name === "class" && !isComponent) { hasClassBinding = true; } else if (name === "style" && !isComponent) { hasStyleBinding = true; } else if (name !== "key" && !isDirective(name) && name !== "on") { dynamicPropNames.add(name); } } if (state.opts.transformOn && (name === "on" || name === "nativeOn")) { if (!state.get("transformOn")) { state.set( "transformOn", addDefault(path, "@vue/babel-helper-vue-transform-on", { nameHint: "_transformOn" }) ); } mergeArgs.push( t3.callExpression(state.get("transformOn"), [ attributeValue || t3.booleanLiteral(true) ]) ); return; } if (isDirective(name)) { const { directive, modifiers, values, args, directiveName } = parseDirectives_default({ tag, isComponent, name, path: prop, state, value: attributeValue }); if (directiveName === "slots") { slots = attributeValue; return; } if (directive) { directives.push(t3.arrayExpression(directive)); } else if (directiveName === "html") { properties.push( t3.objectProperty(t3.stringLiteral("innerHTML"), values[0]) ); dynamicPropNames.add("innerHTML"); } else if (directiveName === "text") { properties.push( t3.objectProperty(t3.stringLiteral("textContent"), values[0]) ); dynamicPropNames.add("textContent"); } if (["models", "model"].includes(directiveName)) { values.forEach((value, index) => { var _a; const propName = args[index]; const isDynamic = propName && !t3.isStringLiteral(propName) && !t3.isNullLiteral(propName); if (!directive) { properties.push( t3.objectProperty( t3.isNullLiteral(propName) ? t3.stringLiteral("modelValue") : propName, value, isDynamic ) ); if (!isDynamic) { dynamicPropNames.add( (propName == null ? void 0 : propName.value) || "modelValue" ); } if ((_a = modifiers[index]) == null ? void 0 : _a.size) { properties.push( t3.objectProperty( isDynamic ? t3.binaryExpression( "+", propName, t3.stringLiteral("Modifiers") ) : t3.stringLiteral( `${(propName == null ? void 0 : propName.value) || "model"}Modifiers` ), t3.objectExpression( [...modifiers[index]].map( (modifier) => t3.objectProperty( t3.stringLiteral(modifier), t3.booleanLiteral(true) ) ) ), isDynamic ) ); } } const updateName = isDynamic ? t3.binaryExpression("+", t3.stringLiteral("onUpdate:"), propName) : t3.stringLiteral( `onUpdate:${(propName == null ? void 0 : propName.value) || "modelValue"}` ); properties.push( t3.objectProperty( updateName, t3.arrowFunctionExpression( [t3.identifier("$event")], t3.assignmentExpression( "=", value, t3.identifier("$event") ) ), isDynamic ) ); if (!isDynamic) { dynamicPropNames.add(updateName.value); } else { hasDynamicKeys = true; } }); } } else { if (name.match(xlinkRE)) { name = name.replace( xlinkRE, (_, firstCharacter) => `xlink:${firstCharacter.toLowerCase()}` ); } properties.push( t3.objectProperty( t3.stringLiteral(name), attributeValue || t3.booleanLiteral(true) ) ); } } else { if (properties.length && mergeProps) { mergeArgs.push( t3.objectExpression(dedupeProperties(properties, mergeProps)) ); properties = []; } hasDynamicKeys = true; transformJSXSpreadAttribute( path, prop, mergeProps, mergeProps ? mergeArgs : properties ); } }); if (hasDynamicKeys) { patchFlag |= 16 /* FULL_PROPS */; } else { if (hasClassBinding) { patchFlag |= 2 /* CLASS */; } if (hasStyleBinding) { patchFlag |= 4 /* STYLE */; } if (dynamicPropNames.size) { patchFlag |= 8 /* PROPS */; } if (hasHydrationEventBinding) { patchFlag |= 32 /* HYDRATE_EVENTS */; } } if ((patchFlag === 0 || patchFlag === 32 /* HYDRATE_EVENTS */) && (hasRef || directives.length > 0)) { patchFlag |= 512 /* NEED_PATCH */; } let propsExpression = t3.nullLiteral(); if (mergeArgs.length) { if (properties.length) { mergeArgs.push( t3.objectExpression(dedupeProperties(properties, mergeProps)) ); } if (mergeArgs.length > 1) { propsExpression = t3.callExpression( createIdentifier(state, "mergeProps"), mergeArgs ); } else { propsExpression = mergeArgs[0]; } } else if (properties.length) { if (properties.length === 1 && t3.isSpreadElement(properties[0])) { propsExpression = properties[0].argument; } else { propsExpression = t3.objectExpression( dedupeProperties(properties, mergeProps) ); } } return { tag, props: propsExpression, isComponent, slots, directives, patchFlag, dynamicPropNames }; }; var getChildren = (paths, state) => paths.map((path) => { if (path.isJSXText()) { const transformedText = transformJSXText(path); if (transformedText) { return t3.callExpression(createIdentifier(state, "createTextVNode"), [ transformedText ]); } return transformedText; } if (path.isJSXExpressionContainer()) { const expression = transformJSXExpressionContainer(path); if (t3.isIdentifier(expression)) { const { name } = expression; const { referencePaths = [] } = path.scope.getBinding(name) || {}; referencePaths.forEach((referencePath) => { walksScope(referencePath, name, slotFlags_default.DYNAMIC); }); } return expression; } if (path.isJSXSpreadChild()) { return transformJSXSpreadChild(path); } if (path.isCallExpression()) { return path.node; } if (path.isJSXElement()) { return transformJSXElement(path, state); } throw new Error(`getChildren: ${path.type} is not supported`); }).filter( (value) => value != null && !t3.isJSXEmptyExpression(value) ); var transformJSXElement = (path, state) => { const children = getChildren(path.get("children"), state); const { tag, props, isComponent, directives, patchFlag, dynamicPropNames, slots } = buildProps(path, state); const { optimize = false } = state.opts; const slotFlag = path.getData("slotFlag") || slotFlags_default.STABLE; let VNodeChild; if (children.length > 1 || slots) { VNodeChild = isComponent ? children.length ? t3.objectExpression( [ !!children.length && t3.objectProperty( t3.identifier("default"), t3.arrowFunctionExpression( [], t3.arrayExpression(buildIIFE(path, children)) ) ), ...slots ? t3.isObjectExpression(slots) ? slots.properties : [t3.spreadElement(slots)] : [], optimize && t3.objectProperty(t3.identifier("_"), t3.numericLiteral(slotFlag)) ].filter(Boolean) ) : slots : t3.arrayExpression(children); } else if (children.length === 1) { const { enableObjectSlots = true } = state.opts; const child = children[0]; const objectExpression4 = t3.objectExpression( [ t3.objectProperty( t3.identifier("default"), t3.arrowFunctionExpression( [], t3.arrayExpression(buildIIFE(path, [child])) ) ), optimize && t3.objectProperty( t3.identifier("_"), t3.numericLiteral(slotFlag) ) ].filter(Boolean) ); if (t3.isIdentifier(child) && isComponent) { VNodeChild = enableObjectSlots ? t3.conditionalExpression( t3.callExpression( state.get("@vue/babel-plugin-jsx/runtimeIsSlot")(), [child] ), child, objectExpression4 ) : objectExpression4; } else if (t3.isCallExpression(child) && child.loc && isComponent) { if (enableObjectSlots) { const { scope } = path; const slotId = scope.generateUidIdentifier("slot"); if (scope) { scope.push({ id: slotId, kind: "let" }); } const alternate = t3.objectExpression( [ t3.objectProperty( t3.identifier("default"), t3.arrowFunctionExpression( [], t3.arrayExpression(buildIIFE(path, [slotId])) ) ), optimize && t3.objectProperty( t3.identifier("_"), t3.numericLiteral(slotFlag) ) ].filter(Boolean) ); const assignment = t3.assignmentExpression("=", slotId, child); const condition = t3.callExpression( state.get("@vue/babel-plugin-jsx/runtimeIsSlot")(), [assignment] ); VNodeChild = t3.conditionalExpression(condition, slotId, alternate); } else { VNodeChild = objectExpression4; } } else if (t3.isFunctionExpression(child) || t3.isArrowFunctionExpression(child)) { VNodeChild = t3.objectExpression([ t3.objectProperty(t3.identifier("default"), child) ]); } else if (t3.isObjectExpression(child)) { VNodeChild = t3.objectExpression( [ ...child.properties, optimize && t3.objectProperty(t3.identifier("_"), t3.numericLiteral(slotFlag)) ].filter(Boolean) ); } else { VNodeChild = isComponent ? t3.objectExpression([ t3.objectProperty( t3.identifier("default"), t3.arrowFunctionExpression([], t3.arrayExpression([child])) ) ]) : t3.arrayExpression([child]); } } const createVNode = t3.callExpression( createIdentifier(state, "createVNode"), [ tag, props, VNodeChild || t3.nullLiteral(), !!patchFlag && optimize && t3.numericLiteral(patchFlag), !!dynamicPropNames.size && optimize && t3.arrayExpression( [...dynamicPropNames.keys()].map((name) => t3.stringLiteral(name)) ) ].filter(Boolean) ); if (!directives.length) { return createVNode; } return t3.callExpression(createIdentifier(state, "withDirectives"), [ createVNode, t3.arrayExpression(directives) ]); }; var visitor = { JSXElement: { exit(path, state) { path.replaceWith(transformJSXElement(path, state)); } } }; var transform_vue_jsx_default = visitor; // src/sugar-fragment.ts import * as t4 from "@babel/types"; var transformFragment = (path, Fragment) => { const children = path.get("children") || []; return t4.jsxElement( t4.jsxOpeningElement(Fragment, []), t4.jsxClosingElement(Fragment), children.map(({ node }) => node), false ); }; var visitor2 = { JSXFragment: { enter(path, state) { const fragmentCallee = createIdentifier(state, FRAGMENT); path.replaceWith( transformFragment( path, t4.isIdentifier(fragmentCallee) ? t4.jsxIdentifier(fragmentCallee.name) : t4.jsxMemberExpression( t4.jsxIdentifier(fragmentCallee.object.name), t4.jsxIdentifier(fragmentCallee.property.name) ) ) ); } } }; var sugar_fragment_default = visitor2; // src/index.ts var hasJSX = (parentPath) => { let fileHasJSX = false; parentPath.traverse({ JSXElement(path) { fileHasJSX = true; path.stop(); }, JSXFragment(path) { fileHasJSX = true; path.stop(); } }); return fileHasJSX; }; var JSX_ANNOTATION_REGEX = /\*?\s*@jsx\s+([^\s]+)/; // @__NO_SIDE_EFFECTS__ function interopDefault(m) { return m.default || m; } var syntaxJsx = /* @__PURE__ */ interopDefault(_syntaxJsx); var template = /* @__PURE__ */ interopDefault(_template); var src_default = declare( (api, opt, dirname) => { const { types } = api; let resolveType; if (opt.resolveType) { if (typeof opt.resolveType === "boolean") opt.resolveType = {}; resolveType = ResolveType(api, opt.resolveType, dirname); } return __spreadProps(__spreadValues({}, resolveType || {}), { name: "babel-plugin-jsx", inherits: /* @__PURE__ */ interopDefault(syntaxJsx), visitor: __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, resolveType == null ? void 0 : resolveType.visitor), transform_vue_jsx_default), sugar_fragment_default), { Program: { enter(path, state) { if (hasJSX(path)) { const importNames = [ "createVNode", "Fragment", "resolveComponent", "withDirectives", "vShow", "vModelSelect", "vModelText", "vModelCheckbox", "vModelRadio", "vModelText", "vModelDynamic", "resolveDirective", "mergeProps", "createTextVNode", "isVNode" ]; if (isModule(path)) { const importMap = {}; importNames.forEach((name) => { state.set(name, () => { if (importMap[name]) { return types.cloneNode(importMap[name]); } const identifier5 = addNamed(path, name, "vue", { ensureLiveReference: true }); importMap[name] = identifier5; return identifier5; }); }); const { enableObjectSlots = true } = state.opts; if (enableObjectSlots) { state.set("@vue/babel-plugin-jsx/runtimeIsSlot", () => { if (importMap.runtimeIsSlot) { return importMap.runtimeIsSlot; } const { name: isVNodeName } = state.get( "isVNode" )(); const isSlot = path.scope.generateUidIdentifier("isSlot"); const ast = template.ast` function ${isSlot.name}(s) { return typeof s === 'function' || (Object.prototype.toString.call(s) === '[object Object]' && !${isVNodeName}(s)); } `; const lastImport = path.get("body").filter((p) => p.isImportDeclaration()).pop(); if (lastImport) { lastImport.insertAfter(ast); } importMap.runtimeIsSlot = isSlot; return isSlot; }); } } else { let sourceName; importNames.forEach((name) => { state.set(name, () => { if (!sourceName) { sourceName = addNamespace(path, "vue", { ensureLiveReference: true }); } return t5.memberExpression(sourceName, t5.identifier(name)); }); }); const helpers = {}; const { enableObjectSlots = true } = state.opts; if (enableObjectSlots) { state.set("@vue/babel-plugin-jsx/runtimeIsSlot", () => { if (helpers.runtimeIsSlot) { return helpers.runtimeIsSlot; } const isSlot = path.scope.generateUidIdentifier("isSlot"); const { object: objectName } = state.get( "isVNode" )(); const ast = template.ast` function ${isSlot.name}(s) { return typeof s === 'function' || (Object.prototype.toString.call(s) === '[object Object]' && !${objectName.name}.isVNode(s)); } `; const nodePaths = path.get("body"); const lastImport = nodePaths.filter( (p) => p.isVariableDeclaration() && p.node.declarations.some( (d) => { var _a; return ((_a = d.id) == null ? void 0 : _a.name) === sourceName.name; } ) ).pop(); if (lastImport) { lastImport.insertAfter(ast); } return isSlot; }); } } const { opts: { pragma = "" }, file } = state; if (pragma) { state.set("createVNode", () => t5.identifier(pragma)); } if (file.ast.comments) { for (const comment of file.ast.comments) { const jsxMatches = JSX_ANNOTATION_REGEX.exec(comment.value); if (jsxMatches) { state.set("createVNode", () => t5.identifier(jsxMatches[1])); } } } } } } }) }); } ); export { src_default as default };