{"version":3,"file":"fundamental-ngx-core-icon.mjs","sources":["../../../../libs/core/icon/tokens.ts","../../../../libs/core/icon/icon.component.ts","../../../../libs/core/icon/icon.module.ts","../../../../libs/core/icon/fundamental-ngx-core-icon.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FD_ICON_COMPONENT = new InjectionToken('FdIconComponent');\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    ViewEncapsulation,\n    computed,\n    inject,\n    input,\n    model,\n    signal\n} from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { FD_ICON_COMPONENT } from './tokens';\n\nexport type IconFont = 'SAP-icons' | 'BusinessSuiteInAppSymbols' | 'SAP-icons-TNT';\n\nexport const FD_DEFAULT_ICON_FONT_FAMILY = 'SAP-icons';\n\nexport type IconColor =\n    | 'default'\n    | 'contrast'\n    | 'non-interactive'\n    | 'tile'\n    | 'marker'\n    | 'critical'\n    | 'negative'\n    | 'neutral'\n    | 'positive'\n    | 'information';\n\nexport type IconSize = 'sm' | 'md' | 'lg' | 'xl' | 'xxl';\n\nconst SAP_ICONS_PREFIX = 'sap-icon';\n\nexport const FD_ICON_FONT_FAMILY: Record<IconFont, string> = {\n    'SAP-icons': SAP_ICONS_PREFIX,\n    BusinessSuiteInAppSymbols: `${SAP_ICONS_PREFIX}-businessSuiteInAppSymbols`,\n    'SAP-icons-TNT': `${SAP_ICONS_PREFIX}-TNT`\n};\n\n/**\n * Helper function to build icon css class.\n * @param font Font family\n * @param glyph Icon\n * @param color Icon color\n * @param background Icon background color\n * @returns Computed css class string.\n */\nexport function fdBuildIconClass(\n    font: IconFont,\n    glyph: any,\n    color?: IconColor | null,\n    background?: IconColor | null,\n    size?: IconSize | null\n): string {\n    const fontFamily = FD_ICON_FONT_FAMILY[font];\n\n    const returnIconClass = [fontFamily, `${fontFamily}--${glyph}`];\n\n    if (color) {\n        returnIconClass.push(`${fontFamily}--color-${color}`);\n    }\n\n    if (background) {\n        returnIconClass.push(`${fontFamily}--background-${background}`);\n    }\n\n    if (size) {\n        returnIconClass.push(`${fontFamily}--${size}`);\n    }\n\n    return returnIconClass.join(' ');\n}\n\n/**\n * The component that represents an icon.\n *\n * ```html\n * <fd-icon font=\"SAP-icons-TNT\" glyph=\"exceptions\"></fd-icon>\n * ```\n */\n@Component({\n    selector: 'fd-icon',\n    template: ``,\n    styleUrl: './icon.component.scss',\n    providers: [\n        {\n            provide: FD_ICON_COMPONENT,\n            useExisting: IconComponent\n        }\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[attr.role]': 'computedRole()',\n        '[attr.aria-label]': 'ariaLabel()',\n        '[attr.aria-hidden]': 'effectiveAriaHidden()',\n        '[class.fd-list__navigation-item-icon]': '_navigationItemIcon()',\n        '[class]': 'cssClasses()'\n    }\n})\nexport class IconComponent implements HasElementRef {\n    /** The icon name to display. See the icon page for the list of icons\n     * here: https://sap.github.io/fundamental-ngx/icon\n     * */\n    readonly glyph = input<any>();\n\n    /**\n     * The icon font\n     * Options include: 'SAP-icons', 'BusinessSuiteInAppSymbols' and 'SAP-icons-TNT'\n     */\n    readonly font = input<IconFont>(FD_DEFAULT_ICON_FONT_FAMILY);\n\n    /** Icon color */\n    readonly color = input<IconColor | null>(null);\n\n    /** Icon color */\n    readonly background = input<IconColor | null>(null);\n\n    /** Icon size */\n    readonly size = input<IconSize | null>(null);\n\n    /** user's custom classes */\n    readonly class = input<string>();\n\n    /** Aria-label for Icon. */\n    readonly ariaLabel = input<string | null>();\n\n    /** Aria-hidden attribute for Icon element. */\n    readonly ariaHidden = model<boolean | null>();\n\n    /** @hidden */\n    readonly elementRef = inject(ElementRef<HTMLElement>);\n\n    /** Whether or not this icon is for a list navigation item. */\n    readonly _navigationItemIcon = signal(false);\n\n    /** @hidden Computed role — \"presentation\" for decorative, \"img\" when ariaLabel is set. */\n    protected readonly computedRole = computed(() => (this.ariaLabel() ? 'img' : 'presentation'));\n\n    /** @hidden Default aria-hidden to true for decorative icons (no ariaLabel). */\n    protected readonly effectiveAriaHidden = computed<boolean | null>(() => {\n        const explicit = this.ariaHidden();\n        if (explicit != null) {\n            return explicit;\n        }\n        return !this.ariaLabel() ? true : null;\n    });\n\n    /** @hidden Computed CSS classes */\n    protected readonly cssClasses = computed<string>(() => {\n        const returnClass = [this.class()];\n\n        if (!this.glyph()) {\n            return this.class() || '';\n        }\n\n        returnClass.push(this._fontIconClass());\n\n        return returnClass.join(' ');\n    });\n\n    /** @hidden */\n    private readonly _fontIconClass = computed<string>(() =>\n        fdBuildIconClass(this.font(), this.glyph(), this.color(), this.background(), this.size())\n    );\n}\n","import { NgModule } from '@angular/core';\n\nimport { IconComponent } from './icon.component';\n\n/**\n * @deprecated\n * Use direct import of `IconComponent`\n */\n@NgModule({\n    imports: [IconComponent],\n    exports: [IconComponent]\n})\nexport class IconModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}