@ethlete/core 1.4.0 → 1.4.2

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.
Files changed (34) hide show
  1. package/esm2020/lib/components/structured-data/structured-data.component.mjs +3 -3
  2. package/esm2020/lib/directives/animatable/animatable.directive.mjs +3 -3
  3. package/esm2020/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +3 -3
  4. package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +3 -3
  5. package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +3 -3
  6. package/esm2020/lib/directives/let/let.directive.mjs +3 -3
  7. package/esm2020/lib/directives/observe-content/observe-content.directive.mjs +3 -3
  8. package/esm2020/lib/directives/observe-resize/observe-resize.directive.mjs +3 -3
  9. package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +10 -6
  10. package/esm2020/lib/directives/repeat/repeat.directive.mjs +3 -3
  11. package/esm2020/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +3 -3
  12. package/esm2020/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +3 -3
  13. package/esm2020/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +3 -3
  14. package/esm2020/lib/directives/seo/seo.directive.mjs +3 -3
  15. package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +3 -3
  16. package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +3 -3
  17. package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +3 -3
  18. package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +3 -3
  19. package/esm2020/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +3 -3
  20. package/esm2020/lib/pipes/to-array/to-array.pipe.mjs +3 -3
  21. package/esm2020/lib/services/click-observer.service.mjs +6 -6
  22. package/esm2020/lib/services/content-observer.service.mjs +6 -6
  23. package/esm2020/lib/services/destroy.service.mjs +8 -4
  24. package/esm2020/lib/services/focus-visible.service.mjs +3 -3
  25. package/esm2020/lib/services/resize-observer.service.mjs +6 -6
  26. package/esm2020/lib/services/router-state.service.mjs +3 -3
  27. package/esm2020/lib/services/viewport.service.mjs +3 -3
  28. package/fesm2015/ethlete-core.mjs +100 -92
  29. package/fesm2015/ethlete-core.mjs.map +1 -1
  30. package/fesm2020/ethlete-core.mjs +100 -92
  31. package/fesm2020/ethlete-core.mjs.map +1 -1
  32. package/lib/directives/observe-scroll-state/observe-scroll-state.directive.d.ts +2 -2
  33. package/lib/services/destroy.service.d.ts +3 -0
  34. package/package.json +5 -5
