UNPKG

ngx-tabler-icons

Version:
1 lines 5.12 kB
{"version":3,"file":"ngx-tabler-icons.mjs","sources":["../../../projects/ngx-tabler-icons/src/lib/icons.token.ts","../../../projects/ngx-tabler-icons/src/lib/utils.ts","../../../projects/ngx-tabler-icons/src/lib/icon.ts","../../../projects/ngx-tabler-icons/src/lib/provide-icons.ts","../../../projects/ngx-tabler-icons/src/ngx-tabler-icons.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { IconRegistry } from './types';\n\nexport const TABLER_ICONS = new InjectionToken<IconRegistry[]>('TABLER_ICONS', {\n factory: () => [],\n});\n","export function upperCamelCase(value: string): string {\n return value\n .toLowerCase()\n .replace(/(?:^|[-_\\s])(\\w)/g, (_, firstLetter: string) =>\n firstLetter.toUpperCase()\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n untracked,\n} from '@angular/core';\nimport { TABLER_ICONS } from './icons.token';\nimport { IconExportName, IconName, IconRegistry } from './types';\nimport { upperCamelCase } from './utils';\n\n@Component({\n selector: 'i-tabler-icon',\n standalone: true,\n template: `<ng-content />`,\n host: {\n '[style.width.px]': 'size()',\n '[style.height.px]': 'size()',\n '[style.stroke-width]': 'isIconFilled() ? 0 : strokeWidth()',\n },\n styles: `\n :host {\n display: inline-block;\n line-height: 0;\n }\n\n :host svg {\n width: 100%;\n height: 100%;\n stroke-width: inherit;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ITablerIcon {\n readonly #elem = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #iconPacks = inject(TABLER_ICONS, { optional: true }) ?? [];\n\n name = input.required<IconName>();\n size = input<number>(24);\n strokeWidth = input<number>(1.5);\n\n readonly #icons = computed<IconRegistry>(() =>\n Object.assign({}, ...this.#iconPacks)\n );\n\n isIconFilled = computed(() => {\n return this.name().endsWith('-filled');\n });\n\n readonly #svg = computed(() => {\n const iconName = this.name();\n const iconExportName = `Icon${upperCamelCase(iconName)}` as IconExportName;\n return this.#icons()[iconExportName] ?? '';\n });\n\n readonly #renderSvg = effect(() => {\n const svg = this.#svg();\n\n untracked(() => {\n this.#elem.nativeElement.innerHTML = svg;\n });\n });\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { TABLER_ICONS } from './icons.token';\nimport { IconRegistry } from './types';\n\nexport function provideIcons<const T extends IconRegistry>(\n icons: T\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: TABLER_ICONS,\n useValue: icons,\n multi: true,\n },\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}