@qualcomm-ui/angular-core 1.1.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"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 */\nexport type MergeProps<T extends readonly Props[]> = T extends readonly [\n infer First extends Props,\n ...infer Rest extends readonly Props[],\n]\n ? First & MergeProps<Rest>\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 */\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\"\n\nimport {mergeProps} from \"./merge-props\"\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"],"mappings":"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"}
1
+ {"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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"}
@@ -1,9 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, input, booleanAttribute, output, inject, computed, Directive, ElementRef, effect, model, Injector, untracked } from '@angular/core';
3
- import { BaseApiContextService, createApiContext, useTrackBindings, mergeProps, useMachine, normalizeProps } from '@qualcomm-ui/angular-core/machine';
3
+ import { BaseApiContextService, createApiContext, useTrackBindings, useMachine, normalizeProps } from '@qualcomm-ui/angular-core/machine';
4
4
  import { useControlledState } from '@qualcomm-ui/angular-core/state';
5
5
  import { useOnDestroy, useId, useIsMounted } from '@qualcomm-ui/angular-core/common';
6
6
  import { PresenceContextService, usePresenceRenderer, CorePresenceDirective } from '@qualcomm-ui/angular-core/presence';
7
+ import { mergeProps } from '@qualcomm-ui/utils/merge-props';
7
8
  import { DOCUMENT } from '@angular/common';
8
9
  import { menuMachine, createMenuApi } from '@qualcomm-ui/core/menu';
9
10
  import { presenceMachine, createPresenceApi } from '@qualcomm-ui/core/presence';