{"version":3,"file":"icon.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  AfterViewChecked,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  ErrorHandler,\n  inject,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation,\n  HostAttributeToken,\n  DOCUMENT,\n} from '@angular/core';\nimport {ThemePalette} from '../core';\nimport {Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {MatIconRegistry} from './icon-registry';\n\n/** Default options for `mat-icon`.  */\nexport interface MatIconDefaultOptions {\n  /**\n   * Theme color of the icon. This API is supported in M2 themes only, it\n   * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/icon/styling.\n   *\n   * For information on applying color variants in M3, see\n   * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n   */\n  color?: ThemePalette;\n  /** Font set that the icon is a part of. */\n  fontSet?: string;\n}\n\n/** Injection token to be used to override the default options for `mat-icon`. */\nexport const MAT_ICON_DEFAULT_OPTIONS = new InjectionToken<MatIconDefaultOptions>(\n  'MAT_ICON_DEFAULT_OPTIONS',\n);\n\n/**\n * Injection token used to provide the current location to `MatIcon`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_ICON_LOCATION = new InjectionToken<MatIconLocation>('mat-icon-location', {\n  providedIn: 'root',\n  factory: () => {\n    const _document = inject(DOCUMENT);\n    const _location = _document ? _document.location : null;\n\n    return {\n      // Note that this needs to be a function, rather than a property, because Angular\n      // will only resolve it once, but we want the current path on each call.\n      getPathname: () => (_location ? _location.pathname + _location.search : ''),\n    };\n  },\n});\n\n/**\n * Stubbed out location for `MatIcon`.\n * @docs-private\n */\nexport interface MatIconLocation {\n  getPathname: () => string;\n}\n\n/** SVG attributes that accept a FuncIRI (e.g. `url(<something>)`). */\nconst funcIriAttributes = [\n  'clip-path',\n  'color-profile',\n  'src',\n  'cursor',\n  'fill',\n  'filter',\n  'marker',\n  'marker-start',\n  'marker-mid',\n  'marker-end',\n  'mask',\n  'stroke',\n];\n\n/** Selector that can be used to find all elements that are using a `FuncIRI`. */\nconst funcIriAttributeSelector = funcIriAttributes.map(attr => `[${attr}]`).join(', ');\n\n/** Regex that can be used to extract the id out of a FuncIRI. */\nconst funcIriPattern = /^url\\(['\"]?#(.*?)['\"]?\\)$/;\n\n/**\n * Component to display an icon. It can be used in the following ways:\n *\n * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the\n *   addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of\n *   MatIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format\n *   \"[namespace]:[name]\", if not the value will be the name of an icon in the default namespace.\n *   Examples:\n *     `<mat-icon svgIcon=\"left-arrow\"></mat-icon>\n *     <mat-icon svgIcon=\"animals:cat\"></mat-icon>`\n *\n * - Use a font ligature as an icon by putting the ligature text in the `fontIcon` attribute or the\n *   content of the `<mat-icon>` component. If you register a custom font class, don't forget to also\n *   include the special class `mat-ligature-font`. It is recommended to use the attribute alternative\n *   to prevent the ligature text to be selectable and to appear in search engine results.\n *   By default, the Material icons font is used as described at\n *   http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an\n *   alternate font by setting the fontSet input to either the CSS class to apply to use the\n *   desired font, or to an alias previously registered with MatIconRegistry.registerFontClassAlias.\n *   Examples:\n *     `<mat-icon fontIcon=\"home\"></mat-icon>\n *     <mat-icon>home</mat-icon>\n *     <mat-icon fontSet=\"myfont\" fontIcon=\"sun\"></mat-icon>\n *     <mat-icon fontSet=\"myfont\">sun</mat-icon>`\n *\n * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the\n *   font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a\n *   CSS class which causes the glyph to be displayed via a :before selector, as in\n *   https://fontawesome-v4.github.io/examples/\n *   Example:\n *     `<mat-icon fontSet=\"fa\" fontIcon=\"alarm\"></mat-icon>`\n */\n@Component({\n  template: '<ng-content></ng-content>',\n  selector: 'mat-icon',\n  exportAs: 'matIcon',\n  styleUrl: 'icon.css',\n  host: {\n    'role': 'img',\n    'class': 'mat-icon notranslate',\n    '[class]': 'color ? \"mat-\" + color : \"\"',\n    '[attr.data-mat-icon-type]': '_usingFontIcon() ? \"font\" : \"svg\"',\n    '[attr.data-mat-icon-name]': '_svgName || fontIcon',\n    '[attr.data-mat-icon-namespace]': '_svgNamespace || fontSet',\n    '[attr.fontIcon]': '_usingFontIcon() ? fontIcon : null',\n    '[class.mat-icon-inline]': 'inline',\n    '[class.mat-icon-no-color]': 'color !== \"primary\" && color !== \"accent\" && color !== \"warn\"',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatIcon implements OnInit, AfterViewChecked, OnDestroy {\n  readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _iconRegistry = inject(MatIconRegistry);\n  private _location = inject<MatIconLocation>(MAT_ICON_LOCATION);\n  private readonly _errorHandler = inject(ErrorHandler);\n  private _defaultColor: ThemePalette;\n\n  /**\n   * Theme color of the icon. This API is supported in M2 themes only, it\n   * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/icon/styling.\n   *\n   * For information on applying color variants in M3, see\n   * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n   */\n  @Input()\n  get color() {\n    return this._color || this._defaultColor;\n  }\n  set color(value: string | null | undefined) {\n    this._color = value;\n  }\n  private _color: string | null | undefined;\n\n  /**\n   * Whether the icon should be inlined, automatically sizing the icon to match the font size of\n   * the element the icon is contained in.\n   */\n  @Input({transform: booleanAttribute})\n  inline: boolean = false;\n\n  /** Name of the icon in the SVG icon set. */\n  @Input()\n  get svgIcon(): string {\n    return this._svgIcon;\n  }\n  set svgIcon(value: string) {\n    if (value !== this._svgIcon) {\n      if (value) {\n        this._updateSvgIcon(value);\n      } else if (this._svgIcon) {\n        this._clearSvgElement();\n      }\n      this._svgIcon = value;\n    }\n  }\n  private _svgIcon: string;\n\n  /** Font set that the icon is a part of. */\n  @Input()\n  get fontSet(): string {\n    return this._fontSet;\n  }\n  set fontSet(value: string) {\n    const newValue = this._cleanupFontValue(value);\n\n    if (newValue !== this._fontSet) {\n      this._fontSet = newValue;\n      this._updateFontIconClasses();\n    }\n  }\n  private _fontSet: string;\n\n  /** Name of an icon within a font set. */\n  @Input()\n  get fontIcon(): string {\n    return this._fontIcon;\n  }\n  set fontIcon(value: string) {\n    const newValue = this._cleanupFontValue(value);\n\n    if (newValue !== this._fontIcon) {\n      this._fontIcon = newValue;\n      this._updateFontIconClasses();\n    }\n  }\n  private _fontIcon: string;\n\n  private _previousFontSetClass: string[] = [];\n  private _previousFontIconClass: string;\n\n  _svgName: string | null;\n  _svgNamespace: string | null;\n\n  /** Keeps track of the current page path. */\n  private _previousPath?: string;\n\n  /** Keeps track of the elements and attributes that we've prefixed with the current path. */\n  private _elementsWithExternalReferences?: Map<Element, {name: string; value: string}[]>;\n\n  /** Subscription to the current in-progress SVG icon request. */\n  private _currentIconFetch = Subscription.EMPTY;\n\n  constructor(...args: unknown[]);\n\n  constructor() {\n    const ariaHidden = inject(new HostAttributeToken('aria-hidden'), {optional: true});\n    const defaults = inject<MatIconDefaultOptions>(MAT_ICON_DEFAULT_OPTIONS, {optional: true});\n\n    if (defaults) {\n      if (defaults.color) {\n        this.color = this._defaultColor = defaults.color;\n      }\n\n      if (defaults.fontSet) {\n        this.fontSet = defaults.fontSet;\n      }\n    }\n\n    // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n    // the right thing to do for the majority of icon use-cases.\n    if (!ariaHidden) {\n      this._elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n    }\n  }\n\n  /**\n   * Splits an svgIcon binding value into its icon set and icon name components.\n   * Returns a 2-element array of [(icon set), (icon name)].\n   * The separator for the two fields is ':'. If there is no separator, an empty\n   * string is returned for the icon set and the entire value is returned for\n   * the icon name. If the argument is falsy, returns an array of two empty strings.\n   * Throws an error if the name contains two or more ':' separators.\n   * Examples:\n   *   `'social:cake' -> ['social', 'cake']\n   *   'penguin' -> ['', 'penguin']\n   *   null -> ['', '']\n   *   'a:b:c' -> (throws Error)`\n   */\n  private _splitIconName(iconName: string): [string, string] {\n    if (!iconName) {\n      return ['', ''];\n    }\n    const parts = iconName.split(':');\n    switch (parts.length) {\n      case 1:\n        return ['', parts[0]]; // Use default namespace.\n      case 2:\n        return <[string, string]>parts;\n      default:\n        throw Error(`Invalid icon name: \"${iconName}\"`); // TODO: add an ngDevMode check\n    }\n  }\n\n  ngOnInit() {\n    // Update font classes because ngOnChanges won't be called if none of the inputs are present,\n    // e.g. <mat-icon>arrow</mat-icon> In this case we need to add a CSS class for the default font.\n    this._updateFontIconClasses();\n  }\n\n  ngAfterViewChecked() {\n    const cachedElements = this._elementsWithExternalReferences;\n\n    if (cachedElements && cachedElements.size) {\n      const newPath = this._location.getPathname();\n\n      // We need to check whether the URL has changed on each change detection since\n      // the browser doesn't have an API that will let us react on link clicks and\n      // we can't depend on the Angular router. The references need to be updated,\n      // because while most browsers don't care whether the URL is correct after\n      // the first render, Safari will break if the user navigates to a different\n      // page and the SVG isn't re-rendered.\n      if (newPath !== this._previousPath) {\n        this._previousPath = newPath;\n        this._prependPathToReferences(newPath);\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._currentIconFetch.unsubscribe();\n\n    if (this._elementsWithExternalReferences) {\n      this._elementsWithExternalReferences.clear();\n    }\n  }\n\n  _usingFontIcon(): boolean {\n    return !this.svgIcon;\n  }\n\n  private _setSvgElement(svg: SVGElement) {\n    this._clearSvgElement();\n\n    // Note: we do this fix here, rather than the icon registry, because the\n    // references have to point to the URL at the time that the icon was created.\n    const path = this._location.getPathname();\n    this._previousPath = path;\n    this._cacheChildrenWithExternalReferences(svg);\n    this._prependPathToReferences(path);\n    this._elementRef.nativeElement.appendChild(svg);\n  }\n\n  private _clearSvgElement() {\n    const layoutElement: HTMLElement = this._elementRef.nativeElement;\n    let childCount = layoutElement.childNodes.length;\n\n    if (this._elementsWithExternalReferences) {\n      this._elementsWithExternalReferences.clear();\n    }\n\n    // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n    // we can't use innerHTML, because IE will throw if the element has a data binding.\n    while (childCount--) {\n      const child = layoutElement.childNodes[childCount];\n\n      // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n      // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n      if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n        child.remove();\n      }\n    }\n  }\n\n  private _updateFontIconClasses() {\n    if (!this._usingFontIcon()) {\n      return;\n    }\n\n    const elem: HTMLElement = this._elementRef.nativeElement;\n    const fontSetClasses = (\n      this.fontSet\n        ? this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/)\n        : this._iconRegistry.getDefaultFontSetClass()\n    ).filter(className => className.length > 0);\n\n    this._previousFontSetClass.forEach(className => elem.classList.remove(className));\n    fontSetClasses.forEach(className => elem.classList.add(className));\n    this._previousFontSetClass = fontSetClasses;\n\n    if (\n      this.fontIcon !== this._previousFontIconClass &&\n      !fontSetClasses.includes('mat-ligature-font')\n    ) {\n      if (this._previousFontIconClass) {\n        elem.classList.remove(this._previousFontIconClass);\n      }\n      if (this.fontIcon) {\n        elem.classList.add(this.fontIcon);\n      }\n      this._previousFontIconClass = this.fontIcon;\n    }\n  }\n\n  /**\n   * Cleans up a value to be used as a fontIcon or fontSet.\n   * Since the value ends up being assigned as a CSS class, we\n   * have to trim the value and omit space-separated values.\n   */\n  private _cleanupFontValue(value: string) {\n    return typeof value === 'string' ? value.trim().split(' ')[0] : value;\n  }\n\n  /**\n   * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI`\n   * reference. This is required because WebKit browsers require references to be prefixed with\n   * the current path, if the page has a `base` tag.\n   */\n  private _prependPathToReferences(path: string) {\n    const elements = this._elementsWithExternalReferences;\n\n    if (elements) {\n      elements.forEach((attrs, element) => {\n        attrs.forEach(attr => {\n          element.setAttribute(attr.name, `url('${path}#${attr.value}')`);\n        });\n      });\n    }\n  }\n\n  /**\n   * Caches the children of an SVG element that have `url()`\n   * references that we need to prefix with the current path.\n   */\n  private _cacheChildrenWithExternalReferences(element: SVGElement) {\n    const elementsWithFuncIri = element.querySelectorAll(funcIriAttributeSelector);\n    const elements = (this._elementsWithExternalReferences =\n      this._elementsWithExternalReferences || new Map());\n\n    for (let i = 0; i < elementsWithFuncIri.length; i++) {\n      funcIriAttributes.forEach(attr => {\n        const elementWithReference = elementsWithFuncIri[i];\n        const value = elementWithReference.getAttribute(attr);\n        const match = value ? value.match(funcIriPattern) : null;\n\n        if (match) {\n          let attributes = elements.get(elementWithReference);\n\n          if (!attributes) {\n            attributes = [];\n            elements.set(elementWithReference, attributes);\n          }\n\n          attributes!.push({name: attr, value: match[1]});\n        }\n      });\n    }\n  }\n\n  /** Sets a new SVG icon with a particular name. */\n  private _updateSvgIcon(rawName: string | undefined) {\n    this._svgNamespace = null;\n    this._svgName = null;\n    this._currentIconFetch.unsubscribe();\n\n    if (rawName) {\n      const [namespace, iconName] = this._splitIconName(rawName);\n\n      if (namespace) {\n        this._svgNamespace = namespace;\n      }\n\n      if (iconName) {\n        this._svgName = iconName;\n      }\n\n      this._currentIconFetch = this._iconRegistry\n        .getNamedSvgIcon(iconName, namespace)\n        .pipe(take(1))\n        .subscribe(\n          svg => this._setSvgElement(svg),\n          (err: Error) => {\n            const errorMessage = `Error retrieving icon ${namespace}:${iconName}! ${err.message}`;\n            this._errorHandler.handleError(new Error(errorMessage));\n          },\n        );\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatIcon} from './icon';\n\n@NgModule({\n  imports: [MatIcon],\n  exports: [MatIcon, BidiModule],\n})\nexport class MatIconModule {}\n"],"names":["MAT_ICON_DEFAULT_OPTIONS","InjectionToken","MAT_ICON_LOCATION","providedIn","factory","_document","inject","DOCUMENT","_location","location","getPathname","pathname","search","funcIriAttributes","funcIriAttributeSelector","map","attr","join","funcIriPattern","MatIcon","_elementRef","ElementRef","_iconRegistry","MatIconRegistry","_errorHandler","ErrorHandler","_defaultColor","color","_color","value","inline","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","newValue","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_previousFontSetClass","_previousFontIconClass","_svgName","_svgNamespace","_previousPath","_elementsWithExternalReferences","_currentIconFetch","Subscription","EMPTY","constructor","ariaHidden","HostAttributeToken","optional","defaults","nativeElement","setAttribute","_splitIconName","iconName","parts","split","length","Error","ngOnInit","ngAfterViewChecked","cachedElements","size","newPath","_prependPathToReferences","ngOnDestroy","unsubscribe","clear","_usingFontIcon","_setSvgElement","svg","path","_cacheChildrenWithExternalReferences","appendChild","layoutElement","childCount","childNodes","child","nodeType","nodeName","toLowerCase","remove","elem","fontSetClasses","classNameForFontAlias","getDefaultFontSetClass","filter","className","forEach","classList","add","includes","trim","elements","attrs","element","name","elementsWithFuncIri","querySelectorAll","Map","i","elementWithReference","getAttribute","match","attributes","get","set","push","rawName","namespace","getNamedSvgIcon","pipe","take","subscribe","err","errorMessage","message","handleError","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","inputs","booleanAttribute","host","properties","classAttribute","exportAs","ngImport","template","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","Input","transform","MatIconModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","type","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}