You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
909 B
28 lines
909 B
import type { Component } from 'svelte';
|
|
import type { IconCategory } from '$uix/eidos/components/icon/categories';
|
|
import BadgeCheck from '$uix/eidos/components/icon/lib/badge-check.svelte';
|
|
|
|
const fastIcons: Record<string, Component> = {
|
|
'badge-check': BadgeCheck
|
|
};
|
|
let categoriesPromise: Promise<IconCategory[]> | undefined;
|
|
let registryPromise:
|
|
| Promise<typeof import('./icon-registry')>
|
|
| undefined;
|
|
|
|
export async function loadIconByName(name: string): Promise<Component | undefined> {
|
|
const fastIcon = fastIcons[name];
|
|
if (fastIcon) return fastIcon;
|
|
|
|
registryPromise ??= import('./icon-registry');
|
|
const registry = await registryPromise;
|
|
return registry.loadRegisteredIcon(name);
|
|
}
|
|
|
|
export function loadIconCategories(): Promise<IconCategory[]> {
|
|
categoriesPromise ??= import('$uix/eidos/components/icon/categories').then(
|
|
(module) => module.iconCategories
|
|
);
|
|
return categoriesPromise;
|
|
}
|