UNPKG

@taiga-ui/core

Version:

Core library for creating Angular components and applications using Taiga UI

44 lines 6.13 kB
import { inject, InjectionToken } from '@angular/core'; import { TUI_ASSETS_PATH } from './assets-path'; import { TUI_ICON_REGISTRY } from './icons'; const ICON_MODE_PREFIXES = { font: '@font.', image: '@img.' }; export const TUI_ICON_RESOLVER = new InjectionToken(ngDevMode ? 'TUI_ICON_RESOLVER' : '', { factory: () => { const path = inject(TUI_ASSETS_PATH); // regex for @{any text}. used as a default fallback, returns path to svg from icon pack return (icon) => `${path}/${icon .replace(/@[a-zA-Z]+\./, '') .split('.') .join('/')}.svg`; }, }); /** * @deprecated use {@link TUI_ICON_RESOLVER} */ export const TUI_ICON_START_RESOLVER = TUI_ICON_RESOLVER; export function tuiGetIconMode(icon) { if (!icon) { return null; } if (icon.startsWith(ICON_MODE_PREFIXES.image)) { return 'image'; } return icon.startsWith(ICON_MODE_PREFIXES.font) ? 'font' : 'svg'; } export function tuiInjectIconResolver() { const icons = inject(TUI_ICON_REGISTRY); const resolver = inject(TUI_ICON_RESOLVER); return (icon) => { if (!icon || icon.includes('/')) { return icon; } if (tuiGetIconMode(icon) === 'font') { return icon.slice(ICON_MODE_PREFIXES.font.length); } return icons[icon] ?? resolver(icon); }; } export function tuiIconResolverProvider(useValue) { return { provide: TUI_ICON_RESOLVER, useValue }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvdG9rZW5zL2ljb24tcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBR3BFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRTFDLE1BQU0sa0JBQWtCLEdBQUcsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQVUsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FDL0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUNwQztJQUNJLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDVixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFckMsd0ZBQXdGO1FBQ3hGLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNaLEdBQUcsSUFBSSxJQUFJLElBQUk7YUFDVixPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQzthQUMzQixLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDN0IsQ0FBQztDQUNKLENBQ0osQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsaUJBQWlCLENBQUM7QUFFekQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFvQjtJQUMvQyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1AsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMzQyxPQUFPLE9BQU8sQ0FBQztLQUNsQjtJQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDckUsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUI7SUFDakMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFM0MsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1osSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxNQUFNLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyRDtRQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFFBQWtDO0lBQ3RFLE9BQU8sRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgdHlwZSBQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3R5cGUgVHVpU3RyaW5nSGFuZGxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5cbmltcG9ydCB7VFVJX0FTU0VUU19QQVRIfSBmcm9tICcuL2Fzc2V0cy1wYXRoJztcbmltcG9ydCB7VFVJX0lDT05fUkVHSVNUUll9IGZyb20gJy4vaWNvbnMnO1xuXG5jb25zdCBJQ09OX01PREVfUFJFRklYRVMgPSB7Zm9udDogJ0Bmb250LicsIGltYWdlOiAnQGltZy4nfSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFRVSV9JQ09OX1JFU09MVkVSID0gbmV3IEluamVjdGlvblRva2VuPFR1aVN0cmluZ0hhbmRsZXI8c3RyaW5nPj4oXG4gICAgbmdEZXZNb2RlID8gJ1RVSV9JQ09OX1JFU09MVkVSJyA6ICcnLFxuICAgIHtcbiAgICAgICAgZmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGluamVjdChUVUlfQVNTRVRTX1BBVEgpO1xuXG4gICAgICAgICAgICAvLyByZWdleCBmb3IgQHthbnkgdGV4dH0uIHVzZWQgYXMgYSBkZWZhdWx0IGZhbGxiYWNrLCByZXR1cm5zIHBhdGggdG8gc3ZnIGZyb20gaWNvbiBwYWNrXG4gICAgICAgICAgICByZXR1cm4gKGljb24pID0+XG4gICAgICAgICAgICAgICAgYCR7cGF0aH0vJHtpY29uXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9AW2EtekEtWl0rXFwuLywgJycpXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLicpXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcvJyl9LnN2Z2A7XG4gICAgICAgIH0sXG4gICAgfSxcbik7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBUVUlfSUNPTl9SRVNPTFZFUn1cbiAqL1xuZXhwb3J0IGNvbnN0IFRVSV9JQ09OX1NUQVJUX1JFU09MVkVSID0gVFVJX0lDT05fUkVTT0xWRVI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlHZXRJY29uTW9kZShpY29uPzogc3RyaW5nIHwgbnVsbCk6ICdmb250JyB8ICdpbWFnZScgfCAnc3ZnJyB8IG51bGwge1xuICAgIGlmICghaWNvbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaWNvbi5zdGFydHNXaXRoKElDT05fTU9ERV9QUkVGSVhFUy5pbWFnZSkpIHtcbiAgICAgICAgcmV0dXJuICdpbWFnZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGljb24uc3RhcnRzV2l0aChJQ09OX01PREVfUFJFRklYRVMuZm9udCkgPyAnZm9udCcgOiAnc3ZnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUluamVjdEljb25SZXNvbHZlcigpOiBUdWlTdHJpbmdIYW5kbGVyPHN0cmluZz4ge1xuICAgIGNvbnN0IGljb25zID0gaW5qZWN0KFRVSV9JQ09OX1JFR0lTVFJZKTtcbiAgICBjb25zdCByZXNvbHZlciA9IGluamVjdChUVUlfSUNPTl9SRVNPTFZFUik7XG5cbiAgICByZXR1cm4gKGljb24pID0+IHtcbiAgICAgICAgaWYgKCFpY29uIHx8IGljb24uaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICAgICAgcmV0dXJuIGljb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHVpR2V0SWNvbk1vZGUoaWNvbikgPT09ICdmb250Jykge1xuICAgICAgICAgICAgcmV0dXJuIGljb24uc2xpY2UoSUNPTl9NT0RFX1BSRUZJWEVTLmZvbnQubGVuZ3RoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpY29uc1tpY29uXSA/PyByZXNvbHZlcihpY29uKTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpSWNvblJlc29sdmVyUHJvdmlkZXIodXNlVmFsdWU6IFR1aVN0cmluZ0hhbmRsZXI8c3RyaW5nPik6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4ge3Byb3ZpZGU6IFRVSV9JQ09OX1JFU09MVkVSLCB1c2VWYWx1ZX07XG59XG4iXX0=