@ethlete/core 4.23.7 → 4.23.8
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/CHANGELOG.md +6 -0
- package/esm2022/lib/components/structured-data/structured-data.component.mjs +4 -4
- package/esm2022/lib/directives/animatable/animatable.directive.mjs +4 -4
- package/esm2022/lib/directives/animated-if/animated-if.directive.mjs +4 -4
- package/esm2022/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +4 -4
- package/esm2022/lib/directives/animated-overlay/animated-overlay.directive.mjs +4 -4
- package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +4 -4
- package/esm2022/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +4 -4
- package/esm2022/lib/directives/debug/debug.directive.mjs +4 -4
- package/esm2022/lib/directives/delayable/delayable.directive.mjs +4 -4
- package/esm2022/lib/directives/is-active-element/is-active-element.directive.mjs +4 -4
- package/esm2022/lib/directives/is-element/is-element.directive.mjs +4 -4
- package/esm2022/lib/directives/let/let.directive.mjs +4 -4
- package/esm2022/lib/directives/observe-content/observe-content.directive.mjs +4 -4
- package/esm2022/lib/directives/observe-resize/observe-resize.directive.mjs +4 -4
- package/esm2022/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +4 -4
- package/esm2022/lib/directives/observe-visibility/observe-visibility.directive.mjs +4 -4
- package/esm2022/lib/directives/repeat/repeat.directive.mjs +4 -4
- package/esm2022/lib/directives/root-boundary/root-boundary.directive.mjs +4 -4
- package/esm2022/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +4 -4
- package/esm2022/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +4 -4
- package/esm2022/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +4 -4
- package/esm2022/lib/directives/seo/seo.directive.mjs +4 -4
- package/esm2022/lib/pipes/infer-mime-type/infer-mime-type.pipe.mjs +4 -4
- package/esm2022/lib/pipes/infer-mime-type/infer-mime-type.util.mjs +10 -3
- package/esm2022/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +4 -4
- package/esm2022/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +4 -4
- package/esm2022/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +4 -4
- package/esm2022/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +4 -4
- package/esm2022/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +4 -4
- package/esm2022/lib/pipes/to-array/to-array.pipe.mjs +4 -4
- package/esm2022/lib/props/props.directive.mjs +4 -4
- package/esm2022/lib/services/click-observer.service.mjs +7 -7
- package/esm2022/lib/services/content-observer.service.mjs +7 -7
- package/esm2022/lib/services/focus-visible.service.mjs +4 -4
- package/esm2022/lib/services/intersection-observer.service.mjs +7 -7
- package/esm2022/lib/services/resize-observer.service.mjs +7 -7
- package/esm2022/lib/services/router-state.service.mjs +4 -4
- package/esm2022/lib/services/viewport.service.mjs +4 -4
- package/esm2022/lib/utils/cookie.util.mjs +2 -4
- package/fesm2022/ethlete-core.mjs +133 -128
- package/fesm2022/ethlete-core.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethlete-core.mjs","sources":["../../../../libs/core/src/lib/components/structured-data/structured-data.component.ts","../../../../libs/core/src/lib/constants/viewport.constants.ts","../../../../libs/core/src/lib/decorators/memo/memo.decorator.ts","../../../../libs/core/src/lib/utils/destroy.utils.ts","../../../../libs/core/src/lib/utils/active-selection-model.utils.ts","../../../../libs/core/src/lib/utils/angular.utils.ts","../../../../libs/core/src/lib/utils/animation.utils.ts","../../../../libs/core/src/lib/utils/clamp.util.ts","../../../../libs/core/src/lib/utils/clone.util.ts","../../../../libs/core/src/lib/utils/component-id.utils.ts","../../../../libs/core/src/lib/utils/cookie.util.ts","../../../../libs/core/src/lib/utils/equal.util.ts","../../../../libs/core/src/lib/utils/form.utils.ts","../../../../libs/core/src/lib/utils/inject.utils.ts","../../../../libs/core/src/lib/utils/intersection-observer.utils.ts","../../../../libs/core/src/lib/utils/key-press-manager.utils.ts","../../../../libs/core/src/lib/utils/media-query-observable.util.ts","../../../../libs/core/src/lib/utils/mutation-observable.util.ts","../../../../libs/core/src/lib/utils/object.utils.ts","../../../../libs/core/src/lib/utils/reactive-binding.util.ts","../../../../libs/core/src/lib/utils/resize-observable.util.ts","../../../../libs/core/src/lib/utils/round.utils.ts","../../../../libs/core/src/lib/utils/runtime-error.utils.ts","../../../../libs/core/src/lib/utils/scrollable.utils.ts","../../../../libs/core/src/lib/utils/selection-model.utils.ts","../../../../libs/core/src/lib/services/click-observer.service.ts","../../../../libs/core/src/lib/services/content-observer.service.ts","../../../../libs/core/src/lib/services/focus-visible.service.ts","../../../../libs/core/src/lib/services/intersection-observer.service.ts","../../../../libs/core/src/lib/services/resize-observer.service.ts","../../../../libs/core/src/lib/services/router-state.service.ts","../../../../libs/core/src/lib/services/viewport.service.ts","../../../../libs/core/src/lib/utils/signal.utils.ts","../../../../libs/core/src/lib/utils/smart-block-scroll-strategy.utils.ts","../../../../libs/core/src/lib/utils/value.utils.ts","../../../../libs/core/src/lib/utils/viewport.util.ts","../../../../libs/core/src/lib/directives/animatable/animatable.directive.ts","../../../../libs/core/src/lib/directives/animated-lifecycle/animated-lifecycle.directive.ts","../../../../libs/core/src/lib/directives/animated-if/animated-if.directive.ts","../../../../libs/core/src/lib/directives/root-boundary/root-boundary.directive.ts","../../../../libs/core/src/lib/directives/animated-overlay/animated-overlay.directive.ts","../../../../libs/core/src/lib/directives/click-outside/click-outside.directive.ts","../../../../libs/core/src/lib/directives/cursor-drag-scroll/cursor-drag-scroll.constants.ts","../../../../libs/core/src/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.ts","../../../../libs/core/src/lib/directives/debug/debug.directive.ts","../../../../libs/core/src/lib/directives/delayable/delayable.directive.ts","../../../../libs/core/src/lib/directives/is-active-element/is-active-element.directive.ts","../../../../libs/core/src/lib/directives/is-element/is-element.directive.ts","../../../../libs/core/src/lib/directives/let/let.types.ts","../../../../libs/core/src/lib/directives/let/let.directive.ts","../../../../libs/core/src/lib/directives/observe-content/observe-content.directive.ts","../../../../libs/core/src/lib/directives/observe-resize/observe-resize.directive.ts","../../../../libs/core/src/lib/directives/observe-scroll-state/observe-scroll-state.constants.ts","../../../../libs/core/src/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.ts","../../../../libs/core/src/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.ts","../../../../libs/core/src/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.ts","../../../../libs/core/src/lib/directives/observe-scroll-state/observe-scroll-state.directive.ts","../../../../libs/core/src/lib/directives/observe-visibility/observe-visibility.directive.ts","../../../../libs/core/src/lib/directives/repeat/repeat.directive.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.constants.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.utils.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.ts","../../../../libs/core/src/lib/pipes/infer-mime-type/infer-mime-type.util.ts","../../../../libs/core/src/lib/pipes/infer-mime-type/infer-mime-type.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-game-result-type/normalize-game-result-type.util.ts","../../../../libs/core/src/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-state/normalize-match-state.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-state/normalize-match-state.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-participants/normalize-match-participants.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-score/normalize-match-score.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-score/normalize-match-score.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-type/normalize-match-type.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-type/normalize-match-type.pipe.ts","../../../../libs/core/src/lib/pipes/to-array/to-array.util.ts","../../../../libs/core/src/lib/pipes/to-array/to-array.pipe.ts","../../../../libs/core/src/lib/props/create-prop-handlers.ts","../../../../libs/core/src/lib/props/element-dictionary.ts","../../../../libs/core/src/lib/props/props-binding.ts","../../../../libs/core/src/lib/props/create-props.ts","../../../../libs/core/src/lib/props/create-setup.ts","../../../../libs/core/src/lib/props/dependency-stash.ts","../../../../libs/core/src/lib/props/props.directive.ts","../../../../libs/core/src/lib/props/template-input.ts","../../../../libs/core/src/lib/types/angular.types.ts","../../../../libs/core/src/lib/validators/at-least-one-required.validator.ts","../../../../libs/core/src/lib/validators/is-array-not-empty.validator.ts","../../../../libs/core/src/lib/validators/is-email.validator.ts","../../../../libs/core/src/lib/validators/must-match.validator.ts","../../../../libs/core/src/lib/validators/index.ts","../../../../libs/core/src/index.ts","../../../../libs/core/src/ethlete-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { JsonLD } from '@ethlete/types';\n\n@Component({\n selector: 'et-structured-data',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: none',\n },\n})\nexport class StructuredDataComponent {\n private readonly _sanitizer = inject(DomSanitizer);\n\n @Input()\n set data(currentValue: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined) {\n this.jsonLD = this.getSafeHTML(currentValue);\n }\n\n @HostBinding('innerHTML')\n jsonLD?: SafeHtml;\n\n getSafeHTML(value: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined) {\n const json = value ? JSON.stringify(value, null, 2).replace(/<\\/script>/g, '<\\\\/script>') : '';\n const html = `<script type=\"application/ld+json\">${json}</script>`;\n return this._sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ViewportConfig } from '../types';\n\nexport const VIEWPORT_CONFIG = new InjectionToken<ViewportConfig>('ViewportConfig');\n\n/**\n * Default viewport config based on Tailwind CSS.\n * @see https://tailwindcss.com/docs/screens\n */\nexport const DEFAULT_VIEWPORT_CONFIG: ViewportConfig = {\n breakpoints: {\n xs: [0, 639],\n sm: [640, 767],\n md: [768, 1023],\n lg: [1024, 1279],\n xl: [1280, 1535],\n '2xl': [1536, Infinity],\n },\n};\n","export interface MemoResolver {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (...args: any[]): any;\n}\n\nexport interface MapLike<K = unknown, V = unknown> {\n set(key: K, v: V): MapLike<K, V>;\n get(key: K): V;\n has(key: K): boolean;\n}\n\nexport interface MemoConfig {\n resolver?: MemoResolver;\n cache?: MapLike;\n}\n\nfunction memoize(func: (..._args: unknown[]) => unknown, resolver: MemoResolver, cache: MapLike) {\n const memoized = function (this: unknown, ...args: unknown[]) {\n const key = resolver.apply(this, args);\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n const result = func.apply(this, args);\n memoized.cache = cache.set(key, result) ?? cache;\n return result;\n };\n\n memoized.cache = cache;\n\n return memoized;\n}\n\nconst defaultResolver: MemoResolver = (...args: unknown[]) => args.join('-');\n\nexport const Memo =\n (config: MemoConfig = {}) =>\n (_: unknown, __: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\n if (typeof descriptor.value !== 'function') {\n throw new Error('Memoization can be applied only to methods');\n }\n\n const resolver = config.resolver ?? defaultResolver;\n const cache = config.cache ?? new Map();\n\n descriptor.value = memoize(descriptor.value, resolver, cache);\n return descriptor;\n };\n","import { DestroyRef, assertInInjectionContext, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport const createDestroy = () => {\n assertInInjectionContext(createDestroy);\n\n const destroy$ = new Subject<boolean>();\n\n const ref = inject(DestroyRef);\n\n ref.onDestroy(() => {\n destroy$.next(true);\n destroy$.complete();\n });\n\n return destroy$.asObservable();\n};\n","import { DOWN_ARROW, END, HOME, PAGE_DOWN, PAGE_UP, UP_ARROW } from '@angular/cdk/keycodes';\nimport { BehaviorSubject, map, of, switchMap, takeUntil, tap } from 'rxjs';\nimport { createDestroy } from './destroy.utils';\nimport { SelectionModel } from './selection-model.utils';\n\nexport class ActiveSelectionModel<T = unknown> {\n private readonly _destroy$ = createDestroy();\n\n get selectionModel$() {\n return this._selectionModel$.asObservable();\n }\n get selectionModel() {\n return this._selectionModel$.value;\n }\n private readonly _selectionModel$ = new BehaviorSubject<SelectionModel<T> | null>(null);\n\n get activeOption$() {\n return this._activeOption$.asObservable();\n }\n get activeOption() {\n return this._activeOption$.value;\n }\n private readonly _activeOption$ = new BehaviorSubject<T | null>(null);\n\n constructor() {\n this._selectionModel$\n .pipe(\n takeUntil(this._destroy$),\n switchMap((model) => model?.filteredOptions$ ?? of([])),\n tap(() => this._resetActiveOptions()),\n )\n .subscribe();\n }\n\n setSelectionModel(selectionModel: SelectionModel<T> | null) {\n this._selectionModel$.next(selectionModel);\n\n return this;\n }\n\n setActiveOption(option: T | null) {\n this._activeOption$.next(option);\n\n return this;\n }\n\n isOptionActive$(option: T) {\n return this.activeOption$.pipe(map((activeOption) => activeOption === option));\n }\n\n evaluateKeyboardEvent(event: KeyboardEvent, config?: { skipDisabled?: boolean }) {\n const { skipDisabled = false } = config ?? {};\n\n const keyCode = event.keyCode;\n const activeOption = this.activeOption;\n\n if (!this.selectionModel || !activeOption) return null;\n\n const currentIndex = this.selectionModel?.getOptionIndex(activeOption);\n\n if (currentIndex === null) return null;\n\n let newActiveOption: T | null | undefined = undefined;\n\n switch (keyCode) {\n case DOWN_ARROW:\n {\n newActiveOption = this.selectionModel?.getOptionByOffset(1, currentIndex, { skipDisabled });\n }\n break;\n case UP_ARROW:\n {\n newActiveOption = this.selectionModel?.getOptionByOffset(-1, currentIndex, { skipDisabled });\n }\n break;\n case PAGE_UP:\n {\n newActiveOption = this.selectionModel?.getOptionByOffset(-10, currentIndex, { skipDisabled, clamp: true });\n }\n break;\n case PAGE_DOWN:\n {\n newActiveOption = this.selectionModel?.getOptionByOffset(10, currentIndex, { skipDisabled, clamp: true });\n }\n break;\n case HOME:\n {\n newActiveOption = this.selectionModel?.getFirstOption();\n }\n break;\n case END:\n {\n newActiveOption = this.selectionModel?.getLastOption();\n }\n break;\n }\n\n if (newActiveOption !== undefined) {\n event.preventDefault();\n }\n\n if (newActiveOption !== activeOption && newActiveOption) {\n this._activeOption$.next(newActiveOption);\n }\n\n return newActiveOption ?? null;\n }\n\n private _resetActiveOptions() {\n const firstOption = this.selectionModel?.getFirstOption();\n\n this._activeOption$.next(firstOption ?? null);\n }\n}\n","import { Observable, of, startWith, switchMap } from 'rxjs';\nimport { TypedQueryList } from '../types';\n\nexport function switchQueryListChanges() {\n return function <T extends TypedQueryList<unknown> | null | undefined>(source: Observable<T>) {\n return source.pipe(switchMap((value) => value?.changes.pipe(startWith(value)) ?? of(null))) as Observable<T>;\n };\n}\n","import { combineLatest, Observable, Subject } from 'rxjs';\n\nexport const nextFrame = (cb: () => void) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n};\n\nexport const fromNextFrame = () => {\n return new Observable<void>((observer) => {\n nextFrame(() => {\n observer.next();\n observer.complete();\n });\n });\n};\n\nexport const forceReflow = (element: HTMLElement = document.body) => {\n return element.offsetHeight;\n};\n\ninterface FlipAnimationGroupConfig {\n /**\n * The elements to animate\n */\n elements: Array<HTMLElement | { element: HTMLElement; originElement?: HTMLElement }>;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n}\n\nexport const createFlipAnimationGroup = (config: FlipAnimationGroupConfig) => {\n const { elements, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n const flips = elements.map((el) => {\n const element = 'element' in el ? el.element : el;\n const originElement = 'originElement' in el ? el.originElement : undefined;\n\n return createFlipAnimation({ element, originElement, duration, easing });\n });\n\n const onStart$ = combineLatest(flips.map((animation) => animation.onStart$));\n const onFinish$ = combineLatest(flips.map((animation) => animation.onFinish$));\n const onCancel$ = combineLatest(flips.map((animation) => animation.onCancel$));\n\n const updateInit = () => {\n flips.forEach((animation) => animation.updateInit());\n };\n\n const play = () => {\n flips.forEach((animation) => animation.play());\n };\n\n const cancel = () => {\n flips.forEach((animation) => animation.cancel());\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$,\n onFinish$,\n onCancel$,\n };\n};\n\nexport interface FlipAnimationConfig {\n /**\n * The element to animate\n */\n element: HTMLElement;\n\n /**\n * The element to use as the origin for the animation\n * @default element\n */\n originElement?: HTMLElement;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n}\n\nexport const createFlipAnimation = (config: FlipAnimationConfig) => {\n const { element: el, originElement = el, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n let initialRect = originElement.getBoundingClientRect();\n let animation: Animation | null = null;\n\n const onStart$ = new Subject<void>();\n const onFinish$ = new Subject<void>();\n const onCancel$ = new Subject<void>();\n\n const onAnimationFinish = () => {\n cleanup();\n onFinish$.next();\n };\n\n const onAnimationCancel = () => {\n cleanup();\n onCancel$.next();\n };\n\n const cleanup = () => {\n if (!animation) {\n return;\n }\n\n animation.removeEventListener('finish', onAnimationFinish);\n animation.removeEventListener('cancel', onAnimationCancel);\n };\n\n const updateInit = () => {\n initialRect = originElement.getBoundingClientRect();\n };\n\n const play = () => {\n const lastRect = el.getBoundingClientRect();\n\n const delta = {\n x: initialRect.left - lastRect.left,\n y: initialRect.top - lastRect.top,\n scaleX: initialRect.width / lastRect.width,\n scaleY: initialRect.height / lastRect.height,\n };\n\n animation = el.animate(\n [\n {\n transformOrigin: 'top left',\n transform: `\n translate(${delta.x}px, ${delta.y}px)\n scale(${delta.scaleX}, ${delta.scaleY})\n `,\n },\n {\n transformOrigin: 'top left',\n transform: 'none',\n },\n ],\n {\n duration,\n easing,\n fill: 'both',\n },\n );\n\n animation.addEventListener('finish', onAnimationFinish);\n animation.addEventListener('cancel', onAnimationCancel);\n\n onStart$.next();\n };\n\n const cancel = () => {\n animation?.cancel();\n\n cleanup();\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$: onStart$.asObservable(),\n onFinish$: onFinish$.asObservable(),\n onCancel$: onCancel$.asObservable(),\n };\n};\n","export const clamp = (value: number, min = 0, max = 100) => {\n return Math.max(min, Math.min(max, value));\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-var */\n/**\n * Stolen from klona to avoid adding a dependency\n * https://github.com/lukeed/klona\n *\n * MIT License\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst set = (obj: any, key: any, val: any) => {\n if (typeof val.value === 'object') val.value = clone(val.value);\n if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n Object.defineProperty(obj, key, val);\n } else obj[key] = val.value;\n};\n\nexport const clone = <T>(original: T): T => {\n if (typeof original !== 'object') return original;\n\n var _og = original as any;\n\n var i = 0,\n k,\n list,\n tmp: any,\n str = Object.prototype.toString.call(_og);\n\n if (str === '[object Object]') {\n tmp = Object.create(_og.__proto__ || null);\n } else if (str === '[object Array]') {\n tmp = Array(_og.length);\n } else if (str === '[object Set]') {\n tmp = new Set();\n _og.forEach(function (val: any) {\n tmp.add(clone(val));\n });\n } else if (str === '[object Map]') {\n tmp = new Map();\n _og.forEach(function (val: any, key: any) {\n tmp.set(clone(key), clone(val));\n });\n } else if (str === '[object Date]') {\n tmp = new Date(+_og);\n } else if (str === '[object RegExp]') {\n tmp = new RegExp(_og.source, _og.flags);\n } else if (str === '[object DataView]') {\n tmp = new _og.constructor(clone(_og.buffer));\n } else if (str === '[object ArrayBuffer]') {\n tmp = _og.slice(0);\n } else if (str.slice(-6) === 'Array]') {\n // ArrayBuffer.isView(x)\n // ~> `new` bcuz `Buffer.slice` => ref\n tmp = new _og.constructor(_og);\n }\n\n if (tmp) {\n for (list = Object.getOwnPropertySymbols(_og); i < list.length; i++) {\n set(tmp, list[i], Object.getOwnPropertyDescriptor(_og, list[i]!));\n }\n\n for (i = 0, list = Object.getOwnPropertyNames(_og); i < list.length; i++) {\n if (Object.hasOwnProperty.call(tmp, (k = list[i]!)) && tmp[k] === _og[k]) continue;\n set(tmp, k, Object.getOwnPropertyDescriptor(_og, k));\n }\n }\n\n return tmp || _og;\n};\n","const componentIds = new Map<string, number>();\n\nexport const createComponentId = (prefix: string) => {\n const id = componentIds.get(prefix) ?? 0;\n componentIds.set(prefix, id + 1);\n\n return `${prefix}-${id}`;\n};\n","export const hasCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return false;\n }\n\n return document.cookie.split(';').some((c) => {\n return c.trim().startsWith(name + '=');\n });\n};\n\nexport const getCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return null;\n }\n\n // From https://stackoverflow.com/questions/10730362/get-cookie-by-name\n return ('; ' + document.cookie).split(`; ${name}=`).pop()?.split(';')[0];\n};\n\nexport const setCookie = (\n name: string,\n data: string,\n expiresInDays = 30,\n domain = getDomain(),\n path = '/',\n sameSite: 'strict' | 'none' | 'lax' = 'lax',\n) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const sameSiteUpper = sameSite.toUpperCase();\n const date = new Date();\n date.setTime(date.getTime() + expiresInDays * 24 * 60 * 60 * 1000);\n\n document.cookie = `${name}=${data}; path=${path}; expires=${date.toUTCString()}; domain=${domain}; SameSite=${sameSiteUpper};`;\n};\n\nexport const deleteCookie = (name: string, path = '/', domain = getDomain()) => {\n if (hasCookie(name)) {\n document.cookie =\n name +\n '=' +\n (path ? ';path=' + path : '') +\n (domain ? ';domain=' + domain : '') +\n ';expires=Thu, 01 Jan 1970 00:00:01 GMT';\n }\n};\n\nexport const getDomain = () => {\n if (typeof navigator === 'undefined') {\n return null;\n }\n\n const hostname = window.location.hostname;\n\n if (hostname.includes('localhost')) {\n return 'localhost';\n }\n\n const hostIsIP = hostname.match(\n // eslint-disable-next-line no-useless-escape\n /^(\\d{1,3}\\.){3}\\d{1,3}$/,\n );\n\n if (hostIsIP) {\n return hostname;\n }\n\n const splitHost = hostname.split('.');\n\n if (splitHost.length > 2) {\n return `${splitHost[splitHost.length - 2]}.${splitHost[splitHost.length - 1]}`;\n }\n\n return hostname;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-var */\n/**\n * Stolen from dequal to avoid adding a dependency\n * https://github.com/lukeed/dequal\n *\n * The MIT License (MIT)\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst has = Object.prototype.hasOwnProperty;\n\nfunction find(iter: any, tar: any, key?: any) {\n for (key of iter.keys()) {\n if (equal(key, tar)) return key;\n }\n}\n\nexport const equal = (foo: any, bar: any) => {\n var ctor: any, len: any, tmp: any;\n if (foo === bar) return true;\n\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return foo.getTime() === bar.getTime();\n if (ctor === RegExp) return foo.toString() === bar.toString();\n\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && equal(foo[len], bar[len]));\n }\n return len === -1;\n }\n\n if (ctor === Set) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len;\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!bar.has(tmp)) return false;\n }\n return true;\n }\n\n if (ctor === Map) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len[0];\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!equal(len[1], bar.get(tmp))) {\n return false;\n }\n }\n return true;\n }\n\n if (ctor === ArrayBuffer) {\n foo = new Uint8Array(foo);\n bar = new Uint8Array(bar);\n } else if (ctor === DataView) {\n if ((len = foo.byteLength) === bar.byteLength) {\n while (len-- && foo.getInt8(len) === bar.getInt8(len));\n }\n return len === -1;\n }\n\n if (ArrayBuffer.isView(foo)) {\n if ((len = foo.byteLength) === bar.byteLength) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n while (len-- && foo[len] === bar[len]);\n }\n return len === -1;\n }\n\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !equal(foo[ctor], bar[ctor])) return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n\n return foo !== foo && bar !== bar;\n};\n","import { FormArray, FormControl, FormGroup } from '@angular/forms';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const cloneFormGroup = <T extends FormGroup<any>>(formGroup: T) => {\n const cloneLevel = (group: FormGroup, cloneGroup: FormGroup) => {\n Object.keys(group.controls).forEach((key) => {\n const control = group.controls[key]!;\n\n if (control instanceof FormGroup) {\n const cloneControl = new FormGroup({}, control.validator, control.asyncValidator);\n\n cloneGroup.addControl(key, cloneControl);\n\n cloneLevel(control, cloneControl);\n } else if (control instanceof FormArray) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cloneArrayControl = new FormArray<any>([], control.validator, control.asyncValidator);\n\n control.controls.forEach((control) => {\n if (control instanceof FormGroup) {\n const cloneControl = new FormGroup({}, control.validator, control.asyncValidator);\n const innerClone = cloneLevel(control, cloneControl);\n cloneArrayControl.push(innerClone);\n } else {\n const cloneControlItem = new FormControl(\n { value: control.value, disabled: control.disabled },\n control.validator,\n control.asyncValidator,\n );\n cloneArrayControl.push(cloneControlItem);\n }\n });\n\n cloneGroup.addControl(key, cloneArrayControl);\n } else {\n const cloneControl = new FormControl(\n { value: control.value, disabled: control.disabled },\n control.validator,\n control.asyncValidator,\n );\n\n cloneGroup.addControl(key, cloneControl);\n }\n });\n\n return cloneGroup;\n };\n\n const clonedForm = cloneLevel(formGroup, new FormGroup({}));\n clonedForm.setValue(formGroup.value);\n clonedForm.updateValueAndValidity();\n\n return clonedForm as T;\n};\n\nexport const getFormGroupValue = <T extends FormGroup>(formGroup: T) => {\n const value: Record<string, unknown> = {};\n\n Object.keys(formGroup.controls).forEach((key) => {\n const control = formGroup.controls[key]!;\n\n if (control instanceof FormGroup) {\n value[key] = getFormGroupValue(control);\n } else if (control instanceof FormArray) {\n value[key] = control.controls.map((control) => {\n if (control instanceof FormGroup) {\n return getFormGroupValue(control);\n } else {\n return control.value ?? null;\n }\n });\n } else {\n value[key] = control.value ?? null;\n }\n });\n\n return value;\n};\n","import { ElementRef, TemplateRef, inject } from '@angular/core';\n\nexport const injectHostElement = <T = HTMLElement>() => inject<ElementRef<T>>(ElementRef).nativeElement;\n\nexport const injectTemplateRef = <C = unknown>() => inject<TemplateRef<C>>(TemplateRef);\n","// TODO: This needs to be redone, it's a mess...\nexport const getIntersectionInfo = (intersections: IntersectionObserverEntry[]) => {\n const reverseIntersections = [...intersections].reverse();\n const firstIntersecting = intersections.find((i) => i.intersectionRatio > 0);\n const lastIntersecting = reverseIntersections.find((i) => i.intersectionRatio > 0);\n\n const firstIntersectingIndex = intersections.findIndex((i) => i === firstIntersecting);\n const lastIntersectingIndex = intersections.findIndex((i) => i === lastIntersecting);\n\n if (!firstIntersecting || !lastIntersecting) return null;\n\n const greaterIntersecting =\n firstIntersecting.intersectionRatio > lastIntersecting.intersectionRatio ? firstIntersecting : lastIntersecting;\n\n const greaterIntersectingIndex =\n firstIntersecting.intersectionRatio > lastIntersecting.intersectionRatio\n ? firstIntersectingIndex\n : lastIntersectingIndex;\n\n const hasFullIntersection = intersections.some((i) => i.intersectionRatio === 1);\n const hasMultipleFullIntersections = intersections.filter((i) => i.intersectionRatio === 1).length > 1;\n\n const firstFullIntersectionIndex = intersections.findIndex((i) => i.intersectionRatio === 1);\n const firstFullIntersection = intersections.find((i) => i.intersectionRatio === 1);\n\n const lastFullIntersection = reverseIntersections.find((i) => i.intersectionRatio === 1);\n const lastFullIntersectionIndex = intersections.findIndex((i) => i === lastFullIntersection);\n\n const firstNonIntersectingIndex = intersections.findIndex((i) => i.intersectionRatio === 0);\n const firstNonIntersection = intersections.find((i) => i.intersectionRatio === 0);\n\n const lastNonIntersection = reverseIntersections.find((i) => i.intersectionRatio === 0);\n const lastNonIntersectingIndex = intersections.findIndex((i) => i === lastNonIntersection);\n\n return {\n partial: {\n hasAny: !!firstIntersecting || !!lastIntersecting,\n hasMultiple: !!firstIntersecting || (!!lastIntersecting && firstIntersecting !== lastIntersecting),\n first: {\n intersection: firstIntersecting,\n index: firstIntersectingIndex,\n },\n last: {\n intersection: lastIntersecting,\n index: lastIntersectingIndex,\n },\n biggest: {\n intersection: greaterIntersecting,\n index: greaterIntersectingIndex,\n },\n },\n full: {\n hasAny: hasFullIntersection,\n hasMultiple: hasMultipleFullIntersections,\n first: {\n index: firstFullIntersectionIndex,\n intersection: firstFullIntersection,\n },\n last: {\n index: lastFullIntersectionIndex,\n intersection: lastFullIntersection,\n },\n },\n none: {\n first: {\n index: firstNonIntersectingIndex,\n intersection: firstNonIntersection,\n },\n last: {\n index: lastNonIntersectingIndex,\n intersection: lastNonIntersection,\n },\n },\n };\n};\n","import { BehaviorSubject, Subject, takeUntil, timer } from 'rxjs';\n\nexport class KeyPressManager {\n private readonly _isKeyPressed$ = new BehaviorSubject(false);\n private readonly _keyPressCount$ = new BehaviorSubject(0);\n\n private readonly _stopTimeout$ = new Subject<void>();\n\n constructor(public readonly key: number) {}\n\n isPressed(event: KeyboardEvent) {\n const key = event.keyCode;\n\n if (key === this.key) {\n this._isKeyPressed$.next(this._keyPressCount$.value > 1);\n this._keyPressCount$.next(this._keyPressCount$.value + 1);\n\n this._stopTimeout$.next();\n\n timer(100)\n .pipe(takeUntil(this._stopTimeout$))\n .subscribe(() => this.clear());\n } else {\n this.clear();\n }\n\n return this._isKeyPressed$.value;\n }\n\n clear() {\n this._isKeyPressed$.next(false);\n this._keyPressCount$.next(0);\n this._stopTimeout$.next();\n }\n}\n","import { map, Observable, Observer, startWith } from 'rxjs';\n\nexport const createMediaQueryObservable = (query: string) => {\n const mq = window.matchMedia(query);\n\n const observable = new Observable((observer: Observer<MediaQueryListEvent>) => {\n const eventHandler = (event: MediaQueryListEvent) => {\n observer.next(event);\n };\n\n mq.addEventListener('change', eventHandler);\n\n return () => {\n mq.removeEventListener('change', eventHandler);\n };\n }).pipe(\n startWith(mq),\n map(({ matches }) => ({\n matches,\n query,\n })),\n );\n\n return observable;\n};\n","import { Observable } from 'rxjs';\n\nexport const createMutationObservable = (config: {\n elements: HTMLElement | HTMLElement[];\n options?: MutationObserverInit & { styleIgnoreList?: string[] };\n}) => {\n const elements = Array.isArray(config.elements) ? config.elements : [config.elements];\n\n return new Observable<MutationRecord[]>((obs) => {\n const observer = new MutationObserver((mutations) => {\n if (config.options?.styleIgnoreList) {\n const allowedMutations: MutationRecord[] = [];\n\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n const attributeName = mutation.attributeName;\n\n if (!attributeName || attributeName !== 'style') continue;\n\n const oldValue = mutation.oldValue;\n const newValue = (mutation.target as HTMLElement).getAttribute('style');\n\n const oldValueStyles = oldValue?.split(';').map((s) => s.trim()) ?? [];\n const newValueStyles = newValue?.split(';').map((s) => s.trim()) ?? [];\n\n const changedStyles = newValueStyles.filter((s) => !oldValueStyles.includes(s));\n\n if (\n changedStyles.some((s) => {\n const [key] = s.split(':');\n\n if (!key) return false;\n\n return config.options?.styleIgnoreList?.includes(key);\n })\n )\n continue;\n\n allowedMutations.push(mutation);\n }\n }\n\n if (allowedMutations.length) {\n obs.next(allowedMutations);\n }\n } else {\n obs.next(mutations);\n }\n });\n\n for (const element of elements) {\n observer.observe(element, config.options);\n }\n\n return () => observer.disconnect();\n });\n};\n","export const isObject = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n};\n\nexport const isArray = (value: unknown): value is unknown[] => {\n return Array.isArray(value);\n};\n\nexport const getObjectProperty = (obj: Record<string, unknown>, prop: string) => {\n const hasDotNotation = prop.includes('.');\n const hasBracketNotation = prop.includes('[');\n\n if (!hasDotNotation && !hasBracketNotation) return obj[prop];\n\n const props = prop.split('.');\n\n let value: unknown = obj;\n\n for (const prop of props) {\n if (!isObject(value)) return undefined;\n\n if (prop.includes('[')) {\n const [key, index] = prop.split('[').map((part) => part.replace(']', '')) as [string, string];\n const arr = value[key];\n if (!Array.isArray(arr)) return undefined;\n\n value = arr[+index];\n } else {\n value = value[prop];\n }\n }\n\n return value;\n};\n","import { ElementRef, assertInInjectionContext, inject } from '@angular/core';\nimport { Observable, Subscription, distinctUntilChanged, map, of, switchMap, takeUntil } from 'rxjs';\nimport { fromNextFrame } from './animation.utils';\nimport { createDestroy } from './destroy.utils';\n\ntype AttributeValueBinding = {\n render: boolean;\n value: boolean | string | number;\n};\n\ntype AttributeRenderBinding = boolean;\n\nexport type ReactiveAttributes = {\n attribute: string | string[];\n observable: Observable<AttributeValueBinding | AttributeRenderBinding>;\n eager?: boolean;\n elementRef?: ElementRef<HTMLElement>;\n};\n\nconst isAttributeRenderBinding = (\n value: AttributeValueBinding | AttributeRenderBinding,\n): value is AttributeRenderBinding => typeof value === 'boolean';\nconst isAttributeValueBinding = (\n value: AttributeValueBinding | AttributeRenderBinding,\n): value is AttributeValueBinding => typeof value === 'object';\n\nexport interface ReactiveBindingResult {\n reset: () => void;\n remove: (...attributes: string[]) => void;\n push: (value: ReactiveAttributes) => void;\n}\n\n/**\n * @deprecated Use one of the following instead:\n * - `signalHostAttributes`\n * - `signalHostClasses`\n * - `signalHostStyles`\n * - `signalAttributes`\n * - `signalClasses`\n * - `signalStyles`\n *\n * Will be removed in v5.\n */\nexport const createReactiveBindings = (...values: ReactiveAttributes[]): ReactiveBindingResult => {\n assertInInjectionContext(createReactiveBindings);\n\n const rootElementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const destroy$ = createDestroy();\n\n const subscriptions: { attributes: string[]; subscription: Subscription }[] = [];\n const pushedAttributes: string[][] = [];\n\n const defaults: Record<string, string | undefined> = {};\n\n const push = (value: ReactiveAttributes) => {\n const { attribute, observable, elementRef, eager } = value;\n const elRef = elementRef || rootElementRef;\n const attributes = Array.isArray(attribute) ? attribute : [attribute];\n pushedAttributes.push(attributes);\n\n for (const attribute of attributes) {\n if (!defaults[attribute]) {\n defaults[attribute] = elRef.nativeElement.getAttribute(attribute) || undefined;\n }\n }\n\n const subscription = observable\n .pipe(\n takeUntil(destroy$),\n distinctUntilChanged((a, b) => {\n if (isAttributeRenderBinding(a) && isAttributeRenderBinding(b)) {\n return a === b;\n } else if (isAttributeValueBinding(a) && isAttributeValueBinding(b)) {\n return a.render === b.render && a.value === b.value;\n }\n\n return false;\n }),\n switchMap((v) => (eager ? of(v) : fromNextFrame().pipe(map(() => v)))),\n )\n .subscribe((value) => {\n const currentAttributes = pushedAttributes.find((s) => s.some((current) => attributes.includes(current))) || [];\n\n for (const attribute of currentAttributes) {\n const isSingleClassMutation = attribute.startsWith('class.');\n const isMultipleClassMutation = attribute === 'class';\n\n const render = isAttributeRenderBinding(value) ? value : value.render;\n\n if (isSingleClassMutation) {\n const className = attribute.replace('class.', '');\n\n if (!className) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.classList.remove(className);\n } else {\n elRef.nativeElement.classList.add(className);\n }\n } else if (isMultipleClassMutation) {\n const classes = isAttributeRenderBinding(value) ? '' : `${value.value}`;\n\n if (!classes) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.classList.remove(...classes.split(' '));\n } else {\n elRef.nativeElement.classList.add(...classes.split(' '));\n }\n } else {\n const attributeValue = isAttributeRenderBinding(value) ? true : `${value.value}`;\n\n if (!attribute) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.removeAttribute(attribute);\n } else {\n elRef.nativeElement.setAttribute(attribute, `${attributeValue}`);\n }\n }\n }\n });\n\n subscriptions.push({ attributes, subscription });\n };\n\n const remove = (...attributes: string[]) => {\n for (const attribute of attributes) {\n const sub = subscriptions.find((s) => s.attributes.includes(attribute));\n const attributeStack = pushedAttributes.find((a) => a.includes(attribute));\n\n if (sub) {\n sub.attributes = sub.attributes.filter((a) => a !== attribute);\n attributeStack?.splice(attributeStack.indexOf(attribute), 1);\n\n if (sub.attributes.length === 0) {\n sub.subscription.unsubscribe();\n subscriptions.splice(subscriptions.indexOf(sub), 1);\n }\n }\n }\n };\n\n const reset = () => {\n for (const attribute in defaults) {\n if (defaults[attribute] === undefined) {\n rootElementRef.nativeElement.removeAttribute(attribute);\n } else {\n rootElementRef.nativeElement.setAttribute(attribute, defaults[attribute] as string);\n }\n }\n };\n\n for (const value of values) {\n push(value);\n }\n\n return {\n push,\n remove,\n reset,\n };\n};\n","import { Observable } from 'rxjs';\n\nexport const createResizeObservable = (config: {\n elements: HTMLElement | HTMLElement[];\n options?: ResizeObserverOptions;\n}) => {\n const elements = Array.isArray(config.elements) ? config.elements : [config.elements];\n\n return new Observable<ResizeObserverEntry[]>((obs) => {\n const observer = new ResizeObserver((entries) => obs.next(entries));\n\n for (const element of elements) {\n observer.observe(element, config.options);\n }\n\n return () => observer.disconnect();\n });\n};\n","export const round = (value: number, precision = 0) => {\n const multiplier = Math.pow(10, precision);\n return Math.round(value * multiplier) / multiplier;\n};\n","import { clone } from './clone.util';\n\nexport const RUNTIME_ERROR_NO_DATA = '__ET_NO_DATA__';\n\nexport class RuntimeError<T extends number> extends Error {\n constructor(\n public code: T,\n message: null | false | string,\n public devOnly = false,\n public data: unknown = RUNTIME_ERROR_NO_DATA,\n ) {\n super(formatRuntimeError<T>(code, message, devOnly));\n\n if (data !== RUNTIME_ERROR_NO_DATA) {\n try {\n const _data = clone(data);\n\n setTimeout(() => {\n console.error(_data);\n }, 1);\n } catch {\n setTimeout(() => {\n console.error(data);\n }, 1);\n }\n }\n }\n}\n\nexport function formatRuntimeError<T extends number>(\n code: T,\n message: null | false | string,\n devOnly: boolean,\n): string {\n // prefix code with zeros if it's less than 100\n const codeWithZeros = code < 10 ? `00${code}` : code < 100 ? `0${code}` : code;\n\n const fullCode = `ET${codeWithZeros}`;\n const devOnlyText = devOnly ? ' [DEV ONLY] ' : '';\n return `${devOnlyText}${fullCode}${message ? ': ' + message : ''}`;\n}\n","import { clamp } from './clamp.util';\n\nexport const elementCanScroll = (element: HTMLElement, direction?: 'x' | 'y') => {\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;\n\n if (direction === 'x') {\n return scrollWidth > clientWidth;\n } else if (direction === 'y') {\n return scrollHeight > clientHeight;\n }\n\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n};\n\nexport interface IsElementVisibleOptions {\n /**\n * The element to check if it is visible inside a container.\n */\n element?: HTMLElement | null;\n\n /**\n * The container to check if the element is visible inside.\n * @default document.documentElement\n */\n container?: HTMLElement | null;\n\n /**\n * The container's rect to check if the element is visible inside. Can be supplied to reduce the amount of DOM reads.\n * @default container.getBoundingClientRect()\n */\n containerRect?: DOMRect | null;\n\n /**\n * The element's rect. Can be supplied to reduce the amount of DOM reads.\n * @default container.getBoundingClientRect()\n */\n elementRect?: DOMRect | null;\n}\n\nexport interface CurrentElementVisibility {\n /**\n * Whether the element is visible in the inline direction.\n */\n inline: boolean;\n\n /**\n * Whether the element is visible in the block direction.\n */\n block: boolean;\n\n /**\n * The percentage of the element that is visible in the inline direction.\n */\n inlineIntersection: number;\n\n /**\n * The percentage of the element that is visible in the block direction.\n */\n blockIntersection: number;\n\n /**\n * Whether the element is intersecting the container.\n */\n isIntersecting: boolean;\n\n /**\n * The ratio of the element that is intersecting the container.\n */\n intersectionRatio: number;\n\n /**\n * The element that is being checked for visibility.\n */\n element: HTMLElement;\n}\n\nexport const isElementVisible = (options: IsElementVisibleOptions): CurrentElementVisibility | null => {\n let { container } = options;\n const { element } = options;\n\n if (!element || container === null) {\n return null;\n }\n\n container ||= document.documentElement;\n\n const canScroll = elementCanScroll(container);\n\n if (!canScroll) {\n return {\n inline: true,\n block: true,\n blockIntersection: 1,\n inlineIntersection: 1,\n intersectionRatio: 1,\n isIntersecting: true,\n element,\n };\n }\n\n const elementRect = options.elementRect || element.getBoundingClientRect();\n const containerRect = options.containerRect || container.getBoundingClientRect();\n\n const elementInlineStart = elementRect.left;\n const elementBlockStart = elementRect.top;\n\n const containerInlineStart = containerRect.left;\n const containerBlockStart = containerRect.top;\n\n const elWith = elementRect.width || 1;\n const elHeight = elementRect.height || 1;\n\n const elementInlineEnd = elementInlineStart + elWith;\n const elementBlockEnd = elementBlockStart + elHeight;\n\n const containerInlineEnd = containerInlineStart + containerRect.width;\n const containerBlockEnd = containerBlockStart + containerRect.height;\n\n const isElementInlineVisible = elementInlineStart >= containerInlineStart && elementInlineEnd <= containerInlineEnd;\n const isElementBlockVisible = elementBlockStart >= containerBlockStart && elementBlockEnd <= containerBlockEnd;\n\n const inlineIntersection =\n Math.min(elementInlineEnd, containerInlineEnd) - Math.max(elementInlineStart, containerInlineStart);\n const blockIntersection =\n Math.min(elementBlockEnd, containerBlockEnd) - Math.max(elementBlockStart, containerBlockStart);\n\n const inlineIntersectionPercentage = clamp(inlineIntersection / elWith, 0, 1);\n const blockIntersectionPercentage = clamp(blockIntersection / elHeight, 0, 1);\n\n return {\n inline: isElementInlineVisible,\n block: isElementBlockVisible,\n inlineIntersection: inlineIntersectionPercentage,\n blockIntersection: blockIntersectionPercentage,\n isIntersecting: isElementInlineVisible && isElementBlockVisible,\n element,\n\n // Round the intersection ratio to the nearest 0.01 to avoid floating point errors and system scaling issues.\n intersectionRatio: Math.round(Math.min(inlineIntersectionPercentage, blockIntersectionPercentage) * 100) / 100,\n };\n};\n\nexport const getElementScrollCoordinates = (options: ScrollToElementOptions): ScrollToOptions => {\n let { container } = options;\n const {\n element,\n direction,\n behavior = 'smooth',\n origin = 'nearest',\n scrollBlockMargin = 0,\n scrollInlineMargin = 0,\n } = options;\n\n if (!element || container === null) {\n return {\n behavior,\n left: undefined,\n top: undefined,\n };\n }\n\n container ||= document.documentElement;\n\n const canScroll = elementCanScroll(container);\n\n if (!canScroll) {\n return {\n behavior,\n left: undefined,\n top: undefined,\n };\n }\n\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const { scrollLeft, scrollTop } = container;\n const { width: elementWidth, height: elementHeight, left: elementLeft, top: elementTop } = elementRect;\n const { width: containerWidth, height: containerHeight, left: containerLeft, top: containerTop } = containerRect;\n\n const shouldScrollLeft = direction === 'inline' || direction === 'both' || !direction;\n const shouldScrollTop = direction === 'block' || direction === 'both' || !direction;\n\n let scrollLeftTo = scrollLeft;\n let scrollTopTo = scrollTop;\n\n const scrollToElementStart = () => {\n const relativeTop = elementTop - containerTop;\n const relativeLeft = elementLeft - containerLeft;\n\n const amountToScrollTop = relativeTop;\n const amountToScrollLeft = relativeLeft;\n\n const scrollTopPosition = scrollTop + amountToScrollTop;\n const scrollLeftPosition = scrollLeft + amountToScrollLeft;\n\n scrollLeftTo = scrollLeftPosition - scrollInlineMargin;\n scrollTopTo = scrollTopPosition - scrollBlockMargin;\n };\n\n const scrollToElementEnd = () => {\n const relativeTop = elementTop - containerTop;\n const relativeLeft = elementLeft - containerLeft;\n\n const amountToScrollTop = relativeTop - containerHeight + elementHeight;\n const amountToScrollLeft = relativeLeft - containerWidth + elementWidth;\n\n const scrollTopPosition = scrollTop + amountToScrollTop;\n const scrollLeftPosition = scrollLeft + amountToScrollLeft;\n\n scrollLeftTo = scrollLeftPosition + scrollInlineMargin;\n scrollTopTo = scrollTopPosition + scrollBlockMargin;\n };\n\n const scrollToElementCenter = () => {\n const relativeTop = elementTop - containerTop;\n const relativeLeft = elementLeft - containerLeft;\n\n const amountToScrollTop = relativeTop - containerHeight / 2 + elementHeight / 2;\n const amountToScrollLeft = relativeLeft - containerWidth / 2 + elementWidth / 2;\n\n const scrollTopPosition = scrollTop + amountToScrollTop;\n const scrollLeftPosition = scrollLeft + amountToScrollLeft;\n\n scrollLeftTo = scrollLeftPosition;\n scrollTopTo = scrollTopPosition;\n };\n\n const scrollToElementNearest = () => {\n const isAbove = elementRect.bottom < containerRect.top;\n const isPartialAbove = elementRect.top < containerRect.top && elementRect.bottom > containerRect.top;\n\n const isBelow = elementRect.top > containerRect.bottom;\n const isPartialBelow = elementRect.top < containerRect.bottom && elementRect.bottom > containerRect.bottom;\n\n const isLeft = elementRect.right < containerRect.left;\n const isPartialLeft = elementRect.left < containerRect.left && elementRect.right > containerRect.left;\n\n const isRight = elementRect.left > containerRect.right;\n const isPartialRight = elementRect.left < containerRect.right && elementRect.right > containerRect.right;\n\n if (isAbove || isPartialAbove || isLeft || isPartialLeft) {\n scrollToElementStart();\n } else if (isBelow || isPartialBelow || isRight || isPartialRight) {\n scrollToElementEnd();\n }\n };\n\n switch (origin) {\n case 'start':\n scrollToElementStart();\n break;\n case 'end':\n scrollToElementEnd();\n break;\n case 'center':\n scrollToElementCenter();\n break;\n case 'nearest':\n scrollToElementNearest();\n break;\n }\n\n return {\n behavior,\n left: shouldScrollLeft ? scrollLeftTo : undefined,\n top: shouldScrollTop ? scrollTopTo : undefined,\n };\n};\n\nexport interface ScrollToElementOptions {\n /**\n * The element to scroll to.\n */\n element?: HTMLElement | null;\n\n /**\n * The scroll container to scroll to the element in.\n * @default document.documentElement\n */\n container?: HTMLElement | null;\n\n /**\n * The direction to scroll in.\n * @default 'both'\n */\n direction?: 'inline' | 'block' | 'both';\n\n /**\n * The origin of the element to scroll to.\n * @default 'nearest'\n */\n origin?: 'start' | 'end' | 'center' | 'nearest';\n\n /**\n * The scroll behavior.\n * @default 'smooth'\n */\n behavior?: ScrollBehavior;\n\n /**\n * The scroll inline-margin\n * @default 0\n */\n scrollInlineMargin?: number;\n\n /**\n * The scroll block-margin\n * @default 0\n */\n scrollBlockMargin?: number;\n}\n\nexport const scrollToElement = (options: ScrollToElementOptions) => {\n options.container?.scrollTo(getElementScrollCoordinates(options));\n};\n","import { assertInInjectionContext } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport {\n BehaviorSubject,\n Observable,\n Subscription,\n combineLatest,\n filter,\n map,\n shareReplay,\n startWith,\n take,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { TypedQueryList } from '../types';\nimport { switchQueryListChanges } from './angular.utils';\nimport { createDestroy } from './destroy.utils';\nimport { getObjectProperty, isObject } from './object.utils';\n\nexport type SelectionModelTypes = string | number | Record<string, unknown> | unknown;\nexport type SelectionModelPropertyPath = string;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type SelectionModelOptionValueFn<T extends SelectionModelTypes = any> = (option: T) => unknown;\n\n/**\n * You can use a property path or a function to get the value of an option. The function should be as **lightweight as possible** as it will be called **a lot**.\n *\n * @example\n * // Property path\n * \"id\" // option.id\n * \"user.name\" // option.user.name\n *\n * // Function\n * (option) => option.id // option.id\n * (option) => option.user.name // option.user.name\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type SelectionModelBinding<T extends SelectionModelTypes = any> =\n | SelectionModelPropertyPath\n | SelectionModelOptionValueFn<T>;\n\nexport class SelectionModel<T extends SelectionModelTypes = unknown> {\n private readonly _destroy$ = createDestroy();\n private _lastSelectionSetSubscription: Subscription | null = null;\n\n get selection$() {\n return this._selection$.asObservable();\n }\n get selection() {\n return this._selection$.value;\n }\n private readonly _selection$ = new BehaviorSubject<T[]>([]);\n\n get options$() {\n return this._options$.asObservable();\n }\n get options() {\n return this._options$.value;\n }\n private readonly _options$ = new BehaviorSubject<T[]>([]);\n readonly optionsSignal = toSignal(this.options$);\n\n get valueBinding$() {\n return this._valueBinding$.asObservable();\n }\n get valueBinding() {\n return this._valueBinding$.value;\n }\n private readonly _valueBinding$ = new BehaviorSubject<SelectionModelBinding<T> | null>(null);\n\n get keyBinding$() {\n return combineLatest([this._keyBinding$, this.valueBinding$]).pipe(\n map(([keyBinding, valueBinding]) => keyBinding || valueBinding),\n );\n }\n get keyBinding() {\n return this._keyBinding$.value || this.valueBinding;\n }\n private readonly _keyBinding$ = new BehaviorSubject<SelectionModelBinding<T> | null>(null);\n\n get labelBinding$() {\n return this._labelBinding$.asObservable();\n }\n get labelBinding() {\n return this._labelBinding$.value;\n }\n private readonly _labelBinding$ = new BehaviorSubject<SelectionModelBinding<T> | null>(null);\n\n get disabledBinding$() {\n return this._disabledBinding$.asObservable();\n }\n get disabledBinding() {\n return this._disabledBinding$.value;\n }\n private readonly _disabledBinding$ = new BehaviorSubject<SelectionModelBinding<T> | null>(null);\n\n get allowMultiple$() {\n return this._allowMultiple$.asObservable();\n }\n get allowMultiple() {\n return this._allowMultiple$.value;\n }\n private readonly _allowMultiple$ = new BehaviorSubject<boolean>(false);\n\n get filter$() {\n return this._filter$.asObservable();\n }\n get filter() {\n return this._filter$.value;\n }\n private readonly _filter$ = new BehaviorSubject<string>('');\n\n readonly value$ = combineLatest([this.selection$, this.valueBinding$, this.allowMultiple$]).pipe(\n map(([selection, valueBinding, allowMultiple]) => {\n if (allowMultiple) {\n return selection.map((option) => this.execFnOrGetOptionProperty(option, valueBinding));\n }\n\n const [option] = selection;\n\n if (!option) return null;\n\n return this.execFnOrGetOptionProperty(option, valueBinding);\n }),\n );\n\n readonly filteredOptions$ = combineLatest([this.options$, this.filter$, this.labelBinding$]).pipe(\n map(([options, filter]) => this.getFilteredOptions(filter, options)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n private readonly _optionsAndSelection$ = combineLatest([this._options$, this._selection$]);\n\n constructor() {\n this.allowMultiple$\n .pipe(\n tap(() => {\n if (this.allowMultiple) return;\n\n const [option] = this.selection;\n\n if (!option) return;\n\n this.setSelection([option]);\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n setSelection(selection: T | T[]) {\n if (!Array.isArray(selection)) {\n selection = [selection];\n }\n\n this._selection$.next(selection);\n\n return this;\n }\n\n setSelectionFromValue(value: unknown) {\n if (Array.isArray(value)) {\n const selection = value.map((v) => this.getOptionByValue(v)).filter((v): v is T => v !== undefined);\n\n this.setSelection(selection);\n } else {\n const selection = this.getOptionByValue(value);\n\n if (selection) {\n this.setSelection(selection);\n } else {\n this.clearSelectedOptions();\n }\n }\n }\n\n setSelectionFromValue$(value: unknown) {\n this._lastSelectionSetSubscription?.unsubscribe();\n\n this._lastSelectionSetSubscription = this.options$\n .pipe(\n takeUntil(this._destroy$),\n filter((o) => !!o.length),\n tap(() => this.setSelectionFromValue(value)),\n take(1),\n )\n .subscribe();\n }\n\n setValueBinding(fnOrPropertyPath: SelectionModelBinding<T> | null) {\n this._valueBinding$.next(fnOrPropertyPath);\n\n return this;\n }\n\n setKeyBinding(fnOrPropertyPath: SelectionModelBinding<T> | null) {\n this._keyBinding$.next(fnOrPropertyPath);\n\n return this;\n }\n\n setLabelBinding(fnOrPropertyPath: SelectionModelBinding<T> | null) {\n this._labelBinding$.next(fnOrPropertyPath);\n\n return this;\n }\n\n setDisabledBinding(fnOrPropertyPath: SelectionModelBinding<T> | null) {\n this._disabledBinding$.next(fnOrPropertyPath);\n\n return this;\n }\n\n setOptions(options: T[]) {\n this._options$.next(options);\n\n return this;\n }\n\n setOptionsFromQueryList(queryList: TypedQueryList<T>) {\n assertInInjectionContext(this.setOptionsFromQueryList);\n\n queryList.changes\n .pipe(\n startWith(queryList),\n tap((list) => this.setOptions(list.toArray())),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n return this;\n }\n\n setOptionsFromQueryList$(queryList$: Observable<TypedQueryList<T> | null | undefined>) {\n assertInInjectionContext(this.setOptionsFromQueryList$);\n\n queryList$\n .pipe(\n switchQueryListChanges(),\n tap((list) => this.setOptions(list?.toArray() || [])),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n return this;\n }\n\n setAllowMultiple(allowMultiple: boolean) {\n this._allowMultiple$.next(allowMultiple);\n\n return this;\n }\n\n setFilter(filter: string | null) {\n const sanitizedFilter = filter?.trim() || '';\n\n this._filter$.next(sanitizedFilter);\n }\n\n reset() {\n this._selection$.next([]);\n this._options$.next([]);\n this._valueBinding$.next(null);\n this._keyBinding$.next(null);\n this._disabledBinding$.next(null);\n this._labelBinding$.next(null);\n this._allowMultiple$.next(false);\n }\n\n trackByOptionKey = (option: T) => this.getKey(option);\n\n getOptionByValue$(value: unknown) {\n return this._optionsAndSelection$.pipe(map(() => this.getOptionByValue(value)));\n }\n\n getOptionByLabel$(label: string) {\n return this._optionsAndSelection$.pipe(map(() => this.getOptionByLabel(label)));\n }\n\n getOptionByKey$(key: string) {\n return this._optionsAndSelection$.pipe(map(() => this.getOptionByKey(key)));\n }\n\n isSelected$(option: T) {\n return this._selection$.pipe(map(() => this.isSelected(option)));\n }\n\n isDisabled$(option: T) {\n return this._optionsAndSelection$.pipe(map(() => this.isDisabled(option)));\n }\n\n getLabel$(option: T) {\n return this.labelBinding$.pipe(map((labelBinding) => this.execFnOrGetOptionProperty(option, labelBinding)));\n }\n\n getValue$(option: T) {\n return this.valueBinding$.pipe(map((valueBinding) => this.execFnOrGetOptionProperty(option, valueBinding)));\n }\n\n getKey$(option: T) {\n return this.keyBinding$.pipe(map((keyBinding) => this.execFnOrGetOptionProperty(option, keyBinding)));\n }\n\n getOptionByValue(value: unknown) {\n return this.getOption(value, this.valueBinding);\n }\n\n getOptionByLabel(label: string) {\n return this.getOption(label, this.labelBinding);\n }\n\n getOptionByKey(key: string) {\n return this.getOption(key, this.keyBinding);\n }\n\n getOption(\n value: unknown,\n propertyPath: SelectionModelBinding<T> | null = null,\n options = [...this.options, ...this.selection],\n ) {\n if (!propertyPath) {\n return options.find((option) => option === value);\n }\n\n return options.find((option) => {\n if (!isObject(option)) return false;\n\n return this.execFnOrGetOptionProperty(option, propertyPath) === value;\n });\n }\n\n getOptionByIndex(index: number, options = this.getFilteredOptions()): T | null {\n return options[index] || null;\n }\n\n getOptionByOffset(\n offset: number,\n index: number,\n config: { loop?: boolean; clamp?: boolean; skipDisabled?: boolean; options?: T[] } = { clamp: true },\n ): T | null {\n const { loop, clamp, skipDisabled, options = this.getFilteredOptions() } = config;\n\n const newIndex = index + offset;\n const remainingOffset = newIndex * -1;\n\n let optionResult: T | null = null;\n\n if (newIndex < 0) {\n if (loop) {\n optionResult = this.getOptionByOffset(remainingOffset, options.length - 1, config);\n } else if (clamp) {\n optionResult = this.getFirstOption();\n } else {\n optionResult = null;\n }\n } else if (newIndex >= options.length) {\n if (loop) {\n optionResult = this.getOptionByOffset(remainingOffset, 0, config);\n } else if (clamp) {\n optionResult = this.getLastOption();\n } else {\n optionResult = null;\n }\n } else {\n optionResult = this.getOptionByIndex(newIndex);\n }\n\n if (optionResult && skipDisabled && this.isDisabled(optionResult)) {\n return this.getOptionByOffset(offset, newIndex, config);\n }\n\n return optionResult;\n }\n\n getFirstOption(options = this.getFilteredOptions()): T | null {\n return this.getOptionByIndex(0, options);\n }\n\n getLastOption(options = this.getFilteredOptions()): T | null {\n return this.getOptionByIndex(options.length - 1, options);\n }\n\n getOptionIndex(option: T, options = this.getFilteredOptions()) {\n const key = this.getKey(option);\n const index = options.findIndex((o) => this.getKey(o) === key);\n\n return index === -1 ? null : index;\n }\n\n getNonMultipleSelectedOption(): T | null {\n if (this.allowMultiple) return null;\n\n return this.selection[0] || null;\n }\n\n getNonMultipleSelectedOptionIndex() {\n if (this.allowMultiple) return null;\n\n const opt = this.getNonMultipleSelectedOption();\n\n if (!opt) return null;\n\n return this.getOptionIndex(opt);\n }\n\n getNonMultipleOptionByOffsetFromSelected(\n offset: number,\n config: { loop?: boolean; clamp?: boolean } = { clamp: true },\n ) {\n if (this.allowMultiple) return null;\n\n const index = this.getNonMultipleSelectedOptionIndex();\n\n if (index === null) return null;\n\n return this.getOptionByOffset(index, offset, config);\n }\n\n getLabel(option: T) {\n return this.execFnOrGetOptionProperty(option, this.labelBinding);\n }\n\n getValue(option: T) {\n return this.execFnOrGetOptionProperty(option, this.valueBinding);\n }\n\n getKey(option: T) {\n return this.execFnOrGetOptionProperty(option, this.keyBinding);\n }\n\n getDisabled(option: T) {\n return this.execFnOrGetOptionProperty(option, this.disabledBinding);\n }\n\n execFnOrGetOptionProperty(option: T, fnOrPropertyPath: SelectionModelBinding<T> | null) {\n if (!fnOrPropertyPath || !isObject(option)) return option;\n\n if (typeof fnOrPropertyPath === 'function') {\n return fnOrPropertyPath(option);\n }\n\n return getObjectProperty(option, fnOrPropertyPath);\n }\n\n execFnOrGetOptionPropertyNullable(option: T, fnOrPropertyPath: SelectionModelBinding<T> | null) {\n if (!fnOrPropertyPath || !isObject(option)) return null;\n\n return this.execFnOrGetOptionProperty(option, fnOrPropertyPath);\n }\n\n getOptionProperty(option: T, propertyPath: string | null) {\n if (!propertyPath || !isObject(option)) return option;\n\n return getObjectProperty(option, propertyPath);\n }\n\n isSelected(option: T) {\n const optionKey = this.execFnOrGetOptionProperty(option, this.keyBinding);\n\n return this.getOption(optionKey, this.keyBinding, this.selection) !== undefined;\n }\n\n isDisabled(option: T) {\n return !!this.execFnOrGetOptionPropertyNullable(option, this.disabledBinding);\n }\n\n getFilteredOptions(filter = this.filter, options = this.options) {\n if (!filter) return options;\n\n const splitFilter = filter.split(' ').filter((f) => f);\n\n return options.filter((option) => {\n const label = this.getLabel(option);\n\n if (!label || typeof label !== 'string') return false;\n\n const splitLabel = label.split(' ').filter((l) => l);\n\n return splitFilter.every((f) => splitLabel.some((l) => l.toLowerCase().includes(f.toLowerCase())));\n });\n }\n\n addSelectedOption(option: T) {\n if (this.allowMultiple) {\n if (this.isSelected(option)) return;\n\n this._selection$.next([...this.selection, option]);\n } else {\n this._selection$.next([option]);\n }\n }\n\n removeSelectedOption(option: T) {\n const optionKey = this.execFnOrGetOptionProperty(option, this.keyBinding);\n\n if (!this.isSelected(option)) return;\n\n this._selection$.next(\n this.selection.filter((selectedOption) => {\n const key = this.execFnOrGetOptionProperty(selectedOption, this.keyBinding);\n\n return key !== optionKey;\n }),\n );\n }\n\n clearSelectedOptions() {\n this._selection$.next([]);\n }\n\n toggleSelectedOption(option: T) {\n if (this.isSelected(option)) {\n this.removeSelectedOption(option);\n } else {\n this.addSelectedOption(option);\n }\n }\n\n // FIXME: Toggle should respect disabled binding if it exists\n toggleAllSelectedOptions() {\n const filteredOptions = this.getFilteredOptions();\n const unselectedOptions = filteredOptions.filter((option) => !this.isSelected(option));\n\n if (unselectedOptions.length) {\n const selection = unselectedOptions.filter((o) => !this.selection.some((s) => this.getKey(s) === this.getKey(o)));\n\n this._selection$.next([...this.selection, ...selection]);\n } else {\n const selection = this.selection.filter((s) => !filteredOptions.some((o) => this.getKey(o) === this.getKey(s)));\n\n this._selection$.next(selection);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\nimport { Observable, Observer, Subject, Subscription, fromEvent } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ClickObserverFactory {\n create() {\n return fromEvent<MouseEvent>(document, 'click');\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ClickObserverService implements OnDestroy {\n private _clickObserverFactory = inject(ClickObserverFactory);\n\n private _observedElements = new Map<\n Element,\n {\n observer: Subscription | null;\n readonly stream: Subject<MouseEvent>;\n count: number;\n }\n >();\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<MouseEvent>;\n observe(element: ElementRef<Element>): Observable<MouseEvent>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<MouseEvent> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<MouseEvent>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n private _observeElement(element: Element): Subject<MouseEvent> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<MouseEvent>();\n const observer = this._clickObserverFactory.create();\n\n const sub = observer.subscribe((event) => stream.next(event));\n\n this._observedElements.set(element, { observer: sub, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n private _unobserveElement(element: Element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n private _cleanupObserver(element: Element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.unsubscribe();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MutationObserverFactory {\n create(callback: MutationCallback): MutationObserver | null {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ContentObserverService implements OnDestroy {\n private _mutationObserverFactory = inject(MutationObserverFactory);\n\n private _observedElements = new Map<\n Element,\n {\n observer: MutationObserver | null;\n readonly stream: Subject<MutationRecord[]>;\n count: number;\n }\n >();\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<MutationRecord[]>;\n observe(element: ElementRef<Element>): Observable<MutationRecord[]>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<MutationRecord[]> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<MutationRecord[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n private _observeElement(element: Element): Subject<MutationRecord[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<MutationRecord[]>();\n const observer = this._mutationObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n private _unobserveElement(element: Element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n private _cleanupObserver(element: Element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FocusVisibleService {\n private readonly _document = inject(DOCUMENT);\n\n private _hadKeyboardEvent = false;\n\n get isFocusVisible() {\n return this._hadKeyboardEvent;\n }\n\n constructor() {\n this._document.addEventListener('keydown', this.onKeyDown.bind(this), true);\n this._document.addEventListener('mousedown', this.onPointerDown.bind(this), true);\n this._document.addEventListener('pointerdown', this.onPointerDown.bind(this), true);\n this._document.addEventListener('touchstart', this.onPointerDown.bind(this), true);\n }\n\n onKeyDown(e: KeyboardEvent) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n this._hadKeyboardEvent = true;\n }\n\n onPointerDown() {\n this._hadKeyboardEvent = false;\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class IntersectionObserverFactory {\n create(callback: IntersectionObserverCallback): IntersectionObserver | null {\n return typeof IntersectionObserver === 'undefined' ? null : new IntersectionObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class IntersectionObserverService implements OnDestroy {\n private _intersectionObserverFactory = inject(IntersectionObserverFactory);\n\n private _observedElements = new Map<\n Element,\n {\n observer: IntersectionObserver | null;\n readonly stream: Subject<IntersectionObserverEntry[]>;\n count: number;\n }\n >();\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<IntersectionObserverEntry[]>;\n observe(element: ElementRef<Element>): Observable<IntersectionObserverEntry[]>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<IntersectionObserverEntry[]> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<IntersectionObserverEntry[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n private _observeElement(element: Element): Subject<IntersectionObserverEntry[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<IntersectionObserverEntry[]>();\n const observer = this._intersectionObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element);\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n private _unobserveElement(element: Element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n private _cleanupObserver(element: Element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n create(callback: ResizeObserverCallback): ResizeObserver | null {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n private _mutationObserverFactory = inject(ResizeObserverFactory);\n\n private _observedElements = new Map<\n Element,\n {\n observer: ResizeObserver | null;\n readonly stream: Subject<ResizeObserverEntry[]>;\n count: number;\n }\n >();\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<ResizeObserverEntry[]>;\n observe(element: ElementRef<Element>): Observable<ResizeObserverEntry[]>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<ResizeObserverEntry[]> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<ResizeObserverEntry[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n private _observeElement(element: Element): Subject<ResizeObserverEntry[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<ResizeObserverEntry[]>();\n const observer = this._mutationObserverFactory.create((resizes) => stream.next(resizes));\n if (observer) {\n observer.observe(element);\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n private _unobserveElement(element: Element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n private _cleanupObserver(element: Element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Data, NavigationEnd, Params, Router } from '@angular/router';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n pairwise,\n shareReplay,\n tap,\n} from 'rxjs';\nimport { equal } from '../utils';\n\nconst ET_DISABLE_SCROLL_TOP = Symbol('ET_DISABLE_SCROLL_TOP');\nconst ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE = Symbol('ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE');\nconst ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE = Symbol('ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE');\n\nexport interface RouterDisableScrollTopConfig {\n /**\n * Whether to disable scroll to top ONLY when navigating back to this route.\n * @default false\n */\n asReturnRoute?: boolean;\n\n /**\n * Whether to disable scroll to top when a path param changes.\n * @default false\n */\n onPathParamChange?: boolean;\n}\n\nexport const routerDisableScrollTop = (config: RouterDisableScrollTopConfig = {}) => {\n return {\n ...(!config.asReturnRoute ? { [ET_DISABLE_SCROLL_TOP]: true } : { [ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE]: true }),\n ...(config.onPathParamChange ? { [ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE]: true } : {}),\n };\n};\n\nexport const ET_PROPERTY_REMOVED = Symbol('ET_PROPERTY_REMOVED');\n\nexport interface ScrollEnhancementsConfig {\n /**\n * The scrollable container.\n * @default document.documentElement\n */\n scrollElement?: HTMLElement;\n /**\n * A list of query params that should trigger a scroll to top.\n * @default []\n * @example ['page'] // will scroll to top when the page query param changes\n */\n queryParamTriggerList?: string[];\n /**\n * Config for fragment scrolling.\n */\n fragment?: {\n /**\n * Enable fragment scrolling (scroll to element with id)\n * @default false\n */\n enabled?: boolean;\n /**\n * Whether to use smooth scrolling or not.\n * @default false\n */\n smooth?: boolean;\n };\n}\n\nexport interface RouterState {\n data: Data;\n pathParams: Params;\n queryParams: Params;\n title: string | null;\n fragment: string | null;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RouterStateService {\n private _isScrollTopOnNavigationEnabled = false;\n private readonly _router = inject(Router);\n\n private readonly _route$ = new BehaviorSubject(window.location.pathname);\n private readonly _state$ = new BehaviorSubject<RouterState>(this._getInitialState());\n\n private readonly _afterInitialize$ = new BehaviorSubject<boolean>(false);\n readonly afterInitialize$ = this._afterInitialize$.pipe(filter((v) => v));\n\n get route$() {\n return this._route$.asObservable().pipe(distinctUntilChanged());\n }\n\n get route() {\n return this._route$.getValue();\n }\n\n get state$() {\n return this._state$.asObservable();\n }\n\n get state() {\n return this._state$.getValue();\n }\n\n get data$() {\n return this._state$.pipe(\n map((state) => state.data),\n distinctUntilChanged((a, b) => equal(a, b)),\n );\n }\n\n get data() {\n return this._state$.getValue().data;\n }\n\n get pathParams$() {\n return this._state$.pipe(\n map((state) => state.pathParams),\n distinctUntilChanged((a, b) => equal(a, b)),\n );\n }\n\n get pathParams() {\n return this._state$.getValue().pathParams;\n }\n\n get queryParams$() {\n return this._state$.pipe(\n map((state) => state.queryParams),\n distinctUntilChanged((a, b) => equal(a, b)),\n );\n }\n\n get queryParams() {\n return this._state$.getValue().queryParams;\n }\n\n get title$() {\n return this._state$.pipe(\n map((state) => state.title),\n distinctUntilChanged(),\n );\n }\n\n get title() {\n return this._state$.getValue().title;\n }\n\n get fragment$() {\n return this._state$.pipe(\n map((state) => state.fragment),\n distinctUntilChanged(),\n );\n }\n\n get fragment() {\n return this._state$.getValue().fragment;\n }\n\n get dataChanges$() {\n return this.data$.pipe(\n pairwise(),\n map((v) => this._findChanges(v)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n get queryParamChanges$() {\n return this.queryParams$.pipe(\n pairwise(),\n map((v) => this._findChanges(v)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n get pathParamChanges$() {\n return this.pathParams$.pipe(\n pairwise(),\n map((v) => this._findChanges(v)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n constructor() {\n this._router.events\n .pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n distinctUntilChanged((a, b) => a.url === b.url),\n map((event) => {\n const { url } = event;\n\n const urlWithoutQueryParams = url.split('?')[0] ?? '';\n const withoutFragment = urlWithoutQueryParams.split('#')[0] ?? '';\n\n return withoutFragment;\n }),\n tap(() => {\n if (!this._afterInitialize$.getValue()) {\n this._afterInitialize$.next(true);\n }\n }),\n )\n .subscribe(this._route$);\n\n combineLatest([this._route$, this._afterInitialize$])\n .pipe(\n tap(([, afterInitialize]) => {\n if (!afterInitialize) return;\n\n let route = this._router.routerState.snapshot.root;\n\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n const { data, params, queryParams, title, fragment } = route;\n\n this._state$.next({\n data,\n pathParams: params,\n queryParams,\n title: title ?? null,\n fragment,\n });\n }),\n )\n .subscribe();\n }\n\n enableScrollEnhancements(config: ScrollEnhancementsConfig = {}) {\n if (this._isScrollTopOnNavigationEnabled) {\n return;\n }\n\n this._isScrollTopOnNavigationEnabled = true;\n\n combineLatest([this._state$.pipe(pairwise()), this._route$.pipe(pairwise())])\n .pipe(debounceTime(1))\n .subscribe(([[prevState, currState], [prevRoute, currRoute]]) => {\n const sameUrlNavigation = prevRoute === currRoute;\n const didFragmentChange = prevState.fragment !== currState.fragment;\n\n if (sameUrlNavigation) {\n const allQueryParams = [\n ...new Set(Object.keys(prevState.queryParams).concat(Object.keys(currState.queryParams))),\n ];\n\n const changedQueryParams = allQueryParams.filter(\n (key) => currState.queryParams[key] !== prevState.queryParams[key],\n );\n\n if (!config.queryParamTriggerList?.length && !didFragmentChange) {\n return;\n }\n\n const caseQueryParams = changedQueryParams.some((key) => config.queryParamTriggerList?.includes(key));\n const caseFragment = didFragmentChange && config.fragment?.enabled;\n\n if (caseQueryParams) {\n (config.scrollElement ?? document.documentElement).scrollTop = 0;\n } else if (caseFragment) {\n const fragmentElement = document.getElementById(currState.fragment ?? '');\n\n if (fragmentElement) {\n fragmentElement.scrollIntoView({ behavior: config.fragment?.smooth ? 'smooth' : 'auto' });\n }\n }\n } else {\n const viaReturnRoute =\n currState.data[ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE] && prevState.data[ET_DISABLE_SCROLL_TOP];\n const explicitly = currState.data[ET_DISABLE_SCROLL_TOP];\n const pathParamsChange = currState.data[ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE];\n\n if (viaReturnRoute || explicitly || pathParamsChange) {\n return;\n }\n\n const el = config.scrollElement ?? document.documentElement;\n el.scrollTop = 0;\n }\n });\n }\n\n selectQueryParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(\n map((state) => state.queryParams[key]),\n distinctUntilChanged(),\n );\n }\n\n selectPathParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(\n map((state) => state.pathParams[key]),\n distinctUntilChanged(),\n );\n }\n\n selectData<T = unknown>(key: string): Observable<T> {\n return this._state$.pipe(\n map((state) => state.data[key]),\n distinctUntilChanged((a, b) => equal(a, b)),\n );\n }\n\n private _findChanges<T extends [Record<string, unknown>, Record<string, unknown>], J extends Partial<T[number]>>([\n previous,\n current,\n ]: T) {\n const changes: Record<string, unknown> = {};\n\n const allKeys = new Set<keyof typeof previous & keyof typeof current>([\n ...Object.keys(previous),\n ...Object.keys(current),\n ]);\n\n for (const key of allKeys) {\n if (!equal(previous[key], current[key])) {\n const val = current[key] === undefined ? ET_PROPERTY_REMOVED : current[key];\n\n changes[key] = val;\n }\n }\n\n return changes as J;\n }\n\n private _getInitialState(): RouterState {\n const data = {};\n const pathParams = {};\n const queryParams: Params = {};\n const title = null;\n let fragment = null;\n\n const currentQueryParams = window.location.search;\n const currentFragment = window.location.hash;\n\n if (currentQueryParams) {\n const params = new URLSearchParams(currentQueryParams);\n\n params.forEach((value, key) => {\n queryParams[key] = value;\n });\n }\n\n if (currentFragment) {\n fragment = currentFragment.slice(1);\n }\n\n return {\n data,\n pathParams,\n queryParams,\n title,\n fragment,\n };\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable, inject } from '@angular/core';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n combineLatest,\n debounceTime,\n finalize,\n map,\n shareReplay,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { DEFAULT_VIEWPORT_CONFIG, VIEWPORT_CONFIG } from '../constants';\nimport { Memo } from '../decorators/memo';\nimport { Breakpoint } from '../types';\nimport { equal } from '../utils';\nimport { ResizeObserverService } from './resize-observer.service';\nimport { BuildMediaQueryOptions } from './viewport.types';\n\nexport interface Size {\n width: number;\n height: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ViewportService {\n private readonly _resizeObserverService = inject(ResizeObserverService);\n private readonly _viewportConfig = inject(VIEWPORT_CONFIG, { optional: true }) || DEFAULT_VIEWPORT_CONFIG;\n private readonly _breakpointObserver = inject(BreakpointObserver);\n\n private readonly _viewportMonitorStop$ = new Subject<void>();\n private _isViewportMonitorEnabled = false;\n\n private _isXs$ = new BehaviorSubject(this.isMatched({ max: 'xs' }));\n private _isSm$ = new BehaviorSubject(this.isMatched({ min: 'sm', max: 'sm' }));\n private _isMd$ = new BehaviorSubject(this.isMatched({ min: 'md', max: 'md' }));\n private _isLg$ = new BehaviorSubject(this.isMatched({ min: 'lg', max: 'lg' }));\n private _isXl$ = new BehaviorSubject(this.isMatched({ min: 'xl', max: 'xl' }));\n private _is2Xl$ = new BehaviorSubject(this.isMatched({ min: '2xl' }));\n\n private _viewportSize$ = new BehaviorSubject<Size | null>(null);\n private _scrollbarSize$ = new BehaviorSubject<Size | null>(null);\n\n get isXs$() {\n return this._isXs$.asObservable();\n }\n\n get isXs() {\n return this._isXs$.value;\n }\n\n get isSm$() {\n return this._isSm$.asObservable();\n }\n\n get isSm() {\n return this._isSm$.value;\n }\n\n get isMd$() {\n return this._isMd$.asObservable();\n }\n\n get isMd() {\n return this._isMd$.value;\n }\n\n get isLg$() {\n return this._isLg$.asObservable();\n }\n\n get isLg() {\n return this._isLg$.value;\n }\n\n get isXl$() {\n return this._isXl$.asObservable();\n }\n\n get isXl() {\n return this._isXl$.value;\n }\n\n get is2Xl$() {\n return this._is2Xl$.asObservable();\n }\n\n get is2Xl() {\n return this._is2Xl$.value;\n }\n\n get viewportSize$() {\n return this._viewportSize$.asObservable();\n }\n\n get viewportSize() {\n return this._viewportSize$.value;\n }\n\n get scrollbarSize$() {\n return this._scrollbarSize$.asObservable();\n }\n\n get scrollbarSize() {\n return this._scrollbarSize$.value;\n }\n\n currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(\n map((val) => this.getCurrentViewport(val)),\n debounceTime(0),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n get currentViewport() {\n return this.getCurrentViewport([this.isXs, this.isSm, this.isMd, this.isLg, this.isXl, this.is2Xl]);\n }\n\n constructor() {\n this._observeDefaultBreakpoints();\n }\n\n observe(options: { min?: number | Breakpoint; max?: number | Breakpoint }): Observable<boolean> {\n const mediaQuery = this._buildMediaQuery(options);\n\n return this._breakpointObserver.observe(mediaQuery).pipe(\n map((x) => x.matches),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n isMatched(options: { min?: number | Breakpoint; max?: number | Breakpoint }): boolean {\n const mediaQuery = this._buildMediaQuery(options);\n\n return this._breakpointObserver.isMatched(mediaQuery);\n }\n\n /**\n * Applies size CSS variables to the documentElement in pixels.\n * - `--et-vw`: viewport width excluding scrollbar width\n * - `--et-vh`: viewport height excluding scrollbar height\n * - `--et-sw`: scrollbar width\n * - `--et-sh`: scrollbar height\n */\n monitorViewport() {\n if (this._isViewportMonitorEnabled) return;\n\n this._isViewportMonitorEnabled = true;\n\n this._resizeObserverService\n .observe(document.documentElement)\n .pipe(\n tap((e) => {\n const entry = e[0];\n\n if (!entry) return;\n\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n\n const obj = { width, height };\n\n if (equal(obj, this._viewportSize$.value)) return;\n\n document.documentElement.style.setProperty('--et-vw', `${obj.width}px`);\n document.documentElement.style.setProperty('--et-vh', `${obj.height}px`);\n\n this._viewportSize$.next(obj);\n }),\n finalize(() => {\n document.documentElement.style.removeProperty('--et-vw');\n document.documentElement.style.removeProperty('--et-vh');\n\n this._viewportSize$.next(null);\n }),\n takeUntil(this._viewportMonitorStop$),\n )\n .subscribe();\n\n const scrollbarRuler = document.createElement('div');\n scrollbarRuler.style.width = '100px';\n scrollbarRuler.style.height = '100px';\n scrollbarRuler.style.overflow = 'scroll';\n scrollbarRuler.style.position = 'absolute';\n scrollbarRuler.style.top = '-9999px';\n document.body.appendChild(scrollbarRuler);\n\n this._resizeObserverService\n .observe(scrollbarRuler)\n .pipe(\n tap((e) => {\n const entry = e[0];\n\n if (!entry) return;\n\n const size = entry.contentRect.width;\n\n const obj = { width: 100 - size, height: 100 - size };\n\n if (equal(obj, this._scrollbarSize$.value)) return;\n\n document.documentElement.style.setProperty('--et-sw', `${obj.width}px`);\n document.documentElement.style.setProperty('--et-sh', `${obj.height}px`);\n\n this._scrollbarSize$.next(obj);\n }),\n finalize(() => {\n document.body.removeChild(scrollbarRuler);\n document.documentElement.style.removeProperty('--et-vw');\n document.documentElement.style.removeProperty('--et-vh');\n\n this._scrollbarSize$.next(null);\n }),\n takeUntil(this._viewportMonitorStop$),\n )\n .subscribe();\n }\n\n unmonitorViewport() {\n this._viewportMonitorStop$.next();\n this._isViewportMonitorEnabled = false;\n }\n\n @Memo()\n getBreakpointSize(type: Breakpoint, option: 'min' | 'max') {\n const index = option === 'min' ? 0 : 1;\n const size = this._viewportConfig.breakpoints[type][index];\n\n if (size === Infinity || size === 0) {\n return size;\n }\n\n if (option === 'min') {\n return size;\n }\n\n // Due to scaling, the actual size of the viewport may be a decimal number.\n // Eg. on Windows 11 with 150% scaling, the viewport size may be 1535.33px\n // and thus not matching any of the default breakpoints.\n return size + 0.9;\n }\n\n private _observeDefaultBreakpoints() {\n this.observe({ max: 'xs' }).subscribe(this._isXs$);\n this.observe({ min: 'sm', max: 'sm' }).subscribe(this._isSm$);\n this.observe({ min: 'md', max: 'md' }).subscribe(this._isMd$);\n this.observe({ min: 'lg', max: 'lg' }).subscribe(this._isLg$);\n this.observe({ min: 'xl', max: 'xl' }).subscribe(this._isXl$);\n this.observe({ min: '2xl' }).subscribe(this._is2Xl$);\n }\n\n @Memo({\n resolver: (v: BuildMediaQueryOptions) => {\n return `${v.min ?? ''}-${v.max ?? ''}`;\n },\n })\n private _buildMediaQuery(options: BuildMediaQueryOptions) {\n if (!options.min && !options.max) {\n throw new Error('At least one of min or max must be defined');\n }\n\n const mediaQueryParts: string[] = [];\n\n if (options.min) {\n if (typeof options.min === 'number') {\n mediaQueryParts.push(`(min-width: ${options.min}px)`);\n } else {\n mediaQueryParts.push(`(min-width: ${this.getBreakpointSize(options.min, 'min')}px)`);\n }\n }\n\n if (options.min && options.max) {\n mediaQueryParts.push('and');\n }\n\n if (options.max) {\n if (typeof options.max === 'number') {\n mediaQueryParts.push(`(max-width: ${options.max}px)`);\n } else {\n mediaQueryParts.push(`(max-width: ${this.getBreakpointSize(options.max, 'max')}px)`);\n }\n }\n\n return mediaQueryParts.join(' ');\n }\n\n private getCurrentViewport([isXs, isSm, isMd, isLg, isXl, is2Xl]: [\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n ]): Breakpoint {\n if (isXs) {\n return 'xs';\n } else if (isSm) {\n return 'sm';\n } else if (isMd) {\n return 'md';\n } else if (isLg) {\n return 'lg';\n } else if (isXl) {\n return 'xl';\n } else if (is2Xl) {\n return '2xl';\n }\n\n return 'xs';\n }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n EffectRef,\n ElementRef,\n Injector,\n NgZone,\n QueryList,\n Renderer2,\n RendererStyleFlags2,\n Signal,\n WritableSignal,\n afterNextRender,\n computed,\n effect,\n inject,\n isDevMode,\n isSignal,\n runInInjectionContext,\n signal,\n untracked,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { AbstractControl, FormControl } from '@angular/forms';\nimport { NavigationEnd, Router } from '@angular/router';\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n pairwise,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { ET_PROPERTY_REMOVED, RouterState, ViewportService } from '../services';\nimport { Breakpoint } from '../types';\nimport { nextFrame } from './animation.utils';\nimport { equal } from './equal.util';\nimport { isElementVisible } from './scrollable.utils';\n\ntype SignalElementBindingComplexType =\n | HTMLElement\n | ElementRef<HTMLElement>\n | QueryList<ElementRef<HTMLElement> | HTMLElement>\n | Array<ElementRef<HTMLElement> | HTMLElement>\n | null\n | undefined;\n\ntype SignalElementBindingType =\n | HTMLElement\n | ElementRef<HTMLElement>\n | Observable<SignalElementBindingComplexType>\n | Signal<SignalElementBindingComplexType>\n | QueryList<ElementRef<HTMLElement> | HTMLElement>\n | ElementSignal;\n\ntype ElementSignal = Signal<{\n /** @deprecated Always use currentElements */\n currentElement: HTMLElement | null;\n\n /** @deprecated Always use previousElements */\n previousElement: HTMLElement | null;\n currentElements: HTMLElement[];\n previousElements: HTMLElement[];\n}>;\n\ntype ElementSignalValue = ReturnType<ElementSignal>;\n\nfunction isElementSignal(el: unknown): el is ElementSignal {\n if (isSignal(el)) {\n const val = el();\n return typeof val === 'object' && val !== null && 'currentElement' in val && 'previousElement' in val;\n }\n\n return false;\n}\n\nconst documentElementSignal = (): ElementSignal =>\n signal({\n currentElement: document.documentElement,\n previousElement: null,\n currentElements: [document.documentElement],\n previousElements: [],\n });\n\nconst buildElementSignal = (el: SignalElementBindingType | null | undefined): ElementSignal => {\n if (el === null || el === undefined) {\n return signal({ currentElement: null, previousElement: null, currentElements: [], previousElements: [] });\n }\n\n if (isElementSignal(el)) {\n return el;\n }\n\n let mElSignal: Signal<HTMLElement[] | null> | null = null;\n\n const switchElement = () =>\n switchMap((elOrRef: SignalElementBindingComplexType) => {\n if (elOrRef instanceof QueryList) {\n return elOrRef.changes.pipe(\n startWith(elOrRef),\n map(() => elOrRef.toArray().map((r) => coerceElement(r))),\n );\n } else if (Array.isArray(elOrRef)) {\n return of(elOrRef.map((r) => coerceElement(r)));\n } else {\n const coercedEl = coerceElement(elOrRef);\n return of(coercedEl ? [coercedEl] : null);\n }\n });\n\n if (el instanceof Observable) {\n mElSignal = toSignal(el.pipe(switchElement()), { initialValue: null });\n } else if (isSignal(el)) {\n mElSignal = toSignal(toObservable(el).pipe(switchElement()), { initialValue: null });\n } else if (el instanceof QueryList) {\n mElSignal = toSignal(\n el.changes.pipe(\n startWith(el),\n map(() => el.toArray().map((r) => coerceElement(r))),\n ),\n { initialValue: null },\n );\n } else {\n mElSignal = signal([coerceElement(el)]);\n }\n\n const elSig = toSignal(\n toObservable(mElSignal).pipe(\n startWith(null),\n pairwise(),\n map(([previousElements, currentElements]) => ({\n previousElements: previousElements ?? [],\n currentElements: currentElements ?? [],\n currentElement: currentElements?.[0] ?? null,\n previousElement: previousElements?.[0] ?? null,\n })),\n ),\n { initialValue: { currentElement: null, previousElement: null, previousElements: [], currentElements: [] } },\n );\n\n return computed(() => elSig(), {\n equal: (a, b) =>\n a.currentElement === b.currentElement &&\n a.previousElement === b.previousElement &&\n a.currentElements.length === b.currentElements.length &&\n a.currentElements.every((v, i) => v === b.currentElements[i]) &&\n a.previousElements.length === b.previousElements.length &&\n a.previousElements.every((v, i) => v === b.previousElements[i]),\n });\n};\n\nconst firstElementSignal = (el: ElementSignal) => {\n return computed(\n () => {\n const current = el();\n\n if (current.currentElements.length > 1) {\n console.warn(\n 'More than one element is bound to the signal. Only the first element will be used.',\n current.currentElements,\n );\n }\n\n const curr = current.currentElements[0] ?? null;\n const prev = current.previousElements[0] ?? null;\n\n return { currentElement: curr, previousElement: prev };\n },\n { equal: (a, b) => a.currentElement === b.currentElement && a.previousElement === b.previousElement },\n );\n};\n\nexport interface BuildSignalEffectsConfig<T extends Record<string, Signal<unknown>>> {\n /** The tokens to apply and their signal value */\n tokenMap: T;\n\n /** This function will be invoked for elements that were removed from the signal effects */\n cleanupFn: (el: HTMLElement, tokens: string[]) => void;\n\n /** This function will be invoked for elements that were added to the signal effects or when their signal value changes */\n updateFn: (el: HTMLElement, tokens: string[], conditionResult: unknown) => void;\n}\n\nexport const buildSignalEffects = <T extends Record<string, Signal<unknown>>>(\n el: SignalElementBindingType,\n config: BuildSignalEffectsConfig<T>,\n) => {\n const elements = buildElementSignal(el);\n const injector = inject(Injector);\n\n effect(() => {\n const { currentElements, previousElements } = elements();\n\n for (const previousEl of previousElements) {\n if (currentElements.includes(previousEl)) continue;\n\n const tokens = Object.keys(config.tokenMap)\n .map((key) => key.split(' '))\n .flat();\n\n if (!tokens.length) continue;\n\n config.cleanupFn(previousEl, tokens);\n }\n\n for (const currentEl of currentElements) {\n if (previousElements.includes(currentEl)) continue;\n\n for (const [tokens, condition] of Object.entries(config.tokenMap)) {\n untracked(() => {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) return;\n\n config.updateFn(currentEl, tokenArray, condition());\n });\n }\n }\n });\n\n const effects: Record<string, EffectRef> = {};\n\n const has = (tokens: string) => tokens in effects;\n\n const push = (tokens: string, signal: Signal<unknown>) => {\n if (has(tokens)) return;\n\n runInInjectionContext(injector, () => {\n effects[tokens] = effect(() => {\n const { currentElements } = untracked(() => elements());\n const value = signal();\n\n for (const el of currentElements) {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) continue;\n\n config.updateFn(el, tokenArray, value);\n }\n });\n });\n };\n\n const pushMany = (map: Record<string, Signal<unknown>>) => {\n for (const [tokens, signal] of Object.entries(map)) {\n push(tokens, signal);\n }\n };\n\n const remove = (tokens: string) => {\n effects[tokens]?.destroy();\n\n delete effects[tokens];\n\n for (const el of elements().currentElements) {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) continue;\n\n config.cleanupFn(el, tokenArray);\n }\n };\n\n const removeMany = (tokens: string[]) => {\n for (const token of tokens) {\n remove(token);\n }\n };\n\n pushMany(config.tokenMap);\n\n return { remove, removeMany, has, push, pushMany };\n};\n\nexport const signalIsRendered = () => {\n const isRendered = signal(false);\n\n afterNextRender(() => isRendered.set(true));\n\n return isRendered.asReadonly();\n};\n\nexport const signalClasses = <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, classMap: T) => {\n const renderer = inject(Renderer2);\n\n return buildSignalEffects(el, {\n tokenMap: classMap,\n cleanupFn: (el, tokens) => tokens.forEach((token) => renderer.removeClass(el, token)),\n updateFn: (el, tokens, condition) => {\n if (!condition) {\n tokens.forEach((token) => renderer.removeClass(el, token));\n } else {\n tokens.forEach((token) => renderer.addClass(el, token));\n }\n },\n });\n};\n\nexport const signalHostClasses = <T extends Record<string, Signal<unknown>>>(classMap: T) =>\n signalClasses(inject(ElementRef), classMap);\n\nconst ALWAYS_TRUE_ATTRIBUTE_KEYS = ['disabled', 'readonly', 'required', 'checked', 'selected', 'hidden', 'inert'];\n\nexport const signalAttributes = <T extends Record<string, Signal<unknown>>>(\n el: SignalElementBindingType,\n attributeMap: T,\n) => {\n const renderer = inject(Renderer2);\n\n return buildSignalEffects(el, {\n tokenMap: attributeMap,\n cleanupFn: (el, tokens) => tokens.forEach((token) => el.removeAttribute(token)),\n updateFn: (el, tokens, condition) => {\n for (const token of tokens) {\n if (ALWAYS_TRUE_ATTRIBUTE_KEYS.includes(token)) {\n if (condition) {\n renderer.setAttribute(el, token, '');\n } else {\n renderer.removeAttribute(el, token);\n }\n continue;\n }\n\n if (condition === null || condition === undefined) {\n renderer.removeAttribute(el, token);\n } else {\n renderer.setAttribute(el, token, `${condition}`);\n }\n }\n },\n });\n};\n\nexport const signalHostAttributes = <T extends Record<string, Signal<unknown>>>(attributeMap: T) =>\n signalAttributes(inject(ElementRef), attributeMap);\n\nexport const signalStyles = <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, styleMap: T) => {\n const renderer = inject(Renderer2);\n\n return buildSignalEffects(el, {\n tokenMap: styleMap,\n cleanupFn: (el, tokens) => tokens.forEach((token) => renderer.removeStyle(el, token, RendererStyleFlags2.DashCase)),\n updateFn: (el, tokens, condition) => {\n for (const token of tokens) {\n if (condition === null || condition === undefined) {\n renderer.removeStyle(el, token, RendererStyleFlags2.DashCase);\n } else {\n renderer.setStyle(el, token, `${condition}`, RendererStyleFlags2.DashCase);\n }\n }\n },\n });\n};\n\nexport const signalHostStyles = <T extends Record<string, Signal<unknown>>>(styleMap: T) =>\n signalStyles(inject(ElementRef), styleMap);\n\nexport interface LogicalSize {\n inlineSize: number;\n blockSize: number;\n}\n\nexport type ElementRect = {\n bottom: number;\n height: number;\n left: number;\n right: number;\n top: number;\n width: number;\n x: number;\n y: number;\n};\n\nexport type ElementSize = {\n width: number;\n height: number;\n};\n\nexport const boundingClientRectToElementRect = (rect: DOMRectReadOnly): ElementRect => ({\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width,\n x: rect.x,\n y: rect.y,\n});\n\nexport const createElementDimensions = (el: HTMLElement | null, rect?: DOMRect): NullableElementDimensions => {\n if (!el) {\n return {\n rect: null,\n client: null,\n scroll: null,\n offset: null,\n };\n }\n\n const cachedNormalizedRect = rect ? boundingClientRectToElementRect(rect) : null;\n const rectFn = () =>\n cachedNormalizedRect ? cachedNormalizedRect : boundingClientRectToElementRect(el.getBoundingClientRect());\n\n return {\n rect: rectFn,\n client: { width: el.clientWidth, height: el.clientHeight },\n scroll: { width: el.scrollWidth, height: el.scrollHeight },\n offset: { width: el.offsetWidth, height: el.offsetHeight },\n };\n};\n\nexport type ElementDimensions = {\n rect: () => ElementRect;\n client: ElementSize;\n scroll: ElementSize;\n offset: ElementSize;\n};\n\nexport type NullableElementDimensions = {\n [K in keyof ElementDimensions]: ElementDimensions[K] | null;\n};\n\nexport const signalElementDimensions = (el: SignalElementBindingType) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n\n const initialValue = () => createElementDimensions(elements().currentElement);\n\n const elementDimensionsSignal = signal<NullableElementDimensions>(initialValue());\n\n const observer = new ResizeObserver((e) => {\n if (!isRendered()) return;\n\n const entry = e[0];\n\n if (entry) {\n const target = entry.target as HTMLElement;\n const newDimensions = createElementDimensions(target);\n\n zone.run(() => elementDimensionsSignal.set(newDimensions));\n }\n });\n\n effect(\n () => {\n const els = elements();\n\n untracked(() => {\n elementDimensionsSignal.set(initialValue());\n\n if (els.previousElement) {\n observer.disconnect();\n }\n\n if (els.currentElement) {\n const computedDisplay = getComputedStyle(els.currentElement).display;\n const currentElIsAngularComponent = els.currentElement?.tagName.toLowerCase().includes('-');\n\n if (computedDisplay === 'inline' && isDevMode() && currentElIsAngularComponent) {\n console.error(\n `Element <${els.currentElement?.tagName.toLowerCase()}> is an Angular component and has a display of 'inline'. Inline elements cannot be observed for dimensions. Please change it to 'block' or something else.`,\n );\n }\n\n observer.observe(els.currentElement);\n }\n });\n },\n { allowSignalWrites: true },\n );\n\n destroyRef.onDestroy(() => observer.disconnect());\n\n return computed(() => elementDimensionsSignal(), {\n equal: (a, b) => equal(a, b),\n });\n};\n\nexport const signalHostElementDimensions = () => signalElementDimensions(inject(ElementRef));\n\nexport const signalElementMutations = (el: SignalElementBindingType, options?: MutationObserverInit) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n\n const elementMutationsSignal = signal<MutationRecord | null>(null);\n\n const observer = new MutationObserver((e) => {\n if (!isRendered()) return;\n\n const entry = e[0];\n\n if (entry) {\n zone.run(() => elementMutationsSignal.set(entry));\n }\n });\n\n effect(\n () => {\n const els = elements();\n\n elementMutationsSignal.set(null);\n\n if (els.previousElement) {\n observer.disconnect();\n }\n\n if (els.currentElement) {\n observer.observe(els.currentElement, options);\n }\n },\n { allowSignalWrites: true },\n );\n\n destroyRef.onDestroy(() => observer.disconnect());\n\n return elementMutationsSignal.asReadonly();\n};\n\nexport const signalHostElementMutations = (options?: MutationObserverInit) =>\n signalElementMutations(inject(ElementRef), options);\n\nexport type SignalElementScrollStateOptions = {\n /** The initial scroll position to scroll to. Once a truthy value get's emitted, all further values will be ignored. */\n initialScrollPosition?: Signal<ScrollToOptions | null>;\n};\n\nexport type ElementScrollState = {\n canScroll: boolean;\n canScrollHorizontally: boolean;\n canScrollVertically: boolean;\n elementDimensions: NullableElementDimensions;\n};\n\nexport const areScrollStatesEqual = (a: ElementScrollState, b: ElementScrollState) => {\n return (\n a.canScroll === b.canScroll &&\n a.canScrollHorizontally === b.canScrollHorizontally &&\n a.canScrollVertically === b.canScrollVertically &&\n equal(a.elementDimensions, b.elementDimensions)\n );\n};\n\nexport const signalElementScrollState = (el: SignalElementBindingType, options?: SignalElementScrollStateOptions) => {\n const elements = buildElementSignal(el);\n const observedEl = firstElementSignal(elements);\n const elementDimensions = signalElementDimensions(elements);\n const elementMutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });\n const isRendered = signalIsRendered();\n\n const initialScrollPosition = options?.initialScrollPosition;\n\n if (initialScrollPosition) {\n const ref = effect(() => {\n if (!isRendered()) return;\n\n const scrollPosition = initialScrollPosition();\n const element = observedEl().currentElement;\n\n if (scrollPosition && element) {\n if (scrollPosition.left !== undefined) element.scrollLeft = scrollPosition.left;\n if (scrollPosition.top !== undefined) element.scrollTop = scrollPosition.top;\n ref.destroy();\n }\n });\n }\n\n const notScrollable = (dimensions: NullableElementDimensions) => ({\n canScroll: false,\n canScrollHorizontally: false,\n canScrollVertically: false,\n elementDimensions: dimensions,\n });\n\n return computed<ElementScrollState>(\n () => {\n const element = observedEl().currentElement;\n const dimensions = elementDimensions();\n\n // We are not interested what the mutation is, just that there is one.\n // Changes to the DOM can affect the scroll state of the element.\n elementMutations();\n\n if (!element || !isRendered()) return notScrollable(dimensions);\n\n const { scrollWidth, scrollHeight, clientHeight, clientWidth } = element;\n\n const canScrollHorizontally = scrollWidth > clientWidth;\n const canScrollVertically = scrollHeight > clientHeight;\n\n return {\n canScroll: canScrollHorizontally || canScrollVertically,\n canScrollHorizontally,\n canScrollVertically,\n elementDimensions: dimensions,\n };\n },\n { equal: (a, b) => areScrollStatesEqual(a, b) },\n );\n};\n\nexport const signalHostElementScrollState = () => signalElementScrollState(inject(ElementRef));\n\nexport type SignalElementIntersectionOptions = Omit<IntersectionObserverInit, 'root'> & {\n root?: SignalElementBindingType;\n enabled?: Signal<boolean>;\n};\n\nexport const signalElementIntersection = (el: SignalElementBindingType, options?: SignalElementIntersectionOptions) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const root = firstElementSignal(options?.root ? buildElementSignal(options?.root) : documentElementSignal());\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n const isEnabled = options?.enabled ?? signal(true);\n\n const elementIntersectionSignal = signal<IntersectionObserverEntry[]>([]);\n const observer = signal<IntersectionObserver | null>(null);\n\n const currentlyObservedElements = new Set<HTMLElement>();\n\n const updateIntersections = (entries: IntersectionObserverEntry[]) => {\n let currentValues = [...elementIntersectionSignal()];\n\n for (const entry of entries) {\n const existingEntryIndex = currentValues.findIndex((v) => v.target === entry.target);\n\n // Round the intersection ratio to the nearest 0.01 to avoid floating point errors and system scaling issues.\n const roundedIntersectionRatio = Math.round(entry.intersectionRatio * 100) / 100;\n\n const intersectionEntry: IntersectionObserverEntry = {\n boundingClientRect: entry.boundingClientRect,\n intersectionRatio: roundedIntersectionRatio,\n intersectionRect: entry.intersectionRect,\n isIntersecting: entry.isIntersecting,\n rootBounds: entry.rootBounds,\n target: entry.target,\n time: entry.time,\n };\n\n if (existingEntryIndex !== -1) {\n currentValues = [\n ...currentValues.slice(0, existingEntryIndex),\n intersectionEntry,\n ...currentValues.slice(existingEntryIndex + 1),\n ];\n } else {\n currentValues = [...currentValues, intersectionEntry];\n }\n }\n\n zone.run(() => elementIntersectionSignal.set(currentValues));\n };\n\n const updateIntersectionObserver = (rendered: boolean, enabled: boolean, rootEl: HTMLElement | null) => {\n observer()?.disconnect();\n currentlyObservedElements.clear();\n\n if (!rendered || !enabled || !rootEl) {\n observer.set(null);\n return;\n }\n\n const newObserver = new IntersectionObserver((entries) => updateIntersections(entries), {\n ...options,\n root: rootEl,\n });\n\n observer.set(newObserver);\n };\n\n const updateObservedElements = (observer: IntersectionObserver | null, elements: ElementSignalValue) => {\n const rootEl = root().currentElement;\n\n if (!observer || !rootEl) return;\n\n const rootBounds = rootEl.getBoundingClientRect();\n\n const currIntersectionValue = elementIntersectionSignal();\n const newIntersectionValue: IntersectionObserverEntry[] = [];\n\n for (const el of elements.currentElements) {\n if (currentlyObservedElements.has(el)) {\n const existingEntryIndex = currIntersectionValue.findIndex((v) => v.target === el);\n const existingEntry = currIntersectionValue[existingEntryIndex];\n\n if (!existingEntry) {\n console.warn('Could not find existing entry for element. The intersection observer might be broken now.', el);\n continue;\n }\n\n newIntersectionValue.push(existingEntry);\n continue;\n }\n\n const elBounds = el.getBoundingClientRect();\n\n const initialElementVisibility = isElementVisible({\n container: rootEl,\n element: el,\n containerRect: rootBounds,\n elementRect: elBounds,\n });\n\n if (!initialElementVisibility) {\n console.error('No visibility data found for element.', {\n element: el,\n container: rootEl,\n });\n\n continue;\n }\n\n const intersectionEntry: IntersectionObserverEntry = {\n boundingClientRect: elBounds,\n intersectionRatio: initialElementVisibility.intersectionRatio,\n intersectionRect: elBounds,\n isIntersecting: initialElementVisibility.isIntersecting,\n rootBounds: rootBounds,\n target: el,\n time: performance.now(),\n };\n\n newIntersectionValue.push(intersectionEntry);\n\n currentlyObservedElements.add(el);\n observer.observe(el);\n }\n\n for (const el of elements.previousElements) {\n if (elements.currentElements.includes(el)) continue;\n\n observer.unobserve(el);\n currentlyObservedElements.delete(el);\n }\n\n elementIntersectionSignal.set(newIntersectionValue);\n };\n\n effect(\n () => {\n const rootEl = root().currentElement;\n const rendered = isRendered();\n const enabled = isEnabled();\n\n untracked(() => updateIntersectionObserver(rendered, enabled, rootEl));\n },\n { allowSignalWrites: true },\n );\n\n effect(() => {\n const els = elements();\n const obs = observer();\n\n untracked(() => updateObservedElements(obs, els));\n });\n\n destroyRef.onDestroy(() => observer()?.disconnect());\n\n return elementIntersectionSignal.asReadonly();\n};\n\nexport const signalHostElementIntersection = (options?: SignalElementIntersectionOptions) =>\n signalElementIntersection(inject(ElementRef), options);\n\nexport const signalElementChildren = (el: SignalElementBindingType) => {\n const elements = buildElementSignal(el);\n const isRendered = signalIsRendered();\n const elementMutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });\n\n return computed(\n () => {\n if (!isRendered()) return [];\n\n const els = elements();\n\n // We are not interested what the mutation is, just that there is one.\n // Changes to the DOM may affect the children of the element.\n elementMutations();\n\n if (!els.currentElement) return [];\n\n const children: HTMLElement[] = [];\n\n for (let index = 0; index < els.currentElement.children.length; index++) {\n const element = els.currentElement.children[index];\n\n if (element instanceof HTMLElement) {\n children.push(element);\n }\n }\n\n return children;\n },\n { equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]) },\n );\n};\n\nexport const previousSignalValue = <T>(signal: Signal<T>) => {\n const obs = toObservable(signal).pipe(\n pairwise(),\n map(([prev]) => prev),\n );\n\n return toSignal(obs);\n};\n\nexport type SyncSignalOptions = {\n /**\n * If true, the target signal will not be updated with the source signal's value in a sync operation.\n * This should be set to true for signals that need to be initialized first before syncing (eg. required inputs)\n * @default false\n */\n skipSyncRead?: boolean;\n};\n\nexport const syncSignal = <T>(from: Signal<T>, to: WritableSignal<T>, options?: SyncSignalOptions) => {\n let isFirstRun = options?.skipSyncRead ? false : true;\n\n if (!options?.skipSyncRead) {\n try {\n // this might throw if the signal is not yet initialized (eg. a required signal input inside the constructor)\n // in that case we just skip the initial sync\n to.set(from());\n } catch {\n isFirstRun = false;\n\n if (isDevMode()) {\n console.warn('Failed to sync signals. The target signal is not yet initialized.', { from, to });\n }\n }\n }\n\n const ref = effect(() => {\n const formVal = from();\n\n if (isFirstRun) {\n isFirstRun = false;\n return;\n }\n\n untracked(() => {\n to.set(formVal);\n });\n });\n\n return ref;\n};\n\nexport interface ControlValueSignalOptions {\n debounceTime?: number;\n\n /**\n * @default false\n */\n debounceFirst?: boolean;\n}\n\nexport const controlValueSignal = <\n T extends Signal<AbstractControl | null> | AbstractControl,\n J extends T extends Signal<infer I> ? I : T,\n>(\n control: T,\n options?: ControlValueSignalOptions,\n) => {\n const initialValue = deferredSignal(() => (isSignal(control) ? control() : (control as AbstractControl)));\n\n const controlStream = isSignal(control)\n ? toObservable<AbstractControl | null>(control)\n : of<AbstractControl | null>(control);\n\n const controlObs = controlStream.pipe(\n switchMap((control) => {\n if (!control) return of(null);\n\n const vcsObs = options?.debounceTime\n ? control.valueChanges.pipe(debounceTime(options.debounceTime))\n : control.valueChanges;\n\n return vcsObs.pipe(map(() => control.getRawValue()));\n }),\n );\n\n const isRendered = toObservable(signalIsRendered()).pipe(filter((v) => v));\n const obs: Observable<ReturnType<NonNullable<J>['getRawValue']>> = !options?.debounceFirst\n ? isRendered.pipe(switchMap(() => merge(of(initialValue()?.getRawValue()), controlObs)))\n : isRendered.pipe(switchMap(() => controlObs));\n\n return toSignal(obs.pipe(distinctUntilChanged((a, b) => equal(a, b))), {\n initialValue: null,\n });\n};\n\n/**\n * The first item in the pair is the previous value and the second item is the current value.\n */\nexport const controlValueSignalWithPrevious = <T extends AbstractControl>(\n control: T,\n options?: ControlValueSignalOptions,\n) => {\n const obs = toObservable(controlValueSignal(control, options)).pipe(\n pairwise(),\n startWith([null, control.getRawValue()]),\n );\n\n return toSignal(obs, { requireSync: true });\n};\n\n/**\n * @deprecated Use `controlValueSignal` instead with `debounceTime` option.\n */\nexport interface DebouncedControlValueSignalOptions {\n /**\n * @default 300\n */\n debounceTime?: number;\n}\n\n/**\n * @deprecated Use `controlValueSignal` instead with `debounceTime` set to `300` and `debounceFirst` set to `true`.\n */\nexport const debouncedControlValueSignal = <T extends FormControl>(\n control: T,\n options?: DebouncedControlValueSignalOptions,\n) => controlValueSignal(control, options ?? { debounceTime: 300, debounceFirst: true });\n\nexport type InjectUtilConfig = {\n /** The injector to use for the injection. Must be provided if the function is not called from within a injection context. */\n injector?: Injector;\n};\n\nexport type InjectUtilTransformConfig<In, Out> = {\n /**\n * A transform function similar to the `transform` function in Angular input bindings.\n * Can be used to transform the value before it is returned.\n * E.g. transforming `\"true\"` to `true` for a boolean attribute.\n */\n transform?: (value: In) => Out;\n};\n\nexport const transformOrReturn = <In, Out>(src: Signal<In>, config?: InjectUtilTransformConfig<In, Out>) => {\n const transformer = config?.transform;\n\n if (transformer) {\n return computed(() => transformer(src()));\n }\n\n return src as unknown as Signal<Out>;\n};\n\n/** Inject the current router event */\nexport const injectRouterEvent = () => {\n const router = inject(Router);\n\n return toSignal(router.events, { initialValue: null });\n};\n\n/**\n * Inject the current url.\n * The url includes query params as well as the fragment. Use `injectRoute` instead if you are not intrusted in those.\n * @example \"/my-page?query=1¶m=true#fragment\"\n */\nexport const injectUrl = () => {\n const event = injectRouterEvent();\n const router = inject(Router);\n\n const url = signal(router.url);\n\n effect(() => {\n const currentEvent = event();\n\n untracked(() => {\n if (currentEvent instanceof NavigationEnd) {\n url.set(currentEvent.urlAfterRedirects);\n }\n });\n });\n\n return url.asReadonly();\n};\n\n/**\n * Inject the current route\n * @example \"/my-page\"\n */\nexport const injectRoute = () => {\n const url = injectUrl();\n\n return computed(() => {\n const fullUrl = url();\n const urlWithoutQueryParams = fullUrl.split('?')[0] ?? '';\n const withoutFragment = urlWithoutQueryParams.split('#')[0] ?? '';\n\n return withoutFragment;\n });\n};\n\nconst createRouterState = (router: Router) => {\n let route = router.routerState.snapshot.root;\n\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n const { data, params, queryParams, title, fragment } = route;\n\n return {\n data,\n pathParams: params,\n queryParams,\n title: title ?? null,\n fragment,\n };\n};\n\n/**\n * Inject the complete router state. This includes the current route data, path params, query params, title and fragment.\n */\nexport const injectRouterState = () => {\n const url = injectUrl();\n const router = inject(Router);\n\n const routerState = signal<RouterState>(createRouterState(router));\n\n effect(() => {\n url();\n\n untracked(() => routerState.set(createRouterState(router)));\n });\n\n return routerState.asReadonly();\n};\n\n/** Inject a signal containing the current route fragment (the part after the # inside the url if present) */\nexport const injectFragment = <T = string | null>(\n config?: InjectUtilConfig & InjectUtilTransformConfig<string | null, T>,\n) => {\n const routerState = injectRouterState();\n const fragment = computed(() => routerState().fragment);\n\n return transformOrReturn(fragment, config);\n};\n\n/** Inject all currently available query parameters as a signal */\nexport const injectQueryParams = () => {\n const routerState = injectRouterState();\n\n const queryParams = computed(() => routerState().queryParams);\n\n return queryParams;\n};\n\n/** Inject all currently available route data as a signal */\nexport const injectRouteData = () => {\n const routerState = injectRouterState();\n\n const data = computed(() => routerState().data);\n\n return data;\n};\n\n/** Inject the current route title as a signal */\nexport const injectRouteTitle = <T = string | null>(config?: InjectUtilTransformConfig<string | null, T>) => {\n const routerState = injectRouterState();\n const title = computed(() => routerState().title);\n\n return transformOrReturn(title, config);\n};\n\n/** Inject all currently available path parameters as a signal */\nexport const injectPathParams = () => {\n const routerState = injectRouterState();\n\n const pathParams = computed(() => routerState().pathParams);\n\n return pathParams;\n};\n\n/** Inject a specific query parameter as a signal */\nexport const injectQueryParam = <T = string | null>(\n key: string,\n config?: InjectUtilTransformConfig<string | null, T>,\n) => {\n const queryParams = injectQueryParams();\n const src = computed(() => queryParams()[key] ?? null) as Signal<string | null>;\n\n return transformOrReturn(src, config);\n};\n\n/** Inject a specific route data item as a signal */\nexport const injectRouteDataItem = <T = unknown>(key: string, config?: InjectUtilTransformConfig<unknown, T>) => {\n const data = injectRouteData();\n const src = computed(() => data()[key] ?? null) as Signal<T>;\n\n return transformOrReturn(src, config);\n};\n\n/** Inject a specific path parameter as a signal */\nexport const injectPathParam = <T = string | null>(\n key: string,\n config?: InjectUtilTransformConfig<string | null, T>,\n) => {\n const pathParams = injectPathParams();\n const src = computed(() => pathParams()[key] ?? null) as Signal<string | null>;\n\n return transformOrReturn(src, config);\n};\n\n/**\n * Inject query params that changed during navigation. Unchanged query params will be ignored.\n * Removed query params will be represented by the symbol `ET_PROPERTY_REMOVED`.\n */\nexport const injectQueryParamChanges = () => {\n const queryParams = injectQueryParams();\n const prevQueryParams = previousSignalValue(queryParams);\n\n return computed(() => {\n const current = queryParams();\n const previous = prevQueryParams() ?? {};\n\n const changes: Record<string, unknown> = {};\n\n const allKeys = new Set<keyof typeof previous & keyof typeof current>([\n ...Object.keys(previous),\n ...Object.keys(current),\n ]);\n\n for (const key of allKeys) {\n if (!equal(previous[key], current[key])) {\n const val = current[key] === undefined ? ET_PROPERTY_REMOVED : current[key];\n\n changes[key] = val;\n }\n }\n\n return changes;\n });\n};\n\n/**\n * Inject path params that changed during navigation. Unchanged path params will be ignored.\n * Removed path params will be represented by the symbol `ET_PROPERTY_REMOVED`.\n */\nexport const injectPathParamChanges = () => {\n const pathParams = injectPathParams();\n const prevPathParams = previousSignalValue(pathParams);\n\n return computed(() => {\n const current = pathParams();\n const previous = prevPathParams() ?? {};\n\n const changes: Record<string, unknown> = {};\n\n const allKeys = new Set<keyof typeof previous & keyof typeof current>([\n ...Object.keys(previous),\n ...Object.keys(current),\n ]);\n\n for (const key of allKeys) {\n if (!equal(previous[key], current[key])) {\n const val = current[key] === undefined ? ET_PROPERTY_REMOVED : current[key];\n\n changes[key] = val;\n }\n }\n\n return changes;\n });\n};\n\nexport const createIsRenderedSignal = () => {\n const value = signal(false);\n\n nextFrame(() => {\n if (!value()) {\n console.error(\n 'Render signal was not set to true. This can cause unexpected behavior. Make sure to .bind() the render signal at the end of the constructor.',\n );\n }\n });\n\n return {\n state: value,\n bind: () => effect(() => value.set(true), { allowSignalWrites: true }),\n };\n};\n\nexport const createCanAnimateSignal = () => {\n const value = signal(false);\n\n nextFrame(() => {\n value.set(true);\n });\n\n return {\n state: value.asReadonly(),\n };\n};\n\nexport type CursorDragScrollDirection = 'horizontal' | 'vertical' | 'both';\n\nexport type MaybeSignal<T> = T | Signal<T>;\n\nexport const maybeSignalValue = <T>(value: MaybeSignal<T>) => {\n if (isSignal(value)) {\n return value();\n }\n\n return value;\n};\n\nexport type CursorDragScrollOptions = {\n /** If true, cursor drag scrolling will be enabled. */\n enabled?: Signal<boolean>;\n\n /** The allowed scroll direction. */\n allowedDirection?: MaybeSignal<CursorDragScrollDirection>;\n};\n\n/** The deadzone in pixels after which the cursor drag scroll will take effect. */\nconst CURSOR_DRAG_SCROLL_DEADZONE = 5;\n\n/** The class that is added to the element when the cursor is being dragged. */\nconst CURSOR_DRAG_SCROLLING_CLASS = 'et-cursor-drag-scroll--scrolling';\nconst CURSOR_DRAG_INIT_CLASS = 'et-cursor-drag-scroll--init';\n\n/** A function to apply cursor drag scroll behavior to an element. */\nexport const useCursorDragScroll = (el: SignalElementBindingType, options?: CursorDragScrollOptions) => {\n const elements = buildElementSignal(el);\n const element = firstElementSignal(elements);\n const destroyRef = inject(DestroyRef);\n const { enabled = signal(true), allowedDirection = 'both' } = options ?? {};\n const scrollState = signalElementScrollState(elements);\n const renderer = inject(Renderer2);\n const isDragging = signal(false);\n const isInitDragging = signal(false);\n const initialDragPosition = signal({ x: 0, y: 0 });\n const initialScrollPosition = signal({ x: 0, y: 0 });\n const dragAmount = signal({ x: 0, y: 0 });\n const document = inject(DOCUMENT);\n\n const canScroll = computed(() => {\n const currentScrollState = scrollState();\n const direction = maybeSignalValue(allowedDirection);\n\n switch (direction) {\n case 'both':\n return currentScrollState.canScrollHorizontally || currentScrollState.canScrollVertically;\n case 'horizontal':\n return currentScrollState.canScrollHorizontally;\n case 'vertical':\n return currentScrollState.canScrollVertically;\n }\n });\n\n // Cleanup if the element the cursor drag scroll is bound to gets changed\n effect(() => {\n const { previousElement } = element();\n\n if (previousElement) {\n renderer.removeStyle(previousElement, 'cursor');\n }\n });\n\n // Conditionally apply styles/classes to the element and the document\n effect(() => {\n const currCanScroll = canScroll();\n const isEnabled = enabled();\n const currIsDragging = isDragging();\n const currIsInitDragging = isInitDragging();\n\n untracked(() => {\n const el = element().currentElement;\n\n if (!el) return;\n\n if (!currCanScroll || !isEnabled) {\n renderer.removeStyle(el, 'cursor');\n renderer.removeStyle(el, 'scrollSnapType');\n renderer.removeStyle(el, 'scrollBehavior');\n renderer.removeClass(el, CURSOR_DRAG_SCROLLING_CLASS);\n renderer.removeClass(el, CURSOR_DRAG_INIT_CLASS);\n renderer.removeStyle(document.documentElement, 'cursor');\n return;\n }\n\n if (currIsInitDragging) {\n renderer.addClass(el, CURSOR_DRAG_INIT_CLASS);\n }\n\n if (currIsDragging) {\n renderer.addClass(el, CURSOR_DRAG_SCROLLING_CLASS);\n renderer.setStyle(el, 'scrollSnapType', 'none');\n renderer.setStyle(el, 'scrollBehavior', 'unset');\n renderer.setStyle(el, 'cursor', 'grabbing');\n renderer.setStyle(document.documentElement, 'cursor', 'grabbing');\n }\n\n if (!currIsInitDragging && !currIsDragging) {\n renderer.setStyle(el, 'cursor', 'grab');\n renderer.removeStyle(el, 'scrollSnapType');\n renderer.removeStyle(el, 'scrollBehavior');\n renderer.removeClass(el, CURSOR_DRAG_SCROLLING_CLASS);\n renderer.removeClass(el, CURSOR_DRAG_INIT_CLASS);\n renderer.removeStyle(document.documentElement, 'cursor');\n }\n });\n });\n\n // Update the element's scroll position when the user drags\n effect(() => {\n const currDragAmount = dragAmount();\n\n untracked(() => {\n const currIsDragging = isDragging();\n const el = element().currentElement;\n const { x: dragX, y: dragY } = currDragAmount;\n const { x: scrollX, y: scrollY } = initialScrollPosition();\n const currAllowedDirection = maybeSignalValue(allowedDirection);\n\n if (!el || !currIsDragging) return;\n\n switch (currAllowedDirection) {\n case 'both':\n el.scroll({\n top: dragY + scrollY,\n left: dragX + scrollX,\n behavior: 'instant',\n });\n break;\n case 'horizontal':\n el.scroll({\n left: dragX + scrollX,\n behavior: 'instant',\n });\n break;\n case 'vertical':\n el.scroll({\n top: dragY + scrollY,\n behavior: 'instant',\n });\n break;\n }\n });\n });\n\n const updateDragging = (e: MouseEvent) => {\n const el = element().currentElement;\n\n if (!el) return;\n\n const dx = (e.clientX - initialDragPosition().x) * -1;\n const dy = (e.clientY - initialDragPosition().y) * -1;\n\n dragAmount.set({ x: dx, y: dy });\n\n if (Math.abs(dx) > CURSOR_DRAG_SCROLL_DEADZONE || Math.abs(dy) > CURSOR_DRAG_SCROLL_DEADZONE) {\n isDragging.set(true);\n }\n };\n\n const updateDraggingEnd = () => {\n isDragging.set(false);\n isInitDragging.set(false);\n initialDragPosition.set({ x: 0, y: 0 });\n initialScrollPosition.set({ x: 0, y: 0 });\n dragAmount.set({ x: 0, y: 0 });\n };\n\n const setupDragging = (e: MouseEvent) => {\n const mouseUp = fromEvent<MouseEvent>(document, 'mouseup');\n const mouseMove = fromEvent<MouseEvent>(document, 'mousemove');\n const el = element().currentElement;\n\n if (!el) return;\n\n mouseMove\n .pipe(\n takeUntilDestroyed(destroyRef),\n takeUntil(mouseUp),\n tap((e) => updateDragging(e)),\n )\n .subscribe();\n\n mouseUp\n .pipe(\n take(1),\n takeUntilDestroyed(destroyRef),\n tap(() => updateDraggingEnd()),\n )\n .subscribe();\n\n initialDragPosition.set({ x: e.clientX, y: e.clientY });\n initialScrollPosition.set({ x: el.scrollLeft, y: el.scrollTop });\n isInitDragging.set(true);\n };\n\n toObservable(element)\n .pipe(\n map((e) => e?.currentElement),\n switchMap((el) => (el ? fromEvent<MouseEvent>(el, 'mousedown') : of(null))),\n filter((e): e is MouseEvent => !!e),\n filter(() => enabled()),\n tap((e) => setupDragging(e)),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n return {\n isDragging: isDragging.asReadonly(),\n currentDragAmount: dragAmount.asReadonly(),\n };\n};\n\n/**\n * A computed that will only be reactive until the source signal contains a truthy value.\n * All subsequent changes inside the computation will be ignored.\n */\nexport const computedTillTruthy = <T>(source: Signal<T>) => {\n const value = signal<T | null>(null);\n\n const ref = effect(\n () => {\n const val = source();\n\n if (val) {\n value.set(val);\n ref.destroy();\n }\n },\n { allowSignalWrites: true },\n );\n\n return value.asReadonly();\n};\n\n/**\n * A computed that will only be reactive until the source signal contains a falsy value.\n * All subsequent changes inside the computation will be ignored.\n */\nexport const computedTillFalsy = <T>(source: Signal<T>) => {\n const value = signal<T | null>(null);\n\n const ref = effect(\n () => {\n const val = source();\n\n if (!val) {\n value.set(val);\n ref.destroy();\n }\n },\n { allowSignalWrites: true },\n );\n\n return value.asReadonly();\n};\n\n/**\n * A writeable signal that will be set to the provided value once all inputs are set.\n * During that time, the signal will be set to `null`.\n */\nexport const deferredSignal = <T extends () => unknown>(valueFn: T) => {\n const valueSignal = signal<ReturnType<T> | null>(null);\n\n afterNextRender(() => {\n valueSignal.set(valueFn() as ReturnType<T>);\n });\n\n return valueSignal;\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is xs */\nexport const injectIsXs = () => {\n return toSignal(inject(ViewportService).isXs$, { requireSync: true });\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is sm */\nexport const injectIsSm = () => {\n return toSignal(inject(ViewportService).isSm$, { requireSync: true });\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is md */\nexport const injectIsMd = () => {\n return toSignal(inject(ViewportService).isMd$, { requireSync: true });\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is lg */\nexport const injectIsLg = () => {\n return toSignal(inject(ViewportService).isLg$, { requireSync: true });\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is xl */\nexport const injectIsXl = () => {\n return toSignal(inject(ViewportService).isXl$, { requireSync: true });\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is 2xl */\nexport const injectIs2Xl = () => {\n return toSignal(inject(ViewportService).is2Xl$, { requireSync: true });\n};\n\n/**\n * Inject a boolean value indicating if the viewport is matching the provided options.\n * This value is not reactive. If you want to react to changes, use the {@link injectObserveBreakpoint} function instead.\n */\nexport const injectBreakpointIsMatched = (options: { min?: number | Breakpoint; max?: number | Breakpoint }) => {\n return inject(ViewportService).isMatched(options);\n};\n\n/**\n * Inject a signal containing a boolean value indicating if the viewport is matching the provided options.\n */\nexport const injectObserveBreakpoint = (options: { min?: number | Breakpoint; max?: number | Breakpoint }) => {\n return toSignal(inject(ViewportService).observe(options), { initialValue: injectBreakpointIsMatched(options) });\n};\n\n/** Inject a signal containing the current breakpoint. */\nexport const injectCurrentBreakpoint = () => {\n return toSignal(inject(ViewportService).currentViewport$, {\n initialValue: inject(ViewportService).currentViewport,\n });\n};\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { ScrollStrategy } from '@angular/cdk/overlay';\nimport { supportsScrollBehavior } from '@angular/cdk/platform';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\nimport { skip, startWith, Subscription, take, tap } from 'rxjs';\nimport { RouterStateService } from '../services';\nimport { createResizeObservable } from './resize-observable.util';\nimport { elementCanScroll } from './scrollable.utils';\n\nconst scrollBehaviorSupported = supportsScrollBehavior();\n\nconst BLOCK_CLASS = 'cdk-global-scrollblock';\nconst OVERSCROLL_CLASS = 'et-global-no-overscroll';\n\n/**\n * @deprecated Will be removed in v5. Scroll blocking for overlays is build in by default.\n */\nexport class SmartBlockScrollStrategy implements ScrollStrategy {\n private _previousHTMLStyles = { top: '', left: '' };\n private _previousScrollPosition: { top: number; left: number } = { top: 0, left: 0 };\n private _isEnabled = false;\n private _urlSubscription: Subscription | null = null;\n private _resizeSubscription: Subscription | null = null;\n private _didNavigate = false;\n\n #viewportRuler = inject(ViewportRuler);\n #routerState = inject(RouterStateService);\n #document = inject(DOCUMENT);\n\n attach() {\n // noop\n }\n\n enable() {\n if (!this._canBeEnabled()) return;\n\n const root = this.#document.documentElement;\n root.classList.add(OVERSCROLL_CLASS);\n\n this._resizeSubscription = createResizeObservable({ elements: root })\n .pipe(\n startWith(null),\n tap(() => {\n if (this._isEnabled || !elementCanScroll(root) || !this._canBeEnabled()) return;\n\n this._isEnabled = true;\n\n this._previousScrollPosition = this.#viewportRuler.getViewportScrollPosition();\n this._didNavigate = false;\n\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add(BLOCK_CLASS);\n\n this._urlSubscription = this.#routerState.route$\n .pipe(\n skip(1),\n take(1),\n tap(() => {\n this._didNavigate = true;\n }),\n )\n .subscribe();\n }),\n )\n .subscribe();\n }\n\n disable() {\n this._urlSubscription?.unsubscribe();\n this._resizeSubscription?.unsubscribe();\n const html = this.#document.documentElement;\n\n if (this._canBeEnabled()) {\n html.classList.remove(OVERSCROLL_CLASS);\n }\n\n if (this._isEnabled) {\n const body = this.#document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n\n this._isEnabled = false;\n\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove(BLOCK_CLASS);\n\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n\n if (!this._didNavigate) {\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n }\n\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n\n private _canBeEnabled(): boolean {\n const html = this.#document.documentElement;\n\n if (html.classList.contains(BLOCK_CLASS) || this._isEnabled) {\n return false;\n }\n\n return true;\n }\n}\n","import { Primitive } from '../types';\n\nexport const isPrimitiveArray = (value: unknown): value is Array<Primitive> => {\n if (!Array.isArray(value)) return false;\n\n const first = value[0];\n const last = value[value.length - 1];\n\n if (!first || !last) return false;\n\n return typeof first !== 'object' && typeof last !== 'object';\n};\n\nexport const isObjectArray = (value: unknown): value is Array<Record<string, unknown>> => {\n if (!Array.isArray(value)) return false;\n\n const first = value[0];\n const last = value[value.length - 1];\n\n if (!first || !last) return false;\n\n return typeof first === 'object' && typeof last === 'object' && !Array.isArray(first) && !Array.isArray(last);\n};\n\nexport const isEmptyArray = (value: unknown): value is [] => {\n return Array.isArray(value) && value.length === 0;\n};\n","import { VIEWPORT_CONFIG } from '../constants';\nimport { ViewportConfig } from '../types';\n\nexport const provideViewportConfig = (\n viewportConfig: ViewportConfig,\n): { provide: typeof VIEWPORT_CONFIG; useValue: typeof viewportConfig } => {\n return { provide: VIEWPORT_CONFIG, useValue: viewportConfig };\n};\n","import { Directive, ElementRef, inject, InjectionToken, Input, isDevMode, OnInit } from '@angular/core';\nimport {\n BehaviorSubject,\n debounceTime,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n skip,\n Subject,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { createDestroy } from '../../utils';\n\nexport const ANIMATABLE_TOKEN = new InjectionToken<AnimatableDirective>('ANIMATABLE_DIRECTIVE_TOKEN');\n\n@Directive({\n selector: '[etAnimatable]',\n exportAs: 'etAnimatable',\n standalone: true,\n providers: [\n {\n provide: ANIMATABLE_TOKEN,\n useExisting: AnimatableDirective,\n },\n ],\n})\nexport class AnimatableDirective implements OnInit {\n private _didEmitStart = false;\n\n private readonly _parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });\n private readonly _destroy$ = createDestroy();\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly _animationStart$ = new Subject<void>();\n private readonly _animationEnd$ = new Subject<void>();\n private readonly _animationCancelled$ = new Subject<void>();\n\n @Input('etAnimatable')\n set animatedElement(value: string | HTMLElement | null | undefined) {\n let newElement: HTMLElement | null = null;\n if (value === null || value === undefined || value === '') {\n newElement = this._elementRef.nativeElement;\n } else if (typeof value === 'string') {\n const el = document.querySelector(value) as HTMLElement;\n\n if (el) {\n newElement = el;\n } else {\n if (isDevMode()) {\n console.warn(`Element with selector ${value} not found. Animatable directive will use host element.`);\n }\n\n newElement = this._elementRef.nativeElement;\n }\n } else {\n newElement = value;\n }\n\n if (this._animatedElement$.value !== newElement) {\n this._animatedElement$.next(newElement);\n }\n }\n private _animatedElement$ = new BehaviorSubject<HTMLElement>(this._elementRef.nativeElement);\n\n readonly animationStart$ = this._animationStart$.asObservable().pipe(debounceTime(0));\n readonly animationEnd$ = this._animationEnd$.asObservable().pipe(debounceTime(0));\n readonly animationCancelled$ = this._animationCancelled$.asObservable().pipe(debounceTime(0));\n\n private readonly _hostActiveAnimationCount$ = new BehaviorSubject<number>(0);\n private readonly _totalActiveAnimationCount$ = new BehaviorSubject<number>(0);\n\n readonly isAnimating$: Observable<boolean> = this._totalActiveAnimationCount$.pipe(\n map((count) => count > 0),\n debounceTime(0),\n );\n\n ngOnInit(): void {\n this._animatedElement$\n .pipe(\n tap((el) => {\n this._totalActiveAnimationCount$.next(\n this._totalActiveAnimationCount$.value - this._hostActiveAnimationCount$.value,\n );\n this._hostActiveAnimationCount$.next(0);\n\n merge(fromEvent<AnimationEvent>(el, 'animationstart'), fromEvent<TransitionEvent>(el, 'transitionstart'))\n .pipe(\n filter((e) => e.target === el), // skip events from children\n tap(() => {\n const count = this._hostActiveAnimationCount$.value + 1;\n this._hostActiveAnimationCount$.next(count);\n this._totalActiveAnimationCount$.next(count);\n }),\n takeUntil(this._destroy$),\n takeUntil(this._animatedElement$.pipe(skip(1))),\n )\n .subscribe();\n\n merge(\n fromEvent<AnimationEvent>(el, 'animationend'),\n fromEvent<AnimationEvent>(el, 'animationcancel'),\n fromEvent<TransitionEvent>(el, 'transitionend'),\n fromEvent<TransitionEvent>(el, 'transitioncancel'),\n )\n .pipe(\n filter((e) => e.target === el), // skip events from children\n tap(() => {\n const count = this._hostActiveAnimationCount$.value - 1;\n this._hostActiveAnimationCount$.next(count);\n this._totalActiveAnimationCount$.next(count);\n }),\n takeUntil(this._destroy$),\n takeUntil(this._animatedElement$.pipe(skip(1))),\n )\n .subscribe();\n\n merge(fromEvent<AnimationEvent>(el, 'animationcancel'), fromEvent<TransitionEvent>(el, 'transitioncancel'))\n .pipe(\n filter((e) => e.target === el), // skip events from children\n tap(() => {\n this._animationCancelled$.next();\n }),\n takeUntil(this._destroy$),\n takeUntil(this._animatedElement$.pipe(skip(1))),\n )\n .subscribe();\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._totalActiveAnimationCount$\n .pipe(\n tap((count) => {\n if (count > 0 && !this._didEmitStart) {\n this._animationStart$.next();\n this._didEmitStart = true;\n } else if (count === 0) {\n this._animationEnd$.next();\n this._didEmitStart = false;\n }\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n if (this._parent) {\n this._parent._hostActiveAnimationCount$\n .pipe(\n takeUntil(this._destroy$),\n tap((count) => {\n this._totalActiveAnimationCount$.next(count + this._hostActiveAnimationCount$.value);\n }),\n )\n .subscribe();\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, inject, InjectionToken, model } from '@angular/core';\nimport { outputFromObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, map, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { createDestroy, forceReflow, fromNextFrame, signalHostClasses } from '../../utils';\nimport { ANIMATABLE_TOKEN, AnimatableDirective } from '../animatable';\n\nexport const ANIMATED_LIFECYCLE_TOKEN = new InjectionToken<AnimatedLifecycleDirective>(\n 'ANIMATED_LIFECYCLE_DIRECTIVE_TOKEN',\n);\n\nconst ANIMATION_CLASSES = {\n enterFrom: 'et-animation-enter-from',\n enterActive: 'et-animation-enter-active',\n enterTo: 'et-animation-enter-to',\n leaveFrom: 'et-animation-leave-from',\n leaveActive: 'et-animation-leave-active',\n leaveTo: 'et-animation-leave-to',\n} as const;\n\nexport type AnimatedLifecycleState = 'entering' | 'entered' | 'leaving' | 'left' | 'init';\n\n@Directive({\n selector: '[etAnimatedLifecycle]',\n exportAs: 'etAnimatedLifecycle',\n standalone: true,\n providers: [\n {\n provide: ANIMATED_LIFECYCLE_TOKEN,\n useExisting: AnimatedLifecycleDirective,\n },\n ],\n hostDirectives: [AnimatableDirective],\n})\nexport class AnimatedLifecycleDirective implements AfterViewInit {\n private readonly _destroy$ = createDestroy();\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _animatable = inject(ANIMATABLE_TOKEN);\n private readonly _classList = this._elementRef.nativeElement.classList;\n\n private _isConstructed = false;\n\n private _state$ = new BehaviorSubject<AnimatedLifecycleState>('init');\n readonly state$ = this._state$.asObservable();\n\n get state() {\n return this._state$.value;\n }\n\n readonly hostClassBindings = signalHostClasses({\n 'et-force-invisible': toSignal(this._state$.pipe(map((state) => state === 'init'))),\n });\n\n stateChange = outputFromObservable(this._state$);\n\n skipNextEnter = model(false);\n\n ngAfterViewInit(): void {\n this._isConstructed = true;\n }\n\n enter(config?: { onlyTransition?: boolean }) {\n if (this.state === 'entering') return;\n\n if ((this.state === 'init' && !this._isConstructed) || this.skipNextEnter()) {\n // Force the state to entered so that the element is not animated when it is first rendered.\n this._forceState('entered');\n this.skipNextEnter.set(false);\n return;\n }\n\n if (this.state === 'leaving') {\n this._classList.remove(ANIMATION_CLASSES.leaveFrom);\n this._classList.remove(ANIMATION_CLASSES.leaveActive);\n this._classList.remove(ANIMATION_CLASSES.leaveTo);\n }\n\n this._state$.next('entering');\n\n if (!config?.onlyTransition) {\n this._classList.add(ANIMATION_CLASSES.enterFrom);\n }\n\n forceReflow();\n this._classList.add(ANIMATION_CLASSES.enterActive);\n\n fromNextFrame()\n .pipe(\n tap(() => {\n if (!config?.onlyTransition && this.state === 'entering') {\n this._classList.remove(ANIMATION_CLASSES.enterFrom);\n this._classList.add(ANIMATION_CLASSES.enterTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\n if (this.state !== 'entering') return;\n\n this._state$.next('entered');\n this._classList.remove(ANIMATION_CLASSES.enterActive);\n\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.enterTo);\n }\n }),\n takeUntil(this._destroy$),\n take(1),\n )\n .subscribe();\n }\n\n leave(config?: { onlyTransition?: boolean }) {\n if (this.state === 'leaving') return;\n\n if (this.state === 'init') {\n this._state$.next('left');\n return;\n }\n\n if (this.state === 'entering') {\n this._classList.remove(ANIMATION_CLASSES.enterFrom);\n this._classList.remove(ANIMATION_CLASSES.enterActive);\n this._classList.remove(ANIMATION_CLASSES.enterTo);\n }\n\n this._state$.next('leaving');\n\n if (!config?.onlyTransition) {\n this._classList.add(ANIMATION_CLASSES.leaveFrom);\n }\n\n forceReflow();\n this._classList.add(ANIMATION_CLASSES.leaveActive);\n\n fromNextFrame()\n .pipe(\n tap(() => {\n if (!config?.onlyTransition && this.state === 'leaving') {\n this._classList.remove(ANIMATION_CLASSES.leaveFrom);\n this._classList.add(ANIMATION_CLASSES.leaveTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\n if (this.state !== 'leaving') return;\n\n this._state$.next('left');\n this._classList.remove(ANIMATION_CLASSES.leaveActive);\n\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.leaveTo);\n }\n }),\n takeUntil(this._destroy$),\n take(1),\n )\n .subscribe();\n }\n\n _forceState(state: AnimatedLifecycleState) {\n this._state$.next(state);\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Directive, InjectionToken, Input, inject } from '@angular/core';\nimport { filter, takeUntil, takeWhile, tap } from 'rxjs';\nimport { createDestroy } from '../../utils';\nimport { ANIMATED_LIFECYCLE_TOKEN } from '../animated-lifecycle';\n\nexport const ANIMATED_IF_TOKEN = new InjectionToken<AnimatedIfDirective>('ANIMATED_IF_TOKEN');\n\n@Directive({\n selector: '[etAnimatedIf]',\n standalone: true,\n providers: [\n {\n provide: ANIMATED_IF_TOKEN,\n useExisting: AnimatedIfDirective,\n },\n ],\n hostDirectives: [NgIf],\n})\nexport class AnimatedIfDirective {\n private readonly _destroy$ = createDestroy();\n private readonly _ngIf = inject(NgIf);\n private readonly _animatedLifecycle = inject(ANIMATED_LIFECYCLE_TOKEN);\n\n @Input('etAnimatedIf')\n set shouldRender(value: unknown) {\n if (value) {\n this._ngIf.ngIf = value;\n\n this._animatedLifecycle.enter();\n } else {\n this._animatedLifecycle.leave();\n\n this._animatedLifecycle.state$\n .pipe(\n takeUntil(this._destroy$),\n takeWhile((state) => state !== 'left', true),\n filter((state) => state === 'left'),\n tap(() => {\n this._ngIf.ngIf = value;\n }),\n )\n .subscribe();\n }\n }\n}\n","import { Directive, ElementRef, InjectionToken, inject } from '@angular/core';\n\nexport const ROOT_BOUNDARY_TOKEN = new InjectionToken<RootBoundaryDirective>('ROOT_BOUNDARY_TOKEN');\n\n@Directive({\n selector: '[etRootBoundary]',\n standalone: true,\n providers: [\n {\n provide: ROOT_BOUNDARY_TOKEN,\n useExisting: RootBoundaryDirective,\n },\n ],\n})\nexport class RootBoundaryDirective {\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n get boundaryElement() {\n return this._boundaryElement ?? this._elementRef.nativeElement;\n }\n set boundaryElement(v: HTMLElement | null) {\n this._boundaryElement = v;\n }\n private _boundaryElement: HTMLElement | null = null;\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n Directive,\n ElementRef,\n Injector,\n Input,\n NgZone,\n StaticProvider,\n ViewContainerRef,\n booleanAttribute,\n inject,\n isDevMode,\n} from '@angular/core';\nimport { ProvideThemeDirective } from '@ethlete/theming';\nimport {\n OffsetOptions,\n Padding,\n Placement,\n arrow,\n autoUpdate,\n computePosition,\n flip,\n hide,\n limitShift,\n offset,\n shift,\n size,\n} from '@floating-ui/dom';\nimport { BehaviorSubject, Subject, filter, take, takeUntil, tap } from 'rxjs';\nimport { ResizeObserverService } from '../../services';\nimport { createDestroy, nextFrame } from '../../utils';\nimport { AnimatedLifecycleDirective } from '../animated-lifecycle';\nimport { RootBoundaryDirective } from '../root-boundary';\n\nexport interface AnimatedOverlayComponentBase {\n _elementRef?: ElementRef<HTMLElement>;\n _animatedLifecycle?: AnimatedLifecycleDirective;\n _markForCheck?: () => void;\n _setThemeFromProvider?: (provider: ProvideThemeDirective) => void;\n}\n\n@Directive({\n standalone: true,\n host: {\n class: 'et-animated-overlay',\n },\n})\nexport class AnimatedOverlayDirective<T extends AnimatedOverlayComponentBase> {\n private readonly _destroy$ = createDestroy();\n private readonly _overlayService = inject(Overlay);\n private readonly _injector = inject(Injector);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _zone = inject(NgZone);\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n private readonly _rootBoundary = inject(RootBoundaryDirective, { optional: true });\n\n private _portal: ComponentPortal<T> | null = null;\n private _overlayRef: OverlayRef | null = null;\n private _componentRef: ComponentRef<T> | null = null;\n private _floatingElCleanupFn: (() => void) | null = null;\n\n private _beforeOpened: Subject<void> | null = null;\n private _afterOpened: Subject<void> | null = null;\n private _beforeClosed: Subject<void> | null = null;\n private _afterClosed: Subject<void> | null = null;\n\n private readonly _isMounted$ = new BehaviorSubject<boolean>(false);\n private readonly _isMounting$ = new BehaviorSubject<boolean>(false);\n private readonly _isUnmounting$ = new BehaviorSubject<boolean>(false);\n private readonly _isHidden$ = new BehaviorSubject<boolean>(false);\n\n /**\n * The placement of the animated overlay.\n * @default undefined\n */\n @Input()\n placement?: Placement = 'bottom';\n\n /**\n * The allowed auto placements of the animated overlay.\n * @see https://floating-ui.com/docs/flip#fallbackplacements\n */\n @Input()\n fallbackPlacements?: Placement[];\n\n /**\n * The offset of the animated overlay.\n * @see https://floating-ui.com/docs/offset\n */\n @Input()\n offset: OffsetOptions | null = null;\n\n /**\n * The arrow padding.\n * @see https://floating-ui.com/docs/arrow#padding\n * @default 4\n */\n @Input()\n arrowPadding: Padding | null = 4;\n\n /**\n * The viewport padding.\n * @default 8\n */\n @Input()\n viewportPadding: Padding | null = 8;\n\n /**\n * Whether the animated overlay should auto resize to fit the available space.\n * Useful for things like selects where the list of options might be longer than the available space.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n autoResize = false;\n\n /**\n * Whether the animated overlay should shift when it is near the viewport boundary.\n */\n @Input({ transform: booleanAttribute })\n shift = true;\n\n /**\n * Whether the animated overlay should auto hide when the reference element is hidden.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n autoHide = false;\n\n /**\n * Whether the animated overlay should auto close if the reference element is hidden.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n autoCloseIfReferenceHidden = false;\n\n /**\n * The reference element for the animated overlay.\n * @default this._elementRef.nativeElement\n */\n @Input()\n referenceElement = this._elementRef.nativeElement;\n\n get isMounted() {\n return this._isMounted$.value;\n }\n\n get isMounted$() {\n return this._isMounted$.asObservable();\n }\n\n get isMounting() {\n return this._isMounting$.value;\n }\n\n get isMounting$() {\n return this._isMounting$.asObservable();\n }\n\n get isUnmounting() {\n return this._isUnmounting$.value;\n }\n\n get isHidden$() {\n return this._isHidden$.asObservable();\n }\n\n get isHidden() {\n return this._isHidden$.value;\n }\n\n get canMount() {\n return !this.isMounted && !this.isMounting;\n }\n\n get canUnmount() {\n return this.isMounted && !this.isUnmounting;\n }\n\n get portal() {\n return this._portal;\n }\n\n get overlayRef() {\n return this._overlayRef;\n }\n\n get componentRef() {\n return this._componentRef;\n }\n\n mount(config: {\n component: ComponentType<T>;\n providers?: StaticProvider[];\n data?: Partial<T>;\n mirrorWidth?: boolean;\n themeProvider?: ProvideThemeDirective | null;\n }) {\n if (this.isMounted || this.isMounting) {\n if (isDevMode()) {\n if (this.isMounted) {\n console.warn(\n 'AnimatedOverlayDirective: The component is currently mounted. Please unmount the component before mounting again.',\n );\n }\n\n if (this.isMounting) {\n console.warn(\n 'AnimatedOverlayDirective: The component is already mounting. Please unmount the component before mounting again.',\n );\n }\n }\n\n return;\n }\n\n this._isMounting$.next(true);\n\n const { component, providers, data, mirrorWidth, themeProvider } = config;\n\n this._beforeOpened?.next();\n\n const injector = Injector.create({\n parent: this._injector,\n providers: providers ?? [],\n });\n\n this._overlayRef = this._overlayService.create();\n\n this._portal = new ComponentPortal(component, this._viewContainerRef, injector);\n this._componentRef = this._overlayRef.attach(this._portal);\n\n if (data) {\n Object.assign(this._componentRef.instance, data);\n }\n\n this._componentRef.instance._markForCheck?.();\n\n if (themeProvider) {\n this._componentRef.instance._setThemeFromProvider?.(themeProvider);\n }\n\n if (mirrorWidth) {\n this._overlayRef.updateSize({\n width: this._elementRef.nativeElement.offsetWidth,\n });\n\n this._resizeObserverService\n .observe(this.referenceElement)\n .pipe(\n tap(() => {\n this._overlayRef?.updateSize({\n width: this._elementRef.nativeElement.offsetWidth,\n });\n }),\n takeUntil(this._destroy$),\n takeUntil(this.afterClosed()),\n )\n .subscribe();\n }\n\n this._zone.runOutsideAngular(() => {\n if (!this._componentRef) {\n return;\n }\n\n const floatingEl = this._componentRef.location.nativeElement as HTMLElement;\n const floatingElArrow = this._componentRef.instance._elementRef?.nativeElement.querySelector(\n '[et-floating-arrow]',\n ) as HTMLElement | null;\n\n floatingEl.classList.add('et-floating-element');\n\n const refEl = this.referenceElement;\n const boundary = this._rootBoundary?.boundaryElement ?? undefined;\n\n this._floatingElCleanupFn = autoUpdate(refEl, floatingEl, () => {\n if (!this._componentRef) return;\n\n computePosition(refEl, floatingEl, {\n placement: this.placement,\n\n middleware: [\n ...(this.offset ? [offset(this.offset)] : []),\n flip({\n fallbackPlacements: this.fallbackPlacements ?? undefined,\n fallbackAxisSideDirection: 'start',\n boundary,\n }),\n ...(this.autoResize\n ? [\n size({\n padding: this.viewportPadding ?? undefined,\n apply({ availableHeight, availableWidth }) {\n floatingEl.style.setProperty('--et-floating-max-width', `${availableWidth}px`);\n floatingEl.style.setProperty('--et-floating-max-height', `${availableHeight}px`);\n },\n }),\n ]\n : []),\n ...(this.shift\n ? [shift({ limiter: limitShift(), padding: this.viewportPadding ?? undefined, boundary })]\n : []),\n ...(floatingElArrow ? [arrow({ element: floatingElArrow, padding: this.arrowPadding ?? undefined })] : []),\n ...(this.autoHide || this.autoCloseIfReferenceHidden\n ? [hide({ strategy: 'referenceHidden', boundary })]\n : []),\n ],\n }).then(({ x, y, placement, middlewareData }) => {\n floatingEl.style.setProperty('--et-floating-translate', `translate3d(${x}px, ${y}px, 0)`);\n floatingEl.setAttribute('et-floating-placement', placement);\n\n if (middlewareData.arrow && floatingElArrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n floatingEl.style.setProperty(\n '--et-floating-arrow-translate',\n `translate3d(${arrowX ?? 0}px, ${arrowY ?? 0}px, 0)`,\n );\n }\n\n if (middlewareData.hide?.referenceHidden) {\n if (this.autoCloseIfReferenceHidden) {\n this.unmount();\n } else {\n floatingEl.classList.add('et-floating-element--hidden');\n this._isHidden$.next(true);\n }\n } else {\n if (this.autoHide) {\n floatingEl.classList.remove('et-floating-element--hidden');\n this._isHidden$.next(false);\n }\n }\n });\n });\n\n // We need to wait for the content to be rendered\n nextFrame(() => {\n if (!this._componentRef) {\n return;\n }\n\n if (!this._componentRef.instance._animatedLifecycle) {\n console.error(\n 'AnimatedOverlayDirective: The component does not have an AnimatedLifecycleDirective. Please add one to the component.',\n );\n }\n\n this._componentRef.instance._animatedLifecycle?.enter();\n\n this._componentRef.instance._animatedLifecycle?.state$\n .pipe(\n tap((s) => {\n if (s === 'entered') {\n this._afterOpened?.next();\n }\n }),\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._isMounted$.next(true);\n this._isMounting$.next(false);\n });\n });\n\n return this._componentRef.instance;\n }\n\n unmount() {\n if (!this.isMounted || this.isUnmounting) {\n if (isDevMode()) {\n if (!this.isMounted) {\n console.warn(\n `AnimatedOverlayDirective: The component is currently not mounted. Please call \"mount\" before calling \"unmount\" again.`,\n );\n }\n\n if (this.isUnmounting) {\n console.warn(\n `AnimatedOverlayDirective: The component is already unmounting. Please call \"mount\" before calling \"unmount\" again.`,\n );\n }\n }\n\n return;\n }\n\n if (!this._componentRef) {\n return;\n }\n\n if (this.isHidden) {\n return;\n }\n\n this._isUnmounting$.next(true);\n\n this._beforeClosed?.next();\n\n this._componentRef.instance._animatedLifecycle?.leave();\n\n this._componentRef.instance._animatedLifecycle?.state$\n .pipe(\n filter((s) => s === 'left'),\n take(1),\n )\n .subscribe(() => this._destroy());\n }\n\n beforeOpened() {\n if (!this._beforeOpened) {\n this._beforeOpened = new Subject();\n }\n\n return this._beforeOpened;\n }\n\n afterOpened() {\n if (!this._afterOpened) {\n this._afterOpened = new Subject();\n }\n\n return this._afterOpened;\n }\n\n beforeClosed() {\n if (!this._beforeClosed) {\n this._beforeClosed = new Subject();\n }\n\n return this._beforeClosed;\n }\n\n afterClosed() {\n if (!this._afterClosed) {\n this._afterClosed = new Subject();\n }\n\n return this._afterClosed;\n }\n\n _destroy() {\n this._zone.runOutsideAngular(() => {\n this._floatingElCleanupFn?.();\n });\n\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n\n if (this._componentRef) {\n this._componentRef.destroy();\n this._componentRef = null;\n }\n\n this._isMounted$.next(false);\n this._isUnmounting$.next(false);\n\n this._afterClosed?.next();\n }\n}\n","import { Directive, ElementRef, EventEmitter, inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ClickObserverService } from '../../services';\n\n@Directive({\n selector: '[etClickOutside]',\n standalone: true,\n})\nexport class ClickOutsideDirective implements OnInit, OnDestroy {\n private _elementRef = inject(ElementRef);\n private _clickObserverService = inject(ClickObserverService);\n\n private _subscription: Subscription | null = null;\n\n @Output()\n etClickOutside = new EventEmitter<MouseEvent>();\n\n ngOnInit(): void {\n setTimeout(() => {\n this._subscription = this._clickObserverService.observe(this._elementRef.nativeElement).subscribe((event) => {\n const activeElement = event.target as HTMLElement;\n const isInside = this._elementRef.nativeElement.contains(activeElement);\n\n if (!isInside) {\n this.etClickOutside.emit(event);\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this._subscription?.unsubscribe();\n }\n}\n","export const CURSOR_DRAG_SCROLLING_CLASS = 'et-cursor-drag-scroll--scrolling';\nexport const CURSOR_DRAG_SCROLLING_PREPARED_CLASS = 'et-cursor-drag-scroll--prepared';\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { Subject, Subscription, combineLatest, debounceTime, fromEvent, startWith, take, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, ResizeObserverService } from '../../services';\nimport { createDestroy, elementCanScroll } from '../../utils';\nimport { CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_SCROLLING_PREPARED_CLASS } from './cursor-drag-scroll.constants';\n\n@Directive({\n selector: '[etCursorDragScroll]',\n exportAs: 'etCursorDragScroll',\n standalone: true,\n})\nexport class CursorDragScrollDirective implements AfterViewInit {\n private readonly _subscriptions: Subscription[] = [];\n private readonly _destroy$ = createDestroy();\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _contentObserverService = inject(ContentObserverService);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n\n private readonly _bufferUntilScroll = 5;\n private readonly _mouseUp$ = new Subject<boolean>();\n\n private _isScrolling = false;\n private _canScroll = false;\n\n private _currentScrollState = {\n top: 0,\n left: 0,\n x: 0,\n y: 0,\n };\n\n @Input('etCursorDragScroll')\n get enabled(): boolean {\n return this._enabled;\n }\n set enabled(value: unknown) {\n this._enabled = booleanAttribute(value);\n\n if (this._enabled) {\n this._enableCursorDragScroll();\n } else {\n this._disableCursorDragScroll();\n }\n }\n private _enabled = false;\n\n @Input()\n allowedDirection: 'horizontal' | 'vertical' | 'both' = 'both';\n\n @Output()\n readonly cursorDragStart = new EventEmitter<void>();\n\n @Output()\n readonly cursorDragMove = new EventEmitter<void>();\n\n @Output()\n readonly cursorDragEnd = new EventEmitter<void>();\n\n ngAfterViewInit(): void {\n if (this.enabled) {\n this._enableCursorDragScroll();\n } else {\n this._disableCursorDragScroll();\n }\n }\n\n private _enableCursorDragScroll() {\n const contentResizeSub = combineLatest([\n this._contentObserverService.observe(this._elementRef.nativeElement).pipe(startWith(null)),\n this._resizeObserverService.observe(this._elementRef.nativeElement).pipe(startWith(null)),\n ])\n .pipe(\n debounceTime(25),\n tap(() => this._updateCanScrollState()),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n const mousedownSub = fromEvent<MouseEvent>(this._elementRef.nativeElement, 'mousedown')\n .pipe(\n tap((e) => this._onMouseDown(e)),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._subscriptions.push(contentResizeSub, mousedownSub);\n\n this._updateCanScrollState();\n }\n\n private _disableCursorDragScroll() {\n this._subscriptions.forEach((sub) => sub.unsubscribe());\n this._subscriptions.length = 0;\n this._elementRef.nativeElement.style.cursor = 'default';\n }\n\n private _onMouseDown(e: MouseEvent) {\n if (!this._elementRef?.nativeElement || !this._canScroll) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n\n element.classList.add(CURSOR_DRAG_SCROLLING_PREPARED_CLASS);\n\n this._elementRef.nativeElement.style.scrollSnapType = 'none';\n this._elementRef.nativeElement.style.scrollBehavior = 'unset';\n\n this._currentScrollState = {\n left: this._elementRef.nativeElement.scrollLeft,\n top: this._elementRef.nativeElement.scrollTop,\n x: e.clientX,\n y: e.clientY,\n };\n\n fromEvent<MouseEvent>(document, 'mousemove')\n .pipe(\n tap((e) => this._mouseMoveHandler(e)),\n takeUntil(this._mouseUp$),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(\n tap(() => this._mouseUpHandler()),\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n private _mouseMoveHandler(e: MouseEvent) {\n e.preventDefault();\n\n if (!this._elementRef?.nativeElement) {\n return;\n }\n\n const dx = e.clientX - this._currentScrollState.x;\n const dy = e.clientY - this._currentScrollState.y;\n\n const shouldScrollX =\n (this.allowedDirection === 'horizontal' || this.allowedDirection === 'both') &&\n Math.abs(dx) > this._bufferUntilScroll;\n const shouldScrollY =\n (this.allowedDirection === 'vertical' || this.allowedDirection === 'both') &&\n Math.abs(dy) > this._bufferUntilScroll;\n\n if (shouldScrollX || shouldScrollY) {\n const element = this._elementRef.nativeElement;\n\n if (!this._isScrolling) {\n this._isScrolling = true;\n this.cursorDragStart.emit();\n\n document.documentElement.style.cursor = 'grabbing';\n element.style.cursor = 'grabbing';\n element.classList.add(CURSOR_DRAG_SCROLLING_CLASS);\n element.scroll({\n top: shouldScrollY ? this._currentScrollState.top - dy : undefined,\n left: shouldScrollX ? this._currentScrollState.left - dx : undefined,\n behavior: 'smooth',\n });\n } else {\n if (shouldScrollY) {\n element.scrollTop = this._currentScrollState.top - dy;\n }\n\n if (shouldScrollX) {\n element.scrollLeft = this._currentScrollState.left - dx;\n }\n\n this.cursorDragMove.emit();\n }\n }\n }\n\n private _mouseUpHandler() {\n this._mouseUp$.next(true);\n this._isScrolling = false;\n\n if (!this._elementRef?.nativeElement) {\n return;\n }\n\n this._elementRef.nativeElement.style.scrollSnapType = '';\n this._elementRef.nativeElement.style.scrollBehavior = '';\n\n document.documentElement.style.cursor = '';\n this._elementRef.nativeElement.style.cursor = 'grab';\n this._elementRef.nativeElement.classList.remove(CURSOR_DRAG_SCROLLING_CLASS);\n this._elementRef.nativeElement.classList.remove(CURSOR_DRAG_SCROLLING_PREPARED_CLASS);\n\n this.cursorDragEnd.emit();\n }\n\n private _updateCanScrollState() {\n this._canScroll = elementCanScroll(this._elementRef.nativeElement);\n\n if (this._canScroll) {\n this._elementRef.nativeElement.style.cursor = 'grab';\n } else {\n this._elementRef.nativeElement.style.cursor = 'default';\n }\n }\n}\n","import { Directive, InjectionToken, Input, booleanAttribute, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { filter, merge } from 'rxjs';\nimport { createDestroy } from '../../utils';\n\nexport const DEBUG_TOKEN = new InjectionToken<DebugDirective>('DEBUG_DIRECTIVE_TOKEN');\n\n@Directive({\n selector: '[etDebug]',\n exportAs: 'etDebug',\n standalone: true,\n providers: [\n {\n provide: DEBUG_TOKEN,\n useExisting: DebugDirective,\n },\n ],\n})\nexport class DebugDirective {\n private readonly _destroy$ = createDestroy();\n\n @Input({ alias: 'etDebug', transform: booleanAttribute })\n private set sDebug(value: boolean) {\n this._debug.set(value);\n }\n\n private _debug = signal(true);\n readonly debug = this._debug.asReadonly();\n readonly debug$ = toObservable(this.debug);\n\n readonly startDebug$ = this.debug$.pipe(filter((debug) => !!debug));\n readonly stopDebug$ = merge(this._destroy$, this.debug$.pipe(filter((debug) => !debug)));\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport const DELAYABLE_TOKEN = new InjectionToken<DelayableDirective>('DELAYABLE_DIRECTIVE_TOKEN');\n\n@Directive({\n selector: '[etDelayable]',\n exportAs: 'etDelayable',\n standalone: true,\n providers: [\n {\n provide: DELAYABLE_TOKEN,\n useExisting: DelayableDirective,\n },\n ],\n})\nexport class DelayableDirective {\n private readonly _isDelayed$ = new BehaviorSubject(false);\n\n get isDelayed$() {\n return this._isDelayed$.asObservable();\n }\n\n get isDelayed() {\n return this._isDelayed$.value;\n }\n\n enableDelayed() {\n if (this._isDelayed$.value) {\n return;\n }\n\n this._isDelayed$.next(true);\n }\n\n disableDelayed() {\n if (!this._isDelayed$.value) {\n return;\n }\n\n this._isDelayed$.next(false);\n }\n\n setDelayed(val: boolean) {\n if (this._isDelayed$.value === val) {\n return;\n }\n\n this._isDelayed$.next(val);\n }\n}\n","import { Directive, ElementRef, InjectionToken, Input, booleanAttribute, inject } from '@angular/core';\n\nexport const IS_ACTIVE_ELEMENT = new InjectionToken<IsActiveElementDirective>('ET_IS_ACTIVE_ELEMENT');\n\n@Directive({\n selector: '[etIsActiveElement]',\n standalone: true,\n providers: [\n {\n provide: IS_ACTIVE_ELEMENT,\n useExisting: IsActiveElementDirective,\n },\n ],\n})\nexport class IsActiveElementDirective {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @Input({ alias: 'etIsActiveElement', transform: booleanAttribute })\n isActiveElement = false;\n}\n","import { Directive, ElementRef, InjectionToken, Input, booleanAttribute, inject } from '@angular/core';\n\nexport const IS_ELEMENT = new InjectionToken<IsElementDirective>('ET_IS_ELEMENT');\n\n@Directive({\n selector: '[etIsElement]',\n standalone: true,\n providers: [\n {\n provide: IS_ELEMENT,\n useExisting: IsElementDirective,\n },\n ],\n})\nexport class IsElementDirective {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @Input({ alias: 'etIsElement', transform: booleanAttribute })\n isElement = false;\n}\n","export class LetContext<T = unknown> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n public $implicit: T = null!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n public etLet: T = null!;\n}\n","import { Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport { LetContext } from './let.types';\n\n/** @deprecated Use the let keyword provided by Angular instead. */\n@Directive({\n selector: '[etLet]',\n standalone: true,\n})\nexport class LetDirective<T = unknown> {\n private _viewContainer = inject(ViewContainerRef);\n\n @Input()\n set etLet(value: T) {\n this._context.$implicit = this._context.etLet = value;\n this._updateView();\n }\n\n static ngTemplateGuard_ngLet: 'binding';\n\n private _context: LetContext<T> = new LetContext<T>();\n private _templateRef = inject<TemplateRef<LetContext<T>>>(TemplateRef);\n private _viewRef: EmbeddedViewRef<LetContext<T>> | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static ngTemplateContextGuard<T>(dir: LetDirective<T>, ctx: any): ctx is LetContext<T> {\n return true;\n }\n\n private _updateView() {\n if (!this._viewRef) {\n this._viewContainer.clear();\n if (this._templateRef) {\n this._viewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);\n }\n }\n }\n}\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n booleanAttribute,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { ContentObserverService } from '../../services';\n\n@Directive({\n selector: '[etObserveContent]',\n exportAs: 'etObserveContent',\n standalone: true,\n})\nexport class ObserveContentDirective implements AfterContentInit, OnDestroy {\n private _contentObserver = inject(ContentObserverService);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n @Output('etObserveContent')\n readonly valueChange = new EventEmitter<MutationRecord[]>();\n\n @Input('etObserveContentDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: unknown) {\n this._disabled = booleanAttribute(value);\n\n if (this._disabled) {\n this._unsubscribe();\n } else {\n this._subscribe();\n }\n }\n private _disabled = false;\n\n @Input('etObserveContentDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: unknown) {\n this._debounce = numberAttribute(value) ?? null;\n this._subscribe();\n }\n private _debounce: number | null = null;\n\n private _currentSubscription: Subscription | null = null;\n\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n\n ngOnDestroy() {\n this._unsubscribe();\n }\n\n private _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(\n this.valueChange,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\n","import {\n AfterContentInit,\n booleanAttribute,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { debounceTime, Subscription } from 'rxjs';\nimport { ResizeObserverService } from '../../services';\n\n@Directive({\n selector: '[etObserveResize]',\n exportAs: 'etObserveResize',\n standalone: true,\n})\nexport class ObserveResizeDirective implements AfterContentInit, OnDestroy {\n private _resizeObserver = inject(ResizeObserverService);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n @Output('etObserveResize')\n // eslint-disable-next-line @angular-eslint/no-output-native\n readonly valueChange = new EventEmitter<ResizeObserverEntry[]>();\n\n @Input('etObserveResizeDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: unknown) {\n this._disabled = booleanAttribute(value);\n\n if (this._disabled) {\n this._unsubscribe();\n } else {\n this._subscribe();\n }\n }\n private _disabled = false;\n\n @Input('etObserveResizeDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: unknown) {\n this._debounce = numberAttribute(value) ?? null;\n this._subscribe();\n }\n private _debounce: number | null = null;\n\n private _currentSubscription: Subscription | null = null;\n\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n\n ngOnDestroy() {\n this._unsubscribe();\n }\n\n private _subscribe() {\n this._unsubscribe();\n const stream = this._resizeObserver.observe(this._elementRef);\n\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(\n this.valueChange,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ObserveScrollStateDirective } from './observe-scroll-state.directive';\n\nexport const OBSERVE_SCROLL_STATE = new InjectionToken<ObserveScrollStateDirective>('OBSERVE_SCROLL_STATE');\n","import { Directive, HostBinding, Input, booleanAttribute } from '@angular/core';\n\nexport const SCROLL_OBSERVER_FIRST_ELEMENT_CLASS = 'et-scroll-observer-first-element';\n\n@Directive({\n selector: '[etScrollObserverFirstElement]',\n standalone: true,\n})\nexport class ScrollObserverFirstElementDirective {\n @Input({ alias: 'etScrollObserverFirstElement', transform: booleanAttribute })\n @HostBinding(`class.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`)\n isFirstElement = false;\n}\n","import { Directive } from '@angular/core';\n\nexport const SCROLL_OBSERVER_IGNORE_TARGET_CLASS = 'et-scroll-observer-ignore-target';\n\n@Directive({\n selector: '[etScrollObserverIgnoreTarget]',\n standalone: true,\n host: {\n class: SCROLL_OBSERVER_IGNORE_TARGET_CLASS,\n },\n})\nexport class ScrollObserverIgnoreTargetDirective {}\n","import { Directive, HostBinding, Input, booleanAttribute } from '@angular/core';\n\nexport const SCROLL_OBSERVER_LAST_ELEMENT_CLASS = 'et-scroll-observer-last-element';\n\n@Directive({\n selector: '[etScrollObserverLastElement]',\n standalone: true,\n host: {\n class: SCROLL_OBSERVER_LAST_ELEMENT_CLASS,\n },\n})\nexport class ScrollObserverLastElementDirective {\n @Input({ alias: 'etScrollObserverLastElement', transform: booleanAttribute })\n @HostBinding(`class.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`)\n isLastElement = false;\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n numberAttribute,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { debounceTime, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, ResizeObserverService } from '../../services';\nimport { createDestroy, elementCanScroll } from '../../utils';\nimport { SCROLL_OBSERVER_FIRST_ELEMENT_CLASS } from '../scroll-observer-first-element';\nimport { SCROLL_OBSERVER_IGNORE_TARGET_CLASS } from '../scroll-observer-ignore-target';\nimport { SCROLL_OBSERVER_LAST_ELEMENT_CLASS } from '../scroll-observer-last-element';\nimport { OBSERVE_SCROLL_STATE } from './observe-scroll-state.constants';\nimport { ScrollObserverScrollState } from './observe-scroll-state.types';\n\nexport const SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS = 'et-scroll-observer-observing-first-element';\nexport const SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS = 'et-scroll-observer-observing-last-element';\n\n@Directive({\n selector: '[etObserveScrollState]',\n exportAs: 'etObserveScrollState',\n standalone: true,\n providers: [\n {\n provide: OBSERVE_SCROLL_STATE,\n useExisting: ObserveScrollStateDirective,\n },\n ],\n})\nexport class ObserveScrollStateDirective implements OnInit, OnDestroy {\n private readonly _destroy$ = createDestroy();\n\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _contentObserverService = inject(ContentObserverService);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n\n private get _firstCurrentChild() {\n const explicitFirstElement = this._elementRef.nativeElement.querySelector(\n `.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`,\n ) as HTMLElement | null;\n\n if (explicitFirstElement) {\n return explicitFirstElement;\n }\n\n const element = this._elementRef.nativeElement.children[0] as HTMLElement | null;\n\n return this._getNonIgnoredChild(element, 'next');\n }\n\n private get _lastCurrentChild() {\n const explicitLastElement = this._elementRef.nativeElement.querySelector(\n `.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`,\n ) as HTMLElement | null;\n\n if (explicitLastElement) {\n return explicitLastElement;\n }\n\n const element = this._elementRef.nativeElement.children[\n this._elementRef.nativeElement.children.length - 1\n ] as HTMLElement | null;\n\n return this._getNonIgnoredChild(element, 'previous');\n }\n\n @Input({ transform: numberAttribute })\n rootMargin = 0;\n\n @Input()\n get observerThreshold(): number | number[] {\n return this._threshold;\n }\n set observerThreshold(value: unknown) {\n if (Array.isArray(value)) {\n this._threshold = value.map((threshold) => numberAttribute(threshold));\n return;\n }\n\n this._threshold = numberAttribute(value);\n }\n private _threshold: number | number[] = [0.99, 0.99999, 0.9999, 0.999, 1];\n\n private _intersectionObserver: IntersectionObserver | null = null;\n\n private get _observerElements() {\n const firstEl = this._elementRef.nativeElement.querySelector(`.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`);\n const lastEl = this._elementRef.nativeElement.querySelector(`.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`);\n\n if (!firstEl || !lastEl) return null;\n\n return {\n first: firstEl,\n last: lastEl,\n };\n }\n\n @Output('etObserveScrollState')\n valueChange = new EventEmitter<ScrollObserverScrollState>();\n\n ngOnInit(): void {\n this._contentObserverService\n .observe(this._elementRef.nativeElement)\n .pipe(\n debounceTime(25),\n tap(() => this._checkChildren()),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._resizeObserverService\n .observe(this._elementRef.nativeElement)\n .pipe(\n debounceTime(25),\n tap(() => {\n const canScroll = elementCanScroll(this._elementRef.nativeElement);\n if ((!this._intersectionObserver && canScroll) || (this._intersectionObserver && !canScroll)) {\n this._checkChildren();\n }\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._checkChildren();\n }\n\n ngOnDestroy(): void {\n this._clearIntersectionObserver();\n }\n\n private _checkChildren() {\n this._clearIntersectionObserver();\n\n if (\n this._firstCurrentChild === this._lastCurrentChild ||\n !this._firstCurrentChild ||\n !this._lastCurrentChild ||\n !elementCanScroll(this._elementRef.nativeElement)\n ) {\n this._unobserve();\n\n this.valueChange.emit({\n isAtStart: true,\n isAtEnd: true,\n canScroll: false,\n });\n } else {\n this._intersectionObserver = this._initiateIntersectionObserver();\n\n this._observe();\n }\n }\n\n private _initiateIntersectionObserver() {\n const observer = new IntersectionObserver(\n (entries) => {\n const elements = this._observerElements;\n\n if (!elements) return;\n\n const isAtStart = entries.find((entry) => entry.target === elements.first)?.isIntersecting ?? false;\n const isAtEnd = entries.find((entry) => entry.target === elements.last)?.isIntersecting ?? false;\n\n this.valueChange.emit({\n isAtStart,\n isAtEnd,\n canScroll: !isAtStart || !isAtEnd,\n });\n },\n {\n root: this._elementRef.nativeElement,\n rootMargin: this.rootMargin ? `${this.rootMargin}px` : undefined,\n threshold: this._threshold,\n },\n );\n\n return observer;\n }\n\n private _observe() {\n const elements = this._observerElements;\n\n if (!elements) return;\n\n this._intersectionObserver?.observe(elements.first);\n this._intersectionObserver?.observe(elements.last);\n\n elements.first.classList.add(SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS);\n elements.last.classList.add(SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS);\n }\n\n private _unobserve() {\n const elements = this._observerElements;\n\n if (!elements) return;\n\n this._intersectionObserver?.unobserve(elements.first);\n this._intersectionObserver?.unobserve(elements.last);\n\n elements.first.classList.remove(SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS);\n elements.last.classList.remove(SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS);\n }\n\n private _clearIntersectionObserver() {\n this._intersectionObserver?.disconnect();\n this._intersectionObserver = null;\n }\n\n private _getNonIgnoredChild(element: HTMLElement | null, direction: 'previous' | 'next'): HTMLElement | null {\n if (!element) {\n return null;\n }\n\n if (element?.classList.contains(SCROLL_OBSERVER_IGNORE_TARGET_CLASS)) {\n const nextElement = element[`${direction}ElementSibling`] as HTMLElement | null;\n\n if (!nextElement) {\n return null;\n }\n\n return this._getNonIgnoredChild(nextElement, direction);\n }\n\n return element;\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Output,\n Signal,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { takeUntil, tap } from 'rxjs';\nimport { IntersectionObserverService } from '../../services';\nimport { createDestroy, signalHostClasses } from '../../utils';\n\nexport const OBSERVE_VISIBILITY_TOKEN = new InjectionToken<ObserveVisibilityDirective>('OBSERVE_VISIBILITY_TOKEN');\n\nexport interface ObserveVisibilityChange {\n visible: boolean;\n isAbove: boolean;\n isBelow: boolean;\n isLeft: boolean;\n isRight: boolean;\n entry: IntersectionObserverEntry;\n}\n\nexport const signalVisibilityChangeClasses = (cfg: {\n name: string;\n signal: Signal<ObserveVisibilityChange | null | undefined>;\n}) => ({\n [`${cfg.name}--is-left`]: computed(() => cfg.signal()?.isLeft),\n [`${cfg.name}--is-right`]: computed(() => cfg.signal()?.isRight),\n [`${cfg.name}--is-above`]: computed(() => cfg.signal()?.isAbove),\n [`${cfg.name}--is-below`]: computed(() => cfg.signal()?.isBelow),\n [`${cfg.name}--is-visible`]: computed(() => cfg.signal()?.visible),\n});\n\n@Directive({\n selector: '[etObserveVisibility]',\n standalone: true,\n providers: [\n {\n provide: OBSERVE_VISIBILITY_TOKEN,\n useExisting: ObserveVisibilityDirective,\n },\n ],\n host: {\n class: 'et-observe-visibility',\n },\n})\nexport class ObserveVisibilityDirective implements AfterViewInit {\n private readonly _destroy$ = createDestroy();\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _intersectionObserverService = inject(IntersectionObserverService);\n\n protected readonly visibilityChange = signal<ObserveVisibilityChange | null>(null);\n\n readonly currentVisibility = this.visibilityChange.asReadonly();\n readonly currentVisibility$ = toObservable(this.currentVisibility);\n\n @Output()\n readonly etObserveVisibility = new EventEmitter<ObserveVisibilityChange>();\n\n constructor() {\n signalHostClasses(\n signalVisibilityChangeClasses({\n name: 'et-observe-visibility',\n signal: this.visibilityChange,\n }),\n );\n }\n\n ngAfterViewInit(): void {\n this._intersectionObserverService\n .observe(this._elementRef)\n .pipe(\n takeUntil(this._destroy$),\n tap((entries) => {\n const entry = entries[0];\n\n if (!entry) {\n return;\n }\n\n const isAbove = entry.boundingClientRect.top < 0 && entry.boundingClientRect.bottom < 0;\n const isBelow =\n entry.boundingClientRect.top > window.innerHeight && entry.boundingClientRect.bottom > window.innerHeight;\n const isLeft = entry.boundingClientRect.left < 0 && entry.boundingClientRect.right < 0;\n const isRight =\n entry.boundingClientRect.left > window.innerWidth && entry.boundingClientRect.right > window.innerWidth;\n\n const data: ObserveVisibilityChange = {\n visible: entry.isIntersecting,\n isAbove,\n isBelow,\n isLeft,\n isRight,\n entry,\n };\n\n this.etObserveVisibility.emit(data);\n this.visibilityChange.set(data);\n }),\n )\n .subscribe();\n }\n}\n","import { Directive, Input, numberAttribute, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[etRepeat]',\n standalone: true,\n})\nexport class RepeatDirective {\n @Input('etRepeat')\n get repeatCount(): number {\n return this._repeatCount;\n }\n set repeatCount(value: unknown) {\n this._repeatCount = numberAttribute(value);\n this._render();\n }\n private _repeatCount = 2;\n\n constructor(\n private _mainTemplateRef: TemplateRef<unknown>,\n private _viewContainerRef: ViewContainerRef,\n ) {}\n\n private _render() {\n this._viewContainerRef.clear();\n\n for (let i = 0; i < this.repeatCount; i++) {\n this._viewContainerRef.createEmbeddedView(this._mainTemplateRef);\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { SeoDirective } from './seo.directive';\n\nexport const SEO_DIRECTIVE_TOKEN = new InjectionToken<SeoDirective>('SEO_DIRECTIVE_TOKEN');\n","import { SeoConfig } from './seo.directive.types';\n\nexport const mergeSeoConfig = (config: SeoConfig, parentConfig: SeoConfig): SeoConfig => {\n return {\n ...parentConfig,\n ...config,\n };\n};\n","import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { SEO_DIRECTIVE_TOKEN } from './seo.directive.constants';\nimport { AlternateLink, SeoConfig } from './seo.directive.types';\nimport { mergeSeoConfig } from './seo.directive.utils';\n\n@Directive({\n standalone: true,\n providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }],\n})\nexport class SeoDirective implements OnInit, OnDestroy {\n private readonly _metaService = inject(Meta);\n private readonly _titleService = inject(Title);\n private readonly _onDeactivate$ = new Subject<boolean>();\n\n private _isDeactivated = false;\n\n readonly parent = inject(SEO_DIRECTIVE_TOKEN, { optional: true, skipSelf: true });\n\n get config(): SeoConfig {\n return this._config;\n }\n private _config: SeoConfig = {};\n\n ngOnInit(): void {\n this.parent?._deactivate();\n }\n\n ngOnDestroy(): void {\n this._deactivate();\n this._cleanUp();\n this.parent?._activate();\n }\n\n // TODO(TRB): This should get split up into multiple methods to make it more readable\n // - updateTitle\n // - updateMeta\n // - updateLink\n updateConfig(config: SeoConfig) {\n this._config = mergeSeoConfig(config, this.parent?.config || {});\n\n if (this._isDeactivated) {\n return;\n }\n\n this._deactivate();\n this._activate();\n }\n\n _activate() {\n this._onDeactivate$.next(false);\n this._isDeactivated = false;\n\n for (const [key, value] of Object.entries(this._config)) {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else if (Array.isArray(value)) {\n value.forEach((value) => {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else {\n this._update(key, value);\n }\n });\n } else if (typeof value === 'object' && value !== null) {\n for (const [subKey, subValue] of Object.entries(value)) {\n if (subValue instanceof Observable) {\n subValue.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(`${key}:${subKey}`, value));\n } else {\n this._update(`${key}:${subKey}`, subValue);\n }\n }\n } else {\n this._update(key, value);\n }\n }\n }\n\n _deactivate() {\n this._onDeactivate$.next(true);\n this._isDeactivated = true;\n }\n\n private _update(key: string, value: unknown) {\n switch (key) {\n case 'title':\n if (value && typeof value === 'string') {\n this._titleService.setTitle(value);\n }\n break;\n\n case 'canonical':\n {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.setAttribute('href', value as string);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('href', value as string);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n case 'alternate':\n {\n const link = document.querySelector(`link[rel=\"${key}\"][hreflang=\"${(value as AlternateLink).hreflang}\"]`);\n\n if (link) {\n link.setAttribute('href', (value as AlternateLink).href);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('hreflang', (value as AlternateLink).hreflang);\n newLink.setAttribute('href', (value as AlternateLink).href);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n default:\n if (value !== undefined && value !== null) {\n const val = Array.isArray(value) ? value.join(', ') : (value as string);\n\n this._metaService.updateTag({ name: key, content: val });\n } else {\n this._metaService.removeTag(`name=\"${key}\"`);\n }\n break;\n }\n }\n\n private _cleanUp() {\n for (const key in this._config) {\n if (key === 'alternate') {\n const links = document.querySelectorAll(`link[rel=\"${key}\"]`);\n\n links.forEach((link) => {\n link.remove();\n });\n\n continue;\n }\n\n if (key === 'canonical') {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.remove();\n }\n\n continue;\n }\n\n if (\n typeof this._config[key] === 'object' &&\n this._config[key] !== null &&\n !(this._config[key] instanceof Observable)\n ) {\n for (const subKey in this._config[key] as Record<string, unknown>) {\n const parentValue =\n this.parent?.config?.[key as keyof SeoConfig]?.[subKey as keyof SeoConfig[keyof SeoConfig]];\n\n if (parentValue === undefined) {\n this._update(`${key}:${subKey}`, undefined);\n }\n }\n } else {\n const parentValue = this.parent?.config?.[key as keyof SeoConfig];\n\n if (parentValue === undefined) {\n this._update(key, null);\n }\n }\n }\n }\n}\n","/**\n * Infers the mime type of a given url or srcset.\n * If a srcset is provided, it will infer the mime type of the first url in the srcset.\n * If the srcset contains a query parameter `?fm=`, it will use the value of that parameter, since it is often used to specify the file format in image api's like contentful.\n */\nexport const inferMimeType = (srcset: string) => {\n if (!srcset) return null;\n\n const urls = srcset.split(',');\n const firstUrl = urls[0];\n\n if (!firstUrl) return null;\n\n const queryPart = firstUrl.split('?')[1] ?? '';\n const containsFm = queryPart.startsWith('fm=') || queryPart.includes('&fm=');\n let fileExtension: string | null = null;\n\n if (containsFm) {\n const fmIndex = queryPart.indexOf('fm=');\n const fmValue = queryPart\n .substring(fmIndex + 3)\n .split('&')[0]\n ?.toLowerCase();\n\n if (fmValue) {\n fileExtension = fmValue;\n }\n }\n\n if (!fileExtension) {\n const noQueryUrl = firstUrl.split('?')[0] || firstUrl;\n\n const lastDotIndex = noQueryUrl.lastIndexOf('.');\n\n if (lastDotIndex === -1) return null;\n\n fileExtension = noQueryUrl.substring(lastDotIndex + 1).toLowerCase();\n }\n\n if (fileExtension) {\n switch (fileExtension) {\n case 'avif':\n return 'image/avif';\n case 'bmp':\n return 'image/bmp';\n case 'gif':\n return 'image/gif';\n case 'ico':\n return 'image/vdn.microsoft.icon';\n case 'jpg':\n case 'jpeg':\n return 'image/jpeg';\n case 'png':\n return 'image/png';\n case 'svg':\n return 'image/svg+xml';\n case 'tif':\n case 'tiff':\n return 'image/tiff';\n case 'webp':\n return 'image/webp';\n case 'aac':\n return 'audio/aac';\n case 'abw':\n return 'application/x-abiword';\n case 'arc':\n return 'application/x-freearc';\n case 'avi':\n return 'video/x-msvideo';\n case 'azw':\n return 'application/vnd.amazon.ebook';\n case 'bin':\n return 'application/octet-stream';\n case 'bz':\n return 'application/x-bzip';\n case 'bz2':\n return 'application/x-bzip2';\n case 'cda':\n return 'application/x-cdf';\n case 'csh':\n return 'application/x-csh';\n case 'css':\n return 'text/css';\n case 'csv':\n return 'text/csv';\n case 'doc':\n return 'application/msword';\n case 'docx':\n return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n case 'eot':\n return 'application/vnd.ms-fontobject';\n case 'epub':\n return 'application/epub+zip';\n case 'gz':\n return 'application/gzip';\n case 'htm':\n case 'html':\n return 'text/html';\n case 'ics':\n return 'text/calendar';\n case 'jar':\n return 'application/java-archive';\n case 'js':\n return 'text/javascript';\n case 'json':\n return 'application/json';\n case 'jsonld':\n return 'application/ld+json';\n case 'mid':\n case 'midi':\n return 'audio/midi';\n case 'mjs':\n return 'text/javascript';\n case 'mp3':\n return 'audio/mpeg';\n case 'mp4':\n return 'video/mp4';\n case 'mpeg':\n return 'video/mpeg';\n case 'mpkg':\n return 'tapplication/vnd.apple.installer+xml';\n case 'odp':\n return 'application/vnd.oasis.opendocument.presentation';\n case 'ods':\n return 'application/vnd.oasis.opendocument.spreadsheet';\n case 'odt':\n return 'application/vnd.oasis.opendocument.text';\n case 'oga':\n return 'audio/ogg';\n case 'ogv':\n return 'video/ogg';\n case 'ogx':\n return 'application/ogg';\n case 'opus':\n return 'audio/opus';\n case 'otf':\n return 'font/otf';\n case 'pdf':\n return 'application/pdf';\n case 'php':\n return 'application/x-httpd-php';\n case 'ppt':\n return 'application/vnd.ms-powerpoint';\n case 'pptx':\n return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n case 'rar':\n return 'application/vnd.rar';\n case 'rtf':\n return 'application/rtf';\n case 'sh':\n return 'application/x-sh';\n case 'tar':\n return 'application/x-tar';\n case 'ts':\n return 'video/mp2t';\n case 'ttf':\n return 'font/ttf';\n case 'txt':\n return 'text/plain';\n case 'vsd':\n return 'application/vnd.visio';\n case 'wav':\n return 'audio/wav';\n case 'weba':\n return 'audio/webm';\n case 'webm':\n return 'video/webm';\n case 'woff':\n return 'font/woff';\n case 'woff2':\n return 'font/woff2';\n case 'xhtml':\n return 'application/xhtml+xml';\n case 'xls':\n return 'application/vnd.ms-excel';\n case 'xlsx':\n return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n case 'xml':\n return 'application/xml';\n case 'xul':\n return 'application/vnd.mozilla.xul+xml';\n case 'zip':\n return 'application/zip';\n case '3gp':\n return 'video/3gpp';\n case '3g2':\n return 'video/3gpp2';\n case '7z':\n return 'application/x-7z-compressed';\n\n default:\n return null;\n }\n }\n\n return null;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { inferMimeType } from './infer-mime-type.util';\n\n@Pipe({\n name: 'inferMimeType',\n standalone: true,\n})\nexport class InferMimeTypePipe implements PipeTransform {\n transform = inferMimeType;\n}\n","import { NormalizedGameResultType } from './normalize-game-result-type.types';\n\n// TODO(TRB): Add correct type once provided by API\nexport const normalizeGameResultType = (type: string | null): NormalizedGameResultType | null => {\n if (!type) {\n return null;\n }\n\n switch (type) {\n case 'extra_time':\n return {\n i18n: 'game-result-type.extra-time',\n shortCode: 'AET',\n text: 'After Extra Time',\n };\n\n case 'penalty':\n return {\n i18n: 'game-result-type.penalty',\n shortCode: 'PSO',\n text: 'Penalty shootout',\n };\n\n case 'golden_goal':\n return {\n i18n: 'game-result-type.golden-goal',\n shortCode: 'GG',\n text: 'Golden Goal',\n };\n\n case 'default':\n default:\n return {\n i18n: 'game-result-type.full-time',\n shortCode: 'FT',\n text: 'Full Time',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeGameResultType } from './normalize-game-result-type.util';\n\n@Pipe({ name: 'etNormalizeGameResultType', standalone: true })\nexport class NormalizeGameResultTypePipe implements PipeTransform {\n transform = normalizeGameResultType;\n}\n","import { MatchListView } from '@ethlete/types';\nimport { MatchStateType } from './normalize-match-state.constants';\n\nexport const normalizeMatchState = (match: MatchListView | null | undefined) => {\n if (match?.isCompletedByReferee) {\n return MatchStateType.AUTO_WIN;\n } else if (match?.status === 'preparing') {\n return MatchStateType.PRE_MATCH;\n } else if (match?.status === 'started') {\n return MatchStateType.LIVE;\n } else if (match?.status === 'published' || match?.status === 'finished') {\n return MatchStateType.POST_MATCH;\n } else if (match?.round.state !== 'preparing') {\n return MatchStateType.PREPARING_ROUND;\n }\n\n return null;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchState } from './normalize-match-state.util';\n\n@Pipe({ name: 'etNormalizeMatchState', standalone: true })\nexport class NormalizeMatchStatePipe implements PipeTransform {\n transform = normalizeMatchState;\n}\n","import { MatchListView } from '@ethlete/types';\nimport { MatchStateType, normalizeMatchState } from '../normalize-match-state';\nimport { NormalizedMatchParticipant, NormalizedMatchParticipants } from './normalize-match-participants.types';\n\nexport const normalizeMatchParticipants = (match: MatchListView | null): NormalizedMatchParticipants | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n return {\n home: normalizeMatchParticipant(match, 'home'),\n away: normalizeMatchParticipant(match, 'away'),\n };\n};\n\nexport const normalizeMatchParticipant = (\n match: MatchListView | null,\n side: 'home' | 'away',\n): NormalizedMatchParticipant | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n const participant = match[side];\n const participantType = match.home?.type ?? match.away?.type ?? 'unknown';\n\n if (!participant) {\n if (matchState === MatchStateType.POST_MATCH || matchState === MatchStateType.AUTO_WIN) {\n return {\n participantType,\n type: 'none',\n i18n: 'match-participant.none',\n text: 'No opponent',\n data: participant,\n };\n } else {\n return {\n participantType,\n type: 'tbd',\n i18n: 'match-participant.tbd',\n text: 'TBD',\n data: participant,\n };\n }\n } else {\n return {\n participantType,\n type: 'participant',\n data: participant,\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchParticipants } from './normalize-match-participants.util';\n\n@Pipe({ name: 'etNormalizeMatchParticipants', standalone: true })\nexport class NormalizeMatchParticipantsPipe implements PipeTransform {\n transform = normalizeMatchParticipants;\n}\n","import { MatchListView, MatchRankingView } from '@ethlete/types';\nimport { MatchStateType, normalizeMatchState } from '../normalize-match-state';\nimport { NormalizedMatchScore } from './normalize-match-score.types';\n\nconst EMPTY_SCORE: NormalizedMatchScore = {\n home: { score: 'match-score.placeholder', isWinner: false },\n away: { score: 'match-score.placeholder', isWinner: false },\n isNumeric: false,\n subLine: null,\n};\n\nexport const normalizeMatchScore = (match: MatchListView | null | undefined): NormalizedMatchScore | null => {\n if (!match) {\n return null;\n }\n\n const matchState = normalizeMatchState(match);\n const subLine = getMatchScoreSubLine(match);\n\n if (!match.homeScore && !match.awayScore) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n if (isKnockoutMatch(match)) {\n if (matchState === MatchStateType.PRE_MATCH || matchState === MatchStateType.LIVE) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n return {\n home: {\n score: getKnockoutMatchScore(match.homeScore),\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: getKnockoutMatchScore(match.awayScore),\n isWinner: match.awayScore?.status === 'won',\n },\n subLine,\n isNumeric: false,\n };\n } else if (isGroupMatch(match)) {\n if (match.games.length === 1) {\n // Return the score if only one game has been played\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n } else {\n return {\n ...getGroupMatchPoints(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n } else {\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n};\n\nexport const isKnockoutMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return (\n match.matchType === 'single_elimination' ||\n match.matchType === 'double_elimination' ||\n match.matchType === 'fifa_swiss'\n );\n};\n\nexport const isGroupMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return match.matchType === 'groups' || match.matchType === 'league';\n};\n\nexport const getKnockoutMatchScore = (score: MatchRankingView | null | undefined) => {\n if (score?.status === 'won') {\n return 'match-score.knockout.won';\n } else if (score?.status === 'lost') {\n return 'match-score.knockout.lost';\n } else if (score?.status === 'tie') {\n return 'match-score.knockout.tie';\n }\n\n return null;\n};\n\nexport const getMatchScoreSubLine = (match: MatchListView | null | undefined) => {\n if (isKnockoutMatch(match)) {\n return null;\n } else if (isGroupMatch(match)) {\n return 'match-score.groups.sub-line';\n } else {\n return null;\n }\n};\n\nexport const getGroupMatchScore = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.ownPoints || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.ownPoints || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n\nexport const getGroupMatchPoints = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.score || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.score || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchScore } from './normalize-match-score.util';\n\n@Pipe({ name: 'etNormalizeMatchScore', standalone: true })\nexport class NormalizeMatchScorePipe implements PipeTransform {\n transform = normalizeMatchScore;\n}\n","import { StageType } from '@ethlete/types';\nimport { Translatable } from '../../types';\n\nexport const normalizeMatchType = (matchType: StageType | null | undefined): Translatable | null => {\n if (!matchType) {\n return null;\n }\n\n switch (matchType) {\n case 'double_elimination':\n return {\n i18n: 'match-type.double-elimination',\n text: 'Double Elimination',\n };\n case 'single_elimination':\n return {\n i18n: 'match-type.single-elimination',\n text: 'Single Elimination',\n };\n case 'fifa_swiss':\n return {\n i18n: 'match-type.fifa-swiss',\n text: 'FIFA Swiss',\n };\n case 'groups':\n return {\n i18n: 'match-type.groups',\n text: 'Groups',\n };\n case 'league':\n return {\n i18n: 'match-type.league',\n text: 'League',\n };\n case 'pools':\n return {\n i18n: 'match-type.pools',\n text: 'Pools',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchType } from './normalize-match-type.util';\n\n@Pipe({ name: 'etNormalizeMatchType', standalone: true })\nexport class NormalizeMatchTypePipe implements PipeTransform {\n transform = normalizeMatchType;\n}\n","import { TrackByFunction } from '@angular/core';\n\nexport const toArray = (value: number) => {\n return Array.from({ length: value }, (_, i) => i);\n};\n\nexport const toArrayTrackByFn: TrackByFunction<number> = (_, item) => item;\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { toArray } from './to-array.util';\n\n@Pipe({ name: 'toArray', standalone: true })\nexport class ToArrayPipe implements PipeTransform {\n transform = toArray;\n}\n","import { ElementRef, inject } from '@angular/core';\nimport { createComponentId, signalHostAttributes, signalHostClasses, signalHostStyles } from '../utils';\n\nexport const createPropHandlers = () => {\n const id = createComponentId('et-props');\n\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n const classes = signalHostClasses({});\n const attributes = signalHostAttributes({});\n const styles = signalHostStyles({});\n\n return {\n classes,\n attributes,\n styles,\n id,\n elementRef,\n };\n};\n\nexport type PropHandlers = ReturnType<typeof createPropHandlers>;\n","import { computed, signal } from '@angular/core';\n\nexport const createElementDictionary = () => {\n const dictionary = {\n ids: signal<string[]>([]),\n elements: signal<Record<string, HTMLElement>>({}),\n };\n\n const firstElement = computed(() => {\n const id = dictionary.ids()[0];\n return id ? (dictionary.elements()[id] ?? null) : null;\n });\n\n const firstId = computed(() => {\n const id = dictionary.ids()[0];\n return id ?? null;\n });\n\n const ids = computed(() => dictionary.ids());\n const elements = computed(() => ids().map((id) => dictionary.elements()[id]!));\n\n const isEmpty = computed(() => dictionary.ids().length === 0);\n\n const has = (id: string) => {\n return dictionary.ids().includes(id);\n };\n\n const push = (id: string, element: HTMLElement) => {\n dictionary.ids.set([...dictionary.ids(), id]);\n dictionary.elements.set({ ...dictionary.elements(), [id]: element });\n };\n\n const remove = (id: string) => {\n dictionary.ids.set(dictionary.ids().filter((i) => i !== id));\n dictionary.elements.set(Object.fromEntries(Object.entries(dictionary.elements()).filter(([k]) => k !== id)));\n };\n\n const get = (id: string) => {\n return dictionary.elements()[id] ?? null;\n };\n\n return {\n ids,\n elements,\n has,\n get,\n push,\n remove,\n isEmpty,\n firstElement,\n firstId,\n };\n};\n","import { PropHandlers } from './create-prop-handlers';\nimport { Props, PropsInternal } from './create-props';\n\nexport interface BindPropsOptions {\n props: Props | PropsInternal;\n handlers: PropHandlers;\n}\n\nexport const bindProps = (config: BindPropsOptions) => {\n const props = config.props as PropsInternal;\n const {\n attachEventListeners,\n classBindings,\n attributeBindings,\n styleBindings,\n staticAttributeBindings,\n staticClassBindings,\n staticStyleBindings,\n attached,\n single,\n name,\n bindId,\n attachedElements,\n } = props;\n\n const { attributes, classes, elementRef, id, styles } = config.handlers;\n const el = elementRef.nativeElement;\n\n if (attached()) {\n if (attachedElements.has(id)) {\n return;\n } else if (single) {\n const firstAttachedRefElement = attachedElements.first();\n\n console.error(\n `[${name}] These props can only be attached to a single element at a time.\\n\\n Already attached to \\n`,\n firstAttachedRefElement,\n '\\n Trying to attach to \\n',\n el,\n );\n\n return;\n }\n }\n\n attachedElements.push(id, el);\n\n if (bindId) {\n el.id = id;\n }\n\n if (classBindings) {\n classes.pushMany(classBindings);\n }\n\n if (attributeBindings) {\n attributes.pushMany(attributeBindings);\n }\n\n if (styleBindings) {\n styles.pushMany(styleBindings);\n }\n\n if (staticAttributeBindings) {\n for (const key in staticAttributeBindings) {\n el.setAttribute(key, `${staticAttributeBindings[key]}`);\n }\n }\n\n if (staticClassBindings) {\n el.classList.add(...staticClassBindings);\n }\n\n if (staticStyleBindings) {\n for (const key in staticStyleBindings) {\n el.style.setProperty(key, `${staticStyleBindings[key]}`);\n }\n }\n\n if (attachEventListeners) {\n attachEventListeners({\n on: el.addEventListener.bind(el),\n element: el,\n });\n }\n};\n\nexport interface UnbindPropsOptions {\n props: Props | PropsInternal;\n handlers: PropHandlers;\n}\n\nexport const unbindProps = (config: UnbindPropsOptions) => {\n const props = config.props as PropsInternal;\n\n props.attachedElements.remove(config.handlers.id);\n};\n","import { DestroyRef, Signal, afterNextRender, computed, inject } from '@angular/core';\nimport { PropHandlers, createPropHandlers } from './create-prop-handlers';\nimport { createElementDictionary } from './element-dictionary';\nimport { bindProps, unbindProps } from './props-binding';\n\nexport type Props = Readonly<{\n attached: Signal<boolean>;\n attachedElements: PropsAttachedElements;\n}>;\n\nexport interface PropsAttachedElements {\n first: Signal<HTMLElement | null>;\n firstId: Signal<string | null>;\n get(id: string): HTMLElement | null;\n}\n\nexport interface PropsAttachedElementsInternal extends PropsAttachedElements {\n has: (id: string) => boolean;\n push: (id: string, element: HTMLElement) => void;\n remove: (id: string) => void;\n}\n\nexport interface PropsInternal {\n single: boolean;\n name: string;\n bindId: boolean;\n\n attached: Signal<boolean>;\n attachedElements: PropsAttachedElementsInternal;\n\n classBindings: Record<string, Signal<unknown>> | null;\n attributeBindings: Record<string, Signal<unknown>> | null;\n styleBindings: Record<string, Signal<unknown>> | null;\n\n staticClassBindings: string[] | null;\n staticAttributeBindings: Record<string, unknown> | null;\n staticStyleBindings: Record<string, unknown> | null;\n\n attachEventListeners: ((context: { on: HTMLElement['addEventListener']; element: HTMLElement }) => void) | null;\n}\n\nexport interface CreatePropsOptions {\n name: string;\n bindId?: boolean;\n single?: boolean;\n classes?: Record<string, Signal<unknown>>;\n attributes?: Record<string, Signal<unknown>>;\n styles?: Record<string, Signal<unknown>>;\n staticClasses?: string[];\n staticAttributes?: Record<string, unknown>;\n staticStyles?: Record<string, unknown>;\n listeners?: (context: { on: HTMLElement['addEventListener']; element: HTMLElement }) => void;\n}\n\nexport const createProps = (props: CreatePropsOptions): Props => {\n const {\n bindId = false,\n single = true,\n classes: classBindings,\n attributes: attributeBindings,\n styles: styleBindings,\n staticAttributes: staticAttributeBindings = null,\n staticClasses: staticClassBindings = null,\n staticStyles: staticStyleBindings = null,\n listeners,\n name,\n } = props;\n\n const dictionary = createElementDictionary();\n const attached = computed(() => !dictionary.isEmpty());\n\n const attachedElements: PropsAttachedElementsInternal = {\n first: dictionary.firstElement,\n firstId: dictionary.firstId,\n\n has: dictionary.has,\n push: dictionary.push,\n remove: dictionary.remove,\n get: dictionary.get,\n };\n\n const data: PropsInternal = {\n name,\n single,\n bindId,\n\n attached,\n attachedElements,\n\n classBindings: classBindings ?? null,\n attributeBindings: attributeBindings ?? null,\n styleBindings: styleBindings ?? null,\n\n staticAttributeBindings,\n staticClassBindings,\n staticStyleBindings,\n\n attachEventListeners: listeners ?? null,\n };\n\n return data as Props;\n};\n\nexport interface HostProps {\n props: Props;\n handlers: PropHandlers;\n}\n\nexport const createHostProps = (props: CreatePropsOptions): HostProps => {\n const data = createProps(props);\n const handlers = createPropHandlers();\n\n afterNextRender({\n write: () => {\n bindProps({\n handlers,\n props: data,\n });\n },\n });\n\n const destroyRef = inject(DestroyRef);\n\n destroyRef.onDestroy(() => {\n unbindProps({\n handlers,\n props: data,\n });\n });\n\n return { props: data, handlers };\n};\n","import { afterNextRender } from '@angular/core';\n\nexport const createSetup = <T extends Record<string, unknown>>(config: {\n setupFn: (params: T) => void;\n this: ThisType<unknown>;\n}) => {\n let didCallSetup = false;\n\n afterNextRender(() => {\n if (!didCallSetup) {\n console.error('The setup() function was not called. Please call it inside your constructor.', config.this);\n return;\n }\n });\n\n return (params: T) => {\n if (didCallSetup) {\n console.error(\n 'The setup() function was already called. Please call it only once. \\n\\n',\n 'Instance containing the setup() call \\n',\n config.this,\n '\\n\\n Setup was called with\\n',\n params,\n );\n return;\n }\n\n didCallSetup = true;\n config.setupFn(params);\n };\n};\n","import { Injector, Signal, WritableSignal, effect, inject, runInInjectionContext } from '@angular/core';\n\nexport const createDependencyStash = <T extends Record<string, WritableSignal<unknown>>>(stash: T) => {\n const injector = inject(Injector);\n\n const provideSignal = <K extends keyof T>(data: { signal: Signal<ReturnType<T[K]>>; for: K }) => {\n runInInjectionContext(injector, () => {\n effect(\n () => {\n stash[data.for]!.set(data.signal());\n },\n { allowSignalWrites: true },\n );\n });\n };\n\n const provideValue = <K extends keyof T>(data: { value: ReturnType<T[K]>; for: K }) => {\n stash[data.for]!.set(data.value);\n };\n\n return {\n ...stash,\n provideSignal,\n provideValue,\n };\n};\n","import { DestroyRef, Directive, afterNextRender, inject, input } from '@angular/core';\nimport { createPropHandlers } from './create-prop-handlers';\nimport { Props, PropsInternal } from './create-props';\nimport { bindProps, unbindProps } from './props-binding';\n\n@Directive({\n selector: '[etProps]',\n standalone: true,\n})\nexport class PropsDirective {\n destroyRef = inject(DestroyRef);\n\n props = input.required<PropsInternal, Props>({ alias: 'etProps', transform: (d) => d as PropsInternal });\n\n propHandlers = createPropHandlers();\n\n constructor() {\n afterNextRender({\n write: () => {\n bindProps({\n handlers: this.propHandlers,\n props: this.props(),\n });\n },\n });\n\n this.destroyRef.onDestroy(() => {\n unbindProps({\n handlers: this.propHandlers,\n props: this.props(),\n });\n });\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injector, Signal, TemplateRef, computed } from '@angular/core';\n\nexport type AnyTemplateType =\n | string\n | TemplateRef<unknown>\n | ComponentType<unknown>\n | TemplateRefWithContext\n | ComponentTypeWithInputs;\n\nexport type TemplateRefWithContext<T = Record<string, unknown> | undefined, J = unknown> = {\n template: TemplateRef<J>;\n context?: T;\n injector?: Injector;\n};\n\nexport type ComponentTypeWithInputs<T = Record<string, unknown> | undefined, J = unknown> = {\n component: ComponentType<J>;\n inputs?: T;\n injector?: Injector;\n};\n\nexport type StringTemplate = {\n type: 'string';\n value: string;\n};\n\nexport type NgTemplateTemplate = {\n type: 'template';\n value: TemplateRef<unknown>;\n context?: Record<string, unknown>;\n injector: Injector | null;\n};\n\nexport type ComponentTemplate = {\n type: 'component';\n value: ComponentType<unknown>;\n inputs?: Record<string, unknown>;\n injector: Injector | null;\n};\n\nexport const templateComputed = (templateSignal: Signal<AnyTemplateType | null>) =>\n computed((): StringTemplate | NgTemplateTemplate | ComponentTemplate | null => {\n const content = templateSignal();\n\n if (!content) return null;\n\n if (typeof content === 'string') {\n return {\n type: 'string',\n value: content,\n };\n }\n\n if (content instanceof TemplateRef) {\n return {\n type: 'template',\n value: content,\n injector: null,\n };\n }\n\n if ('component' in content) {\n return {\n type: 'component',\n value: content.component,\n inputs: content.inputs,\n injector: content.injector ?? null,\n };\n }\n\n if ('template' in content) {\n return {\n type: 'template',\n value: content.template,\n context: content.context,\n injector: content.injector ?? null,\n };\n }\n\n return {\n type: 'component',\n value: content,\n injector: null,\n };\n });\n","import { QueryList, Type } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type NgClassType =\n | string\n | string[]\n | Set<string>\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [klass: string]: any;\n }\n | null\n | undefined;\n\nexport type HostDirective =\n | Type<unknown>\n | {\n directive: Type<unknown>;\n inputs?: string[];\n outputs?: string[];\n };\n\nexport class TypedQueryList<T> extends QueryList<T> {\n override [Symbol.iterator]: () => Iterator<T> = () => {\n return super[Symbol.iterator]() as Iterator<T>;\n };\n\n override get changes(): Observable<TypedQueryList<T>> {\n return super.changes as Observable<TypedQueryList<T>>;\n }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const AT_LEAST_ONE_REQUIRED = 'atLeastOneRequired';\n\nexport interface ValidateAtLeastOneRequiredConfig {\n /**\n * Keys of form controls to validate in the supplied form group\n */\n keys: string[];\n\n /**\n * If true, the value `false` will result in a validation error\n * @default false\n */\n checkFalse?: boolean;\n}\n\nexport const ValidateAtLeastOneRequired = (config: ValidateAtLeastOneRequiredConfig): ValidatorFn => {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const { keys, checkFalse } = config;\n\n if (!formGroup) {\n return { [AT_LEAST_ONE_REQUIRED]: true };\n }\n\n const controlValues = keys.map((key) => formGroup.get(key)?.value);\n\n const areAllFalsy = controlValues.every(\n (value) =>\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (checkFalse && value === false),\n );\n\n if (areAllFalsy) {\n return { [AT_LEAST_ONE_REQUIRED]: true };\n }\n\n return null;\n };\n};\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const IS_ARRAY_NOT_EMPTY = 'isArrayNotEmpty';\n\nexport const IsArrayNotEmpty = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n return value.length > 0 ? null : { [IS_ARRAY_NOT_EMPTY]: true };\n};\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const IS_EMAIL = 'isEmail';\n\nexport const IsEmail = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n const regex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$/;\n return regex.test(value) ? null : { [IS_EMAIL]: true };\n};\n","import { AbstractControl } from '@angular/forms';\n\nexport const MUST_MATCH = 'mustMatch';\n\nexport const MustMatch = (controlName: string, matchingControlName: string) => {\n return (formGroup: AbstractControl) => {\n const control = formGroup.get(controlName);\n const matchingControl = formGroup.get(matchingControlName);\n\n if (matchingControl?.errors && !matchingControl.errors[MUST_MATCH]) {\n return null;\n }\n\n if (control?.value !== matchingControl?.value) {\n matchingControl?.setErrors({ [MUST_MATCH]: true });\n return { [MUST_MATCH]: true };\n } else {\n matchingControl?.setErrors(null);\n return null;\n }\n };\n};\n","import { ValidateAtLeastOneRequired } from './at-least-one-required.validator';\nimport { IsArrayNotEmpty } from './is-array-not-empty.validator';\nimport { IsEmail } from './is-email.validator';\nimport { MustMatch } from './must-match.validator';\n\nexport * from './at-least-one-required.validator';\nexport * from './is-array-not-empty.validator';\nexport * from './is-email.validator';\nexport * from './must-match.validator';\n\nexport const Validators = {\n MustMatch,\n IsEmail,\n IsArrayNotEmpty,\n ValidateAtLeastOneRequired,\n} as const;\n","export * from './lib/components/structured-data';\nexport * from './lib/constants';\nexport * from './lib/decorators/memo';\nexport * from './lib/directives/animatable';\nexport * from './lib/directives/animated-if';\nexport * from './lib/directives/animated-lifecycle';\nexport * from './lib/directives/animated-overlay';\nexport * from './lib/directives/click-outside';\nexport * from './lib/directives/cursor-drag-scroll';\nexport * from './lib/directives/debug';\nexport * from './lib/directives/delayable';\nexport * from './lib/directives/is-active-element';\nexport * from './lib/directives/is-element';\nexport * from './lib/directives/let';\nexport * from './lib/directives/observe-content';\nexport * from './lib/directives/observe-resize';\nexport * from './lib/directives/observe-scroll-state';\nexport * from './lib/directives/observe-visibility';\nexport * from './lib/directives/repeat';\nexport * from './lib/directives/root-boundary';\nexport * from './lib/directives/scroll-observer-first-element';\nexport * from './lib/directives/scroll-observer-ignore-target';\nexport * from './lib/directives/scroll-observer-last-element';\nexport * from './lib/directives/seo';\nexport * from './lib/pipes/infer-mime-type';\nexport * from './lib/pipes/normalize-game-result-type';\nexport * from './lib/pipes/normalize-match-participants';\nexport * from './lib/pipes/normalize-match-score';\nexport * from './lib/pipes/normalize-match-state';\nexport * from './lib/pipes/normalize-match-type';\nexport * from './lib/pipes/to-array';\nexport * from './lib/props';\nexport * from './lib/services';\nexport * from './lib/types';\nexport * from './lib/utils';\nexport * from './lib/validators';\n\n// Burst cache\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CURSOR_DRAG_SCROLLING_CLASS","i1.AnimatableDirective","debounceTime"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ethlete-core.mjs","sources":["../../../../libs/core/src/lib/components/structured-data/structured-data.component.ts","../../../../libs/core/src/lib/constants/viewport.constants.ts","../../../../libs/core/src/lib/decorators/memo/memo.decorator.ts","../../../../libs/core/src/lib/utils/destroy.utils.ts","../../../../libs/core/src/lib/utils/active-selection-model.utils.ts","../../../../libs/core/src/lib/utils/angular.utils.ts","../../../../libs/core/src/lib/utils/animation.utils.ts","../../../../libs/core/src/lib/utils/clamp.util.ts","../../../../libs/core/src/lib/utils/clone.util.ts","../../../../libs/core/src/lib/utils/component-id.utils.ts","../../../../libs/core/src/lib/utils/cookie.util.ts","../../../../libs/core/src/lib/utils/equal.util.ts","../../../../libs/core/src/lib/utils/form.utils.ts","../../../../libs/core/src/lib/utils/inject.utils.ts","../../../../libs/core/src/lib/utils/intersection-observer.utils.ts","../../../../libs/core/src/lib/utils/key-press-manager.utils.ts","../../../../libs/core/src/lib/utils/media-query-observable.util.ts","../../../../libs/core/src/lib/utils/mutation-observable.util.ts","../../../../libs/core/src/lib/utils/object.utils.ts","../../../../libs/core/src/lib/utils/reactive-binding.util.ts","../../../../libs/core/src/lib/utils/resize-observable.util.ts","../../../../libs/core/src/lib/utils/round.utils.ts","../../../../libs/core/src/lib/utils/runtime-error.utils.ts","../../../../libs/core/src/lib/utils/scrollable.utils.ts","../../../../libs/core/src/lib/utils/selection-model.utils.ts","../../../../libs/core/src/lib/services/click-observer.service.ts","../../../../libs/core/src/lib/services/content-observer.service.ts","../../../../libs/core/src/lib/services/focus-visible.service.ts","../../../../libs/core/src/lib/services/intersection-observer.service.ts","../../../../libs/core/src/lib/services/resize-observer.service.ts","../../../../libs/core/src/lib/services/router-state.service.ts","../../../../libs/core/src/lib/services/viewport.service.ts","../../../../libs/core/src/lib/utils/signal.utils.ts","../../../../libs/core/src/lib/utils/smart-block-scroll-strategy.utils.ts","../../../../libs/core/src/lib/utils/value.utils.ts","../../../../libs/core/src/lib/utils/viewport.util.ts","../../../../libs/core/src/lib/directives/animatable/animatable.directive.ts","../../../../libs/core/src/lib/directives/animated-lifecycle/animated-lifecycle.directive.ts","../../../../libs/core/src/lib/directives/animated-if/animated-if.directive.ts","../../../../libs/core/src/lib/directives/root-boundary/root-boundary.directive.ts","../../../../libs/core/src/lib/directives/animated-overlay/animated-overlay.directive.ts","../../../../libs/core/src/lib/directives/click-outside/click-outside.directive.ts","../../../../libs/core/src/lib/directives/cursor-drag-scroll/cursor-drag-scroll.constants.ts","../../../../libs/core/src/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.ts","../../../../libs/core/src/lib/directives/debug/debug.directive.ts","../../../../libs/core/src/lib/directives/delayable/delayable.directive.ts","../../../../libs/core/src/lib/directives/is-active-element/is-active-element.directive.ts","../../../../libs/core/src/lib/directives/is-element/is-element.directive.ts","../../../../libs/core/src/lib/directives/let/let.types.ts","../../../../libs/core/src/lib/directives/let/let.directive.ts","../../../../libs/core/src/lib/directives/observe-content/observe-content.directive.ts","../../../../libs/core/src/lib/directives/observe-resize/observe-resize.directive.ts","../../../../libs/core/src/lib/directives/observe-scroll-state/observe-scroll-state.constants.ts","../../../../libs/core/src/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.ts","../../../../libs/core/src/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.ts","../../../../libs/core/src/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.ts","../../../../libs/core/src/lib/directives/observe-scroll-state/observe-scroll-state.directive.ts","../../../../libs/core/src/lib/directives/observe-visibility/observe-visibility.directive.ts","../../../../libs/core/src/lib/directives/repeat/repeat.directive.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.constants.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.utils.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.ts","../../../../libs/core/src/lib/pipes/infer-mime-type/infer-mime-type.util.ts","../../../../libs/core/src/lib/pipes/infer-mime-type/infer-mime-type.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-game-result-type/normalize-game-result-type.util.ts","../../../../libs/core/src/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-state/normalize-match-state.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-state/normalize-match-state.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-participants/normalize-match-participants.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-score/normalize-match-score.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-score/normalize-match-score.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-type/normalize-match-type.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-type/normalize-match-type.pipe.ts","../../../../libs/core/src/lib/pipes/to-array/to-array.util.ts","../../../../libs/core/src/lib/pipes/to-array/to-array.pipe.ts","../../../../libs/core/src/lib/props/create-prop-handlers.ts","../../../../libs/core/src/lib/props/element-dictionary.ts","../../../../libs/core/src/lib/props/props-binding.ts","../../../../libs/core/src/lib/props/create-props.ts","../../../../libs/core/src/lib/props/create-setup.ts","../../../../libs/core/src/lib/props/dependency-stash.ts","../../../../libs/core/src/lib/props/props.directive.ts","../../../../libs/core/src/lib/props/template-input.ts","../../../../libs/core/src/lib/types/angular.types.ts","../../../../libs/core/src/lib/validators/at-least-one-required.validator.ts","../../../../libs/core/src/lib/validators/is-array-not-empty.validator.ts","../../../../libs/core/src/lib/validators/is-email.validator.ts","../../../../libs/core/src/lib/validators/must-match.validator.ts","../../../../libs/core/src/lib/validators/index.ts","../../../../libs/core/src/index.ts","../../../../libs/core/src/ethlete-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { JsonLD } from '@ethlete/types';\n\n@Component({\n selector: 'et-structured-data',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: none',\n },\n})\nexport class StructuredDataComponent {\n private readonly _sanitizer = inject(DomSanitizer);\n\n @Input()\n set data(currentValue: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined) {\n this.jsonLD = this.getSafeHTML(currentValue);\n }\n\n @HostBinding('innerHTML')\n jsonLD?: SafeHtml;\n\n getSafeHTML(value: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined) {\n const json = value ? JSON.stringify(value, null, 2).replace(/<\\/script>/g, '<\\\\/script>') : '';\n const html = `<script type=\"application/ld+json\">${json}</script>`;\n return this._sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ViewportConfig } from '../types';\n\nexport const VIEWPORT_CONFIG = new InjectionToken<ViewportConfig>('ViewportConfig');\n\n/**\n * Default viewport config based on Tailwind CSS.\n * @see https://tailwindcss.com/docs/screens\n */\nexport const DEFAULT_VIEWPORT_CONFIG: ViewportConfig = {\n breakpoints: {\n xs: [0, 639],\n sm: [640, 767],\n md: [768, 1023],\n lg: [1024, 1279],\n xl: [1280, 1535],\n '2xl': [1536, Infinity],\n },\n};\n","export interface MemoResolver {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (...args: any[]): any;\n}\n\nexport interface MapLike<K = unknown, V = unknown> {\n set(key: K, v: V): MapLike<K, V>;\n get(key: K): V;\n has(key: K): boolean;\n}\n\nexport interface MemoConfig {\n resolver?: MemoResolver;\n cache?: MapLike;\n}\n\nfunction memoize(func: (..._args: unknown[]) => unknown, resolver: MemoResolver, cache: MapLike) {\n const memoized = function (this: unknown, ...args: unknown[]) {\n const key = resolver.apply(this, args);\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n const result = func.apply(this, args);\n memoized.cache = cache.set(key, result) ?? cache;\n return result;\n };\n\n memoized.cache = cache;\n\n return memoized;\n}\n\nconst defaultResolver: MemoResolver = (...args: unknown[]) => args.join('-');\n\nexport const Memo =\n (config: MemoConfig = {}) =>\n (_: unknown, __: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\n if (typeof descriptor.value !== 'function') {\n throw new Error('Memoization can be applied only to methods');\n }\n\n const resolver = config.resolver ?? defaultResolver;\n const cache = config.cache ?? new Map();\n\n descriptor.value = memoize(descriptor.value, resolver, cache);\n return descriptor;\n };\n","import { DestroyRef, assertInInjectionContext, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport const createDestroy = () => {\n assertInInjectionContext(createDestroy);\n\n const destroy$ = new Subject<boolean>();\n\n const ref = inject(DestroyRef);\n\n ref.onDestroy(() => {\n destroy$.next(true);\n destroy$.complete();\n });\n\n return destroy$.asObservable();\n};\n","import { DOWN_ARROW, END, HOME, PAGE_DOWN, PAGE_UP, UP_ARROW } from '@angular/cdk/keycodes';\nimport { BehaviorSubject, map, of, switchMap, takeUntil, tap } from 'rxjs';\nimport { createDestroy } from './destroy.utils';\nimport { SelectionModel } from './selection-model.utils';\n\nexport class ActiveSelectionModel<T = unknown> {\n private readonly _destroy$ = createDestroy();\n\n get selectionModel$() {\n return this._selectionModel$.asObservable();\n }\n get selectionModel() {\n return this._selectionModel$.value;\n }\n private readonly _selectionModel$ = new BehaviorSubject<SelectionModel<T> | null>(null);\n\n get activeOption$() {\n return this._activeOption$.asObservable();\n }\n get activeOption() {\n return this._activeOption$.value;\n }\n private readonly _activeOption$ = new BehaviorSubject<T | null>(null);\n\n constructor() {\n this._selectionModel$\n .pipe(\n takeUntil(this._destroy$),\n switchMap((model) => model?.filteredOptions$ ?? of([])),\n tap(() => this._resetActiveOptions()),\n )\n .subscribe();\n }\n\n setSelectionModel(selectionModel: SelectionModel<T> | null) {\n this._selectionModel$.next(selectionModel);\n\n return this;\n }\n\n setActiveOption(option: T | null) {\n this._activeOption$.next(option);\n\n return this;\n }\n\n isOptionActive$(option: T) {\n return this.activeOption$.pipe(map((activeOption) => activeOption === option));\n }\n\n evaluateKeyboardEvent(event: KeyboardEvent, config?: { skipDisabled?: boolean }) {\n const { skipDisabled = false } = config ?? {};\n\n const keyCode = event.keyCode;\n const activeOption = this.activeOption;\n\n if (!this.selectionModel || !activeOption) return null;\n\n const currentIndex = this.selectionModel?.getOptionIndex(activeOption);\n\n if (currentIndex === null) return null;\n\n let newActiveOption: T | null | undefined = undefined;\n\n switch (keyCode) {\n case DOWN_ARROW:\n {\n newActiveOption = this.selectionModel?.getOptionByOffset(1, currentIndex, { skipDisabled });\n }\n break;\n case UP_ARROW:\n {\n newActiveOption = this.selectionModel?.getOptionByOffset(-1, currentIndex, { skipDisabled });\n }\n break;\n case PAGE_UP:\n {\n newActiveOption = this.selectionModel?.getOptionByOffset(-10, currentIndex, { skipDisabled, clamp: true });\n }\n break;\n case PAGE_DOWN:\n {\n newActiveOption = this.selectionModel?.getOptionByOffset(10, currentIndex, { skipDisabled, clamp: true });\n }\n break;\n case HOME:\n {\n newActiveOption = this.selectionModel?.getFirstOption();\n }\n break;\n case END:\n {\n newActiveOption = this.selectionModel?.getLastOption();\n }\n break;\n }\n\n if (newActiveOption !== undefined) {\n event.preventDefault();\n }\n\n if (newActiveOption !== activeOption && newActiveOption) {\n this._activeOption$.next(newActiveOption);\n }\n\n return newActiveOption ?? null;\n }\n\n private _resetActiveOptions() {\n const firstOption = this.selectionModel?.getFirstOption();\n\n this._activeOption$.next(firstOption ?? null);\n }\n}\n","import { Observable, of, startWith, switchMap } from 'rxjs';\nimport { TypedQueryList } from '../types';\n\nexport function switchQueryListChanges() {\n return function <T extends TypedQueryList<unknown> | null | undefined>(source: Observable<T>) {\n return source.pipe(switchMap((value) => value?.changes.pipe(startWith(value)) ?? of(null))) as Observable<T>;\n };\n}\n","import { combineLatest, Observable, Subject } from 'rxjs';\n\nexport const nextFrame = (cb: () => void) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n};\n\nexport const fromNextFrame = () => {\n return new Observable<void>((observer) => {\n nextFrame(() => {\n observer.next();\n observer.complete();\n });\n });\n};\n\nexport const forceReflow = (element: HTMLElement = document.body) => {\n return element.offsetHeight;\n};\n\ninterface FlipAnimationGroupConfig {\n /**\n * The elements to animate\n */\n elements: Array<HTMLElement | { element: HTMLElement; originElement?: HTMLElement }>;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n}\n\nexport const createFlipAnimationGroup = (config: FlipAnimationGroupConfig) => {\n const { elements, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n const flips = elements.map((el) => {\n const element = 'element' in el ? el.element : el;\n const originElement = 'originElement' in el ? el.originElement : undefined;\n\n return createFlipAnimation({ element, originElement, duration, easing });\n });\n\n const onStart$ = combineLatest(flips.map((animation) => animation.onStart$));\n const onFinish$ = combineLatest(flips.map((animation) => animation.onFinish$));\n const onCancel$ = combineLatest(flips.map((animation) => animation.onCancel$));\n\n const updateInit = () => {\n flips.forEach((animation) => animation.updateInit());\n };\n\n const play = () => {\n flips.forEach((animation) => animation.play());\n };\n\n const cancel = () => {\n flips.forEach((animation) => animation.cancel());\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$,\n onFinish$,\n onCancel$,\n };\n};\n\nexport interface FlipAnimationConfig {\n /**\n * The element to animate\n */\n element: HTMLElement;\n\n /**\n * The element to use as the origin for the animation\n * @default element\n */\n originElement?: HTMLElement;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n}\n\nexport const createFlipAnimation = (config: FlipAnimationConfig) => {\n const { element: el, originElement = el, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n let initialRect = originElement.getBoundingClientRect();\n let animation: Animation | null = null;\n\n const onStart$ = new Subject<void>();\n const onFinish$ = new Subject<void>();\n const onCancel$ = new Subject<void>();\n\n const onAnimationFinish = () => {\n cleanup();\n onFinish$.next();\n };\n\n const onAnimationCancel = () => {\n cleanup();\n onCancel$.next();\n };\n\n const cleanup = () => {\n if (!animation) {\n return;\n }\n\n animation.removeEventListener('finish', onAnimationFinish);\n animation.removeEventListener('cancel', onAnimationCancel);\n };\n\n const updateInit = () => {\n initialRect = originElement.getBoundingClientRect();\n };\n\n const play = () => {\n const lastRect = el.getBoundingClientRect();\n\n const delta = {\n x: initialRect.left - lastRect.left,\n y: initialRect.top - lastRect.top,\n scaleX: initialRect.width / lastRect.width,\n scaleY: initialRect.height / lastRect.height,\n };\n\n animation = el.animate(\n [\n {\n transformOrigin: 'top left',\n transform: `\n translate(${delta.x}px, ${delta.y}px)\n scale(${delta.scaleX}, ${delta.scaleY})\n `,\n },\n {\n transformOrigin: 'top left',\n transform: 'none',\n },\n ],\n {\n duration,\n easing,\n fill: 'both',\n },\n );\n\n animation.addEventListener('finish', onAnimationFinish);\n animation.addEventListener('cancel', onAnimationCancel);\n\n onStart$.next();\n };\n\n const cancel = () => {\n animation?.cancel();\n\n cleanup();\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$: onStart$.asObservable(),\n onFinish$: onFinish$.asObservable(),\n onCancel$: onCancel$.asObservable(),\n };\n};\n","export const clamp = (value: number, min = 0, max = 100) => {\n return Math.max(min, Math.min(max, value));\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-var */\n/**\n * Stolen from klona to avoid adding a dependency\n * https://github.com/lukeed/klona\n *\n * MIT License\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst set = (obj: any, key: any, val: any) => {\n if (typeof val.value === 'object') val.value = clone(val.value);\n if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n Object.defineProperty(obj, key, val);\n } else obj[key] = val.value;\n};\n\nexport const clone = <T>(original: T): T => {\n if (typeof original !== 'object') return original;\n\n var _og = original as any;\n\n var i = 0,\n k,\n list,\n tmp: any,\n str = Object.prototype.toString.call(_og);\n\n if (str === '[object Object]') {\n tmp = Object.create(_og.__proto__ || null);\n } else if (str === '[object Array]') {\n tmp = Array(_og.length);\n } else if (str === '[object Set]') {\n tmp = new Set();\n _og.forEach(function (val: any) {\n tmp.add(clone(val));\n });\n } else if (str === '[object Map]') {\n tmp = new Map();\n _og.forEach(function (val: any, key: any) {\n tmp.set(clone(key), clone(val));\n });\n } else if (str === '[object Date]') {\n tmp = new Date(+_og);\n } else if (str === '[object RegExp]') {\n tmp = new RegExp(_og.source, _og.flags);\n } else if (str === '[object DataView]') {\n tmp = new _og.constructor(clone(_og.buffer));\n } else if (str === '[object ArrayBuffer]') {\n tmp = _og.slice(0);\n } else if (str.slice(-6) === 'Array]') {\n // ArrayBuffer.isView(x)\n // ~> `new` bcuz `Buffer.slice` => ref\n tmp = new _og.constructor(_og);\n }\n\n if (tmp) {\n for (list = Object.getOwnPropertySymbols(_og); i < list.length; i++) {\n set(tmp, list[i], Object.getOwnPropertyDescriptor(_og, list[i]!));\n }\n\n for (i = 0, list = Object.getOwnPropertyNames(_og); i < list.length; i++) {\n if (Object.hasOwnProperty.call(tmp, (k = list[i]!)) && tmp[k] === _og[k]) continue;\n set(tmp, k, Object.getOwnPropertyDescriptor(_og, k));\n }\n }\n\n return tmp || _og;\n};\n","const componentIds = new Map<string, number>();\n\nexport const createComponentId = (prefix: string) => {\n const id = componentIds.get(prefix) ?? 0;\n componentIds.set(prefix, id + 1);\n\n return `${prefix}-${id}`;\n};\n","export const hasCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return false;\n }\n\n return document.cookie.split(';').some((c) => {\n return c.trim().startsWith(name + '=');\n });\n};\n\nexport const getCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return null;\n }\n\n // From https://stackoverflow.com/questions/10730362/get-cookie-by-name\n return ('; ' + document.cookie).split(`; ${name}=`).pop()?.split(';')[0];\n};\n\nexport const setCookie = (\n name: string,\n data: string,\n expiresInDays = 30,\n domain = getDomain(),\n path = '/',\n sameSite: 'strict' | 'none' | 'lax' = 'lax',\n) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const sameSiteUpper = sameSite.toUpperCase();\n const date = new Date();\n date.setTime(date.getTime() + expiresInDays * 24 * 60 * 60 * 1000);\n\n document.cookie = `${name}=${data}; path=${path}; expires=${date.toUTCString()}; domain=${domain}; SameSite=${sameSiteUpper};`;\n};\n\nexport const deleteCookie = (name: string, path = '/', domain = getDomain()) => {\n if (hasCookie(name)) {\n document.cookie =\n name +\n '=' +\n (path ? ';path=' + path : '') +\n (domain ? ';domain=' + domain : '') +\n ';expires=Thu, 01 Jan 1970 00:00:01 GMT';\n }\n};\n\nexport const getDomain = () => {\n if (typeof navigator === 'undefined') {\n return null;\n }\n\n const hostname = window.location.hostname;\n\n if (hostname.includes('localhost')) {\n return 'localhost';\n }\n\n const hostIsIP = hostname.match(/^(\\d{1,3}\\.){3}\\d{1,3}$/);\n\n if (hostIsIP) {\n return hostname;\n }\n\n const splitHost = hostname.split('.');\n\n if (splitHost.length > 2) {\n return `${splitHost[splitHost.length - 2]}.${splitHost[splitHost.length - 1]}`;\n }\n\n return hostname;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-var */\n/**\n * Stolen from dequal to avoid adding a dependency\n * https://github.com/lukeed/dequal\n *\n * The MIT License (MIT)\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst has = Object.prototype.hasOwnProperty;\n\nfunction find(iter: any, tar: any, key?: any) {\n for (key of iter.keys()) {\n if (equal(key, tar)) return key;\n }\n}\n\nexport const equal = (foo: any, bar: any) => {\n var ctor: any, len: any, tmp: any;\n if (foo === bar) return true;\n\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return foo.getTime() === bar.getTime();\n if (ctor === RegExp) return foo.toString() === bar.toString();\n\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && equal(foo[len], bar[len]));\n }\n return len === -1;\n }\n\n if (ctor === Set) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len;\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!bar.has(tmp)) return false;\n }\n return true;\n }\n\n if (ctor === Map) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len[0];\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!equal(len[1], bar.get(tmp))) {\n return false;\n }\n }\n return true;\n }\n\n if (ctor === ArrayBuffer) {\n foo = new Uint8Array(foo);\n bar = new Uint8Array(bar);\n } else if (ctor === DataView) {\n if ((len = foo.byteLength) === bar.byteLength) {\n while (len-- && foo.getInt8(len) === bar.getInt8(len));\n }\n return len === -1;\n }\n\n if (ArrayBuffer.isView(foo)) {\n if ((len = foo.byteLength) === bar.byteLength) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n while (len-- && foo[len] === bar[len]);\n }\n return len === -1;\n }\n\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !equal(foo[ctor], bar[ctor])) return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n\n return foo !== foo && bar !== bar;\n};\n","import { FormArray, FormControl, FormGroup } from '@angular/forms';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const cloneFormGroup = <T extends FormGroup<any>>(formGroup: T) => {\n const cloneLevel = (group: FormGroup, cloneGroup: FormGroup) => {\n Object.keys(group.controls).forEach((key) => {\n const control = group.controls[key]!;\n\n if (control instanceof FormGroup) {\n const cloneControl = new FormGroup({}, control.validator, control.asyncValidator);\n\n cloneGroup.addControl(key, cloneControl);\n\n cloneLevel(control, cloneControl);\n } else if (control instanceof FormArray) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cloneArrayControl = new FormArray<any>([], control.validator, control.asyncValidator);\n\n control.controls.forEach((control) => {\n if (control instanceof FormGroup) {\n const cloneControl = new FormGroup({}, control.validator, control.asyncValidator);\n const innerClone = cloneLevel(control, cloneControl);\n cloneArrayControl.push(innerClone);\n } else {\n const cloneControlItem = new FormControl(\n { value: control.value, disabled: control.disabled },\n control.validator,\n control.asyncValidator,\n );\n cloneArrayControl.push(cloneControlItem);\n }\n });\n\n cloneGroup.addControl(key, cloneArrayControl);\n } else {\n const cloneControl = new FormControl(\n { value: control.value, disabled: control.disabled },\n control.validator,\n control.asyncValidator,\n );\n\n cloneGroup.addControl(key, cloneControl);\n }\n });\n\n return cloneGroup;\n };\n\n const clonedForm = cloneLevel(formGroup, new FormGroup({}));\n clonedForm.setValue(formGroup.value);\n clonedForm.updateValueAndValidity();\n\n return clonedForm as T;\n};\n\nexport const getFormGroupValue = <T extends FormGroup>(formGroup: T) => {\n const value: Record<string, unknown> = {};\n\n Object.keys(formGroup.controls).forEach((key) => {\n const control = formGroup.controls[key]!;\n\n if (control instanceof FormGroup) {\n value[key] = getFormGroupValue(control);\n } else if (control instanceof FormArray) {\n value[key] = control.controls.map((control) => {\n if (control instanceof FormGroup) {\n return getFormGroupValue(control);\n } else {\n return control.value ?? null;\n }\n });\n } else {\n value[key] = control.value ?? null;\n }\n });\n\n return value;\n};\n","import { ElementRef, TemplateRef, inject } from '@angular/core';\n\nexport const injectHostElement = <T = HTMLElement>() => inject<ElementRef<T>>(ElementRef).nativeElement;\n\nexport const injectTemplateRef = <C = unknown>() => inject<TemplateRef<C>>(TemplateRef);\n","// TODO: This needs to be redone, it's a mess...\nexport const getIntersectionInfo = (intersections: IntersectionObserverEntry[]) => {\n const reverseIntersections = [...intersections].reverse();\n const firstIntersecting = intersections.find((i) => i.intersectionRatio > 0);\n const lastIntersecting = reverseIntersections.find((i) => i.intersectionRatio > 0);\n\n const firstIntersectingIndex = intersections.findIndex((i) => i === firstIntersecting);\n const lastIntersectingIndex = intersections.findIndex((i) => i === lastIntersecting);\n\n if (!firstIntersecting || !lastIntersecting) return null;\n\n const greaterIntersecting =\n firstIntersecting.intersectionRatio > lastIntersecting.intersectionRatio ? firstIntersecting : lastIntersecting;\n\n const greaterIntersectingIndex =\n firstIntersecting.intersectionRatio > lastIntersecting.intersectionRatio\n ? firstIntersectingIndex\n : lastIntersectingIndex;\n\n const hasFullIntersection = intersections.some((i) => i.intersectionRatio === 1);\n const hasMultipleFullIntersections = intersections.filter((i) => i.intersectionRatio === 1).length > 1;\n\n const firstFullIntersectionIndex = intersections.findIndex((i) => i.intersectionRatio === 1);\n const firstFullIntersection = intersections.find((i) => i.intersectionRatio === 1);\n\n const lastFullIntersection = reverseIntersections.find((i) => i.intersectionRatio === 1);\n const lastFullIntersectionIndex = intersections.findIndex((i) => i === lastFullIntersection);\n\n const firstNonIntersectingIndex = intersections.findIndex((i) => i.intersectionRatio === 0);\n const firstNonIntersection = intersections.find((i) => i.intersectionRatio === 0);\n\n const lastNonIntersection = reverseIntersections.find((i) => i.intersectionRatio === 0);\n const lastNonIntersectingIndex = intersections.findIndex((i) => i === lastNonIntersection);\n\n return {\n partial: {\n hasAny: !!firstIntersecting || !!lastIntersecting,\n hasMultiple: !!firstIntersecting || (!!lastIntersecting && firstIntersecting !== lastIntersecting),\n first: {\n intersection: firstIntersecting,\n index: firstIntersectingIndex,\n },\n last: {\n intersection: lastIntersecting,\n index: lastIntersectingIndex,\n },\n biggest: {\n intersection: greaterIntersecting,\n index: greaterIntersectingIndex,\n },\n },\n full: {\n hasAny: hasFullIntersection,\n hasMultiple: hasMultipleFullIntersections,\n first: {\n index: firstFullIntersectionIndex,\n intersection: firstFullIntersection,\n },\n last: {\n index: lastFullIntersectionIndex,\n intersection: lastFullIntersection,\n },\n },\n none: {\n first: {\n index: firstNonIntersectingIndex,\n intersection: firstNonIntersection,\n },\n last: {\n index: lastNonIntersectingIndex,\n intersection: lastNonIntersection,\n },\n },\n };\n};\n","import { BehaviorSubject, Subject, takeUntil, timer } from 'rxjs';\n\nexport class KeyPressManager {\n private readonly _isKeyPressed$ = new BehaviorSubject(false);\n private readonly _keyPressCount$ = new BehaviorSubject(0);\n\n private readonly _stopTimeout$ = new Subject<void>();\n\n constructor(public readonly key: number) {}\n\n isPressed(event: KeyboardEvent) {\n const key = event.keyCode;\n\n if (key === this.key) {\n this._isKeyPressed$.next(this._keyPressCount$.value > 1);\n this._keyPressCount$.next(this._keyPressCount$.value + 1);\n\n this._stopTimeout$.next();\n\n timer(100)\n .pipe(takeUntil(this._stopTimeout$))\n .subscribe(() => this.clear());\n } else {\n this.clear();\n }\n\n return this._isKeyPressed$.value;\n }\n\n clear() {\n this._isKeyPressed$.next(false);\n this._keyPressCount$.next(0);\n this._stopTimeout$.next();\n }\n}\n","import { map, Observable, Observer, startWith } from 'rxjs';\n\nexport const createMediaQueryObservable = (query: string) => {\n const mq = window.matchMedia(query);\n\n const observable = new Observable((observer: Observer<MediaQueryListEvent>) => {\n const eventHandler = (event: MediaQueryListEvent) => {\n observer.next(event);\n };\n\n mq.addEventListener('change', eventHandler);\n\n return () => {\n mq.removeEventListener('change', eventHandler);\n };\n }).pipe(\n startWith(mq),\n map(({ matches }) => ({\n matches,\n query,\n })),\n );\n\n return observable;\n};\n","import { Observable } from 'rxjs';\n\nexport const createMutationObservable = (config: {\n elements: HTMLElement | HTMLElement[];\n options?: MutationObserverInit & { styleIgnoreList?: string[] };\n}) => {\n const elements = Array.isArray(config.elements) ? config.elements : [config.elements];\n\n return new Observable<MutationRecord[]>((obs) => {\n const observer = new MutationObserver((mutations) => {\n if (config.options?.styleIgnoreList) {\n const allowedMutations: MutationRecord[] = [];\n\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n const attributeName = mutation.attributeName;\n\n if (!attributeName || attributeName !== 'style') continue;\n\n const oldValue = mutation.oldValue;\n const newValue = (mutation.target as HTMLElement).getAttribute('style');\n\n const oldValueStyles = oldValue?.split(';').map((s) => s.trim()) ?? [];\n const newValueStyles = newValue?.split(';').map((s) => s.trim()) ?? [];\n\n const changedStyles = newValueStyles.filter((s) => !oldValueStyles.includes(s));\n\n if (\n changedStyles.some((s) => {\n const [key] = s.split(':');\n\n if (!key) return false;\n\n return config.options?.styleIgnoreList?.includes(key);\n })\n )\n continue;\n\n allowedMutations.push(mutation);\n }\n }\n\n if (allowedMutations.length) {\n obs.next(allowedMutations);\n }\n } else {\n obs.next(mutations);\n }\n });\n\n for (const element of elements) {\n observer.observe(element, config.options);\n }\n\n return () => observer.disconnect();\n });\n};\n","export const isObject = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n};\n\nexport const isArray = (value: unknown): value is unknown[] => {\n return Array.isArray(value);\n};\n\nexport const getObjectProperty = (obj: Record<string, unknown>, prop: string) => {\n const hasDotNotation = prop.includes('.');\n const hasBracketNotation = prop.includes('[');\n\n if (!hasDotNotation && !hasBracketNotation) return obj[prop];\n\n const props = prop.split('.');\n\n let value: unknown = obj;\n\n for (const prop of props) {\n if (!isObject(value)) return undefined;\n\n if (prop.includes('[')) {\n const [key, index] = prop.split('[').map((part) => part.replace(']', '')) as [string, string];\n const arr = value[key];\n if (!Array.isArray(arr)) return undefined;\n\n value = arr[+index];\n } else {\n value = value[prop];\n }\n }\n\n return value;\n};\n","import { ElementRef, assertInInjectionContext, inject } from '@angular/core';\nimport { Observable, Subscription, distinctUntilChanged, map, of, switchMap, takeUntil } from 'rxjs';\nimport { fromNextFrame } from './animation.utils';\nimport { createDestroy } from './destroy.utils';\n\ntype AttributeValueBinding = {\n render: boolean;\n value: boolean | string | number;\n};\n\ntype AttributeRenderBinding = boolean;\n\nexport type ReactiveAttributes = {\n attribute: string | string[];\n observable: Observable<AttributeValueBinding | AttributeRenderBinding>;\n eager?: boolean;\n elementRef?: ElementRef<HTMLElement>;\n};\n\nconst isAttributeRenderBinding = (\n value: AttributeValueBinding | AttributeRenderBinding,\n): value is AttributeRenderBinding => typeof value === 'boolean';\nconst isAttributeValueBinding = (\n value: AttributeValueBinding | AttributeRenderBinding,\n): value is AttributeValueBinding => typeof value === 'object';\n\nexport interface ReactiveBindingResult {\n reset: () => void;\n remove: (...attributes: string[]) => void;\n push: (value: ReactiveAttributes) => void;\n}\n\n/**\n * @deprecated Use one of the following instead:\n * - `signalHostAttributes`\n * - `signalHostClasses`\n * - `signalHostStyles`\n * - `signalAttributes`\n * - `signalClasses`\n * - `signalStyles`\n *\n * Will be removed in v5.\n */\nexport const createReactiveBindings = (...values: ReactiveAttributes[]): ReactiveBindingResult => {\n assertInInjectionContext(createReactiveBindings);\n\n const rootElementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const destroy$ = createDestroy();\n\n const subscriptions: { attributes: string[]; subscription: Subscription }[] = [];\n const pushedAttributes: string[][] = [];\n\n const defaults: Record<string, string | undefined> = {};\n\n const push = (value: ReactiveAttributes) => {\n const { attribute, observable, elementRef, eager } = value;\n const elRef = elementRef || rootElementRef;\n const attributes = Array.isArray(attribute) ? attribute : [attribute];\n pushedAttributes.push(attributes);\n\n for (const attribute of attributes) {\n if (!defaults[attribute]) {\n defaults[attribute] = elRef.nativeElement.getAttribute(attribute) || undefined;\n }\n }\n\n const subscription = observable\n .pipe(\n takeUntil(destroy$),\n distinctUntilChanged((a, b) => {\n if (isAttributeRenderBinding(a) && isAttributeRenderBinding(b)) {\n return a === b;\n } else if (isAttributeValueBinding(a) && isAttributeValueBinding(b)) {\n return a.render === b.render && a.value === b.value;\n }\n\n return false;\n }),\n switchMap((v) => (eager ? of(v) : fromNextFrame().pipe(map(() => v)))),\n )\n .subscribe((value) => {\n const currentAttributes = pushedAttributes.find((s) => s.some((current) => attributes.includes(current))) || [];\n\n for (const attribute of currentAttributes) {\n const isSingleClassMutation = attribute.startsWith('class.');\n const isMultipleClassMutation = attribute === 'class';\n\n const render = isAttributeRenderBinding(value) ? value : value.render;\n\n if (isSingleClassMutation) {\n const className = attribute.replace('class.', '');\n\n if (!className) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.classList.remove(className);\n } else {\n elRef.nativeElement.classList.add(className);\n }\n } else if (isMultipleClassMutation) {\n const classes = isAttributeRenderBinding(value) ? '' : `${value.value}`;\n\n if (!classes) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.classList.remove(...classes.split(' '));\n } else {\n elRef.nativeElement.classList.add(...classes.split(' '));\n }\n } else {\n const attributeValue = isAttributeRenderBinding(value) ? true : `${value.value}`;\n\n if (!attribute) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.removeAttribute(attribute);\n } else {\n elRef.nativeElement.setAttribute(attribute, `${attributeValue}`);\n }\n }\n }\n });\n\n subscriptions.push({ attributes, subscription });\n };\n\n const remove = (...attributes: string[]) => {\n for (const attribute of attributes) {\n const sub = subscriptions.find((s) => s.attributes.includes(attribute));\n const attributeStack = pushedAttributes.find((a) => a.includes(attribute));\n\n if (sub) {\n sub.attributes = sub.attributes.filter((a) => a !== attribute);\n attributeStack?.splice(attributeStack.indexOf(attribute), 1);\n\n if (sub.attributes.length === 0) {\n sub.subscription.unsubscribe();\n subscriptions.splice(subscriptions.indexOf(sub), 1);\n }\n }\n }\n };\n\n const reset = () => {\n for (const attribute in defaults) {\n if (defaults[attribute] === undefined) {\n rootElementRef.nativeElement.removeAttribute(attribute);\n } else {\n rootElementRef.nativeElement.setAttribute(attribute, defaults[attribute] as string);\n }\n }\n };\n\n for (const value of values) {\n push(value);\n }\n\n return {\n push,\n remove,\n reset,\n };\n};\n","import { Observable } from 'rxjs';\n\nexport const createResizeObservable = (config: {\n elements: HTMLElement | HTMLElement[];\n options?: ResizeObserverOptions;\n}) => {\n const elements = Array.isArray(config.elements) ? config.elements : [config.elements];\n\n return new Observable<ResizeObserverEntry[]>((obs) => {\n const observer = new ResizeObserver((entries) => obs.next(entries));\n\n for (const element of elements) {\n observer.observe(element, config.options);\n }\n\n return () => observer.disconnect();\n });\n};\n","export const round = (value: number, precision = 0) => {\n const multiplier = Math.pow(10, precision);\n return Math.round(value * multiplier) / multiplier;\n};\n","import { clone } from './clone.util';\n\nexport const RUNTIME_ERROR_NO_DATA = '__ET_NO_DATA__';\n\nexport class RuntimeError<T extends number> extends Error {\n constructor(\n public code: T,\n message: null | false | string,\n public devOnly = false,\n public data: unknown = RUNTIME_ERROR_NO_DATA,\n ) {\n super(formatRuntimeError<T>(code, message, devOnly));\n\n if (data !== RUNTIME_ERROR_NO_DATA) {\n try {\n const _data = clone(data);\n\n setTimeout(() => {\n console.error(_data);\n }, 1);\n } catch {\n setTimeout(() => {\n console.error(data);\n }, 1);\n }\n }\n }\n}\n\nexport function formatRuntimeError<T extends number>(\n code: T,\n message: null | false | string,\n devOnly: boolean,\n): string {\n // prefix code with zeros if it's less than 100\n const codeWithZeros = code < 10 ? `00${code}` : code < 100 ? `0${code}` : code;\n\n const fullCode = `ET${codeWithZeros}`;\n const devOnlyText = devOnly ? ' [DEV ONLY] ' : '';\n return `${devOnlyText}${fullCode}${message ? ': ' + message : ''}`;\n}\n","import { clamp } from './clamp.util';\n\nexport const elementCanScroll = (element: HTMLElement, direction?: 'x' | 'y') => {\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;\n\n if (direction === 'x') {\n return scrollWidth > clientWidth;\n } else if (direction === 'y') {\n return scrollHeight > clientHeight;\n }\n\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n};\n\nexport interface IsElementVisibleOptions {\n /**\n * The element to check if it is visible inside a container.\n */\n element?: HTMLElement | null;\n\n /**\n * The container to check if the element is visible inside.\n * @default document.documentElement\n */\n container?: HTMLElement | null;\n\n /**\n * The container's rect to check if the element is visible inside. Can be supplied to reduce the amount of DOM reads.\n * @default container.getBoundingClientRect()\n */\n containerRect?: DOMRect | null;\n\n /**\n * The element's rect. Can be supplied to reduce the amount of DOM reads.\n * @default container.getBoundingClientRect()\n */\n elementRect?: DOMRect | null;\n}\n\nexport interface CurrentElementVisibility {\n /**\n * Whether the element is visible in the inline direction.\n */\n inline: boolean;\n\n /**\n * Whether the element is visible in the block direction.\n */\n block: boolean;\n\n /**\n * The percentage of the element that is visible in the inline direction.\n */\n inlineIntersection: number;\n\n /**\n * The percentage of the element that is visible in the block direction.\n */\n blockIntersection: number;\n\n /**\n * Whether the element is intersecting the container.\n */\n isIntersecting: boolean;\n\n /**\n * The ratio of the element that is intersecting the container.\n */\n intersectionRatio: number;\n\n /**\n * The element that is being checked for visibility.\n */\n element: HTMLElement;\n}\n\nexport const isElementVisible = (options: IsElementVisibleOptions): CurrentElementVisibility | null => {\n let { container } = options;\n const { element } = options;\n\n if (!element || container === null) {\n return null;\n }\n\n container ||= document.documentElement;\n\n const canScroll = elementCanScroll(container);\n\n if (!canScroll) {\n return {\n inline: true,\n block: true,\n blockIntersection: 1,\n inlineIntersection: 1,\n intersectionRatio: 1,\n isIntersecting: true,\n element,\n };\n }\n\n const elementRect = options.elementRect || element.getBoundingClientRect();\n const containerRect = options.containerRect || container.getBoundingClientRect();\n\n const elementInlineStart = elementRect.left;\n const elementBlockStart = elementRect.top;\n\n const containerInlineStart = containerRect.left;\n const containerBlockStart = containerRect.top;\n\n const elWith = elementRect.width || 1;\n const elHeight = elementRect.height || 1;\n\n const elementInlineEnd = elementInlineStart + elWith;\n const elementBlockEnd = elementBlockStart + elHeight;\n\n const containerInlineEnd = containerInlineStart + containerRect.width;\n const containerBlockEnd = containerBlockStart + containerRect.height;\n\n const isElementInlineVisible = elementInlineStart >= containerInlineStart && elementInlineEnd <= containerInlineEnd;\n const isElementBlockVisible = elementBlockStart >= containerBlockStart && elementBlockEnd <= containerBlockEnd;\n\n const inlineIntersection =\n Math.min(elementInlineEnd, containerInlineEnd) - Math.max(elementInlineStart, containerInlineStart);\n const blockIntersection =\n Math.min(elementBlockEnd, containerBlockEnd) - Math.max(elementBlockStart, containerBlockStart);\n\n const inlineIntersectionPercentage = clamp(inlineIntersection / elWith, 0, 1);\n const blockIntersectionPercentage = clamp(blockIntersection / elHeight, 0, 1);\n\n return {\n inline: isElementInlineVisible,\n block: isElementBlockVisible,\n inlineIntersection: inlineIntersectionPercentage,\n blockIntersection: blockIntersectionPercentage,\n isIntersecting: isElementInlineVisible && isElementBlockVisible,\n element,\n\n // Round the intersection ratio to the nearest 0.01 to avoid floating point errors and system scaling issues.\n intersectionRatio: Math.round(Math.min(inlineIntersectionPercentage, blockIntersectionPercentage) * 100) / 100,\n };\n};\n\nexport const getElementScrollCoordinates = (options: ScrollToElementOptions): ScrollToOptions => {\n let { container } = options;\n const {\n element,\n direction,\n behavior = 'smooth',\n origin = 'nearest',\n scrollBlockMargin = 0,\n scrollInlineMargin = 0,\n } = options;\n\n if (!element || container === null) {\n return {\n behavior,\n left: undefined,\n top: undefined,\n };\n }\n\n container ||= document.documentElement;\n\n const canScroll = elementCanScroll(container);\n\n if (!canScroll) {\n return {\n behavior,\n left: undefined,\n top: undefined,\n };\n }\n\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const { scrollLeft, scrollTop } = container;\n const { width: elementWidth, height: elementHeight, left: elementLeft, top: elementTop } = elementRect;\n const { width: containerWidth, height: containerHeight, left: containerLeft, top: containerTop } = containerRect;\n\n const shouldScrollLeft = direction === 'inline' || direction === 'both' || !direction;\n const shouldScrollTop = direction === 'block' || direction === 'both' || !direction;\n\n let scrollLeftTo = scrollLeft;\n let scrollTopTo = scrollTop;\n\n const scrollToElementStart = () => {\n const relativeTop = elementTop - containerTop;\n const relativeLeft = elementLeft - containerLeft;\n\n const amountToScrollTop = relativeTop;\n const amountToScrollLeft = relativeLeft;\n\n const scrollTopPosition = scrollTop + amountToScrollTop;\n const scrollLeftPosition = scrollLeft + amountToScrollLeft;\n\n scrollLeftTo = scrollLeftPosition - scrollInlineMargin;\n scrollTopTo = scrollTopPosition - scrollBlockMargin;\n };\n\n const scrollToElementEnd = () => {\n const relativeTop = elementTop - containerTop;\n const relativeLeft = elementLeft - containerLeft;\n\n const amountToScrollTop = relativeTop - containerHeight + elementHeight;\n const amountToScrollLeft = relativeLeft - containerWidth + elementWidth;\n\n const scrollTopPosition = scrollTop + amountToScrollTop;\n const scrollLeftPosition = scrollLeft + amountToScrollLeft;\n\n scrollLeftTo = scrollLeftPosition + scrollInlineMargin;\n scrollTopTo = scrollTopPosition + scrollBlockMargin;\n };\n\n const scrollToElementCenter = () => {\n const relativeTop = elementTop - containerTop;\n const relativeLeft = elementLeft - containerLeft;\n\n const amountToScrollTop = relativeTop - containerHeight / 2 + elementHeight / 2;\n const amountToScrollLeft = relativeLeft - containerWidth / 2 + elementWidth / 2;\n\n const scrollTopPosition = scrollTop + amountToScrollTop;\n const scrollLeftPosition = scrollLeft + amountToScrollLeft;\n\n scrollLeftTo = scrollLeftPosition;\n scrollTopTo = scrollTopPosition;\n };\n\n const scrollToElementNearest = () => {\n const isAbove = elementRect.bottom < containerRect.top;\n const isPartialAbove = elementRect.top < containerRect.top && elementRect.bottom > containerRect.top;\n\n const isBelow = elementRect.top > containerRect.bottom;\n const isPartialBelow = elementRect.top < containerRect.bottom && elementRect.bottom > containerRect.bottom;\n\n const isLeft = elementRect.right < containerRect.left;\n const isPartialLeft = elementRect.left < containerRect.left && elementRect.right > containerRect.left;\n\n const isRight = elementRect.left > containerRect.right;\n const isPartialRight = elementRect.left < containerRect.right && elementRect.right > containerRect.right;\n\n if (isAbove || isPartialAbove || isLeft || isPartialLeft) {\n scrollToElementStart();\n } else if (isBelow || isPartialBelow || isRight || isPartialRight) {\n scrollToElementEnd();\n }\n };\n\n switch (origin) {\n case 'start':\n scrollToElementStart();\n break;\n case 'end':\n scrollToElementEnd();\n break;\n case 'center':\n scrollToElementCenter();\n break;\n case 'nearest':\n scrollToElementNearest();\n break;\n }\n\n return {\n behavior,\n left: shouldScrollLeft ? scrollLeftTo : undefined,\n top: shouldScrollTop ? scrollTopTo : undefined,\n };\n};\n\nexport interface ScrollToElementOptions {\n /**\n * The element to scroll to.\n */\n element?: HTMLElement | null;\n\n /**\n * The scroll container to scroll to the element in.\n * @default document.documentElement\n */\n container?: HTMLElement | null;\n\n /**\n * The direction to scroll in.\n * @default 'both'\n */\n direction?: 'inline' | 'block' | 'both';\n\n /**\n * The origin of the element to scroll to.\n * @default 'nearest'\n */\n origin?: 'start' | 'end' | 'center' | 'nearest';\n\n /**\n * The scroll behavior.\n * @default 'smooth'\n */\n behavior?: ScrollBehavior;\n\n /**\n * The scroll inline-margin\n * @default 0\n */\n scrollInlineMargin?: number;\n\n /**\n * The scroll block-margin\n * @default 0\n */\n scrollBlockMargin?: number;\n}\n\nexport const scrollToElement = (options: ScrollToElementOptions) => {\n options.container?.scrollTo(getElementScrollCoordinates(options));\n};\n","import { assertInInjectionContext } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport {\n BehaviorSubject,\n Observable,\n Subscription,\n combineLatest,\n filter,\n map,\n shareReplay,\n startWith,\n take,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { TypedQueryList } from '../types';\nimport { switchQueryListChanges } from './angular.utils';\nimport { createDestroy } from './destroy.utils';\nimport { getObjectProperty, isObject } from './object.utils';\n\nexport type SelectionModelTypes = string | number | Record<string, unknown> | unknown;\nexport type SelectionModelPropertyPath = string;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type SelectionModelOptionValueFn<T extends SelectionModelTypes = any> = (option: T) => unknown;\n\n/**\n * You can use a property path or a function to get the value of an option. The function should be as **lightweight as possible** as it will be called **a lot**.\n *\n * @example\n * // Property path\n * \"id\" // option.id\n * \"user.name\" // option.user.name\n *\n * // Function\n * (option) => option.id // option.id\n * (option) => option.user.name // option.user.name\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type SelectionModelBinding<T extends SelectionModelTypes = any> =\n | SelectionModelPropertyPath\n | SelectionModelOptionValueFn<T>;\n\nexport class SelectionModel<T extends SelectionModelTypes = unknown> {\n private readonly _destroy$ = createDestroy();\n private _lastSelectionSetSubscription: Subscription | null = null;\n\n get selection$() {\n return this._selection$.asObservable();\n }\n get selection() {\n return this._selection$.value;\n }\n private readonly _selection$ = new BehaviorSubject<T[]>([]);\n\n get options$() {\n return this._options$.asObservable();\n }\n get options() {\n return this._options$.value;\n }\n private readonly _options$ = new BehaviorSubject<T[]>([]);\n readonly optionsSignal = toSignal(this.options$);\n\n get valueBinding$() {\n return this._valueBinding$.asObservable();\n }\n get valueBinding() {\n return this._valueBinding$.value;\n }\n private readonly _valueBinding$ = new BehaviorSubject<SelectionModelBinding<T> | null>(null);\n\n get keyBinding$() {\n return combineLatest([this._keyBinding$, this.valueBinding$]).pipe(\n map(([keyBinding, valueBinding]) => keyBinding || valueBinding),\n );\n }\n get keyBinding() {\n return this._keyBinding$.value || this.valueBinding;\n }\n private readonly _keyBinding$ = new BehaviorSubject<SelectionModelBinding<T> | null>(null);\n\n get labelBinding$() {\n return this._labelBinding$.asObservable();\n }\n get labelBinding() {\n return this._labelBinding$.value;\n }\n private readonly _labelBinding$ = new BehaviorSubject<SelectionModelBinding<T> | null>(null);\n\n get disabledBinding$() {\n return this._disabledBinding$.asObservable();\n }\n get disabledBinding() {\n return this._disabledBinding$.value;\n }\n private readonly _disabledBinding$ = new BehaviorSubject<SelectionModelBinding<T> | null>(null);\n\n get allowMultiple$() {\n return this._allowMultiple$.asObservable();\n }\n get allowMultiple() {\n return this._allowMultiple$.value;\n }\n private readonly _allowMultiple$ = new BehaviorSubject<boolean>(false);\n\n get filter$() {\n return this._filter$.asObservable();\n }\n get filter() {\n return this._filter$.value;\n }\n private readonly _filter$ = new BehaviorSubject<string>('');\n\n readonly value$ = combineLatest([this.selection$, this.valueBinding$, this.allowMultiple$]).pipe(\n map(([selection, valueBinding, allowMultiple]) => {\n if (allowMultiple) {\n return selection.map((option) => this.execFnOrGetOptionProperty(option, valueBinding));\n }\n\n const [option] = selection;\n\n if (!option) return null;\n\n return this.execFnOrGetOptionProperty(option, valueBinding);\n }),\n );\n\n readonly filteredOptions$ = combineLatest([this.options$, this.filter$, this.labelBinding$]).pipe(\n map(([options, filter]) => this.getFilteredOptions(filter, options)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n private readonly _optionsAndSelection$ = combineLatest([this._options$, this._selection$]);\n\n constructor() {\n this.allowMultiple$\n .pipe(\n tap(() => {\n if (this.allowMultiple) return;\n\n const [option] = this.selection;\n\n if (!option) return;\n\n this.setSelection([option]);\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n setSelection(selection: T | T[]) {\n if (!Array.isArray(selection)) {\n selection = [selection];\n }\n\n this._selection$.next(selection);\n\n return this;\n }\n\n setSelectionFromValue(value: unknown) {\n if (Array.isArray(value)) {\n const selection = value.map((v) => this.getOptionByValue(v)).filter((v): v is T => v !== undefined);\n\n this.setSelection(selection);\n } else {\n const selection = this.getOptionByValue(value);\n\n if (selection) {\n this.setSelection(selection);\n } else {\n this.clearSelectedOptions();\n }\n }\n }\n\n setSelectionFromValue$(value: unknown) {\n this._lastSelectionSetSubscription?.unsubscribe();\n\n this._lastSelectionSetSubscription = this.options$\n .pipe(\n takeUntil(this._destroy$),\n filter((o) => !!o.length),\n tap(() => this.setSelectionFromValue(value)),\n take(1),\n )\n .subscribe();\n }\n\n setValueBinding(fnOrPropertyPath: SelectionModelBinding<T> | null) {\n this._valueBinding$.next(fnOrPropertyPath);\n\n return this;\n }\n\n setKeyBinding(fnOrPropertyPath: SelectionModelBinding<T> | null) {\n this._keyBinding$.next(fnOrPropertyPath);\n\n return this;\n }\n\n setLabelBinding(fnOrPropertyPath: SelectionModelBinding<T> | null) {\n this._labelBinding$.next(fnOrPropertyPath);\n\n return this;\n }\n\n setDisabledBinding(fnOrPropertyPath: SelectionModelBinding<T> | null) {\n this._disabledBinding$.next(fnOrPropertyPath);\n\n return this;\n }\n\n setOptions(options: T[]) {\n this._options$.next(options);\n\n return this;\n }\n\n setOptionsFromQueryList(queryList: TypedQueryList<T>) {\n assertInInjectionContext(this.setOptionsFromQueryList);\n\n queryList.changes\n .pipe(\n startWith(queryList),\n tap((list) => this.setOptions(list.toArray())),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n return this;\n }\n\n setOptionsFromQueryList$(queryList$: Observable<TypedQueryList<T> | null | undefined>) {\n assertInInjectionContext(this.setOptionsFromQueryList$);\n\n queryList$\n .pipe(\n switchQueryListChanges(),\n tap((list) => this.setOptions(list?.toArray() || [])),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n return this;\n }\n\n setAllowMultiple(allowMultiple: boolean) {\n this._allowMultiple$.next(allowMultiple);\n\n return this;\n }\n\n setFilter(filter: string | null) {\n const sanitizedFilter = filter?.trim() || '';\n\n this._filter$.next(sanitizedFilter);\n }\n\n reset() {\n this._selection$.next([]);\n this._options$.next([]);\n this._valueBinding$.next(null);\n this._keyBinding$.next(null);\n this._disabledBinding$.next(null);\n this._labelBinding$.next(null);\n this._allowMultiple$.next(false);\n }\n\n trackByOptionKey = (option: T) => this.getKey(option);\n\n getOptionByValue$(value: unknown) {\n return this._optionsAndSelection$.pipe(map(() => this.getOptionByValue(value)));\n }\n\n getOptionByLabel$(label: string) {\n return this._optionsAndSelection$.pipe(map(() => this.getOptionByLabel(label)));\n }\n\n getOptionByKey$(key: string) {\n return this._optionsAndSelection$.pipe(map(() => this.getOptionByKey(key)));\n }\n\n isSelected$(option: T) {\n return this._selection$.pipe(map(() => this.isSelected(option)));\n }\n\n isDisabled$(option: T) {\n return this._optionsAndSelection$.pipe(map(() => this.isDisabled(option)));\n }\n\n getLabel$(option: T) {\n return this.labelBinding$.pipe(map((labelBinding) => this.execFnOrGetOptionProperty(option, labelBinding)));\n }\n\n getValue$(option: T) {\n return this.valueBinding$.pipe(map((valueBinding) => this.execFnOrGetOptionProperty(option, valueBinding)));\n }\n\n getKey$(option: T) {\n return this.keyBinding$.pipe(map((keyBinding) => this.execFnOrGetOptionProperty(option, keyBinding)));\n }\n\n getOptionByValue(value: unknown) {\n return this.getOption(value, this.valueBinding);\n }\n\n getOptionByLabel(label: string) {\n return this.getOption(label, this.labelBinding);\n }\n\n getOptionByKey(key: string) {\n return this.getOption(key, this.keyBinding);\n }\n\n getOption(\n value: unknown,\n propertyPath: SelectionModelBinding<T> | null = null,\n options = [...this.options, ...this.selection],\n ) {\n if (!propertyPath) {\n return options.find((option) => option === value);\n }\n\n return options.find((option) => {\n if (!isObject(option)) return false;\n\n return this.execFnOrGetOptionProperty(option, propertyPath) === value;\n });\n }\n\n getOptionByIndex(index: number, options = this.getFilteredOptions()): T | null {\n return options[index] || null;\n }\n\n getOptionByOffset(\n offset: number,\n index: number,\n config: { loop?: boolean; clamp?: boolean; skipDisabled?: boolean; options?: T[] } = { clamp: true },\n ): T | null {\n const { loop, clamp, skipDisabled, options = this.getFilteredOptions() } = config;\n\n const newIndex = index + offset;\n const remainingOffset = newIndex * -1;\n\n let optionResult: T | null = null;\n\n if (newIndex < 0) {\n if (loop) {\n optionResult = this.getOptionByOffset(remainingOffset, options.length - 1, config);\n } else if (clamp) {\n optionResult = this.getFirstOption();\n } else {\n optionResult = null;\n }\n } else if (newIndex >= options.length) {\n if (loop) {\n optionResult = this.getOptionByOffset(remainingOffset, 0, config);\n } else if (clamp) {\n optionResult = this.getLastOption();\n } else {\n optionResult = null;\n }\n } else {\n optionResult = this.getOptionByIndex(newIndex);\n }\n\n if (optionResult && skipDisabled && this.isDisabled(optionResult)) {\n return this.getOptionByOffset(offset, newIndex, config);\n }\n\n return optionResult;\n }\n\n getFirstOption(options = this.getFilteredOptions()): T | null {\n return this.getOptionByIndex(0, options);\n }\n\n getLastOption(options = this.getFilteredOptions()): T | null {\n return this.getOptionByIndex(options.length - 1, options);\n }\n\n getOptionIndex(option: T, options = this.getFilteredOptions()) {\n const key = this.getKey(option);\n const index = options.findIndex((o) => this.getKey(o) === key);\n\n return index === -1 ? null : index;\n }\n\n getNonMultipleSelectedOption(): T | null {\n if (this.allowMultiple) return null;\n\n return this.selection[0] || null;\n }\n\n getNonMultipleSelectedOptionIndex() {\n if (this.allowMultiple) return null;\n\n const opt = this.getNonMultipleSelectedOption();\n\n if (!opt) return null;\n\n return this.getOptionIndex(opt);\n }\n\n getNonMultipleOptionByOffsetFromSelected(\n offset: number,\n config: { loop?: boolean; clamp?: boolean } = { clamp: true },\n ) {\n if (this.allowMultiple) return null;\n\n const index = this.getNonMultipleSelectedOptionIndex();\n\n if (index === null) return null;\n\n return this.getOptionByOffset(index, offset, config);\n }\n\n getLabel(option: T) {\n return this.execFnOrGetOptionProperty(option, this.labelBinding);\n }\n\n getValue(option: T) {\n return this.execFnOrGetOptionProperty(option, this.valueBinding);\n }\n\n getKey(option: T) {\n return this.execFnOrGetOptionProperty(option, this.keyBinding);\n }\n\n getDisabled(option: T) {\n return this.execFnOrGetOptionProperty(option, this.disabledBinding);\n }\n\n execFnOrGetOptionProperty(option: T, fnOrPropertyPath: SelectionModelBinding<T> | null) {\n if (!fnOrPropertyPath || !isObject(option)) return option;\n\n if (typeof fnOrPropertyPath === 'function') {\n return fnOrPropertyPath(option);\n }\n\n return getObjectProperty(option, fnOrPropertyPath);\n }\n\n execFnOrGetOptionPropertyNullable(option: T, fnOrPropertyPath: SelectionModelBinding<T> | null) {\n if (!fnOrPropertyPath || !isObject(option)) return null;\n\n return this.execFnOrGetOptionProperty(option, fnOrPropertyPath);\n }\n\n getOptionProperty(option: T, propertyPath: string | null) {\n if (!propertyPath || !isObject(option)) return option;\n\n return getObjectProperty(option, propertyPath);\n }\n\n isSelected(option: T) {\n const optionKey = this.execFnOrGetOptionProperty(option, this.keyBinding);\n\n return this.getOption(optionKey, this.keyBinding, this.selection) !== undefined;\n }\n\n isDisabled(option: T) {\n return !!this.execFnOrGetOptionPropertyNullable(option, this.disabledBinding);\n }\n\n getFilteredOptions(filter = this.filter, options = this.options) {\n if (!filter) return options;\n\n const splitFilter = filter.split(' ').filter((f) => f);\n\n return options.filter((option) => {\n const label = this.getLabel(option);\n\n if (!label || typeof label !== 'string') return false;\n\n const splitLabel = label.split(' ').filter((l) => l);\n\n return splitFilter.every((f) => splitLabel.some((l) => l.toLowerCase().includes(f.toLowerCase())));\n });\n }\n\n addSelectedOption(option: T) {\n if (this.allowMultiple) {\n if (this.isSelected(option)) return;\n\n this._selection$.next([...this.selection, option]);\n } else {\n this._selection$.next([option]);\n }\n }\n\n removeSelectedOption(option: T) {\n const optionKey = this.execFnOrGetOptionProperty(option, this.keyBinding);\n\n if (!this.isSelected(option)) return;\n\n this._selection$.next(\n this.selection.filter((selectedOption) => {\n const key = this.execFnOrGetOptionProperty(selectedOption, this.keyBinding);\n\n return key !== optionKey;\n }),\n );\n }\n\n clearSelectedOptions() {\n this._selection$.next([]);\n }\n\n toggleSelectedOption(option: T) {\n if (this.isSelected(option)) {\n this.removeSelectedOption(option);\n } else {\n this.addSelectedOption(option);\n }\n }\n\n // FIXME: Toggle should respect disabled binding if it exists\n toggleAllSelectedOptions() {\n const filteredOptions = this.getFilteredOptions();\n const unselectedOptions = filteredOptions.filter((option) => !this.isSelected(option));\n\n if (unselectedOptions.length) {\n const selection = unselectedOptions.filter((o) => !this.selection.some((s) => this.getKey(s) === this.getKey(o)));\n\n this._selection$.next([...this.selection, ...selection]);\n } else {\n const selection = this.selection.filter((s) => !filteredOptions.some((o) => this.getKey(o) === this.getKey(s)));\n\n this._selection$.next(selection);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\nimport { Observable, Observer, Subject, Subscription, fromEvent } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ClickObserverFactory {\n create() {\n return fromEvent<MouseEvent>(document, 'click');\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ClickObserverService implements OnDestroy {\n private _clickObserverFactory = inject(ClickObserverFactory);\n\n private _observedElements = new Map<\n Element,\n {\n observer: Subscription | null;\n readonly stream: Subject<MouseEvent>;\n count: number;\n }\n >();\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<MouseEvent>;\n observe(element: ElementRef<Element>): Observable<MouseEvent>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<MouseEvent> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<MouseEvent>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n private _observeElement(element: Element): Subject<MouseEvent> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<MouseEvent>();\n const observer = this._clickObserverFactory.create();\n\n const sub = observer.subscribe((event) => stream.next(event));\n\n this._observedElements.set(element, { observer: sub, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n private _unobserveElement(element: Element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n private _cleanupObserver(element: Element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.unsubscribe();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MutationObserverFactory {\n create(callback: MutationCallback): MutationObserver | null {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ContentObserverService implements OnDestroy {\n private _mutationObserverFactory = inject(MutationObserverFactory);\n\n private _observedElements = new Map<\n Element,\n {\n observer: MutationObserver | null;\n readonly stream: Subject<MutationRecord[]>;\n count: number;\n }\n >();\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<MutationRecord[]>;\n observe(element: ElementRef<Element>): Observable<MutationRecord[]>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<MutationRecord[]> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<MutationRecord[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n private _observeElement(element: Element): Subject<MutationRecord[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<MutationRecord[]>();\n const observer = this._mutationObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n private _unobserveElement(element: Element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n private _cleanupObserver(element: Element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FocusVisibleService {\n private readonly _document = inject(DOCUMENT);\n\n private _hadKeyboardEvent = false;\n\n get isFocusVisible() {\n return this._hadKeyboardEvent;\n }\n\n constructor() {\n this._document.addEventListener('keydown', this.onKeyDown.bind(this), true);\n this._document.addEventListener('mousedown', this.onPointerDown.bind(this), true);\n this._document.addEventListener('pointerdown', this.onPointerDown.bind(this), true);\n this._document.addEventListener('touchstart', this.onPointerDown.bind(this), true);\n }\n\n onKeyDown(e: KeyboardEvent) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n this._hadKeyboardEvent = true;\n }\n\n onPointerDown() {\n this._hadKeyboardEvent = false;\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class IntersectionObserverFactory {\n create(callback: IntersectionObserverCallback): IntersectionObserver | null {\n return typeof IntersectionObserver === 'undefined' ? null : new IntersectionObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class IntersectionObserverService implements OnDestroy {\n private _intersectionObserverFactory = inject(IntersectionObserverFactory);\n\n private _observedElements = new Map<\n Element,\n {\n observer: IntersectionObserver | null;\n readonly stream: Subject<IntersectionObserverEntry[]>;\n count: number;\n }\n >();\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<IntersectionObserverEntry[]>;\n observe(element: ElementRef<Element>): Observable<IntersectionObserverEntry[]>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<IntersectionObserverEntry[]> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<IntersectionObserverEntry[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n private _observeElement(element: Element): Subject<IntersectionObserverEntry[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<IntersectionObserverEntry[]>();\n const observer = this._intersectionObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element);\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n private _unobserveElement(element: Element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n private _cleanupObserver(element: Element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n create(callback: ResizeObserverCallback): ResizeObserver | null {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n private _mutationObserverFactory = inject(ResizeObserverFactory);\n\n private _observedElements = new Map<\n Element,\n {\n observer: ResizeObserver | null;\n readonly stream: Subject<ResizeObserverEntry[]>;\n count: number;\n }\n >();\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<ResizeObserverEntry[]>;\n observe(element: ElementRef<Element>): Observable<ResizeObserverEntry[]>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<ResizeObserverEntry[]> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<ResizeObserverEntry[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n private _observeElement(element: Element): Subject<ResizeObserverEntry[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<ResizeObserverEntry[]>();\n const observer = this._mutationObserverFactory.create((resizes) => stream.next(resizes));\n if (observer) {\n observer.observe(element);\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n private _unobserveElement(element: Element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n private _cleanupObserver(element: Element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Data, NavigationEnd, Params, Router } from '@angular/router';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n pairwise,\n shareReplay,\n tap,\n} from 'rxjs';\nimport { equal } from '../utils';\n\nconst ET_DISABLE_SCROLL_TOP = Symbol('ET_DISABLE_SCROLL_TOP');\nconst ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE = Symbol('ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE');\nconst ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE = Symbol('ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE');\n\nexport interface RouterDisableScrollTopConfig {\n /**\n * Whether to disable scroll to top ONLY when navigating back to this route.\n * @default false\n */\n asReturnRoute?: boolean;\n\n /**\n * Whether to disable scroll to top when a path param changes.\n * @default false\n */\n onPathParamChange?: boolean;\n}\n\nexport const routerDisableScrollTop = (config: RouterDisableScrollTopConfig = {}) => {\n return {\n ...(!config.asReturnRoute ? { [ET_DISABLE_SCROLL_TOP]: true } : { [ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE]: true }),\n ...(config.onPathParamChange ? { [ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE]: true } : {}),\n };\n};\n\nexport const ET_PROPERTY_REMOVED = Symbol('ET_PROPERTY_REMOVED');\n\nexport interface ScrollEnhancementsConfig {\n /**\n * The scrollable container.\n * @default document.documentElement\n */\n scrollElement?: HTMLElement;\n /**\n * A list of query params that should trigger a scroll to top.\n * @default []\n * @example ['page'] // will scroll to top when the page query param changes\n */\n queryParamTriggerList?: string[];\n /**\n * Config for fragment scrolling.\n */\n fragment?: {\n /**\n * Enable fragment scrolling (scroll to element with id)\n * @default false\n */\n enabled?: boolean;\n /**\n * Whether to use smooth scrolling or not.\n * @default false\n */\n smooth?: boolean;\n };\n}\n\nexport interface RouterState {\n data: Data;\n pathParams: Params;\n queryParams: Params;\n title: string | null;\n fragment: string | null;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RouterStateService {\n private _isScrollTopOnNavigationEnabled = false;\n private readonly _router = inject(Router);\n\n private readonly _route$ = new BehaviorSubject(window.location.pathname);\n private readonly _state$ = new BehaviorSubject<RouterState>(this._getInitialState());\n\n private readonly _afterInitialize$ = new BehaviorSubject<boolean>(false);\n readonly afterInitialize$ = this._afterInitialize$.pipe(filter((v) => v));\n\n get route$() {\n return this._route$.asObservable().pipe(distinctUntilChanged());\n }\n\n get route() {\n return this._route$.getValue();\n }\n\n get state$() {\n return this._state$.asObservable();\n }\n\n get state() {\n return this._state$.getValue();\n }\n\n get data$() {\n return this._state$.pipe(\n map((state) => state.data),\n distinctUntilChanged((a, b) => equal(a, b)),\n );\n }\n\n get data() {\n return this._state$.getValue().data;\n }\n\n get pathParams$() {\n return this._state$.pipe(\n map((state) => state.pathParams),\n distinctUntilChanged((a, b) => equal(a, b)),\n );\n }\n\n get pathParams() {\n return this._state$.getValue().pathParams;\n }\n\n get queryParams$() {\n return this._state$.pipe(\n map((state) => state.queryParams),\n distinctUntilChanged((a, b) => equal(a, b)),\n );\n }\n\n get queryParams() {\n return this._state$.getValue().queryParams;\n }\n\n get title$() {\n return this._state$.pipe(\n map((state) => state.title),\n distinctUntilChanged(),\n );\n }\n\n get title() {\n return this._state$.getValue().title;\n }\n\n get fragment$() {\n return this._state$.pipe(\n map((state) => state.fragment),\n distinctUntilChanged(),\n );\n }\n\n get fragment() {\n return this._state$.getValue().fragment;\n }\n\n get dataChanges$() {\n return this.data$.pipe(\n pairwise(),\n map((v) => this._findChanges(v)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n get queryParamChanges$() {\n return this.queryParams$.pipe(\n pairwise(),\n map((v) => this._findChanges(v)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n get pathParamChanges$() {\n return this.pathParams$.pipe(\n pairwise(),\n map((v) => this._findChanges(v)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n constructor() {\n this._router.events\n .pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n distinctUntilChanged((a, b) => a.url === b.url),\n map((event) => {\n const { url } = event;\n\n const urlWithoutQueryParams = url.split('?')[0] ?? '';\n const withoutFragment = urlWithoutQueryParams.split('#')[0] ?? '';\n\n return withoutFragment;\n }),\n tap(() => {\n if (!this._afterInitialize$.getValue()) {\n this._afterInitialize$.next(true);\n }\n }),\n )\n .subscribe(this._route$);\n\n combineLatest([this._route$, this._afterInitialize$])\n .pipe(\n tap(([, afterInitialize]) => {\n if (!afterInitialize) return;\n\n let route = this._router.routerState.snapshot.root;\n\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n const { data, params, queryParams, title, fragment } = route;\n\n this._state$.next({\n data,\n pathParams: params,\n queryParams,\n title: title ?? null,\n fragment,\n });\n }),\n )\n .subscribe();\n }\n\n enableScrollEnhancements(config: ScrollEnhancementsConfig = {}) {\n if (this._isScrollTopOnNavigationEnabled) {\n return;\n }\n\n this._isScrollTopOnNavigationEnabled = true;\n\n combineLatest([this._state$.pipe(pairwise()), this._route$.pipe(pairwise())])\n .pipe(debounceTime(1))\n .subscribe(([[prevState, currState], [prevRoute, currRoute]]) => {\n const sameUrlNavigation = prevRoute === currRoute;\n const didFragmentChange = prevState.fragment !== currState.fragment;\n\n if (sameUrlNavigation) {\n const allQueryParams = [\n ...new Set(Object.keys(prevState.queryParams).concat(Object.keys(currState.queryParams))),\n ];\n\n const changedQueryParams = allQueryParams.filter(\n (key) => currState.queryParams[key] !== prevState.queryParams[key],\n );\n\n if (!config.queryParamTriggerList?.length && !didFragmentChange) {\n return;\n }\n\n const caseQueryParams = changedQueryParams.some((key) => config.queryParamTriggerList?.includes(key));\n const caseFragment = didFragmentChange && config.fragment?.enabled;\n\n if (caseQueryParams) {\n (config.scrollElement ?? document.documentElement).scrollTop = 0;\n } else if (caseFragment) {\n const fragmentElement = document.getElementById(currState.fragment ?? '');\n\n if (fragmentElement) {\n fragmentElement.scrollIntoView({ behavior: config.fragment?.smooth ? 'smooth' : 'auto' });\n }\n }\n } else {\n const viaReturnRoute =\n currState.data[ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE] && prevState.data[ET_DISABLE_SCROLL_TOP];\n const explicitly = currState.data[ET_DISABLE_SCROLL_TOP];\n const pathParamsChange = currState.data[ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE];\n\n if (viaReturnRoute || explicitly || pathParamsChange) {\n return;\n }\n\n const el = config.scrollElement ?? document.documentElement;\n el.scrollTop = 0;\n }\n });\n }\n\n selectQueryParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(\n map((state) => state.queryParams[key]),\n distinctUntilChanged(),\n );\n }\n\n selectPathParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(\n map((state) => state.pathParams[key]),\n distinctUntilChanged(),\n );\n }\n\n selectData<T = unknown>(key: string): Observable<T> {\n return this._state$.pipe(\n map((state) => state.data[key]),\n distinctUntilChanged((a, b) => equal(a, b)),\n );\n }\n\n private _findChanges<T extends [Record<string, unknown>, Record<string, unknown>], J extends Partial<T[number]>>([\n previous,\n current,\n ]: T) {\n const changes: Record<string, unknown> = {};\n\n const allKeys = new Set<keyof typeof previous & keyof typeof current>([\n ...Object.keys(previous),\n ...Object.keys(current),\n ]);\n\n for (const key of allKeys) {\n if (!equal(previous[key], current[key])) {\n const val = current[key] === undefined ? ET_PROPERTY_REMOVED : current[key];\n\n changes[key] = val;\n }\n }\n\n return changes as J;\n }\n\n private _getInitialState(): RouterState {\n const data = {};\n const pathParams = {};\n const queryParams: Params = {};\n const title = null;\n let fragment = null;\n\n const currentQueryParams = window.location.search;\n const currentFragment = window.location.hash;\n\n if (currentQueryParams) {\n const params = new URLSearchParams(currentQueryParams);\n\n params.forEach((value, key) => {\n queryParams[key] = value;\n });\n }\n\n if (currentFragment) {\n fragment = currentFragment.slice(1);\n }\n\n return {\n data,\n pathParams,\n queryParams,\n title,\n fragment,\n };\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable, inject } from '@angular/core';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n combineLatest,\n debounceTime,\n finalize,\n map,\n shareReplay,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { DEFAULT_VIEWPORT_CONFIG, VIEWPORT_CONFIG } from '../constants';\nimport { Memo } from '../decorators/memo';\nimport { Breakpoint } from '../types';\nimport { equal } from '../utils';\nimport { ResizeObserverService } from './resize-observer.service';\nimport { BuildMediaQueryOptions } from './viewport.types';\n\nexport interface Size {\n width: number;\n height: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ViewportService {\n private readonly _resizeObserverService = inject(ResizeObserverService);\n private readonly _viewportConfig = inject(VIEWPORT_CONFIG, { optional: true }) || DEFAULT_VIEWPORT_CONFIG;\n private readonly _breakpointObserver = inject(BreakpointObserver);\n\n private readonly _viewportMonitorStop$ = new Subject<void>();\n private _isViewportMonitorEnabled = false;\n\n private _isXs$ = new BehaviorSubject(this.isMatched({ max: 'xs' }));\n private _isSm$ = new BehaviorSubject(this.isMatched({ min: 'sm', max: 'sm' }));\n private _isMd$ = new BehaviorSubject(this.isMatched({ min: 'md', max: 'md' }));\n private _isLg$ = new BehaviorSubject(this.isMatched({ min: 'lg', max: 'lg' }));\n private _isXl$ = new BehaviorSubject(this.isMatched({ min: 'xl', max: 'xl' }));\n private _is2Xl$ = new BehaviorSubject(this.isMatched({ min: '2xl' }));\n\n private _viewportSize$ = new BehaviorSubject<Size | null>(null);\n private _scrollbarSize$ = new BehaviorSubject<Size | null>(null);\n\n get isXs$() {\n return this._isXs$.asObservable();\n }\n\n get isXs() {\n return this._isXs$.value;\n }\n\n get isSm$() {\n return this._isSm$.asObservable();\n }\n\n get isSm() {\n return this._isSm$.value;\n }\n\n get isMd$() {\n return this._isMd$.asObservable();\n }\n\n get isMd() {\n return this._isMd$.value;\n }\n\n get isLg$() {\n return this._isLg$.asObservable();\n }\n\n get isLg() {\n return this._isLg$.value;\n }\n\n get isXl$() {\n return this._isXl$.asObservable();\n }\n\n get isXl() {\n return this._isXl$.value;\n }\n\n get is2Xl$() {\n return this._is2Xl$.asObservable();\n }\n\n get is2Xl() {\n return this._is2Xl$.value;\n }\n\n get viewportSize$() {\n return this._viewportSize$.asObservable();\n }\n\n get viewportSize() {\n return this._viewportSize$.value;\n }\n\n get scrollbarSize$() {\n return this._scrollbarSize$.asObservable();\n }\n\n get scrollbarSize() {\n return this._scrollbarSize$.value;\n }\n\n currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(\n map((val) => this.getCurrentViewport(val)),\n debounceTime(0),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n get currentViewport() {\n return this.getCurrentViewport([this.isXs, this.isSm, this.isMd, this.isLg, this.isXl, this.is2Xl]);\n }\n\n constructor() {\n this._observeDefaultBreakpoints();\n }\n\n observe(options: { min?: number | Breakpoint; max?: number | Breakpoint }): Observable<boolean> {\n const mediaQuery = this._buildMediaQuery(options);\n\n return this._breakpointObserver.observe(mediaQuery).pipe(\n map((x) => x.matches),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n isMatched(options: { min?: number | Breakpoint; max?: number | Breakpoint }): boolean {\n const mediaQuery = this._buildMediaQuery(options);\n\n return this._breakpointObserver.isMatched(mediaQuery);\n }\n\n /**\n * Applies size CSS variables to the documentElement in pixels.\n * - `--et-vw`: viewport width excluding scrollbar width\n * - `--et-vh`: viewport height excluding scrollbar height\n * - `--et-sw`: scrollbar width\n * - `--et-sh`: scrollbar height\n */\n monitorViewport() {\n if (this._isViewportMonitorEnabled) return;\n\n this._isViewportMonitorEnabled = true;\n\n this._resizeObserverService\n .observe(document.documentElement)\n .pipe(\n tap((e) => {\n const entry = e[0];\n\n if (!entry) return;\n\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n\n const obj = { width, height };\n\n if (equal(obj, this._viewportSize$.value)) return;\n\n document.documentElement.style.setProperty('--et-vw', `${obj.width}px`);\n document.documentElement.style.setProperty('--et-vh', `${obj.height}px`);\n\n this._viewportSize$.next(obj);\n }),\n finalize(() => {\n document.documentElement.style.removeProperty('--et-vw');\n document.documentElement.style.removeProperty('--et-vh');\n\n this._viewportSize$.next(null);\n }),\n takeUntil(this._viewportMonitorStop$),\n )\n .subscribe();\n\n const scrollbarRuler = document.createElement('div');\n scrollbarRuler.style.width = '100px';\n scrollbarRuler.style.height = '100px';\n scrollbarRuler.style.overflow = 'scroll';\n scrollbarRuler.style.position = 'absolute';\n scrollbarRuler.style.top = '-9999px';\n document.body.appendChild(scrollbarRuler);\n\n this._resizeObserverService\n .observe(scrollbarRuler)\n .pipe(\n tap((e) => {\n const entry = e[0];\n\n if (!entry) return;\n\n const size = entry.contentRect.width;\n\n const obj = { width: 100 - size, height: 100 - size };\n\n if (equal(obj, this._scrollbarSize$.value)) return;\n\n document.documentElement.style.setProperty('--et-sw', `${obj.width}px`);\n document.documentElement.style.setProperty('--et-sh', `${obj.height}px`);\n\n this._scrollbarSize$.next(obj);\n }),\n finalize(() => {\n document.body.removeChild(scrollbarRuler);\n document.documentElement.style.removeProperty('--et-vw');\n document.documentElement.style.removeProperty('--et-vh');\n\n this._scrollbarSize$.next(null);\n }),\n takeUntil(this._viewportMonitorStop$),\n )\n .subscribe();\n }\n\n unmonitorViewport() {\n this._viewportMonitorStop$.next();\n this._isViewportMonitorEnabled = false;\n }\n\n @Memo()\n getBreakpointSize(type: Breakpoint, option: 'min' | 'max') {\n const index = option === 'min' ? 0 : 1;\n const size = this._viewportConfig.breakpoints[type][index];\n\n if (size === Infinity || size === 0) {\n return size;\n }\n\n if (option === 'min') {\n return size;\n }\n\n // Due to scaling, the actual size of the viewport may be a decimal number.\n // Eg. on Windows 11 with 150% scaling, the viewport size may be 1535.33px\n // and thus not matching any of the default breakpoints.\n return size + 0.9;\n }\n\n private _observeDefaultBreakpoints() {\n this.observe({ max: 'xs' }).subscribe(this._isXs$);\n this.observe({ min: 'sm', max: 'sm' }).subscribe(this._isSm$);\n this.observe({ min: 'md', max: 'md' }).subscribe(this._isMd$);\n this.observe({ min: 'lg', max: 'lg' }).subscribe(this._isLg$);\n this.observe({ min: 'xl', max: 'xl' }).subscribe(this._isXl$);\n this.observe({ min: '2xl' }).subscribe(this._is2Xl$);\n }\n\n @Memo({\n resolver: (v: BuildMediaQueryOptions) => {\n return `${v.min ?? ''}-${v.max ?? ''}`;\n },\n })\n private _buildMediaQuery(options: BuildMediaQueryOptions) {\n if (!options.min && !options.max) {\n throw new Error('At least one of min or max must be defined');\n }\n\n const mediaQueryParts: string[] = [];\n\n if (options.min) {\n if (typeof options.min === 'number') {\n mediaQueryParts.push(`(min-width: ${options.min}px)`);\n } else {\n mediaQueryParts.push(`(min-width: ${this.getBreakpointSize(options.min, 'min')}px)`);\n }\n }\n\n if (options.min && options.max) {\n mediaQueryParts.push('and');\n }\n\n if (options.max) {\n if (typeof options.max === 'number') {\n mediaQueryParts.push(`(max-width: ${options.max}px)`);\n } else {\n mediaQueryParts.push(`(max-width: ${this.getBreakpointSize(options.max, 'max')}px)`);\n }\n }\n\n return mediaQueryParts.join(' ');\n }\n\n private getCurrentViewport([isXs, isSm, isMd, isLg, isXl, is2Xl]: [\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n ]): Breakpoint {\n if (isXs) {\n return 'xs';\n } else if (isSm) {\n return 'sm';\n } else if (isMd) {\n return 'md';\n } else if (isLg) {\n return 'lg';\n } else if (isXl) {\n return 'xl';\n } else if (is2Xl) {\n return '2xl';\n }\n\n return 'xs';\n }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n EffectRef,\n ElementRef,\n Injector,\n NgZone,\n QueryList,\n Renderer2,\n RendererStyleFlags2,\n Signal,\n WritableSignal,\n afterNextRender,\n computed,\n effect,\n inject,\n isDevMode,\n isSignal,\n runInInjectionContext,\n signal,\n untracked,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { AbstractControl, FormControl } from '@angular/forms';\nimport { NavigationEnd, Router } from '@angular/router';\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n pairwise,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { ET_PROPERTY_REMOVED, RouterState, ViewportService } from '../services';\nimport { Breakpoint } from '../types';\nimport { nextFrame } from './animation.utils';\nimport { equal } from './equal.util';\nimport { isElementVisible } from './scrollable.utils';\n\ntype SignalElementBindingComplexType =\n | HTMLElement\n | ElementRef<HTMLElement>\n | QueryList<ElementRef<HTMLElement> | HTMLElement>\n | Array<ElementRef<HTMLElement> | HTMLElement>\n | null\n | undefined;\n\ntype SignalElementBindingType =\n | HTMLElement\n | ElementRef<HTMLElement>\n | Observable<SignalElementBindingComplexType>\n | Signal<SignalElementBindingComplexType>\n | QueryList<ElementRef<HTMLElement> | HTMLElement>\n | ElementSignal;\n\ntype ElementSignal = Signal<{\n /** @deprecated Always use currentElements */\n currentElement: HTMLElement | null;\n\n /** @deprecated Always use previousElements */\n previousElement: HTMLElement | null;\n currentElements: HTMLElement[];\n previousElements: HTMLElement[];\n}>;\n\ntype ElementSignalValue = ReturnType<ElementSignal>;\n\nfunction isElementSignal(el: unknown): el is ElementSignal {\n if (isSignal(el)) {\n const val = el();\n return typeof val === 'object' && val !== null && 'currentElement' in val && 'previousElement' in val;\n }\n\n return false;\n}\n\nconst documentElementSignal = (): ElementSignal =>\n signal({\n currentElement: document.documentElement,\n previousElement: null,\n currentElements: [document.documentElement],\n previousElements: [],\n });\n\nconst buildElementSignal = (el: SignalElementBindingType | null | undefined): ElementSignal => {\n if (el === null || el === undefined) {\n return signal({ currentElement: null, previousElement: null, currentElements: [], previousElements: [] });\n }\n\n if (isElementSignal(el)) {\n return el;\n }\n\n let mElSignal: Signal<HTMLElement[] | null> | null = null;\n\n const switchElement = () =>\n switchMap((elOrRef: SignalElementBindingComplexType) => {\n if (elOrRef instanceof QueryList) {\n return elOrRef.changes.pipe(\n startWith(elOrRef),\n map(() => elOrRef.toArray().map((r) => coerceElement(r))),\n );\n } else if (Array.isArray(elOrRef)) {\n return of(elOrRef.map((r) => coerceElement(r)));\n } else {\n const coercedEl = coerceElement(elOrRef);\n return of(coercedEl ? [coercedEl] : null);\n }\n });\n\n if (el instanceof Observable) {\n mElSignal = toSignal(el.pipe(switchElement()), { initialValue: null });\n } else if (isSignal(el)) {\n mElSignal = toSignal(toObservable(el).pipe(switchElement()), { initialValue: null });\n } else if (el instanceof QueryList) {\n mElSignal = toSignal(\n el.changes.pipe(\n startWith(el),\n map(() => el.toArray().map((r) => coerceElement(r))),\n ),\n { initialValue: null },\n );\n } else {\n mElSignal = signal([coerceElement(el)]);\n }\n\n const elSig = toSignal(\n toObservable(mElSignal).pipe(\n startWith(null),\n pairwise(),\n map(([previousElements, currentElements]) => ({\n previousElements: previousElements ?? [],\n currentElements: currentElements ?? [],\n currentElement: currentElements?.[0] ?? null,\n previousElement: previousElements?.[0] ?? null,\n })),\n ),\n { initialValue: { currentElement: null, previousElement: null, previousElements: [], currentElements: [] } },\n );\n\n return computed(() => elSig(), {\n equal: (a, b) =>\n a.currentElement === b.currentElement &&\n a.previousElement === b.previousElement &&\n a.currentElements.length === b.currentElements.length &&\n a.currentElements.every((v, i) => v === b.currentElements[i]) &&\n a.previousElements.length === b.previousElements.length &&\n a.previousElements.every((v, i) => v === b.previousElements[i]),\n });\n};\n\nconst firstElementSignal = (el: ElementSignal) => {\n return computed(\n () => {\n const current = el();\n\n if (current.currentElements.length > 1) {\n console.warn(\n 'More than one element is bound to the signal. Only the first element will be used.',\n current.currentElements,\n );\n }\n\n const curr = current.currentElements[0] ?? null;\n const prev = current.previousElements[0] ?? null;\n\n return { currentElement: curr, previousElement: prev };\n },\n { equal: (a, b) => a.currentElement === b.currentElement && a.previousElement === b.previousElement },\n );\n};\n\nexport interface BuildSignalEffectsConfig<T extends Record<string, Signal<unknown>>> {\n /** The tokens to apply and their signal value */\n tokenMap: T;\n\n /** This function will be invoked for elements that were removed from the signal effects */\n cleanupFn: (el: HTMLElement, tokens: string[]) => void;\n\n /** This function will be invoked for elements that were added to the signal effects or when their signal value changes */\n updateFn: (el: HTMLElement, tokens: string[], conditionResult: unknown) => void;\n}\n\nexport const buildSignalEffects = <T extends Record<string, Signal<unknown>>>(\n el: SignalElementBindingType,\n config: BuildSignalEffectsConfig<T>,\n) => {\n const elements = buildElementSignal(el);\n const injector = inject(Injector);\n\n effect(() => {\n const { currentElements, previousElements } = elements();\n\n for (const previousEl of previousElements) {\n if (currentElements.includes(previousEl)) continue;\n\n const tokens = Object.keys(config.tokenMap)\n .map((key) => key.split(' '))\n .flat();\n\n if (!tokens.length) continue;\n\n config.cleanupFn(previousEl, tokens);\n }\n\n for (const currentEl of currentElements) {\n if (previousElements.includes(currentEl)) continue;\n\n for (const [tokens, condition] of Object.entries(config.tokenMap)) {\n untracked(() => {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) return;\n\n config.updateFn(currentEl, tokenArray, condition());\n });\n }\n }\n });\n\n const effects: Record<string, EffectRef> = {};\n\n const has = (tokens: string) => tokens in effects;\n\n const push = (tokens: string, signal: Signal<unknown>) => {\n if (has(tokens)) return;\n\n runInInjectionContext(injector, () => {\n effects[tokens] = effect(() => {\n const { currentElements } = untracked(() => elements());\n const value = signal();\n\n for (const el of currentElements) {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) continue;\n\n config.updateFn(el, tokenArray, value);\n }\n });\n });\n };\n\n const pushMany = (map: Record<string, Signal<unknown>>) => {\n for (const [tokens, signal] of Object.entries(map)) {\n push(tokens, signal);\n }\n };\n\n const remove = (tokens: string) => {\n effects[tokens]?.destroy();\n\n delete effects[tokens];\n\n for (const el of elements().currentElements) {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) continue;\n\n config.cleanupFn(el, tokenArray);\n }\n };\n\n const removeMany = (tokens: string[]) => {\n for (const token of tokens) {\n remove(token);\n }\n };\n\n pushMany(config.tokenMap);\n\n return { remove, removeMany, has, push, pushMany };\n};\n\nexport const signalIsRendered = () => {\n const isRendered = signal(false);\n\n afterNextRender(() => isRendered.set(true));\n\n return isRendered.asReadonly();\n};\n\nexport const signalClasses = <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, classMap: T) => {\n const renderer = inject(Renderer2);\n\n return buildSignalEffects(el, {\n tokenMap: classMap,\n cleanupFn: (el, tokens) => tokens.forEach((token) => renderer.removeClass(el, token)),\n updateFn: (el, tokens, condition) => {\n if (!condition) {\n tokens.forEach((token) => renderer.removeClass(el, token));\n } else {\n tokens.forEach((token) => renderer.addClass(el, token));\n }\n },\n });\n};\n\nexport const signalHostClasses = <T extends Record<string, Signal<unknown>>>(classMap: T) =>\n signalClasses(inject(ElementRef), classMap);\n\nconst ALWAYS_TRUE_ATTRIBUTE_KEYS = ['disabled', 'readonly', 'required', 'checked', 'selected', 'hidden', 'inert'];\n\nexport const signalAttributes = <T extends Record<string, Signal<unknown>>>(\n el: SignalElementBindingType,\n attributeMap: T,\n) => {\n const renderer = inject(Renderer2);\n\n return buildSignalEffects(el, {\n tokenMap: attributeMap,\n cleanupFn: (el, tokens) => tokens.forEach((token) => el.removeAttribute(token)),\n updateFn: (el, tokens, condition) => {\n for (const token of tokens) {\n if (ALWAYS_TRUE_ATTRIBUTE_KEYS.includes(token)) {\n if (condition) {\n renderer.setAttribute(el, token, '');\n } else {\n renderer.removeAttribute(el, token);\n }\n continue;\n }\n\n if (condition === null || condition === undefined) {\n renderer.removeAttribute(el, token);\n } else {\n renderer.setAttribute(el, token, `${condition}`);\n }\n }\n },\n });\n};\n\nexport const signalHostAttributes = <T extends Record<string, Signal<unknown>>>(attributeMap: T) =>\n signalAttributes(inject(ElementRef), attributeMap);\n\nexport const signalStyles = <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, styleMap: T) => {\n const renderer = inject(Renderer2);\n\n return buildSignalEffects(el, {\n tokenMap: styleMap,\n cleanupFn: (el, tokens) => tokens.forEach((token) => renderer.removeStyle(el, token, RendererStyleFlags2.DashCase)),\n updateFn: (el, tokens, condition) => {\n for (const token of tokens) {\n if (condition === null || condition === undefined) {\n renderer.removeStyle(el, token, RendererStyleFlags2.DashCase);\n } else {\n renderer.setStyle(el, token, `${condition}`, RendererStyleFlags2.DashCase);\n }\n }\n },\n });\n};\n\nexport const signalHostStyles = <T extends Record<string, Signal<unknown>>>(styleMap: T) =>\n signalStyles(inject(ElementRef), styleMap);\n\nexport interface LogicalSize {\n inlineSize: number;\n blockSize: number;\n}\n\nexport type ElementRect = {\n bottom: number;\n height: number;\n left: number;\n right: number;\n top: number;\n width: number;\n x: number;\n y: number;\n};\n\nexport type ElementSize = {\n width: number;\n height: number;\n};\n\nexport const boundingClientRectToElementRect = (rect: DOMRectReadOnly): ElementRect => ({\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width,\n x: rect.x,\n y: rect.y,\n});\n\nexport const createElementDimensions = (el: HTMLElement | null, rect?: DOMRect): NullableElementDimensions => {\n if (!el) {\n return {\n rect: null,\n client: null,\n scroll: null,\n offset: null,\n };\n }\n\n const cachedNormalizedRect = rect ? boundingClientRectToElementRect(rect) : null;\n const rectFn = () =>\n cachedNormalizedRect ? cachedNormalizedRect : boundingClientRectToElementRect(el.getBoundingClientRect());\n\n return {\n rect: rectFn,\n client: { width: el.clientWidth, height: el.clientHeight },\n scroll: { width: el.scrollWidth, height: el.scrollHeight },\n offset: { width: el.offsetWidth, height: el.offsetHeight },\n };\n};\n\nexport type ElementDimensions = {\n rect: () => ElementRect;\n client: ElementSize;\n scroll: ElementSize;\n offset: ElementSize;\n};\n\nexport type NullableElementDimensions = {\n [K in keyof ElementDimensions]: ElementDimensions[K] | null;\n};\n\nexport const signalElementDimensions = (el: SignalElementBindingType) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n\n const initialValue = () => createElementDimensions(elements().currentElement);\n\n const elementDimensionsSignal = signal<NullableElementDimensions>(initialValue());\n\n const observer = new ResizeObserver((e) => {\n if (!isRendered()) return;\n\n const entry = e[0];\n\n if (entry) {\n const target = entry.target as HTMLElement;\n const newDimensions = createElementDimensions(target);\n\n zone.run(() => elementDimensionsSignal.set(newDimensions));\n }\n });\n\n effect(\n () => {\n const els = elements();\n\n untracked(() => {\n elementDimensionsSignal.set(initialValue());\n\n if (els.previousElement) {\n observer.disconnect();\n }\n\n if (els.currentElement) {\n const computedDisplay = getComputedStyle(els.currentElement).display;\n const currentElIsAngularComponent = els.currentElement?.tagName.toLowerCase().includes('-');\n\n if (computedDisplay === 'inline' && isDevMode() && currentElIsAngularComponent) {\n console.error(\n `Element <${els.currentElement?.tagName.toLowerCase()}> is an Angular component and has a display of 'inline'. Inline elements cannot be observed for dimensions. Please change it to 'block' or something else.`,\n );\n }\n\n observer.observe(els.currentElement);\n }\n });\n },\n { allowSignalWrites: true },\n );\n\n destroyRef.onDestroy(() => observer.disconnect());\n\n return computed(() => elementDimensionsSignal(), {\n equal: (a, b) => equal(a, b),\n });\n};\n\nexport const signalHostElementDimensions = () => signalElementDimensions(inject(ElementRef));\n\nexport const signalElementMutations = (el: SignalElementBindingType, options?: MutationObserverInit) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n\n const elementMutationsSignal = signal<MutationRecord | null>(null);\n\n const observer = new MutationObserver((e) => {\n if (!isRendered()) return;\n\n const entry = e[0];\n\n if (entry) {\n zone.run(() => elementMutationsSignal.set(entry));\n }\n });\n\n effect(\n () => {\n const els = elements();\n\n elementMutationsSignal.set(null);\n\n if (els.previousElement) {\n observer.disconnect();\n }\n\n if (els.currentElement) {\n observer.observe(els.currentElement, options);\n }\n },\n { allowSignalWrites: true },\n );\n\n destroyRef.onDestroy(() => observer.disconnect());\n\n return elementMutationsSignal.asReadonly();\n};\n\nexport const signalHostElementMutations = (options?: MutationObserverInit) =>\n signalElementMutations(inject(ElementRef), options);\n\nexport type SignalElementScrollStateOptions = {\n /** The initial scroll position to scroll to. Once a truthy value get's emitted, all further values will be ignored. */\n initialScrollPosition?: Signal<ScrollToOptions | null>;\n};\n\nexport type ElementScrollState = {\n canScroll: boolean;\n canScrollHorizontally: boolean;\n canScrollVertically: boolean;\n elementDimensions: NullableElementDimensions;\n};\n\nexport const areScrollStatesEqual = (a: ElementScrollState, b: ElementScrollState) => {\n return (\n a.canScroll === b.canScroll &&\n a.canScrollHorizontally === b.canScrollHorizontally &&\n a.canScrollVertically === b.canScrollVertically &&\n equal(a.elementDimensions, b.elementDimensions)\n );\n};\n\nexport const signalElementScrollState = (el: SignalElementBindingType, options?: SignalElementScrollStateOptions) => {\n const elements = buildElementSignal(el);\n const observedEl = firstElementSignal(elements);\n const elementDimensions = signalElementDimensions(elements);\n const elementMutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });\n const isRendered = signalIsRendered();\n\n const initialScrollPosition = options?.initialScrollPosition;\n\n if (initialScrollPosition) {\n const ref = effect(() => {\n if (!isRendered()) return;\n\n const scrollPosition = initialScrollPosition();\n const element = observedEl().currentElement;\n\n if (scrollPosition && element) {\n if (scrollPosition.left !== undefined) element.scrollLeft = scrollPosition.left;\n if (scrollPosition.top !== undefined) element.scrollTop = scrollPosition.top;\n ref.destroy();\n }\n });\n }\n\n const notScrollable = (dimensions: NullableElementDimensions) => ({\n canScroll: false,\n canScrollHorizontally: false,\n canScrollVertically: false,\n elementDimensions: dimensions,\n });\n\n return computed<ElementScrollState>(\n () => {\n const element = observedEl().currentElement;\n const dimensions = elementDimensions();\n\n // We are not interested what the mutation is, just that there is one.\n // Changes to the DOM can affect the scroll state of the element.\n elementMutations();\n\n if (!element || !isRendered()) return notScrollable(dimensions);\n\n const { scrollWidth, scrollHeight, clientHeight, clientWidth } = element;\n\n const canScrollHorizontally = scrollWidth > clientWidth;\n const canScrollVertically = scrollHeight > clientHeight;\n\n return {\n canScroll: canScrollHorizontally || canScrollVertically,\n canScrollHorizontally,\n canScrollVertically,\n elementDimensions: dimensions,\n };\n },\n { equal: (a, b) => areScrollStatesEqual(a, b) },\n );\n};\n\nexport const signalHostElementScrollState = () => signalElementScrollState(inject(ElementRef));\n\nexport type SignalElementIntersectionOptions = Omit<IntersectionObserverInit, 'root'> & {\n root?: SignalElementBindingType;\n enabled?: Signal<boolean>;\n};\n\nexport const signalElementIntersection = (el: SignalElementBindingType, options?: SignalElementIntersectionOptions) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const root = firstElementSignal(options?.root ? buildElementSignal(options?.root) : documentElementSignal());\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n const isEnabled = options?.enabled ?? signal(true);\n\n const elementIntersectionSignal = signal<IntersectionObserverEntry[]>([]);\n const observer = signal<IntersectionObserver | null>(null);\n\n const currentlyObservedElements = new Set<HTMLElement>();\n\n const updateIntersections = (entries: IntersectionObserverEntry[]) => {\n let currentValues = [...elementIntersectionSignal()];\n\n for (const entry of entries) {\n const existingEntryIndex = currentValues.findIndex((v) => v.target === entry.target);\n\n // Round the intersection ratio to the nearest 0.01 to avoid floating point errors and system scaling issues.\n const roundedIntersectionRatio = Math.round(entry.intersectionRatio * 100) / 100;\n\n const intersectionEntry: IntersectionObserverEntry = {\n boundingClientRect: entry.boundingClientRect,\n intersectionRatio: roundedIntersectionRatio,\n intersectionRect: entry.intersectionRect,\n isIntersecting: entry.isIntersecting,\n rootBounds: entry.rootBounds,\n target: entry.target,\n time: entry.time,\n };\n\n if (existingEntryIndex !== -1) {\n currentValues = [\n ...currentValues.slice(0, existingEntryIndex),\n intersectionEntry,\n ...currentValues.slice(existingEntryIndex + 1),\n ];\n } else {\n currentValues = [...currentValues, intersectionEntry];\n }\n }\n\n zone.run(() => elementIntersectionSignal.set(currentValues));\n };\n\n const updateIntersectionObserver = (rendered: boolean, enabled: boolean, rootEl: HTMLElement | null) => {\n observer()?.disconnect();\n currentlyObservedElements.clear();\n\n if (!rendered || !enabled || !rootEl) {\n observer.set(null);\n return;\n }\n\n const newObserver = new IntersectionObserver((entries) => updateIntersections(entries), {\n ...options,\n root: rootEl,\n });\n\n observer.set(newObserver);\n };\n\n const updateObservedElements = (observer: IntersectionObserver | null, elements: ElementSignalValue) => {\n const rootEl = root().currentElement;\n\n if (!observer || !rootEl) return;\n\n const rootBounds = rootEl.getBoundingClientRect();\n\n const currIntersectionValue = elementIntersectionSignal();\n const newIntersectionValue: IntersectionObserverEntry[] = [];\n\n for (const el of elements.currentElements) {\n if (currentlyObservedElements.has(el)) {\n const existingEntryIndex = currIntersectionValue.findIndex((v) => v.target === el);\n const existingEntry = currIntersectionValue[existingEntryIndex];\n\n if (!existingEntry) {\n console.warn('Could not find existing entry for element. The intersection observer might be broken now.', el);\n continue;\n }\n\n newIntersectionValue.push(existingEntry);\n continue;\n }\n\n const elBounds = el.getBoundingClientRect();\n\n const initialElementVisibility = isElementVisible({\n container: rootEl,\n element: el,\n containerRect: rootBounds,\n elementRect: elBounds,\n });\n\n if (!initialElementVisibility) {\n console.error('No visibility data found for element.', {\n element: el,\n container: rootEl,\n });\n\n continue;\n }\n\n const intersectionEntry: IntersectionObserverEntry = {\n boundingClientRect: elBounds,\n intersectionRatio: initialElementVisibility.intersectionRatio,\n intersectionRect: elBounds,\n isIntersecting: initialElementVisibility.isIntersecting,\n rootBounds: rootBounds,\n target: el,\n time: performance.now(),\n };\n\n newIntersectionValue.push(intersectionEntry);\n\n currentlyObservedElements.add(el);\n observer.observe(el);\n }\n\n for (const el of elements.previousElements) {\n if (elements.currentElements.includes(el)) continue;\n\n observer.unobserve(el);\n currentlyObservedElements.delete(el);\n }\n\n elementIntersectionSignal.set(newIntersectionValue);\n };\n\n effect(\n () => {\n const rootEl = root().currentElement;\n const rendered = isRendered();\n const enabled = isEnabled();\n\n untracked(() => updateIntersectionObserver(rendered, enabled, rootEl));\n },\n { allowSignalWrites: true },\n );\n\n effect(() => {\n const els = elements();\n const obs = observer();\n\n untracked(() => updateObservedElements(obs, els));\n });\n\n destroyRef.onDestroy(() => observer()?.disconnect());\n\n return elementIntersectionSignal.asReadonly();\n};\n\nexport const signalHostElementIntersection = (options?: SignalElementIntersectionOptions) =>\n signalElementIntersection(inject(ElementRef), options);\n\nexport const signalElementChildren = (el: SignalElementBindingType) => {\n const elements = buildElementSignal(el);\n const isRendered = signalIsRendered();\n const elementMutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });\n\n return computed(\n () => {\n if (!isRendered()) return [];\n\n const els = elements();\n\n // We are not interested what the mutation is, just that there is one.\n // Changes to the DOM may affect the children of the element.\n elementMutations();\n\n if (!els.currentElement) return [];\n\n const children: HTMLElement[] = [];\n\n for (let index = 0; index < els.currentElement.children.length; index++) {\n const element = els.currentElement.children[index];\n\n if (element instanceof HTMLElement) {\n children.push(element);\n }\n }\n\n return children;\n },\n { equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]) },\n );\n};\n\nexport const previousSignalValue = <T>(signal: Signal<T>) => {\n const obs = toObservable(signal).pipe(\n pairwise(),\n map(([prev]) => prev),\n );\n\n return toSignal(obs);\n};\n\nexport type SyncSignalOptions = {\n /**\n * If true, the target signal will not be updated with the source signal's value in a sync operation.\n * This should be set to true for signals that need to be initialized first before syncing (eg. required inputs)\n * @default false\n */\n skipSyncRead?: boolean;\n};\n\nexport const syncSignal = <T>(from: Signal<T>, to: WritableSignal<T>, options?: SyncSignalOptions) => {\n let isFirstRun = options?.skipSyncRead ? false : true;\n\n if (!options?.skipSyncRead) {\n try {\n // this might throw if the signal is not yet initialized (eg. a required signal input inside the constructor)\n // in that case we just skip the initial sync\n to.set(from());\n } catch {\n isFirstRun = false;\n\n if (isDevMode()) {\n console.warn('Failed to sync signals. The target signal is not yet initialized.', { from, to });\n }\n }\n }\n\n const ref = effect(() => {\n const formVal = from();\n\n if (isFirstRun) {\n isFirstRun = false;\n return;\n }\n\n untracked(() => {\n to.set(formVal);\n });\n });\n\n return ref;\n};\n\nexport interface ControlValueSignalOptions {\n debounceTime?: number;\n\n /**\n * @default false\n */\n debounceFirst?: boolean;\n}\n\nexport const controlValueSignal = <\n T extends Signal<AbstractControl | null> | AbstractControl,\n J extends T extends Signal<infer I> ? I : T,\n>(\n control: T,\n options?: ControlValueSignalOptions,\n) => {\n const initialValue = deferredSignal(() => (isSignal(control) ? control() : (control as AbstractControl)));\n\n const controlStream = isSignal(control)\n ? toObservable<AbstractControl | null>(control)\n : of<AbstractControl | null>(control);\n\n const controlObs = controlStream.pipe(\n switchMap((control) => {\n if (!control) return of(null);\n\n const vcsObs = options?.debounceTime\n ? control.valueChanges.pipe(debounceTime(options.debounceTime))\n : control.valueChanges;\n\n return vcsObs.pipe(map(() => control.getRawValue()));\n }),\n );\n\n const isRendered = toObservable(signalIsRendered()).pipe(filter((v) => v));\n const obs: Observable<ReturnType<NonNullable<J>['getRawValue']>> = !options?.debounceFirst\n ? isRendered.pipe(switchMap(() => merge(of(initialValue()?.getRawValue()), controlObs)))\n : isRendered.pipe(switchMap(() => controlObs));\n\n return toSignal(obs.pipe(distinctUntilChanged((a, b) => equal(a, b))), {\n initialValue: null,\n });\n};\n\n/**\n * The first item in the pair is the previous value and the second item is the current value.\n */\nexport const controlValueSignalWithPrevious = <T extends AbstractControl>(\n control: T,\n options?: ControlValueSignalOptions,\n) => {\n const obs = toObservable(controlValueSignal(control, options)).pipe(\n pairwise(),\n startWith([null, control.getRawValue()]),\n );\n\n return toSignal(obs, { requireSync: true });\n};\n\n/**\n * @deprecated Use `controlValueSignal` instead with `debounceTime` option.\n */\nexport interface DebouncedControlValueSignalOptions {\n /**\n * @default 300\n */\n debounceTime?: number;\n}\n\n/**\n * @deprecated Use `controlValueSignal` instead with `debounceTime` set to `300` and `debounceFirst` set to `true`.\n */\nexport const debouncedControlValueSignal = <T extends FormControl>(\n control: T,\n options?: DebouncedControlValueSignalOptions,\n) => controlValueSignal(control, options ?? { debounceTime: 300, debounceFirst: true });\n\nexport type InjectUtilConfig = {\n /** The injector to use for the injection. Must be provided if the function is not called from within a injection context. */\n injector?: Injector;\n};\n\nexport type InjectUtilTransformConfig<In, Out> = {\n /**\n * A transform function similar to the `transform` function in Angular input bindings.\n * Can be used to transform the value before it is returned.\n * E.g. transforming `\"true\"` to `true` for a boolean attribute.\n */\n transform?: (value: In) => Out;\n};\n\nexport const transformOrReturn = <In, Out>(src: Signal<In>, config?: InjectUtilTransformConfig<In, Out>) => {\n const transformer = config?.transform;\n\n if (transformer) {\n return computed(() => transformer(src()));\n }\n\n return src as unknown as Signal<Out>;\n};\n\n/** Inject the current router event */\nexport const injectRouterEvent = () => {\n const router = inject(Router);\n\n return toSignal(router.events, { initialValue: null });\n};\n\n/**\n * Inject the current url.\n * The url includes query params as well as the fragment. Use `injectRoute` instead if you are not intrusted in those.\n * @example \"/my-page?query=1¶m=true#fragment\"\n */\nexport const injectUrl = () => {\n const event = injectRouterEvent();\n const router = inject(Router);\n\n const url = signal(router.url);\n\n effect(() => {\n const currentEvent = event();\n\n untracked(() => {\n if (currentEvent instanceof NavigationEnd) {\n url.set(currentEvent.urlAfterRedirects);\n }\n });\n });\n\n return url.asReadonly();\n};\n\n/**\n * Inject the current route\n * @example \"/my-page\"\n */\nexport const injectRoute = () => {\n const url = injectUrl();\n\n return computed(() => {\n const fullUrl = url();\n const urlWithoutQueryParams = fullUrl.split('?')[0] ?? '';\n const withoutFragment = urlWithoutQueryParams.split('#')[0] ?? '';\n\n return withoutFragment;\n });\n};\n\nconst createRouterState = (router: Router) => {\n let route = router.routerState.snapshot.root;\n\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n const { data, params, queryParams, title, fragment } = route;\n\n return {\n data,\n pathParams: params,\n queryParams,\n title: title ?? null,\n fragment,\n };\n};\n\n/**\n * Inject the complete router state. This includes the current route data, path params, query params, title and fragment.\n */\nexport const injectRouterState = () => {\n const url = injectUrl();\n const router = inject(Router);\n\n const routerState = signal<RouterState>(createRouterState(router));\n\n effect(() => {\n url();\n\n untracked(() => routerState.set(createRouterState(router)));\n });\n\n return routerState.asReadonly();\n};\n\n/** Inject a signal containing the current route fragment (the part after the # inside the url if present) */\nexport const injectFragment = <T = string | null>(\n config?: InjectUtilConfig & InjectUtilTransformConfig<string | null, T>,\n) => {\n const routerState = injectRouterState();\n const fragment = computed(() => routerState().fragment);\n\n return transformOrReturn(fragment, config);\n};\n\n/** Inject all currently available query parameters as a signal */\nexport const injectQueryParams = () => {\n const routerState = injectRouterState();\n\n const queryParams = computed(() => routerState().queryParams);\n\n return queryParams;\n};\n\n/** Inject all currently available route data as a signal */\nexport const injectRouteData = () => {\n const routerState = injectRouterState();\n\n const data = computed(() => routerState().data);\n\n return data;\n};\n\n/** Inject the current route title as a signal */\nexport const injectRouteTitle = <T = string | null>(config?: InjectUtilTransformConfig<string | null, T>) => {\n const routerState = injectRouterState();\n const title = computed(() => routerState().title);\n\n return transformOrReturn(title, config);\n};\n\n/** Inject all currently available path parameters as a signal */\nexport const injectPathParams = () => {\n const routerState = injectRouterState();\n\n const pathParams = computed(() => routerState().pathParams);\n\n return pathParams;\n};\n\n/** Inject a specific query parameter as a signal */\nexport const injectQueryParam = <T = string | null>(\n key: string,\n config?: InjectUtilTransformConfig<string | null, T>,\n) => {\n const queryParams = injectQueryParams();\n const src = computed(() => queryParams()[key] ?? null) as Signal<string | null>;\n\n return transformOrReturn(src, config);\n};\n\n/** Inject a specific route data item as a signal */\nexport const injectRouteDataItem = <T = unknown>(key: string, config?: InjectUtilTransformConfig<unknown, T>) => {\n const data = injectRouteData();\n const src = computed(() => data()[key] ?? null) as Signal<T>;\n\n return transformOrReturn(src, config);\n};\n\n/** Inject a specific path parameter as a signal */\nexport const injectPathParam = <T = string | null>(\n key: string,\n config?: InjectUtilTransformConfig<string | null, T>,\n) => {\n const pathParams = injectPathParams();\n const src = computed(() => pathParams()[key] ?? null) as Signal<string | null>;\n\n return transformOrReturn(src, config);\n};\n\n/**\n * Inject query params that changed during navigation. Unchanged query params will be ignored.\n * Removed query params will be represented by the symbol `ET_PROPERTY_REMOVED`.\n */\nexport const injectQueryParamChanges = () => {\n const queryParams = injectQueryParams();\n const prevQueryParams = previousSignalValue(queryParams);\n\n return computed(() => {\n const current = queryParams();\n const previous = prevQueryParams() ?? {};\n\n const changes: Record<string, unknown> = {};\n\n const allKeys = new Set<keyof typeof previous & keyof typeof current>([\n ...Object.keys(previous),\n ...Object.keys(current),\n ]);\n\n for (const key of allKeys) {\n if (!equal(previous[key], current[key])) {\n const val = current[key] === undefined ? ET_PROPERTY_REMOVED : current[key];\n\n changes[key] = val;\n }\n }\n\n return changes;\n });\n};\n\n/**\n * Inject path params that changed during navigation. Unchanged path params will be ignored.\n * Removed path params will be represented by the symbol `ET_PROPERTY_REMOVED`.\n */\nexport const injectPathParamChanges = () => {\n const pathParams = injectPathParams();\n const prevPathParams = previousSignalValue(pathParams);\n\n return computed(() => {\n const current = pathParams();\n const previous = prevPathParams() ?? {};\n\n const changes: Record<string, unknown> = {};\n\n const allKeys = new Set<keyof typeof previous & keyof typeof current>([\n ...Object.keys(previous),\n ...Object.keys(current),\n ]);\n\n for (const key of allKeys) {\n if (!equal(previous[key], current[key])) {\n const val = current[key] === undefined ? ET_PROPERTY_REMOVED : current[key];\n\n changes[key] = val;\n }\n }\n\n return changes;\n });\n};\n\nexport const createIsRenderedSignal = () => {\n const value = signal(false);\n\n nextFrame(() => {\n if (!value()) {\n console.error(\n 'Render signal was not set to true. This can cause unexpected behavior. Make sure to .bind() the render signal at the end of the constructor.',\n );\n }\n });\n\n return {\n state: value,\n bind: () => effect(() => value.set(true), { allowSignalWrites: true }),\n };\n};\n\nexport const createCanAnimateSignal = () => {\n const value = signal(false);\n\n nextFrame(() => {\n value.set(true);\n });\n\n return {\n state: value.asReadonly(),\n };\n};\n\nexport type CursorDragScrollDirection = 'horizontal' | 'vertical' | 'both';\n\nexport type MaybeSignal<T> = T | Signal<T>;\n\nexport const maybeSignalValue = <T>(value: MaybeSignal<T>) => {\n if (isSignal(value)) {\n return value();\n }\n\n return value;\n};\n\nexport type CursorDragScrollOptions = {\n /** If true, cursor drag scrolling will be enabled. */\n enabled?: Signal<boolean>;\n\n /** The allowed scroll direction. */\n allowedDirection?: MaybeSignal<CursorDragScrollDirection>;\n};\n\n/** The deadzone in pixels after which the cursor drag scroll will take effect. */\nconst CURSOR_DRAG_SCROLL_DEADZONE = 5;\n\n/** The class that is added to the element when the cursor is being dragged. */\nconst CURSOR_DRAG_SCROLLING_CLASS = 'et-cursor-drag-scroll--scrolling';\nconst CURSOR_DRAG_INIT_CLASS = 'et-cursor-drag-scroll--init';\n\n/** A function to apply cursor drag scroll behavior to an element. */\nexport const useCursorDragScroll = (el: SignalElementBindingType, options?: CursorDragScrollOptions) => {\n const elements = buildElementSignal(el);\n const element = firstElementSignal(elements);\n const destroyRef = inject(DestroyRef);\n const { enabled = signal(true), allowedDirection = 'both' } = options ?? {};\n const scrollState = signalElementScrollState(elements);\n const renderer = inject(Renderer2);\n const isDragging = signal(false);\n const isInitDragging = signal(false);\n const initialDragPosition = signal({ x: 0, y: 0 });\n const initialScrollPosition = signal({ x: 0, y: 0 });\n const dragAmount = signal({ x: 0, y: 0 });\n const document = inject(DOCUMENT);\n\n const canScroll = computed(() => {\n const currentScrollState = scrollState();\n const direction = maybeSignalValue(allowedDirection);\n\n switch (direction) {\n case 'both':\n return currentScrollState.canScrollHorizontally || currentScrollState.canScrollVertically;\n case 'horizontal':\n return currentScrollState.canScrollHorizontally;\n case 'vertical':\n return currentScrollState.canScrollVertically;\n }\n });\n\n // Cleanup if the element the cursor drag scroll is bound to gets changed\n effect(() => {\n const { previousElement } = element();\n\n if (previousElement) {\n renderer.removeStyle(previousElement, 'cursor');\n }\n });\n\n // Conditionally apply styles/classes to the element and the document\n effect(() => {\n const currCanScroll = canScroll();\n const isEnabled = enabled();\n const currIsDragging = isDragging();\n const currIsInitDragging = isInitDragging();\n\n untracked(() => {\n const el = element().currentElement;\n\n if (!el) return;\n\n if (!currCanScroll || !isEnabled) {\n renderer.removeStyle(el, 'cursor');\n renderer.removeStyle(el, 'scrollSnapType');\n renderer.removeStyle(el, 'scrollBehavior');\n renderer.removeClass(el, CURSOR_DRAG_SCROLLING_CLASS);\n renderer.removeClass(el, CURSOR_DRAG_INIT_CLASS);\n renderer.removeStyle(document.documentElement, 'cursor');\n return;\n }\n\n if (currIsInitDragging) {\n renderer.addClass(el, CURSOR_DRAG_INIT_CLASS);\n }\n\n if (currIsDragging) {\n renderer.addClass(el, CURSOR_DRAG_SCROLLING_CLASS);\n renderer.setStyle(el, 'scrollSnapType', 'none');\n renderer.setStyle(el, 'scrollBehavior', 'unset');\n renderer.setStyle(el, 'cursor', 'grabbing');\n renderer.setStyle(document.documentElement, 'cursor', 'grabbing');\n }\n\n if (!currIsInitDragging && !currIsDragging) {\n renderer.setStyle(el, 'cursor', 'grab');\n renderer.removeStyle(el, 'scrollSnapType');\n renderer.removeStyle(el, 'scrollBehavior');\n renderer.removeClass(el, CURSOR_DRAG_SCROLLING_CLASS);\n renderer.removeClass(el, CURSOR_DRAG_INIT_CLASS);\n renderer.removeStyle(document.documentElement, 'cursor');\n }\n });\n });\n\n // Update the element's scroll position when the user drags\n effect(() => {\n const currDragAmount = dragAmount();\n\n untracked(() => {\n const currIsDragging = isDragging();\n const el = element().currentElement;\n const { x: dragX, y: dragY } = currDragAmount;\n const { x: scrollX, y: scrollY } = initialScrollPosition();\n const currAllowedDirection = maybeSignalValue(allowedDirection);\n\n if (!el || !currIsDragging) return;\n\n switch (currAllowedDirection) {\n case 'both':\n el.scroll({\n top: dragY + scrollY,\n left: dragX + scrollX,\n behavior: 'instant',\n });\n break;\n case 'horizontal':\n el.scroll({\n left: dragX + scrollX,\n behavior: 'instant',\n });\n break;\n case 'vertical':\n el.scroll({\n top: dragY + scrollY,\n behavior: 'instant',\n });\n break;\n }\n });\n });\n\n const updateDragging = (e: MouseEvent) => {\n const el = element().currentElement;\n\n if (!el) return;\n\n const dx = (e.clientX - initialDragPosition().x) * -1;\n const dy = (e.clientY - initialDragPosition().y) * -1;\n\n dragAmount.set({ x: dx, y: dy });\n\n if (Math.abs(dx) > CURSOR_DRAG_SCROLL_DEADZONE || Math.abs(dy) > CURSOR_DRAG_SCROLL_DEADZONE) {\n isDragging.set(true);\n }\n };\n\n const updateDraggingEnd = () => {\n isDragging.set(false);\n isInitDragging.set(false);\n initialDragPosition.set({ x: 0, y: 0 });\n initialScrollPosition.set({ x: 0, y: 0 });\n dragAmount.set({ x: 0, y: 0 });\n };\n\n const setupDragging = (e: MouseEvent) => {\n const mouseUp = fromEvent<MouseEvent>(document, 'mouseup');\n const mouseMove = fromEvent<MouseEvent>(document, 'mousemove');\n const el = element().currentElement;\n\n if (!el) return;\n\n mouseMove\n .pipe(\n takeUntilDestroyed(destroyRef),\n takeUntil(mouseUp),\n tap((e) => updateDragging(e)),\n )\n .subscribe();\n\n mouseUp\n .pipe(\n take(1),\n takeUntilDestroyed(destroyRef),\n tap(() => updateDraggingEnd()),\n )\n .subscribe();\n\n initialDragPosition.set({ x: e.clientX, y: e.clientY });\n initialScrollPosition.set({ x: el.scrollLeft, y: el.scrollTop });\n isInitDragging.set(true);\n };\n\n toObservable(element)\n .pipe(\n map((e) => e?.currentElement),\n switchMap((el) => (el ? fromEvent<MouseEvent>(el, 'mousedown') : of(null))),\n filter((e): e is MouseEvent => !!e),\n filter(() => enabled()),\n tap((e) => setupDragging(e)),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n return {\n isDragging: isDragging.asReadonly(),\n currentDragAmount: dragAmount.asReadonly(),\n };\n};\n\n/**\n * A computed that will only be reactive until the source signal contains a truthy value.\n * All subsequent changes inside the computation will be ignored.\n */\nexport const computedTillTruthy = <T>(source: Signal<T>) => {\n const value = signal<T | null>(null);\n\n const ref = effect(\n () => {\n const val = source();\n\n if (val) {\n value.set(val);\n ref.destroy();\n }\n },\n { allowSignalWrites: true },\n );\n\n return value.asReadonly();\n};\n\n/**\n * A computed that will only be reactive until the source signal contains a falsy value.\n * All subsequent changes inside the computation will be ignored.\n */\nexport const computedTillFalsy = <T>(source: Signal<T>) => {\n const value = signal<T | null>(null);\n\n const ref = effect(\n () => {\n const val = source();\n\n if (!val) {\n value.set(val);\n ref.destroy();\n }\n },\n { allowSignalWrites: true },\n );\n\n return value.asReadonly();\n};\n\n/**\n * A writeable signal that will be set to the provided value once all inputs are set.\n * During that time, the signal will be set to `null`.\n */\nexport const deferredSignal = <T extends () => unknown>(valueFn: T) => {\n const valueSignal = signal<ReturnType<T> | null>(null);\n\n afterNextRender(() => {\n valueSignal.set(valueFn() as ReturnType<T>);\n });\n\n return valueSignal;\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is xs */\nexport const injectIsXs = () => {\n return toSignal(inject(ViewportService).isXs$, { requireSync: true });\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is sm */\nexport const injectIsSm = () => {\n return toSignal(inject(ViewportService).isSm$, { requireSync: true });\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is md */\nexport const injectIsMd = () => {\n return toSignal(inject(ViewportService).isMd$, { requireSync: true });\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is lg */\nexport const injectIsLg = () => {\n return toSignal(inject(ViewportService).isLg$, { requireSync: true });\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is xl */\nexport const injectIsXl = () => {\n return toSignal(inject(ViewportService).isXl$, { requireSync: true });\n};\n\n/** Inject a signal containing a boolean value indicating if the viewport is 2xl */\nexport const injectIs2Xl = () => {\n return toSignal(inject(ViewportService).is2Xl$, { requireSync: true });\n};\n\n/**\n * Inject a boolean value indicating if the viewport is matching the provided options.\n * This value is not reactive. If you want to react to changes, use the {@link injectObserveBreakpoint} function instead.\n */\nexport const injectBreakpointIsMatched = (options: { min?: number | Breakpoint; max?: number | Breakpoint }) => {\n return inject(ViewportService).isMatched(options);\n};\n\n/**\n * Inject a signal containing a boolean value indicating if the viewport is matching the provided options.\n */\nexport const injectObserveBreakpoint = (options: { min?: number | Breakpoint; max?: number | Breakpoint }) => {\n return toSignal(inject(ViewportService).observe(options), { initialValue: injectBreakpointIsMatched(options) });\n};\n\n/** Inject a signal containing the current breakpoint. */\nexport const injectCurrentBreakpoint = () => {\n return toSignal(inject(ViewportService).currentViewport$, {\n initialValue: inject(ViewportService).currentViewport,\n });\n};\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { ScrollStrategy } from '@angular/cdk/overlay';\nimport { supportsScrollBehavior } from '@angular/cdk/platform';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\nimport { skip, startWith, Subscription, take, tap } from 'rxjs';\nimport { RouterStateService } from '../services';\nimport { createResizeObservable } from './resize-observable.util';\nimport { elementCanScroll } from './scrollable.utils';\n\nconst scrollBehaviorSupported = supportsScrollBehavior();\n\nconst BLOCK_CLASS = 'cdk-global-scrollblock';\nconst OVERSCROLL_CLASS = 'et-global-no-overscroll';\n\n/**\n * @deprecated Will be removed in v5. Scroll blocking for overlays is build in by default.\n */\nexport class SmartBlockScrollStrategy implements ScrollStrategy {\n private _previousHTMLStyles = { top: '', left: '' };\n private _previousScrollPosition: { top: number; left: number } = { top: 0, left: 0 };\n private _isEnabled = false;\n private _urlSubscription: Subscription | null = null;\n private _resizeSubscription: Subscription | null = null;\n private _didNavigate = false;\n\n #viewportRuler = inject(ViewportRuler);\n #routerState = inject(RouterStateService);\n #document = inject(DOCUMENT);\n\n attach() {\n // noop\n }\n\n enable() {\n if (!this._canBeEnabled()) return;\n\n const root = this.#document.documentElement;\n root.classList.add(OVERSCROLL_CLASS);\n\n this._resizeSubscription = createResizeObservable({ elements: root })\n .pipe(\n startWith(null),\n tap(() => {\n if (this._isEnabled || !elementCanScroll(root) || !this._canBeEnabled()) return;\n\n this._isEnabled = true;\n\n this._previousScrollPosition = this.#viewportRuler.getViewportScrollPosition();\n this._didNavigate = false;\n\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add(BLOCK_CLASS);\n\n this._urlSubscription = this.#routerState.route$\n .pipe(\n skip(1),\n take(1),\n tap(() => {\n this._didNavigate = true;\n }),\n )\n .subscribe();\n }),\n )\n .subscribe();\n }\n\n disable() {\n this._urlSubscription?.unsubscribe();\n this._resizeSubscription?.unsubscribe();\n const html = this.#document.documentElement;\n\n if (this._canBeEnabled()) {\n html.classList.remove(OVERSCROLL_CLASS);\n }\n\n if (this._isEnabled) {\n const body = this.#document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n\n this._isEnabled = false;\n\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove(BLOCK_CLASS);\n\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n\n if (!this._didNavigate) {\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n }\n\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n\n private _canBeEnabled(): boolean {\n const html = this.#document.documentElement;\n\n if (html.classList.contains(BLOCK_CLASS) || this._isEnabled) {\n return false;\n }\n\n return true;\n }\n}\n","import { Primitive } from '../types';\n\nexport const isPrimitiveArray = (value: unknown): value is Array<Primitive> => {\n if (!Array.isArray(value)) return false;\n\n const first = value[0];\n const last = value[value.length - 1];\n\n if (!first || !last) return false;\n\n return typeof first !== 'object' && typeof last !== 'object';\n};\n\nexport const isObjectArray = (value: unknown): value is Array<Record<string, unknown>> => {\n if (!Array.isArray(value)) return false;\n\n const first = value[0];\n const last = value[value.length - 1];\n\n if (!first || !last) return false;\n\n return typeof first === 'object' && typeof last === 'object' && !Array.isArray(first) && !Array.isArray(last);\n};\n\nexport const isEmptyArray = (value: unknown): value is [] => {\n return Array.isArray(value) && value.length === 0;\n};\n","import { VIEWPORT_CONFIG } from '../constants';\nimport { ViewportConfig } from '../types';\n\nexport const provideViewportConfig = (\n viewportConfig: ViewportConfig,\n): { provide: typeof VIEWPORT_CONFIG; useValue: typeof viewportConfig } => {\n return { provide: VIEWPORT_CONFIG, useValue: viewportConfig };\n};\n","import { Directive, ElementRef, inject, InjectionToken, Input, isDevMode, OnInit } from '@angular/core';\nimport {\n BehaviorSubject,\n debounceTime,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n skip,\n Subject,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { createDestroy } from '../../utils';\n\nexport const ANIMATABLE_TOKEN = new InjectionToken<AnimatableDirective>('ANIMATABLE_DIRECTIVE_TOKEN');\n\n@Directive({\n selector: '[etAnimatable]',\n exportAs: 'etAnimatable',\n standalone: true,\n providers: [\n {\n provide: ANIMATABLE_TOKEN,\n useExisting: AnimatableDirective,\n },\n ],\n})\nexport class AnimatableDirective implements OnInit {\n private _didEmitStart = false;\n\n private readonly _parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });\n private readonly _destroy$ = createDestroy();\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly _animationStart$ = new Subject<void>();\n private readonly _animationEnd$ = new Subject<void>();\n private readonly _animationCancelled$ = new Subject<void>();\n\n @Input('etAnimatable')\n set animatedElement(value: string | HTMLElement | null | undefined) {\n let newElement: HTMLElement | null = null;\n if (value === null || value === undefined || value === '') {\n newElement = this._elementRef.nativeElement;\n } else if (typeof value === 'string') {\n const el = document.querySelector(value) as HTMLElement;\n\n if (el) {\n newElement = el;\n } else {\n if (isDevMode()) {\n console.warn(`Element with selector ${value} not found. Animatable directive will use host element.`);\n }\n\n newElement = this._elementRef.nativeElement;\n }\n } else {\n newElement = value;\n }\n\n if (this._animatedElement$.value !== newElement) {\n this._animatedElement$.next(newElement);\n }\n }\n private _animatedElement$ = new BehaviorSubject<HTMLElement>(this._elementRef.nativeElement);\n\n readonly animationStart$ = this._animationStart$.asObservable().pipe(debounceTime(0));\n readonly animationEnd$ = this._animationEnd$.asObservable().pipe(debounceTime(0));\n readonly animationCancelled$ = this._animationCancelled$.asObservable().pipe(debounceTime(0));\n\n private readonly _hostActiveAnimationCount$ = new BehaviorSubject<number>(0);\n private readonly _totalActiveAnimationCount$ = new BehaviorSubject<number>(0);\n\n readonly isAnimating$: Observable<boolean> = this._totalActiveAnimationCount$.pipe(\n map((count) => count > 0),\n debounceTime(0),\n );\n\n ngOnInit(): void {\n this._animatedElement$\n .pipe(\n tap((el) => {\n this._totalActiveAnimationCount$.next(\n this._totalActiveAnimationCount$.value - this._hostActiveAnimationCount$.value,\n );\n this._hostActiveAnimationCount$.next(0);\n\n merge(fromEvent<AnimationEvent>(el, 'animationstart'), fromEvent<TransitionEvent>(el, 'transitionstart'))\n .pipe(\n filter((e) => e.target === el), // skip events from children\n tap(() => {\n const count = this._hostActiveAnimationCount$.value + 1;\n this._hostActiveAnimationCount$.next(count);\n this._totalActiveAnimationCount$.next(count);\n }),\n takeUntil(this._destroy$),\n takeUntil(this._animatedElement$.pipe(skip(1))),\n )\n .subscribe();\n\n merge(\n fromEvent<AnimationEvent>(el, 'animationend'),\n fromEvent<AnimationEvent>(el, 'animationcancel'),\n fromEvent<TransitionEvent>(el, 'transitionend'),\n fromEvent<TransitionEvent>(el, 'transitioncancel'),\n )\n .pipe(\n filter((e) => e.target === el), // skip events from children\n tap(() => {\n const count = this._hostActiveAnimationCount$.value - 1;\n this._hostActiveAnimationCount$.next(count);\n this._totalActiveAnimationCount$.next(count);\n }),\n takeUntil(this._destroy$),\n takeUntil(this._animatedElement$.pipe(skip(1))),\n )\n .subscribe();\n\n merge(fromEvent<AnimationEvent>(el, 'animationcancel'), fromEvent<TransitionEvent>(el, 'transitioncancel'))\n .pipe(\n filter((e) => e.target === el), // skip events from children\n tap(() => {\n this._animationCancelled$.next();\n }),\n takeUntil(this._destroy$),\n takeUntil(this._animatedElement$.pipe(skip(1))),\n )\n .subscribe();\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._totalActiveAnimationCount$\n .pipe(\n tap((count) => {\n if (count > 0 && !this._didEmitStart) {\n this._animationStart$.next();\n this._didEmitStart = true;\n } else if (count === 0) {\n this._animationEnd$.next();\n this._didEmitStart = false;\n }\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n if (this._parent) {\n this._parent._hostActiveAnimationCount$\n .pipe(\n takeUntil(this._destroy$),\n tap((count) => {\n this._totalActiveAnimationCount$.next(count + this._hostActiveAnimationCount$.value);\n }),\n )\n .subscribe();\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, inject, InjectionToken, model } from '@angular/core';\nimport { outputFromObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, map, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { createDestroy, forceReflow, fromNextFrame, signalHostClasses } from '../../utils';\nimport { ANIMATABLE_TOKEN, AnimatableDirective } from '../animatable';\n\nexport const ANIMATED_LIFECYCLE_TOKEN = new InjectionToken<AnimatedLifecycleDirective>(\n 'ANIMATED_LIFECYCLE_DIRECTIVE_TOKEN',\n);\n\nconst ANIMATION_CLASSES = {\n enterFrom: 'et-animation-enter-from',\n enterActive: 'et-animation-enter-active',\n enterTo: 'et-animation-enter-to',\n leaveFrom: 'et-animation-leave-from',\n leaveActive: 'et-animation-leave-active',\n leaveTo: 'et-animation-leave-to',\n} as const;\n\nexport type AnimatedLifecycleState = 'entering' | 'entered' | 'leaving' | 'left' | 'init';\n\n@Directive({\n selector: '[etAnimatedLifecycle]',\n exportAs: 'etAnimatedLifecycle',\n standalone: true,\n providers: [\n {\n provide: ANIMATED_LIFECYCLE_TOKEN,\n useExisting: AnimatedLifecycleDirective,\n },\n ],\n hostDirectives: [AnimatableDirective],\n})\nexport class AnimatedLifecycleDirective implements AfterViewInit {\n private readonly _destroy$ = createDestroy();\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _animatable = inject(ANIMATABLE_TOKEN);\n private readonly _classList = this._elementRef.nativeElement.classList;\n\n private _isConstructed = false;\n\n private _state$ = new BehaviorSubject<AnimatedLifecycleState>('init');\n readonly state$ = this._state$.asObservable();\n\n get state() {\n return this._state$.value;\n }\n\n readonly hostClassBindings = signalHostClasses({\n 'et-force-invisible': toSignal(this._state$.pipe(map((state) => state === 'init'))),\n });\n\n stateChange = outputFromObservable(this._state$);\n\n skipNextEnter = model(false);\n\n ngAfterViewInit(): void {\n this._isConstructed = true;\n }\n\n enter(config?: { onlyTransition?: boolean }) {\n if (this.state === 'entering') return;\n\n if ((this.state === 'init' && !this._isConstructed) || this.skipNextEnter()) {\n // Force the state to entered so that the element is not animated when it is first rendered.\n this._forceState('entered');\n this.skipNextEnter.set(false);\n return;\n }\n\n if (this.state === 'leaving') {\n this._classList.remove(ANIMATION_CLASSES.leaveFrom);\n this._classList.remove(ANIMATION_CLASSES.leaveActive);\n this._classList.remove(ANIMATION_CLASSES.leaveTo);\n }\n\n this._state$.next('entering');\n\n if (!config?.onlyTransition) {\n this._classList.add(ANIMATION_CLASSES.enterFrom);\n }\n\n forceReflow();\n this._classList.add(ANIMATION_CLASSES.enterActive);\n\n fromNextFrame()\n .pipe(\n tap(() => {\n if (!config?.onlyTransition && this.state === 'entering') {\n this._classList.remove(ANIMATION_CLASSES.enterFrom);\n this._classList.add(ANIMATION_CLASSES.enterTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\n if (this.state !== 'entering') return;\n\n this._state$.next('entered');\n this._classList.remove(ANIMATION_CLASSES.enterActive);\n\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.enterTo);\n }\n }),\n takeUntil(this._destroy$),\n take(1),\n )\n .subscribe();\n }\n\n leave(config?: { onlyTransition?: boolean }) {\n if (this.state === 'leaving') return;\n\n if (this.state === 'init') {\n this._state$.next('left');\n return;\n }\n\n if (this.state === 'entering') {\n this._classList.remove(ANIMATION_CLASSES.enterFrom);\n this._classList.remove(ANIMATION_CLASSES.enterActive);\n this._classList.remove(ANIMATION_CLASSES.enterTo);\n }\n\n this._state$.next('leaving');\n\n if (!config?.onlyTransition) {\n this._classList.add(ANIMATION_CLASSES.leaveFrom);\n }\n\n forceReflow();\n this._classList.add(ANIMATION_CLASSES.leaveActive);\n\n fromNextFrame()\n .pipe(\n tap(() => {\n if (!config?.onlyTransition && this.state === 'leaving') {\n this._classList.remove(ANIMATION_CLASSES.leaveFrom);\n this._classList.add(ANIMATION_CLASSES.leaveTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\n if (this.state !== 'leaving') return;\n\n this._state$.next('left');\n this._classList.remove(ANIMATION_CLASSES.leaveActive);\n\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.leaveTo);\n }\n }),\n takeUntil(this._destroy$),\n take(1),\n )\n .subscribe();\n }\n\n _forceState(state: AnimatedLifecycleState) {\n this._state$.next(state);\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Directive, InjectionToken, Input, inject } from '@angular/core';\nimport { filter, takeUntil, takeWhile, tap } from 'rxjs';\nimport { createDestroy } from '../../utils';\nimport { ANIMATED_LIFECYCLE_TOKEN } from '../animated-lifecycle';\n\nexport const ANIMATED_IF_TOKEN = new InjectionToken<AnimatedIfDirective>('ANIMATED_IF_TOKEN');\n\n@Directive({\n selector: '[etAnimatedIf]',\n standalone: true,\n providers: [\n {\n provide: ANIMATED_IF_TOKEN,\n useExisting: AnimatedIfDirective,\n },\n ],\n hostDirectives: [NgIf],\n})\nexport class AnimatedIfDirective {\n private readonly _destroy$ = createDestroy();\n private readonly _ngIf = inject(NgIf);\n private readonly _animatedLifecycle = inject(ANIMATED_LIFECYCLE_TOKEN);\n\n @Input('etAnimatedIf')\n set shouldRender(value: unknown) {\n if (value) {\n this._ngIf.ngIf = value;\n\n this._animatedLifecycle.enter();\n } else {\n this._animatedLifecycle.leave();\n\n this._animatedLifecycle.state$\n .pipe(\n takeUntil(this._destroy$),\n takeWhile((state) => state !== 'left', true),\n filter((state) => state === 'left'),\n tap(() => {\n this._ngIf.ngIf = value;\n }),\n )\n .subscribe();\n }\n }\n}\n","import { Directive, ElementRef, InjectionToken, inject } from '@angular/core';\n\nexport const ROOT_BOUNDARY_TOKEN = new InjectionToken<RootBoundaryDirective>('ROOT_BOUNDARY_TOKEN');\n\n@Directive({\n selector: '[etRootBoundary]',\n standalone: true,\n providers: [\n {\n provide: ROOT_BOUNDARY_TOKEN,\n useExisting: RootBoundaryDirective,\n },\n ],\n})\nexport class RootBoundaryDirective {\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n get boundaryElement() {\n return this._boundaryElement ?? this._elementRef.nativeElement;\n }\n set boundaryElement(v: HTMLElement | null) {\n this._boundaryElement = v;\n }\n private _boundaryElement: HTMLElement | null = null;\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n Directive,\n ElementRef,\n Injector,\n Input,\n NgZone,\n StaticProvider,\n ViewContainerRef,\n booleanAttribute,\n inject,\n isDevMode,\n} from '@angular/core';\nimport { ProvideThemeDirective } from '@ethlete/theming';\nimport {\n OffsetOptions,\n Padding,\n Placement,\n arrow,\n autoUpdate,\n computePosition,\n flip,\n hide,\n limitShift,\n offset,\n shift,\n size,\n} from '@floating-ui/dom';\nimport { BehaviorSubject, Subject, filter, take, takeUntil, tap } from 'rxjs';\nimport { ResizeObserverService } from '../../services';\nimport { createDestroy, nextFrame } from '../../utils';\nimport { AnimatedLifecycleDirective } from '../animated-lifecycle';\nimport { RootBoundaryDirective } from '../root-boundary';\n\nexport interface AnimatedOverlayComponentBase {\n _elementRef?: ElementRef<HTMLElement>;\n _animatedLifecycle?: AnimatedLifecycleDirective;\n _markForCheck?: () => void;\n _setThemeFromProvider?: (provider: ProvideThemeDirective) => void;\n}\n\n@Directive({\n standalone: true,\n host: {\n class: 'et-animated-overlay',\n },\n})\nexport class AnimatedOverlayDirective<T extends AnimatedOverlayComponentBase> {\n private readonly _destroy$ = createDestroy();\n private readonly _overlayService = inject(Overlay);\n private readonly _injector = inject(Injector);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _zone = inject(NgZone);\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n private readonly _rootBoundary = inject(RootBoundaryDirective, { optional: true });\n\n private _portal: ComponentPortal<T> | null = null;\n private _overlayRef: OverlayRef | null = null;\n private _componentRef: ComponentRef<T> | null = null;\n private _floatingElCleanupFn: (() => void) | null = null;\n\n private _beforeOpened: Subject<void> | null = null;\n private _afterOpened: Subject<void> | null = null;\n private _beforeClosed: Subject<void> | null = null;\n private _afterClosed: Subject<void> | null = null;\n\n private readonly _isMounted$ = new BehaviorSubject<boolean>(false);\n private readonly _isMounting$ = new BehaviorSubject<boolean>(false);\n private readonly _isUnmounting$ = new BehaviorSubject<boolean>(false);\n private readonly _isHidden$ = new BehaviorSubject<boolean>(false);\n\n /**\n * The placement of the animated overlay.\n * @default undefined\n */\n @Input()\n placement?: Placement = 'bottom';\n\n /**\n * The allowed auto placements of the animated overlay.\n * @see https://floating-ui.com/docs/flip#fallbackplacements\n */\n @Input()\n fallbackPlacements?: Placement[];\n\n /**\n * The offset of the animated overlay.\n * @see https://floating-ui.com/docs/offset\n */\n @Input()\n offset: OffsetOptions | null = null;\n\n /**\n * The arrow padding.\n * @see https://floating-ui.com/docs/arrow#padding\n * @default 4\n */\n @Input()\n arrowPadding: Padding | null = 4;\n\n /**\n * The viewport padding.\n * @default 8\n */\n @Input()\n viewportPadding: Padding | null = 8;\n\n /**\n * Whether the animated overlay should auto resize to fit the available space.\n * Useful for things like selects where the list of options might be longer than the available space.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n autoResize = false;\n\n /**\n * Whether the animated overlay should shift when it is near the viewport boundary.\n */\n @Input({ transform: booleanAttribute })\n shift = true;\n\n /**\n * Whether the animated overlay should auto hide when the reference element is hidden.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n autoHide = false;\n\n /**\n * Whether the animated overlay should auto close if the reference element is hidden.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n autoCloseIfReferenceHidden = false;\n\n /**\n * The reference element for the animated overlay.\n * @default this._elementRef.nativeElement\n */\n @Input()\n referenceElement = this._elementRef.nativeElement;\n\n get isMounted() {\n return this._isMounted$.value;\n }\n\n get isMounted$() {\n return this._isMounted$.asObservable();\n }\n\n get isMounting() {\n return this._isMounting$.value;\n }\n\n get isMounting$() {\n return this._isMounting$.asObservable();\n }\n\n get isUnmounting() {\n return this._isUnmounting$.value;\n }\n\n get isHidden$() {\n return this._isHidden$.asObservable();\n }\n\n get isHidden() {\n return this._isHidden$.value;\n }\n\n get canMount() {\n return !this.isMounted && !this.isMounting;\n }\n\n get canUnmount() {\n return this.isMounted && !this.isUnmounting;\n }\n\n get portal() {\n return this._portal;\n }\n\n get overlayRef() {\n return this._overlayRef;\n }\n\n get componentRef() {\n return this._componentRef;\n }\n\n mount(config: {\n component: ComponentType<T>;\n providers?: StaticProvider[];\n data?: Partial<T>;\n mirrorWidth?: boolean;\n themeProvider?: ProvideThemeDirective | null;\n }) {\n if (this.isMounted || this.isMounting) {\n if (isDevMode()) {\n if (this.isMounted) {\n console.warn(\n 'AnimatedOverlayDirective: The component is currently mounted. Please unmount the component before mounting again.',\n );\n }\n\n if (this.isMounting) {\n console.warn(\n 'AnimatedOverlayDirective: The component is already mounting. Please unmount the component before mounting again.',\n );\n }\n }\n\n return;\n }\n\n this._isMounting$.next(true);\n\n const { component, providers, data, mirrorWidth, themeProvider } = config;\n\n this._beforeOpened?.next();\n\n const injector = Injector.create({\n parent: this._injector,\n providers: providers ?? [],\n });\n\n this._overlayRef = this._overlayService.create();\n\n this._portal = new ComponentPortal(component, this._viewContainerRef, injector);\n this._componentRef = this._overlayRef.attach(this._portal);\n\n if (data) {\n Object.assign(this._componentRef.instance, data);\n }\n\n this._componentRef.instance._markForCheck?.();\n\n if (themeProvider) {\n this._componentRef.instance._setThemeFromProvider?.(themeProvider);\n }\n\n if (mirrorWidth) {\n this._overlayRef.updateSize({\n width: this._elementRef.nativeElement.offsetWidth,\n });\n\n this._resizeObserverService\n .observe(this.referenceElement)\n .pipe(\n tap(() => {\n this._overlayRef?.updateSize({\n width: this._elementRef.nativeElement.offsetWidth,\n });\n }),\n takeUntil(this._destroy$),\n takeUntil(this.afterClosed()),\n )\n .subscribe();\n }\n\n this._zone.runOutsideAngular(() => {\n if (!this._componentRef) {\n return;\n }\n\n const floatingEl = this._componentRef.location.nativeElement as HTMLElement;\n const floatingElArrow = this._componentRef.instance._elementRef?.nativeElement.querySelector(\n '[et-floating-arrow]',\n ) as HTMLElement | null;\n\n floatingEl.classList.add('et-floating-element');\n\n const refEl = this.referenceElement;\n const boundary = this._rootBoundary?.boundaryElement ?? undefined;\n\n this._floatingElCleanupFn = autoUpdate(refEl, floatingEl, () => {\n if (!this._componentRef) return;\n\n computePosition(refEl, floatingEl, {\n placement: this.placement,\n\n middleware: [\n ...(this.offset ? [offset(this.offset)] : []),\n flip({\n fallbackPlacements: this.fallbackPlacements ?? undefined,\n fallbackAxisSideDirection: 'start',\n boundary,\n }),\n ...(this.autoResize\n ? [\n size({\n padding: this.viewportPadding ?? undefined,\n apply({ availableHeight, availableWidth }) {\n floatingEl.style.setProperty('--et-floating-max-width', `${availableWidth}px`);\n floatingEl.style.setProperty('--et-floating-max-height', `${availableHeight}px`);\n },\n }),\n ]\n : []),\n ...(this.shift\n ? [shift({ limiter: limitShift(), padding: this.viewportPadding ?? undefined, boundary })]\n : []),\n ...(floatingElArrow ? [arrow({ element: floatingElArrow, padding: this.arrowPadding ?? undefined })] : []),\n ...(this.autoHide || this.autoCloseIfReferenceHidden\n ? [hide({ strategy: 'referenceHidden', boundary })]\n : []),\n ],\n }).then(({ x, y, placement, middlewareData }) => {\n floatingEl.style.setProperty('--et-floating-translate', `translate3d(${x}px, ${y}px, 0)`);\n floatingEl.setAttribute('et-floating-placement', placement);\n\n if (middlewareData.arrow && floatingElArrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n floatingEl.style.setProperty(\n '--et-floating-arrow-translate',\n `translate3d(${arrowX ?? 0}px, ${arrowY ?? 0}px, 0)`,\n );\n }\n\n if (middlewareData.hide?.referenceHidden) {\n if (this.autoCloseIfReferenceHidden) {\n this.unmount();\n } else {\n floatingEl.classList.add('et-floating-element--hidden');\n this._isHidden$.next(true);\n }\n } else {\n if (this.autoHide) {\n floatingEl.classList.remove('et-floating-element--hidden');\n this._isHidden$.next(false);\n }\n }\n });\n });\n\n // We need to wait for the content to be rendered\n nextFrame(() => {\n if (!this._componentRef) {\n return;\n }\n\n if (!this._componentRef.instance._animatedLifecycle) {\n console.error(\n 'AnimatedOverlayDirective: The component does not have an AnimatedLifecycleDirective. Please add one to the component.',\n );\n }\n\n this._componentRef.instance._animatedLifecycle?.enter();\n\n this._componentRef.instance._animatedLifecycle?.state$\n .pipe(\n tap((s) => {\n if (s === 'entered') {\n this._afterOpened?.next();\n }\n }),\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._isMounted$.next(true);\n this._isMounting$.next(false);\n });\n });\n\n return this._componentRef.instance;\n }\n\n unmount() {\n if (!this.isMounted || this.isUnmounting) {\n if (isDevMode()) {\n if (!this.isMounted) {\n console.warn(\n `AnimatedOverlayDirective: The component is currently not mounted. Please call \"mount\" before calling \"unmount\" again.`,\n );\n }\n\n if (this.isUnmounting) {\n console.warn(\n `AnimatedOverlayDirective: The component is already unmounting. Please call \"mount\" before calling \"unmount\" again.`,\n );\n }\n }\n\n return;\n }\n\n if (!this._componentRef) {\n return;\n }\n\n if (this.isHidden) {\n return;\n }\n\n this._isUnmounting$.next(true);\n\n this._beforeClosed?.next();\n\n this._componentRef.instance._animatedLifecycle?.leave();\n\n this._componentRef.instance._animatedLifecycle?.state$\n .pipe(\n filter((s) => s === 'left'),\n take(1),\n )\n .subscribe(() => this._destroy());\n }\n\n beforeOpened() {\n if (!this._beforeOpened) {\n this._beforeOpened = new Subject();\n }\n\n return this._beforeOpened;\n }\n\n afterOpened() {\n if (!this._afterOpened) {\n this._afterOpened = new Subject();\n }\n\n return this._afterOpened;\n }\n\n beforeClosed() {\n if (!this._beforeClosed) {\n this._beforeClosed = new Subject();\n }\n\n return this._beforeClosed;\n }\n\n afterClosed() {\n if (!this._afterClosed) {\n this._afterClosed = new Subject();\n }\n\n return this._afterClosed;\n }\n\n _destroy() {\n this._zone.runOutsideAngular(() => {\n this._floatingElCleanupFn?.();\n });\n\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n\n if (this._componentRef) {\n this._componentRef.destroy();\n this._componentRef = null;\n }\n\n this._isMounted$.next(false);\n this._isUnmounting$.next(false);\n\n this._afterClosed?.next();\n }\n}\n","import { Directive, ElementRef, EventEmitter, inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ClickObserverService } from '../../services';\n\n@Directive({\n selector: '[etClickOutside]',\n standalone: true,\n})\nexport class ClickOutsideDirective implements OnInit, OnDestroy {\n private _elementRef = inject(ElementRef);\n private _clickObserverService = inject(ClickObserverService);\n\n private _subscription: Subscription | null = null;\n\n @Output()\n etClickOutside = new EventEmitter<MouseEvent>();\n\n ngOnInit(): void {\n setTimeout(() => {\n this._subscription = this._clickObserverService.observe(this._elementRef.nativeElement).subscribe((event) => {\n const activeElement = event.target as HTMLElement;\n const isInside = this._elementRef.nativeElement.contains(activeElement);\n\n if (!isInside) {\n this.etClickOutside.emit(event);\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this._subscription?.unsubscribe();\n }\n}\n","export const CURSOR_DRAG_SCROLLING_CLASS = 'et-cursor-drag-scroll--scrolling';\nexport const CURSOR_DRAG_SCROLLING_PREPARED_CLASS = 'et-cursor-drag-scroll--prepared';\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { Subject, Subscription, combineLatest, debounceTime, fromEvent, startWith, take, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, ResizeObserverService } from '../../services';\nimport { createDestroy, elementCanScroll } from '../../utils';\nimport { CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_SCROLLING_PREPARED_CLASS } from './cursor-drag-scroll.constants';\n\n@Directive({\n selector: '[etCursorDragScroll]',\n exportAs: 'etCursorDragScroll',\n standalone: true,\n})\nexport class CursorDragScrollDirective implements AfterViewInit {\n private readonly _subscriptions: Subscription[] = [];\n private readonly _destroy$ = createDestroy();\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _contentObserverService = inject(ContentObserverService);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n\n private readonly _bufferUntilScroll = 5;\n private readonly _mouseUp$ = new Subject<boolean>();\n\n private _isScrolling = false;\n private _canScroll = false;\n\n private _currentScrollState = {\n top: 0,\n left: 0,\n x: 0,\n y: 0,\n };\n\n @Input('etCursorDragScroll')\n get enabled(): boolean {\n return this._enabled;\n }\n set enabled(value: unknown) {\n this._enabled = booleanAttribute(value);\n\n if (this._enabled) {\n this._enableCursorDragScroll();\n } else {\n this._disableCursorDragScroll();\n }\n }\n private _enabled = false;\n\n @Input()\n allowedDirection: 'horizontal' | 'vertical' | 'both' = 'both';\n\n @Output()\n readonly cursorDragStart = new EventEmitter<void>();\n\n @Output()\n readonly cursorDragMove = new EventEmitter<void>();\n\n @Output()\n readonly cursorDragEnd = new EventEmitter<void>();\n\n ngAfterViewInit(): void {\n if (this.enabled) {\n this._enableCursorDragScroll();\n } else {\n this._disableCursorDragScroll();\n }\n }\n\n private _enableCursorDragScroll() {\n const contentResizeSub = combineLatest([\n this._contentObserverService.observe(this._elementRef.nativeElement).pipe(startWith(null)),\n this._resizeObserverService.observe(this._elementRef.nativeElement).pipe(startWith(null)),\n ])\n .pipe(\n debounceTime(25),\n tap(() => this._updateCanScrollState()),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n const mousedownSub = fromEvent<MouseEvent>(this._elementRef.nativeElement, 'mousedown')\n .pipe(\n tap((e) => this._onMouseDown(e)),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._subscriptions.push(contentResizeSub, mousedownSub);\n\n this._updateCanScrollState();\n }\n\n private _disableCursorDragScroll() {\n this._subscriptions.forEach((sub) => sub.unsubscribe());\n this._subscriptions.length = 0;\n this._elementRef.nativeElement.style.cursor = 'default';\n }\n\n private _onMouseDown(e: MouseEvent) {\n if (!this._elementRef?.nativeElement || !this._canScroll) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n\n element.classList.add(CURSOR_DRAG_SCROLLING_PREPARED_CLASS);\n\n this._elementRef.nativeElement.style.scrollSnapType = 'none';\n this._elementRef.nativeElement.style.scrollBehavior = 'unset';\n\n this._currentScrollState = {\n left: this._elementRef.nativeElement.scrollLeft,\n top: this._elementRef.nativeElement.scrollTop,\n x: e.clientX,\n y: e.clientY,\n };\n\n fromEvent<MouseEvent>(document, 'mousemove')\n .pipe(\n tap((e) => this._mouseMoveHandler(e)),\n takeUntil(this._mouseUp$),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(\n tap(() => this._mouseUpHandler()),\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n private _mouseMoveHandler(e: MouseEvent) {\n e.preventDefault();\n\n if (!this._elementRef?.nativeElement) {\n return;\n }\n\n const dx = e.clientX - this._currentScrollState.x;\n const dy = e.clientY - this._currentScrollState.y;\n\n const shouldScrollX =\n (this.allowedDirection === 'horizontal' || this.allowedDirection === 'both') &&\n Math.abs(dx) > this._bufferUntilScroll;\n const shouldScrollY =\n (this.allowedDirection === 'vertical' || this.allowedDirection === 'both') &&\n Math.abs(dy) > this._bufferUntilScroll;\n\n if (shouldScrollX || shouldScrollY) {\n const element = this._elementRef.nativeElement;\n\n if (!this._isScrolling) {\n this._isScrolling = true;\n this.cursorDragStart.emit();\n\n document.documentElement.style.cursor = 'grabbing';\n element.style.cursor = 'grabbing';\n element.classList.add(CURSOR_DRAG_SCROLLING_CLASS);\n element.scroll({\n top: shouldScrollY ? this._currentScrollState.top - dy : undefined,\n left: shouldScrollX ? this._currentScrollState.left - dx : undefined,\n behavior: 'smooth',\n });\n } else {\n if (shouldScrollY) {\n element.scrollTop = this._currentScrollState.top - dy;\n }\n\n if (shouldScrollX) {\n element.scrollLeft = this._currentScrollState.left - dx;\n }\n\n this.cursorDragMove.emit();\n }\n }\n }\n\n private _mouseUpHandler() {\n this._mouseUp$.next(true);\n this._isScrolling = false;\n\n if (!this._elementRef?.nativeElement) {\n return;\n }\n\n this._elementRef.nativeElement.style.scrollSnapType = '';\n this._elementRef.nativeElement.style.scrollBehavior = '';\n\n document.documentElement.style.cursor = '';\n this._elementRef.nativeElement.style.cursor = 'grab';\n this._elementRef.nativeElement.classList.remove(CURSOR_DRAG_SCROLLING_CLASS);\n this._elementRef.nativeElement.classList.remove(CURSOR_DRAG_SCROLLING_PREPARED_CLASS);\n\n this.cursorDragEnd.emit();\n }\n\n private _updateCanScrollState() {\n this._canScroll = elementCanScroll(this._elementRef.nativeElement);\n\n if (this._canScroll) {\n this._elementRef.nativeElement.style.cursor = 'grab';\n } else {\n this._elementRef.nativeElement.style.cursor = 'default';\n }\n }\n}\n","import { Directive, InjectionToken, Input, booleanAttribute, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { filter, merge } from 'rxjs';\nimport { createDestroy } from '../../utils';\n\nexport const DEBUG_TOKEN = new InjectionToken<DebugDirective>('DEBUG_DIRECTIVE_TOKEN');\n\n@Directive({\n selector: '[etDebug]',\n exportAs: 'etDebug',\n standalone: true,\n providers: [\n {\n provide: DEBUG_TOKEN,\n useExisting: DebugDirective,\n },\n ],\n})\nexport class DebugDirective {\n private readonly _destroy$ = createDestroy();\n\n @Input({ alias: 'etDebug', transform: booleanAttribute })\n private set sDebug(value: boolean) {\n this._debug.set(value);\n }\n\n private _debug = signal(true);\n readonly debug = this._debug.asReadonly();\n readonly debug$ = toObservable(this.debug);\n\n readonly startDebug$ = this.debug$.pipe(filter((debug) => !!debug));\n readonly stopDebug$ = merge(this._destroy$, this.debug$.pipe(filter((debug) => !debug)));\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport const DELAYABLE_TOKEN = new InjectionToken<DelayableDirective>('DELAYABLE_DIRECTIVE_TOKEN');\n\n@Directive({\n selector: '[etDelayable]',\n exportAs: 'etDelayable',\n standalone: true,\n providers: [\n {\n provide: DELAYABLE_TOKEN,\n useExisting: DelayableDirective,\n },\n ],\n})\nexport class DelayableDirective {\n private readonly _isDelayed$ = new BehaviorSubject(false);\n\n get isDelayed$() {\n return this._isDelayed$.asObservable();\n }\n\n get isDelayed() {\n return this._isDelayed$.value;\n }\n\n enableDelayed() {\n if (this._isDelayed$.value) {\n return;\n }\n\n this._isDelayed$.next(true);\n }\n\n disableDelayed() {\n if (!this._isDelayed$.value) {\n return;\n }\n\n this._isDelayed$.next(false);\n }\n\n setDelayed(val: boolean) {\n if (this._isDelayed$.value === val) {\n return;\n }\n\n this._isDelayed$.next(val);\n }\n}\n","import { Directive, ElementRef, InjectionToken, Input, booleanAttribute, inject } from '@angular/core';\n\nexport const IS_ACTIVE_ELEMENT = new InjectionToken<IsActiveElementDirective>('ET_IS_ACTIVE_ELEMENT');\n\n@Directive({\n selector: '[etIsActiveElement]',\n standalone: true,\n providers: [\n {\n provide: IS_ACTIVE_ELEMENT,\n useExisting: IsActiveElementDirective,\n },\n ],\n})\nexport class IsActiveElementDirective {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @Input({ alias: 'etIsActiveElement', transform: booleanAttribute })\n isActiveElement = false;\n}\n","import { Directive, ElementRef, InjectionToken, Input, booleanAttribute, inject } from '@angular/core';\n\nexport const IS_ELEMENT = new InjectionToken<IsElementDirective>('ET_IS_ELEMENT');\n\n@Directive({\n selector: '[etIsElement]',\n standalone: true,\n providers: [\n {\n provide: IS_ELEMENT,\n useExisting: IsElementDirective,\n },\n ],\n})\nexport class IsElementDirective {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @Input({ alias: 'etIsElement', transform: booleanAttribute })\n isElement = false;\n}\n","export class LetContext<T = unknown> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n public $implicit: T = null!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n public etLet: T = null!;\n}\n","import { Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport { LetContext } from './let.types';\n\n/** @deprecated Use the let keyword provided by Angular instead. */\n@Directive({\n selector: '[etLet]',\n standalone: true,\n})\nexport class LetDirective<T = unknown> {\n private _viewContainer = inject(ViewContainerRef);\n\n @Input()\n set etLet(value: T) {\n this._context.$implicit = this._context.etLet = value;\n this._updateView();\n }\n\n static ngTemplateGuard_ngLet: 'binding';\n\n private _context: LetContext<T> = new LetContext<T>();\n private _templateRef = inject<TemplateRef<LetContext<T>>>(TemplateRef);\n private _viewRef: EmbeddedViewRef<LetContext<T>> | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static ngTemplateContextGuard<T>(dir: LetDirective<T>, ctx: any): ctx is LetContext<T> {\n return true;\n }\n\n private _updateView() {\n if (!this._viewRef) {\n this._viewContainer.clear();\n if (this._templateRef) {\n this._viewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);\n }\n }\n }\n}\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n booleanAttribute,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { ContentObserverService } from '../../services';\n\n@Directive({\n selector: '[etObserveContent]',\n exportAs: 'etObserveContent',\n standalone: true,\n})\nexport class ObserveContentDirective implements AfterContentInit, OnDestroy {\n private _contentObserver = inject(ContentObserverService);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n @Output('etObserveContent')\n readonly valueChange = new EventEmitter<MutationRecord[]>();\n\n @Input('etObserveContentDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: unknown) {\n this._disabled = booleanAttribute(value);\n\n if (this._disabled) {\n this._unsubscribe();\n } else {\n this._subscribe();\n }\n }\n private _disabled = false;\n\n @Input('etObserveContentDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: unknown) {\n this._debounce = numberAttribute(value) ?? null;\n this._subscribe();\n }\n private _debounce: number | null = null;\n\n private _currentSubscription: Subscription | null = null;\n\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n\n ngOnDestroy() {\n this._unsubscribe();\n }\n\n private _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(\n this.valueChange,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\n","import {\n AfterContentInit,\n booleanAttribute,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { debounceTime, Subscription } from 'rxjs';\nimport { ResizeObserverService } from '../../services';\n\n@Directive({\n selector: '[etObserveResize]',\n exportAs: 'etObserveResize',\n standalone: true,\n})\nexport class ObserveResizeDirective implements AfterContentInit, OnDestroy {\n private _resizeObserver = inject(ResizeObserverService);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n @Output('etObserveResize')\n readonly valueChange = new EventEmitter<ResizeObserverEntry[]>();\n\n @Input('etObserveResizeDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: unknown) {\n this._disabled = booleanAttribute(value);\n\n if (this._disabled) {\n this._unsubscribe();\n } else {\n this._subscribe();\n }\n }\n private _disabled = false;\n\n @Input('etObserveResizeDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: unknown) {\n this._debounce = numberAttribute(value) ?? null;\n this._subscribe();\n }\n private _debounce: number | null = null;\n\n private _currentSubscription: Subscription | null = null;\n\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n\n ngOnDestroy() {\n this._unsubscribe();\n }\n\n private _subscribe() {\n this._unsubscribe();\n const stream = this._resizeObserver.observe(this._elementRef);\n\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(\n this.valueChange,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ObserveScrollStateDirective } from './observe-scroll-state.directive';\n\nexport const OBSERVE_SCROLL_STATE = new InjectionToken<ObserveScrollStateDirective>('OBSERVE_SCROLL_STATE');\n","import { Directive, HostBinding, Input, booleanAttribute } from '@angular/core';\n\nexport const SCROLL_OBSERVER_FIRST_ELEMENT_CLASS = 'et-scroll-observer-first-element';\n\n@Directive({\n selector: '[etScrollObserverFirstElement]',\n standalone: true,\n})\nexport class ScrollObserverFirstElementDirective {\n @Input({ alias: 'etScrollObserverFirstElement', transform: booleanAttribute })\n @HostBinding(`class.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`)\n isFirstElement = false;\n}\n","import { Directive } from '@angular/core';\n\nexport const SCROLL_OBSERVER_IGNORE_TARGET_CLASS = 'et-scroll-observer-ignore-target';\n\n@Directive({\n selector: '[etScrollObserverIgnoreTarget]',\n standalone: true,\n host: {\n class: SCROLL_OBSERVER_IGNORE_TARGET_CLASS,\n },\n})\nexport class ScrollObserverIgnoreTargetDirective {}\n","import { Directive, HostBinding, Input, booleanAttribute } from '@angular/core';\n\nexport const SCROLL_OBSERVER_LAST_ELEMENT_CLASS = 'et-scroll-observer-last-element';\n\n@Directive({\n selector: '[etScrollObserverLastElement]',\n standalone: true,\n host: {\n class: SCROLL_OBSERVER_LAST_ELEMENT_CLASS,\n },\n})\nexport class ScrollObserverLastElementDirective {\n @Input({ alias: 'etScrollObserverLastElement', transform: booleanAttribute })\n @HostBinding(`class.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`)\n isLastElement = false;\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n numberAttribute,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { debounceTime, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, ResizeObserverService } from '../../services';\nimport { createDestroy, elementCanScroll } from '../../utils';\nimport { SCROLL_OBSERVER_FIRST_ELEMENT_CLASS } from '../scroll-observer-first-element';\nimport { SCROLL_OBSERVER_IGNORE_TARGET_CLASS } from '../scroll-observer-ignore-target';\nimport { SCROLL_OBSERVER_LAST_ELEMENT_CLASS } from '../scroll-observer-last-element';\nimport { OBSERVE_SCROLL_STATE } from './observe-scroll-state.constants';\nimport { ScrollObserverScrollState } from './observe-scroll-state.types';\n\nexport const SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS = 'et-scroll-observer-observing-first-element';\nexport const SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS = 'et-scroll-observer-observing-last-element';\n\n@Directive({\n selector: '[etObserveScrollState]',\n exportAs: 'etObserveScrollState',\n standalone: true,\n providers: [\n {\n provide: OBSERVE_SCROLL_STATE,\n useExisting: ObserveScrollStateDirective,\n },\n ],\n})\nexport class ObserveScrollStateDirective implements OnInit, OnDestroy {\n private readonly _destroy$ = createDestroy();\n\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _contentObserverService = inject(ContentObserverService);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n\n private get _firstCurrentChild() {\n const explicitFirstElement = this._elementRef.nativeElement.querySelector(\n `.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`,\n ) as HTMLElement | null;\n\n if (explicitFirstElement) {\n return explicitFirstElement;\n }\n\n const element = this._elementRef.nativeElement.children[0] as HTMLElement | null;\n\n return this._getNonIgnoredChild(element, 'next');\n }\n\n private get _lastCurrentChild() {\n const explicitLastElement = this._elementRef.nativeElement.querySelector(\n `.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`,\n ) as HTMLElement | null;\n\n if (explicitLastElement) {\n return explicitLastElement;\n }\n\n const element = this._elementRef.nativeElement.children[\n this._elementRef.nativeElement.children.length - 1\n ] as HTMLElement | null;\n\n return this._getNonIgnoredChild(element, 'previous');\n }\n\n @Input({ transform: numberAttribute })\n rootMargin = 0;\n\n @Input()\n get observerThreshold(): number | number[] {\n return this._threshold;\n }\n set observerThreshold(value: unknown) {\n if (Array.isArray(value)) {\n this._threshold = value.map((threshold) => numberAttribute(threshold));\n return;\n }\n\n this._threshold = numberAttribute(value);\n }\n private _threshold: number | number[] = [0.99, 0.99999, 0.9999, 0.999, 1];\n\n private _intersectionObserver: IntersectionObserver | null = null;\n\n private get _observerElements() {\n const firstEl = this._elementRef.nativeElement.querySelector(`.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`);\n const lastEl = this._elementRef.nativeElement.querySelector(`.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`);\n\n if (!firstEl || !lastEl) return null;\n\n return {\n first: firstEl,\n last: lastEl,\n };\n }\n\n @Output('etObserveScrollState')\n valueChange = new EventEmitter<ScrollObserverScrollState>();\n\n ngOnInit(): void {\n this._contentObserverService\n .observe(this._elementRef.nativeElement)\n .pipe(\n debounceTime(25),\n tap(() => this._checkChildren()),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._resizeObserverService\n .observe(this._elementRef.nativeElement)\n .pipe(\n debounceTime(25),\n tap(() => {\n const canScroll = elementCanScroll(this._elementRef.nativeElement);\n if ((!this._intersectionObserver && canScroll) || (this._intersectionObserver && !canScroll)) {\n this._checkChildren();\n }\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._checkChildren();\n }\n\n ngOnDestroy(): void {\n this._clearIntersectionObserver();\n }\n\n private _checkChildren() {\n this._clearIntersectionObserver();\n\n if (\n this._firstCurrentChild === this._lastCurrentChild ||\n !this._firstCurrentChild ||\n !this._lastCurrentChild ||\n !elementCanScroll(this._elementRef.nativeElement)\n ) {\n this._unobserve();\n\n this.valueChange.emit({\n isAtStart: true,\n isAtEnd: true,\n canScroll: false,\n });\n } else {\n this._intersectionObserver = this._initiateIntersectionObserver();\n\n this._observe();\n }\n }\n\n private _initiateIntersectionObserver() {\n const observer = new IntersectionObserver(\n (entries) => {\n const elements = this._observerElements;\n\n if (!elements) return;\n\n const isAtStart = entries.find((entry) => entry.target === elements.first)?.isIntersecting ?? false;\n const isAtEnd = entries.find((entry) => entry.target === elements.last)?.isIntersecting ?? false;\n\n this.valueChange.emit({\n isAtStart,\n isAtEnd,\n canScroll: !isAtStart || !isAtEnd,\n });\n },\n {\n root: this._elementRef.nativeElement,\n rootMargin: this.rootMargin ? `${this.rootMargin}px` : undefined,\n threshold: this._threshold,\n },\n );\n\n return observer;\n }\n\n private _observe() {\n const elements = this._observerElements;\n\n if (!elements) return;\n\n this._intersectionObserver?.observe(elements.first);\n this._intersectionObserver?.observe(elements.last);\n\n elements.first.classList.add(SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS);\n elements.last.classList.add(SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS);\n }\n\n private _unobserve() {\n const elements = this._observerElements;\n\n if (!elements) return;\n\n this._intersectionObserver?.unobserve(elements.first);\n this._intersectionObserver?.unobserve(elements.last);\n\n elements.first.classList.remove(SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS);\n elements.last.classList.remove(SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS);\n }\n\n private _clearIntersectionObserver() {\n this._intersectionObserver?.disconnect();\n this._intersectionObserver = null;\n }\n\n private _getNonIgnoredChild(element: HTMLElement | null, direction: 'previous' | 'next'): HTMLElement | null {\n if (!element) {\n return null;\n }\n\n if (element?.classList.contains(SCROLL_OBSERVER_IGNORE_TARGET_CLASS)) {\n const nextElement = element[`${direction}ElementSibling`] as HTMLElement | null;\n\n if (!nextElement) {\n return null;\n }\n\n return this._getNonIgnoredChild(nextElement, direction);\n }\n\n return element;\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Output,\n Signal,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { takeUntil, tap } from 'rxjs';\nimport { IntersectionObserverService } from '../../services';\nimport { createDestroy, signalHostClasses } from '../../utils';\n\nexport const OBSERVE_VISIBILITY_TOKEN = new InjectionToken<ObserveVisibilityDirective>('OBSERVE_VISIBILITY_TOKEN');\n\nexport interface ObserveVisibilityChange {\n visible: boolean;\n isAbove: boolean;\n isBelow: boolean;\n isLeft: boolean;\n isRight: boolean;\n entry: IntersectionObserverEntry;\n}\n\nexport const signalVisibilityChangeClasses = (cfg: {\n name: string;\n signal: Signal<ObserveVisibilityChange | null | undefined>;\n}) => ({\n [`${cfg.name}--is-left`]: computed(() => cfg.signal()?.isLeft),\n [`${cfg.name}--is-right`]: computed(() => cfg.signal()?.isRight),\n [`${cfg.name}--is-above`]: computed(() => cfg.signal()?.isAbove),\n [`${cfg.name}--is-below`]: computed(() => cfg.signal()?.isBelow),\n [`${cfg.name}--is-visible`]: computed(() => cfg.signal()?.visible),\n});\n\n@Directive({\n selector: '[etObserveVisibility]',\n standalone: true,\n providers: [\n {\n provide: OBSERVE_VISIBILITY_TOKEN,\n useExisting: ObserveVisibilityDirective,\n },\n ],\n host: {\n class: 'et-observe-visibility',\n },\n})\nexport class ObserveVisibilityDirective implements AfterViewInit {\n private readonly _destroy$ = createDestroy();\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _intersectionObserverService = inject(IntersectionObserverService);\n\n protected readonly visibilityChange = signal<ObserveVisibilityChange | null>(null);\n\n readonly currentVisibility = this.visibilityChange.asReadonly();\n readonly currentVisibility$ = toObservable(this.currentVisibility);\n\n @Output()\n readonly etObserveVisibility = new EventEmitter<ObserveVisibilityChange>();\n\n constructor() {\n signalHostClasses(\n signalVisibilityChangeClasses({\n name: 'et-observe-visibility',\n signal: this.visibilityChange,\n }),\n );\n }\n\n ngAfterViewInit(): void {\n this._intersectionObserverService\n .observe(this._elementRef)\n .pipe(\n takeUntil(this._destroy$),\n tap((entries) => {\n const entry = entries[0];\n\n if (!entry) {\n return;\n }\n\n const isAbove = entry.boundingClientRect.top < 0 && entry.boundingClientRect.bottom < 0;\n const isBelow =\n entry.boundingClientRect.top > window.innerHeight && entry.boundingClientRect.bottom > window.innerHeight;\n const isLeft = entry.boundingClientRect.left < 0 && entry.boundingClientRect.right < 0;\n const isRight =\n entry.boundingClientRect.left > window.innerWidth && entry.boundingClientRect.right > window.innerWidth;\n\n const data: ObserveVisibilityChange = {\n visible: entry.isIntersecting,\n isAbove,\n isBelow,\n isLeft,\n isRight,\n entry,\n };\n\n this.etObserveVisibility.emit(data);\n this.visibilityChange.set(data);\n }),\n )\n .subscribe();\n }\n}\n","import { Directive, Input, numberAttribute, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[etRepeat]',\n standalone: true,\n})\nexport class RepeatDirective {\n @Input('etRepeat')\n get repeatCount(): number {\n return this._repeatCount;\n }\n set repeatCount(value: unknown) {\n this._repeatCount = numberAttribute(value);\n this._render();\n }\n private _repeatCount = 2;\n\n constructor(\n private _mainTemplateRef: TemplateRef<unknown>,\n private _viewContainerRef: ViewContainerRef,\n ) {}\n\n private _render() {\n this._viewContainerRef.clear();\n\n for (let i = 0; i < this.repeatCount; i++) {\n this._viewContainerRef.createEmbeddedView(this._mainTemplateRef);\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { SeoDirective } from './seo.directive';\n\nexport const SEO_DIRECTIVE_TOKEN = new InjectionToken<SeoDirective>('SEO_DIRECTIVE_TOKEN');\n","import { SeoConfig } from './seo.directive.types';\n\nexport const mergeSeoConfig = (config: SeoConfig, parentConfig: SeoConfig): SeoConfig => {\n return {\n ...parentConfig,\n ...config,\n };\n};\n","import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { SEO_DIRECTIVE_TOKEN } from './seo.directive.constants';\nimport { AlternateLink, SeoConfig } from './seo.directive.types';\nimport { mergeSeoConfig } from './seo.directive.utils';\n\n@Directive({\n standalone: true,\n providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }],\n})\nexport class SeoDirective implements OnInit, OnDestroy {\n private readonly _metaService = inject(Meta);\n private readonly _titleService = inject(Title);\n private readonly _onDeactivate$ = new Subject<boolean>();\n\n private _isDeactivated = false;\n\n readonly parent = inject(SEO_DIRECTIVE_TOKEN, { optional: true, skipSelf: true });\n\n get config(): SeoConfig {\n return this._config;\n }\n private _config: SeoConfig = {};\n\n ngOnInit(): void {\n this.parent?._deactivate();\n }\n\n ngOnDestroy(): void {\n this._deactivate();\n this._cleanUp();\n this.parent?._activate();\n }\n\n // TODO(TRB): This should get split up into multiple methods to make it more readable\n // - updateTitle\n // - updateMeta\n // - updateLink\n updateConfig(config: SeoConfig) {\n this._config = mergeSeoConfig(config, this.parent?.config || {});\n\n if (this._isDeactivated) {\n return;\n }\n\n this._deactivate();\n this._activate();\n }\n\n _activate() {\n this._onDeactivate$.next(false);\n this._isDeactivated = false;\n\n for (const [key, value] of Object.entries(this._config)) {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else if (Array.isArray(value)) {\n value.forEach((value) => {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else {\n this._update(key, value);\n }\n });\n } else if (typeof value === 'object' && value !== null) {\n for (const [subKey, subValue] of Object.entries(value)) {\n if (subValue instanceof Observable) {\n subValue.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(`${key}:${subKey}`, value));\n } else {\n this._update(`${key}:${subKey}`, subValue);\n }\n }\n } else {\n this._update(key, value);\n }\n }\n }\n\n _deactivate() {\n this._onDeactivate$.next(true);\n this._isDeactivated = true;\n }\n\n private _update(key: string, value: unknown) {\n switch (key) {\n case 'title':\n if (value && typeof value === 'string') {\n this._titleService.setTitle(value);\n }\n break;\n\n case 'canonical':\n {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.setAttribute('href', value as string);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('href', value as string);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n case 'alternate':\n {\n const link = document.querySelector(`link[rel=\"${key}\"][hreflang=\"${(value as AlternateLink).hreflang}\"]`);\n\n if (link) {\n link.setAttribute('href', (value as AlternateLink).href);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('hreflang', (value as AlternateLink).hreflang);\n newLink.setAttribute('href', (value as AlternateLink).href);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n default:\n if (value !== undefined && value !== null) {\n const val = Array.isArray(value) ? value.join(', ') : (value as string);\n\n this._metaService.updateTag({ name: key, content: val });\n } else {\n this._metaService.removeTag(`name=\"${key}\"`);\n }\n break;\n }\n }\n\n private _cleanUp() {\n for (const key in this._config) {\n if (key === 'alternate') {\n const links = document.querySelectorAll(`link[rel=\"${key}\"]`);\n\n links.forEach((link) => {\n link.remove();\n });\n\n continue;\n }\n\n if (key === 'canonical') {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.remove();\n }\n\n continue;\n }\n\n if (\n typeof this._config[key] === 'object' &&\n this._config[key] !== null &&\n !(this._config[key] instanceof Observable)\n ) {\n for (const subKey in this._config[key] as Record<string, unknown>) {\n const parentValue =\n this.parent?.config?.[key as keyof SeoConfig]?.[subKey as keyof SeoConfig[keyof SeoConfig]];\n\n if (parentValue === undefined) {\n this._update(`${key}:${subKey}`, undefined);\n }\n }\n } else {\n const parentValue = this.parent?.config?.[key as keyof SeoConfig];\n\n if (parentValue === undefined) {\n this._update(key, null);\n }\n }\n }\n }\n}\n","/**\n * Infers the mime type of a given url or srcset.\n * If a srcset is provided, it will infer the mime type of the first url in the srcset.\n * If the srcset contains a query parameter `?fm=`, it will use the value of that parameter, since it is often used to specify the file format in image api's like contentful.\n */\nexport const inferMimeType = (srcset: string) => {\n if (!srcset) return null;\n\n const urls = srcset.split(',');\n const firstUrl = urls[0];\n\n if (!firstUrl) return null;\n\n // make sure the url does not end with something like x1, x2 or 400w, 800w... We need to remove these parts to get the correct file extension\n const urlParts = firstUrl.split(' ');\n const lastPart = urlParts[urlParts.length - 1];\n\n if (urlParts.length > 1 && !lastPart?.includes('/')) {\n urlParts.pop();\n }\n\n const cleanedUrl = urlParts.join(' ');\n\n const queryPart = cleanedUrl.split('?')[1] ?? '';\n const containsFm = queryPart.startsWith('fm=') || queryPart.includes('&fm=');\n let fileExtension: string | null = null;\n\n if (containsFm) {\n const fmIndex = queryPart.indexOf('fm=');\n const fmValue = queryPart\n .substring(fmIndex + 3)\n .split('&')[0]\n ?.toLowerCase();\n\n if (fmValue) {\n fileExtension = fmValue;\n }\n }\n\n if (!fileExtension) {\n const noQueryUrl = cleanedUrl.split('?')[0] || cleanedUrl;\n\n const lastDotIndex = noQueryUrl.lastIndexOf('.');\n\n if (lastDotIndex === -1) return null;\n\n fileExtension = noQueryUrl.substring(lastDotIndex + 1).toLowerCase();\n }\n\n if (fileExtension) {\n switch (fileExtension) {\n case 'avif':\n return 'image/avif';\n case 'bmp':\n return 'image/bmp';\n case 'gif':\n return 'image/gif';\n case 'ico':\n return 'image/vdn.microsoft.icon';\n case 'jpg':\n case 'jpeg':\n return 'image/jpeg';\n case 'png':\n return 'image/png';\n case 'svg':\n return 'image/svg+xml';\n case 'tif':\n case 'tiff':\n return 'image/tiff';\n case 'webp':\n return 'image/webp';\n case 'aac':\n return 'audio/aac';\n case 'abw':\n return 'application/x-abiword';\n case 'arc':\n return 'application/x-freearc';\n case 'avi':\n return 'video/x-msvideo';\n case 'azw':\n return 'application/vnd.amazon.ebook';\n case 'bin':\n return 'application/octet-stream';\n case 'bz':\n return 'application/x-bzip';\n case 'bz2':\n return 'application/x-bzip2';\n case 'cda':\n return 'application/x-cdf';\n case 'csh':\n return 'application/x-csh';\n case 'css':\n return 'text/css';\n case 'csv':\n return 'text/csv';\n case 'doc':\n return 'application/msword';\n case 'docx':\n return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n case 'eot':\n return 'application/vnd.ms-fontobject';\n case 'epub':\n return 'application/epub+zip';\n case 'gz':\n return 'application/gzip';\n case 'htm':\n case 'html':\n return 'text/html';\n case 'ics':\n return 'text/calendar';\n case 'jar':\n return 'application/java-archive';\n case 'js':\n return 'text/javascript';\n case 'json':\n return 'application/json';\n case 'jsonld':\n return 'application/ld+json';\n case 'mid':\n case 'midi':\n return 'audio/midi';\n case 'mjs':\n return 'text/javascript';\n case 'mp3':\n return 'audio/mpeg';\n case 'mp4':\n return 'video/mp4';\n case 'mpeg':\n return 'video/mpeg';\n case 'mpkg':\n return 'tapplication/vnd.apple.installer+xml';\n case 'odp':\n return 'application/vnd.oasis.opendocument.presentation';\n case 'ods':\n return 'application/vnd.oasis.opendocument.spreadsheet';\n case 'odt':\n return 'application/vnd.oasis.opendocument.text';\n case 'oga':\n return 'audio/ogg';\n case 'ogv':\n return 'video/ogg';\n case 'ogx':\n return 'application/ogg';\n case 'opus':\n return 'audio/opus';\n case 'otf':\n return 'font/otf';\n case 'pdf':\n return 'application/pdf';\n case 'php':\n return 'application/x-httpd-php';\n case 'ppt':\n return 'application/vnd.ms-powerpoint';\n case 'pptx':\n return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n case 'rar':\n return 'application/vnd.rar';\n case 'rtf':\n return 'application/rtf';\n case 'sh':\n return 'application/x-sh';\n case 'tar':\n return 'application/x-tar';\n case 'ts':\n return 'video/mp2t';\n case 'ttf':\n return 'font/ttf';\n case 'txt':\n return 'text/plain';\n case 'vsd':\n return 'application/vnd.visio';\n case 'wav':\n return 'audio/wav';\n case 'weba':\n return 'audio/webm';\n case 'webm':\n return 'video/webm';\n case 'woff':\n return 'font/woff';\n case 'woff2':\n return 'font/woff2';\n case 'xhtml':\n return 'application/xhtml+xml';\n case 'xls':\n return 'application/vnd.ms-excel';\n case 'xlsx':\n return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n case 'xml':\n return 'application/xml';\n case 'xul':\n return 'application/vnd.mozilla.xul+xml';\n case 'zip':\n return 'application/zip';\n case '3gp':\n return 'video/3gpp';\n case '3g2':\n return 'video/3gpp2';\n case '7z':\n return 'application/x-7z-compressed';\n\n default:\n return null;\n }\n }\n\n return null;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { inferMimeType } from './infer-mime-type.util';\n\n@Pipe({\n name: 'inferMimeType',\n standalone: true,\n})\nexport class InferMimeTypePipe implements PipeTransform {\n transform = inferMimeType;\n}\n","import { NormalizedGameResultType } from './normalize-game-result-type.types';\n\n// TODO(TRB): Add correct type once provided by API\nexport const normalizeGameResultType = (type: string | null): NormalizedGameResultType | null => {\n if (!type) {\n return null;\n }\n\n switch (type) {\n case 'extra_time':\n return {\n i18n: 'game-result-type.extra-time',\n shortCode: 'AET',\n text: 'After Extra Time',\n };\n\n case 'penalty':\n return {\n i18n: 'game-result-type.penalty',\n shortCode: 'PSO',\n text: 'Penalty shootout',\n };\n\n case 'golden_goal':\n return {\n i18n: 'game-result-type.golden-goal',\n shortCode: 'GG',\n text: 'Golden Goal',\n };\n\n case 'default':\n default:\n return {\n i18n: 'game-result-type.full-time',\n shortCode: 'FT',\n text: 'Full Time',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeGameResultType } from './normalize-game-result-type.util';\n\n@Pipe({ name: 'etNormalizeGameResultType', standalone: true })\nexport class NormalizeGameResultTypePipe implements PipeTransform {\n transform = normalizeGameResultType;\n}\n","import { MatchListView } from '@ethlete/types';\nimport { MatchStateType } from './normalize-match-state.constants';\n\nexport const normalizeMatchState = (match: MatchListView | null | undefined) => {\n if (match?.isCompletedByReferee) {\n return MatchStateType.AUTO_WIN;\n } else if (match?.status === 'preparing') {\n return MatchStateType.PRE_MATCH;\n } else if (match?.status === 'started') {\n return MatchStateType.LIVE;\n } else if (match?.status === 'published' || match?.status === 'finished') {\n return MatchStateType.POST_MATCH;\n } else if (match?.round.state !== 'preparing') {\n return MatchStateType.PREPARING_ROUND;\n }\n\n return null;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchState } from './normalize-match-state.util';\n\n@Pipe({ name: 'etNormalizeMatchState', standalone: true })\nexport class NormalizeMatchStatePipe implements PipeTransform {\n transform = normalizeMatchState;\n}\n","import { MatchListView } from '@ethlete/types';\nimport { MatchStateType, normalizeMatchState } from '../normalize-match-state';\nimport { NormalizedMatchParticipant, NormalizedMatchParticipants } from './normalize-match-participants.types';\n\nexport const normalizeMatchParticipants = (match: MatchListView | null): NormalizedMatchParticipants | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n return {\n home: normalizeMatchParticipant(match, 'home'),\n away: normalizeMatchParticipant(match, 'away'),\n };\n};\n\nexport const normalizeMatchParticipant = (\n match: MatchListView | null,\n side: 'home' | 'away',\n): NormalizedMatchParticipant | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n const participant = match[side];\n const participantType = match.home?.type ?? match.away?.type ?? 'unknown';\n\n if (!participant) {\n if (matchState === MatchStateType.POST_MATCH || matchState === MatchStateType.AUTO_WIN) {\n return {\n participantType,\n type: 'none',\n i18n: 'match-participant.none',\n text: 'No opponent',\n data: participant,\n };\n } else {\n return {\n participantType,\n type: 'tbd',\n i18n: 'match-participant.tbd',\n text: 'TBD',\n data: participant,\n };\n }\n } else {\n return {\n participantType,\n type: 'participant',\n data: participant,\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchParticipants } from './normalize-match-participants.util';\n\n@Pipe({ name: 'etNormalizeMatchParticipants', standalone: true })\nexport class NormalizeMatchParticipantsPipe implements PipeTransform {\n transform = normalizeMatchParticipants;\n}\n","import { MatchListView, MatchRankingView } from '@ethlete/types';\nimport { MatchStateType, normalizeMatchState } from '../normalize-match-state';\nimport { NormalizedMatchScore } from './normalize-match-score.types';\n\nconst EMPTY_SCORE: NormalizedMatchScore = {\n home: { score: 'match-score.placeholder', isWinner: false },\n away: { score: 'match-score.placeholder', isWinner: false },\n isNumeric: false,\n subLine: null,\n};\n\nexport const normalizeMatchScore = (match: MatchListView | null | undefined): NormalizedMatchScore | null => {\n if (!match) {\n return null;\n }\n\n const matchState = normalizeMatchState(match);\n const subLine = getMatchScoreSubLine(match);\n\n if (!match.homeScore && !match.awayScore) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n if (isKnockoutMatch(match)) {\n if (matchState === MatchStateType.PRE_MATCH || matchState === MatchStateType.LIVE) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n return {\n home: {\n score: getKnockoutMatchScore(match.homeScore),\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: getKnockoutMatchScore(match.awayScore),\n isWinner: match.awayScore?.status === 'won',\n },\n subLine,\n isNumeric: false,\n };\n } else if (isGroupMatch(match)) {\n if (match.games.length === 1) {\n // Return the score if only one game has been played\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n } else {\n return {\n ...getGroupMatchPoints(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n } else {\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n};\n\nexport const isKnockoutMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return (\n match.matchType === 'single_elimination' ||\n match.matchType === 'double_elimination' ||\n match.matchType === 'fifa_swiss'\n );\n};\n\nexport const isGroupMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return match.matchType === 'groups' || match.matchType === 'league';\n};\n\nexport const getKnockoutMatchScore = (score: MatchRankingView | null | undefined) => {\n if (score?.status === 'won') {\n return 'match-score.knockout.won';\n } else if (score?.status === 'lost') {\n return 'match-score.knockout.lost';\n } else if (score?.status === 'tie') {\n return 'match-score.knockout.tie';\n }\n\n return null;\n};\n\nexport const getMatchScoreSubLine = (match: MatchListView | null | undefined) => {\n if (isKnockoutMatch(match)) {\n return null;\n } else if (isGroupMatch(match)) {\n return 'match-score.groups.sub-line';\n } else {\n return null;\n }\n};\n\nexport const getGroupMatchScore = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.ownPoints || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.ownPoints || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n\nexport const getGroupMatchPoints = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.score || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.score || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchScore } from './normalize-match-score.util';\n\n@Pipe({ name: 'etNormalizeMatchScore', standalone: true })\nexport class NormalizeMatchScorePipe implements PipeTransform {\n transform = normalizeMatchScore;\n}\n","import { StageType } from '@ethlete/types';\nimport { Translatable } from '../../types';\n\nexport const normalizeMatchType = (matchType: StageType | null | undefined): Translatable | null => {\n if (!matchType) {\n return null;\n }\n\n switch (matchType) {\n case 'double_elimination':\n return {\n i18n: 'match-type.double-elimination',\n text: 'Double Elimination',\n };\n case 'single_elimination':\n return {\n i18n: 'match-type.single-elimination',\n text: 'Single Elimination',\n };\n case 'fifa_swiss':\n return {\n i18n: 'match-type.fifa-swiss',\n text: 'FIFA Swiss',\n };\n case 'groups':\n return {\n i18n: 'match-type.groups',\n text: 'Groups',\n };\n case 'league':\n return {\n i18n: 'match-type.league',\n text: 'League',\n };\n case 'pools':\n return {\n i18n: 'match-type.pools',\n text: 'Pools',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchType } from './normalize-match-type.util';\n\n@Pipe({ name: 'etNormalizeMatchType', standalone: true })\nexport class NormalizeMatchTypePipe implements PipeTransform {\n transform = normalizeMatchType;\n}\n","import { TrackByFunction } from '@angular/core';\n\nexport const toArray = (value: number) => {\n return Array.from({ length: value }, (_, i) => i);\n};\n\nexport const toArrayTrackByFn: TrackByFunction<number> = (_, item) => item;\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { toArray } from './to-array.util';\n\n@Pipe({ name: 'toArray', standalone: true })\nexport class ToArrayPipe implements PipeTransform {\n transform = toArray;\n}\n","import { ElementRef, inject } from '@angular/core';\nimport { createComponentId, signalHostAttributes, signalHostClasses, signalHostStyles } from '../utils';\n\nexport const createPropHandlers = () => {\n const id = createComponentId('et-props');\n\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n const classes = signalHostClasses({});\n const attributes = signalHostAttributes({});\n const styles = signalHostStyles({});\n\n return {\n classes,\n attributes,\n styles,\n id,\n elementRef,\n };\n};\n\nexport type PropHandlers = ReturnType<typeof createPropHandlers>;\n","import { computed, signal } from '@angular/core';\n\nexport const createElementDictionary = () => {\n const dictionary = {\n ids: signal<string[]>([]),\n elements: signal<Record<string, HTMLElement>>({}),\n };\n\n const firstElement = computed(() => {\n const id = dictionary.ids()[0];\n return id ? (dictionary.elements()[id] ?? null) : null;\n });\n\n const firstId = computed(() => {\n const id = dictionary.ids()[0];\n return id ?? null;\n });\n\n const ids = computed(() => dictionary.ids());\n const elements = computed(() => ids().map((id) => dictionary.elements()[id]!));\n\n const isEmpty = computed(() => dictionary.ids().length === 0);\n\n const has = (id: string) => {\n return dictionary.ids().includes(id);\n };\n\n const push = (id: string, element: HTMLElement) => {\n dictionary.ids.set([...dictionary.ids(), id]);\n dictionary.elements.set({ ...dictionary.elements(), [id]: element });\n };\n\n const remove = (id: string) => {\n dictionary.ids.set(dictionary.ids().filter((i) => i !== id));\n dictionary.elements.set(Object.fromEntries(Object.entries(dictionary.elements()).filter(([k]) => k !== id)));\n };\n\n const get = (id: string) => {\n return dictionary.elements()[id] ?? null;\n };\n\n return {\n ids,\n elements,\n has,\n get,\n push,\n remove,\n isEmpty,\n firstElement,\n firstId,\n };\n};\n","import { PropHandlers } from './create-prop-handlers';\nimport { Props, PropsInternal } from './create-props';\n\nexport interface BindPropsOptions {\n props: Props | PropsInternal;\n handlers: PropHandlers;\n}\n\nexport const bindProps = (config: BindPropsOptions) => {\n const props = config.props as PropsInternal;\n const {\n attachEventListeners,\n classBindings,\n attributeBindings,\n styleBindings,\n staticAttributeBindings,\n staticClassBindings,\n staticStyleBindings,\n attached,\n single,\n name,\n bindId,\n attachedElements,\n } = props;\n\n const { attributes, classes, elementRef, id, styles } = config.handlers;\n const el = elementRef.nativeElement;\n\n if (attached()) {\n if (attachedElements.has(id)) {\n return;\n } else if (single) {\n const firstAttachedRefElement = attachedElements.first();\n\n console.error(\n `[${name}] These props can only be attached to a single element at a time.\\n\\n Already attached to \\n`,\n firstAttachedRefElement,\n '\\n Trying to attach to \\n',\n el,\n );\n\n return;\n }\n }\n\n attachedElements.push(id, el);\n\n if (bindId) {\n el.id = id;\n }\n\n if (classBindings) {\n classes.pushMany(classBindings);\n }\n\n if (attributeBindings) {\n attributes.pushMany(attributeBindings);\n }\n\n if (styleBindings) {\n styles.pushMany(styleBindings);\n }\n\n if (staticAttributeBindings) {\n for (const key in staticAttributeBindings) {\n el.setAttribute(key, `${staticAttributeBindings[key]}`);\n }\n }\n\n if (staticClassBindings) {\n el.classList.add(...staticClassBindings);\n }\n\n if (staticStyleBindings) {\n for (const key in staticStyleBindings) {\n el.style.setProperty(key, `${staticStyleBindings[key]}`);\n }\n }\n\n if (attachEventListeners) {\n attachEventListeners({\n on: el.addEventListener.bind(el),\n element: el,\n });\n }\n};\n\nexport interface UnbindPropsOptions {\n props: Props | PropsInternal;\n handlers: PropHandlers;\n}\n\nexport const unbindProps = (config: UnbindPropsOptions) => {\n const props = config.props as PropsInternal;\n\n props.attachedElements.remove(config.handlers.id);\n};\n","import { DestroyRef, Signal, afterNextRender, computed, inject } from '@angular/core';\nimport { PropHandlers, createPropHandlers } from './create-prop-handlers';\nimport { createElementDictionary } from './element-dictionary';\nimport { bindProps, unbindProps } from './props-binding';\n\nexport type Props = Readonly<{\n attached: Signal<boolean>;\n attachedElements: PropsAttachedElements;\n}>;\n\nexport interface PropsAttachedElements {\n first: Signal<HTMLElement | null>;\n firstId: Signal<string | null>;\n get(id: string): HTMLElement | null;\n}\n\nexport interface PropsAttachedElementsInternal extends PropsAttachedElements {\n has: (id: string) => boolean;\n push: (id: string, element: HTMLElement) => void;\n remove: (id: string) => void;\n}\n\nexport interface PropsInternal {\n single: boolean;\n name: string;\n bindId: boolean;\n\n attached: Signal<boolean>;\n attachedElements: PropsAttachedElementsInternal;\n\n classBindings: Record<string, Signal<unknown>> | null;\n attributeBindings: Record<string, Signal<unknown>> | null;\n styleBindings: Record<string, Signal<unknown>> | null;\n\n staticClassBindings: string[] | null;\n staticAttributeBindings: Record<string, unknown> | null;\n staticStyleBindings: Record<string, unknown> | null;\n\n attachEventListeners: ((context: { on: HTMLElement['addEventListener']; element: HTMLElement }) => void) | null;\n}\n\nexport interface CreatePropsOptions {\n name: string;\n bindId?: boolean;\n single?: boolean;\n classes?: Record<string, Signal<unknown>>;\n attributes?: Record<string, Signal<unknown>>;\n styles?: Record<string, Signal<unknown>>;\n staticClasses?: string[];\n staticAttributes?: Record<string, unknown>;\n staticStyles?: Record<string, unknown>;\n listeners?: (context: { on: HTMLElement['addEventListener']; element: HTMLElement }) => void;\n}\n\nexport const createProps = (props: CreatePropsOptions): Props => {\n const {\n bindId = false,\n single = true,\n classes: classBindings,\n attributes: attributeBindings,\n styles: styleBindings,\n staticAttributes: staticAttributeBindings = null,\n staticClasses: staticClassBindings = null,\n staticStyles: staticStyleBindings = null,\n listeners,\n name,\n } = props;\n\n const dictionary = createElementDictionary();\n const attached = computed(() => !dictionary.isEmpty());\n\n const attachedElements: PropsAttachedElementsInternal = {\n first: dictionary.firstElement,\n firstId: dictionary.firstId,\n\n has: dictionary.has,\n push: dictionary.push,\n remove: dictionary.remove,\n get: dictionary.get,\n };\n\n const data: PropsInternal = {\n name,\n single,\n bindId,\n\n attached,\n attachedElements,\n\n classBindings: classBindings ?? null,\n attributeBindings: attributeBindings ?? null,\n styleBindings: styleBindings ?? null,\n\n staticAttributeBindings,\n staticClassBindings,\n staticStyleBindings,\n\n attachEventListeners: listeners ?? null,\n };\n\n return data as Props;\n};\n\nexport interface HostProps {\n props: Props;\n handlers: PropHandlers;\n}\n\nexport const createHostProps = (props: CreatePropsOptions): HostProps => {\n const data = createProps(props);\n const handlers = createPropHandlers();\n\n afterNextRender({\n write: () => {\n bindProps({\n handlers,\n props: data,\n });\n },\n });\n\n const destroyRef = inject(DestroyRef);\n\n destroyRef.onDestroy(() => {\n unbindProps({\n handlers,\n props: data,\n });\n });\n\n return { props: data, handlers };\n};\n","import { afterNextRender } from '@angular/core';\n\nexport const createSetup = <T extends Record<string, unknown>>(config: {\n setupFn: (params: T) => void;\n this: ThisType<unknown>;\n}) => {\n let didCallSetup = false;\n\n afterNextRender(() => {\n if (!didCallSetup) {\n console.error('The setup() function was not called. Please call it inside your constructor.', config.this);\n return;\n }\n });\n\n return (params: T) => {\n if (didCallSetup) {\n console.error(\n 'The setup() function was already called. Please call it only once. \\n\\n',\n 'Instance containing the setup() call \\n',\n config.this,\n '\\n\\n Setup was called with\\n',\n params,\n );\n return;\n }\n\n didCallSetup = true;\n config.setupFn(params);\n };\n};\n","import { Injector, Signal, WritableSignal, effect, inject, runInInjectionContext } from '@angular/core';\n\nexport const createDependencyStash = <T extends Record<string, WritableSignal<unknown>>>(stash: T) => {\n const injector = inject(Injector);\n\n const provideSignal = <K extends keyof T>(data: { signal: Signal<ReturnType<T[K]>>; for: K }) => {\n runInInjectionContext(injector, () => {\n effect(\n () => {\n stash[data.for]!.set(data.signal());\n },\n { allowSignalWrites: true },\n );\n });\n };\n\n const provideValue = <K extends keyof T>(data: { value: ReturnType<T[K]>; for: K }) => {\n stash[data.for]!.set(data.value);\n };\n\n return {\n ...stash,\n provideSignal,\n provideValue,\n };\n};\n","import { DestroyRef, Directive, afterNextRender, inject, input } from '@angular/core';\nimport { createPropHandlers } from './create-prop-handlers';\nimport { Props, PropsInternal } from './create-props';\nimport { bindProps, unbindProps } from './props-binding';\n\n@Directive({\n selector: '[etProps]',\n standalone: true,\n})\nexport class PropsDirective {\n destroyRef = inject(DestroyRef);\n\n props = input.required<PropsInternal, Props>({ alias: 'etProps', transform: (d) => d as PropsInternal });\n\n propHandlers = createPropHandlers();\n\n constructor() {\n afterNextRender({\n write: () => {\n bindProps({\n handlers: this.propHandlers,\n props: this.props(),\n });\n },\n });\n\n this.destroyRef.onDestroy(() => {\n unbindProps({\n handlers: this.propHandlers,\n props: this.props(),\n });\n });\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injector, Signal, TemplateRef, computed } from '@angular/core';\n\nexport type AnyTemplateType =\n | string\n | TemplateRef<unknown>\n | ComponentType<unknown>\n | TemplateRefWithContext\n | ComponentTypeWithInputs;\n\nexport type TemplateRefWithContext<T = Record<string, unknown> | undefined, J = unknown> = {\n template: TemplateRef<J>;\n context?: T;\n injector?: Injector;\n};\n\nexport type ComponentTypeWithInputs<T = Record<string, unknown> | undefined, J = unknown> = {\n component: ComponentType<J>;\n inputs?: T;\n injector?: Injector;\n};\n\nexport type StringTemplate = {\n type: 'string';\n value: string;\n};\n\nexport type NgTemplateTemplate = {\n type: 'template';\n value: TemplateRef<unknown>;\n context?: Record<string, unknown>;\n injector: Injector | null;\n};\n\nexport type ComponentTemplate = {\n type: 'component';\n value: ComponentType<unknown>;\n inputs?: Record<string, unknown>;\n injector: Injector | null;\n};\n\nexport const templateComputed = (templateSignal: Signal<AnyTemplateType | null>) =>\n computed((): StringTemplate | NgTemplateTemplate | ComponentTemplate | null => {\n const content = templateSignal();\n\n if (!content) return null;\n\n if (typeof content === 'string') {\n return {\n type: 'string',\n value: content,\n };\n }\n\n if (content instanceof TemplateRef) {\n return {\n type: 'template',\n value: content,\n injector: null,\n };\n }\n\n if ('component' in content) {\n return {\n type: 'component',\n value: content.component,\n inputs: content.inputs,\n injector: content.injector ?? null,\n };\n }\n\n if ('template' in content) {\n return {\n type: 'template',\n value: content.template,\n context: content.context,\n injector: content.injector ?? null,\n };\n }\n\n return {\n type: 'component',\n value: content,\n injector: null,\n };\n });\n","import { QueryList, Type } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type NgClassType =\n | string\n | string[]\n | Set<string>\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [klass: string]: any;\n }\n | null\n | undefined;\n\nexport type HostDirective =\n | Type<unknown>\n | {\n directive: Type<unknown>;\n inputs?: string[];\n outputs?: string[];\n };\n\nexport class TypedQueryList<T> extends QueryList<T> {\n override [Symbol.iterator]: () => Iterator<T> = () => {\n return super[Symbol.iterator]() as Iterator<T>;\n };\n\n override get changes(): Observable<TypedQueryList<T>> {\n return super.changes as Observable<TypedQueryList<T>>;\n }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const AT_LEAST_ONE_REQUIRED = 'atLeastOneRequired';\n\nexport interface ValidateAtLeastOneRequiredConfig {\n /**\n * Keys of form controls to validate in the supplied form group\n */\n keys: string[];\n\n /**\n * If true, the value `false` will result in a validation error\n * @default false\n */\n checkFalse?: boolean;\n}\n\nexport const ValidateAtLeastOneRequired = (config: ValidateAtLeastOneRequiredConfig): ValidatorFn => {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const { keys, checkFalse } = config;\n\n if (!formGroup) {\n return { [AT_LEAST_ONE_REQUIRED]: true };\n }\n\n const controlValues = keys.map((key) => formGroup.get(key)?.value);\n\n const areAllFalsy = controlValues.every(\n (value) =>\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (checkFalse && value === false),\n );\n\n if (areAllFalsy) {\n return { [AT_LEAST_ONE_REQUIRED]: true };\n }\n\n return null;\n };\n};\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const IS_ARRAY_NOT_EMPTY = 'isArrayNotEmpty';\n\nexport const IsArrayNotEmpty = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n return value.length > 0 ? null : { [IS_ARRAY_NOT_EMPTY]: true };\n};\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const IS_EMAIL = 'isEmail';\n\nexport const IsEmail = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n const regex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$/;\n return regex.test(value) ? null : { [IS_EMAIL]: true };\n};\n","import { AbstractControl } from '@angular/forms';\n\nexport const MUST_MATCH = 'mustMatch';\n\nexport const MustMatch = (controlName: string, matchingControlName: string) => {\n return (formGroup: AbstractControl) => {\n const control = formGroup.get(controlName);\n const matchingControl = formGroup.get(matchingControlName);\n\n if (matchingControl?.errors && !matchingControl.errors[MUST_MATCH]) {\n return null;\n }\n\n if (control?.value !== matchingControl?.value) {\n matchingControl?.setErrors({ [MUST_MATCH]: true });\n return { [MUST_MATCH]: true };\n } else {\n matchingControl?.setErrors(null);\n return null;\n }\n };\n};\n","import { ValidateAtLeastOneRequired } from './at-least-one-required.validator';\nimport { IsArrayNotEmpty } from './is-array-not-empty.validator';\nimport { IsEmail } from './is-email.validator';\nimport { MustMatch } from './must-match.validator';\n\nexport * from './at-least-one-required.validator';\nexport * from './is-array-not-empty.validator';\nexport * from './is-email.validator';\nexport * from './must-match.validator';\n\nexport const Validators = {\n MustMatch,\n IsEmail,\n IsArrayNotEmpty,\n ValidateAtLeastOneRequired,\n} as const;\n","export * from './lib/components/structured-data';\nexport * from './lib/constants';\nexport * from './lib/decorators/memo';\nexport * from './lib/directives/animatable';\nexport * from './lib/directives/animated-if';\nexport * from './lib/directives/animated-lifecycle';\nexport * from './lib/directives/animated-overlay';\nexport * from './lib/directives/click-outside';\nexport * from './lib/directives/cursor-drag-scroll';\nexport * from './lib/directives/debug';\nexport * from './lib/directives/delayable';\nexport * from './lib/directives/is-active-element';\nexport * from './lib/directives/is-element';\nexport * from './lib/directives/let';\nexport * from './lib/directives/observe-content';\nexport * from './lib/directives/observe-resize';\nexport * from './lib/directives/observe-scroll-state';\nexport * from './lib/directives/observe-visibility';\nexport * from './lib/directives/repeat';\nexport * from './lib/directives/root-boundary';\nexport * from './lib/directives/scroll-observer-first-element';\nexport * from './lib/directives/scroll-observer-ignore-target';\nexport * from './lib/directives/scroll-observer-last-element';\nexport * from './lib/directives/seo';\nexport * from './lib/pipes/infer-mime-type';\nexport * from './lib/pipes/normalize-game-result-type';\nexport * from './lib/pipes/normalize-match-participants';\nexport * from './lib/pipes/normalize-match-score';\nexport * from './lib/pipes/normalize-match-state';\nexport * from './lib/pipes/normalize-match-type';\nexport * from './lib/pipes/to-array';\nexport * from './lib/props';\nexport * from './lib/services';\nexport * from './lib/types';\nexport * from './lib/utils';\nexport * from './lib/validators';\n\n// Burst cache\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CURSOR_DRAG_SCROLLING_CLASS","i1.AnimatableDirective","debounceTime"],"mappings":"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"}
|