2
0
mirror of https://github.com/iconify/iconify.git synced 2024-10-25 01:52:03 +00:00
iconify/packages/utils/src/loader/modern.ts
Ramy Melo 8f739807d5 chore: auto fixed prettier rules in src and tests
npx eslint --fix src/**/*.ts
npx eslint --fix tests/**/*.ts
2022-03-04 11:37:21 -05:00

42 lines
1.2 KiB
TypeScript

import type { IconifyJSON } from '@iconify/types';
import type { FullIconifyIcon } from '../icon';
import { iconToSVG } from '../svg/build';
import { getIconData } from '../icon-set/get-icon';
import { mergeIconProps } from './utils';
import createDebugger from 'debug';
import { defaults as DefaultIconCustomizations } from '../customisations';
import type { IconifyLoaderOptions } from './types';
const debug = createDebugger('@iconify-loader:icon');
export async function searchForIcon(
iconSet: IconifyJSON,
collection: string,
ids: string[],
options?: IconifyLoaderOptions
): Promise<string | undefined> {
let iconData: FullIconifyIcon | null;
const { customize } = options?.customizations ?? {};
for (const id of ids) {
iconData = getIconData(iconSet, id, true);
if (iconData) {
debug(`${collection}:${id}`);
const defaultCustomizations = { ...DefaultIconCustomizations };
const { attributes, body } = iconToSVG(
iconData,
typeof customize === 'function'
? customize(defaultCustomizations)
: defaultCustomizations
);
return await mergeIconProps(
// DON'T remove space on <svg >
`<svg >${body}</svg>`,
collection,
id,
options,
() => attributes
);
}
}
}