2024-07-12 12:14:09 +08:00
|
|
|
import { defineComponent, h } from 'vue';
|
2024-07-06 21:53:02 +08:00
|
|
|
|
2024-11-07 19:00:35 +08:00
|
|
|
import { addIcon, Icon, type IconifyIcon } from '@iconify/vue';
|
2024-07-06 21:53:02 +08:00
|
|
|
|
2024-07-07 11:36:32 +08:00
|
|
|
function createIconifyIcon(icon: string) {
|
2024-07-12 12:14:09 +08:00
|
|
|
return defineComponent({
|
2024-08-17 21:11:07 +08:00
|
|
|
name: `Icon-${icon}`,
|
2024-07-12 12:14:09 +08:00
|
|
|
setup(props, { attrs }) {
|
|
|
|
return () => h(Icon, { icon, ...props, ...attrs });
|
|
|
|
},
|
|
|
|
});
|
2024-07-06 21:53:02 +08:00
|
|
|
}
|
|
|
|
|
2024-11-06 16:21:31 +08:00
|
|
|
/**
|
|
|
|
* 创建离线图标
|
|
|
|
* @param icon 图标名称 建议与iconify的名称保持一致
|
|
|
|
* @param iconComponent 从@iconify/icon-xxx/xxx导入的图标
|
|
|
|
* @returns IconComponent
|
|
|
|
*/
|
|
|
|
function createIconifyOfflineIcon(icon: string, iconComponent: IconifyIcon) {
|
|
|
|
return defineComponent({
|
|
|
|
name: `Icon-${icon}`,
|
|
|
|
setup(props, { attrs }) {
|
2024-11-07 19:00:35 +08:00
|
|
|
addIcon(icon, iconComponent);
|
|
|
|
return () => h(Icon, { icon, ...props, ...attrs });
|
2024-11-06 16:21:31 +08:00
|
|
|
},
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
export { createIconifyIcon, createIconifyOfflineIcon };
|