{"version":3,"file":"qualcomm-ui-angular-link.mjs","sources":["../../src/link/link.directive.ts","../../src/link/qualcomm-ui-angular-link.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  booleanAttribute,\n  Component,\n  computed,\n  inject,\n  input,\n  type OnInit,\n} from \"@angular/core\"\n\nimport {\n  END_ICON_CONTEXT_TOKEN,\n  EndIconDirective,\n  type IconTokenContext,\n  START_ICON_CONTEXT_TOKEN,\n  StartIconDirective,\n} from \"@qualcomm-ui/angular/icon\"\nimport {QuiPreloadDirective} from \"@qualcomm-ui/angular/transitions\"\nimport type {LucideIconOrString} from \"@qualcomm-ui/angular-core/lucide\"\nimport {\n  normalizeProps,\n  useTrackBindings,\n} from \"@qualcomm-ui/angular-core/machine\"\nimport type {SignalifyInput} from \"@qualcomm-ui/angular-core/signals\"\nimport {\n  createQdsLinkApi,\n  type QdsLinkApiProps,\n  type QdsLinkEmphasis,\n  type QdsLinkSize,\n} from \"@qualcomm-ui/qds-core/link\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport type {Direction} from \"@qualcomm-ui/utils/direction\"\nimport type {Explicit} from \"@qualcomm-ui/utils/guard\"\n\n@Component({\n  hostDirectives: [QuiPreloadDirective],\n  imports: [EndIconDirective, StartIconDirective],\n  providers: [\n    {\n      provide: START_ICON_CONTEXT_TOKEN,\n      useFactory: (): IconTokenContext => {\n        const linkDirective = inject(LinkDirective)\n        return {\n          getBindings: computed(() =>\n            linkDirective.qdsLinkApi().getStartIconBindings(),\n          ),\n        }\n      },\n    },\n    {\n      provide: END_ICON_CONTEXT_TOKEN,\n      useFactory: (): IconTokenContext => {\n        const linkDirective = inject(LinkDirective)\n        return {\n          getBindings: computed(() =>\n            linkDirective.qdsLinkApi().getEndIconBindings(),\n          ),\n        }\n      },\n    },\n  ],\n  selector: \"[q-link]\",\n  template: `\n    <ng-content select=\"[q-start-icon]\">\n      @if (startIcon()) {\n        <svg q-start-icon [icon]=\"startIcon()!\"></svg>\n      }\n    </ng-content>\n\n    <ng-content />\n\n    <ng-content select=\"[q-end-icon]\">\n      @if (endIcon()) {\n        <svg q-end-icon [icon]=\"endIcon()!\"></svg>\n      }\n    </ng-content>\n  `,\n})\nexport class LinkDirective implements SignalifyInput<QdsLinkApiProps>, OnInit {\n  /**\n   * The document's text/writing direction.\n   *\n   * @default \"ltr\"\n   */\n  readonly dir = input<Direction | undefined>(undefined)\n\n  /**\n   * Controls whether the link is interactive. When `true`, pointer/focus\n   * events are blocked, and the link is visually dimmed.\n   */\n  readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n    transform: booleanAttribute,\n  })\n\n  /**\n   * The color of the link.\n   *\n   * @default 'default'\n   */\n  readonly emphasis = input<QdsLinkEmphasis>()\n\n  /**\n   * {@link https://lucide.dev/icons lucide-angular} icon, positioned after the label.\n   *\n   * @remarks\n   * To customize the element, provide it using the directive instead:\n   * ```angular-html\n   * <svg q-end-icon icon=\"...\"></svg>\n   * ```\n   */\n  readonly endIcon = input<LucideIconOrString>()\n\n  /**\n   * The size of the link and its elements. Governs properties like font size,\n   * item padding, and icon sizes.\n   *\n   * @default 'md'\n   */\n  readonly size = input<QdsLinkSize>()\n\n  /**\n   * {@link https://lucide.dev/icons lucide-angular} icon, positioned before the label.\n   *\n   * @remarks\n   * To customize the element, provide it using the directive instead:\n   * ```angular-html\n   * <svg q-start-icon icon=\"...\"></svg>\n   * ```\n   */\n  readonly startIcon = input<LucideIconOrString>()\n\n  readonly qdsLinkApi = computed(() =>\n    createQdsLinkApi(\n      {\n        dir: this.dir(),\n        disabled: this.disabled(),\n        emphasis: this.emphasis(),\n        size: this.size(),\n      } satisfies Explicit<QdsLinkApiProps>,\n      normalizeProps,\n    ),\n  )\n\n  protected readonly trackBindings = useTrackBindings(() =>\n    this.qdsLinkApi().getRootBindings(),\n  )\n\n  ngOnInit() {\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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"}