UNPKG

@vue-jsx-vapor/macros

Version:
83 lines (80 loc) 2.48 kB
import { c as with_defaults_default, i as getRequire, l as use_model_default, n as transformJsxMacros, o as useModelHelperId, s as withDefaultsHelperId } from "./core-YJzDc6vy.js"; import { t as resolveOptions } from "./options-zNb9gT8s.js"; //#region src/core/style.ts let compileStyleAsync; async function getCompileStyleAsync() { if (compileStyleAsync) return compileStyleAsync; const require = getRequire(); try { return compileStyleAsync = require ? require("vue/compiler-sfc").compileStyleAsync : (await import("https://esm.sh/@vue/compiler-sfc")).compileStyleAsync; } catch {} } async function transformStyle(code, id, options) { const query = new URLSearchParams(id.split("?")[1]); const compileStyleAsync$1 = await getCompileStyleAsync(); if (!compileStyleAsync$1) { console.warn(`Cannot require vue/compiler-sfc, please install Vue first.`); return ""; } return (await compileStyleAsync$1({ filename: id, id: `data-v-${query.get("scopeId")}`, isProd: options.isProduction, source: code, scoped: query.get("scoped") === "true" })).code; } //#endregion //#region src/raw.ts const plugin = (userOptions = {}) => { const options = resolveOptions(userOptions); const importMap = /* @__PURE__ */ new Map(); const defineStyleRegex = /^\/vue-jsx-vapor\/macros\/define-style/; return [{ name: "@vue-jsx-vapor/macros", enforce: "pre", resolveId: { filter: { id: { include: [useModelHelperId, withDefaultsHelperId] } }, handler(id) { return id; } }, load: { filter: { id: { include: [useModelHelperId, withDefaultsHelperId] } }, handler(id) { if (id === useModelHelperId) return use_model_default; if (id === withDefaultsHelperId) return with_defaults_default; } }, transform: { filter: { id: { include: options.include || /\.[cm]?[jt]sx$/ } }, handler(code, id, opt) { if (opt?.ssr) options.defineComponent.autoReturnFunction = true; return transformJsxMacros(code, id, importMap, options); } } }, { name: "@vue-jsx-vapor/macros/define-style", resolveId: { filter: { id: { include: defineStyleRegex } }, handler(id) { return id; } }, load: { filter: { id: { include: defineStyleRegex } }, handler(id) { return importMap.get(id); } }, transform: { filter: { id: { include: defineStyleRegex } }, handler(code, id) { return transformStyle(code, id, options); } } }]; }; var raw_default = plugin; //#endregion export { raw_default as t };