@@ -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/services/click-observer.service.ts","../../../../libs/core/src/lib/services/content-observer.service.ts","../../../../libs/core/src/lib/services/destroy.service.ts","../../../../libs/core/src/lib/services/focus-visible.service.ts","../../../../libs/core/src/lib/services/resize-observer.service.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/cookie.util.ts","../../../../libs/core/src/lib/utils/equal.util.ts","../../../../libs/core/src/lib/utils/media-query-observable.util.ts","../../../../libs/core/src/lib/utils/reactive-binding.util.ts","../../../../libs/core/src/lib/utils/rxjs.utils.ts","../../../../libs/core/src/lib/utils/scrollable.utils.ts","../../../../libs/core/src/lib/utils/viewport.util.ts","../../../../libs/core/src/lib/services/router-state.service.ts","../../../../libs/core/src/lib/services/viewport.service.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/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/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/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.constants.ts","../../../../libs/core/src/lib/directives/observe-scroll-state/observe-scroll-state.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/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/types/angular.types.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/public-api.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","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer, fromEvent, Subscription } 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 _observedElements = new Map<\n Element,\n {\n observer: Subscription | null;\n readonly stream: Subject<MouseEvent>;\n count: number;\n }\n >();\n\n constructor(private _clickObserverFactory: ClickObserverFactory) {}\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 { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer } 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 _observedElements = new Map<\n Element,\n {\n observer: MutationObserver | null;\n readonly stream: Subject<MutationRecord[]>;\n count: number;\n }\n >();\n\n constructor(private _mutationObserverFactory: MutationObserverFactory) {}\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 { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class DestroyService implements OnDestroy {\n private readonly _destroy$ = new Subject<boolean>();\n\n readonly destroy$ = this._destroy$.asObservable();\n\n ngOnDestroy(): void {\n this._destroy$.next(true);\n this._destroy$.unsubscribe();\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>(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 { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer } 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 _observedElements = new Map<\n Element,\n {\n observer: ResizeObserver | null;\n readonly stream: Subject<ResizeObserverEntry[]>;\n count: number;\n }\n >();\n\n constructor(private _mutationObserverFactory: ResizeObserverFactory) {}\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 { 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\nexport const createFlipAnimationGroup = (config: { elements: HTMLElement[]; duration?: number; easing?: string }) => {\n const { elements, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n const flips = elements.map((el) => createFlipAnimation({ element: el, duration, easing }));\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 const createFlipAnimation = (config: { element: HTMLElement; duration?: number; easing?: string }) => {\n const { element: el, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n let initialRect = el.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 = el.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","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 = (name: string, data: string, expiresInDays = 30, domain = getDomain()) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const date = new Date();\n date.setTime(date.getTime() + expiresInDays * 24 * 60 * 60 * 1000);\n\n document.cookie = `${name}=${data}; path=/; expires=${date.toUTCString()}; domain=${domain}; SameSite=Lax;`;\n};\n\nexport const deleteCookie = (name: string, path: string, 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 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 { 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 { ElementRef, inject } from '@angular/core';\nimport { distinctUntilChanged, Observable, Subscription, takeUntil } from 'rxjs';\nimport { DestroyService } from '../services';\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 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\nexport const createReactiveBindings = (...values: ReactiveAttributes[]): ReactiveBindingResult => {\n const rootElementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const destroy$ = inject(DestroyService, { host: true }).destroy$;\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 } = 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 )\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BehaviorSubject, Observer, Subscription } from 'rxjs';\n\nexport class BehaviorSubjectWithSubscriberCount<T> extends BehaviorSubject<T> {\n private _subscriberCount = 0;\n\n get subscriberCount() {\n return this._subscriberCount;\n }\n\n override subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null,\n ): Subscription;\n override subscribe(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null,\n ): Subscription;\n override subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | undefined): Subscription;\n override subscribe(observerOrNext: any) {\n this._subscriberCount++;\n\n const sub = super.subscribe(observerOrNext);\n\n return {\n ...sub,\n unsubscribe: () => {\n sub.unsubscribe();\n this._subscriberCount--;\n },\n };\n }\n\n override unsubscribe() {\n this._subscriberCount--;\n\n return super.unsubscribe();\n }\n}\n","export const elementCanScroll = (element: HTMLElement) => {\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;\n\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\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 { 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} from 'rxjs';\nimport { equal } from '../utils';\n\nexport const routerDisableScrollTop = (config: { asReturnRoute?: boolean } = {}) => {\n if (!config.asReturnRoute) {\n return {\n disableScrollTop: true,\n };\n }\n\n return {\n disableScrollTopAsReturnRoute: true,\n };\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('/');\n\n private readonly _state$ = new BehaviorSubject<{\n data: Data;\n pathParams: Params;\n queryParams: Params;\n title: string | null;\n fragment: string | null;\n }>({\n title: null,\n fragment: null,\n data: {},\n pathParams: {},\n queryParams: {},\n });\n\n get route$() {\n return this._route$.asObservable();\n }\n\n get state$() {\n return this._state$.asObservable();\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 )\n .subscribe(this._route$);\n\n this._route$\n .pipe(\n map(() => {\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 return {\n data,\n pathParams: params,\n queryParams,\n title: title ?? null,\n fragment,\n };\n }),\n )\n .subscribe(this._state$);\n }\n\n enableScrollEnhancements(\n config: {\n scrollElement?: HTMLElement;\n queryParamTriggerList?: string[];\n fragment?: {\n enabled?: boolean;\n smooth?: boolean;\n };\n } = {},\n ) {\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 && equal(prevState.pathParams, currState.pathParams);\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 if (\n !(currState.data['disableScrollTopAsReturnRoute'] && prevState.data['disableScrollTop']) &&\n !currState.data['disableScrollTop']\n ) {\n (config.scrollElement ?? document.documentElement).scrollTop = 0;\n }\n }\n });\n }\n\n selectQueryParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.queryParams[key]));\n }\n\n selectPathParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.pathParams[key]));\n }\n\n selectData<T = unknown>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.data[key]));\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, combineLatest, map, Observable, shareReplay } from 'rxjs';\nimport { DEFAULT_VIEWPORT_CONFIG, VIEWPORT_CONFIG } from '../constants';\nimport { Breakpoint, ViewportConfig } from '../types';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Memo } from '../decorators';\nimport { BuildMediaQueryOptions } from './viewport.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ViewportService {\n private _viewportConfig: ViewportConfig;\n\n private _isXs$ = new BehaviorSubject(false);\n private _isSm$ = new BehaviorSubject(false);\n private _isMd$ = new BehaviorSubject(false);\n private _isLg$ = new BehaviorSubject(false);\n private _isXl$ = new BehaviorSubject(false);\n private _is2Xl$ = new BehaviorSubject(false);\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 currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(\n map((val) => this.getCurrentViewport(val)),\n shareReplay(),\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 @Inject(VIEWPORT_CONFIG) @Optional() _viewportConfig: ViewportConfig | null,\n private _breakpointObserver: BreakpointObserver,\n ) {\n this._viewportConfig = _viewportConfig || DEFAULT_VIEWPORT_CONFIG;\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(),\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 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 private _getViewportSize(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 @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._getViewportSize(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._getViewportSize(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 { 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 { DestroyService } from '../../services';\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 DestroyService,\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$ = inject(DestroyService, { host: true }).destroy$;\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly _animationStart$ = new Subject<void>();\n private readonly _animationEnd$ = 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) {\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\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 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 { Directive, ElementRef, inject, InjectionToken, isDevMode } from '@angular/core';\nimport { BehaviorSubject, map, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { DestroyService } from '../../services';\nimport { createReactiveBindings, forceReflow, fromNextFrame } from '../../utils';\nimport { AnimatableDirective, ANIMATABLE_TOKEN } 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\n@Directive({\n selector: '[etAnimatedLifecycle]',\n exportAs: 'etAnimatedLifecycle',\n standalone: true,\n providers: [\n {\n provide: ANIMATED_LIFECYCLE_TOKEN,\n useExisting: AnimatedLifecycleDirective,\n },\n DestroyService,\n ],\n hostDirectives: [AnimatableDirective],\n})\nexport class AnimatedLifecycleDirective {\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\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 _state$ = new BehaviorSubject<'entering' | 'entered' | 'leaving' | 'left' | 'init'>('init');\n readonly state$ = this._state$.asObservable();\n\n get state() {\n return this._state$.value;\n }\n\n private readonly _bindings = createReactiveBindings({\n attribute: 'class.et-force-invisible',\n observable: this._state$.pipe(map((state) => state === 'init')),\n });\n\n enter(config?: { onlyTransition?: boolean }) {\n if (this.state !== 'init' && this.state !== 'left' && isDevMode()) {\n console.warn(\n 'Tried to enter but the element is not in the initial state. This may result in unexpected behavior.',\n this,\n );\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) {\n this._classList.remove(ANIMATION_CLASSES.enterFrom);\n this._classList.add(ANIMATION_CLASSES.enterTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\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 !== 'entered' && this.state !== 'entering' && isDevMode()) {\n console.warn('Tried to leave while already leaving or left. This may result in unexpected behavior.', this);\n }\n\n if (\n this._classList.contains(ANIMATION_CLASSES.enterFrom) ||\n this._classList.contains(ANIMATION_CLASSES.enterActive) ||\n this._classList.contains(ANIMATION_CLASSES.enterTo)\n ) {\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) {\n this._classList.remove(ANIMATION_CLASSES.leaveFrom);\n this._classList.add(ANIMATION_CLASSES.leaveTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\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","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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, Directive, ElementRef, inject, Input } from '@angular/core';\nimport { combineLatest, debounceTime, fromEvent, startWith, Subject, Subscription, take, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, DestroyService, ResizeObserverService } from '../../services';\nimport { 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 providers: [DestroyService],\n})\nexport class CursorDragScrollDirective implements AfterViewInit {\n private readonly _subscriptions: Subscription[] = [];\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\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: BooleanInput) {\n this._enabled = coerceBooleanProperty(value);\n\n if (this._enabled) {\n this._enableCursorDragScroll();\n } else {\n this._disableCursorDragScroll();\n }\n }\n private _enabled = false;\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 if (Math.abs(dx) > this._bufferUntilScroll || Math.abs(dy) > this._bufferUntilScroll) {\n const element = this._elementRef.nativeElement;\n\n if (!this._isScrolling) {\n this._isScrolling = true;\n\n element.style.cursor = 'grabbing';\n element.classList.add(CURSOR_DRAG_SCROLLING_CLASS);\n element.scroll({\n top: this._currentScrollState.top - dy,\n left: this._currentScrollState.left - dx,\n behavior: 'smooth',\n });\n } else {\n element.scrollTop = this._currentScrollState.top - dy;\n element.scrollLeft = this._currentScrollState.left - dx;\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 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\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","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 } from '@angular/core';\nimport { LetContext } from './let.types';\n\n@Directive({\n selector: '[etLet]',\n standalone: true,\n})\nexport class LetDirective<T = unknown> {\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: TemplateRef<LetContext<T>> | null = null;\n private _viewRef: EmbeddedViewRef<LetContext<T>> | null = null;\n\n constructor(private _viewContainer: ViewContainerRef, templateRef: TemplateRef<LetContext<T>>) {\n this._templateRef = templateRef;\n }\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 { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\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: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n private _disabled = false;\n\n @Input('etObserveContentDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: NumberInput) {\n this._debounce = coerceNumberProperty(value);\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 { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\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: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n private _disabled = false;\n\n @Input('etObserveResizeDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: NumberInput) {\n this._debounce = coerceNumberProperty(value);\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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, HostBinding, Input } 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('etScrollObserverFirstElement')\n @HostBinding(`class.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`)\n get isFirstElement(): boolean {\n return this._isFirstElement;\n }\n set isFirstElement(value: BooleanInput) {\n this._isFirstElement = coerceBooleanProperty(value);\n }\n private _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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, HostBinding, Input } 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('etScrollObserverLastElement')\n @HostBinding(`class.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`)\n get isLastElement(): boolean {\n return this._isLastElement;\n }\n set isLastElement(value: BooleanInput) {\n this._isLastElement = coerceBooleanProperty(value);\n }\n private _isLastElement = false;\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 { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, EventEmitter, inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { debounceTime, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, DestroyService, ResizeObserverService } from '../../services';\nimport { 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 { ObservedScrollableChild, ScrollObserverScrollState } from './observe-scroll-state.types';\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 DestroyService,\n ],\n})\nexport class ObserveScrollStateDirective implements OnInit, OnDestroy {\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\n\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _contentObserverService = inject(ContentObserverService);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n\n private readonly _observedChildren = {\n first: this._firstCurrentChild,\n last: this._lastCurrentChild,\n };\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()\n get observerRootMargin(): number {\n return this._rootMargin;\n }\n set observerRootMargin(value: NumberInput) {\n this._rootMargin = coerceNumberProperty(value);\n }\n private _rootMargin = 0;\n\n @Input()\n get observerThreshold(): number {\n return this._threshold;\n }\n set observerThreshold(value: NumberInput) {\n this._threshold = coerceNumberProperty(value);\n }\n private _threshold = 1;\n\n private _intersectionObserver: IntersectionObserver | null = null;\n\n @Output('etObserveScrollState')\n valueChange = new EventEmitter<ScrollObserverScrollState>();\n\n ngOnInit(): void {\n this._contentObserverService\n .observe(this._elementRef.nativeElement)\n .pipe(\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._unobserveChild('first');\n this._unobserveChild('last');\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._observeChild('first', this._firstCurrentChild);\n this._observeChild('last', this._lastCurrentChild);\n }\n }\n\n private _initiateIntersectionObserver() {\n const observer = new IntersectionObserver(\n (entries) => {\n const { first, last } = this._observedChildren;\n\n const isAtStart = entries.find((entry) => entry.target === first)?.isIntersecting ?? false;\n const isAtEnd = entries.find((entry) => entry.target === 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}px`,\n threshold: this._threshold,\n },\n );\n\n return observer;\n }\n\n private _observeChild(child: ObservedScrollableChild, element: HTMLElement) {\n this._intersectionObserver?.observe(element);\n this._observedChildren[child] = element;\n\n element.classList.add(`et-scroll-observer-observing-${child}-element`);\n }\n\n private _unobserveChild(child: ObservedScrollableChild) {\n const observedChild = this._observedChildren[child];\n\n if (!observedChild) {\n return;\n }\n\n observedChild.classList.remove(\n 'et-scroll-observer-observing-first-element',\n 'et-scroll-observer-observing-last-element',\n );\n\n this._intersectionObserver?.unobserve(observedChild);\n this._observedChildren[child] = null;\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 { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Directive, Input, 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: NumberInput) {\n this._repeatCount = coerceNumberProperty(value);\n this._render();\n }\n private _repeatCount = 2;\n\n constructor(private _mainTemplateRef: TemplateRef<unknown>, private _viewContainerRef: ViewContainerRef) {}\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","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 { QueryList } 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 class TypedQueryList<T> extends QueryList<T | undefined> {\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 override toArray(): T[] {\n return super.toArray() as T[];\n }\n\n override forEach(fn: (item: T, index: number, array: T[]) => void): void {\n super.forEach(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => void);\n }\n\n override filter(fn: (item: T, index: number, array: T[]) => boolean): T[] {\n return super.filter(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => boolean) as T[];\n }\n\n override map<U>(fn: (item: T, index: number, array: T[]) => U): U[] {\n return super.map(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => U);\n }\n\n override reduce<U>(\n fn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U,\n initialValue: U,\n ): U {\n return super.reduce(\n fn as (previousValue: U, currentValue: T | undefined, currentIndex: number, array: (T | undefined)[]) => U,\n initialValue,\n );\n }\n\n override some(fn: (value: T, index: number, array: T[]) => boolean): boolean {\n return super.some(fn as (value: T | undefined, index: number, array: (T | undefined)[]) => boolean);\n }\n\n override find(fn: (value: T, index: number, array: T[]) => boolean): T | undefined {\n return super.find(fn as (value: T | undefined, index: number, array: (T | undefined)[]) => boolean);\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,4}$/;\n return regex.test(value) ? null : { [IS_EMAIL]: true };\n};\n","import { FormGroup } from '@angular/forms';\n\nexport const MUST_MATCH = 'mustMatch';\n\nexport const MustMatch = (controlName: string, matchingControlName: string) => {\n return (formGroup: FormGroup) => {\n const control = formGroup.controls[controlName];\n const matchingControl = formGroup.controls[matchingControlName];\n\n // set error on matchingControl if validation fails\n if (matchingControl.errors && !matchingControl.errors[MUST_MATCH]) {\n return;\n }\n\n // set error on matchingControl if validation fails\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({ [MUST_MATCH]: true });\n } else {\n matchingControl.setErrors(null);\n }\n };\n};\n","import { IsArrayNotEmpty } from './is-array-not-empty.validator';\nimport { IsEmail } from './is-email.validator';\nimport { MustMatch } from './must-match.validator';\n\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} as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["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/services/click-observer.service.ts","../../../../libs/core/src/lib/services/content-observer.service.ts","../../../../libs/core/src/lib/services/destroy.service.ts","../../../../libs/core/src/lib/services/focus-visible.service.ts","../../../../libs/core/src/lib/services/resize-observer.service.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/cookie.util.ts","../../../../libs/core/src/lib/utils/equal.util.ts","../../../../libs/core/src/lib/utils/media-query-observable.util.ts","../../../../libs/core/src/lib/utils/reactive-binding.util.ts","../../../../libs/core/src/lib/utils/rxjs.utils.ts","../../../../libs/core/src/lib/utils/scrollable.utils.ts","../../../../libs/core/src/lib/utils/viewport.util.ts","../../../../libs/core/src/lib/services/router-state.service.ts","../../../../libs/core/src/lib/services/viewport.service.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/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/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/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.constants.ts","../../../../libs/core/src/lib/directives/observe-scroll-state/observe-scroll-state.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/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/types/angular.types.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/public-api.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","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer, fromEvent, Subscription } 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 _observedElements = new Map<\n Element,\n {\n observer: Subscription | null;\n readonly stream: Subject<MouseEvent>;\n count: number;\n }\n >();\n\n constructor(private _clickObserverFactory: ClickObserverFactory) {}\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 { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer } 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 _observedElements = new Map<\n Element,\n {\n observer: MutationObserver | null;\n readonly stream: Subject<MutationRecord[]>;\n count: number;\n }\n >();\n\n constructor(private _mutationObserverFactory: MutationObserverFactory) {}\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 { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * @deprecated Will be replaced with the upcoming Angular 16 `DestroyRef` feature.\n */\n// TODO: Replace with Angular 16 `DestroyRef` feature when available.\n@Injectable()\nexport class DestroyService implements OnDestroy {\n private readonly _destroy$ = new Subject<boolean>();\n\n readonly destroy$ = this._destroy$.asObservable();\n\n ngOnDestroy(): void {\n this._destroy$.next(true);\n this._destroy$.unsubscribe();\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>(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 { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer } 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 _observedElements = new Map<\n Element,\n {\n observer: ResizeObserver | null;\n readonly stream: Subject<ResizeObserverEntry[]>;\n count: number;\n }\n >();\n\n constructor(private _mutationObserverFactory: ResizeObserverFactory) {}\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 { 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\nexport const createFlipAnimationGroup = (config: { elements: HTMLElement[]; duration?: number; easing?: string }) => {\n const { elements, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n const flips = elements.map((el) => createFlipAnimation({ element: el, duration, easing }));\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 const createFlipAnimation = (config: { element: HTMLElement; duration?: number; easing?: string }) => {\n const { element: el, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n let initialRect = el.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 = el.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","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 = (name: string, data: string, expiresInDays = 30, domain = getDomain()) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const date = new Date();\n date.setTime(date.getTime() + expiresInDays * 24 * 60 * 60 * 1000);\n\n document.cookie = `${name}=${data}; path=/; expires=${date.toUTCString()}; domain=${domain}; SameSite=Lax;`;\n};\n\nexport const deleteCookie = (name: string, path: string, 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 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 { 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 { ElementRef, inject } from '@angular/core';\nimport { distinctUntilChanged, Observable, Subscription, takeUntil } from 'rxjs';\nimport { DestroyService } from '../services';\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 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\nexport const createReactiveBindings = (...values: ReactiveAttributes[]): ReactiveBindingResult => {\n const rootElementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const destroy$ = inject(DestroyService, { host: true }).destroy$;\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 } = 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 )\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BehaviorSubject, Observer, Subscription } from 'rxjs';\n\nexport class BehaviorSubjectWithSubscriberCount<T> extends BehaviorSubject<T> {\n private _subscriberCount = 0;\n\n get subscriberCount() {\n return this._subscriberCount;\n }\n\n override subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null,\n ): Subscription;\n override subscribe(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null,\n ): Subscription;\n override subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | undefined): Subscription;\n override subscribe(observerOrNext: any) {\n this._subscriberCount++;\n\n const sub = super.subscribe(observerOrNext);\n\n return {\n ...sub,\n unsubscribe: () => {\n sub.unsubscribe();\n this._subscriberCount--;\n },\n };\n }\n\n override unsubscribe() {\n this._subscriberCount--;\n\n return super.unsubscribe();\n }\n}\n","export const elementCanScroll = (element: HTMLElement) => {\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;\n\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\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 { 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} from 'rxjs';\nimport { equal } from '../utils';\n\nexport const routerDisableScrollTop = (config: { asReturnRoute?: boolean } = {}) => {\n if (!config.asReturnRoute) {\n return {\n disableScrollTop: true,\n };\n }\n\n return {\n disableScrollTopAsReturnRoute: true,\n };\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('/');\n\n private readonly _state$ = new BehaviorSubject<{\n data: Data;\n pathParams: Params;\n queryParams: Params;\n title: string | null;\n fragment: string | null;\n }>({\n title: null,\n fragment: null,\n data: {},\n pathParams: {},\n queryParams: {},\n });\n\n get route$() {\n return this._route$.asObservable();\n }\n\n get state$() {\n return this._state$.asObservable();\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 )\n .subscribe(this._route$);\n\n this._route$\n .pipe(\n map(() => {\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 return {\n data,\n pathParams: params,\n queryParams,\n title: title ?? null,\n fragment,\n };\n }),\n )\n .subscribe(this._state$);\n }\n\n enableScrollEnhancements(\n config: {\n scrollElement?: HTMLElement;\n queryParamTriggerList?: string[];\n fragment?: {\n enabled?: boolean;\n smooth?: boolean;\n };\n } = {},\n ) {\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 && equal(prevState.pathParams, currState.pathParams);\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 if (\n !(currState.data['disableScrollTopAsReturnRoute'] && prevState.data['disableScrollTop']) &&\n !currState.data['disableScrollTop']\n ) {\n (config.scrollElement ?? document.documentElement).scrollTop = 0;\n }\n }\n });\n }\n\n selectQueryParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.queryParams[key]));\n }\n\n selectPathParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.pathParams[key]));\n }\n\n selectData<T = unknown>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.data[key]));\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, combineLatest, map, Observable, shareReplay } from 'rxjs';\nimport { DEFAULT_VIEWPORT_CONFIG, VIEWPORT_CONFIG } from '../constants';\nimport { Breakpoint, ViewportConfig } from '../types';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Memo } from '../decorators';\nimport { BuildMediaQueryOptions } from './viewport.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ViewportService {\n private _viewportConfig: ViewportConfig;\n\n private _isXs$ = new BehaviorSubject(false);\n private _isSm$ = new BehaviorSubject(false);\n private _isMd$ = new BehaviorSubject(false);\n private _isLg$ = new BehaviorSubject(false);\n private _isXl$ = new BehaviorSubject(false);\n private _is2Xl$ = new BehaviorSubject(false);\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 currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(\n map((val) => this.getCurrentViewport(val)),\n shareReplay(),\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 @Inject(VIEWPORT_CONFIG) @Optional() _viewportConfig: ViewportConfig | null,\n private _breakpointObserver: BreakpointObserver,\n ) {\n this._viewportConfig = _viewportConfig || DEFAULT_VIEWPORT_CONFIG;\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(),\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 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 private _getViewportSize(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 @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._getViewportSize(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._getViewportSize(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 { 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 { DestroyService } from '../../services';\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 DestroyService,\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$ = inject(DestroyService, { host: true }).destroy$;\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly _animationStart$ = new Subject<void>();\n private readonly _animationEnd$ = 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) {\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\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 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 { Directive, ElementRef, inject, InjectionToken, isDevMode } from '@angular/core';\nimport { BehaviorSubject, map, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { DestroyService } from '../../services';\nimport { createReactiveBindings, forceReflow, fromNextFrame } from '../../utils';\nimport { AnimatableDirective, ANIMATABLE_TOKEN } 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\n@Directive({\n selector: '[etAnimatedLifecycle]',\n exportAs: 'etAnimatedLifecycle',\n standalone: true,\n providers: [\n {\n provide: ANIMATED_LIFECYCLE_TOKEN,\n useExisting: AnimatedLifecycleDirective,\n },\n DestroyService,\n ],\n hostDirectives: [AnimatableDirective],\n})\nexport class AnimatedLifecycleDirective {\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\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 _state$ = new BehaviorSubject<'entering' | 'entered' | 'leaving' | 'left' | 'init'>('init');\n readonly state$ = this._state$.asObservable();\n\n get state() {\n return this._state$.value;\n }\n\n private readonly _bindings = createReactiveBindings({\n attribute: 'class.et-force-invisible',\n observable: this._state$.pipe(map((state) => state === 'init')),\n });\n\n enter(config?: { onlyTransition?: boolean }) {\n if (this.state !== 'init' && this.state !== 'left' && isDevMode()) {\n console.warn(\n 'Tried to enter but the element is not in the initial state. This may result in unexpected behavior.',\n this,\n );\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) {\n this._classList.remove(ANIMATION_CLASSES.enterFrom);\n this._classList.add(ANIMATION_CLASSES.enterTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\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 !== 'entered' && this.state !== 'entering' && isDevMode()) {\n console.warn('Tried to leave while already leaving or left. This may result in unexpected behavior.', this);\n }\n\n if (\n this._classList.contains(ANIMATION_CLASSES.enterFrom) ||\n this._classList.contains(ANIMATION_CLASSES.enterActive) ||\n this._classList.contains(ANIMATION_CLASSES.enterTo)\n ) {\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) {\n this._classList.remove(ANIMATION_CLASSES.leaveFrom);\n this._classList.add(ANIMATION_CLASSES.leaveTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\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","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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, Directive, ElementRef, inject, Input } from '@angular/core';\nimport { combineLatest, debounceTime, fromEvent, startWith, Subject, Subscription, take, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, DestroyService, ResizeObserverService } from '../../services';\nimport { 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 providers: [DestroyService],\n})\nexport class CursorDragScrollDirective implements AfterViewInit {\n private readonly _subscriptions: Subscription[] = [];\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\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: BooleanInput) {\n this._enabled = coerceBooleanProperty(value);\n\n if (this._enabled) {\n this._enableCursorDragScroll();\n } else {\n this._disableCursorDragScroll();\n }\n }\n private _enabled = false;\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 if (Math.abs(dx) > this._bufferUntilScroll || Math.abs(dy) > this._bufferUntilScroll) {\n const element = this._elementRef.nativeElement;\n\n if (!this._isScrolling) {\n this._isScrolling = true;\n\n element.style.cursor = 'grabbing';\n element.classList.add(CURSOR_DRAG_SCROLLING_CLASS);\n element.scroll({\n top: this._currentScrollState.top - dy,\n left: this._currentScrollState.left - dx,\n behavior: 'smooth',\n });\n } else {\n element.scrollTop = this._currentScrollState.top - dy;\n element.scrollLeft = this._currentScrollState.left - dx;\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 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\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","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 } from '@angular/core';\nimport { LetContext } from './let.types';\n\n@Directive({\n selector: '[etLet]',\n standalone: true,\n})\nexport class LetDirective<T = unknown> {\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: TemplateRef<LetContext<T>> | null = null;\n private _viewRef: EmbeddedViewRef<LetContext<T>> | null = null;\n\n constructor(private _viewContainer: ViewContainerRef, templateRef: TemplateRef<LetContext<T>>) {\n this._templateRef = templateRef;\n }\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 { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\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: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n private _disabled = false;\n\n @Input('etObserveContentDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: NumberInput) {\n this._debounce = coerceNumberProperty(value);\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 { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\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: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n private _disabled = false;\n\n @Input('etObserveResizeDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: NumberInput) {\n this._debounce = coerceNumberProperty(value);\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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, HostBinding, Input } 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('etScrollObserverFirstElement')\n @HostBinding(`class.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`)\n get isFirstElement(): boolean {\n return this._isFirstElement;\n }\n set isFirstElement(value: BooleanInput) {\n this._isFirstElement = coerceBooleanProperty(value);\n }\n private _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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, HostBinding, Input } 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('etScrollObserverLastElement')\n @HostBinding(`class.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`)\n get isLastElement(): boolean {\n return this._isLastElement;\n }\n set isLastElement(value: BooleanInput) {\n this._isLastElement = coerceBooleanProperty(value);\n }\n private _isLastElement = false;\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 { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, EventEmitter, inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { debounceTime, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, DestroyService, ResizeObserverService } from '../../services';\nimport { 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 { ObservedScrollableChild, ScrollObserverScrollState } from './observe-scroll-state.types';\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 DestroyService,\n ],\n})\nexport class ObserveScrollStateDirective implements OnInit, OnDestroy {\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\n\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _contentObserverService = inject(ContentObserverService);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n\n private readonly _observedChildren = {\n first: this._firstCurrentChild,\n last: this._lastCurrentChild,\n };\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()\n get observerRootMargin(): number {\n return this._rootMargin;\n }\n set observerRootMargin(value: NumberInput) {\n this._rootMargin = coerceNumberProperty(value);\n }\n private _rootMargin = 0;\n\n @Input()\n get observerThreshold(): number | number[] {\n return this._threshold;\n }\n set observerThreshold(value: NumberInput | number[]) {\n if (Array.isArray(value)) {\n this._threshold = value;\n return;\n }\n\n this._threshold = coerceNumberProperty(value);\n }\n private _threshold: number | number[] = [0.99999, 0.9999, 0.999, 0.99, 1];\n\n private _intersectionObserver: IntersectionObserver | null = null;\n\n @Output('etObserveScrollState')\n valueChange = new EventEmitter<ScrollObserverScrollState>();\n\n ngOnInit(): void {\n this._contentObserverService\n .observe(this._elementRef.nativeElement)\n .pipe(\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._unobserveChild('first');\n this._unobserveChild('last');\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._observeChild('first', this._firstCurrentChild);\n this._observeChild('last', this._lastCurrentChild);\n }\n }\n\n private _initiateIntersectionObserver() {\n const observer = new IntersectionObserver(\n (entries) => {\n const { first, last } = this._observedChildren;\n\n const isAtStart = entries.find((entry) => entry.target === first)?.isIntersecting ?? false;\n const isAtEnd = entries.find((entry) => entry.target === 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 _observeChild(child: ObservedScrollableChild, element: HTMLElement) {\n this._intersectionObserver?.observe(element);\n this._observedChildren[child] = element;\n\n element.classList.add(`et-scroll-observer-observing-${child}-element`);\n }\n\n private _unobserveChild(child: ObservedScrollableChild) {\n const observedChild = this._observedChildren[child];\n\n if (!observedChild) {\n return;\n }\n\n observedChild.classList.remove(\n 'et-scroll-observer-observing-first-element',\n 'et-scroll-observer-observing-last-element',\n );\n\n this._intersectionObserver?.unobserve(observedChild);\n this._observedChildren[child] = null;\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 { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Directive, Input, 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: NumberInput) {\n this._repeatCount = coerceNumberProperty(value);\n this._render();\n }\n private _repeatCount = 2;\n\n constructor(private _mainTemplateRef: TemplateRef<unknown>, private _viewContainerRef: ViewContainerRef) {}\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","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 { QueryList } 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 class TypedQueryList<T> extends QueryList<T | undefined> {\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 override toArray(): T[] {\n return super.toArray() as T[];\n }\n\n override forEach(fn: (item: T, index: number, array: T[]) => void): void {\n super.forEach(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => void);\n }\n\n override filter(fn: (item: T, index: number, array: T[]) => boolean): T[] {\n return super.filter(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => boolean) as T[];\n }\n\n override map<U>(fn: (item: T, index: number, array: T[]) => U): U[] {\n return super.map(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => U);\n }\n\n override reduce<U>(\n fn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U,\n initialValue: U,\n ): U {\n return super.reduce(\n fn as (previousValue: U, currentValue: T | undefined, currentIndex: number, array: (T | undefined)[]) => U,\n initialValue,\n );\n }\n\n override some(fn: (value: T, index: number, array: T[]) => boolean): boolean {\n return super.some(fn as (value: T | undefined, index: number, array: (T | undefined)[]) => boolean);\n }\n\n override find(fn: (value: T, index: number, array: T[]) => boolean): T | undefined {\n return super.find(fn as (value: T | undefined, index: number, array: (T | undefined)[]) => boolean);\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,4}$/;\n return regex.test(value) ? null : { [IS_EMAIL]: true };\n};\n","import { FormGroup } from '@angular/forms';\n\nexport const MUST_MATCH = 'mustMatch';\n\nexport const MustMatch = (controlName: string, matchingControlName: string) => {\n return (formGroup: FormGroup) => {\n const control = formGroup.controls[controlName];\n const matchingControl = formGroup.controls[matchingControlName];\n\n // set error on matchingControl if validation fails\n if (matchingControl.errors && !matchingControl.errors[MUST_MATCH]) {\n return;\n }\n\n // set error on matchingControl if validation fails\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({ [MUST_MATCH]: true });\n } else {\n matchingControl.setErrors(null);\n }\n };\n};\n","import { IsArrayNotEmpty } from './is-array-not-empty.validator';\nimport { IsEmail } from './is-email.validator';\nimport { MustMatch } from './must-match.validator';\n\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} as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AnimatableDirective","debounceTime"],"mappings":"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"}