mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-06 02:09:12 +08:00
50 lines
1.3 KiB
Text
50 lines
1.3 KiB
Text
import { iconDefaults } from '../icon/index.mjs';
|
|
import { getIconData } from './get-icon.mjs';
|
|
import '../icon/merge.mjs';
|
|
|
|
function isVariation(item) {
|
|
for (const key in iconDefaults) {
|
|
if (item[key] !== void 0) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
function parseIconSet(data, callback, options) {
|
|
options = options || {};
|
|
const names = [];
|
|
if (typeof data !== "object" || typeof data.icons !== "object") {
|
|
return names;
|
|
}
|
|
if (data.not_found instanceof Array) {
|
|
data.not_found.forEach((name) => {
|
|
callback(name, null);
|
|
names.push(name);
|
|
});
|
|
}
|
|
const icons = data.icons;
|
|
Object.keys(icons).forEach((name) => {
|
|
const iconData = getIconData(data, name, true);
|
|
if (iconData) {
|
|
callback(name, iconData);
|
|
names.push(name);
|
|
}
|
|
});
|
|
const parseAliases = options.aliases || "all";
|
|
if (parseAliases !== "none" && typeof data.aliases === "object") {
|
|
const aliases = data.aliases;
|
|
Object.keys(aliases).forEach((name) => {
|
|
if (parseAliases === "variations" && isVariation(aliases[name])) {
|
|
return;
|
|
}
|
|
const iconData = getIconData(data, name, true);
|
|
if (iconData) {
|
|
callback(name, iconData);
|
|
names.push(name);
|
|
}
|
|
});
|
|
}
|
|
return names;
|
|
}
|
|
|
|
export { isVariation, parseIconSet };
|