{"version":3,"file":"eui-components-eui-icon.mjs","sources":["../../eui-icon/eui-icon-svg.component.ts","../../eui-icon/eui-icon-svg.component.html","../../eui-icon/index.ts","../../eui-icon/eui-components-eui-icon.ts"],"sourcesContent":["import {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n    HostBinding,\n    OnInit,\n    ViewEncapsulation,\n    OnChanges,\n    SimpleChanges,\n    AfterContentInit,\n    inject,\n    booleanAttribute,\n} from '@angular/core';\nimport { EUI_CONFIG_TOKEN } from '@eui/core';\nimport { EuiConfig } from '@eui/core';\n\n/**\n * @description\n * `eui-icon-svg` component for displaying scalable vector graphics from icon sets.\n * Supports multiple icon libraries, customizable sizing, colors, and transformations.\n * Icons can be loaded from configured asset paths or specified URLs.\n * Provides accessibility features including ARIA labels and role attributes.\n * Commonly used throughout the application for consistent iconography in buttons, menus, and UI elements.\n *\n * @usageNotes\n * ### Basic icon\n * ```html\n * <eui-icon-svg icon=\"check\" size=\"m\"></eui-icon-svg>\n * ```\n *\n * ### Icon with color\n * ```html\n * <eui-icon-svg \n *   icon=\"warning\" \n *   fillColor=\"warning\" \n *   size=\"l\"\n *   ariaLabel=\"Warning indicator\">\n * </eui-icon-svg>\n * ```\n *\n * ### Custom icon from URL\n * ```html\n * <eui-icon-svg \n *   [iconUrl]=\"'/assets/custom-icon.svg'\" \n *   size=\"xl\">\n * </eui-icon-svg>\n * ```\n *\n * ### Accessibility\n * - Set `ariaHidden=\"false\"` and provide `ariaLabel` for meaningful icons\n * - Decorative icons should keep `ariaHidden=\"true\"` (default)\n * - Use `focusable=\"true\"` only for interactive icon elements\n *\n * ### Notes\n * - Icon sets are configured via EUI_CONFIG_TOKEN\n * - Use colon notation for specific sets: `icon=\"check:material\"`\n * - Size tokens: 2xs, xs, s, m, l, xl, 2xl, 3xl, 4xl\n * - Apply `transform` for rotations (e.g., \"rotate-90\", \"flip-horizontal\")\n */\n@Component({\n    selector: 'eui-icon-svg, span[euiIconSvg], i[euiIconSvg]',\n    templateUrl: './eui-icon-svg.component.html',\n    styleUrls: ['./styles/_index.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n})\nexport class EuiIconSvgComponent implements AfterContentInit, OnChanges, OnInit {\n    @HostBinding('attr.role') ariaRole = 'img';\n\n    /**\n     * Name of the icon to display, optionally including the icon set using 'iconName:setName' format.\n     * When format includes colon separator, automatically splits into icon and set properties.\n     * Required for icon display unless iconUrl is provided.\n     */\n    @Input() icon: string;\n    /**\n     * Fill color for the SVG icon using EUI color token names.\n     * Applies CSS custom property in format '--eui-c-{fillColor}'.\n     * Affects both fill and color properties for comprehensive icon styling.\n     */\n    @Input() fillColor: string;\n    /**\n     * Icon set library to load the icon from.\n     * Determines the source directory for icon SVG files.\n     * @default 'eui'\n     */\n    @Input() set = 'eui';\n    /**\n     * Size variant for the icon using predefined scale or custom value.\n     * Predefined sizes: '2xs', 'xs', 's', 'm', 'l', 'xl', '2xl', '3xl', '4xl'.\n     * Custom string values can be provided for non-standard sizing.\n     * @default 'm'\n     */\n    @Input() size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl' | '4xl' | string = 'm';\n    /**\n     * Custom inline CSS styles applied directly to the icon element.\n     * Allows for additional styling beyond component properties.\n     * @default ''\n     */\n    @Input() style = '';\n    /**\n     * Direct URL to an SVG icon file, bypassing the icon set resolution.\n     * Useful for loading custom or external icons not in configured icon sets.\n     */\n    @Input() iconUrl: string;\n    /**\n     * CSS transform class modifier applied to the icon.\n     * Common values include rotation or flip transformations.\n     * Applied as 'eui-icon-svg--{transform}' class.\n     * @default ''\n     */\n    @Input() transform = '';\n\n    @HostBinding('class')\n    public get cssClasses(): string {\n        return [\n            // Always refer to the baseStatesDirective\n            'eui-icon-svg',\n            `eui-icon-svg--size-${this.size}`,\n            this.transform ? `eui-icon-svg--${this.transform}` : '',\n\n            // own cmp state => reflected with the scss states\n            this.euiStart ? 'eui-icon-svg--start' : '',\n            this.euiEnd ? 'eui-icon-svg--end' : '',\n            this.isInputIcon ? 'eui-icon-svg--input-icon': '',\n            this.isLoading ? 'eui-icon-svg--loading': '',\n        ]\n            .join(' ')\n            .trim();\n    }\n\n    /**\n     * Accessible label for screen readers describing the icon's purpose.\n     * Provides semantic meaning when icon conveys information beyond decoration.\n     * @default 'Icon'\n     */\n    @HostBinding('attr.aria-label')\n    @Input() ariaLabel: string;\n\n    public iconName: string;\n    public assetsBaseUrl = 'assets';\n    public iconStyle: string;\n\n    /**\n     * Hides the icon from assistive technologies when purely decorative.\n     * Set to false when icon conveys meaningful information requiring announcement.\n     * @default true\n     */\n    @HostBinding() @Input({ transform: booleanAttribute }) ariaHidden = true;\n    \n    /**\n     * Makes the icon focusable via keyboard navigation.\n     * Enables tab-stop behavior for interactive icon elements.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) focusable = false;\n    /**\n     * Displays a loading animation or state on the icon.\n     * Applies 'eui-icon-svg--loading' class for loading-specific styling.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isLoading = false;\n    /**\n     * Applies styling specific to icons used within input fields.\n     * Adjusts positioning and spacing for input-embedded icons.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isInputIcon = false;\n    /**\n     * Positions the icon at the start (left in LTR, right in RTL) of its container.\n     * Commonly used for leading icons in buttons or list items.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiStart = false;\n    /**\n     * Positions the icon at the end (right in LTR, left in RTL) of its container.\n     * Commonly used for trailing icons in buttons or list items.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiEnd = false;\n    private config = inject<EuiConfig>(EUI_CONFIG_TOKEN, { optional: true })!;\n\n    ngOnInit(): void {\n        const assetsBaseUrl = this.config?.appConfig?.global?.eui?.assetsBaseUrl;\n        if (assetsBaseUrl) {\n            this.assetsBaseUrl = this.config.appConfig.global.eui.assetsBaseUrl;\n        }\n        if (!this.size || this.size === '') {\n            this.size = 'm';\n        }\n    }\n\n    ngOnChanges(c: SimpleChanges): void {\n        if (c && c.set) {\n            if (c.set.currentValue !== c.set.previousValue) {\n                this._setIconAndSet();\n            }\n        }\n\n        if (c && c.icon) {\n            if (c.icon.currentValue !== c.icon.previousValue) {\n                this._setIconAndSet();\n            }\n        }\n\n        if (c && c.size) {\n            if (c.size.currentValue !== c.size.previousValue) {\n                this._setStyle();\n            }\n        }\n        if (c && c.fillColor) {\n            if (c.fillColor.currentValue !== c.fillColor.previousValue) {\n                this._setStyle();\n            }\n        }\n    }\n\n    ngAfterContentInit(): void {\n        this._setIconAndSet();\n        this._setStyle();\n    }\n\n    private _setIconAndSet(): void {\n        if (this.icon && this.icon.indexOf(':') > -1) {\n            const iconSet = this.icon.split(':');\n            this.icon = iconSet[0];\n            this.set = iconSet[1];\n        }\n\n        if (!this.set || this.set === '') {\n            this.set = 'eui';\n        } else {\n            this.iconName = this.icon;\n        }\n\n        if (this.set === 'ion-filled' || this.set === 'ion-outline') {\n            if (this.set === 'ion-filled') {\n                this.iconName = `${this.icon}-filled`;\n            }\n            if (this.set === 'ion-outline') {\n                this.iconName = `${this.icon}-outline`;\n            }            \n        }\n    }\n\n    private _setStyle(): void {\n        let fill = '';\n        if (this.fillColor) {\n            fill = `fill: var(--eui-c-${this.fillColor}); color: var(--eui-c-${this.fillColor});`;\n        }\n        // const height = `height: var(--eui-is-${this.size});`;\n        // const width = `width: var(--eui-is-${this.size});`;\n        // this.iconStyle = `${fill} ${height} ${width}`;\n        this.iconStyle = `${fill}`;\n    }\n}\n","@if (icon && !iconUrl && !isLoading) {\n    <svg\n        class=\"eui-sprite-{{icon}}\"\n        [class.eui-icon-svg--loading]=\"isLoading\"\n        [attr.aria-hidden]=\"ariaRole === 'button' ? true : ariaHidden\"\n        [attr.role]=\"ariaRole === 'button' ? null : 'img'\"\n        [attr.focusable]=\"focusable\"\n        attr.style=\"{{iconStyle}}\">\n        <use [attr.href]=\"assetsBaseUrl + '/icons/sprites/' + set + '.svg#' + iconName\"></use>\n    </svg>\n    <ng-content />\n}\n\n@if (iconUrl) {\n    <svg class=\"eui-icon-svg\"\n         attr.style=\"{{iconStyle}} {{style}}\"\n         [attr.aria-hidden]=\"ariaHidden\"\n         [attr.role]=\"'img'\"\n         [attr.focusable]=\"focusable\">\n        <image [attr.href]=\"iconUrl\" [class]=\"'eui-icon-svg'\" attr.style=\"{{iconStyle}} {{style}}\"></image>\n    </svg>\n}\n","import { EuiIconSvgComponent } from './eui-icon-svg.component';\n\nexport * from './eui-icon-svg.component';\n\nexport const EUI_ICON = [\n    EuiIconSvgComponent,\n] as const;\n\n// export { EuiIconSvgComponent as EuiIcon } from './eui-icon-svg.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}