@vue-jsx-vapor/macros
Version:
Macros for Vue JSX Vapor
54 lines (51 loc) • 1.77 kB
JavaScript
import { a as helperPrefix, c as with_defaults_default, l as use_model_default, n as transformJsxMacros, o as useModelHelperId, s as withDefaultsHelperId } from "./core-CyBXDBOb.js";
import { t as resolveOptions } from "./options-BjmC0ExR.js";
import { createFilter, normalizePath } from "@vue-macros/common";
import { compileStyleAsync } from "@vue/compiler-sfc";
//#region src/core/style.ts
async function transformStyle(code, id, options) {
const query = new URLSearchParams(id.split("?")[1]);
return (await compileStyleAsync({
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 name = "@vue-jsx-vapor/macros";
const plugin = (userOptions = {}) => {
const options = resolveOptions(userOptions);
const filter = createFilter(options);
const importMap = /* @__PURE__ */ new Map();
return {
name,
enforce: "pre",
resolveId(id) {
if (normalizePath(id).startsWith(helperPrefix)) return id;
},
loadInclude(id) {
return normalizePath(id).startsWith(helperPrefix);
},
load(_id) {
const id = normalizePath(_id);
if (id === useModelHelperId) return use_model_default;
else if (id === withDefaultsHelperId) return with_defaults_default;
else if (importMap.get(id)) return importMap.get(id);
},
transformInclude(id) {
if (importMap.get(id)) return true;
return filter(id);
},
transform(code, id, opt) {
if (opt?.ssr) options.defineComponent.autoReturnFunction = true;
if (importMap.get(id)) return transformStyle(code, id, options);
return transformJsxMacros(code, id, importMap, options);
}
};
};
var raw_default = plugin;
//#endregion
export { raw_default as t };