{"version":3,"file":"qualcomm-ui-angular-icon.mjs","sources":["../../src/icon/icon.tokens.ts","../../src/icon/use-lucide-icon.ts","../../src/icon/end-icon.directive.ts","../../src/icon/icon.directive.ts","../../src/icon/start-icon.directive.ts","../../src/icon/qualcomm-ui-angular-icon.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {InjectionToken, type Signal} from \"@angular/core\"\n\nimport type {Dict} from \"@qualcomm-ui/utils/machine\"\n\nexport interface IconTokenContext {\n  getBindings: Signal<Dict>\n}\n\nexport const START_ICON_CONTEXT_TOKEN = new InjectionToken<IconTokenContext>(\n  \"START_ICON_TOKEN\",\n)\n\nexport const END_ICON_CONTEXT_TOKEN = new InjectionToken<IconTokenContext>(\n  \"END_ICON_TOKEN\",\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  computed,\n  effect,\n  ElementRef,\n  inject,\n  Renderer2,\n  type Signal,\n} from \"@angular/core\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {\n  LUCIDE_ICONS,\n  type LucideIcon,\n  type LucideIconOrString,\n  type LucideIconPart,\n  type LucideIconProviderValue,\n} from \"@qualcomm-ui/angular-core/lucide\"\nimport {applyBindings, normalizeProps} from \"@qualcomm-ui/angular-core/machine\"\nimport {accessSignal, type MaybeSignal} from \"@qualcomm-ui/angular-core/signals\"\nimport {\n  getQdsIconBindings,\n  type QdsIconBindings,\n  type QdsIconSize,\n} from \"@qualcomm-ui/qds-core/icon\"\nimport {pascalCase} from \"@qualcomm-ui/utils/change-case\"\nimport type {Dict} from \"@qualcomm-ui/utils/machine\"\n\nexport interface UseLucideIconOptions<\n  ThrowOnUnresolvedStringIcon extends boolean | undefined = false,\n> {\n  elementRef?: ElementRef<HTMLElement>\n  icon?: MaybeSignal<LucideIconOrString | undefined> | undefined\n  iconProps?: {\n    height?: MaybeSignal<string | number | undefined>\n    size?: MaybeSignal<QdsIconSize | undefined>\n    viewBox?: MaybeSignal<string | undefined>\n    width?: MaybeSignal<string | number | undefined>\n    xmlns?: MaybeSignal<string | undefined>\n  }\n  icons?: LucideIconProviderValue | null\n  /**\n   * If true, the QDS data-size attribute will not be applied to the icon. This is\n   * useful if you want to use the icon in a context where the size binding is\n   * already applied.\n   */\n  renderer2?: Renderer2\n  /**\n   * Throws an error if the provided icon is undefined or not found (when passed as\n   * a string it is resolved against the nearest provider returned from the\n   * provideIcons utility function).\n   */\n  throwOnUnresolvedStringIcon?: ThrowOnUnresolvedStringIcon\n}\n\nexport interface UseLucideIconReturn<\n  ThrowOnUnresolvedStringIcon extends boolean = false,\n> {\n  getIconBindings: Signal<QdsIconBindings>\n  icon: ThrowOnUnresolvedStringIcon extends true\n    ? Signal<LucideIcon>\n    : Signal<LucideIcon | undefined>\n  icons: LucideIconProviderValue | null\n  xmlns: string\n}\n\nexport function useLucideIcon<\n  ThrowOnUnresolvedStringIcon extends boolean | undefined = false,\n>(\n  options: UseLucideIconOptions<ThrowOnUnresolvedStringIcon> = {},\n): UseLucideIconReturn {\n  const elementRef: ElementRef<HTMLElement> =\n    options.elementRef || inject(ElementRef)\n  const renderer = options.renderer2 || inject(Renderer2)\n  const onDestroy = useOnDestroy()\n  let createdElements: HTMLElement[] = []\n  const iconProps = options.iconProps || {}\n\n  const providedIcons =\n    options.icons ||\n    inject<LucideIconProviderValue | null>(LUCIDE_ICONS, {\n      optional: true,\n    })\n\n  const xmlns = accessSignal(iconProps.xmlns) || \"http://www.w3.org/2000/svg\"\n  const resolvedIcon = computed(() => {\n    return getIcon(accessSignal(options.icon))\n  })\n\n  function isSvgHostElement(): boolean {\n    return elementRef.nativeElement.tagName === \"svg\"\n  }\n\n  const getIconBindings = computed(() => {\n    return getQdsIconBindings(\n      {\n        height: accessSignal(iconProps?.height),\n        size: accessSignal(iconProps?.size),\n        viewBox: accessSignal(iconProps?.viewBox),\n        width: accessSignal(iconProps?.width),\n        xmlns,\n      },\n      normalizeProps,\n    )\n  })\n\n  function getSvgElement() {\n    if (isSvgHostElement()) {\n      return elementRef.nativeElement\n    }\n    return createIconPart(\n      [\"svg\", getIconBindings() as Dict],\n      elementRef.nativeElement,\n    )\n  }\n\n  function createIconPart(\n    [tag, attrs]: LucideIconPart,\n    appendTarget: HTMLElement,\n  ): HTMLElement {\n    const element: HTMLElement = renderer.createElement(tag, xmlns)\n\n    applyBindings(element, attrs, renderer)\n\n    renderer.appendChild(appendTarget, element)\n    createdElements.push(element)\n    return element\n  }\n\n  function clearIconParts(): void {\n    createdElements.forEach((element) => {\n      if (element.parentNode) {\n        renderer.removeChild(element.parentNode, element)\n      }\n    })\n    createdElements = []\n  }\n\n  function getIcon(\n    iconOrName: LucideIcon | string | undefined,\n  ): LucideIcon | undefined {\n    if (typeof iconOrName !== \"string\") {\n      return iconOrName\n    }\n    const icons = providedIcons || {}\n    const iconName = pascalCase(iconOrName)\n    const icon =\n      icons[iconName] || icons[`${iconName}Icon`] || icons[iconOrName]\n    if (options.throwOnUnresolvedStringIcon && !icon) {\n      throw new Error(\n        `Expected to find an icon named \"${iconName}\" but none was provided. Refer to the provider documentation at https://angular-next.qui.qualcomm.com/components/icon#provider`,\n      )\n    }\n    return icon\n  }\n\n  effect(() => {\n    clearIconParts()\n    const data = resolvedIcon()\n    if (!data) {\n      clearIconParts()\n      return\n    }\n    const svgElement = getSvgElement()\n    if (isSvgHostElement()) {\n      applyBindings(svgElement, getIconBindings(), renderer)\n    }\n    if (data) {\n      data.forEach((part) => {\n        createIconPart(part, svgElement)\n      })\n    }\n  })\n\n  onDestroy(() => clearIconParts())\n\n  return {\n    getIconBindings,\n    icon: resolvedIcon,\n    icons: providedIcons,\n    xmlns,\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Directive, ElementRef, inject, input, type OnInit} from \"@angular/core\"\n\nimport type {LucideIconOrString} from \"@qualcomm-ui/angular-core/lucide\"\nimport {useTrackBindings} from \"@qualcomm-ui/angular-core/machine\"\n\nimport {END_ICON_CONTEXT_TOKEN} from \"./icon.tokens\"\nimport {useLucideIcon} from \"./use-lucide-icon\"\n\n/**\n * A utility component that renders a Lucide icon or template content. This is used\n * by components that need a leading icon. If this directive is attached to an svg\n * element, the qds icon bindings will be applied to the svg element. Otherwise, an\n * svg element will be created as a child of the element and the icon bindings will\n * be applied to it instead.\n */\n@Directive({\n  selector: \"div[q-end-icon],span[q-end-icon],svg[q-end-icon]\",\n})\nexport class EndIconDirective implements OnInit {\n  /**\n   * Lucide Icon or string.\n   */\n  readonly icon = input<LucideIconOrString>()\n\n  protected readonly context = inject(END_ICON_CONTEXT_TOKEN, {\n    optional: true,\n  })\n\n  protected readonly elementRef = inject(ElementRef)\n\n  protected readonly iconData = useLucideIcon({\n    icon: this.icon,\n  })\n\n  protected readonly trackBindings = useTrackBindings(\n    () => this.context?.getBindings?.() ?? {},\n  )\n\n  ngOnInit(): void {\n    this.trackBindings()\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Directive, ElementRef, inject, input, type OnInit} from \"@angular/core\"\n\nimport {type LucideIconOrString} from \"@qualcomm-ui/angular-core/lucide\"\nimport {useTrackBindings} from \"@qualcomm-ui/angular-core/machine\"\nimport type {SignalifyInput} from \"@qualcomm-ui/angular-core/signals\"\nimport {\n  type QdsIconApiProps,\n  type QdsIconSize,\n} from \"@qualcomm-ui/qds-core/icon\"\n\nimport {useLucideIcon} from \"./use-lucide-icon\"\n\n@Directive({\n  host: {\n    // even though the machine provides this, we still need it here for some reason.\n    \"[attr.xmlns]\": \"xmlns()\",\n  },\n  selector: \"svg[qIcon]\",\n})\nexport class IconDirective implements SignalifyInput<QdsIconApiProps>, OnInit {\n  /**\n   * Lucide Icon or string.\n   */\n  readonly icon = input.required<LucideIconOrString>({\n    alias: \"qIcon\",\n  })\n\n  /**\n   * @default 'md'\n   */\n  readonly size = input<QdsIconSize | undefined>()\n\n  /**\n   * HTML {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/viewBox viewbox} attribute\n   *\n   * @default '0 0 24 24'\n   */\n  readonly viewBox = input<string>()\n\n  /**\n   * HTML {@link https://www.w3schools.com/tags/att_html_xmlns.asp xmlns} attribute\n   *\n   * @default 'http://www.w3.org/2000/svg'\n   */\n  readonly xmlns = input<string>(\"http://www.w3.org/2000/svg\")\n\n  /**\n   * Force the height of the icon. This typically isn't required. You should prefer\n   * the {@link size} property for customization instead.\n   */\n  readonly height = input<string | number | undefined>()\n\n  /**\n   * Force the width of the icon. This typically isn't required. You should prefer\n   * the {@link size} property for customization instead.\n   */\n  readonly width = input<string | number | undefined>()\n\n  readonly elementRef = inject(ElementRef)\n\n  protected readonly iconData = useLucideIcon({\n    icon: this.icon,\n    iconProps: {\n      height: this.height,\n      size: this.size,\n      viewBox: this.viewBox,\n      width: this.width,\n      xmlns: this.xmlns,\n    },\n    throwOnUnresolvedStringIcon: true,\n  })\n\n  protected readonly trackBindings = useTrackBindings(() =>\n    this.iconData.getIconBindings(),\n  )\n\n  ngOnInit(): void {\n    this.trackBindings()\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Directive, ElementRef, inject, input, type OnInit} from \"@angular/core\"\n\nimport type {LucideIconOrString} from \"@qualcomm-ui/angular-core/lucide\"\nimport {useTrackBindings} from \"@qualcomm-ui/angular-core/machine\"\n\nimport {START_ICON_CONTEXT_TOKEN} from \"./icon.tokens\"\nimport {useLucideIcon} from \"./use-lucide-icon\"\n\n/**\n * A utility component that renders a Lucide icon or template content. This is used\n * by components that need a leading icon. If this directive is attached to an svg\n * element, the qds icon bindings will be applied to the svg element. Otherwise, an\n * svg element will be created as a child of the element and the icon bindings will\n * be applied to it instead.\n */\n@Directive({\n  selector: \"div[q-start-icon],span[q-start-icon],svg[q-start-icon]\",\n})\nexport class StartIconDirective implements OnInit {\n  /**\n   * Lucide Icon or string.\n   */\n  readonly icon = input<LucideIconOrString>()\n\n  protected readonly context = inject(START_ICON_CONTEXT_TOKEN, {\n    optional: true,\n  })\n\n  protected readonly elementRef = inject(ElementRef)\n\n  protected readonly iconData = useLucideIcon({\n    icon: this.icon,\n  })\n\n  protected readonly trackBindings = useTrackBindings(\n    () => this.context?.getBindings?.() ?? {},\n  )\n\n  ngOnInit(): void {\n    this.trackBindings()\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}