@ethlete/core 0.2.0-next.6 → 0.2.0-next.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +3 -3
  2. package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +45 -21
  3. package/esm2020/lib/directives/destroy/destroy.directive.mjs +22 -0
  4. package/esm2020/lib/directives/destroy/public-api.mjs +2 -0
  5. package/esm2020/lib/directives/let/let.directive.mjs +3 -3
  6. package/esm2020/lib/directives/observe-content/observe-content.directive.mjs +3 -3
  7. package/esm2020/lib/directives/observe-resize/observe-resize.directive.mjs +3 -3
  8. package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +20 -5
  9. package/esm2020/lib/directives/public-api.mjs +9 -5
  10. package/esm2020/lib/directives/repeat/repeat.directive.mjs +3 -3
  11. package/esm2020/lib/directives/scroll-observer-first-element/index.mjs +2 -0
  12. package/esm2020/lib/directives/scroll-observer-first-element/public-api.mjs +2 -0
  13. package/esm2020/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +31 -0
  14. package/esm2020/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +3 -3
  15. package/esm2020/lib/directives/scroll-observer-last-element/index.mjs +2 -0
  16. package/esm2020/lib/directives/scroll-observer-last-element/public-api.mjs +2 -0
  17. package/esm2020/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +34 -0
  18. package/esm2020/lib/directives/seo/public-api.mjs +5 -0
  19. package/esm2020/lib/directives/seo/seo.directive.constants.mjs +3 -0
  20. package/esm2020/lib/directives/seo/seo.directive.mjs +162 -0
  21. package/esm2020/lib/directives/seo/seo.directive.types.mjs +2 -0
  22. package/esm2020/lib/directives/seo/seo.directive.utils.mjs +7 -0
  23. package/esm2020/lib/pipes/to-array/to-array.pipe.mjs +3 -3
  24. package/esm2020/lib/services/click-observer.service.mjs +6 -6
  25. package/esm2020/lib/services/content-observer.service.mjs +6 -6
  26. package/esm2020/lib/services/destroy.service.mjs +6 -11
  27. package/esm2020/lib/services/focus-visible.service.mjs +3 -3
  28. package/esm2020/lib/services/public-api.mjs +6 -6
  29. package/esm2020/lib/services/resize-observer.service.mjs +6 -6
  30. package/esm2020/lib/services/viewport.service.mjs +3 -3
  31. package/fesm2015/ethlete-core.mjs +775 -499
  32. package/fesm2015/ethlete-core.mjs.map +1 -1
  33. package/fesm2020/ethlete-core.mjs +771 -496
  34. package/fesm2020/ethlete-core.mjs.map +1 -1
  35. package/lib/directives/click-outside/click-outside.directive.d.ts +1 -1
  36. package/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.d.ts +8 -2
  37. package/lib/directives/destroy/destroy.directive.d.ts +9 -0
  38. package/lib/directives/destroy/public-api.d.ts +1 -0
  39. package/lib/directives/let/let.directive.d.ts +1 -1
  40. package/lib/directives/observe-content/observe-content.directive.d.ts +1 -1
  41. package/lib/directives/observe-resize/observe-resize.directive.d.ts +1 -1
  42. package/lib/directives/observe-scroll-state/observe-scroll-state.directive.d.ts +1 -1
  43. package/lib/directives/public-api.d.ts +8 -4
  44. package/lib/directives/repeat/repeat.directive.d.ts +1 -1
  45. package/lib/directives/scroll-observer-first-element/index.d.ts +1 -0
  46. package/lib/directives/scroll-observer-first-element/public-api.d.ts +1 -0
  47. package/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.d.ts +10 -0
  48. package/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.d.ts +1 -1
  49. package/lib/directives/scroll-observer-last-element/index.d.ts +1 -0
  50. package/lib/directives/scroll-observer-last-element/public-api.d.ts +1 -0
  51. package/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.d.ts +10 -0
  52. package/lib/directives/seo/public-api.d.ts +4 -0
  53. package/lib/directives/seo/seo.directive.constants.d.ts +3 -0
  54. package/lib/directives/seo/seo.directive.d.ts +21 -0
  55. package/lib/directives/seo/seo.directive.types.d.ts +51 -0
  56. package/lib/directives/seo/seo.directive.utils.d.ts +2 -0
  57. package/lib/services/destroy.service.d.ts +1 -1
  58. package/lib/services/public-api.d.ts +5 -5
  59. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"ethlete-core.mjs","sources":["../../../../libs/core/src/lib/constants/viewport.constants.ts","../../../../libs/core/src/lib/decorators/memo/memo.decorator.ts","../../../../libs/core/src/lib/directives/let/let.types.ts","../../../../libs/core/src/lib/directives/let/let.directive.ts","../../../../libs/core/src/lib/directives/repeat/repeat.directive.ts","../../../../libs/core/src/lib/services/viewport.service.ts","../../../../libs/core/src/lib/services/focus-visible.service.ts","../../../../libs/core/src/lib/services/resize-observer.service.ts","../../../../libs/core/src/lib/services/content-observer.service.ts","../../../../libs/core/src/lib/services/click-observer.service.ts","../../../../libs/core/src/lib/services/destroy.service.ts","../../../../libs/core/src/lib/directives/observe-resize/observe-resize.directive.ts","../../../../libs/core/src/lib/directives/observe-content/observe-content.directive.ts","../../../../libs/core/src/lib/directives/click-outside/click-outside.directive.ts","../../../../libs/core/src/lib/utils/viewport.util.ts","../../../../libs/core/src/lib/utils/clamp.util.ts","../../../../libs/core/src/lib/utils/scrollable.utils.ts","../../../../libs/core/src/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.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/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/pipes/to-array/to-array.util.ts","../../../../libs/core/src/lib/pipes/to-array/to-array.pipe.ts","../../../../libs/core/src/ethlete-core.ts"],"sourcesContent":["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","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 { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[etRepeat]',\n standalone: true,\n})\nexport class RepeatDirective implements OnInit {\n @Input('etRepeat')\n get repeatCount(): number {\n return this._repeatCount;\n }\n set repeatCount(value: NumberInput) {\n this._repeatCount = coerceNumberProperty(value);\n }\n private _repeatCount = 2;\n\n constructor(private _mainTemplateRef: TemplateRef<unknown>, private _viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n this._render();\n }\n\n private _render() {\n for (let i = 0; i < this.repeatCount; i++) {\n this._viewContainerRef.createEmbeddedView(this._mainTemplateRef);\n }\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 { 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","/* 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","/* 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","import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'any',\n})\nexport class DestroyService implements OnDestroy {\n private readonly _destroy$ = new Subject<boolean>();\n\n get destroy$() {\n return this._destroy$.asObservable();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next(true);\n this._destroy$.unsubscribe();\n }\n}\n","import { coerceBooleanProperty, coerceNumberProperty, BooleanInput, 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, debounceTime } from 'rxjs';\nimport { ResizeObserverService } from '../../services';\n\n@Directive({\n selector: '[etObserveResize]',\n exportAs: 'etObserveResize',\n standalone: true,\n})\nexport class ObserveResizeDirective implements AfterContentInit, OnDestroy {\n private _resizeObserver = inject(ResizeObserverService);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n @Output('etObserveResize')\n readonly event = 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.event,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\n","import { coerceBooleanProperty, coerceNumberProperty, BooleanInput, 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 event = 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.event,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\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","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","export const clamp = (value: number, min = 0, max = 100) => {\n return Math.max(min, Math.min(max, value));\n};\n","export const elementCanScroll = (element: HTMLElement) => {\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;\n\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\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 { 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_IGNORE_TARGET_CLASS } from '../scroll-observer-ignore-target';\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 ],\n})\nexport class ObserveScrollStateDirective implements OnInit, OnDestroy {\n private readonly _destroy$ = inject(DestroyService).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 element = this._elementRef.nativeElement.children[0] as HTMLElement | null;\n\n return this._getNonIgnoredChild(element, 'next');\n }\n\n private get _lastCurrentChild() {\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()\n etObserveScrollState = 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 if (!this._intersectionObserver && elementCanScroll(this._elementRef.nativeElement)) {\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.etObserveScrollState.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.etObserveScrollState.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\n private _unobserveChild(child: ObservedScrollableChild) {\n const observedChild = this._observedChildren[child];\n\n if (!observedChild) {\n return;\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","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 { AfterViewInit, Directive, ElementRef, inject } from '@angular/core';\nimport { combineLatest, fromEvent, Subject, 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})\nexport class CursorDragScrollDirective implements AfterViewInit {\n private readonly _destroy$ = inject(DestroyService).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 ngAfterViewInit(): void {\n combineLatest([\n this._contentObserverService.observe(this._elementRef.nativeElement),\n this._resizeObserverService.observe(this._elementRef.nativeElement),\n ])\n .pipe(\n tap(() => this._updateCanScrollState()),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n fromEvent<MouseEvent>(this._elementRef.nativeElement, 'mousedown')\n .pipe(\n tap((e) => this._onMouseDown(e)),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._updateCanScrollState();\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 private _checkCanScroll() {\n if (this._elementRef.nativeElement.scrollWidth > this._elementRef.nativeElement.clientWidth) {\n return true;\n }\n if (this._elementRef.nativeElement.scrollHeight > this._elementRef.nativeElement.clientHeight) {\n return true;\n }\n\n return false;\n }\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["debounceTime"],"mappings":"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"}
1
+ {"version":3,"file":"ethlete-core.mjs","sources":["../../../../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/services/viewport.service.ts","../../../../libs/core/src/lib/directives/click-outside/click-outside.directive.ts","../../../../libs/core/src/lib/utils/viewport.util.ts","../../../../libs/core/src/lib/utils/clamp.util.ts","../../../../libs/core/src/lib/utils/scrollable.utils.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/destroy/destroy.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/to-array/to-array.util.ts","../../../../libs/core/src/lib/pipes/to-array/to-array.pipe.ts","../../../../libs/core/src/ethlete-core.ts"],"sourcesContent":["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 { 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, 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","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","export const clamp = (value: number, min = 0, max = 100) => {\n return Math.max(min, Math.min(max, value));\n};\n","export const elementCanScroll = (element: HTMLElement) => {\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;\n\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\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).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","import { Directive, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Directive({\n standalone: true,\n})\nexport class DestroyDirective 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","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 { coerceBooleanProperty, coerceNumberProperty, BooleanInput, 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 event = 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.event,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\n","import { coerceBooleanProperty, coerceNumberProperty, BooleanInput, 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, debounceTime } from 'rxjs';\nimport { ResizeObserverService } from '../../services';\n\n@Directive({\n selector: '[etObserveResize]',\n exportAs: 'etObserveResize',\n standalone: true,\n})\nexport class ObserveResizeDirective implements AfterContentInit, OnDestroy {\n private _resizeObserver = inject(ResizeObserverService);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n @Output('etObserveResize')\n readonly event = 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.event,\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).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()\n etObserveScrollState = 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.etObserveScrollState.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.etObserveScrollState.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, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[etRepeat]',\n standalone: true,\n})\nexport class RepeatDirective implements OnInit {\n @Input('etRepeat')\n get repeatCount(): number {\n return this._repeatCount;\n }\n set repeatCount(value: NumberInput) {\n this._repeatCount = coerceNumberProperty(value);\n }\n private _repeatCount = 2;\n\n constructor(private _mainTemplateRef: TemplateRef<unknown>, private _viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n this._render();\n }\n\n private _render() {\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 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 { 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["debounceTime"],"mappings":"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"}