@varlet/import-resolver
Version:
varlet import resolver for unplugin-vue-components and unplugin-auto-import
48 lines (47 loc) • 1.16 kB
JavaScript
import { kebabCase } from "@varlet/shared";
//#region src/index.ts
const varFunctions = [
"ImagePreview",
"Snackbar",
"Picker",
"ActionSheet",
"Dialog",
"Locale",
"StyleProvider",
"LoadingBar"
];
const varDirectives = [
"Ripple",
"Lazy",
"Hover"
];
function getResolved(name, options) {
const { importStyle = true, autoImport = false } = options;
const sideEffects = [];
if (importStyle) sideEffects.push(`@varlet/ui/es/${kebabCase(name)}/style/index.mjs`);
return {
from: "@varlet/ui",
name: autoImport ? name : `_${name}Component`,
sideEffects
};
}
function VarletImportResolver(options = {}) {
return [{
type: "component",
resolve: (name) => {
const { autoImport = false } = options;
if (autoImport && varFunctions.includes(name)) return getResolved(name, options);
if (name.startsWith("Var")) return getResolved(name.slice(3), options);
}
}, {
type: "directive",
resolve: (name) => {
const { directives = true } = options;
if (!directives) return;
if (!varDirectives.includes(name)) return;
return getResolved(name, options);
}
}];
}
//#endregion
export { VarletImportResolver, getResolved };