@vue-jsx-vapor/macros
Version:
Macros for Vue JSX Vapor
88 lines (85 loc) • 2.6 kB
JavaScript
const require_core = require('./core-2PU6fbVE.cjs');
const require_options = require('./options-C2oSBItk.cjs');
//#region src/core/style.ts
let compileStyleAsync;
async function getCompileStyleAsync() {
if (compileStyleAsync) return compileStyleAsync;
const require$1 = require_core.getRequire();
try {
return compileStyleAsync = require$1 ? require$1("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 = require_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: [require_core.useModelHelperId, require_core.withDefaultsHelperId] } },
handler(id) {
return id;
}
},
load: {
filter: { id: { include: [require_core.useModelHelperId, require_core.withDefaultsHelperId] } },
handler(id) {
if (id === require_core.useModelHelperId) return require_core.use_model_default;
if (id === require_core.withDefaultsHelperId) return require_core.with_defaults_default;
}
},
transform: {
filter: { id: { include: options.include || /\.[cm]?[jt]sx$/ } },
handler(code, id, opt) {
if (opt?.ssr) options.defineComponent.autoReturnFunction = true;
return require_core.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
Object.defineProperty(exports, 'raw_default', {
enumerable: true,
get: function () {
return raw_default;
}
});