{"version":3,"file":"qualcomm-ui-angular-tag.mjs","sources":["../../src/tag/qds-tag-context.service.ts","../../src/tag/tag.directive.ts","../../src/tag/qualcomm-ui-angular-tag.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Injectable} from \"@angular/core\"\n\nimport {\n  type ApiContext,\n  BaseApiContextService,\n  createApiContext,\n} from \"@qualcomm-ui/angular-core/machine\"\nimport type {QdsTagApi} from \"@qualcomm-ui/qds-core/tag\"\n\n@Injectable()\nexport class QdsTagContextService extends BaseApiContextService<QdsTagApi> {}\n\nexport const [\n  QDS_TAG_CONTEXT,\n  useQdsTagContext,\n  provideQdsTagContext,\n]: ApiContext<QdsTagApi> = createApiContext<QdsTagApi>(\n  \"QdsTagContext\",\n  QdsTagContextService,\n)\n","// 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  output,\n  signal,\n} from \"@angular/core\"\nimport {X} from \"lucide-angular\"\n\nimport {\n  END_ICON_CONTEXT_TOKEN,\n  EndIconDirective,\n  IconDirective,\n  type IconTokenContext,\n  START_ICON_CONTEXT_TOKEN,\n  StartIconDirective,\n} from \"@qualcomm-ui/angular/icon\"\nimport {\n  type LucideIconOrString,\n  provideIcons,\n} from \"@qualcomm-ui/angular-core/lucide\"\nimport {\n  normalizeProps,\n  QBindDirective,\n  useTrackBindings,\n} from \"@qualcomm-ui/angular-core/machine\"\nimport type {SignalifyInput} from \"@qualcomm-ui/angular-core/signals\"\nimport {\n  createQdsTagApi,\n  type QdsTagApiProps,\n  type QdsTagEmphasis,\n  type QdsTagRadius,\n  type QdsTagShape,\n  type QdsTagSize,\n  type QdsTagVariant,\n} from \"@qualcomm-ui/qds-core/tag\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport type {Explicit} from \"@qualcomm-ui/utils/guard\"\nimport {mergeProps} from \"@qualcomm-ui/utils/merge-props\"\n\nimport {QdsTagContextService} from \"./qds-tag-context.service\"\n\n@Component({\n  imports: [\n    EndIconDirective,\n    StartIconDirective,\n    QBindDirective,\n    IconDirective,\n  ],\n  providers: [\n    QdsTagContextService,\n    provideIcons({X}),\n    {\n      provide: START_ICON_CONTEXT_TOKEN,\n      useFactory: (): IconTokenContext => {\n        const tag = inject(TagDirective)\n        return {\n          getBindings: computed(() =>\n            tag.qdsTagApi.context().getStartIconBindings(),\n          ),\n        }\n      },\n    },\n    {\n      provide: END_ICON_CONTEXT_TOKEN,\n      useFactory: (): IconTokenContext => {\n        const tag = inject(TagDirective)\n        return {\n          getBindings: computed(() =>\n            tag.qdsTagApi.context().getEndIconBindings(),\n          ),\n        }\n      },\n    },\n  ],\n  selector: \"span[q-tag], button[q-tag], div[q-tag]\",\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    <span><ng-content /></span>\n\n    @if (variant() === \"dismissable\") {\n      <button\n        type=\"button\"\n        [q-bind]=\"qdsTagApi.context().getDismissButtonBindings()\"\n        (click)=\"dismiss.emit()\"\n      >\n        <svg qIcon=\"X\" [q-bind]=\"qdsTagApi.context().getEndIconBindings()\" />\n      </button>\n    } @else {\n      <ng-content select=\"[q-end-icon]\">\n        @if (endIcon()) {\n          <svg q-end-icon [icon]=\"endIcon()!\"></svg>\n        }\n      </ng-content>\n    }\n  `,\n})\nexport class TagDirective implements SignalifyInput<QdsTagApiProps>, OnInit {\n  /**\n   * Emits when the dismiss button is clicked. Only applicable when\n   * {@link variant} is `dismissable`.\n   */\n  readonly dismiss = output<void>()\n\n  /**\n   * Controls the component's interactivity. If `true`, the component becomes\n   * unresponsive to input and is visually dimmed to indicate its disabled state.\n   */\n  readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n    transform: booleanAttribute,\n  })\n\n  /**\n   * {@link https://lucide.dev/icons lucide-angular} icon, positioned after the label.\n   * Note that this property is ignored if {@link variant} is `dismissable`, as it\n   * is reserved for the dismiss icon.\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   * Governs the color of the tag.\n   * @default 'brand'\n   */\n  readonly emphasis = input<QdsTagEmphasis>()\n\n  /**\n   * @deprecated in {@link https://github.com/qualcomm/qualcomm-ui/blob/main/packages/frameworks/react/CHANGELOG.md#1160 v1.16.0}, migrate to {@link shape}\n   *\n   * Governs the shape of the tag.\n   *\n   * @default 'square'\n   */\n  readonly radius = input<QdsTagRadius>()\n\n  /**\n   * Governs the shape of the tag.\n   *\n   * @since 1.16.0\n   *\n   * @default 'square'\n   */\n  readonly shape = input<QdsTagShape>()\n\n  /**\n   * Governs the size of the text, icons, spacing, and padding.\n   * @default 'md'\n   */\n  readonly size = input<QdsTagSize>()\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  /**\n   * Governs the interactive style of the tag.\n   */\n  readonly variant = input<QdsTagVariant>()\n\n  protected readonly selected = signal<boolean>(false)\n\n  protected readonly trackBindings = useTrackBindings(() =>\n    mergeProps(this.qdsTagApi.context().getRootBindings(), {\n      onclick: () => {\n        if (this.variant() === \"selectable\") {\n          this.selected.update((prev) => !prev)\n        }\n      },\n    }),\n  )\n\n  protected readonly qdsTagApi = inject(QdsTagContextService)\n\n  ngOnInit() {\n    this.qdsTagApi.init(\n      computed(() =>\n        createQdsTagApi(\n          {\n            disabled: this.disabled(),\n            emphasis: this.emphasis(),\n            radius: this.radius(),\n            selected: this.selected(),\n            shape: this.shape(),\n            size: this.size(),\n            variant: this.variant(),\n          } satisfies Explicit<QdsTagApiProps> & {\n            selected?: boolean | undefined\n          },\n          normalizeProps,\n        ),\n      ),\n    )\n\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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"}