75 lines
1.9 KiB
Plaintext
75 lines
1.9 KiB
Plaintext
|
import { loadCollectionFromFS } from './fs.mjs';
|
||
|
import { searchForIcon } from './modern.mjs';
|
||
|
import { warnOnce } from './warn.mjs';
|
||
|
import { getPossibleIconNames } from './utils.mjs';
|
||
|
import 'fs';
|
||
|
import 'local-pkg';
|
||
|
import './install-pkg.mjs';
|
||
|
import '@antfu/install-pkg';
|
||
|
import '@antfu/utils';
|
||
|
import 'kolorist';
|
||
|
import 'mlly';
|
||
|
import '../svg/build.mjs';
|
||
|
import '../icon/defaults.mjs';
|
||
|
import '../customisations/defaults.mjs';
|
||
|
import '../svg/size.mjs';
|
||
|
import '../svg/defs.mjs';
|
||
|
import '../icon-set/get-icon.mjs';
|
||
|
import '../icon/merge.mjs';
|
||
|
import '../icon/transformations.mjs';
|
||
|
import '../icon-set/tree.mjs';
|
||
|
import 'debug';
|
||
|
|
||
|
function createExternalPackageIconLoader(packageName, autoInstall = false, cwd) {
|
||
|
let scope;
|
||
|
let collection;
|
||
|
const collections = {};
|
||
|
if (typeof packageName === "string") {
|
||
|
if (packageName.length === 0) {
|
||
|
warnOnce(`invalid package name, it is empty`);
|
||
|
return collections;
|
||
|
}
|
||
|
if (packageName[0] === "@") {
|
||
|
if (packageName.indexOf("/") === -1) {
|
||
|
warnOnce(`invalid scoped package name "${packageName}"`);
|
||
|
return collections;
|
||
|
}
|
||
|
[scope, collection] = packageName.split("/");
|
||
|
} else {
|
||
|
scope = "";
|
||
|
collection = packageName;
|
||
|
}
|
||
|
} else {
|
||
|
[scope, collection] = packageName;
|
||
|
}
|
||
|
collections[collection] = createCustomIconLoader(
|
||
|
scope,
|
||
|
collection,
|
||
|
autoInstall,
|
||
|
cwd
|
||
|
);
|
||
|
return collections;
|
||
|
}
|
||
|
function createCustomIconLoader(scope, collection, autoInstall, cwd) {
|
||
|
const iconSetPromise = loadCollectionFromFS(
|
||
|
collection,
|
||
|
autoInstall,
|
||
|
scope,
|
||
|
cwd
|
||
|
);
|
||
|
return async (icon) => {
|
||
|
const iconSet = await iconSetPromise;
|
||
|
let result;
|
||
|
if (iconSet) {
|
||
|
result = await searchForIcon(
|
||
|
iconSet,
|
||
|
collection,
|
||
|
getPossibleIconNames(icon)
|
||
|
);
|
||
|
}
|
||
|
return result;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export { createExternalPackageIconLoader };
|