{"version":3,"file":"qualcomm-ui-angular-core-machine.mjs","sources":["../../src/machine/api-context.service.ts","../../src/machine/api-context.directive.ts","../../src/machine/bindable-id-collection.ts","../../src/machine/bindable-id.ts","../../src/machine/bindable.ts","../../src/machine/merge-props.ts","../../src/machine/q-bind.directive.ts","../../src/machine/normalize-props.ts","../../src/machine/refs.ts","../../src/machine/track.ts","../../src/machine/use-machine.ts","../../src/machine/use-track-bindings.ts","../../src/machine/qualcomm-ui-angular-core-machine.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  inject,\n  Injectable,\n  InjectionToken,\n  type InjectOptions,\n  type Provider,\n  signal,\n  type Signal,\n} from \"@angular/core\"\n\n/**\n * Manages the API context for a service.\n *\n * Provides a way to initialize and access an API signal, ensuring that it is only\n * set once. Attempting to reinitialize or access an uninitialized API will result\n * in errors.\n *\n * @template T - The type of the data returned by the API.\n */\n@Injectable()\nexport abstract class BaseApiContextService<T> {\n  readonly initialized = signal(false)\n\n  get context() {\n    if (!this._context) {\n      throw new Error(\"context not initialized\")\n    }\n    return this._context\n  }\n  private _context: Signal<T> | undefined\n\n  init(computedApi: Signal<T>): void {\n    if (this._context) {\n      throw new Error(\"context already initialized\")\n    }\n    this._context = computedApi\n    this.initialized.set(true)\n  }\n}\n\nexport type UseContextOpts<Optional extends boolean = false> = InjectOptions & {\n  /**\n   * Use optional injection, and return `null` if the requested token is not found.\n   */\n  optional?: Optional\n}\n\nexport type ApiContext<T> = [\n  InjectionToken<() => T>,\n  <Optional extends boolean = false>(\n    opts?: UseContextOpts<Optional>,\n  ) => Optional extends true ? (() => T) | null : () => T,\n  () => Provider[],\n]\n\nexport function createApiContext<\n  T,\n  K extends typeof BaseApiContextService<T> = typeof BaseApiContextService<T>,\n>(name: string, service: K, initialValue?: T): ApiContext<T> {\n  const token = new InjectionToken<() => T>(name)\n\n  function useContext<Optional extends boolean = false>(\n    opts: UseContextOpts<Optional> = {},\n  ) {\n    return inject(token, opts)\n  }\n\n  function getProviders(): Provider[] {\n    return [\n      service as any,\n      {\n        deps: [service],\n        provide: token,\n        useFactory: (context: BaseApiContextService<T>) => {\n          if (!context.initialized() && initialValue !== undefined) {\n            context.init(signal(initialValue))\n          }\n          return () => context.context()\n        },\n      },\n    ]\n  }\n\n  return [token, useContext as ApiContext<T>[1], getProviders]\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  Directive,\n  effect,\n  inject,\n  Injector,\n  TemplateRef,\n  ViewContainerRef,\n} from \"@angular/core\"\n\nimport {BaseApiContextService} from \"./api-context.service\"\n\n/**\n * Base directive for creating context-aware directives that render content\n * only when an API context is available.\n *\n * This abstract class provides the core functionality to:\n * 1. Check if a required API context service is available\n * 2. Render the associated template only when the API instance is accessible\n * 3. Provide the API instance to the template as a typed value\n */\n@Directive()\nexport abstract class ApiContextDirective<T extends object> {\n  private readonly templateRef = inject<TemplateRef<any>>(TemplateRef)\n  private readonly viewContainerRef = inject(ViewContainerRef)\n  private readonly injector = inject(Injector)\n\n  protected constructor(\n    // eslint-disable-next-line @angular-eslint/prefer-inject\n    contextService: BaseApiContextService<T>,\n    contextName: string,\n  ) {\n    if (!contextService) {\n      console.warn(\n        `${contextName} used without a parent context. Template will not render.`,\n      )\n      return\n    }\n\n    effect(\n      () => {\n        this.viewContainerRef.clear()\n        const apiInstance = contextService.context()\n\n        if (apiInstance) {\n          this.viewContainerRef.createEmbeddedView(this.templateRef, {\n            $implicit: apiInstance,\n            [contextName]: apiInstance,\n          })\n        }\n      },\n      {injector: this.injector},\n    )\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {signal} from \"@angular/core\"\n\nimport type {BindableIdCollection, Dict} from \"@qualcomm-ui/utils/machine\"\n\nexport function bindableIdCollection<T extends Dict>(): BindableIdCollection<\n  any,\n  any\n> {\n  const collection = signal<Record<string, T>>({})\n\n  return {\n    get(itemKey: string): T | undefined {\n      return collection()[itemKey]\n    },\n    getAll(): Record<string, T> {\n      const result: Record<string, T> = {}\n      const current = collection()\n      for (const key in current) {\n        result[key] = current[key]\n      }\n      return result\n    },\n    keys(): string[] {\n      return Object.keys(collection())\n    },\n    register(\n      itemKey: string,\n      value: T,\n      onDestroy?: (callback: () => void) => void,\n    ) {\n      const current = collection()\n      if (current[itemKey] === value) {\n        return\n      }\n\n      if (onDestroy) {\n        onDestroy(() => {\n          const currentState = collection()\n          const {[itemKey]: _removed, ...rest} = currentState\n          collection.set(rest)\n        })\n      }\n\n      collection.update((prevState) => ({\n        ...prevState,\n        [itemKey]: value,\n      }))\n    },\n    remove(itemKey: string) {\n      const current = collection()\n      const {[itemKey]: _removed, ...rest} = current\n      collection.set(rest)\n    },\n    set(itemKey: string, value: T) {\n      collection.update((prev) => ({\n        ...prev,\n        [itemKey]: value,\n      }))\n    },\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {signal} from \"@angular/core\"\n\nimport type {BindableId} from \"@qualcomm-ui/utils/machine\"\n\nexport function bindableId(\n  initialValue: string | undefined,\n): BindableId<string | undefined> {\n  // this value won't trigger change detection, but signals do\n  let cachedValue = initialValue\n  const value = signal(initialValue)\n\n  return {\n    get(): string | undefined {\n      return value()\n    },\n    set(v: string | undefined) {\n      if (cachedValue === v) {\n        return\n      }\n      cachedValue = v\n      value.set(v)\n    },\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {computed, effect, signal} from \"@angular/core\"\n\nimport {isFunction} from \"@qualcomm-ui/utils/guard\"\nimport type {\n  Bindable,\n  BindableParams,\n  EventDetails,\n} from \"@qualcomm-ui/utils/machine\"\n\nexport function bindable<T, ChangeEvent extends EventDetails | void | null>(\n  props: () => BindableParams<T, ChangeEvent>,\n): Bindable<T, ChangeEvent> {\n  const initial = props().value ?? props().defaultValue\n\n  const eq = props().isEqual ?? Object.is\n\n  const value = signal(initial as T)\n  const controlled = computed(() => props().value !== undefined)\n\n  const valueRef = computed(() => (controlled() ? props().value! : value()))\n\n  return {\n    get(): T {\n      return valueRef()\n    },\n    hash(value: T) {\n      return props().hash?.(value) ?? String(value)\n    },\n    initial,\n    invoke(nextValue: T, prevValue: T) {\n      props().onChange?.(nextValue, null as ChangeEvent, prevValue)\n    },\n    ref: valueRef,\n    set(v: T | ((prev: T) => T), event: ChangeEvent) {\n      const prev = valueRef()\n      const next = isFunction(v) ? v(prev) : v\n\n      if (!controlled()) {\n        value.set(next)\n      }\n\n      if (!eq(next, prev)) {\n        props().onChange?.(next, event, prev)\n      }\n    },\n  }\n}\n\nbindable.cleanup = (fn: VoidFunction) => {\n  effect((onCleanup) => onCleanup(fn))\n}\n\nbindable.ref = <T>(defaultValue: T) => {\n  let value = defaultValue\n\n  return {\n    get: () => value,\n    set: (next: T) => {\n      value = next\n    },\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {clsx} from \"@qualcomm-ui/utils/clsx\"\nimport {callAll} from \"@qualcomm-ui/utils/functions\"\n\ninterface Props {\n  [key: string]: any\n}\n\nconst CSS_REGEX = /((?:--)?(?:\\w+-?)+)\\s*:\\s*([^;]*)/g\n\n/**\n * Converts a CSS text fragment (`\"color:red; width:10px\"`)\n * into a `{color:'red', width:'10px'}` object.\n */\nfunction parseCssText(style: string): Record<string, string> {\n  const out: Record<string, string> = {}\n  let match: RegExpExecArray | null\n  while ((match = CSS_REGEX.exec(style))) {\n    out[match[1]] = match[2]\n  }\n  return out\n}\n\nfunction mergeStyle(\n  a: Record<string, string> | string | undefined,\n  b: Record<string, string> | string | undefined,\n): Record<string, string> | string {\n  if (typeof a === \"string\") {\n    if (typeof b === \"string\") {\n      return `${a};${b}`\n    }\n    a = parseCssText(a)\n  } else if (typeof b === \"string\") {\n    b = parseCssText(b)\n  }\n  return {...(a ?? {}), ...(b ?? {})}\n}\n\n/**\n * Construct the real resulting type so callers keep strong typing.\n */\ntype MergePropsHelper<T extends readonly Props[]> = T extends readonly [\n  infer First extends Props,\n  ...infer Rest extends readonly Props[],\n]\n  ? Omit<First, \"className\"> & MergePropsHelper<Rest>\n  : {}\n\n/**\n * Construct the real resulting type so callers keep strong typing.\n */\nexport type MergeProps<T extends readonly Props[]> = MergePropsHelper<T> & {\n  className?: string\n}\n\n/**\n * Angular-friendly version of `mergeProps`.\n *\n * - Handlers (`on*`) are composed with `callAll`.\n * - `class` / `className` values are merged via `clsx`.\n * - `style` strings or objects are merged and normalised.\n *\n * @deprecated import the equivalent from `@qualcomm-ui/utils/merge-props`\n */\nexport function mergeProps<T extends readonly Props[]>(\n  ...sources: T\n): MergeProps<T> {\n  const result: Props = {}\n\n  for (const current of sources) {\n    if (!current) {\n      continue\n    }\n\n    for (const key in current) {\n      const prev: any = result[key]\n      const next: any = current[key]\n\n      if (prev !== undefined) {\n        if (\n          key.startsWith(\"on\") &&\n          typeof prev === \"function\" &&\n          typeof next === \"function\"\n        ) {\n          result[key] = callAll(prev, next)\n          continue\n        }\n\n        if (key === \"class\" || key === \"className\") {\n          result[key] = clsx(prev, next)\n          continue\n        }\n\n        if (key === \"style\") {\n          result[key] = mergeStyle(prev, next)\n          continue\n        }\n      }\n\n      result[key] = next\n    }\n  }\n\n  // Adapt the merged object to Angular-friendly prop names.\n  return result as MergeProps<T>\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  computed,\n  Directive,\n  effect,\n  ElementRef,\n  inject,\n  Injector,\n  input,\n  type OnDestroy,\n  Renderer2,\n  RendererStyleFlags2,\n  runInInjectionContext,\n} from \"@angular/core\"\n\nimport {isEqual} from \"@qualcomm-ui/utils/equal\"\nimport {isNumber, isString} from \"@qualcomm-ui/utils/guard\"\n\nimport type {Dict, StyleObject} from \"./normalize-props\"\n\nexport interface NgBindOptions {\n  /**\n   * This list of properties will not be spread onto the target element.\n   */\n  omittedProps?: string[]\n}\n\n/**\n * A directive similar to Vue's `v-bind` that spreads an object's properties onto\n * the host element. For the best performance, use a stable reference to a signal\n * instead of an object literal in the template. Converts callbacks from `on*`\n * syntax to their corresponding Angular event callbacks. Does not account for\n * input/output properties due to Angular limitations.\n *\n * @example\n * <!-- bad: new object every time -->\n * <div [q-bind]=\"{class: 'a', onClick: click}\"></div>\n *\n * <!-- good: stable reference -->\n * <div [q-bind]=\"buttonProps\"></div>\n */\n@Directive({\n  selector: \"[q-bind]\",\n})\nexport class QBindDirective implements OnDestroy {\n  readonly bind = input.required<Dict | undefined>({alias: \"q-bind\"})\n\n  readonly bindOptions = input<NgBindOptions>({}, {alias: \"q-bind-options\"})\n\n  private readonly elementRef = inject(ElementRef<HTMLElement>)\n  private readonly renderer = inject(Renderer2)\n  private readonly injector = inject(Injector)\n  private readonly listeners = new Map<string, VoidFunction>()\n  private prev: Dict = {}\n\n  readonly omittedProps = computed(() => {\n    const opts = this.bindOptions()\n    return new Set(Array.from(opts.omittedProps || []))\n  })\n\n  constructor() {\n    runInInjectionContext(this.injector, () => {\n      effect(() => {\n        const next = this.bind()\n        if (!isEqual(next, this.prev)) {\n          this.handleAttrs(this.prev, next || {})\n          this.prev = {...next}\n        }\n      })\n    })\n  }\n\n  ngOnDestroy(): void {\n    this.listeners.forEach((unlisten) => unlisten())\n    this.listeners.clear()\n  }\n\n  private removeClass(names?: string): void {\n    if (!names) {\n      return\n    }\n\n    const el = this.elementRef.nativeElement\n    for (const name of names.split(\",\")) {\n      this.renderer.removeClass(el, name)\n    }\n  }\n\n  private addClass(names: string): void {\n    const el = this.elementRef.nativeElement\n    for (const className of names.split(\" \")) {\n      for (const name of className.split(\",\")) {\n        this.renderer.addClass(el, name)\n      }\n    }\n  }\n\n  private removeStyle(style?: StyleObject): void {\n    if (!style) {\n      return\n    }\n\n    const el = this.elementRef.nativeElement\n    for (const name of Object.keys(style)) {\n      this.renderer.removeStyle(el, name, RendererStyleFlags2.DashCase)\n    }\n  }\n\n  private addStyle(style: StyleObject): void {\n    const el = this.elementRef.nativeElement\n    for (const [name, value] of Object.entries(style)) {\n      this.renderer.setStyle(el, name, value, RendererStyleFlags2.DashCase)\n    }\n  }\n\n  private addEventListener(name: string, callback: EventListener): void {\n    const eventName = name.substring(2)\n\n    this.listeners.get(name)?.()\n    const unlisten = this.renderer.listen(\n      this.elementRef.nativeElement,\n      eventName,\n      callback,\n    )\n    this.listeners.set(name, unlisten)\n  }\n\n  private handleAttrs(prevProps: Dict, nextProps: Dict): void {\n    const el = this.elementRef.nativeElement\n\n    for (const [name, value] of Object.entries(prevProps)) {\n      if (name in nextProps || this.omittedProps().has(name)) {\n        continue\n      }\n\n      if (name.startsWith(\"on\")) {\n        this.listeners.get(name)?.()\n        this.listeners.delete(name)\n        continue\n      }\n\n      switch (name) {\n        case \"class\":\n          this.removeClass(value as string)\n          continue\n        case \"style\":\n          this.removeStyle(value as StyleObject)\n          continue\n        case \"value\":\n          this.renderer.setProperty(el, \"value\", undefined)\n          continue\n        case \"textContent\":\n          this.renderer.setProperty(el, \"textContent\", \"\")\n          continue\n        case \"checked\":\n          this.renderer.setProperty(el, \"checked\", false)\n          continue\n      }\n      this.renderer.removeAttribute(el, name)\n    }\n\n    for (const [name, value] of Object.entries(nextProps)) {\n      if (name in prevProps && isEqual(value, prevProps[name])) {\n        continue\n      }\n\n      if (name.startsWith(\"on\")) {\n        const prevHandler = prevProps[name]\n        if (isEqual(prevHandler, value)) {\n          continue\n        }\n\n        this.addEventListener(name, value as EventListener)\n        continue\n      }\n\n      switch (name) {\n        case \"class\":\n          this.removeClass(prevProps[name] as string)\n          this.addClass(value as string)\n          continue\n        case \"style\":\n          this.removeStyle(prevProps[name] as StyleObject)\n          this.addStyle(value as StyleObject)\n          continue\n        case \"value\":\n        case \"checked\":\n        case \"textContent\":\n          this.renderer.setProperty(el, name, value)\n          continue\n      }\n\n      if (isString(value) || isNumber(value)) {\n        this.renderer.setAttribute(el, name, `${value}`)\n        continue\n      }\n\n      if (value === true) {\n        this.renderer.setAttribute(el, name, \"\")\n      } else {\n        this.renderer.removeAttribute(el, name)\n      }\n    }\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {normalizeAriaAttr} from \"@qualcomm-ui/utils/attributes\"\nimport {clsx} from \"@qualcomm-ui/utils/clsx\"\nimport {isObject, isString} from \"@qualcomm-ui/utils/guard\"\nimport {createPropNormalizer} from \"@qualcomm-ui/utils/machine\"\n\nconst propMap: Record<string, string> = {\n  className: \"class\",\n  defaultChecked: \"checked\",\n  defaultValue: \"value\",\n  htmlFor: \"for\",\n  onBlur: \"onfocusout\",\n  onChange: \"oninput\",\n  onDoubleClick: \"ondblclick\",\n  onFocus: \"onfocusin\",\n  readOnly: \"readonly\",\n}\n\nconst preserveKeys: Set<string> = new Set<string>([\n  \"viewBox\",\n  \"className\",\n  \"preserveAspectRatio\",\n  \"fillRule\",\n  \"clipPath\",\n  \"clipRule\",\n])\n\nconst transformers: Record<string, (value: unknown) => any> = {\n  \"aria-hidden\": normalizeAriaAttr,\n}\n\nexport type StyleObject = Record<string, string | number>\n\nexport type Dict = Record<string, any>\n\nexport const normalizeProps = createPropNormalizer((props) => {\n  const normalized: Dict = {}\n\n  for (const [key, value] of Object.entries(props)) {\n    if (key === \"style\") {\n      if (isString(value)) {\n        normalized[\"style\"] = serializeStyle(value)\n      } else if (isObject(value)) {\n        normalized[\"style\"] = hyphenateStyle(value)\n      }\n\n      continue\n    }\n\n    if (key === \"className\") {\n      if (isString(value)) {\n        normalized[\"class\"] = value\n      } else {\n        normalized[\"class\"] = clsx(value)\n      }\n      continue\n    }\n\n    if (key === \"children\") {\n      if (isString(value)) {\n        normalized[\"textContent\"] = value\n      }\n\n      continue\n    }\n\n    if (key in transformers) {\n      normalized[key] = transformers[key](value)\n      continue\n    }\n\n    normalized[toAngularProp(key)] = value\n  }\n\n  return normalized\n})\n\nconst STYLE_REGEX = /((?:--)?(?:\\w+-?)+)\\s*:\\s*([^;]*)/g\n\nfunction serializeStyle(style: string) {\n  const res: StyleObject = {}\n\n  let match: RegExpExecArray | null\n\n  while ((match = STYLE_REGEX.exec(style))) {\n    res[match[1]] = match[2]\n  }\n\n  return res\n}\n\nfunction hyphenateStyle(style: Record<string, string | number>): StyleObject {\n  const res: StyleObject = {}\n\n  for (const [property, value] of Object.entries(style)) {\n    if (value === null || value === undefined) {\n      continue\n    }\n\n    res[hyphenateStyleName(property)] = value\n  }\n\n  return res\n}\n\nconst cache = new Map<string, string>()\nconst uppercasePattern = /[A-Z]/g\nconst msPattern = /^ms-/\n\nfunction hyphenateStyleName(name: string) {\n  if (name.startsWith(\"--\")) {\n    return name\n  }\n\n  if (cache.has(name)) {\n    return cache.get(name)!\n  }\n\n  const hName = name.replace(uppercasePattern, toHyphenLower)\n\n  return cache.set(name, msPattern.test(hName) ? `-${hName}` : hName).get(name)!\n}\n\nfunction toHyphenLower(match: string) {\n  return `-${match.toLowerCase()}`\n}\n\nfunction toAngularProp(prop: string) {\n  if (prop in propMap) {\n    return propMap[prop]\n  }\n\n  if (preserveKeys.has(prop)) {\n    return prop\n  }\n\n  return prop.toLowerCase()\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {signal} from \"@angular/core\"\n\nexport function createRefs<T>(refs: T) {\n  const ref = signal<T>(refs)\n\n  return {\n    get<K extends keyof T>(key: K): T[K] {\n      return ref()[key]\n    },\n    set<K extends keyof T>(key: K, value: T[K]) {\n      ref.update((prev) => ({\n        ...prev,\n        [key]: value,\n      }))\n    },\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {effect, type Injector, runInInjectionContext} from \"@angular/core\"\n\nimport {isEqual} from \"@qualcomm-ui/utils/equal\"\nimport {isFunction} from \"@qualcomm-ui/utils/guard\"\n\nfunction access<T>(value: T | (() => T)): T {\n  return isFunction(value) ? value() : value\n}\n\nexport function useTrack(\n  injector: Injector,\n): (deps: any[], _effect: VoidFunction) => void {\n  return (deps, _effect) => {\n    let prevDeps: any[] = []\n    let isInitialized = false\n    let isMounted = false\n\n    runInInjectionContext(injector, () => {\n      // Separate effect to track mount state\n      effect(() => {\n        queueMicrotask(() => {\n          isMounted = true\n        })\n      })\n\n      effect(() => {\n        const currentDeps = deps.map((d) => access(d))\n\n        if (!isInitialized) {\n          prevDeps = currentDeps\n          isInitialized = true\n          return\n        }\n\n        if (!isMounted) {\n          return\n        }\n\n        let changed = false\n        for (let i = 0; i < deps.length; i++) {\n          if (!isEqual(prevDeps[i], currentDeps[i])) {\n            changed = true\n            break\n          }\n        }\n\n        if (changed) {\n          prevDeps = currentDeps\n          _effect()\n        }\n      })\n    })\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  afterRenderEffect,\n  computed as computedSignal,\n  type Injector,\n  isSignal,\n  runInInjectionContext,\n  type Signal,\n  untracked,\n} from \"@angular/core\"\n\nimport {createScope} from \"@qualcomm-ui/dom/query\"\nimport {toArray} from \"@qualcomm-ui/utils/array\"\nimport {ensure, isFunction, isString} from \"@qualcomm-ui/utils/guard\"\nimport {\n  type ActionsOrFn,\n  type BindableContext,\n  type BindableIds,\n  type ChooseFn,\n  type ComputedFn,\n  type CtxDetails,\n  type CtxValue,\n  type DetailTuple,\n  type EventType,\n  type GuardFn,\n  INIT_STATE,\n  type Machine,\n  type MachineConfig,\n  type MachineSchema,\n  MachineStatus,\n  type Params,\n  type SendFn,\n  type Transition,\n  type ValueOrFn,\n  type WatchParams,\n} from \"@qualcomm-ui/utils/machine\"\nimport {compact} from \"@qualcomm-ui/utils/object\"\n\nimport {bindable} from \"./bindable\"\nimport {bindableId} from \"./bindable-id\"\nimport {bindableIdCollection} from \"./bindable-id-collection\"\nimport {createRefs} from \"./refs\"\nimport {useTrack} from \"./track\"\n\nexport interface MachineOpts {\n  /**\n   * If true, enable debug logging.\n   *\n   * @default false\n   */\n  debug?: boolean | undefined\n}\n\nexport function useMachine<T extends MachineSchema>(\n  config: MachineConfig<T>,\n  userProps: Partial<T[\"props\"]> | Signal<Partial<T[\"props\"]>> = {},\n  injector: Injector,\n  opts: MachineOpts = {},\n): Machine<T> {\n  const debug = (...args: any[]) => {\n    if (opts.debug) {\n      console.debug(...args)\n    }\n  }\n\n  const scope = computedSignal(() => {\n    const {getRootNode, id} = access<any>(userProps)\n    return createScope({getRootNode, id})\n  })\n\n  const configIds = config.ids?.({\n    bindableId,\n    bindableIdCollection: () => bindableIdCollection(),\n  })\n\n  const ids: BindableIds<T> = {\n    collection(key) {\n      return configIds?.[key]\n    },\n    get(key) {\n      return configIds?.[key]?.get?.()\n    },\n    register(key, valueOrParams, onDestroy?: any) {\n      if (\n        typeof valueOrParams === \"object\" &&\n        valueOrParams !== null &&\n        \"id\" in valueOrParams\n      ) {\n        const params = valueOrParams\n        configIds?.[key].set?.(params.id)\n        params.onDestroy?.(() => configIds?.[key].set?.(undefined))\n      } else {\n        configIds?.[key].set?.(valueOrParams)\n        onDestroy?.(() => configIds?.[key].set?.(undefined))\n      }\n    },\n    set(key, value) {\n      configIds?.[key].set?.(value)\n    },\n  }\n\n  const props = computedSignal(\n    () =>\n      config.props?.({\n        props: compact(access(userProps)),\n        scope: {...scope(), ids},\n      }) ?? access(userProps),\n  )\n\n  const prop = useProp<T[\"props\"]>(props)\n\n  let previousEventRef: any = null\n  let eventRef: any = {type: \"\"}\n\n  const getEvent = () => ({\n    ...eventRef,\n    current() {\n      return eventRef\n    },\n    previous() {\n      return previousEventRef\n    },\n  })\n\n  const context: BindableContext<T> = {\n    get<K extends keyof T[\"context\"]>(key: K) {\n      return configContext![key]?.get()\n    },\n    hash(key): string | undefined {\n      const current = configContext?.[key].get()\n      return configContext?.[key].hash(current)\n    },\n    initial<K extends keyof T[\"context\"]>(key: K) {\n      return configContext?.[key].initial\n    },\n    set<K extends keyof T[\"context\"]>(\n      key: K,\n      value: ValueOrFn<CtxValue<T[\"context\"][K]>>,\n      ...details: DetailTuple<CtxDetails<T[\"context\"][K]>>\n    ): void {\n      configContext?.[key].set(value, ...(details as any))\n    },\n  }\n\n  const refs = createRefs(config.refs?.({context, prop}) ?? {})\n\n  const configContext = config.context?.({\n    bindable,\n    flush,\n    getComputed() {\n      return computed\n    },\n    getContext() {\n      return context\n    },\n    getEvent() {\n      return getEvent()\n    },\n    getRefs() {\n      return refs\n    },\n    prop,\n    get scope() {\n      return {...scope(), ids}\n    },\n  })\n\n  const computed: ComputedFn<T> = (key) => {\n    ensure(config.computed, () => `No computed object found on machine`)\n    const fn = config.computed[key]\n    return fn({\n      computed,\n      context,\n      prop,\n      refs,\n      get scope() {\n        return {...scope(), ids}\n      },\n    })\n  }\n\n  // Create the actions object with direct property access\n  const actions = {} as {\n    [K in keyof T[\"actions\"]]: () => void\n  }\n\n  if (config.actions) {\n    for (const key of Object.keys(config.actions) as Array<\n      keyof T[\"actions\"]\n    >) {\n      const actionFn = config.actions[key]\n\n      actions[key] = () => {\n        return actionFn(getParams())\n      }\n    }\n  }\n\n  let effectsRef = new Map<string, VoidFunction>()\n  let transitionRef: Transition<T> | null = null\n\n  const action = (keys: ActionsOrFn<T> | undefined) => {\n    if (!keys) {\n      return\n    }\n    const strs = isFunction(keys) ? keys(getParams()) : keys\n    if (!strs) {\n      return\n    }\n    for (const key of strs) {\n      const fn = config.actions?.[key]\n      if (fn) {\n        fn(getParams())\n      }\n    }\n  }\n\n  const guard = <K extends keyof T[\"guards\"]>(guard: K | GuardFn<T>) => {\n    if (isFunction(guard)) {\n      return guard(getParams())\n    }\n    return config.guards?.[guard](getParams())\n  }\n\n  const choose: ChooseFn<T> = (transitions) => {\n    return toArray(transitions).find((t) => {\n      let result: boolean | undefined = !t.guard\n      if (isString(t.guard)) {\n        result = !!guard(t.guard)\n      } else if (isFunction(t.guard)) {\n        result = t.guard(getParams())\n      }\n      return result\n    })\n  }\n\n  const effect = (keys: (keyof T[\"effects\"])[] | undefined) => {\n    if (!keys) {\n      return undefined\n    }\n    const fns = keys.map((s) => {\n      return config.effects?.[s]\n    })\n    const cleanups: VoidFunction[] = []\n    for (const fn of fns) {\n      const cleanup = fn?.(getParams())\n      if (cleanup) {\n        cleanups.push(cleanup)\n      }\n    }\n    return () => cleanups.forEach((fn) => fn?.())\n  }\n\n  const state = bindable(() => ({\n    defaultValue: config.initialState({prop}),\n    name: \"state\",\n    onChange: (nextState, details: unknown, prevState) => {\n      // compute effects: exit -> transition -> enter\n\n      // exit effects\n      if (prevState) {\n        const exitEffects = effectsRef.get(prevState)\n        exitEffects?.()\n        effectsRef.delete(prevState)\n      }\n\n      // exit actions\n      if (prevState) {\n        action(config.states[prevState]?.exit)\n      }\n\n      // transition actions\n      action(transitionRef?.actions)\n\n      // enter effect\n      const cleanup = effect(config.states[nextState]?.effects)\n      if (cleanup) {\n        effectsRef.set(nextState as string, cleanup)\n      }\n\n      // root entry actions\n      if (prevState === \"__init__\") {\n        action(config.onInit?.actions)\n        const cleanup = effect(config.onInit?.effects ?? [])\n        if (cleanup) {\n          effectsRef.set(\"__init__\", cleanup)\n        }\n      }\n\n      // enter actions\n      action(config.states[nextState]?.entry)\n    },\n  }))\n\n  const getState = () => ({\n    ...state,\n    hasTag(tag: T[\"tag\"]) {\n      return !!config.states[state.get()]?.tags?.includes(tag)\n    },\n    matches(...values: T[\"state\"][]) {\n      return values.includes(state.get())\n    },\n  })\n\n  const send = (event: EventType<T>) => {\n    queueMicrotask(() => {\n      previousEventRef = {...eventRef}\n      eventRef = {...event}\n      const currentState = state.get()\n\n      debug(\"send\", {currentState, event})\n\n      const transitions =\n        config.states[currentState]?.on?.[event.type] ?? config.on?.[event.type]\n\n      const transition = choose(transitions)\n      if (!transition) {\n        return\n      }\n\n      // save current transition\n      transitionRef = transition\n\n      const target = transition.target ?? currentState\n      const changed = target !== currentState\n\n      debug(\"transition\", transition)\n\n      if (changed) {\n        state.set(target)\n      } else if (transition.reenter && !changed) {\n        // reenter will re-invoke the current state\n        state.invoke(currentState, currentState)\n      } else {\n        // call transition actions\n        action(transition.actions ?? [])\n      }\n    })\n  }\n\n  const getParams = (): Params<T> => ({\n    action,\n    actions,\n    choose,\n    computed,\n    context,\n    event: getEvent(),\n    flush,\n    guard,\n    prop,\n    refs,\n    get scope() {\n      return {...scope(), ids}\n    },\n    send: send as SendFn<T>,\n    state: getState(),\n    track: useTrack(injector),\n  })\n\n  config.watch?.(getParams() as WatchParams<T>)\n\n  let status: MachineStatus = MachineStatus.NOT_STARTED\n\n  runInInjectionContext(injector, () => {\n    afterRenderEffect((onCleanup) => {\n      const started = status === MachineStatus.STARTED\n\n      status = MachineStatus.STARTED\n\n      debug(started ? \"rehydrating...\" : \"initializing...\")\n\n      untracked(() => state.invoke(state.initial, INIT_STATE))\n\n      onCleanup(() => {\n        debug(\"unmounting...\")\n\n        status = MachineStatus.STOPPED\n\n        effectsRef.forEach((fn) => fn())\n\n        effectsRef = new Map()\n        transitionRef = null\n\n        action(config.onDestroy?.actions)\n      })\n    })\n  })\n\n  return {\n    computed,\n    context,\n    event: getEvent(),\n    prop,\n    refs,\n    get scope() {\n      return {...scope(), ids}\n    },\n    send: send as SendFn<T>,\n    state: getState(),\n  }\n}\n\nfunction flush(fn: VoidFunction) {\n  queueMicrotask(() => {\n    fn()\n  })\n}\n\nfunction access<T>(value: T | Signal<T>) {\n  return isSignal(value) ? value() : value\n}\n\nfunction useProp<T>(value: Signal<T>) {\n  return function get<K extends keyof T>(key: K): T[K] {\n    return value()[key]\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  effect,\n  ElementRef,\n  inject,\n  Injector,\n  Renderer2,\n  RendererStyleFlags2,\n  runInInjectionContext,\n  type Signal,\n  signal,\n} from \"@angular/core\"\n\nimport {isEqual} from \"@qualcomm-ui/utils/equal\"\nimport {isFunction, isNumber, isString} from \"@qualcomm-ui/utils/guard\"\nimport {mergeProps} from \"@qualcomm-ui/utils/merge-props\"\n\nimport type {Dict, StyleObject} from \"./normalize-props\"\n\nexport interface TrackBindingsConfig {\n  debug?: boolean | undefined\n\n  /**\n   * If true, the default prop spreader for this part will not be initialized.\n   */\n  disabled?: boolean | undefined\n\n  /**\n   * Override the ElementRef target for the property spreader function.\n   */\n  elementRef?: ElementRef | (() => ElementRef)\n\n  /**\n   * Prop getter for additional props to spread onto the host element.\n   */\n  extraBindings?: (() => Dict) | Signal<Dict>\n}\n\ntype InitTrackerFn = ((opts?: TrackBindingsConfig) => void) & {\n  /**\n   * Add additional props to spread onto the host element.\n   */\n  extendWith: (computedProps: () => Dict) => void\n  setDisabled: (disabled: boolean) => void\n}\n\n/**\n * Creates a reactive property binding system that dynamically applies computed\n * properties to a host element. This function sets up an effect that watches for\n * changes in the provided property getter and efficiently updates the DOM element\n * accordingly.\n *\n * @param propGetter - A function that returns a dictionary of properties to bind to the element.\n *   Supports attributes, CSS classes, styles, event listeners, and DOM properties.\n *\n * @returns An initialization function that starts the reactive binding process\n *\n * @example\n * ```typescript\n * @Component({\n *   selector: 'my-component',\n *   template: '<div>Content</div>'\n * })\n * export class MyComponent {\n *   protected readonly isExpanded = signal(false)\n *\n *   private readonly trackBindings = useTrackBindings(() => ({\n *     class: 'active component',\n *     'aria-expanded': this.isExpanded(),\n *   }))\n *\n *   ngOnInit() {\n *     // Start the reactive binding\n *     this.trackBindings()\n *   }\n * }\n * ```\n */\nexport function useTrackBindings(propGetter: () => Dict): InitTrackerFn {\n  let shouldDebug: boolean | undefined\n  let disabled = false\n  const additionalPropGetters: (() => Dict)[] = []\n  const debug = (...args: any[]) => {\n    if (shouldDebug) {\n      console.debug(...args)\n    }\n  }\n\n  let elementRef = inject(ElementRef<HTMLElement>)\n  const renderer = inject(Renderer2)\n  const listeners = new Map<string, VoidFunction>()\n  const injector = inject(Injector)\n\n  let prev: Dict = {}\n\n  function removeClass(names?: string) {\n    if (!names) {\n      return\n    }\n    const el = elementRef.nativeElement\n    for (const name of names.split(\",\")) {\n      renderer.removeClass(el, name)\n    }\n  }\n\n  function addClass(names: string) {\n    const el = elementRef.nativeElement\n    for (const name of names.split(\",\")) {\n      for (const className of name.split(\" \")) {\n        renderer.addClass(el, className)\n      }\n    }\n  }\n  function removeStyle(style?: StyleObject) {\n    if (!style) {\n      return\n    }\n    const el = elementRef.nativeElement\n    for (const name of Object.keys(style)) {\n      renderer.removeStyle(el, name, RendererStyleFlags2.DashCase)\n    }\n  }\n\n  function addStyle(style: StyleObject) {\n    const el = elementRef.nativeElement\n    for (const [name, value] of Object.entries(style)) {\n      renderer.setStyle(el, name, value, RendererStyleFlags2.DashCase)\n    }\n  }\n\n  function addEventListener(name: string, callback: EventListener) {\n    const eventName = name.substring(2)\n    debug(`Binding event: ${name} -> ${eventName}`)\n    listeners.get(name)?.()\n    const unlisten = renderer.listen(\n      elementRef.nativeElement,\n      name.substring(2),\n      callback,\n    )\n    listeners.set(name, unlisten)\n  }\n\n  function handleAttrs(prevProps: Dict, nextProps: Dict): void {\n    const el = elementRef.nativeElement\n\n    for (const [name, value] of Object.entries(prevProps)) {\n      if (name in nextProps) {\n        continue\n      }\n      if (name.startsWith(\"on\")) {\n        listeners.get(name)?.()\n        listeners.delete(name) // Ensure cleanup\n        continue\n      }\n      switch (name) {\n        case \"class\":\n          removeClass(value as string)\n          continue\n        case \"style\":\n          removeStyle(value as StyleObject)\n          continue\n        case \"value\":\n          renderer.setProperty(el, \"value\", undefined)\n          continue\n        case \"textContent\":\n          renderer.setProperty(el, \"textContent\", \"\")\n          continue\n        case \"checked\":\n          renderer.setProperty(el, \"checked\", false)\n          continue\n      }\n      renderer.removeAttribute(el, name)\n    }\n\n    for (const [name, value] of Object.entries(nextProps)) {\n      if (name in prevProps && isEqual(value, prevProps[name])) {\n        continue\n      }\n      if (name.startsWith(\"on\")) {\n        const prevHandler = prevProps[name]\n        // Skip if it's the exact same function reference\n        if (isEqual(prevHandler, value)) {\n          continue\n        }\n        addEventListener(name, value as EventListener)\n        continue\n      }\n\n      switch (name) {\n        case \"class\":\n          removeClass(prevProps[name] as string)\n          addClass(value as string)\n          continue\n        case \"style\":\n          removeStyle(prevProps[name] as StyleObject)\n          addStyle(value as StyleObject)\n          continue\n        case \"value\":\n        case \"checked\":\n        case \"textContent\":\n          renderer.setAttribute(el, name, `${value}`)\n          renderer.setProperty(el, name, value)\n          continue\n      }\n      if (isString(value) || isNumber(value)) {\n        renderer.setAttribute(el, name, `${value}`)\n        continue\n      }\n      if (value === true) {\n        renderer.setAttribute(el, name, \"\")\n      } else {\n        renderer.removeAttribute(el, name)\n      }\n    }\n  }\n\n  const initialized = signal(false)\n\n  function getNextBindings() {\n    if (!additionalPropGetters.length) {\n      return propGetter()\n    }\n    return additionalPropGetters.reduce((acc: Dict, current) => {\n      return mergeProps(acc, current())\n    }, propGetter())\n  }\n\n  runInInjectionContext(injector, () => {\n    effect(() => {\n      // only start running the effect after the implementing component initializes.\n      // This is used to prevent the binding operation from starting before the\n      // parent machine has fully initialized.\n      if (initialized()) {\n        const next = getNextBindings()\n        if (!isEqual(next, prev)) {\n          handleAttrs(prev, next)\n          prev = {...next}\n        }\n      }\n    })\n  })\n\n  const initFn: InitTrackerFn = function (opts: TrackBindingsConfig = {}) {\n    if (opts.disabled || disabled) {\n      return\n    }\n    shouldDebug = opts.debug\n    if (opts.elementRef) {\n      elementRef = isFunction(opts.elementRef)\n        ? opts.elementRef()\n        : opts.elementRef\n    }\n    if (opts.extraBindings) {\n      additionalPropGetters.push(opts.extraBindings)\n    }\n\n    initialized.set(true)\n  } as InitTrackerFn\n\n  initFn.extendWith = (extraProps: () => Dict) => {\n    additionalPropGetters.push(extraProps)\n  }\n\n  initFn.setDisabled = (isDisabled: boolean) => {\n    disabled = isDisabled\n  }\n\n  return initFn\n}\n\nexport function applyBindings(\n  el: HTMLElement,\n  props: Dict,\n  renderer: Renderer2,\n): void {\n  function removeClass(names?: string) {\n    if (!names) {\n      return\n    }\n    for (const name of names.split(\",\")) {\n      renderer.removeClass(el, name)\n    }\n  }\n\n  function addClass(names: string) {\n    for (const name of names.split(\",\")) {\n      for (const className of name.split(\" \")) {\n        renderer.addClass(el, className)\n      }\n    }\n  }\n  function removeStyle(style?: StyleObject) {\n    if (!style) {\n      return\n    }\n    for (const name of Object.keys(style)) {\n      renderer.removeStyle(el, name, RendererStyleFlags2.DashCase)\n    }\n  }\n\n  function addStyle(style: StyleObject) {\n    for (const [name, value] of Object.entries(style)) {\n      renderer.setStyle(el, name, value, RendererStyleFlags2.DashCase)\n    }\n  }\n\n  for (const [name, value] of Object.entries(props)) {\n    if (name.startsWith(\"on\")) {\n      // skip event listeners\n    }\n\n    switch (name) {\n      case \"class\":\n        removeClass(value as string)\n        addClass(value as string)\n        continue\n      case \"style\":\n        removeStyle(value as StyleObject)\n        addStyle(value as StyleObject)\n        continue\n      case \"value\":\n      case \"checked\":\n      case \"textContent\":\n        renderer.setAttribute(el, name, `${value}`)\n        renderer.setProperty(el, name, value)\n        continue\n    }\n    if (isString(value) || isNumber(value)) {\n      renderer.setAttribute(el, name, `${value}`)\n      continue\n    }\n    if (value === true) {\n      renderer.setAttribute(el, name, \"\")\n    } else {\n      renderer.removeAttribute(el, name)\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["access","computedSignal","computed","mergeProps"],"mappings":"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"}