{"version":3,"file":"qualcomm-ui-angular-core-dom.mjs","sources":["../../src/dom/tokens/window.ts","../../src/dom/tokens/caches.ts","../../src/dom/tokens/css.ts","../../src/dom/tokens/local-storage.ts","../../src/dom/tokens/location.ts","../../src/dom/tokens/navigator.ts","../../src/dom/tokens/media-devices.ts","../../src/dom/tokens/performance.ts","../../src/dom/tokens/screen.ts","../../src/dom/tokens/user-agent.ts","../../src/dom/clipboard.service.ts","../../src/dom/context-id-signal.ts","../../src/dom/descendants-manager.service.ts","../../src/dom/element-id-signal.ts","../../src/dom/id.service.ts","../../src/dom/portal-config.service.ts","../../src/dom/qualcomm-ui-angular-core-dom.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {DOCUMENT} from \"@angular/common\"\nimport {inject, InjectionToken} from \"@angular/core\"\n\nexport const WINDOW = new InjectionToken<Window>(\n  \"An abstraction over global window object\",\n  {\n    factory: () => {\n      const {defaultView} = inject(DOCUMENT)\n\n      if (!defaultView) {\n        throw new Error(\"Window is not available\")\n      }\n\n      return defaultView\n    },\n  },\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {inject, InjectionToken} from \"@angular/core\"\n\nimport {WINDOW} from \"./window\"\n\nexport const CACHES = new InjectionToken<CacheStorage>(\n  \"An abstraction over window.caches object\",\n  {\n    factory: () => inject(WINDOW).caches,\n  },\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {inject, InjectionToken} from \"@angular/core\"\n\nimport {WINDOW} from \"./window\"\n\n/**\n * Use Window['CSS'], this is a workaround to support Angular 6+\n */\ninterface Css {\n  escape(ident: string): string\n  supports(property: string, value: string): boolean\n  supports(conditionText: string): boolean\n}\n\nexport const CSS = new InjectionToken<Css>(\n  \"An abstraction over window.CSS object\",\n  {\n    factory: () =>\n      (inject(WINDOW) as any).CSS || {\n        escape: (v) => v,\n        supports: () => false,\n      },\n  },\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {inject, InjectionToken} from \"@angular/core\"\n\nimport {WINDOW} from \"./window\"\n\nexport const LOCAL_STORAGE = new InjectionToken<Storage>(\n  \"An abstraction over window.localStorage object\",\n  {\n    factory: () => inject(WINDOW).localStorage,\n  },\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {inject, InjectionToken} from \"@angular/core\"\n\nimport {WINDOW} from \"./window\"\n\nexport const LOCATION = new InjectionToken<Location>(\n  \"An abstraction over window.location object\",\n  {\n    factory: () => inject(WINDOW).location,\n  },\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {inject, InjectionToken} from \"@angular/core\"\n\nimport {WINDOW} from \"./window\"\n\nexport const NAVIGATOR = new InjectionToken<Navigator>(\n  \"An abstraction over window.navigator object\",\n  {\n    factory: () => inject(WINDOW).navigator,\n  },\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {inject, InjectionToken} from \"@angular/core\"\n\nimport {NAVIGATOR} from \"./navigator\"\n\nexport const MEDIA_DEVICES = new InjectionToken<MediaDevices>(\n  \"An abstraction over window.navigator.mediaDevices object\",\n  {\n    factory: () => inject(NAVIGATOR).mediaDevices,\n  },\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {inject, InjectionToken} from \"@angular/core\"\n\nimport {WINDOW} from \"./window\"\n\nexport const PERFORMANCE = new InjectionToken<Performance>(\n  \"An abstraction over window.performance object\",\n  {\n    factory: () => inject(WINDOW).performance,\n  },\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {inject, InjectionToken} from \"@angular/core\"\n\nimport {WINDOW} from \"./window\"\n\nexport const SCREEN = new InjectionToken<Screen>(\n  \"An abstraction over window.screen object\",\n  {\n    factory: () => inject(WINDOW).screen,\n  },\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {inject, InjectionToken} from \"@angular/core\"\n\nimport {NAVIGATOR} from \"./navigator\"\n\nexport const USER_AGENT = new InjectionToken<string>(\n  \"An abstraction over window.navigator.userAgent object\",\n  {\n    factory: () => inject(NAVIGATOR).userAgent,\n  },\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {isPlatformServer} from \"@angular/common\"\nimport {\n  computed,\n  inject,\n  Injectable,\n  type OnDestroy,\n  PLATFORM_ID,\n  type Signal,\n  signal,\n} from \"@angular/core\"\nimport {Check, Copy} from \"lucide-angular\"\n\nimport type {LucideIcon} from \"@qualcomm-ui/angular-core/lucide\"\n\nimport {NAVIGATOR} from \"./tokens\"\n\n/**\n * A simple helper service for copying text to the user's clipboard. SSR-safe,\n * debounce support, and optional icon support.\n */\n@Injectable()\nexport class ClipboardService implements OnDestroy {\n  get copied() {\n    return this._copied.asReadonly()\n  }\n  private readonly _copied = signal<boolean>(false)\n\n  readonly icon: Signal<LucideIcon> = computed(() =>\n    this.copied() ? Check : Copy,\n  )\n\n  private copyTimeout: ReturnType<typeof setTimeout>\n\n  private navigator = inject(NAVIGATOR)\n  private platformId = inject(PLATFORM_ID)\n\n  ngOnDestroy() {\n    clearTimeout(this.copyTimeout)\n  }\n\n  async copy(text: string, timeout = 1200) {\n    // debounce\n    if (this.copied() || isPlatformServer(this.platformId)) {\n      return undefined\n    }\n    // show an indicator that the copy action succeeded\n    this._copied.set(true)\n    this.copyTimeout = setTimeout(() => {\n      this._copied.set(false)\n    }, timeout)\n\n    return this.navigator.clipboard.writeText(text).then(() => text)\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  type CreateSignalOptions,\n  signal,\n  type WritableSignal,\n} from \"@angular/core\"\n\nexport type ContextIdSignal = WritableSignal<string> & {\n  /**\n   * Retrieves the id string, or undefined if it is empty. When you bind `undefined`\n   * to an attribute in Angular, the attribute is removed from the DOM element.\n   *\n   * @example\n   *\n   * ```ts\n   * @Component({\n   *   template: `\n   *     <div id=\"1\" [attr.aria-labelledby]=\"emptyId\"></div>\n   *     <div id=\"2\" [attr.aria-labelledby]=\"undefinedId\"></div>\n   *   `\n   * })\n   * class Component {\n   *   emptyId = \"\"\n   *   undefinedId = undefined\n   * }\n   *```\n   *\n   *```html\n   * <!-- resulting DOM elements: -->\n   * <!-- invalid DOM element: aria-labelledby must be set if defined -->\n   * <div id=\"1\" aria-labelledby></div>\n   *\n   * <!-- valid DOM element -->\n   * <div id=\"2\"></div>\n   *```\n   */\n  asAttribute(): string | undefined\n\n  set(value: string, onDestroy?: (callback: () => void) => void): void\n}\n\n/**\n * A simple wrapper around a signal for tracking an element's id in a shared\n * service. This signal resets the value when its element's reference is destroyed.\n *\n * @param initialValue\n * @param options\n */\nexport function contextIdSignal(\n  initialValue?: string,\n  options?: CreateSignalOptions<string | undefined>,\n) {\n  const signalFn = signal(initialValue, options)\n  const setter = signalFn.set\n\n  ;(signalFn as unknown as ContextIdSignal).asAttribute = () =>\n    signalFn() || undefined\n  ;(signalFn as unknown as any).set = (\n    value: string | undefined,\n    onDestroy?: (callback: () => void) => void,\n  ) => {\n    onDestroy?.(() => {\n      setter(initialValue)\n    })\n    setter(value)\n  }\n\n  return signalFn as ContextIdSignal\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Injectable, signal, untracked} from \"@angular/core\"\n\nimport {\n  type DescendantOptions,\n  DescendantsManager,\n} from \"@qualcomm-ui/utils/descendants\"\n\n@Injectable()\nexport class DescendantsManagerService<\n  T extends HTMLElement,\n  K extends Record<string, any> = object,\n> extends DescendantsManager<T, K> {\n  // simple signal for consumers to subscribe to changes.\n  get subscribe() {\n    return this._subscribe.asReadonly()\n  }\n\n  private readonly _subscribe = signal<number>(0)\n\n  emit() {\n    this._subscribe.update((prev) => prev + 1)\n  }\n\n  override register(nodeOrOptions: T | null | DescendantOptions<K>) {\n    super.register(nodeOrOptions)\n    untracked(() => this.emit())\n  }\n\n  override unregister(node: T) {\n    super.unregister(node)\n    untracked(() => this.emit())\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  type CreateSignalOptions,\n  type DestroyRef,\n  signal,\n  type WritableSignal,\n} from \"@angular/core\"\n\nexport type ElementIdSignal = WritableSignal<string> & {\n  /**\n   * Retrieves the id string, or undefined if it is empty. When you bind `undefined`\n   * to an attribute in Angular, the attribute is removed from the DOM element.\n   *\n   * @example\n   *\n   * ```ts\n   * @Component({\n   *   template: `\n   *     <div id=\"1\" [attr.aria-labelledby]=\"emptyId\"></div>\n   *     <div id=\"2\" [attr.aria-labelledby]=\"undefinedId\"></div>\n   *   `\n   * })\n   * class Component {\n   *   emptyId = \"\"\n   *   undefinedId = undefined\n   * }\n   *```\n   *\n   *```html\n   * <!-- resulting DOM elements: -->\n   * <!-- invalid DOM element: aria-labelledby must be set if defined -->\n   * <div id=\"1\" aria-labelledby></div>\n   *\n   * <!-- valid DOM element -->\n   * <div id=\"2\"></div>\n   *```\n   */\n  asAttribute(): string | undefined\n\n  set(value: string, destroyRef: DestroyRef): void\n}\n\n/**\n * A simple wrapper around a signal for tracking an element's id in a shared\n * service. This signal resets the value when its element's reference is destroyed.\n *\n * @param initialValue\n * @param options\n */\nexport function elementIdSignal(\n  initialValue?: string,\n  options?: CreateSignalOptions<string | undefined>,\n) {\n  const signalFn = signal(initialValue, options)\n  const setter = signalFn.set\n\n  ;(signalFn as unknown as ElementIdSignal).asAttribute = () =>\n    signalFn() || undefined\n  ;(signalFn as unknown as any).set = (\n    value: string | undefined,\n    destroyRef: DestroyRef,\n  ) => {\n    onElementDestroyed()\n    onElementDestroyed = destroyRef.onDestroy(() => {\n      setter(initialValue)\n    })\n    setter(value)\n  }\n\n  let onElementDestroyed = () => {}\n\n  return signalFn as ElementIdSignal\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Injectable} from \"@angular/core\"\n\n/**\n * Simple service that can persist IDs across from SSR to CSR.\n */\n@Injectable({providedIn: \"root\"})\nexport class IdService {\n  private ids: Record<string, number> = {}\n\n  useId(\n    componentName: string,\n    idProp: string | undefined | null,\n    idAttr: string | null,\n  ) {\n    // only use the supplied id if it does not also map to an attribute. This is a\n    // workaround because we are using the `id` prop. If supplied as `[id]`, it\n    // will work as expected. If supplied as `[attr.id]` or `id`, it will be treated\n    // as an attribute. When this happens, we do not use the supplied id and instead\n    // generate one. Otherwise, we'd get two ID's in the DOM (one on the host\n    // element and one on the internal element that we bind the id to).\n    const id = idProp || idAttr\n    if (id) {\n      return id\n    }\n    if (!this.ids[componentName]) {\n      this.ids[componentName] = 1\n    }\n    return `${componentName}::auto-id::${this.ids[componentName]++}`\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Injectable} from \"@angular/core\"\n\n@Injectable({providedIn: \"root\"})\nexport class PortalConfigService {\n  private _portalNodeId = \"q-portal-root\"\n\n  get portalNodeId() {\n    return this._portalNodeId\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}