@cuby-ui/cdk 0.0.467 → 0.0.469
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.
- package/README.md +25 -25
- package/esm2022/constants/empty.mjs +1 -1
- package/esm2022/constants/handlers.mjs +1 -1
- package/esm2022/constants/index.mjs +1 -1
- package/esm2022/constants/svg-node-filter.mjs +1 -1
- package/esm2022/constants/units.mjs +1 -1
- package/esm2022/date-time/index.mjs +1 -1
- package/esm2022/date-time/time.mjs +1 -1
- package/esm2022/directives/active-zone/active-zone.directive.mjs +1 -1
- package/esm2022/directives/active-zone/index.mjs +1 -1
- package/esm2022/directives/auto-resizing.directive.mjs +1 -1
- package/esm2022/directives/click-outside.directive.mjs +1 -1
- package/esm2022/directives/content-editable-value-accessor.directive.mjs +1 -1
- package/esm2022/directives/dimensions-observer.directive.mjs +1 -1
- package/esm2022/directives/drag-drop/index.mjs +1 -1
- package/esm2022/directives/element.directive.mjs +1 -1
- package/esm2022/directives/focus-trap.directive.mjs +1 -1
- package/esm2022/directives/hovered/hovered.directive.mjs +1 -1
- package/esm2022/directives/hovered/hovered.service.mjs +1 -1
- package/esm2022/directives/hovered/index.mjs +1 -1
- package/esm2022/directives/index.mjs +1 -1
- package/esm2022/directives/item.directive.mjs +1 -1
- package/esm2022/directives/let.context.mjs +1 -1
- package/esm2022/directives/let.directive.mjs +1 -1
- package/esm2022/index.mjs +1 -1
- package/esm2022/interfaces/dimensions.mjs +1 -1
- package/esm2022/interfaces/index.mjs +1 -1
- package/esm2022/interfaces/on-change.mjs +1 -1
- package/esm2022/interfaces/on-touched.mjs +1 -1
- package/esm2022/models/consumption-units.mjs +1 -1
- package/esm2022/models/index.mjs +1 -1
- package/esm2022/observables/if-map.mjs +1 -1
- package/esm2022/observables/index.mjs +1 -1
- package/esm2022/observables/typed-from-event.mjs +1 -1
- package/esm2022/observables/watch.mjs +1 -1
- package/esm2022/observables/zone.mjs +1 -1
- package/esm2022/pipes/filter.pipe.mjs +1 -1
- package/esm2022/pipes/index.mjs +1 -1
- package/esm2022/services/consumption-units.service.mjs +1 -1
- package/esm2022/services/destroy.service.mjs +1 -1
- package/esm2022/services/id.service.mjs +1 -1
- package/esm2022/services/index.mjs +1 -1
- package/esm2022/services/popover.service.mjs +1 -1
- package/esm2022/tokens/active-element.mjs +1 -1
- package/esm2022/tokens/animation-frame.mjs +1 -1
- package/esm2022/tokens/environment.mjs +1 -1
- package/esm2022/tokens/history.mjs +1 -1
- package/esm2022/tokens/index.mjs +1 -1
- package/esm2022/tokens/local-storage.mjs +1 -1
- package/esm2022/tokens/navigator.mjs +1 -1
- package/esm2022/tokens/removed-element.mjs +1 -1
- package/esm2022/tokens/session-storage.mjs +1 -1
- package/esm2022/tokens/user-agent.mjs +1 -1
- package/esm2022/tokens/window.mjs +1 -1
- package/esm2022/types/context.mjs +1 -1
- package/esm2022/types/date-time.mjs +1 -1
- package/esm2022/types/handler.mjs +1 -1
- package/esm2022/types/index.mjs +1 -1
- package/esm2022/types/input-type.mjs +1 -1
- package/esm2022/types/mapper.mjs +1 -1
- package/esm2022/types/matcher.mjs +1 -1
- package/esm2022/types/nullable.mjs +1 -1
- package/esm2022/types/value-of.mjs +1 -1
- package/esm2022/utils/dom/contains-or-after.mjs +1 -1
- package/esm2022/utils/dom/element-checks.mjs +1 -1
- package/esm2022/utils/dom/get-actual-target.mjs +1 -1
- package/esm2022/utils/dom/get-document-or-shadow-root.mjs +1 -1
- package/esm2022/utils/dom/get-element-obscurers.mjs +1 -1
- package/esm2022/utils/dom/index.mjs +1 -1
- package/esm2022/utils/dom/inject-element.mjs +1 -1
- package/esm2022/utils/dom/point-to-client-rect.mjs +1 -1
- package/esm2022/utils/files/files.uploader.mjs +1 -1
- package/esm2022/utils/files/index.mjs +1 -1
- package/esm2022/utils/files/take-capture-from-video.mjs +1 -1
- package/esm2022/utils/focus/blur-native-focused.mjs +1 -1
- package/esm2022/utils/focus/get-closest-focusable.mjs +1 -1
- package/esm2022/utils/focus/get-native-focused.mjs +1 -1
- package/esm2022/utils/focus/index.mjs +1 -1
- package/esm2022/utils/focus/is-native-focused.mjs +1 -1
- package/esm2022/utils/focus/is-native-keyboard-focusable.mjs +1 -1
- package/esm2022/utils/focus/is-native-mouse-focusable.mjs +1 -1
- package/esm2022/utils/index.mjs +1 -1
- package/esm2022/utils/math/clamp.mjs +1 -1
- package/esm2022/utils/math/index.mjs +1 -1
- package/esm2022/utils/miscellaneous/array-remove.mjs +1 -1
- package/esm2022/utils/miscellaneous/index.mjs +1 -1
- package/esm2022/utils/miscellaneous/is-present.mjs +1 -1
- package/esm2022/utils/miscellaneous/move-item-in-array.mjs +1 -1
- package/esm2022/utils/miscellaneous/pure.mjs +1 -1
- package/esm2022/utils/miscellaneous/px.mjs +1 -1
- package/esm2022/utils/platform/index.mjs +1 -1
- package/esm2022/utils/platform/is-ios.mjs +1 -1
- package/esm2022/utils/token/create-token.mjs +1 -1
- package/esm2022/utils/token/index.mjs +1 -1
- package/esm2022/utils/token/provide.mjs +1 -1
- package/fesm2022/cuby-ui-cdk.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cuby-ui-cdk.mjs","sources":["../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/units.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/date-time/time.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/utils/token/create-token.ts","../../../projects/cdk/utils/token/provide.ts","../../../projects/cdk/tokens/window.ts","../../../projects/cdk/utils/dom/contains-or-after.ts","../../../projects/cdk/utils/dom/element-checks.ts","../../../projects/cdk/utils/dom/get-actual-target.ts","../../../projects/cdk/utils/dom/get-document-or-shadow-root.ts","../../../projects/cdk/utils/math/clamp.ts","../../../projects/cdk/utils/miscellaneous/move-item-in-array.ts","../../../projects/cdk/utils/miscellaneous/array-remove.ts","../../../projects/cdk/utils/miscellaneous/is-present.ts","../../../projects/cdk/utils/miscellaneous/pure.ts","../../../projects/cdk/utils/miscellaneous/px.ts","../../../projects/cdk/utils/dom/get-element-obscurers.ts","../../../projects/cdk/utils/dom/inject-element.ts","../../../projects/cdk/utils/dom/point-to-client-rect.ts","../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/platform/is-ios.ts","../../../projects/cdk/utils/files/files.uploader.ts","../../../projects/cdk/utils/files/take-capture-from-video.ts","../../../projects/cdk/tokens/removed-element.ts","../../../projects/cdk/tokens/active-element.ts","../../../projects/cdk/tokens/animation-frame.ts","../../../projects/cdk/tokens/navigator.ts","../../../projects/cdk/tokens/user-agent.ts","../../../projects/cdk/tokens/environment.ts","../../../projects/cdk/tokens/history.ts","../../../projects/cdk/tokens/local-storage.ts","../../../projects/cdk/tokens/session-storage.ts","../../../projects/cdk/directives/active-zone/active-zone.directive.ts","../../../projects/cdk/directives/hovered/hovered.service.ts","../../../projects/cdk/directives/hovered/hovered.directive.ts","../../../projects/cdk/services/consumption-units.service.ts","../../../projects/cdk/services/destroy.service.ts","../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/popover.service.ts","../../../projects/cdk/directives/drag-drop/drag-list.directive.ts","../../../projects/cdk/directives/drag-drop/drag-drop.directive.ts","../../../projects/cdk/directives/drag-drop/drag-pointer.directive.ts","../../../projects/cdk/directives/auto-resizing.directive.ts","../../../projects/cdk/directives/handle-scroll.directive.ts","../../../projects/cdk/directives/click-outside.directive.ts","../../../projects/cdk/directives/dimensions-observer.directive.ts","../../../projects/cdk/directives/content-editable-value-accessor.directive.ts","../../../projects/cdk/directives/element.directive.ts","../../../projects/cdk/directives/focus-trap.directive.ts","../../../projects/cdk/directives/item.directive.ts","../../../projects/cdk/directives/let.context.ts","../../../projects/cdk/directives/let.directive.ts","../../../projects/cdk/directives/target.directive.ts","../../../projects/cdk/directives/ladder-list.directive.ts","../../../projects/cdk/directives/typed-template.directive.ts","../../../projects/cdk/pipes/filter.pipe.ts","../../../projects/cdk/cuby-ui-cdk.ts"],"sourcesContent":["import { QueryList } from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const CUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const CUI_TRUE_HANDLER = (): true => true;\n","import { Consumption, Unit } from '../models';\n\nexport const UnitsMetricWeight: Unit[] = [\n { label: 'kilogram (kg)', abbreviation: 'kg', value: 'KILOGRAM' },\n { label: 'gram', abbreviation: 'g', value: 'G' },\n { label: 'ton', abbreviation: 'tn', value: 'TONNE' }\n];\n\nexport const UnitsImperialWeight: Unit[] = [\n { label: 'ounce', abbreviation: 'oz', value: 'OZ' },\n { label: 'pound', abbreviation: 'lb', value: 'POUND' },\n { label: 'ton', abbreviation: 'tn', value: 'TON_US' }\n];\n\nexport const UnitsMetricLength: Unit[] = [\n { label: 'meter', abbreviation: 'm', value: 'METER' },\n { label: 'millimeter', abbreviation: 'mm', value: 'MILLI_METER' },\n { label: 'centimeter', abbreviation: 'cm', value: 'CENTI_METER' }\n // { label: 'kilometer', abbreviation: 'km', value: 'KILO_METER' },\n];\n\nexport const UnitsImperialLength: Unit[] = [\n { label: 'foot', abbreviation: 'ft', value: 'FOOT' },\n { label: 'inch', abbreviation: 'i', value: 'INCH' },\n { label: 'yard', abbreviation: 'yd', value: 'YARD' }\n // { label: 'mile', abbreviation: 'm', value: 'MILE' },\n];\n\nexport const UnitsMetricVolume: Unit[] = [\n { label: 'litre', abbreviation: 'l', value: 'LITRE' },\n { label: 'millilitre', abbreviation: 'ml', value: 'MILLI_LITRE' },\n { label: 'cubic metre', abbreviation: 'm³', value: 'CUBIC_METRE' }\n];\n\nexport const UnitsImperialVolume: Unit[] = [\n { label: 'gallon liquid', abbreviation: 'gl', value: 'GALLON_LIQUID' },\n { label: 'gallon dry', abbreviation: 'gd', value: 'GALLON_DRY' },\n { label: 'fluid ounce', abbreviation: 'fo', value: 'FLUID_OUNCE' },\n { label: 'barrel', abbreviation: 'b', value: 'BARREL' },\n { label: 'pint', abbreviation: 'p', value: 'PINT' }\n];\n\nexport const UnitsMetricSquare: Unit[] = [\n { label: 'sq. meter', abbreviation: 'm²', value: 'SQUARE_METRE', initial: 'METER' },\n { label: 'sq. millimeter', abbreviation: 'mm²', value: 'SQUARE_MILLI', initial: 'MILLI_METER' },\n { label: 'sq. centimeter', abbreviation: 'cm²', value: 'SQUARE_CENTI', initial: 'CENTI_METER' }\n];\n\nexport const UnitsImperialSquare: Unit[] = [\n { label: 'sq. foot', abbreviation: 'ft²', value: 'SQUARE_FOOT', initial: 'FOOT' },\n { label: 'sq. inch', abbreviation: 'inch²', value: 'SQUARE_INCH', initial: 'INCH' },\n { label: 'sq. yard', abbreviation: 'yard²', value: 'SQUARE_YARD', initial: 'YARD' }\n];\n\nexport const UnitsAmount: Unit[] = [{ label: 'pieces', value: 'PIECES', abbreviation: 'pcs' }];\n\nexport const UnitsMetric: Partial<Record<Consumption, Unit[]>> = {\n [Consumption.Length]: UnitsMetricLength,\n [Consumption.Square]: UnitsMetricSquare,\n [Consumption.Volume]: UnitsMetricVolume,\n [Consumption.Weight]: UnitsMetricWeight,\n [Consumption.Amount]: UnitsAmount\n};\n\nexport const UnitsImperial: Partial<Record<Consumption, Unit[]>> = {\n [Consumption.Length]: UnitsImperialLength,\n [Consumption.Square]: UnitsImperialSquare,\n [Consumption.Volume]: UnitsImperialVolume,\n [Consumption.Weight]: UnitsImperialWeight,\n [Consumption.Amount]: UnitsAmount\n};\n\nexport const enum UnitsSystem {\n Metric = 'METRIC',\n Imperial = 'IMPERIAL'\n}\n\nexport const SystemUnits: Record<UnitsSystem, Partial<Record<Consumption, Unit[]>>> = {\n [UnitsSystem.Metric]: UnitsMetric,\n [UnitsSystem.Imperial]: UnitsImperial\n};\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }\n};\n","import type { CuiTimeMode } from '../types';\n\nexport class CuiTime {\n constructor(\n public readonly hours: number,\n public readonly minutes: number,\n public readonly seconds = 0,\n public readonly ms = 0\n ) {}\n\n public static fromString(time: string): CuiTime {\n const hours = this.parseHours(time);\n const minutes = Number(time.slice(3, 5)) || 0;\n const seconds = Number(time.slice(6, 8)) || 0;\n const ms = Number(time.slice(9, 12)) || 0;\n\n return new CuiTime(hours, minutes, seconds, ms);\n }\n\n public static fromPT(time: string): CuiTime {\n let duration = time.trim().toUpperCase();\n\n if (!duration.startsWith('P')) {\n throw new Error('Invalid PT format: does not start with P');\n }\n\n duration = duration.substring(1);\n\n if (duration.startsWith('T')) {\n duration = duration.substring(1);\n }\n\n const regex = /(\\d+(\\.\\d+)?)([HMS])/g;\n let match;\n let hours = 0,\n minutes = 0,\n seconds = 0,\n ms = 0;\n\n while ((match = regex.exec(duration)) !== null) {\n const value = parseFloat(match[1]);\n const unit = match[3];\n\n if (unit === 'H') {\n hours = value;\n } else if (unit === 'M') {\n minutes = value;\n } else if (unit === 'S') {\n seconds = Math.floor(value);\n ms = Math.round((value - seconds) * 1000);\n }\n }\n\n return new CuiTime(hours, minutes, seconds, ms);\n }\n\n private static parseHours(time: string): number {\n return Number(time.slice(0, 2));\n }\n\n public toString(mode?: CuiTimeMode): string {\n const needAddMs = mode?.startsWith('HH:MM:SS.MSS') || (!mode && this.ms > 0);\n const needAddSeconds = needAddMs || mode?.startsWith('HH:MM:SS') || (!mode && this.seconds > 0);\n const hhMm = `${this.formatTime(this.hours)}:${this.formatTime(this.minutes)}`;\n const ss = needAddSeconds ? `:${this.formatTime(this.seconds)}` : '';\n const mss = needAddMs ? `.${this.formatTime(this.ms, 3)}` : '';\n\n return `${hhMm}${ss}${mss}`;\n }\n\n public toPT(mode?: CuiTimeMode): string {\n let duration = 'PT';\n if (this.hours !== 0) {\n duration += `${this.hours}H`;\n }\n\n if (this.minutes !== 0) {\n duration += `${this.minutes}M`;\n }\n\n const totalSeconds = this.seconds + this.ms / 1000;\n\n if (totalSeconds !== 0 || duration === 'PT') {\n duration += `${parseFloat(totalSeconds.toFixed(3))}S`;\n }\n\n return duration;\n }\n\n private formatTime(time: number, digits = 2): string {\n return String(time).padStart(digits, '0');\n }\n}\n","import type { CuiBooleanHandler } from '../types';\nimport type { Observable, OperatorFunction } from 'rxjs';\nimport { EMPTY, pipe, switchMap } from 'rxjs';\n\nexport function cuiIfMap<T, G>(\n project: (value: T) => Observable<G>,\n predicate: CuiBooleanHandler<T> = Boolean\n): OperatorFunction<T, G> {\n return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\n}\n","import type { Observable } from 'rxjs';\nimport { fromEvent } from 'rxjs';\n\nexport interface CuiTypedEventTarget<E> {\n addEventListener(\n type: string,\n listener: ((evt: E) => void) | null,\n options?: AddEventListenerOptions | boolean\n ): void;\n removeEventListener(\n type: string,\n listener?: ((evt: E) => void) | null,\n options?: EventListenerOptions | boolean\n ): void;\n}\n\n/**\n * Wrapper around {@link Event} to add typings to target and currentTarget.\n */\nexport type CuiEventWith<G extends Event, T extends CuiTypedEventTarget<G>> = G & {\n readonly currentTarget: T;\n};\n\nexport function cuiTypedFromEvent<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n options?: AddEventListenerOptions\n): Observable<CuiEventWith<WindowEventMap[E], typeof target>>;\n\nexport function cuiTypedFromEvent<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n options?: AddEventListenerOptions\n): Observable<CuiEventWith<DocumentEventMap[E], typeof target>>;\n\nexport function cuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\n target: T,\n event: E,\n options?: AddEventListenerOptions\n): Observable<CuiEventWith<HTMLElementEventMap[E], typeof target>>;\n\nexport function cuiTypedFromEvent<E extends Event, T extends CuiTypedEventTarget<CuiEventWith<E, T>>>(\n target: T,\n event: string,\n options?: AddEventListenerOptions\n): Observable<CuiEventWith<E, T>>;\n\nexport function cuiTypedFromEvent<E extends Event>(\n target: CuiTypedEventTarget<E>,\n event: string,\n options?: AddEventListenerOptions\n): Observable<E>;\n\nexport function cuiTypedFromEvent<E extends Event>(\n target: CuiTypedEventTarget<E>,\n event: string,\n options: AddEventListenerOptions = {}\n): Observable<E> {\n /**\n * @note:\n * in RxJS 7 type signature `CuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\n */\n return fromEvent<E>(target as any, event, options) as unknown as Observable<E>;\n}\n","import { ChangeDetectorRef, inject } from '@angular/core';\nimport type { MonoTypeOperatorFunction } from 'rxjs';\nimport { tap } from 'rxjs';\n\nexport function cuiWatch<T>(cdr = inject(ChangeDetectorRef)): MonoTypeOperatorFunction<T> {\n return tap(() => cdr.markForCheck());\n}\n","import { inject, NgZone } from '@angular/core';\nimport type { MonoTypeOperatorFunction, SchedulerLike, Subscription } from 'rxjs';\nimport { asyncScheduler, Observable, pipe } from 'rxjs';\n\nexport function cuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n source.subscribe({\n next: (value) => zone.run(() => subscriber.next(value)),\n error: (error: unknown) => zone.run(() => subscriber.error(error)),\n complete: () => zone.run(() => subscriber.complete())\n })\n );\n}\n\nexport function cuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) => new Observable((subscriber) => zone.runOutsideAngular(() => source.subscribe(subscriber)));\n}\n\nexport function cuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return pipe(cuiZonefree(zone), cuiZonefull(zone));\n}\n\nclass CuiZoneScheduler implements SchedulerLike {\n constructor(\n private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\n private readonly scheduler: SchedulerLike = asyncScheduler\n ) {}\n\n public now(): number {\n return this.scheduler.now();\n }\n\n public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\n return this.zoneConditionFn(() => this.scheduler.schedule(...args));\n }\n}\n\nexport function cuiZonefreeScheduler(zone = inject(NgZone), scheduler: SchedulerLike = asyncScheduler): SchedulerLike {\n return new CuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\n}\n\nexport function cuiZonefullScheduler(zone = inject(NgZone), scheduler: SchedulerLike = asyncScheduler): SchedulerLike {\n return new CuiZoneScheduler(zone.run.bind(zone), scheduler);\n}\n","import { InjectionToken } from '@angular/core';\n\nexport function cuiCreateToken<T>(defaults: T): InjectionToken<T> {\n return cuiCreateTokenFromFactory(() => defaults);\n}\n\nexport function cuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T> {\n return new InjectionToken<T>('', { factory });\n}\n","import type { ExistingProvider, ProviderToken } from '@angular/core';\n\nexport function cuiProvide<T>(provide: ProviderToken<T>, useExisting: ProviderToken<T>): ExistingProvider;\nexport function cuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean\n): ExistingProvider;\nexport function cuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false\n): ExistingProvider {\n return { provide, useExisting, multi };\n}\n","import { inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { cuiCreateTokenFromFactory } from '../utils/token';\n\nexport const CUI_WINDOW = cuiCreateTokenFromFactory<Window>(() => {\n const { defaultView } = inject(DOCUMENT);\n\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n\n return defaultView;\n});\n","export function cuiContainsOrAfter(current: Node, node: Node): boolean {\n try {\n return current.contains(node) || !!(node.compareDocumentPosition(current) & Node.DOCUMENT_POSITION_PRECEDING);\n } catch {\n return false;\n }\n}\n","export function cuiIsInput(element: Element): element is HTMLInputElement {\n return element.matches('input');\n}\n\nexport function cuiIsTextarea(element: Element): element is HTMLTextAreaElement {\n return element.matches('textarea');\n}\n\nexport function cuiIsTextfield(element: Element): element is HTMLInputElement | HTMLTextAreaElement {\n return cuiIsInput(element) || cuiIsTextarea(element);\n}\n\nexport function cuiIsElement(node?: Element | EventTarget | Node | null): node is Element {\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function cuiIsHTMLElement(node: unknown): node is HTMLElement {\n const defaultView = (node as Element | undefined)?.ownerDocument.defaultView;\n\n return !!node && !!defaultView && node instanceof defaultView.HTMLElement;\n}\n\nexport function cuiIsTextNode(node: Node): node is Text {\n return node.nodeType === Node.TEXT_NODE;\n}\n","/**\n * Gets actual target from open Shadow DOM if event happened within it\n */\nexport function cuiGetActualTarget(event: Event): Node {\n return event.composedPath()[0] as Node;\n}\n","export function cuiGetDocumentOrShadowRoot(node: Node): DocumentOrShadowRoot {\n return 'getRootNode' in node && node.isConnected\n ? (node.getRootNode() as Document)\n : (node.ownerDocument as DocumentOrShadowRoot);\n}\n","/**\n * Clamps a value between two inclusive limits\n *\n * @param value\n * @param min lower limit\n * @param max upper limit\n */\nexport function cuiClamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n","export function cuiMoveItemInArray<T>(array: T[], fromIndex: number, toIndex: number): T[] {\n const resultArray = [...array];\n\n if (fromIndex === toIndex) {\n return resultArray;\n }\n\n const [item] = resultArray.splice(fromIndex, 1);\n\n resultArray.splice(toIndex, 0, item);\n\n return resultArray;\n}\n","export function cuiArrayRemove<T>(array: readonly T[], index: number): T[] {\n return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));\n}\n","export function cuiIsPresent<T>(value?: T | null): value is T {\n return value !== null && value !== undefined;\n}\n","function decorateMethod(\n originalMethod: (...args: unknown[]) => unknown\n): (this: object, ...args: unknown[]) => unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n return function cuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = originalMethod.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n}\n\nfunction decorateGetter(\n originalGetter: () => unknown,\n propertyKey: string | symbol,\n enumerable = true\n): (this: object) => unknown {\n return function cuiPureGetterPatched(this: object): unknown {\n const value = originalGetter.call(this);\n\n Object.defineProperty(this, propertyKey, { enumerable, value });\n\n return value;\n };\n}\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: they must be pure.\n */\nexport function cuiPure<T>(\n target: object,\n propertyKey: string,\n { get, enumerable, value }: TypedPropertyDescriptor<T>\n): TypedPropertyDescriptor<T>;\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * CAUTION: they must be pure.\n */\nexport function cuiPure<A extends unknown[], R>(target: (...args: A) => R, context: any): (...args: A) => R;\n\nexport function cuiPure(\n target: object | ((...args: unknown[]) => unknown),\n propertyKeyOrContext: any | string,\n descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\n if (typeof target === 'function') {\n const context = propertyKeyOrContext as any;\n\n if (context.kind === 'getter') {\n return decorateGetter(target as () => unknown, context.name);\n }\n\n if (context.kind === 'method') {\n return decorateMethod(target as (...args: unknown[]) => unknown);\n }\n\n throw new CuiPureException();\n }\n\n const { get, enumerable, value } = descriptor!;\n const propertyKey = propertyKeyOrContext as string;\n\n if (get) {\n return {\n configurable: true,\n enumerable,\n get: decorateGetter(get, propertyKey, enumerable)\n };\n }\n\n if (typeof value !== 'function') {\n throw new CuiPureException();\n }\n\n const original = value;\n\n return {\n configurable: true,\n enumerable,\n get(): unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = original.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, {\n configurable: true,\n value: patched\n });\n\n return patched as unknown;\n }\n };\n}\n\nexport class CuiPureException extends Error {\n constructor() {\n super('cuiPure can only be used with functions or getters');\n }\n}\n","/**\n * Adds 'px' to the number and turns it into a string\n */\nexport function cuiPx(value: number): string {\n return `${value}px`;\n}\n","import { cuiClamp } from '../math';\nimport { cuiIsPresent } from '../miscellaneous';\n\nimport { cuiGetDocumentOrShadowRoot } from './get-document-or-shadow-root';\n\n/**\n * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible\n *\n * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered\n * ```ts\n * function cuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null\n * ```\n */\nexport function cuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null {\n const { ownerDocument } = element;\n\n if (!ownerDocument?.defaultView || !element.getBoundingClientRect) {\n return null;\n }\n\n const { innerWidth, innerHeight } = ownerDocument.defaultView;\n const doc = cuiGetDocumentOrShadowRoot(element);\n const rect = element.getBoundingClientRect();\n\n if (rect.width === 0 && rect.height === 0) {\n return null;\n }\n\n const left = cuiClamp(Math.round(rect.left) + 2, 0, innerWidth);\n const top = cuiClamp(Math.round(rect.top) + 2, 0, innerHeight);\n const right = cuiClamp(Math.round(rect.right) - 2, 0, innerWidth);\n const bottom = cuiClamp(Math.round(rect.bottom) - 2, 0, innerHeight);\n const horizontalMiddle = cuiClamp(Math.round(rect.left + rect.width / 2), 0, innerWidth);\n const verticalMiddle = cuiClamp(Math.round(rect.top + rect.height / 2), 0, innerHeight);\n const elements = [\n doc.elementFromPoint(horizontalMiddle, top),\n doc.elementFromPoint(horizontalMiddle, bottom),\n doc.elementFromPoint(left, verticalMiddle),\n doc.elementFromPoint(right, verticalMiddle)\n ];\n const nonNull = elements.filter(cuiIsPresent);\n\n if (!nonNull.length) {\n return [];\n }\n\n const filtered = nonNull.filter((el) => !element.contains(el) && !el.contains(element));\n\n return filtered.length === 4 ? (filtered as [Element, Element, Element, Element]) : null;\n}\n","import { ElementRef, inject } from '@angular/core';\n\nexport function cuiInjectElement<T = HTMLElement>(): T {\n return inject(ElementRef).nativeElement;\n}\n","export function cuiPointToClientRect(x = 0, y = 0): DOMRect {\n const rect = {\n x,\n y,\n left: x,\n right: x,\n top: y,\n bottom: y,\n width: 0,\n height: 0\n } as const;\n\n return {\n ...rect,\n toJSON: () => rect\n };\n}\n","export function cuiGetNativeFocused({ activeElement }: Document): Element | null {\n if (!activeElement?.shadowRoot) {\n return activeElement;\n }\n\n let element = activeElement.shadowRoot.activeElement;\n\n while (element?.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","import { cuiGetNativeFocused } from './get-native-focused';\nimport { cuiIsHTMLElement } from '../dom';\n\nexport function cuiBlurNativeFocused(document: Document): void {\n const activeElement = cuiGetNativeFocused(document);\n\n if (cuiIsHTMLElement(activeElement)) {\n activeElement.blur();\n }\n}\n","import { cuiIsHTMLElement } from '../dom';\n\nexport function cuiIsNativeKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n if ((cuiIsHTMLElement(element) && element.isContentEditable) || element.getAttribute('tabIndex') === '0') {\n return true;\n }\n\n switch (element.tagName) {\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'VIDEO':\n case 'AUDIO':\n return element.hasAttribute('controls');\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n default:\n return false;\n }\n}\n","import { cuiIsNativeKeyboardFocusable } from './is-native-keyboard-focusable';\n\nexport function cuiIsNativeMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' || cuiIsNativeKeyboardFocusable(element))\n );\n}\n","import { cuiIsNativeKeyboardFocusable } from './is-native-keyboard-focusable';\nimport { cuiIsNativeMouseFocusable } from './is-native-mouse-focusable';\nimport { cuiIsHTMLElement } from '../dom';\nimport { svgNodeFilter } from '../../constants';\n\nexport interface CuiGetClosestFocusableOptions {\n initial: Element;\n keyboard?: boolean;\n previous?: boolean;\n root: Node;\n}\n\nexport function cuiGetClosestFocusable({\n initial,\n root,\n previous = false,\n keyboard = true\n}: CuiGetClosestFocusableOptions): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? cuiIsNativeKeyboardFocusable : cuiIsNativeMouseFocusable;\n const treeWalker = root.ownerDocument.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, svgNodeFilter);\n\n treeWalker.currentNode = initial;\n\n while (previous ? treeWalker.previousNode() : treeWalker.nextNode()) {\n if (cuiIsHTMLElement(treeWalker.currentNode)) {\n initial = treeWalker.currentNode;\n }\n\n if (cuiIsHTMLElement(initial) && check(initial)) {\n return initial;\n }\n }\n\n return null;\n}\n","import { cuiGetNativeFocused } from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function cuiIsNativeFocused(node?: Node | null): boolean {\n return !!node?.ownerDocument && cuiGetNativeFocused(node.ownerDocument) === node && node.ownerDocument.hasFocus();\n}\n","export const CUI_SAFARI_REG_EXP = /^((?!chrome|android).)*safari/i;\nexport const CUI_IOS_REG_EXP = /ipad|iphone|ipod/i;\n\nexport function cuiIsIos({ userAgent, maxTouchPoints }: Navigator): boolean {\n return CUI_SAFARI_REG_EXP.test(userAgent) || (CUI_IOS_REG_EXP.test(userAgent) && maxTouchPoints > 1);\n}\n","class FilesUploaderImpl {\n public uploadFile(types = '*'): Promise<FileList> {\n const input = document.createElement('input');\n\n input.type = 'file';\n input.accept = types;\n\n return new Promise((resolve) => {\n input.onchange = (): void => {\n const files = input.files;\n\n if (!files?.length) {\n return;\n }\n\n resolve(files);\n };\n\n input.click();\n });\n }\n}\n\nexport const FilesUploader = new FilesUploaderImpl();\n","export function takeCaptureFromVideo(url: string, time = 1): Promise<string> {\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\n const video = document.createElement('video') as HTMLVideoElement;\n\n video.src = url;\n video.currentTime = time;\n canvas.width = 184;\n canvas.height = 120;\n\n return new Promise((resolve) => {\n video.onloadeddata = (): void => {\n const context = canvas.getContext('2d');\n\n if (!context) {\n return;\n }\n\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\n\n canvas.toBlob((blob) => {\n if (!blob) {\n return;\n }\n\n resolve(URL.createObjectURL(blob));\n });\n };\n\n video.load();\n });\n}\n","import { ɵAnimationEngine as AnimationEngine } from '@angular/animations/browser';\nimport { inject } from '@angular/core';\nimport { cuiCreateTokenFromFactory } from '../utils';\nimport { BehaviorSubject, map, share, startWith, switchMap, timer } from 'rxjs';\n\n/**\n * Element currently being removed by AnimationEngine\n */\nexport const CUI_REMOVED_ELEMENT = cuiCreateTokenFromFactory(() => {\n const stub = { onRemovalComplete: () => {} };\n const element$ = new BehaviorSubject<Element | null>(null);\n const engine = inject(AnimationEngine, { optional: true }) || stub;\n const { onRemovalComplete = stub.onRemovalComplete } = engine;\n\n engine.onRemovalComplete = (element, context) => {\n element$.next(element);\n onRemovalComplete.call(engine, element, context);\n };\n\n return element$.pipe(\n switchMap((element) =>\n timer(0).pipe(\n map(() => null),\n startWith(element)\n )\n ),\n share()\n );\n});\n","import { DOCUMENT } from '@angular/common';\nimport { inject, NgZone } from '@angular/core';\nimport { CUI_WINDOW } from './window';\nimport { cuiTypedFromEvent, cuiZonefreeScheduler } from '../observables';\nimport {\n cuiCreateTokenFromFactory,\n cuiGetActualTarget,\n cuiGetDocumentOrShadowRoot,\n cuiIsNativeMouseFocusable\n} from '../utils';\nimport type { Observable } from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n merge,\n of,\n repeat,\n share,\n startWith,\n switchMap,\n take,\n takeUntil,\n timer,\n withLatestFrom\n} from 'rxjs';\n\nimport { CUI_REMOVED_ELEMENT } from './removed-element';\n\n// Checks if focusout event should be considered leaving active zone\nfunction isValidFocusout(target: any, removedElement: Element | null = null): boolean {\n return (\n // Not due to switching tabs/going to DevTools\n cuiGetDocumentOrShadowRoot(target).activeElement !== target &&\n // Not due to button/input becoming disabled or under disabled fieldset\n !target.matches(':disabled') &&\n // Not due to element being removed from DOM\n !removedElement?.contains(target) &&\n // Not due to scrollable element became non-scrollable\n cuiIsNativeMouseFocusable(target)\n );\n}\n\nfunction shadowRootActiveElement(root: Document): Observable<EventTarget | null> {\n return merge(\n cuiTypedFromEvent(root, 'focusin').pipe(map(({ target }) => target)),\n cuiTypedFromEvent(root, 'focusout').pipe(\n filter(({ target, relatedTarget }) => !!relatedTarget && isValidFocusout(target)),\n map(({ relatedTarget }) => relatedTarget)\n )\n );\n}\n\n/**\n * Active element on the document for ActiveZone\n */\nexport const CUI_ACTIVE_ELEMENT = cuiCreateTokenFromFactory<Observable<EventTarget | null>>(() => {\n const removedElement$ = inject(CUI_REMOVED_ELEMENT);\n const win = inject(CUI_WINDOW);\n const doc = inject(DOCUMENT);\n const zone = inject(NgZone);\n const focusout$ = cuiTypedFromEvent(win, 'focusout', { capture: true });\n const focusin$ = cuiTypedFromEvent(win, 'focusin', { capture: true });\n const blur$ = cuiTypedFromEvent(win, 'blur');\n const mousedown$ = cuiTypedFromEvent(win, 'mousedown');\n const mouseup$ = cuiTypedFromEvent(win, 'mouseup');\n\n return merge(\n focusout$.pipe(\n takeUntil(mousedown$),\n repeat({ delay: () => mouseup$ }),\n withLatestFrom(removedElement$),\n filter(([event, removedElement]) => isValidFocusout(cuiGetActualTarget(event), removedElement)),\n map(([{ relatedTarget }]) => relatedTarget)\n ),\n blur$.pipe(\n map(() => doc.activeElement),\n filter((element) => !!element?.matches('iframe'))\n ),\n focusin$.pipe(\n switchMap((event) => {\n const target = cuiGetActualTarget(event);\n const root = cuiGetDocumentOrShadowRoot(target) as Document;\n\n return root === doc ? of(target) : shadowRootActiveElement(root).pipe(startWith(target));\n })\n ),\n mousedown$.pipe(\n switchMap((event) => {\n const actualTargetInCurrentTime = cuiGetActualTarget(event);\n\n return !doc.activeElement || doc.activeElement === doc.body\n ? of(actualTargetInCurrentTime)\n : focusout$.pipe(\n take(1),\n map(\n /**\n * Do not use `map(() => cuiGetActualTarget(event))`\n * because we have different result in runtime\n */\n () => actualTargetInCurrentTime\n ),\n takeUntil(timer(0, cuiZonefreeScheduler(zone)))\n );\n })\n )\n ).pipe(distinctUntilChanged(), share());\n});\n","import { inject, InjectionToken } from '@angular/core';\nimport { Observable, share } from 'rxjs';\n\nimport { CUI_WINDOW } from './window';\n\nexport const CUI_ANIMATION_FRAME = new InjectionToken<Observable<DOMHighResTimeStamp>>('[CUI_ANIMATION_FRAME]', {\n factory: () => {\n const { requestAnimationFrame, cancelAnimationFrame } = inject(CUI_WINDOW);\n const animationFrame$ = new Observable<DOMHighResTimeStamp>((subscriber) => {\n let id = NaN;\n const callback = (timestamp: DOMHighResTimeStamp): void => {\n subscriber.next(timestamp);\n id = requestAnimationFrame(callback);\n };\n\n id = requestAnimationFrame(callback);\n\n return () => {\n cancelAnimationFrame(id);\n };\n });\n\n return animationFrame$.pipe(share());\n }\n});\n","import { inject, InjectionToken } from '@angular/core';\n\nimport { CUI_WINDOW } from './window';\n\nexport const CUI_NAVIGATOR = new InjectionToken<Navigator>('[CUI_NAVIGATOR]', {\n factory: () => inject(CUI_WINDOW).navigator\n});\n","import { inject, InjectionToken } from '@angular/core';\n\nimport { CUI_NAVIGATOR } from './navigator';\n\nexport const CUI_USER_AGENT = new InjectionToken<string>('[CUI_USER_AGENT]', {\n factory: () => inject(CUI_NAVIGATOR).userAgent\n});\n","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { CUI_NAVIGATOR } from './navigator';\nimport { cuiIsIos } from '../utils';\nimport { CUI_FALSE_HANDLER } from '../constants';\nimport { cuiCreateTokenFromFactory } from '../utils';\nimport { fromEvent, map } from 'rxjs';\nimport { CUI_USER_AGENT } from './user-agent';\nimport { CUI_WINDOW } from './window';\n\n// https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/\nconst firstRegex =\n // eslint-disable-next-line sonarjs/regex-complexity\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series([46])0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/;\nconst secondRegex =\n // eslint-disable-next-line sonarjs/regex-complexity\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br([ev])w|bumb|bw-([nu])|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly([-_])|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \\-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\\/([klu])|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c([-01])|47|mc|nd|ri)|sgh-|shar|sie([-m])|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel([im])|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c([- ])|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/;\n\nexport const CUI_IS_MOBILE = cuiCreateTokenFromFactory(\n () =>\n firstRegex.test(inject(CUI_USER_AGENT).toLowerCase()) ||\n secondRegex.test(inject(CUI_USER_AGENT).slice(0, 4).toLowerCase())\n);\n\nexport const CUI_IS_IOS = cuiCreateTokenFromFactory(() => cuiIsIos(inject(CUI_NAVIGATOR)));\n\nexport const CUI_IS_ANDROID = cuiCreateTokenFromFactory(() => inject(CUI_IS_MOBILE) && !inject(CUI_IS_IOS));\n\nexport const CUI_IS_WEBKIT = cuiCreateTokenFromFactory(\n () => !!inject<any>(CUI_WINDOW)?.webkitConvertPointFromNodeToPage\n);\n\nexport const CUI_PLATFORM = cuiCreateTokenFromFactory<'android' | 'ios' | 'web'>(() => {\n if (inject(CUI_IS_IOS)) {\n return 'ios';\n }\n\n return inject(CUI_IS_ANDROID) ? 'android' : 'web';\n});\n\nexport const CUI_IS_TOUCH = cuiCreateTokenFromFactory(() => {\n const media = inject(CUI_WINDOW).matchMedia('(pointer: coarse)');\n\n return toSignal(fromEvent(media, 'change').pipe(map(() => media.matches)), {\n initialValue: media.matches\n });\n});\n\n/**\n * Detect if app is running under Cypress\n * {@link https://docs.cypress.io/faq/questions/using-cypress-faq#Is-there-any-way-to-detect-if-my-app-is-running-under-Cypress Cypress docs}\n */\nexport const CUI_IS_CYPRESS = cuiCreateTokenFromFactory(() => !!inject<any>(CUI_WINDOW).Cypress);\n\n/**\n * Manually provide `true` when running tests in Playwright\n */\nexport const CUI_IS_PLAYWRIGHT = cuiCreateTokenFromFactory<boolean>(CUI_FALSE_HANDLER);\n\n/**\n * Detect if app is running under any of test frameworks\n */\nexport const CUI_IS_E2E = cuiCreateTokenFromFactory(() => inject(CUI_IS_CYPRESS) || inject(CUI_IS_PLAYWRIGHT));\n","import { inject } from '@angular/core';\n\nimport { CUI_WINDOW } from './window';\nimport { cuiCreateTokenFromFactory } from '../utils/token';\n\nexport const CUI_HISTORY = cuiCreateTokenFromFactory<History>(() => inject(CUI_WINDOW).history);\n","import { inject } from '@angular/core';\n\nimport { CUI_WINDOW } from './window';\nimport { cuiCreateTokenFromFactory } from '../utils/token';\n\nexport const CUI_LOCAL_STORAGE = cuiCreateTokenFromFactory(() => inject(CUI_WINDOW).localStorage);\n","import { inject } from '@angular/core';\n\nimport { CUI_WINDOW } from './window';\nimport { cuiCreateTokenFromFactory } from '../utils/token';\n\nexport const CUI_SESSION_STORAGE = cuiCreateTokenFromFactory(() => inject(CUI_WINDOW).sessionStorage);\n","import type { OnDestroy } from '@angular/core';\nimport { Directive, inject, Input, NgZone, Output } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { cuiZoneOptimized } from '../../observables';\nimport { CUI_ACTIVE_ELEMENT } from '../../tokens';\nimport { cuiArrayRemove, cuiInjectElement, cuiPure } from '../../utils';\nimport type { Observable } from 'rxjs';\nimport { distinctUntilChanged, map, skip, startWith, tap } from 'rxjs';\n\n@Directive({\n standalone: true,\n selector:\n '[cuiActiveZone]:not(ng-container), [cuiActiveZoneChange]:not(ng-container), [cuiActiveZoneParent]:not(ng-container)',\n exportAs: 'cuiActiveZone',\n host: {\n '(document:mousedown.silent)': '(0)'\n }\n})\nexport class CuiActiveZone implements OnDestroy {\n private readonly control: any = inject(NgControl, { self: true, optional: true });\n private readonly active$ = inject<Observable<Element | null>>(CUI_ACTIVE_ELEMENT);\n private readonly zone = inject(NgZone);\n private readonly el = cuiInjectElement();\n private cuiActiveZoneParent: CuiActiveZone | null = null;\n private subActiveZones: readonly CuiActiveZone[] = [];\n private readonly directParentActiveZone = inject(CuiActiveZone, {\n skipSelf: true,\n optional: true\n });\n\n @Output()\n public readonly cuiActiveZoneChange = this.active$.pipe(\n map((element) => !!element && this.contains(element)),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n tap((active) => {\n if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {\n this.control.valueAccessor.onTouched();\n }\n }),\n cuiZoneOptimized(this.zone)\n );\n\n constructor() {\n this.directParentActiveZone?.addSubActiveZone(this);\n }\n\n @Input('cuiActiveZoneParent')\n public set cuiActiveZoneParentSetter(zone: CuiActiveZone | null) {\n this.setZone(zone);\n }\n\n public ngOnDestroy(): void {\n this.directParentActiveZone?.removeSubActiveZone(this);\n this.cuiActiveZoneParent?.removeSubActiveZone(this);\n }\n\n public contains(node: Node): boolean {\n return (\n this.el.contains(node) ||\n this.subActiveZones.some((item, index, array) => array.indexOf(item) === index && item.contains(node))\n );\n }\n\n @cuiPure\n private setZone(zone: CuiActiveZone | null): void {\n this.cuiActiveZoneParent?.removeSubActiveZone(this);\n zone?.addSubActiveZone(this);\n this.cuiActiveZoneParent = zone;\n }\n\n private addSubActiveZone(activeZone: CuiActiveZone): void {\n this.subActiveZones = [...this.subActiveZones, activeZone];\n }\n\n private removeSubActiveZone(activeZone: CuiActiveZone): void {\n this.subActiveZones = cuiArrayRemove(this.subActiveZones, this.subActiveZones.indexOf(activeZone));\n }\n}\n","import type { Signal } from '@angular/core';\nimport { inject, Injectable, NgZone } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { CUI_FALSE_HANDLER, CUI_TRUE_HANDLER } from '../../constants';\nimport { cuiTypedFromEvent, cuiWatch, cuiZoneOptimized } from '../../observables';\nimport { CUI_IS_MOBILE } from '../../tokens';\nimport { cuiInjectElement, cuiIsElement } from '../../utils';\nimport { distinctUntilChanged, filter, map, merge, Observable, of } from 'rxjs';\n\nfunction movedOut({ currentTarget, relatedTarget }: MouseEvent): boolean {\n return !cuiIsElement(relatedTarget) || !cuiIsElement(currentTarget) || !currentTarget.contains(relatedTarget);\n}\n\n@Injectable()\nexport class CuiHoveredService extends Observable<boolean> {\n private readonly el = cuiInjectElement();\n private readonly zone = inject(NgZone);\n\n private readonly stream$ = merge(\n cuiTypedFromEvent(this.el, 'mouseenter').pipe(map(CUI_TRUE_HANDLER)),\n cuiTypedFromEvent(this.el, 'mouseleave').pipe(map(CUI_FALSE_HANDLER)),\n // Hello, Safari\n cuiTypedFromEvent(this.el, 'mouseout').pipe(filter(movedOut), map(CUI_FALSE_HANDLER))\n ).pipe(distinctUntilChanged(), cuiZoneOptimized(this.zone));\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n}\n\nexport function cuiHovered(): Signal<boolean> {\n return toSignal(inject(CUI_IS_MOBILE) ? of(false) : inject(CuiHoveredService).pipe(cuiWatch()), {\n initialValue: false\n });\n}\n","import { Directive, inject, Output } from '@angular/core';\n\nimport { CuiHoveredService } from './hovered.service';\n\n@Directive({\n standalone: true,\n selector: '[cuiHoveredChange]',\n providers: [CuiHoveredService]\n})\nexport class CuiHovered {\n @Output()\n public readonly cuiHoveredChange = inject(CuiHoveredService);\n}\n","import { Injectable } from '@angular/core';\nimport { Consumption, ConsumptionUnits, Unit } from '../models';\nimport { SystemUnits, UnitsSystem } from '../constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiConsumptionUnitsService {\n public getConsumptionsUnits(material: any): ConsumptionUnits {\n let consumptionsUnits: ConsumptionUnits = {};\n const consumptionsUnitsSystem = this.getConsumptionsUnitsSystem(material);\n const consumptions: Consumption[] = material.consumption;\n\n consumptions.forEach((consumption: Consumption) => {\n consumptionsUnits = {\n ...consumptionsUnits,\n [consumption]: this.getConsumptionUnits(consumption, consumptionsUnitsSystem)\n };\n });\n\n return consumptionsUnits;\n }\n\n public getConsumptionByUnit(unit: string): Consumption {\n const unitsSystem = this.getUnitsSystemByUnit(unit);\n const consumption = Object.entries(SystemUnits[unitsSystem]).find(([consumption, consumptionUnits]) =>\n consumptionUnits.find((consumptionUnit) => consumptionUnit.value === unit)\n )?.[0];\n\n return (consumption as Consumption) ?? Consumption.Length;\n }\n\n public getUnitsSystemByUnit(consumptionUnit: string): UnitsSystem {\n return Object.entries(SystemUnits).find(([unitsSystem, consumptionUnits]) =>\n Object.entries(consumptionUnits).find(([consumption, units]) =>\n units.find((unit) => unit.value === consumptionUnit)\n )\n )?.[0] as UnitsSystem;\n }\n\n private getConsumptionsUnitsSystem(material: any): UnitsSystem {\n let specifications: any = {};\n\n if (material.specifications) {\n specifications = material.specifications;\n } else {\n specifications = this.prepareParametersToSpecifications(material);\n }\n\n const weightValue = specifications.weight.unit;\n const unitsSystem = Object.entries(SystemUnits).find(([key, value]) => value.WEIGHT?.includes(weightValue));\n\n if (!unitsSystem) {\n return UnitsSystem.Metric;\n }\n\n return unitsSystem[0] as UnitsSystem;\n }\n\n private prepareParametersToSpecifications(material: any): any {\n const arrayFromParameters = material.parameters.map((param: any) => {\n return {\n [param.measure.toLowerCase()]: { value: param.value, unit: param.unit }\n };\n });\n\n return arrayFromParameters.reduce((result: any, item: any) => {\n for (const key in item) {\n if (Object.prototype.hasOwnProperty.call(item, key)) {\n result[key] = item[key];\n }\n }\n\n return result;\n }, {});\n }\n\n private getConsumptionUnits(consumption: Consumption, unitsSystem: UnitsSystem): Unit[] {\n return SystemUnits[unitsSystem][consumption] ?? [];\n }\n}\n","import type { OnDestroy } from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class CuiDestroyService extends Subject<void> implements OnDestroy {\n public ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","import { Injectable } from '@angular/core';\n\nconst CUI = 'cui_';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiIdService {\n private static autoId = 0;\n\n public generate(): string {\n return `${CUI}${CuiIdService.autoId++}${Date.now()}`;\n }\n\n public checkIdGenerated(id: string): boolean {\n return id.startsWith(CUI);\n }\n}\n","import type { ProviderToken, TemplateRef, Type } from '@angular/core';\nimport { inject, Injectable } from '@angular/core';\nimport type { BehaviorSubject, Observer } from 'rxjs';\nimport { Observable } from 'rxjs';\n\nimport { CuiIdService } from './id.service';\n\n// TODO: Content должен быть типом из директивы *content\nexport interface CuiPopoverContext {\n readonly $implicit: Observer<any>;\n readonly id: string;\n readonly component: Type<unknown>;\n readonly content: Type<unknown> | TemplateRef<unknown> | string;\n readonly completeWith: (value?: any) => void;\n}\n\nexport type CuiPopover<T> = T & CuiPopoverContext;\n\n@Injectable()\nexport abstract class CuiPopoverService<T> {\n private readonly cuiIdService = inject(CuiIdService);\n private readonly items$: BehaviorSubject<ReadonlyArray<CuiPopover<T>>>;\n private readonly component: Type<any>;\n\n constructor(\n items: ProviderToken<BehaviorSubject<ReadonlyArray<CuiPopover<T>>>>,\n component: Type<any>,\n private readonly options: T = {} as T\n ) {\n this.items$ = inject(items);\n this.component = component;\n }\n\n public open(content: CuiPopoverContext['content'], options: Partial<T> = {}): Observable<any> {\n return new Observable((observer) => {\n const item: CuiPopover<T> = {\n ...this.options,\n ...options,\n $implicit: observer,\n id: this.cuiIdService.generate(),\n component: this.component,\n content: content,\n completeWith: (result) => {\n observer.next(result);\n observer.complete();\n }\n };\n\n this.items$.next([...this.items$.value, item]);\n\n return () => {\n this.items$.next(this.items$.value.filter((value) => value !== item));\n };\n });\n }\n\n public closeAll(): void {\n this.items$.next([]);\n }\n}\n","import { Directive, ElementRef, inject, Renderer2 } from '@angular/core';\r\n\r\nimport { CuiIdService } from '../../services';\r\n\r\n@Directive({\r\n selector: '[cuiDragList]',\r\n standalone: true\r\n})\r\nexport class CuiDragListDirective {\r\n private readonly renderer = inject(Renderer2);\r\n private readonly element = inject(ElementRef).nativeElement;\r\n public readonly id = inject(CuiIdService).generate();\r\n\r\n public readonly listId = `${this.id}-list`;\r\n\r\n constructor() {\r\n this.renderer.setAttribute(this.element, 'id', this.listId);\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy } from '@angular/core';\r\nimport { Directive, ElementRef, inject, input, NgZone, output, Renderer2, signal } from '@angular/core';\r\nimport type { CuiNullable } from '../../types';\r\n\r\nimport type { CuiDragData, CuiDragDropData } from './drag-drop.options';\r\nimport { CuiDragListDirective } from './drag-list.directive';\r\n\r\n@Directive({\r\n selector: '[cuiDragDrop]',\r\n standalone: true\r\n})\r\nexport class CuiDragDropDirective implements OnDestroy {\r\n private readonly zone = inject(NgZone);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly renderer = inject(Renderer2);\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly dragListDirective = inject(CuiDragListDirective);\r\n\r\n private readonly PLACEHOLDER_CLASS = 'cui-drag-drop-placeholder';\r\n\r\n private readonly listId = this.dragListDirective.listId;\r\n private readonly itemAttribute = `${this.listId}-drag-item`;\r\n\r\n private index!: number;\r\n private prevIndex!: number;\r\n private abortController = new AbortController();\r\n private hostAbortController = new AbortController();\r\n\r\n protected readonly draggingElement = signal<CuiNullable<HTMLElement>>(null);\r\n protected readonly placeholderElement = signal<CuiNullable<HTMLElement>>(null);\r\n protected readonly dragData = signal<CuiDragData>({});\r\n\r\n public readonly disabled = input(false);\r\n\r\n public readonly elementDragged = output<CuiDragDropData>();\r\n\r\n constructor() {\r\n this.initDragItem();\r\n this.initPointerEvents(this.element);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyEvents();\r\n }\r\n\r\n public changePointerEvents(element: HTMLElement): void {\r\n this.hostAbortController.abort();\r\n this.hostAbortController = new AbortController();\r\n\r\n this.initPointerEvents(element);\r\n }\r\n\r\n private onDrag(clientX: number, clientY: number): void {\r\n if (!this.draggingElement()) {\r\n return;\r\n }\r\n\r\n const elementsFromPoint = this.document.elementsFromPoint(clientX, clientY);\r\n const elementFromPoint = elementsFromPoint.find((element) => element.closest(`#${this.listId}`));\r\n\r\n if (!elementFromPoint) {\r\n return;\r\n }\r\n\r\n const targetElement = elementFromPoint.closest<HTMLElement>(`[${this.itemAttribute}]`);\r\n\r\n if (!targetElement || targetElement === this.draggingElement()) {\r\n return;\r\n }\r\n\r\n this.configurateDragData(targetElement, clientY);\r\n }\r\n\r\n private onDragStart(event: MouseEvent): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n let isClicked = true;\r\n\r\n const elementClientRect = this.element.getBoundingClientRect();\r\n const shiftX = event.clientX - elementClientRect.left;\r\n const shiftY = event.clientY - elementClientRect.top;\r\n\r\n this.prevIndex = this.calculatePreviousIndex();\r\n\r\n this.document.addEventListener(\r\n 'pointermove',\r\n ({ clientX, clientY }) => {\r\n if (isClicked) {\r\n this.prepareMoving();\r\n\r\n isClicked = false;\r\n }\r\n\r\n const draggingElement = this.draggingElement();\r\n\r\n this.renderer.setStyle(draggingElement, 'left', clientX - shiftX + 'px');\r\n this.renderer.setStyle(draggingElement, 'top', clientY - shiftY + 'px');\r\n this.onDrag(clientX, clientY);\r\n },\r\n { signal: this.abortController.signal }\r\n );\r\n }\r\n\r\n private onDragEnd(): void {\r\n const { targetElement, pointer } = this.dragData();\r\n\r\n if (targetElement && pointer) {\r\n this.elementDragged.emit({\r\n index: this.index,\r\n prevIndex: this.prevIndex,\r\n targetElement,\r\n pointer\r\n });\r\n }\r\n\r\n // remove document events\r\n this.abortController.abort();\r\n this.abortController = new AbortController();\r\n\r\n this.removeDragElement();\r\n this.removePlaceholder();\r\n this.dragData.set({});\r\n }\r\n\r\n private initDragItem(): void {\r\n this.renderer.setAttribute(this.element, this.itemAttribute, 'true');\r\n }\r\n\r\n private initPointerEvents(element: HTMLElement): void {\r\n const signal = this.hostAbortController.signal;\r\n\r\n this.zone.runOutsideAngular(() => {\r\n element.addEventListener('pointerup', this.onDragEnd.bind(this), { signal });\r\n element.addEventListener('pointerdown', this.onDragStart.bind(this), { signal });\r\n });\r\n }\r\n\r\n private destroyEvents(): void {\r\n this.hostAbortController.abort();\r\n this.abortController.abort();\r\n }\r\n\r\n private prepareMoving(): void {\r\n const placeholderElement = this.createPlaceholderElement();\r\n const draggingElement = this.createDragElement();\r\n\r\n this.document.addEventListener('pointerup', this.onDragEnd.bind(this), {\r\n signal: this.abortController.signal\r\n });\r\n\r\n this.element.after(placeholderElement);\r\n this.draggingElement.set(draggingElement);\r\n\r\n this.element.remove();\r\n this.document.body.append(draggingElement);\r\n }\r\n\r\n private configurateDragData(targetElement: HTMLElement, clientY: number): void {\r\n const placeholderElement = this.placeholderElement();\r\n const boundingRect = targetElement.getBoundingClientRect();\r\n const middleY = boundingRect.top + boundingRect.height / 2;\r\n\r\n if (clientY < middleY) {\r\n targetElement.before(placeholderElement!);\r\n this.dragData.set({ targetElement, pointer: 'BEFORE' });\r\n } else {\r\n targetElement.after(placeholderElement!);\r\n this.dragData.set({ targetElement, pointer: 'AFTER' });\r\n }\r\n\r\n this.index = this.calculateIndex(placeholderElement!);\r\n }\r\n\r\n private createDragElement(): HTMLElement {\r\n const width = this.element.clientWidth;\r\n const draggingElement = this.element.cloneNode(true) as HTMLElement;\r\n\r\n this.renderer.setStyle(draggingElement, 'position', 'fixed');\r\n this.renderer.setStyle(draggingElement, 'display', 'block');\r\n this.renderer.setStyle(draggingElement, 'margin', '0');\r\n this.renderer.setStyle(draggingElement, 'width', `${width}px`);\r\n\r\n return draggingElement;\r\n }\r\n\r\n private createPlaceholderElement(): HTMLElement {\r\n const element = this.placeholderElement();\r\n\r\n if (element) {\r\n return element;\r\n }\r\n\r\n const placeholderElement = this.renderer.createElement('div');\r\n\r\n this.renderer.addClass(placeholderElement, this.PLACEHOLDER_CLASS);\r\n this.placeholderElement.set(placeholderElement);\r\n\r\n return placeholderElement;\r\n }\r\n\r\n private removeDragElement(): void {\r\n const draggingElement = this.draggingElement();\r\n\r\n if (!draggingElement) {\r\n return;\r\n }\r\n\r\n draggingElement.remove();\r\n this.draggingElement.set(null);\r\n }\r\n\r\n private removePlaceholder(): void {\r\n const placeholderElement = this.placeholderElement();\r\n\r\n if (!placeholderElement) {\r\n return;\r\n }\r\n\r\n placeholderElement.after(this.element);\r\n placeholderElement.remove();\r\n this.placeholderElement.set(null);\r\n }\r\n\r\n private calculateIndex(placeholderElement: HTMLElement): number {\r\n const childNodes = placeholderElement.parentElement!.childNodes;\r\n const elements = Array.from(childNodes).filter((node) => node instanceof HTMLElement);\r\n\r\n return elements.indexOf(placeholderElement!);\r\n }\r\n\r\n private calculatePreviousIndex(): number {\r\n let index = 0;\r\n let currentElement: Element = this.element;\r\n\r\n while (currentElement && currentElement.previousElementSibling) {\r\n index++;\r\n currentElement = currentElement.previousElementSibling;\r\n }\r\n\r\n return index;\r\n }\r\n}\r\n","import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\nimport { CuiDragDropDirective } from './drag-drop.directive';\r\n\r\n@Directive({\r\n selector: '[cuiDragPointer]',\r\n standalone: true\r\n})\r\nexport class CuiDragPointerDirective {\r\n private readonly dragDropDirective = inject(CuiDragDropDirective);\r\n private readonly element = inject(ElementRef).nativeElement;\r\n\r\n constructor() {\r\n this.dragDropDirective.changePointerEvents(this.element);\r\n }\r\n}\r\n","import type { AfterViewChecked, OnInit } from '@angular/core';\nimport { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { NgControl, NgModel } from '@angular/forms';\nimport { takeUntil } from 'rxjs';\n\nimport { CUI_WINDOW } from '../tokens';\nimport { CuiDestroyService } from '../services';\n\n@Directive({\n standalone: true,\n selector: 'textarea[cuiAutoResizing]',\n providers: [CuiDestroyService]\n})\nexport class CuiAutoResizingDirective implements OnInit, AfterViewChecked {\n private readonly window = inject(CUI_WINDOW);\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly ngModel = inject(NgModel, { self: true, optional: true });\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n\n private readonly elementStyles = this.element.style;\n\n public ngOnInit(): void {\n this.initNgControlValueChangeSubscription();\n this.initNgModelValueChangeSubscription();\n }\n\n public ngAfterViewChecked(): void {\n this.resize();\n }\n\n @HostListener('input')\n protected onInput(): void {\n this.resize();\n }\n\n private initNgControlValueChangeSubscription(): void {\n if (!this.ngControl) {\n return;\n }\n\n this.ngControl.valueChanges!.pipe(takeUntil(this.destroy$)).subscribe(this.resize.bind(this));\n }\n\n private initNgModelValueChangeSubscription(): void {\n if (!this.ngModel) {\n return;\n }\n\n this.ngModel.valueChanges!.pipe(takeUntil(this.destroy$)).subscribe(this.resize.bind(this));\n }\n\n private resize(): void {\n const {\n maxHeight: computedMaxHeight,\n borderTopWidth,\n borderBottomWidth\n } = this.window.getComputedStyle(this.element);\n\n this.elementStyles.height = 'auto';\n this.elementStyles.height =\n this.element.scrollHeight + parseFloat(borderTopWidth) + parseFloat(borderBottomWidth) + 'px';\n\n if (parseFloat(this.element.style.height) < parseFloat(computedMaxHeight)) {\n this.elementStyles.overflow = 'hidden';\n\n return;\n }\n\n this.elementStyles.overflowY = 'scroll';\n this.elementStyles.height = computedMaxHeight;\n }\n}\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy } from '@angular/core';\r\nimport { Directive, inject, input, NgZone, Renderer2, signal } from '@angular/core';\r\nimport type { Subscription } from 'rxjs';\r\nimport { interval } from 'rxjs';\r\n\r\nimport type { CuiNullable } from '../types';\r\nimport { CUI_WINDOW } from '../tokens';\r\n\r\n@Directive({\r\n selector: '[cuiHandleScroll]',\r\n standalone: true,\r\n host: {\r\n '(pointerdown)': 'onTargetMove()'\r\n }\r\n})\r\nexport class CuiHandleScrollDirective implements OnDestroy {\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly renderer = inject(Renderer2);\r\n private readonly zone = inject(NgZone);\r\n\r\n private abortController = new AbortController();\r\n private scrollSubscription?: Subscription;\r\n\r\n protected readonly SCROLL_AREA_HEIGHT = 100;\r\n\r\n protected readonly scrollGapElements = signal<CuiNullable<HTMLDivElement[]>>(null);\r\n\r\n public readonly scrollSpeed = input(100);\r\n\r\n public ngOnDestroy(): void {\r\n this.removeSubscription();\r\n }\r\n\r\n public onTargetMove(): void {\r\n const signal = this.abortController.signal;\r\n\r\n this.zone.runOutsideAngular(this.initScrollEvent.bind(this, signal));\r\n }\r\n\r\n private initScrollEvent(signal: AbortSignal): void {\r\n this.document.addEventListener('pointermove', ({ clientY }) => this.handleScroll(clientY), { signal });\r\n this.document.addEventListener(\r\n 'pointerup',\r\n () => {\r\n this.scrollGapElements()?.forEach((element) => element.remove());\r\n this.scrollGapElements.set(null);\r\n\r\n this.removeSubscription();\r\n this.abortController.abort();\r\n this.abortController = new AbortController();\r\n },\r\n { signal }\r\n );\r\n }\r\n\r\n private handleScroll(clientY: number): void {\r\n const windowHeight = this.document.documentElement.clientHeight;\r\n const scrollSpeed = this.scrollSpeed();\r\n\r\n if (!this.scrollGapElements()) {\r\n this.setScrollGapElements();\r\n }\r\n\r\n if (clientY <= this.SCROLL_AREA_HEIGHT) {\r\n this.startScrolling(-scrollSpeed);\r\n\r\n return;\r\n }\r\n\r\n if (clientY >= windowHeight - this.SCROLL_AREA_HEIGHT) {\r\n this.startScrolling(scrollSpeed);\r\n\r\n return;\r\n }\r\n\r\n this.removeSubscription();\r\n }\r\n\r\n private setScrollGapElements(): void {\r\n const scrollGapElement = this.renderer.createElement('div');\r\n\r\n this.renderer.setStyle(scrollGapElement, 'position', 'fixed');\r\n this.renderer.setStyle(scrollGapElement, 'width', '100%');\r\n this.renderer.setStyle(scrollGapElement, 'height', '48px');\r\n this.renderer.setStyle(scrollGapElement, 'top', '0');\r\n\r\n const scrollGapBottomElement = scrollGapElement.cloneNode(true) as HTMLDivElement;\r\n\r\n this.renderer.appendChild(this.document.body, scrollGapElement);\r\n this.renderer.appendChild(this.document.body, scrollGapBottomElement);\r\n\r\n this.scrollGapElements.set([scrollGapElement, scrollGapBottomElement]);\r\n }\r\n\r\n private startScrolling(speed: number): void {\r\n this.removeSubscription();\r\n\r\n this.scrollSubscription = interval(this.scrollSpeed()).subscribe(() =>\r\n this.window.scrollBy({ top: speed, behavior: 'smooth' })\r\n );\r\n }\r\n\r\n private removeSubscription(): void {\r\n this.scrollSubscription?.unsubscribe();\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, inject, Output } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '(cuiClickOutside)'\n})\nexport class CuiClickOutsideDirective {\n private readonly element = inject(ElementRef).nativeElement;\n\n @Output()\n public cuiClickOutside = new EventEmitter<HTMLElement>();\n\n @HostListener('document:click', ['$event.target'])\n protected onClickOutside(target: HTMLElement): void {\n if (this.element.contains(target)) {\n return;\n }\n\n this.cuiClickOutside.emit(target);\n }\n}\n","import type { OnInit, OnDestroy } from '@angular/core';\nimport { Directive, ElementRef, EventEmitter, inject, Output } from '@angular/core';\n\nimport type { CuiDimensions } from '../interfaces';\n\n@Directive({\n standalone: true,\n selector: '[cuiResizeObserver]'\n})\nexport class CuiDimensionsObserverDirective implements OnInit, OnDestroy {\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n private readonly observer = new ResizeObserver((entries) => {\n entries.forEach(() =>\n this.cuiResizeObserver.emit({\n width: this.element.offsetWidth,\n height: this.element.offsetHeight\n })\n );\n });\n\n @Output()\n public cuiResizeObserver = new EventEmitter<CuiDimensions>();\n\n public ngOnInit(): void {\n this.observer.observe(this.element);\n }\n\n ngOnDestroy(): void {\n this.observer.disconnect();\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport type { CuiNullable } from '../types';\nimport type { CuiOnChange, CuiOnTouched } from '../interfaces';\nimport { cuiProvide } from '../utils/token';\n\n@Directive({\n standalone: true,\n selector: '[contenteditable][formControlName], [contenteditable][formControl], [contenteditable][ngModel]',\n providers: [cuiProvide(NG_VALUE_ACCESSOR, CuiContentEditableValueAccessorDirective, true)]\n})\nexport class CuiContentEditableValueAccessorDirective implements ControlValueAccessor {\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n protected onChange!: CuiOnChange<string>;\n protected onTouched!: CuiOnTouched;\n\n public writeValue(value: CuiNullable<string>): void {\n this.element.innerText = value ?? '';\n }\n\n public registerOnChange(fn: CuiOnChange<string>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.element.contentEditable = String(!isDisabled);\n }\n\n @HostListener('input')\n protected onInput(): void {\n this.onChange(this.element.innerHTML === '<br>' ? '' : this.element.innerText);\n }\n\n @HostListener('blur')\n protected onBlur(): void {\n this.onTouched();\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[cuiElement]',\n exportAs: 'elementRef'\n})\nexport class CuiElementDirective<T extends Element = HTMLElement> implements ElementRef<T> {\n public nativeElement = inject(ElementRef<T>).nativeElement;\n\n constructor() {\n return new ElementRef<T>(this.nativeElement);\n }\n}\n","import type { OnDestroy } from '@angular/core';\nimport { Directive, ElementRef, HostBinding, HostListener, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport {\n cuiBlurNativeFocused,\n cuiContainsOrAfter,\n cuiGetClosestFocusable,\n cuiGetNativeFocused,\n cuiIsHTMLElement\n} from '../utils';\n\n@Directive({\n standalone: true,\n selector: '[cuiFocusTrap]'\n})\nexport class CuiFocusTrapDirective implements OnDestroy {\n private readonly document = inject(DOCUMENT);\n private readonly element = inject(ElementRef).nativeElement;\n private readonly activeElement = cuiGetNativeFocused(this.document);\n\n constructor() {\n this.initElementFocus();\n }\n\n public ngOnDestroy(): void {\n cuiBlurNativeFocused(this.document);\n\n Promise.resolve().then(() => {\n if (!cuiIsHTMLElement(this.activeElement)) {\n return;\n }\n\n this.activeElement.focus();\n });\n }\n\n @HostBinding('tabIndex')\n protected readonly tabIndex = 0;\n\n @HostListener('window:focusin', ['$event.target'])\n protected onFocusIn(node: Node): void {\n if (cuiContainsOrAfter(this.element, node)) {\n return;\n }\n\n cuiGetClosestFocusable({\n initial: this.element,\n root: this.element\n })?.focus();\n }\n\n private initElementFocus(): void {\n Promise.resolve().then(() => this.element.focus());\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[cuiItem]'\n})\nexport class CuiItemDirective {}\n","export interface CuiLetDirectiveImpl<T> {\n readonly cuiLet: T;\n}\n\nexport class CuiLetContext<T> {\n constructor(private readonly internalDirectiveInstance: CuiLetDirectiveImpl<T>) {}\n\n public get $implicit(): T {\n return this.internalDirectiveInstance.cuiLet;\n }\n\n public get cuiLet(): T {\n return this.internalDirectiveInstance.cuiLet;\n }\n}\n","import { Directive, inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { CuiLetContext, CuiLetDirectiveImpl } from './let.context';\n\n@Directive({\n standalone: true,\n selector: '[cuiLet]'\n})\nexport class CuiLetDirective<T> {\n @Input()\n public cuiLet!: T;\n\n constructor() {\n inject(ViewContainerRef).createEmbeddedView(inject(TemplateRef<CuiLetContext<T>>), new CuiLetContext<T>(this));\n }\n\n public static ngTemplateContextGuard<T>(_dir: CuiLetDirectiveImpl<T>, _ctx: unknown): _ctx is CuiLetContext<T> {\n return true;\n }\n}\n","import type { OnInit, OnDestroy } from '@angular/core';\r\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[ccTarget]'\r\n})\r\nexport class CuiTargetDirective implements OnInit, OnDestroy {\r\n private readonly clickListener = (event: MouseEvent): void => {\r\n this.clicked.emit(event);\r\n };\r\n\r\n @Input()\r\n public ccTarget!: HTMLElement;\r\n\r\n @Output()\r\n public clicked = new EventEmitter<MouseEvent>();\r\n\r\n public ngOnInit(): void {\r\n this.initClickListener();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyClickListener();\r\n }\r\n\r\n private initClickListener(): void {\r\n this.ccTarget.addEventListener('click', this.clickListener);\r\n }\r\n\r\n private destroyClickListener(): void {\r\n this.ccTarget.removeEventListener('click', this.clickListener);\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, inject, input, NgZone } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cuiLadderList]',\r\n standalone: true\r\n})\r\nexport class CuiLadderListDirective {\r\n private readonly zone = inject(NgZone);\r\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\r\n\r\n private readonly LIST_ITEM_MARGIN_LEFT = 16;\r\n\r\n public readonly disabled = input(false);\r\n\r\n constructor() {\r\n effect(() => this.initElementsEffect());\r\n }\r\n\r\n private initElementsEffect(): void {\r\n this.zone.runOutsideAngular(this.initObserver.bind(this));\r\n }\r\n\r\n private initObserver(): void {\r\n const observer = new MutationObserver(this.calculateListItemsMargin.bind(this));\r\n\r\n this.calculateListItemsMargin();\r\n\r\n observer.observe(this.element, { childList: true });\r\n }\r\n\r\n private calculateListItemsMargin(): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n let index = 0;\r\n\r\n this.element.childNodes.forEach((node) => {\r\n if (!(node instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n node.style.marginLeft = index * this.LIST_ITEM_MARGIN_LEFT + 'px';\r\n index += 1;\r\n });\r\n }\r\n}\r\n","import type { ElementRef, EmbeddedViewRef } from '@angular/core';\r\nimport { Directive, inject, input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[cuiTypedTemplate]',\r\n standalone: true,\r\n exportAs: 'cuiTypedTemplate'\r\n})\r\nexport class CuiTypedTemplateDirective<T> extends TemplateRef<T> {\r\n public readonly templateRef = inject<TemplateRef<T>>(TemplateRef);\r\n\r\n public override elementRef: ElementRef<unknown> = this.templateRef.elementRef;\r\n\r\n public readonly type = input.required<T>({ alias: 'cuiTypedTemplate' });\r\n\r\n constructor() {\r\n super();\r\n }\r\n public override createEmbeddedView(context: T): EmbeddedViewRef<T> {\r\n return this.templateRef.createEmbeddedView(context);\r\n }\r\n\r\n public static ngTemplateContextGuard<T>(_: CuiTypedTemplateDirective<T>, ctx: unknown): ctx is T {\r\n return true;\r\n }\r\n}\r\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\n\nimport { CuiMatcher } from '../types';\n\n@Pipe({\n standalone: true,\n name: 'cuiFilter'\n})\nexport class CuiFilterPipe implements PipeTransform {\n transform<T, U extends unknown[]>(items: ReadonlyArray<T>, matcher: CuiMatcher<[T, ...U]>, ...args: U): T[] {\n return items.filter((item) => matcher(item, ...args));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["AnimationEngine"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cuby-ui-cdk.mjs","sources":["../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/units.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/date-time/time.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/utils/token/create-token.ts","../../../projects/cdk/utils/token/provide.ts","../../../projects/cdk/tokens/window.ts","../../../projects/cdk/utils/dom/contains-or-after.ts","../../../projects/cdk/utils/dom/element-checks.ts","../../../projects/cdk/utils/dom/get-actual-target.ts","../../../projects/cdk/utils/dom/get-document-or-shadow-root.ts","../../../projects/cdk/utils/math/clamp.ts","../../../projects/cdk/utils/miscellaneous/move-item-in-array.ts","../../../projects/cdk/utils/miscellaneous/array-remove.ts","../../../projects/cdk/utils/miscellaneous/is-present.ts","../../../projects/cdk/utils/miscellaneous/pure.ts","../../../projects/cdk/utils/miscellaneous/px.ts","../../../projects/cdk/utils/dom/get-element-obscurers.ts","../../../projects/cdk/utils/dom/inject-element.ts","../../../projects/cdk/utils/dom/point-to-client-rect.ts","../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/platform/is-ios.ts","../../../projects/cdk/utils/files/files.uploader.ts","../../../projects/cdk/utils/files/take-capture-from-video.ts","../../../projects/cdk/tokens/removed-element.ts","../../../projects/cdk/tokens/active-element.ts","../../../projects/cdk/tokens/animation-frame.ts","../../../projects/cdk/tokens/navigator.ts","../../../projects/cdk/tokens/user-agent.ts","../../../projects/cdk/tokens/environment.ts","../../../projects/cdk/tokens/history.ts","../../../projects/cdk/tokens/local-storage.ts","../../../projects/cdk/tokens/session-storage.ts","../../../projects/cdk/directives/active-zone/active-zone.directive.ts","../../../projects/cdk/directives/hovered/hovered.service.ts","../../../projects/cdk/directives/hovered/hovered.directive.ts","../../../projects/cdk/services/consumption-units.service.ts","../../../projects/cdk/services/destroy.service.ts","../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/popover.service.ts","../../../projects/cdk/directives/drag-drop/drag-list.directive.ts","../../../projects/cdk/directives/drag-drop/drag-drop.directive.ts","../../../projects/cdk/directives/drag-drop/drag-pointer.directive.ts","../../../projects/cdk/directives/auto-resizing.directive.ts","../../../projects/cdk/directives/handle-scroll.directive.ts","../../../projects/cdk/directives/click-outside.directive.ts","../../../projects/cdk/directives/dimensions-observer.directive.ts","../../../projects/cdk/directives/content-editable-value-accessor.directive.ts","../../../projects/cdk/directives/element.directive.ts","../../../projects/cdk/directives/focus-trap.directive.ts","../../../projects/cdk/directives/item.directive.ts","../../../projects/cdk/directives/let.context.ts","../../../projects/cdk/directives/let.directive.ts","../../../projects/cdk/directives/target.directive.ts","../../../projects/cdk/directives/ladder-list.directive.ts","../../../projects/cdk/directives/typed-template.directive.ts","../../../projects/cdk/pipes/filter.pipe.ts","../../../projects/cdk/cuby-ui-cdk.ts"],"sourcesContent":["import { QueryList } from '@angular/core';\r\n\r\nconst rect = {\r\n bottom: 0,\r\n height: 0,\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n width: 0,\r\n x: 0,\r\n y: 0\r\n} as const;\r\n\r\n/**\r\n * For type safety when using @ContentChildren and @ViewChildren\r\n *\r\n * NOTE: Be careful subscribing to 'changes'\r\n */\r\nexport const EMPTY_QUERY = new QueryList<any>();\r\nexport const EMPTY_ARRAY: [] = [];\r\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\r\nexport const EMPTY_CLIENT_RECT: DOMRect = {\r\n ...rect,\r\n toJSON: () => rect\r\n};\r\n","/**\r\n * Handler that always returns `false`.\r\n */\r\n// eslint-disable-next-line no-restricted-syntax\r\nexport const CUI_FALSE_HANDLER = (): false => false;\r\n\r\n/**\r\n * Handler that always returns `true`.\r\n */\r\n// eslint-disable-next-line no-restricted-syntax\r\nexport const CUI_TRUE_HANDLER = (): true => true;\r\n","import { Consumption, Unit } from '../models';\r\n\r\nexport const UnitsMetricWeight: Unit[] = [\r\n { label: 'kilogram (kg)', abbreviation: 'kg', value: 'KILOGRAM' },\r\n { label: 'gram', abbreviation: 'g', value: 'G' },\r\n { label: 'ton', abbreviation: 'tn', value: 'TONNE' }\r\n];\r\n\r\nexport const UnitsImperialWeight: Unit[] = [\r\n { label: 'ounce', abbreviation: 'oz', value: 'OZ' },\r\n { label: 'pound', abbreviation: 'lb', value: 'POUND' },\r\n { label: 'ton', abbreviation: 'tn', value: 'TON_US' }\r\n];\r\n\r\nexport const UnitsMetricLength: Unit[] = [\r\n { label: 'meter', abbreviation: 'm', value: 'METER' },\r\n { label: 'millimeter', abbreviation: 'mm', value: 'MILLI_METER' },\r\n { label: 'centimeter', abbreviation: 'cm', value: 'CENTI_METER' }\r\n // { label: 'kilometer', abbreviation: 'km', value: 'KILO_METER' },\r\n];\r\n\r\nexport const UnitsImperialLength: Unit[] = [\r\n { label: 'foot', abbreviation: 'ft', value: 'FOOT' },\r\n { label: 'inch', abbreviation: 'i', value: 'INCH' },\r\n { label: 'yard', abbreviation: 'yd', value: 'YARD' }\r\n // { label: 'mile', abbreviation: 'm', value: 'MILE' },\r\n];\r\n\r\nexport const UnitsMetricVolume: Unit[] = [\r\n { label: 'litre', abbreviation: 'l', value: 'LITRE' },\r\n { label: 'millilitre', abbreviation: 'ml', value: 'MILLI_LITRE' },\r\n { label: 'cubic metre', abbreviation: 'm³', value: 'CUBIC_METRE' }\r\n];\r\n\r\nexport const UnitsImperialVolume: Unit[] = [\r\n { label: 'gallon liquid', abbreviation: 'gl', value: 'GALLON_LIQUID' },\r\n { label: 'gallon dry', abbreviation: 'gd', value: 'GALLON_DRY' },\r\n { label: 'fluid ounce', abbreviation: 'fo', value: 'FLUID_OUNCE' },\r\n { label: 'barrel', abbreviation: 'b', value: 'BARREL' },\r\n { label: 'pint', abbreviation: 'p', value: 'PINT' }\r\n];\r\n\r\nexport const UnitsMetricSquare: Unit[] = [\r\n { label: 'sq. meter', abbreviation: 'm²', value: 'SQUARE_METRE', initial: 'METER' },\r\n { label: 'sq. millimeter', abbreviation: 'mm²', value: 'SQUARE_MILLI', initial: 'MILLI_METER' },\r\n { label: 'sq. centimeter', abbreviation: 'cm²', value: 'SQUARE_CENTI', initial: 'CENTI_METER' }\r\n];\r\n\r\nexport const UnitsImperialSquare: Unit[] = [\r\n { label: 'sq. foot', abbreviation: 'ft²', value: 'SQUARE_FOOT', initial: 'FOOT' },\r\n { label: 'sq. inch', abbreviation: 'inch²', value: 'SQUARE_INCH', initial: 'INCH' },\r\n { label: 'sq. yard', abbreviation: 'yard²', value: 'SQUARE_YARD', initial: 'YARD' }\r\n];\r\n\r\nexport const UnitsAmount: Unit[] = [{ label: 'pieces', value: 'PIECES', abbreviation: 'pcs' }];\r\n\r\nexport const UnitsMetric: Partial<Record<Consumption, Unit[]>> = {\r\n [Consumption.Length]: UnitsMetricLength,\r\n [Consumption.Square]: UnitsMetricSquare,\r\n [Consumption.Volume]: UnitsMetricVolume,\r\n [Consumption.Weight]: UnitsMetricWeight,\r\n [Consumption.Amount]: UnitsAmount\r\n};\r\n\r\nexport const UnitsImperial: Partial<Record<Consumption, Unit[]>> = {\r\n [Consumption.Length]: UnitsImperialLength,\r\n [Consumption.Square]: UnitsImperialSquare,\r\n [Consumption.Volume]: UnitsImperialVolume,\r\n [Consumption.Weight]: UnitsImperialWeight,\r\n [Consumption.Amount]: UnitsAmount\r\n};\r\n\r\nexport const enum UnitsSystem {\r\n Metric = 'METRIC',\r\n Imperial = 'IMPERIAL'\r\n}\r\n\r\nexport const SystemUnits: Record<UnitsSystem, Partial<Record<Consumption, Unit[]>>> = {\r\n [UnitsSystem.Metric]: UnitsMetric,\r\n [UnitsSystem.Imperial]: UnitsImperial\r\n};\r\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\r\n acceptNode(node: Node): number {\r\n return 'ownerSVGElement' in node ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\r\n }\r\n};\r\n","import type { CuiTimeMode } from '../types';\r\n\r\nexport class CuiTime {\r\n constructor(\r\n public readonly hours: number,\r\n public readonly minutes: number,\r\n public readonly seconds = 0,\r\n public readonly ms = 0\r\n ) {}\r\n\r\n public static fromString(time: string): CuiTime {\r\n const hours = this.parseHours(time);\r\n const minutes = Number(time.slice(3, 5)) || 0;\r\n const seconds = Number(time.slice(6, 8)) || 0;\r\n const ms = Number(time.slice(9, 12)) || 0;\r\n\r\n return new CuiTime(hours, minutes, seconds, ms);\r\n }\r\n\r\n public static fromPT(time: string): CuiTime {\r\n let duration = time.trim().toUpperCase();\r\n\r\n if (!duration.startsWith('P')) {\r\n throw new Error('Invalid PT format: does not start with P');\r\n }\r\n\r\n duration = duration.substring(1);\r\n\r\n if (duration.startsWith('T')) {\r\n duration = duration.substring(1);\r\n }\r\n\r\n const regex = /(\\d+(\\.\\d+)?)([HMS])/g;\r\n let match;\r\n let hours = 0,\r\n minutes = 0,\r\n seconds = 0,\r\n ms = 0;\r\n\r\n while ((match = regex.exec(duration)) !== null) {\r\n const value = parseFloat(match[1]);\r\n const unit = match[3];\r\n\r\n if (unit === 'H') {\r\n hours = value;\r\n } else if (unit === 'M') {\r\n minutes = value;\r\n } else if (unit === 'S') {\r\n seconds = Math.floor(value);\r\n ms = Math.round((value - seconds) * 1000);\r\n }\r\n }\r\n\r\n return new CuiTime(hours, minutes, seconds, ms);\r\n }\r\n\r\n private static parseHours(time: string): number {\r\n return Number(time.slice(0, 2));\r\n }\r\n\r\n public toString(mode?: CuiTimeMode): string {\r\n const needAddMs = mode?.startsWith('HH:MM:SS.MSS') || (!mode && this.ms > 0);\r\n const needAddSeconds = needAddMs || mode?.startsWith('HH:MM:SS') || (!mode && this.seconds > 0);\r\n const hhMm = `${this.formatTime(this.hours)}:${this.formatTime(this.minutes)}`;\r\n const ss = needAddSeconds ? `:${this.formatTime(this.seconds)}` : '';\r\n const mss = needAddMs ? `.${this.formatTime(this.ms, 3)}` : '';\r\n\r\n return `${hhMm}${ss}${mss}`;\r\n }\r\n\r\n public toPT(mode?: CuiTimeMode): string {\r\n let duration = 'PT';\r\n if (this.hours !== 0) {\r\n duration += `${this.hours}H`;\r\n }\r\n\r\n if (this.minutes !== 0) {\r\n duration += `${this.minutes}M`;\r\n }\r\n\r\n const totalSeconds = this.seconds + this.ms / 1000;\r\n\r\n if (totalSeconds !== 0 || duration === 'PT') {\r\n duration += `${parseFloat(totalSeconds.toFixed(3))}S`;\r\n }\r\n\r\n return duration;\r\n }\r\n\r\n private formatTime(time: number, digits = 2): string {\r\n return String(time).padStart(digits, '0');\r\n }\r\n}\r\n","import type { CuiBooleanHandler } from '../types';\r\nimport type { Observable, OperatorFunction } from 'rxjs';\r\nimport { EMPTY, pipe, switchMap } from 'rxjs';\r\n\r\nexport function cuiIfMap<T, G>(\r\n project: (value: T) => Observable<G>,\r\n predicate: CuiBooleanHandler<T> = Boolean\r\n): OperatorFunction<T, G> {\r\n return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\r\n}\r\n","import type { Observable } from 'rxjs';\r\nimport { fromEvent } from 'rxjs';\r\n\r\nexport interface CuiTypedEventTarget<E> {\r\n addEventListener(\r\n type: string,\r\n listener: ((evt: E) => void) | null,\r\n options?: AddEventListenerOptions | boolean\r\n ): void;\r\n removeEventListener(\r\n type: string,\r\n listener?: ((evt: E) => void) | null,\r\n options?: EventListenerOptions | boolean\r\n ): void;\r\n}\r\n\r\n/**\r\n * Wrapper around {@link Event} to add typings to target and currentTarget.\r\n */\r\nexport type CuiEventWith<G extends Event, T extends CuiTypedEventTarget<G>> = G & {\r\n readonly currentTarget: T;\r\n};\r\n\r\nexport function cuiTypedFromEvent<E extends keyof WindowEventMap>(\r\n target: Window,\r\n event: E,\r\n options?: AddEventListenerOptions\r\n): Observable<CuiEventWith<WindowEventMap[E], typeof target>>;\r\n\r\nexport function cuiTypedFromEvent<E extends keyof DocumentEventMap>(\r\n target: Document,\r\n event: E,\r\n options?: AddEventListenerOptions\r\n): Observable<CuiEventWith<DocumentEventMap[E], typeof target>>;\r\n\r\nexport function cuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\r\n target: T,\r\n event: E,\r\n options?: AddEventListenerOptions\r\n): Observable<CuiEventWith<HTMLElementEventMap[E], typeof target>>;\r\n\r\nexport function cuiTypedFromEvent<E extends Event, T extends CuiTypedEventTarget<CuiEventWith<E, T>>>(\r\n target: T,\r\n event: string,\r\n options?: AddEventListenerOptions\r\n): Observable<CuiEventWith<E, T>>;\r\n\r\nexport function cuiTypedFromEvent<E extends Event>(\r\n target: CuiTypedEventTarget<E>,\r\n event: string,\r\n options?: AddEventListenerOptions\r\n): Observable<E>;\r\n\r\nexport function cuiTypedFromEvent<E extends Event>(\r\n target: CuiTypedEventTarget<E>,\r\n event: string,\r\n options: AddEventListenerOptions = {}\r\n): Observable<E> {\r\n /**\r\n * @note:\r\n * in RxJS 7 type signature `CuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\r\n */\r\n return fromEvent<E>(target as any, event, options) as unknown as Observable<E>;\r\n}\r\n","import { ChangeDetectorRef, inject } from '@angular/core';\r\nimport type { MonoTypeOperatorFunction } from 'rxjs';\r\nimport { tap } from 'rxjs';\r\n\r\nexport function cuiWatch<T>(cdr = inject(ChangeDetectorRef)): MonoTypeOperatorFunction<T> {\r\n return tap(() => cdr.markForCheck());\r\n}\r\n","import { inject, NgZone } from '@angular/core';\r\nimport type { MonoTypeOperatorFunction, SchedulerLike, Subscription } from 'rxjs';\r\nimport { asyncScheduler, Observable, pipe } from 'rxjs';\r\n\r\nexport function cuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\r\n return (source) =>\r\n new Observable((subscriber) =>\r\n source.subscribe({\r\n next: (value) => zone.run(() => subscriber.next(value)),\r\n error: (error: unknown) => zone.run(() => subscriber.error(error)),\r\n complete: () => zone.run(() => subscriber.complete())\r\n })\r\n );\r\n}\r\n\r\nexport function cuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\r\n return (source) => new Observable((subscriber) => zone.runOutsideAngular(() => source.subscribe(subscriber)));\r\n}\r\n\r\nexport function cuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\r\n return pipe(cuiZonefree(zone), cuiZonefull(zone));\r\n}\r\n\r\nclass CuiZoneScheduler implements SchedulerLike {\r\n constructor(\r\n private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\r\n private readonly scheduler: SchedulerLike = asyncScheduler\r\n ) {}\r\n\r\n public now(): number {\r\n return this.scheduler.now();\r\n }\r\n\r\n public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\r\n return this.zoneConditionFn(() => this.scheduler.schedule(...args));\r\n }\r\n}\r\n\r\nexport function cuiZonefreeScheduler(zone = inject(NgZone), scheduler: SchedulerLike = asyncScheduler): SchedulerLike {\r\n return new CuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\r\n}\r\n\r\nexport function cuiZonefullScheduler(zone = inject(NgZone), scheduler: SchedulerLike = asyncScheduler): SchedulerLike {\r\n return new CuiZoneScheduler(zone.run.bind(zone), scheduler);\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport function cuiCreateToken<T>(defaults: T): InjectionToken<T> {\r\n return cuiCreateTokenFromFactory(() => defaults);\r\n}\r\n\r\nexport function cuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T> {\r\n return new InjectionToken<T>('', { factory });\r\n}\r\n","import type { ExistingProvider, ProviderToken } from '@angular/core';\r\n\r\nexport function cuiProvide<T>(provide: ProviderToken<T>, useExisting: ProviderToken<T>): ExistingProvider;\r\nexport function cuiProvide<T>(\r\n provide: ProviderToken<T | T[]>,\r\n useExisting: ProviderToken<T>,\r\n multi: boolean\r\n): ExistingProvider;\r\nexport function cuiProvide<T>(\r\n provide: ProviderToken<T>,\r\n useExisting: ProviderToken<T>,\r\n multi = false\r\n): ExistingProvider {\r\n return { provide, useExisting, multi };\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\nexport const CUI_WINDOW = cuiCreateTokenFromFactory<Window>(() => {\r\n const { defaultView } = inject(DOCUMENT);\r\n\r\n if (!defaultView) {\r\n throw new Error('Window is not available');\r\n }\r\n\r\n return defaultView;\r\n});\r\n","export function cuiContainsOrAfter(current: Node, node: Node): boolean {\r\n try {\r\n return current.contains(node) || !!(node.compareDocumentPosition(current) & Node.DOCUMENT_POSITION_PRECEDING);\r\n } catch {\r\n return false;\r\n }\r\n}\r\n","export function cuiIsInput(element: Element): element is HTMLInputElement {\r\n return element.matches('input');\r\n}\r\n\r\nexport function cuiIsTextarea(element: Element): element is HTMLTextAreaElement {\r\n return element.matches('textarea');\r\n}\r\n\r\nexport function cuiIsTextfield(element: Element): element is HTMLInputElement | HTMLTextAreaElement {\r\n return cuiIsInput(element) || cuiIsTextarea(element);\r\n}\r\n\r\nexport function cuiIsElement(node?: Element | EventTarget | Node | null): node is Element {\r\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\r\n}\r\n\r\nexport function cuiIsHTMLElement(node: unknown): node is HTMLElement {\r\n const defaultView = (node as Element | undefined)?.ownerDocument.defaultView;\r\n\r\n return !!node && !!defaultView && node instanceof defaultView.HTMLElement;\r\n}\r\n\r\nexport function cuiIsTextNode(node: Node): node is Text {\r\n return node.nodeType === Node.TEXT_NODE;\r\n}\r\n","/**\r\n * Gets actual target from open Shadow DOM if event happened within it\r\n */\r\nexport function cuiGetActualTarget(event: Event): Node {\r\n return event.composedPath()[0] as Node;\r\n}\r\n","export function cuiGetDocumentOrShadowRoot(node: Node): DocumentOrShadowRoot {\r\n return 'getRootNode' in node && node.isConnected\r\n ? (node.getRootNode() as Document)\r\n : (node.ownerDocument as DocumentOrShadowRoot);\r\n}\r\n","/**\r\n * Clamps a value between two inclusive limits\r\n *\r\n * @param value\r\n * @param min lower limit\r\n * @param max upper limit\r\n */\r\nexport function cuiClamp(value: number, min: number, max: number): number {\r\n return Math.min(max, Math.max(min, value));\r\n}\r\n","export function cuiMoveItemInArray<T>(array: T[], fromIndex: number, toIndex: number): T[] {\r\n const resultArray = [...array];\r\n\r\n if (fromIndex === toIndex) {\r\n return resultArray;\r\n }\r\n\r\n const [item] = resultArray.splice(fromIndex, 1);\r\n\r\n resultArray.splice(toIndex, 0, item);\r\n\r\n return resultArray;\r\n}\r\n","export function cuiArrayRemove<T>(array: readonly T[], index: number): T[] {\r\n return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));\r\n}\r\n","export function cuiIsPresent<T>(value?: T | null): value is T {\r\n return value !== null && value !== undefined;\r\n}\r\n","function decorateMethod(\r\n originalMethod: (...args: unknown[]) => unknown\r\n): (this: object, ...args: unknown[]) => unknown {\r\n let previousArgs: readonly unknown[] = [];\r\n let originalFnWasCalledLeastAtOnce = false;\r\n let pureValue: unknown;\r\n\r\n return function cuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\r\n const isPure =\r\n originalFnWasCalledLeastAtOnce &&\r\n previousArgs.length === args.length &&\r\n args.every((arg, index) => arg === previousArgs[index]);\r\n\r\n if (isPure) {\r\n return pureValue;\r\n }\r\n\r\n previousArgs = args;\r\n pureValue = originalMethod.apply(this, args);\r\n originalFnWasCalledLeastAtOnce = true;\r\n\r\n return pureValue;\r\n };\r\n}\r\n\r\nfunction decorateGetter(\r\n originalGetter: () => unknown,\r\n propertyKey: string | symbol,\r\n enumerable = true\r\n): (this: object) => unknown {\r\n return function cuiPureGetterPatched(this: object): unknown {\r\n const value = originalGetter.call(this);\r\n\r\n Object.defineProperty(this, propertyKey, { enumerable, value });\r\n\r\n return value;\r\n };\r\n}\r\n\r\n/**\r\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\r\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\r\n * value for function, skipping calculation when arguments are strictly the same.\r\n *\r\n * @throws error if used not on getter or function\r\n *\r\n * CAUTION: they must be pure.\r\n */\r\nexport function cuiPure<T>(\r\n target: object,\r\n propertyKey: string,\r\n { get, enumerable, value }: TypedPropertyDescriptor<T>\r\n): TypedPropertyDescriptor<T>;\r\n\r\n/**\r\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\r\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\r\n * value for function, skipping calculation when arguments are strictly the same.\r\n *\r\n * CAUTION: they must be pure.\r\n */\r\nexport function cuiPure<A extends unknown[], R>(target: (...args: A) => R, context: any): (...args: A) => R;\r\n\r\nexport function cuiPure(\r\n target: object | ((...args: unknown[]) => unknown),\r\n propertyKeyOrContext: any | string,\r\n descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>\r\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\r\n if (typeof target === 'function') {\r\n const context = propertyKeyOrContext as any;\r\n\r\n if (context.kind === 'getter') {\r\n return decorateGetter(target as () => unknown, context.name);\r\n }\r\n\r\n if (context.kind === 'method') {\r\n return decorateMethod(target as (...args: unknown[]) => unknown);\r\n }\r\n\r\n throw new CuiPureException();\r\n }\r\n\r\n const { get, enumerable, value } = descriptor!;\r\n const propertyKey = propertyKeyOrContext as string;\r\n\r\n if (get) {\r\n return {\r\n configurable: true,\r\n enumerable,\r\n get: decorateGetter(get, propertyKey, enumerable)\r\n };\r\n }\r\n\r\n if (typeof value !== 'function') {\r\n throw new CuiPureException();\r\n }\r\n\r\n const original = value;\r\n\r\n return {\r\n configurable: true,\r\n enumerable,\r\n get(): unknown {\r\n let previousArgs: readonly unknown[] = [];\r\n let originalFnWasCalledLeastAtOnce = false;\r\n let pureValue: unknown;\r\n\r\n const patched = (...args: unknown[]): unknown => {\r\n const isPure =\r\n originalFnWasCalledLeastAtOnce &&\r\n previousArgs.length === args.length &&\r\n args.every((arg, index) => arg === previousArgs[index]);\r\n\r\n if (isPure) {\r\n return pureValue;\r\n }\r\n\r\n previousArgs = args;\r\n pureValue = original.apply(this, args);\r\n originalFnWasCalledLeastAtOnce = true;\r\n\r\n return pureValue;\r\n };\r\n\r\n Object.defineProperty(this, propertyKey, {\r\n configurable: true,\r\n value: patched\r\n });\r\n\r\n return patched as unknown;\r\n }\r\n };\r\n}\r\n\r\nexport class CuiPureException extends Error {\r\n constructor() {\r\n super('cuiPure can only be used with functions or getters');\r\n }\r\n}\r\n","/**\r\n * Adds 'px' to the number and turns it into a string\r\n */\r\nexport function cuiPx(value: number): string {\r\n return `${value}px`;\r\n}\r\n","import { cuiClamp } from '../math';\r\nimport { cuiIsPresent } from '../miscellaneous';\r\n\r\nimport { cuiGetDocumentOrShadowRoot } from './get-document-or-shadow-root';\r\n\r\n/**\r\n * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible\r\n *\r\n * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered\r\n * ```ts\r\n * function cuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null\r\n * ```\r\n */\r\nexport function cuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null {\r\n const { ownerDocument } = element;\r\n\r\n if (!ownerDocument?.defaultView || !element.getBoundingClientRect) {\r\n return null;\r\n }\r\n\r\n const { innerWidth, innerHeight } = ownerDocument.defaultView;\r\n const doc = cuiGetDocumentOrShadowRoot(element);\r\n const rect = element.getBoundingClientRect();\r\n\r\n if (rect.width === 0 && rect.height === 0) {\r\n return null;\r\n }\r\n\r\n const left = cuiClamp(Math.round(rect.left) + 2, 0, innerWidth);\r\n const top = cuiClamp(Math.round(rect.top) + 2, 0, innerHeight);\r\n const right = cuiClamp(Math.round(rect.right) - 2, 0, innerWidth);\r\n const bottom = cuiClamp(Math.round(rect.bottom) - 2, 0, innerHeight);\r\n const horizontalMiddle = cuiClamp(Math.round(rect.left + rect.width / 2), 0, innerWidth);\r\n const verticalMiddle = cuiClamp(Math.round(rect.top + rect.height / 2), 0, innerHeight);\r\n const elements = [\r\n doc.elementFromPoint(horizontalMiddle, top),\r\n doc.elementFromPoint(horizontalMiddle, bottom),\r\n doc.elementFromPoint(left, verticalMiddle),\r\n doc.elementFromPoint(right, verticalMiddle)\r\n ];\r\n const nonNull = elements.filter(cuiIsPresent);\r\n\r\n if (!nonNull.length) {\r\n return [];\r\n }\r\n\r\n const filtered = nonNull.filter((el) => !element.contains(el) && !el.contains(element));\r\n\r\n return filtered.length === 4 ? (filtered as [Element, Element, Element, Element]) : null;\r\n}\r\n","import { ElementRef, inject } from '@angular/core';\r\n\r\nexport function cuiInjectElement<T = HTMLElement>(): T {\r\n return inject(ElementRef).nativeElement;\r\n}\r\n","export function cuiPointToClientRect(x = 0, y = 0): DOMRect {\r\n const rect = {\r\n x,\r\n y,\r\n left: x,\r\n right: x,\r\n top: y,\r\n bottom: y,\r\n width: 0,\r\n height: 0\r\n } as const;\r\n\r\n return {\r\n ...rect,\r\n toJSON: () => rect\r\n };\r\n}\r\n","export function cuiGetNativeFocused({ activeElement }: Document): Element | null {\r\n if (!activeElement?.shadowRoot) {\r\n return activeElement;\r\n }\r\n\r\n let element = activeElement.shadowRoot.activeElement;\r\n\r\n while (element?.shadowRoot) {\r\n element = element.shadowRoot.activeElement;\r\n }\r\n\r\n return element;\r\n}\r\n","import { cuiGetNativeFocused } from './get-native-focused';\r\nimport { cuiIsHTMLElement } from '../dom';\r\n\r\nexport function cuiBlurNativeFocused(document: Document): void {\r\n const activeElement = cuiGetNativeFocused(document);\r\n\r\n if (cuiIsHTMLElement(activeElement)) {\r\n activeElement.blur();\r\n }\r\n}\r\n","import { cuiIsHTMLElement } from '../dom';\r\n\r\nexport function cuiIsNativeKeyboardFocusable(element: Element): boolean {\r\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\r\n return false;\r\n }\r\n\r\n if ((cuiIsHTMLElement(element) && element.isContentEditable) || element.getAttribute('tabIndex') === '0') {\r\n return true;\r\n }\r\n\r\n switch (element.tagName) {\r\n case 'BUTTON':\r\n case 'SELECT':\r\n case 'TEXTAREA':\r\n return true;\r\n case 'VIDEO':\r\n case 'AUDIO':\r\n return element.hasAttribute('controls');\r\n case 'INPUT':\r\n return element.getAttribute('type') !== 'hidden';\r\n case 'A':\r\n case 'LINK':\r\n return element.hasAttribute('href');\r\n default:\r\n return false;\r\n }\r\n}\r\n","import { cuiIsNativeKeyboardFocusable } from './is-native-keyboard-focusable';\r\n\r\nexport function cuiIsNativeMouseFocusable(element: Element): boolean {\r\n return (\r\n !element.hasAttribute('disabled') &&\r\n (element.getAttribute('tabIndex') === '-1' || cuiIsNativeKeyboardFocusable(element))\r\n );\r\n}\r\n","import { cuiIsNativeKeyboardFocusable } from './is-native-keyboard-focusable';\r\nimport { cuiIsNativeMouseFocusable } from './is-native-mouse-focusable';\r\nimport { cuiIsHTMLElement } from '../dom';\r\nimport { svgNodeFilter } from '../../constants';\r\n\r\nexport interface CuiGetClosestFocusableOptions {\r\n initial: Element;\r\n keyboard?: boolean;\r\n previous?: boolean;\r\n root: Node;\r\n}\r\n\r\nexport function cuiGetClosestFocusable({\r\n initial,\r\n root,\r\n previous = false,\r\n keyboard = true\r\n}: CuiGetClosestFocusableOptions): HTMLElement | null {\r\n if (!root.ownerDocument) {\r\n return null;\r\n }\r\n\r\n const check = keyboard ? cuiIsNativeKeyboardFocusable : cuiIsNativeMouseFocusable;\r\n const treeWalker = root.ownerDocument.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, svgNodeFilter);\r\n\r\n treeWalker.currentNode = initial;\r\n\r\n while (previous ? treeWalker.previousNode() : treeWalker.nextNode()) {\r\n if (cuiIsHTMLElement(treeWalker.currentNode)) {\r\n initial = treeWalker.currentNode;\r\n }\r\n\r\n if (cuiIsHTMLElement(initial) && check(initial)) {\r\n return initial;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n","import { cuiGetNativeFocused } from './get-native-focused';\r\n\r\n/**\r\n * Checks if element is focused.\r\n *\r\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\r\n *\r\n * @param node or null (as a common return value of DOM nodes walking)\r\n * @return true if focused\r\n */\r\nexport function cuiIsNativeFocused(node?: Node | null): boolean {\r\n return !!node?.ownerDocument && cuiGetNativeFocused(node.ownerDocument) === node && node.ownerDocument.hasFocus();\r\n}\r\n","export const CUI_SAFARI_REG_EXP = /^((?!chrome|android).)*safari/i;\r\nexport const CUI_IOS_REG_EXP = /ipad|iphone|ipod/i;\r\n\r\nexport function cuiIsIos({ userAgent, maxTouchPoints }: Navigator): boolean {\r\n return CUI_SAFARI_REG_EXP.test(userAgent) || (CUI_IOS_REG_EXP.test(userAgent) && maxTouchPoints > 1);\r\n}\r\n","class FilesUploaderImpl {\r\n public uploadFile(types = '*'): Promise<FileList> {\r\n const input = document.createElement('input');\r\n\r\n input.type = 'file';\r\n input.accept = types;\r\n\r\n return new Promise((resolve) => {\r\n input.onchange = (): void => {\r\n const files = input.files;\r\n\r\n if (!files?.length) {\r\n return;\r\n }\r\n\r\n resolve(files);\r\n };\r\n\r\n input.click();\r\n });\r\n }\r\n}\r\n\r\nexport const FilesUploader = new FilesUploaderImpl();\r\n","export function takeCaptureFromVideo(url: string, time = 1): Promise<string> {\r\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\r\n const video = document.createElement('video') as HTMLVideoElement;\r\n\r\n video.src = url;\r\n video.currentTime = time;\r\n canvas.width = 184;\r\n canvas.height = 120;\r\n\r\n return new Promise((resolve) => {\r\n video.onloadeddata = (): void => {\r\n const context = canvas.getContext('2d');\r\n\r\n if (!context) {\r\n return;\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n\r\n canvas.toBlob((blob) => {\r\n if (!blob) {\r\n return;\r\n }\r\n\r\n resolve(URL.createObjectURL(blob));\r\n });\r\n };\r\n\r\n video.load();\r\n });\r\n}\r\n","import { ɵAnimationEngine as AnimationEngine } from '@angular/animations/browser';\r\nimport { inject } from '@angular/core';\r\nimport { cuiCreateTokenFromFactory } from '../utils';\r\nimport { BehaviorSubject, map, share, startWith, switchMap, timer } from 'rxjs';\r\n\r\n/**\r\n * Element currently being removed by AnimationEngine\r\n */\r\nexport const CUI_REMOVED_ELEMENT = cuiCreateTokenFromFactory(() => {\r\n const stub = { onRemovalComplete: () => {} };\r\n const element$ = new BehaviorSubject<Element | null>(null);\r\n const engine = inject(AnimationEngine, { optional: true }) || stub;\r\n const { onRemovalComplete = stub.onRemovalComplete } = engine;\r\n\r\n engine.onRemovalComplete = (element, context) => {\r\n element$.next(element);\r\n onRemovalComplete.call(engine, element, context);\r\n };\r\n\r\n return element$.pipe(\r\n switchMap((element) =>\r\n timer(0).pipe(\r\n map(() => null),\r\n startWith(element)\r\n )\r\n ),\r\n share()\r\n );\r\n});\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { inject, NgZone } from '@angular/core';\r\nimport { CUI_WINDOW } from './window';\r\nimport { cuiTypedFromEvent, cuiZonefreeScheduler } from '../observables';\r\nimport {\r\n cuiCreateTokenFromFactory,\r\n cuiGetActualTarget,\r\n cuiGetDocumentOrShadowRoot,\r\n cuiIsNativeMouseFocusable\r\n} from '../utils';\r\nimport type { Observable } from 'rxjs';\r\nimport {\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n merge,\r\n of,\r\n repeat,\r\n share,\r\n startWith,\r\n switchMap,\r\n take,\r\n takeUntil,\r\n timer,\r\n withLatestFrom\r\n} from 'rxjs';\r\n\r\nimport { CUI_REMOVED_ELEMENT } from './removed-element';\r\n\r\n// Checks if focusout event should be considered leaving active zone\r\nfunction isValidFocusout(target: any, removedElement: Element | null = null): boolean {\r\n return (\r\n // Not due to switching tabs/going to DevTools\r\n cuiGetDocumentOrShadowRoot(target).activeElement !== target &&\r\n // Not due to button/input becoming disabled or under disabled fieldset\r\n !target.matches(':disabled') &&\r\n // Not due to element being removed from DOM\r\n !removedElement?.contains(target) &&\r\n // Not due to scrollable element became non-scrollable\r\n cuiIsNativeMouseFocusable(target)\r\n );\r\n}\r\n\r\nfunction shadowRootActiveElement(root: Document): Observable<EventTarget | null> {\r\n return merge(\r\n cuiTypedFromEvent(root, 'focusin').pipe(map(({ target }) => target)),\r\n cuiTypedFromEvent(root, 'focusout').pipe(\r\n filter(({ target, relatedTarget }) => !!relatedTarget && isValidFocusout(target)),\r\n map(({ relatedTarget }) => relatedTarget)\r\n )\r\n );\r\n}\r\n\r\n/**\r\n * Active element on the document for ActiveZone\r\n */\r\nexport const CUI_ACTIVE_ELEMENT = cuiCreateTokenFromFactory<Observable<EventTarget | null>>(() => {\r\n const removedElement$ = inject(CUI_REMOVED_ELEMENT);\r\n const win = inject(CUI_WINDOW);\r\n const doc = inject(DOCUMENT);\r\n const zone = inject(NgZone);\r\n const focusout$ = cuiTypedFromEvent(win, 'focusout', { capture: true });\r\n const focusin$ = cuiTypedFromEvent(win, 'focusin', { capture: true });\r\n const blur$ = cuiTypedFromEvent(win, 'blur');\r\n const mousedown$ = cuiTypedFromEvent(win, 'mousedown');\r\n const mouseup$ = cuiTypedFromEvent(win, 'mouseup');\r\n\r\n return merge(\r\n focusout$.pipe(\r\n takeUntil(mousedown$),\r\n repeat({ delay: () => mouseup$ }),\r\n withLatestFrom(removedElement$),\r\n filter(([event, removedElement]) => isValidFocusout(cuiGetActualTarget(event), removedElement)),\r\n map(([{ relatedTarget }]) => relatedTarget)\r\n ),\r\n blur$.pipe(\r\n map(() => doc.activeElement),\r\n filter((element) => !!element?.matches('iframe'))\r\n ),\r\n focusin$.pipe(\r\n switchMap((event) => {\r\n const target = cuiGetActualTarget(event);\r\n const root = cuiGetDocumentOrShadowRoot(target) as Document;\r\n\r\n return root === doc ? of(target) : shadowRootActiveElement(root).pipe(startWith(target));\r\n })\r\n ),\r\n mousedown$.pipe(\r\n switchMap((event) => {\r\n const actualTargetInCurrentTime = cuiGetActualTarget(event);\r\n\r\n return !doc.activeElement || doc.activeElement === doc.body\r\n ? of(actualTargetInCurrentTime)\r\n : focusout$.pipe(\r\n take(1),\r\n map(\r\n /**\r\n * Do not use `map(() => cuiGetActualTarget(event))`\r\n * because we have different result in runtime\r\n */\r\n () => actualTargetInCurrentTime\r\n ),\r\n takeUntil(timer(0, cuiZonefreeScheduler(zone)))\r\n );\r\n })\r\n )\r\n ).pipe(distinctUntilChanged(), share());\r\n});\r\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { Observable, share } from 'rxjs';\r\n\r\nimport { CUI_WINDOW } from './window';\r\n\r\nexport const CUI_ANIMATION_FRAME = new InjectionToken<Observable<DOMHighResTimeStamp>>('[CUI_ANIMATION_FRAME]', {\r\n factory: () => {\r\n const { requestAnimationFrame, cancelAnimationFrame } = inject(CUI_WINDOW);\r\n const animationFrame$ = new Observable<DOMHighResTimeStamp>((subscriber) => {\r\n let id = NaN;\r\n const callback = (timestamp: DOMHighResTimeStamp): void => {\r\n subscriber.next(timestamp);\r\n id = requestAnimationFrame(callback);\r\n };\r\n\r\n id = requestAnimationFrame(callback);\r\n\r\n return () => {\r\n cancelAnimationFrame(id);\r\n };\r\n });\r\n\r\n return animationFrame$.pipe(share());\r\n }\r\n});\r\n","import { inject, InjectionToken } from '@angular/core';\r\n\r\nimport { CUI_WINDOW } from './window';\r\n\r\nexport const CUI_NAVIGATOR = new InjectionToken<Navigator>('[CUI_NAVIGATOR]', {\r\n factory: () => inject(CUI_WINDOW).navigator\r\n});\r\n","import { inject, InjectionToken } from '@angular/core';\r\n\r\nimport { CUI_NAVIGATOR } from './navigator';\r\n\r\nexport const CUI_USER_AGENT = new InjectionToken<string>('[CUI_USER_AGENT]', {\r\n factory: () => inject(CUI_NAVIGATOR).userAgent\r\n});\r\n","import { inject } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { CUI_NAVIGATOR } from './navigator';\r\nimport { cuiIsIos } from '../utils';\r\nimport { CUI_FALSE_HANDLER } from '../constants';\r\nimport { cuiCreateTokenFromFactory } from '../utils';\r\nimport { fromEvent, map } from 'rxjs';\r\nimport { CUI_USER_AGENT } from './user-agent';\r\nimport { CUI_WINDOW } from './window';\r\n\r\n// https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/\r\nconst firstRegex =\r\n // eslint-disable-next-line sonarjs/regex-complexity\r\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series([46])0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/;\r\nconst secondRegex =\r\n // eslint-disable-next-line sonarjs/regex-complexity\r\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br([ev])w|bumb|bw-([nu])|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly([-_])|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \\-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\\/([klu])|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c([-01])|47|mc|nd|ri)|sgh-|shar|sie([-m])|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel([im])|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c([- ])|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/;\r\n\r\nexport const CUI_IS_MOBILE = cuiCreateTokenFromFactory(\r\n () =>\r\n firstRegex.test(inject(CUI_USER_AGENT).toLowerCase()) ||\r\n secondRegex.test(inject(CUI_USER_AGENT).slice(0, 4).toLowerCase())\r\n);\r\n\r\nexport const CUI_IS_IOS = cuiCreateTokenFromFactory(() => cuiIsIos(inject(CUI_NAVIGATOR)));\r\n\r\nexport const CUI_IS_ANDROID = cuiCreateTokenFromFactory(() => inject(CUI_IS_MOBILE) && !inject(CUI_IS_IOS));\r\n\r\nexport const CUI_IS_WEBKIT = cuiCreateTokenFromFactory(\r\n () => !!inject<any>(CUI_WINDOW)?.webkitConvertPointFromNodeToPage\r\n);\r\n\r\nexport const CUI_PLATFORM = cuiCreateTokenFromFactory<'android' | 'ios' | 'web'>(() => {\r\n if (inject(CUI_IS_IOS)) {\r\n return 'ios';\r\n }\r\n\r\n return inject(CUI_IS_ANDROID) ? 'android' : 'web';\r\n});\r\n\r\nexport const CUI_IS_TOUCH = cuiCreateTokenFromFactory(() => {\r\n const media = inject(CUI_WINDOW).matchMedia('(pointer: coarse)');\r\n\r\n return toSignal(fromEvent(media, 'change').pipe(map(() => media.matches)), {\r\n initialValue: media.matches\r\n });\r\n});\r\n\r\n/**\r\n * Detect if app is running under Cypress\r\n * {@link https://docs.cypress.io/faq/questions/using-cypress-faq#Is-there-any-way-to-detect-if-my-app-is-running-under-Cypress Cypress docs}\r\n */\r\nexport const CUI_IS_CYPRESS = cuiCreateTokenFromFactory(() => !!inject<any>(CUI_WINDOW).Cypress);\r\n\r\n/**\r\n * Manually provide `true` when running tests in Playwright\r\n */\r\nexport const CUI_IS_PLAYWRIGHT = cuiCreateTokenFromFactory<boolean>(CUI_FALSE_HANDLER);\r\n\r\n/**\r\n * Detect if app is running under any of test frameworks\r\n */\r\nexport const CUI_IS_E2E = cuiCreateTokenFromFactory(() => inject(CUI_IS_CYPRESS) || inject(CUI_IS_PLAYWRIGHT));\r\n","import { inject } from '@angular/core';\r\n\r\nimport { CUI_WINDOW } from './window';\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\nexport const CUI_HISTORY = cuiCreateTokenFromFactory<History>(() => inject(CUI_WINDOW).history);\r\n","import { inject } from '@angular/core';\r\n\r\nimport { CUI_WINDOW } from './window';\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\nexport const CUI_LOCAL_STORAGE = cuiCreateTokenFromFactory(() => inject(CUI_WINDOW).localStorage);\r\n","import { inject } from '@angular/core';\r\n\r\nimport { CUI_WINDOW } from './window';\r\nimport { cuiCreateTokenFromFactory } from '../utils/token';\r\n\r\nexport const CUI_SESSION_STORAGE = cuiCreateTokenFromFactory(() => inject(CUI_WINDOW).sessionStorage);\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { Directive, inject, Input, NgZone, Output } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { cuiZoneOptimized } from '../../observables';\r\nimport { CUI_ACTIVE_ELEMENT } from '../../tokens';\r\nimport { cuiArrayRemove, cuiInjectElement, cuiPure } from '../../utils';\r\nimport type { Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map, skip, startWith, tap } from 'rxjs';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector:\r\n '[cuiActiveZone]:not(ng-container), [cuiActiveZoneChange]:not(ng-container), [cuiActiveZoneParent]:not(ng-container)',\r\n exportAs: 'cuiActiveZone',\r\n host: {\r\n '(document:mousedown.silent)': '(0)'\r\n }\r\n})\r\nexport class CuiActiveZone implements OnDestroy {\r\n private readonly control: any = inject(NgControl, { self: true, optional: true });\r\n private readonly active$ = inject<Observable<Element | null>>(CUI_ACTIVE_ELEMENT);\r\n private readonly zone = inject(NgZone);\r\n private readonly el = cuiInjectElement();\r\n private cuiActiveZoneParent: CuiActiveZone | null = null;\r\n private subActiveZones: readonly CuiActiveZone[] = [];\r\n private readonly directParentActiveZone = inject(CuiActiveZone, {\r\n skipSelf: true,\r\n optional: true\r\n });\r\n\r\n @Output()\r\n public readonly cuiActiveZoneChange = this.active$.pipe(\r\n map((element) => !!element && this.contains(element)),\r\n startWith(false),\r\n distinctUntilChanged(),\r\n skip(1),\r\n tap((active) => {\r\n if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {\r\n this.control.valueAccessor.onTouched();\r\n }\r\n }),\r\n cuiZoneOptimized(this.zone)\r\n );\r\n\r\n constructor() {\r\n this.directParentActiveZone?.addSubActiveZone(this);\r\n }\r\n\r\n @Input('cuiActiveZoneParent')\r\n public set cuiActiveZoneParentSetter(zone: CuiActiveZone | null) {\r\n this.setZone(zone);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.directParentActiveZone?.removeSubActiveZone(this);\r\n this.cuiActiveZoneParent?.removeSubActiveZone(this);\r\n }\r\n\r\n public contains(node: Node): boolean {\r\n return (\r\n this.el.contains(node) ||\r\n this.subActiveZones.some((item, index, array) => array.indexOf(item) === index && item.contains(node))\r\n );\r\n }\r\n\r\n @cuiPure\r\n private setZone(zone: CuiActiveZone | null): void {\r\n this.cuiActiveZoneParent?.removeSubActiveZone(this);\r\n zone?.addSubActiveZone(this);\r\n this.cuiActiveZoneParent = zone;\r\n }\r\n\r\n private addSubActiveZone(activeZone: CuiActiveZone): void {\r\n this.subActiveZones = [...this.subActiveZones, activeZone];\r\n }\r\n\r\n private removeSubActiveZone(activeZone: CuiActiveZone): void {\r\n this.subActiveZones = cuiArrayRemove(this.subActiveZones, this.subActiveZones.indexOf(activeZone));\r\n }\r\n}\r\n","import type { Signal } from '@angular/core';\r\nimport { inject, Injectable, NgZone } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { CUI_FALSE_HANDLER, CUI_TRUE_HANDLER } from '../../constants';\r\nimport { cuiTypedFromEvent, cuiWatch, cuiZoneOptimized } from '../../observables';\r\nimport { CUI_IS_MOBILE } from '../../tokens';\r\nimport { cuiInjectElement, cuiIsElement } from '../../utils';\r\nimport { distinctUntilChanged, filter, map, merge, Observable, of } from 'rxjs';\r\n\r\nfunction movedOut({ currentTarget, relatedTarget }: MouseEvent): boolean {\r\n return !cuiIsElement(relatedTarget) || !cuiIsElement(currentTarget) || !currentTarget.contains(relatedTarget);\r\n}\r\n\r\n@Injectable()\r\nexport class CuiHoveredService extends Observable<boolean> {\r\n private readonly el = cuiInjectElement();\r\n private readonly zone = inject(NgZone);\r\n\r\n private readonly stream$ = merge(\r\n cuiTypedFromEvent(this.el, 'mouseenter').pipe(map(CUI_TRUE_HANDLER)),\r\n cuiTypedFromEvent(this.el, 'mouseleave').pipe(map(CUI_FALSE_HANDLER)),\r\n // Hello, Safari\r\n cuiTypedFromEvent(this.el, 'mouseout').pipe(filter(movedOut), map(CUI_FALSE_HANDLER))\r\n ).pipe(distinctUntilChanged(), cuiZoneOptimized(this.zone));\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n }\r\n}\r\n\r\nexport function cuiHovered(): Signal<boolean> {\r\n return toSignal(inject(CUI_IS_MOBILE) ? of(false) : inject(CuiHoveredService).pipe(cuiWatch()), {\r\n initialValue: false\r\n });\r\n}\r\n","import { Directive, inject, Output } from '@angular/core';\r\n\r\nimport { CuiHoveredService } from './hovered.service';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiHoveredChange]',\r\n providers: [CuiHoveredService]\r\n})\r\nexport class CuiHovered {\r\n @Output()\r\n public readonly cuiHoveredChange = inject(CuiHoveredService);\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Consumption, ConsumptionUnits, Unit } from '../models';\r\nimport { SystemUnits, UnitsSystem } from '../constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiConsumptionUnitsService {\r\n public getConsumptionsUnits(material: any): ConsumptionUnits {\r\n let consumptionsUnits: ConsumptionUnits = {};\r\n const consumptionsUnitsSystem = this.getConsumptionsUnitsSystem(material);\r\n const consumptions: Consumption[] = material.consumption;\r\n\r\n consumptions.forEach((consumption: Consumption) => {\r\n consumptionsUnits = {\r\n ...consumptionsUnits,\r\n [consumption]: this.getConsumptionUnits(consumption, consumptionsUnitsSystem)\r\n };\r\n });\r\n\r\n return consumptionsUnits;\r\n }\r\n\r\n public getConsumptionByUnit(unit: string): Consumption {\r\n const unitsSystem = this.getUnitsSystemByUnit(unit);\r\n const consumption = Object.entries(SystemUnits[unitsSystem]).find(([consumption, consumptionUnits]) =>\r\n consumptionUnits.find((consumptionUnit) => consumptionUnit.value === unit)\r\n )?.[0];\r\n\r\n return (consumption as Consumption) ?? Consumption.Length;\r\n }\r\n\r\n public getUnitsSystemByUnit(consumptionUnit: string): UnitsSystem {\r\n return Object.entries(SystemUnits).find(([unitsSystem, consumptionUnits]) =>\r\n Object.entries(consumptionUnits).find(([consumption, units]) =>\r\n units.find((unit) => unit.value === consumptionUnit)\r\n )\r\n )?.[0] as UnitsSystem;\r\n }\r\n\r\n private getConsumptionsUnitsSystem(material: any): UnitsSystem {\r\n let specifications: any = {};\r\n\r\n if (material.specifications) {\r\n specifications = material.specifications;\r\n } else {\r\n specifications = this.prepareParametersToSpecifications(material);\r\n }\r\n\r\n const weightValue = specifications.weight.unit;\r\n const unitsSystem = Object.entries(SystemUnits).find(([key, value]) => value.WEIGHT?.includes(weightValue));\r\n\r\n if (!unitsSystem) {\r\n return UnitsSystem.Metric;\r\n }\r\n\r\n return unitsSystem[0] as UnitsSystem;\r\n }\r\n\r\n private prepareParametersToSpecifications(material: any): any {\r\n const arrayFromParameters = material.parameters.map((param: any) => {\r\n return {\r\n [param.measure.toLowerCase()]: { value: param.value, unit: param.unit }\r\n };\r\n });\r\n\r\n return arrayFromParameters.reduce((result: any, item: any) => {\r\n for (const key in item) {\r\n if (Object.prototype.hasOwnProperty.call(item, key)) {\r\n result[key] = item[key];\r\n }\r\n }\r\n\r\n return result;\r\n }, {});\r\n }\r\n\r\n private getConsumptionUnits(consumption: Consumption, unitsSystem: UnitsSystem): Unit[] {\r\n return SystemUnits[unitsSystem][consumption] ?? [];\r\n }\r\n}\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CuiDestroyService extends Subject<void> implements OnDestroy {\r\n public ngOnDestroy(): void {\r\n this.next();\r\n this.complete();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nconst CUI = 'cui_';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiIdService {\r\n private static autoId = 0;\r\n\r\n public generate(): string {\r\n return `${CUI}${CuiIdService.autoId++}${Date.now()}`;\r\n }\r\n\r\n public checkIdGenerated(id: string): boolean {\r\n return id.startsWith(CUI);\r\n }\r\n}\r\n","import type { ProviderToken, TemplateRef, Type } from '@angular/core';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport type { BehaviorSubject, Observer } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { CuiIdService } from './id.service';\r\n\r\n// TODO: Content должен быть типом из директивы *content\r\nexport interface CuiPopoverContext {\r\n readonly $implicit: Observer<any>;\r\n readonly id: string;\r\n readonly component: Type<unknown>;\r\n readonly content: Type<unknown> | TemplateRef<unknown> | string;\r\n readonly completeWith: (value?: any) => void;\r\n}\r\n\r\nexport type CuiPopover<T> = T & CuiPopoverContext;\r\n\r\n@Injectable()\r\nexport abstract class CuiPopoverService<T> {\r\n private readonly cuiIdService = inject(CuiIdService);\r\n private readonly items$: BehaviorSubject<ReadonlyArray<CuiPopover<T>>>;\r\n private readonly component: Type<any>;\r\n\r\n constructor(\r\n items: ProviderToken<BehaviorSubject<ReadonlyArray<CuiPopover<T>>>>,\r\n component: Type<any>,\r\n private readonly options: T = {} as T\r\n ) {\r\n this.items$ = inject(items);\r\n this.component = component;\r\n }\r\n\r\n public open(content: CuiPopoverContext['content'], options: Partial<T> = {}): Observable<any> {\r\n return new Observable((observer) => {\r\n const item: CuiPopover<T> = {\r\n ...this.options,\r\n ...options,\r\n $implicit: observer,\r\n id: this.cuiIdService.generate(),\r\n component: this.component,\r\n content: content,\r\n completeWith: (result) => {\r\n observer.next(result);\r\n observer.complete();\r\n }\r\n };\r\n\r\n this.items$.next([...this.items$.value, item]);\r\n\r\n return () => {\r\n this.items$.next(this.items$.value.filter((value) => value !== item));\r\n };\r\n });\r\n }\r\n\r\n public closeAll(): void {\r\n this.items$.next([]);\r\n }\r\n}\r\n","import { Directive, ElementRef, inject, Renderer2 } from '@angular/core';\r\n\r\nimport { CuiIdService } from '../../services';\r\n\r\n@Directive({\r\n selector: '[cuiDragList]',\r\n standalone: true\r\n})\r\nexport class CuiDragListDirective {\r\n private readonly renderer = inject(Renderer2);\r\n private readonly element = inject(ElementRef).nativeElement;\r\n public readonly id = inject(CuiIdService).generate();\r\n\r\n public readonly listId = `${this.id}-list`;\r\n\r\n constructor() {\r\n this.renderer.setAttribute(this.element, 'id', this.listId);\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy } from '@angular/core';\r\nimport { Directive, ElementRef, inject, input, NgZone, output, Renderer2, signal } from '@angular/core';\r\nimport type { CuiNullable } from '../../types';\r\n\r\nimport type { CuiDragData, CuiDragDropData } from './drag-drop.options';\r\nimport { CuiDragListDirective } from './drag-list.directive';\r\n\r\n@Directive({\r\n selector: '[cuiDragDrop]',\r\n standalone: true\r\n})\r\nexport class CuiDragDropDirective implements OnDestroy {\r\n private readonly zone = inject(NgZone);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly renderer = inject(Renderer2);\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly dragListDirective = inject(CuiDragListDirective);\r\n\r\n private readonly PLACEHOLDER_CLASS = 'cui-drag-drop-placeholder';\r\n\r\n private readonly listId = this.dragListDirective.listId;\r\n private readonly itemAttribute = `${this.listId}-drag-item`;\r\n\r\n private index!: number;\r\n private prevIndex!: number;\r\n private abortController = new AbortController();\r\n private hostAbortController = new AbortController();\r\n\r\n protected readonly draggingElement = signal<CuiNullable<HTMLElement>>(null);\r\n protected readonly placeholderElement = signal<CuiNullable<HTMLElement>>(null);\r\n protected readonly dragData = signal<CuiDragData>({});\r\n\r\n public readonly disabled = input(false);\r\n\r\n public readonly elementDragged = output<CuiDragDropData>();\r\n\r\n constructor() {\r\n this.initDragItem();\r\n this.initPointerEvents(this.element);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyEvents();\r\n }\r\n\r\n public changePointerEvents(element: HTMLElement): void {\r\n this.hostAbortController.abort();\r\n this.hostAbortController = new AbortController();\r\n\r\n this.initPointerEvents(element);\r\n }\r\n\r\n private onDrag(clientX: number, clientY: number): void {\r\n if (!this.draggingElement()) {\r\n return;\r\n }\r\n\r\n const elementsFromPoint = this.document.elementsFromPoint(clientX, clientY);\r\n const elementFromPoint = elementsFromPoint.find((element) => element.closest(`#${this.listId}`));\r\n\r\n if (!elementFromPoint) {\r\n return;\r\n }\r\n\r\n const targetElement = elementFromPoint.closest<HTMLElement>(`[${this.itemAttribute}]`);\r\n\r\n if (!targetElement || targetElement === this.draggingElement()) {\r\n return;\r\n }\r\n\r\n this.configurateDragData(targetElement, clientY);\r\n }\r\n\r\n private onDragStart(event: MouseEvent): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n let isClicked = true;\r\n\r\n const elementClientRect = this.element.getBoundingClientRect();\r\n const shiftX = event.clientX - elementClientRect.left;\r\n const shiftY = event.clientY - elementClientRect.top;\r\n\r\n this.prevIndex = this.calculatePreviousIndex();\r\n\r\n this.document.addEventListener(\r\n 'pointermove',\r\n ({ clientX, clientY }) => {\r\n if (isClicked) {\r\n this.prepareMoving();\r\n\r\n isClicked = false;\r\n }\r\n\r\n const draggingElement = this.draggingElement();\r\n\r\n this.renderer.setStyle(draggingElement, 'left', clientX - shiftX + 'px');\r\n this.renderer.setStyle(draggingElement, 'top', clientY - shiftY + 'px');\r\n this.onDrag(clientX, clientY);\r\n },\r\n { signal: this.abortController.signal }\r\n );\r\n }\r\n\r\n private onDragEnd(): void {\r\n const { targetElement, pointer } = this.dragData();\r\n\r\n if (targetElement && pointer) {\r\n this.elementDragged.emit({\r\n index: this.index,\r\n prevIndex: this.prevIndex,\r\n targetElement,\r\n pointer\r\n });\r\n }\r\n\r\n // remove document events\r\n this.abortController.abort();\r\n this.abortController = new AbortController();\r\n\r\n this.removeDragElement();\r\n this.removePlaceholder();\r\n this.dragData.set({});\r\n }\r\n\r\n private initDragItem(): void {\r\n this.renderer.setAttribute(this.element, this.itemAttribute, 'true');\r\n }\r\n\r\n private initPointerEvents(element: HTMLElement): void {\r\n const signal = this.hostAbortController.signal;\r\n\r\n this.zone.runOutsideAngular(() => {\r\n element.addEventListener('pointerup', this.onDragEnd.bind(this), { signal });\r\n element.addEventListener('pointerdown', this.onDragStart.bind(this), { signal });\r\n });\r\n }\r\n\r\n private destroyEvents(): void {\r\n this.hostAbortController.abort();\r\n this.abortController.abort();\r\n }\r\n\r\n private prepareMoving(): void {\r\n const placeholderElement = this.createPlaceholderElement();\r\n const draggingElement = this.createDragElement();\r\n\r\n this.document.addEventListener('pointerup', this.onDragEnd.bind(this), {\r\n signal: this.abortController.signal\r\n });\r\n\r\n this.element.after(placeholderElement);\r\n this.draggingElement.set(draggingElement);\r\n\r\n this.element.remove();\r\n this.document.body.append(draggingElement);\r\n }\r\n\r\n private configurateDragData(targetElement: HTMLElement, clientY: number): void {\r\n const placeholderElement = this.placeholderElement();\r\n const boundingRect = targetElement.getBoundingClientRect();\r\n const middleY = boundingRect.top + boundingRect.height / 2;\r\n\r\n if (clientY < middleY) {\r\n targetElement.before(placeholderElement!);\r\n this.dragData.set({ targetElement, pointer: 'BEFORE' });\r\n } else {\r\n targetElement.after(placeholderElement!);\r\n this.dragData.set({ targetElement, pointer: 'AFTER' });\r\n }\r\n\r\n this.index = this.calculateIndex(placeholderElement!);\r\n }\r\n\r\n private createDragElement(): HTMLElement {\r\n const width = this.element.clientWidth;\r\n const draggingElement = this.element.cloneNode(true) as HTMLElement;\r\n\r\n this.renderer.setStyle(draggingElement, 'position', 'fixed');\r\n this.renderer.setStyle(draggingElement, 'display', 'block');\r\n this.renderer.setStyle(draggingElement, 'margin', '0');\r\n this.renderer.setStyle(draggingElement, 'width', `${width}px`);\r\n\r\n return draggingElement;\r\n }\r\n\r\n private createPlaceholderElement(): HTMLElement {\r\n const element = this.placeholderElement();\r\n\r\n if (element) {\r\n return element;\r\n }\r\n\r\n const placeholderElement = this.renderer.createElement('div');\r\n\r\n this.renderer.addClass(placeholderElement, this.PLACEHOLDER_CLASS);\r\n this.placeholderElement.set(placeholderElement);\r\n\r\n return placeholderElement;\r\n }\r\n\r\n private removeDragElement(): void {\r\n const draggingElement = this.draggingElement();\r\n\r\n if (!draggingElement) {\r\n return;\r\n }\r\n\r\n draggingElement.remove();\r\n this.draggingElement.set(null);\r\n }\r\n\r\n private removePlaceholder(): void {\r\n const placeholderElement = this.placeholderElement();\r\n\r\n if (!placeholderElement) {\r\n return;\r\n }\r\n\r\n placeholderElement.after(this.element);\r\n placeholderElement.remove();\r\n this.placeholderElement.set(null);\r\n }\r\n\r\n private calculateIndex(placeholderElement: HTMLElement): number {\r\n const childNodes = placeholderElement.parentElement!.childNodes;\r\n const elements = Array.from(childNodes).filter((node) => node instanceof HTMLElement);\r\n\r\n return elements.indexOf(placeholderElement!);\r\n }\r\n\r\n private calculatePreviousIndex(): number {\r\n let index = 0;\r\n let currentElement: Element = this.element;\r\n\r\n while (currentElement && currentElement.previousElementSibling) {\r\n index++;\r\n currentElement = currentElement.previousElementSibling;\r\n }\r\n\r\n return index;\r\n }\r\n}\r\n","import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\nimport { CuiDragDropDirective } from './drag-drop.directive';\r\n\r\n@Directive({\r\n selector: '[cuiDragPointer]',\r\n standalone: true\r\n})\r\nexport class CuiDragPointerDirective {\r\n private readonly dragDropDirective = inject(CuiDragDropDirective);\r\n private readonly element = inject(ElementRef).nativeElement;\r\n\r\n constructor() {\r\n this.dragDropDirective.changePointerEvents(this.element);\r\n }\r\n}\r\n","import type { AfterViewChecked, OnInit } from '@angular/core';\r\nimport { Directive, ElementRef, HostListener, inject } from '@angular/core';\r\nimport { NgControl, NgModel } from '@angular/forms';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_WINDOW } from '../tokens';\r\nimport { CuiDestroyService } from '../services';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: 'textarea[cuiAutoResizing]',\r\n providers: [CuiDestroyService]\r\n})\r\nexport class CuiAutoResizingDirective implements OnInit, AfterViewChecked {\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\r\n private readonly ngModel = inject(NgModel, { self: true, optional: true });\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n private readonly elementStyles = this.element.style;\r\n\r\n public ngOnInit(): void {\r\n this.initNgControlValueChangeSubscription();\r\n this.initNgModelValueChangeSubscription();\r\n }\r\n\r\n public ngAfterViewChecked(): void {\r\n this.resize();\r\n }\r\n\r\n @HostListener('input')\r\n protected onInput(): void {\r\n this.resize();\r\n }\r\n\r\n private initNgControlValueChangeSubscription(): void {\r\n if (!this.ngControl) {\r\n return;\r\n }\r\n\r\n this.ngControl.valueChanges!.pipe(takeUntil(this.destroy$)).subscribe(this.resize.bind(this));\r\n }\r\n\r\n private initNgModelValueChangeSubscription(): void {\r\n if (!this.ngModel) {\r\n return;\r\n }\r\n\r\n this.ngModel.valueChanges!.pipe(takeUntil(this.destroy$)).subscribe(this.resize.bind(this));\r\n }\r\n\r\n private resize(): void {\r\n const {\r\n maxHeight: computedMaxHeight,\r\n borderTopWidth,\r\n borderBottomWidth\r\n } = this.window.getComputedStyle(this.element);\r\n\r\n this.elementStyles.height = 'auto';\r\n this.elementStyles.height =\r\n this.element.scrollHeight + parseFloat(borderTopWidth) + parseFloat(borderBottomWidth) + 'px';\r\n\r\n if (parseFloat(this.element.style.height) < parseFloat(computedMaxHeight)) {\r\n this.elementStyles.overflow = 'hidden';\r\n\r\n return;\r\n }\r\n\r\n this.elementStyles.overflowY = 'scroll';\r\n this.elementStyles.height = computedMaxHeight;\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy } from '@angular/core';\r\nimport { Directive, inject, input, NgZone, Renderer2, signal } from '@angular/core';\r\nimport type { Subscription } from 'rxjs';\r\nimport { interval } from 'rxjs';\r\n\r\nimport type { CuiNullable } from '../types';\r\nimport { CUI_WINDOW } from '../tokens';\r\n\r\n@Directive({\r\n selector: '[cuiHandleScroll]',\r\n standalone: true,\r\n host: {\r\n '(pointerdown)': 'onTargetMove()'\r\n }\r\n})\r\nexport class CuiHandleScrollDirective implements OnDestroy {\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly renderer = inject(Renderer2);\r\n private readonly zone = inject(NgZone);\r\n\r\n private abortController = new AbortController();\r\n private scrollSubscription?: Subscription;\r\n\r\n protected readonly SCROLL_AREA_HEIGHT = 100;\r\n\r\n protected readonly scrollGapElements = signal<CuiNullable<HTMLDivElement[]>>(null);\r\n\r\n public readonly scrollSpeed = input(100);\r\n\r\n public ngOnDestroy(): void {\r\n this.removeSubscription();\r\n }\r\n\r\n public onTargetMove(): void {\r\n const signal = this.abortController.signal;\r\n\r\n this.zone.runOutsideAngular(this.initScrollEvent.bind(this, signal));\r\n }\r\n\r\n private initScrollEvent(signal: AbortSignal): void {\r\n this.document.addEventListener('pointermove', ({ clientY }) => this.handleScroll(clientY), { signal });\r\n this.document.addEventListener(\r\n 'pointerup',\r\n () => {\r\n this.scrollGapElements()?.forEach((element) => element.remove());\r\n this.scrollGapElements.set(null);\r\n\r\n this.removeSubscription();\r\n this.abortController.abort();\r\n this.abortController = new AbortController();\r\n },\r\n { signal }\r\n );\r\n }\r\n\r\n private handleScroll(clientY: number): void {\r\n const windowHeight = this.document.documentElement.clientHeight;\r\n const scrollSpeed = this.scrollSpeed();\r\n\r\n if (!this.scrollGapElements()) {\r\n this.setScrollGapElements();\r\n }\r\n\r\n if (clientY <= this.SCROLL_AREA_HEIGHT) {\r\n this.startScrolling(-scrollSpeed);\r\n\r\n return;\r\n }\r\n\r\n if (clientY >= windowHeight - this.SCROLL_AREA_HEIGHT) {\r\n this.startScrolling(scrollSpeed);\r\n\r\n return;\r\n }\r\n\r\n this.removeSubscription();\r\n }\r\n\r\n private setScrollGapElements(): void {\r\n const scrollGapElement = this.renderer.createElement('div');\r\n\r\n this.renderer.setStyle(scrollGapElement, 'position', 'fixed');\r\n this.renderer.setStyle(scrollGapElement, 'width', '100%');\r\n this.renderer.setStyle(scrollGapElement, 'height', '48px');\r\n this.renderer.setStyle(scrollGapElement, 'top', '0');\r\n\r\n const scrollGapBottomElement = scrollGapElement.cloneNode(true) as HTMLDivElement;\r\n\r\n this.renderer.appendChild(this.document.body, scrollGapElement);\r\n this.renderer.appendChild(this.document.body, scrollGapBottomElement);\r\n\r\n this.scrollGapElements.set([scrollGapElement, scrollGapBottomElement]);\r\n }\r\n\r\n private startScrolling(speed: number): void {\r\n this.removeSubscription();\r\n\r\n this.scrollSubscription = interval(this.scrollSpeed()).subscribe(() =>\r\n this.window.scrollBy({ top: speed, behavior: 'smooth' })\r\n );\r\n }\r\n\r\n private removeSubscription(): void {\r\n this.scrollSubscription?.unsubscribe();\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, inject, Output } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '(cuiClickOutside)'\r\n})\r\nexport class CuiClickOutsideDirective {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n\r\n @Output()\r\n public cuiClickOutside = new EventEmitter<HTMLElement>();\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n protected onClickOutside(target: HTMLElement): void {\r\n if (this.element.contains(target)) {\r\n return;\r\n }\r\n\r\n this.cuiClickOutside.emit(target);\r\n }\r\n}\r\n","import type { OnInit, OnDestroy } from '@angular/core';\r\nimport { Directive, ElementRef, EventEmitter, inject, Output } from '@angular/core';\r\n\r\nimport type { CuiDimensions } from '../interfaces';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiResizeObserver]'\r\n})\r\nexport class CuiDimensionsObserverDirective implements OnInit, OnDestroy {\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n\r\n private readonly observer = new ResizeObserver((entries) => {\r\n entries.forEach(() =>\r\n this.cuiResizeObserver.emit({\r\n width: this.element.offsetWidth,\r\n height: this.element.offsetHeight\r\n })\r\n );\r\n });\r\n\r\n @Output()\r\n public cuiResizeObserver = new EventEmitter<CuiDimensions>();\r\n\r\n public ngOnInit(): void {\r\n this.observer.observe(this.element);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.observer.disconnect();\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport type { CuiNullable } from '../types';\r\nimport type { CuiOnChange, CuiOnTouched } from '../interfaces';\r\nimport { cuiProvide } from '../utils/token';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[contenteditable][formControlName], [contenteditable][formControl], [contenteditable][ngModel]',\r\n providers: [cuiProvide(NG_VALUE_ACCESSOR, CuiContentEditableValueAccessorDirective, true)]\r\n})\r\nexport class CuiContentEditableValueAccessorDirective implements ControlValueAccessor {\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n\r\n protected onChange!: CuiOnChange<string>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n public writeValue(value: CuiNullable<string>): void {\r\n this.element.innerText = value ?? '';\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<string>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.element.contentEditable = String(!isDisabled);\r\n }\r\n\r\n @HostListener('input')\r\n protected onInput(): void {\r\n this.onChange(this.element.innerHTML === '<br>' ? '' : this.element.innerText);\r\n }\r\n\r\n @HostListener('blur')\r\n protected onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiElement]',\r\n exportAs: 'elementRef'\r\n})\r\nexport class CuiElementDirective<T extends Element = HTMLElement> implements ElementRef<T> {\r\n public nativeElement = inject(ElementRef<T>).nativeElement;\r\n\r\n constructor() {\r\n return new ElementRef<T>(this.nativeElement);\r\n }\r\n}\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { Directive, ElementRef, HostBinding, HostListener, inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport {\r\n cuiBlurNativeFocused,\r\n cuiContainsOrAfter,\r\n cuiGetClosestFocusable,\r\n cuiGetNativeFocused,\r\n cuiIsHTMLElement\r\n} from '../utils';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiFocusTrap]'\r\n})\r\nexport class CuiFocusTrapDirective implements OnDestroy {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly activeElement = cuiGetNativeFocused(this.document);\r\n\r\n constructor() {\r\n this.initElementFocus();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n cuiBlurNativeFocused(this.document);\r\n\r\n Promise.resolve().then(() => {\r\n if (!cuiIsHTMLElement(this.activeElement)) {\r\n return;\r\n }\r\n\r\n this.activeElement.focus();\r\n });\r\n }\r\n\r\n @HostBinding('tabIndex')\r\n protected readonly tabIndex = 0;\r\n\r\n @HostListener('window:focusin', ['$event.target'])\r\n protected onFocusIn(node: Node): void {\r\n if (cuiContainsOrAfter(this.element, node)) {\r\n return;\r\n }\r\n\r\n cuiGetClosestFocusable({\r\n initial: this.element,\r\n root: this.element\r\n })?.focus();\r\n }\r\n\r\n private initElementFocus(): void {\r\n Promise.resolve().then(() => this.element.focus());\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiItem]'\r\n})\r\nexport class CuiItemDirective {}\r\n","export interface CuiLetDirectiveImpl<T> {\r\n readonly cuiLet: T;\r\n}\r\n\r\nexport class CuiLetContext<T> {\r\n constructor(private readonly internalDirectiveInstance: CuiLetDirectiveImpl<T>) {}\r\n\r\n public get $implicit(): T {\r\n return this.internalDirectiveInstance.cuiLet;\r\n }\r\n\r\n public get cuiLet(): T {\r\n return this.internalDirectiveInstance.cuiLet;\r\n }\r\n}\r\n","import { Directive, inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\nimport { CuiLetContext, CuiLetDirectiveImpl } from './let.context';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiLet]'\r\n})\r\nexport class CuiLetDirective<T> {\r\n @Input()\r\n public cuiLet!: T;\r\n\r\n constructor() {\r\n inject(ViewContainerRef).createEmbeddedView(inject(TemplateRef<CuiLetContext<T>>), new CuiLetContext<T>(this));\r\n }\r\n\r\n public static ngTemplateContextGuard<T>(_dir: CuiLetDirectiveImpl<T>, _ctx: unknown): _ctx is CuiLetContext<T> {\r\n return true;\r\n }\r\n}\r\n","import type { OnInit, OnDestroy } from '@angular/core';\r\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[ccTarget]'\r\n})\r\nexport class CuiTargetDirective implements OnInit, OnDestroy {\r\n private readonly clickListener = (event: MouseEvent): void => {\r\n this.clicked.emit(event);\r\n };\r\n\r\n @Input()\r\n public ccTarget!: HTMLElement;\r\n\r\n @Output()\r\n public clicked = new EventEmitter<MouseEvent>();\r\n\r\n public ngOnInit(): void {\r\n this.initClickListener();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyClickListener();\r\n }\r\n\r\n private initClickListener(): void {\r\n this.ccTarget.addEventListener('click', this.clickListener);\r\n }\r\n\r\n private destroyClickListener(): void {\r\n this.ccTarget.removeEventListener('click', this.clickListener);\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, inject, input, NgZone } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cuiLadderList]',\r\n standalone: true\r\n})\r\nexport class CuiLadderListDirective {\r\n private readonly zone = inject(NgZone);\r\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\r\n\r\n private readonly LIST_ITEM_MARGIN_LEFT = 16;\r\n\r\n public readonly disabled = input(false);\r\n\r\n constructor() {\r\n effect(() => this.initElementsEffect());\r\n }\r\n\r\n private initElementsEffect(): void {\r\n this.zone.runOutsideAngular(this.initObserver.bind(this));\r\n }\r\n\r\n private initObserver(): void {\r\n const observer = new MutationObserver(this.calculateListItemsMargin.bind(this));\r\n\r\n this.calculateListItemsMargin();\r\n\r\n observer.observe(this.element, { childList: true });\r\n }\r\n\r\n private calculateListItemsMargin(): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n let index = 0;\r\n\r\n this.element.childNodes.forEach((node) => {\r\n if (!(node instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n node.style.marginLeft = index * this.LIST_ITEM_MARGIN_LEFT + 'px';\r\n index += 1;\r\n });\r\n }\r\n}\r\n","import type { ElementRef, EmbeddedViewRef } from '@angular/core';\r\nimport { Directive, inject, input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[cuiTypedTemplate]',\r\n standalone: true,\r\n exportAs: 'cuiTypedTemplate'\r\n})\r\nexport class CuiTypedTemplateDirective<T> extends TemplateRef<T> {\r\n public readonly templateRef = inject<TemplateRef<T>>(TemplateRef);\r\n\r\n public override elementRef: ElementRef<unknown> = this.templateRef.elementRef;\r\n\r\n public readonly type = input.required<T>({ alias: 'cuiTypedTemplate' });\r\n\r\n constructor() {\r\n super();\r\n }\r\n public override createEmbeddedView(context: T): EmbeddedViewRef<T> {\r\n return this.templateRef.createEmbeddedView(context);\r\n }\r\n\r\n public static ngTemplateContextGuard<T>(_: CuiTypedTemplateDirective<T>, ctx: unknown): ctx is T {\r\n return true;\r\n }\r\n}\r\n","import type { PipeTransform } from '@angular/core';\r\nimport { Pipe } from '@angular/core';\r\n\r\nimport { CuiMatcher } from '../types';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'cuiFilter'\r\n})\r\nexport class CuiFilterPipe implements PipeTransform {\r\n transform<T, U extends unknown[]>(items: ReadonlyArray<T>, matcher: CuiMatcher<[T, ...U]>, ...args: U): T[] {\r\n return items.filter((item) => matcher(item, ...args));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["AnimationEngine"],"mappings":"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"}
|