IconSet 类
IconSet 类在 Iconify Tools 中表示一个图标集。
使用方法
要创建实例,请使用以下代码导入现有的 IconifyJSON 数据:
ts
import { IconSet } from '@iconify/tools';
const iconSet = new IconSet({
prefix: 'codicon',
icons: {
'add': {
body: '<g fill="currentColor"><path d="M14 7v1H8v6H7V8H1V7h6V1h1v6h6z"/></g>',
},
'chrome-maximize': {
body: '<g fill="currentColor"><path d="M3 3v10h10V3H3zm9 9H4V4h8v8z"/></g>',
},
'chrome-minimize': {
body: '<g fill="currentColor"><path d="M14 8v1H3V8h11z"/></g>',
},
},
});或使用以下代码创建空的图标集:
ts
import { blankIconSet } from '@iconify/tools';
const iconSet = blankIconSet('some-prefix');构造函数不会对图标集进行验证。 如果你不确定数据来源, 则需要使用 Iconify Utils 中的 validateIconSet() 对其进行验证。
函数
处理图标:
- list() 列出所有图标。
- forEach() 为所有图标运行回调函数。支持异步回调。
- exists(name) 检查图标是否存在。
- count() 统计图标集中的图标数量。
- remove(name) 移除图标。
- rename(oldName, newName) 重命名图标。
- setItem(name, item) 在 entries 属性中添加/更新条目。
- setIcon(name, icon) 使用 IconifyIcon 数据添加/更新图标。
- setVariation(name, parent, props) 为图标创建变体(带自定义设置的别名)。
- setAlias(name, parent) 为图标创建别名。
- getTree() 返回每个图标的父图标列表,如果图标无效则返回 null。
- entries 属性包含所有图标和别名的数据。你可以直接访问它,但大多数更改可以使用上述列出的函数完成。
导入/导出图标集的函数:
- prefix 属性包含图标集前缀,在导出图标集时使用。要更改前缀,直接写入该属性即可。
- resolve(name) 返回图标的 ResolvedIconifyIcon 对象,失败时返回 null。
- load(data) 从 IconifyJSON 类型加载数据。这与创建新的 IconSet 实例相同,但它会修改当前实例而不是创建新实例。
- export() 将图标集导出为 IconifyJSON。
- toSVG(name) 返回图标的 SVG 实例,失败时返回 null。
- fromSVG(name, svg) 从 SVG 实例添加/更新图标。
- toString(name) 将图标导出为 SVG 字符串,失败时返回 null。
处理元数据的函数:
- info 属性包含 IconifyInfo 类型的图标集信息(如果信息不可用则为 null)。要更新信息,直接写入该属性即可。
- chars() 返回字符映射,其中键为字符(十六进制代码),值为图标名称。
- toggleCharacter(name, char, add) 为图标添加或移除字符。
- listCategory(category) 列出类别中的所有图标,不包括别名和隐藏的图标。
- toggleCategory(name, category, add) 为图标添加或移除类别。
- categories 属性包含类别的数据。如果需要,你可以直接访问它。
- checkTheme() 检查前缀或后缀,返回属于每个主题的图标列表以及不属于任何主题的图标列表。
- suffixes 和 prefixes 属性包含前缀和后缀。直接访问这些属性以更新主题。
其他:
- mergeIconSets() 合并两个 IconSet 实例,并返回新实例。此函数旨在用于更新图标集。
处理图标
所有图标优化和解析函数都作用于 SVG 实例。如何将这些函数应用于整个图标集?
可以通过使用 forEach() 方法遍历图标来实现:
ts
iconSet.forEach(async (name, type) => {
if (type !== 'icon') {
// Ignore aliases and variations: they inherit content from parent icon, so there is nothing to change
return;
}
const svg = iconSet.toSVG(name);
if (svg) {
// Change colors to red
parseColors(svg, {
defaultColor: 'red',
callback: (attr, colorStr, color) => {
return !color || isEmptyColor(color) ? colorStr : 'red';
},
});
// Update icon from SVG instance
iconSet.fromSVG(name, svg);
}
});
// The rest of code here