@ethlete/core 5.0.0-next.56 → 5.0.0-next.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, ElementRef, isDevMode, Directive, assertInInjectionContext, DestroyRef, TemplateRef, QueryList, RendererFactory2, RendererStyleFlags2, isSignal, DOCUMENT, signal, linkedSignal, computed, afterNextRender, effect, untracked, EnvironmentInjector, runInInjectionContext, NgZone, Injector, booleanAttribute, numberAttribute, PLATFORM_ID, ApplicationRef, createComponent, model, ViewContainerRef, input, ViewEncapsulation, Component, provideEnvironmentInitializer, output, createEnvironmentInjector, Pipe, afterEveryRender } from '@angular/core';
2
+ import { assertInInjectionContext, inject, DestroyRef, ElementRef, TemplateRef, InjectionToken, QueryList, RendererFactory2, RendererStyleFlags2, isSignal, DOCUMENT, signal, linkedSignal, isDevMode, computed, afterNextRender, effect, untracked, ApplicationRef, runInInjectionContext, NgZone, Injector, booleanAttribute, numberAttribute, PLATFORM_ID, EnvironmentInjector, createComponent, ViewEncapsulation, Component, Directive, model, ViewContainerRef, input, provideEnvironmentInitializer, output, createEnvironmentInjector, Pipe, afterEveryRender } from '@angular/core';
3
3
  import { takeUntilDestroyed, toSignal, toObservable, outputFromObservable } from '@angular/core/rxjs-interop';
4
- import { Subject, BehaviorSubject, debounceTime, combineLatest, map, merge, fromEvent, filter, tap, switchMap, startWith, of, defer, from, catchError, timer, takeUntil, pairwise, distinctUntilChanged, EMPTY, take, Observable, isObservable, firstValueFrom, defaultIfEmpty, concatMap, concat, finalize, exhaustMap, share, shareReplay } from 'rxjs';
4
+ import { Subject, fromEvent, switchMap, startWith, of, defer, from, map, catchError, timer, takeUntil, pairwise, debounceTime, merge, distinctUntilChanged, EMPTY, expand, skip, tap, take, filter, BehaviorSubject, combineLatest, Observable, isObservable, firstValueFrom, defaultIfEmpty, concatMap, concat, finalize, exhaustMap, share, shareReplay } from 'rxjs';
5
5
  import { FormGroup, FormArray, FormControl } from '@angular/forms';
6
6
  import { SIGNAL, signalSetFn } from '@angular/core/primitives/signals';
7
7
  import { isPlatformBrowser, DOCUMENT as DOCUMENT$1 } from '@angular/common';
@@ -33,122 +33,6 @@ const animationDebugLog = (scope, ...args) => {
33
33
  console.log(`\x1B[36m[et-overlay-debug ${timestamp}ms | ${scope}]\x1B[m`, ...args);
34
34
  };
35
35
 
36
- const ANIMATABLE_TOKEN = new InjectionToken('ANIMATABLE_DIRECTIVE_TOKEN');
37
- class AnimatableDirective {
38
- constructor() {
39
- this.parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });
40
- this.elementRef = inject(ElementRef);
41
- this.animationStartSubject$ = new Subject();
42
- this.animationEndSubject$ = new Subject();
43
- this.activeAnimationCount = 0;
44
- this.hostActiveAnimationCount$ = new BehaviorSubject(0);
45
- this.animationStart$ = this.animationStartSubject$.asObservable().pipe(debounceTime(0));
46
- this.animationEnd$ = this.animationEndSubject$.asObservable().pipe(debounceTime(0));
47
- this.totalActiveAnimationCount$ = this.parent
48
- ? combineLatest([this.parent.totalActiveAnimationCount$, this.hostActiveAnimationCount$]).pipe(map(([parentCount, hostCount]) => Math.max(0, parentCount + hostCount)))
49
- : this.hostActiveAnimationCount$.pipe(map((count) => Math.max(0, count)));
50
- this.isAnimating$ = this.totalActiveAnimationCount$.pipe(map((count) => count > 0));
51
- let didEmitStart = false;
52
- const el = this.elementRef.nativeElement;
53
- merge(merge(fromEvent(el, 'animationstart'), fromEvent(el, 'transitionrun')).pipe(filter((e) => e.target === el && !e.pseudoElement), map(() => 'start')), merge(fromEvent(el, 'animationend'), fromEvent(el, 'transitionend')).pipe(filter((e) => e.target === el && !e.pseudoElement), map(() => 'end')), merge(fromEvent(el, 'animationcancel'), fromEvent(el, 'transitioncancel')).pipe(filter((e) => e.target === el && !e.pseudoElement), map(() => 'cancel')))
54
- .pipe(tap((eventType) => {
55
- switch (eventType) {
56
- case 'start': {
57
- const startingNewBatch = this.activeAnimationCount === 0;
58
- this.updateActiveAnimationCount(1);
59
- if (startingNewBatch) {
60
- this.activeBatchTransitionId = this.pendingTransitionId;
61
- this.pendingTransitionId = undefined;
62
- }
63
- animationDebugLog(`animatable ${el.tagName.toLowerCase()}`, `start (count ${this.activeAnimationCount}, batch "${this.activeBatchTransitionId}", pending "${this.pendingTransitionId ?? 'none'}")`);
64
- if (!didEmitStart) {
65
- didEmitStart = true;
66
- this.animationStartSubject$.next();
67
- }
68
- break;
69
- }
70
- case 'end':
71
- case 'cancel': {
72
- if (this.activeAnimationCount > 0) {
73
- this.updateActiveAnimationCount(-1);
74
- animationDebugLog(`animatable ${el.tagName.toLowerCase()}`, `${eventType} (count ${this.activeAnimationCount}, batch "${this.activeBatchTransitionId}")`);
75
- if (this.activeAnimationCount === 0 && didEmitStart) {
76
- didEmitStart = false;
77
- this.animationEndSubject$.next({
78
- cancelled: eventType === 'cancel',
79
- transitionId: this.activeBatchTransitionId,
80
- });
81
- this.activeBatchTransitionId = undefined;
82
- }
83
- }
84
- else {
85
- animationDebugLog(`animatable ${el.tagName.toLowerCase()}`, `${eventType} ignored - count already 0 (start ${didEmitStart ? '' : 'not '}emitted)`);
86
- if (isDevMode()) {
87
- console.warn(`${el.tagName} received animation end/cancel event but activeAnimationCount is already 0. Start was ${didEmitStart ? '' : 'not '}emitted.`);
88
- }
89
- }
90
- break;
91
- }
92
- }
93
- }), takeUntilDestroyed())
94
- .subscribe();
95
- }
96
- /**
97
- * Labels the next batch of animations that starts on this element. Only the most recent id is
98
- * kept: a call whose animations never start must not leave an id behind for a later batch.
99
- */
100
- setTransitionId(id) {
101
- this.pendingTransitionId = id;
102
- }
103
- /**
104
- * The animations running on this element right now, without the endless and pseudo-element ones.
105
- *
106
- * Reading this flushes pending style changes, so an animation a class change started in the same
107
- * task is already listed here. `isAnimating$` cannot answer that: it turns true only once the
108
- * browser dispatches `transitionrun`, a frame after the style change is committed.
109
- */
110
- getRunningAnimations() {
111
- const el = this.elementRef.nativeElement;
112
- if (typeof el.getAnimations !== 'function')
113
- return [];
114
- return el.getAnimations().filter((animation) => {
115
- if (animation.playState !== 'running')
116
- return false;
117
- const effect = animation.effect;
118
- if (!effect || effect.pseudoElement)
119
- return false;
120
- // An endless animation never resolves `finished`, so awaiting one would strand the transition.
121
- return effect.getComputedTiming().iterations !== Infinity;
122
- });
123
- }
124
- updateActiveAnimationCount(delta) {
125
- const newVal = this.activeAnimationCount + delta;
126
- const clampedVal = Math.max(0, newVal);
127
- this.activeAnimationCount = clampedVal;
128
- this.hostActiveAnimationCount$.next(clampedVal);
129
- }
130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AnimatableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
131
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: AnimatableDirective, isStandalone: true, selector: "[etAnimatable]", providers: [
132
- {
133
- provide: ANIMATABLE_TOKEN,
134
- useExisting: AnimatableDirective,
135
- },
136
- ], exportAs: ["etAnimatable"], ngImport: i0 }); }
137
- }
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AnimatableDirective, decorators: [{
139
- type: Directive,
140
- args: [{
141
- selector: '[etAnimatable]',
142
- exportAs: 'etAnimatable',
143
- providers: [
144
- {
145
- provide: ANIMATABLE_TOKEN,
146
- useExisting: AnimatableDirective,
147
- },
148
- ],
149
- }]
150
- }], ctorParameters: () => [] });
151
-
152
36
  const componentIds = /* @__PURE__ */ new Map();
153
37
  const createComponentId = (prefix) => {
154
38
  const id = componentIds.get(prefix) ?? 0;
@@ -574,20 +458,22 @@ function find(iter, tar, key) {
574
458
  return key;
575
459
  }
576
460
  }
461
+ /** A constructor check misses a Date from another realm, or one created under a faked global `Date`. */
462
+ const isDate = (value) => Object.prototype.toString.call(value) === '[object Date]';
577
463
  const equal = (foo, bar) => {
578
464
  var ctor;
579
465
  var len;
580
466
  var tmp;
581
467
  if (foo === bar)
582
468
  return true;
469
+ if (isDate(foo) || isDate(bar))
470
+ return isDate(foo) && isDate(bar) && foo.getTime() === bar.getTime();
583
471
  if (foo &&
584
472
  bar &&
585
473
  ((ctor = foo.constructor) === bar.constructor ||
586
474
  (!ctor && bar.constructor === Object) ||
587
475
  (ctor === Object && !bar.constructor))) {
588
476
  ctor ??= bar.constructor;
589
- if (ctor === Date)
590
- return foo.getTime() === bar.getTime();
591
477
  if (ctor === RegExp)
592
478
  return foo.toString() === bar.toString();
593
479
  if (ctor === Array) {
@@ -695,7 +581,7 @@ const setCookie = (name, data, expiresInDays, domain = getDomain(), path = '/',
695
581
  cookieString += `; domain=${domain}`;
696
582
  }
697
583
  cookieString += `; SameSite=${sameSiteUpper}`;
698
- if (sameSite === 'none' || window.location.protocol === 'https:') {
584
+ if (sameSite === 'none' || (typeof window !== 'undefined' && window.location.protocol === 'https:')) {
699
585
  cookieString += '; Secure';
700
586
  }
701
587
  cookieString += ';';
@@ -712,7 +598,7 @@ const deleteCookie = (name, path = '/', domain = getDomain()) => {
712
598
  }
713
599
  };
714
600
  const getDomain = () => {
715
- if (typeof navigator === 'undefined') {
601
+ if (typeof window === 'undefined') {
716
602
  return null;
717
603
  }
718
604
  const hostname = window.location.hostname;
@@ -1181,7 +1067,10 @@ const deferredSignal = (valueFn) => {
1181
1067
  const memoizeSignal = (factory) => {
1182
1068
  const cache = new WeakMap();
1183
1069
  return () => {
1184
- const envInjector = inject(EnvironmentInjector);
1070
+ // The application's root injector, not the nearest one: an overlay runs its content in an
1071
+ // environment injector of its own, and keying on that would build a second observer - plus, for
1072
+ // the scrollbar ruler, a second element in `<body>` - for every open overlay.
1073
+ const envInjector = inject(ApplicationRef).injector;
1185
1074
  let cached = cache.get(envInjector);
1186
1075
  if (!cached) {
1187
1076
  cached = runInInjectionContext(envInjector, factory);
@@ -1226,7 +1115,8 @@ const signalElementDimensions = (el) => {
1226
1115
  const zone = inject(NgZone);
1227
1116
  const isRendered = signalIsRendered();
1228
1117
  const initialValue = () => createElementDimensions(firstEl().currentElement);
1229
- const elementDimensionsSignal = signal(initialValue(), /* @ts-ignore */
1118
+ // A viewChild.required throws NG0951 until the view exists, so the element is first read in the effect.
1119
+ const elementDimensionsSignal = signal(createElementDimensions(null), /* @ts-ignore */
1230
1120
  ...(ngDevMode ? [{ debugName: "elementDimensionsSignal" }] : /* istanbul ignore next */ []));
1231
1121
  let observer = null;
1232
1122
  effect(() => {
@@ -1889,6 +1779,59 @@ const controlValueSignalWithPrevious = (control, options) => {
1889
1779
  return data.asReadonly();
1890
1780
  };
1891
1781
 
1782
+ const SECOND_MS = 1000;
1783
+ const toTimestamp = (deadline) => {
1784
+ if (deadline === null || deadline === undefined || deadline === '')
1785
+ return null;
1786
+ const timestamp = new Date(deadline).getTime();
1787
+ return Number.isNaN(timestamp) ? null : timestamp;
1788
+ };
1789
+ const toCountdown = (remainingMs) => {
1790
+ const totalSeconds = Math.max(0, Math.ceil(remainingMs / SECOND_MS));
1791
+ return {
1792
+ totalSeconds,
1793
+ days: Math.floor(totalSeconds / 86_400),
1794
+ hours: Math.floor((totalSeconds % 86_400) / 3600),
1795
+ minutes: Math.floor((totalSeconds % 3600) / 60),
1796
+ seconds: totalSeconds % 60,
1797
+ hasPassed: totalSeconds === 0,
1798
+ };
1799
+ };
1800
+ /**
1801
+ * The time left until `deadline`, recounted on every whole second and broken down into days, hours, minutes
1802
+ * and seconds. `null` while the deadline is missing or not a valid date. The timer stops once the deadline
1803
+ * has passed, and never runs on the server.
1804
+ *
1805
+ * Call in an injection context.
1806
+ *
1807
+ * ```ts
1808
+ * protected timeLeft = signalCountdown(computed(() => this.round()?.startsAt));
1809
+ * ```
1810
+ */
1811
+ const signalCountdown = (deadline) => {
1812
+ const end = computed(() => toTimestamp(deadline()), /* @ts-ignore */
1813
+ ...(ngDevMode ? [{ debugName: "end" }] : /* istanbul ignore next */ []));
1814
+ const tick = signal(0, /* @ts-ignore */
1815
+ ...(ngDevMode ? [{ debugName: "tick" }] : /* istanbul ignore next */ []));
1816
+ if (isPlatformBrowser(inject(PLATFORM_ID))) {
1817
+ toObservable(end)
1818
+ .pipe(switchMap((endsAt) => {
1819
+ if (endsAt === null)
1820
+ return EMPTY;
1821
+ return of(null).pipe(expand(() => {
1822
+ const remainingMs = endsAt - Date.now();
1823
+ return remainingMs <= 0 ? EMPTY : timer(remainingMs % SECOND_MS || SECOND_MS);
1824
+ }), skip(1));
1825
+ }), takeUntilDestroyed())
1826
+ .subscribe(() => tick.update((count) => count + 1));
1827
+ }
1828
+ return computed(() => {
1829
+ tick();
1830
+ const endsAt = end();
1831
+ return endsAt === null ? null : toCountdown(endsAt - Date.now());
1832
+ });
1833
+ };
1834
+
1892
1835
  /**
1893
1836
  * Gates a loading indicator on a loading flag, so work that finishes quickly never flashes one: the
1894
1837
  * returned signal turns true only once `source` has been true for `delay` ms, and then stays true for
@@ -1940,20 +1883,19 @@ const signalElementMutations = (el, options) => {
1940
1883
  const firstEl = firstElementSignal(elements);
1941
1884
  const zone = inject(NgZone);
1942
1885
  const isRendered = signalIsRendered();
1943
- const elementMutationsSignal = signal(null, /* @ts-ignore */
1886
+ const elementMutationsSignal = signal([], /* @ts-ignore */
1944
1887
  ...(ngDevMode ? [{ debugName: "elementMutationsSignal" }] : /* istanbul ignore next */ []));
1945
1888
  let observer = null;
1946
1889
  effect(() => {
1947
1890
  const els = firstEl();
1948
1891
  const rendered = isRendered();
1949
- elementMutationsSignal.set(null);
1892
+ elementMutationsSignal.set([]);
1950
1893
  if (!rendered || typeof MutationObserver === 'undefined') {
1951
1894
  return;
1952
1895
  }
1953
- observer ??= new MutationObserver((entries) => {
1954
- const entry = entries[0];
1955
- if (entry) {
1956
- zone.run(() => elementMutationsSignal.set(entry));
1896
+ observer ??= new MutationObserver((records) => {
1897
+ if (records.length) {
1898
+ zone.run(() => elementMutationsSignal.set(records));
1957
1899
  }
1958
1900
  });
1959
1901
  observer.disconnect();
@@ -2770,6 +2712,9 @@ const useCursorDragScroll = (el, options) => {
2770
2712
  }, /* @ts-ignore */
2771
2713
  ...(ngDevMode ? [{ debugName: "measuredCanScroll" }] : /* istanbul ignore next */ []));
2772
2714
  const canScroll = suppliedCanScroll ?? measuredCanScroll;
2715
+ // A host destroyed mid-drag never re-runs the styling effect, so the grabbing cursor it wrote on
2716
+ // `<html>` would outlive the page it was dragged on.
2717
+ destroyRef.onDestroy(() => renderer.removeStyle(document.documentElement, 'cursor'));
2773
2718
  // Cleanup if the element the cursor drag scroll is bound to gets changed
2774
2719
  effect(() => {
2775
2720
  const { previousElement } = element();
@@ -2879,10 +2824,10 @@ const useCursorDragScroll = (el, options) => {
2879
2824
  if (!el)
2880
2825
  return;
2881
2826
  mouseMove
2882
- .pipe(takeUntilDestroyed(destroyRef), takeUntil(dragEnd), tap((e) => updateDragging(e)))
2827
+ .pipe(takeUntil(dragEnd), tap((e) => updateDragging(e)), takeUntilDestroyed(destroyRef))
2883
2828
  .subscribe();
2884
2829
  dragEnd
2885
- .pipe(take(1), takeUntilDestroyed(destroyRef), tap(() => updateDraggingEnd()))
2830
+ .pipe(take(1), tap(() => updateDraggingEnd()), takeUntilDestroyed(destroyRef))
2886
2831
  .subscribe();
2887
2832
  initialDragPosition.set({ x: e.clientX, y: e.clientY });
2888
2833
  initialScrollPosition.set({ x: el.scrollLeft, y: el.scrollTop });
@@ -2923,13 +2868,15 @@ const injectRouterEvent = /* @__PURE__ */ memoizeSignal(() => {
2923
2868
  });
2924
2869
  /**
2925
2870
  * Signal that indicates whether the router has been initialized.
2926
- * The router is considered initialized once the first NavigationEnd event with an id different than -1 has been emitted.
2871
+ * The router is considered initialized once its first navigation has completed, including one that completed
2872
+ * before this signal was first injected.
2927
2873
  */
2928
2874
  const injectIsRouterInitialized = /* @__PURE__ */ memoizeSignal(() => {
2929
2875
  const event = injectRouterEvent();
2876
+ const navigatedBefore = inject(Router).navigated;
2930
2877
  return computed(() => {
2931
2878
  const e = event();
2932
- return (e instanceof NavigationEnd && e.id !== -1) || e instanceof NavigationSkipped;
2879
+ return navigatedBefore || (e instanceof NavigationEnd && e.id !== -1) || e instanceof NavigationSkipped;
2933
2880
  });
2934
2881
  });
2935
2882
  /**
@@ -3219,6 +3166,16 @@ const serializeQueryParams = (queryParams) => Object.keys(queryParams)
3219
3166
  .sort()
3220
3167
  .map((key) => `${key}=${queryParams[key]}`)
3221
3168
  .join('&');
3169
+ // Two navigations that matched the same route definition get the same object back, which is what
3170
+ // tells `/detail/1` -> `/detail/2` apart from `/list` -> `/detail/1`.
3171
+ const getDeepestRouteConfig = (router) => {
3172
+ let route = router.routerState.snapshot.root;
3173
+ while (route.firstChild) {
3174
+ route = route.firstChild;
3175
+ }
3176
+ return route.routeConfig;
3177
+ };
3178
+ const didPathParamsChange = (prevParams, currParams) => [...new Set(Object.keys(prevParams).concat(Object.keys(currParams)))].some((key) => prevParams[key] !== currParams[key]);
3222
3179
  const setupScrollRestoration = (config = {}) => {
3223
3180
  if (!isPlatformBrowser(inject(PLATFORM_ID))) {
3224
3181
  return;
@@ -3250,7 +3207,11 @@ const setupScrollRestoration = (config = {}) => {
3250
3207
  let restoredNavigationId = null;
3251
3208
  let isPopstate = false;
3252
3209
  let wantsRestore = false;
3253
- let prev = { state: createRouterState(router), route: createRoute(router) };
3210
+ let prev = {
3211
+ state: createRouterState(router),
3212
+ route: createRoute(router),
3213
+ routeConfig: getDeepestRouteConfig(router),
3214
+ };
3254
3215
  let pendingRestore = null;
3255
3216
  const cancelPendingRestore = () => {
3256
3217
  pendingRestore?.();
@@ -3364,9 +3325,14 @@ const setupScrollRestoration = (config = {}) => {
3364
3325
  wantsRestore = !isPopstate && navigationState?.[ET_RESTORE_SCROLL] === true;
3365
3326
  };
3366
3327
  const onNavigationEnd = (event) => {
3367
- const curr = { state: createRouterState(router), route: createRoute(router) };
3328
+ const curr = {
3329
+ state: createRouterState(router),
3330
+ route: createRoute(router),
3331
+ routeConfig: getDeepestRouteConfig(router),
3332
+ };
3368
3333
  const prevState = prev.state;
3369
3334
  const currState = curr.state;
3335
+ const sameRouteConfig = prev.routeConfig !== null && prev.routeConfig === curr.routeConfig;
3370
3336
  const sameUrlNavigation = prev.route === curr.route;
3371
3337
  const didFragmentChange = prevState.fragment !== currState.fragment;
3372
3338
  prev = curr;
@@ -3419,7 +3385,9 @@ const setupScrollRestoration = (config = {}) => {
3419
3385
  else {
3420
3386
  const viaReturnRoute = currState.data[ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE] && prevState.data[ET_DISABLE_SCROLL_TOP];
3421
3387
  const explicitly = currState.data[ET_DISABLE_SCROLL_TOP];
3422
- const pathParamsChange = currState.data[ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE];
3388
+ const pathParamsChange = currState.data[ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE] &&
3389
+ sameRouteConfig &&
3390
+ didPathParamsChange(prevState.pathParams, currState.pathParams);
3423
3391
  if (viaReturnRoute || explicitly || pathParamsChange) {
3424
3392
  return;
3425
3393
  }
@@ -4326,7 +4294,7 @@ const FOCUS_VISIBLE_TRACKER_DEF = /* @__PURE__ */ defineRootProvider(() => {
4326
4294
  ...(ngDevMode ? [{ debugName: "isFocusVisible" }] : /* istanbul ignore next */ []));
4327
4295
  let hadKeyboardEvent = false;
4328
4296
  const onKeyDown = (e) => {
4329
- if (e.metaKey || e.altKey || e.ctrlKey || ['Shift', 'Meta', 'Alt', 'Control'].includes(e.key))
4297
+ if (e.metaKey || e.altKey || e.ctrlKey || ['Meta', 'Alt', 'Control'].includes(e.key))
4330
4298
  return;
4331
4299
  hadKeyboardEvent = true;
4332
4300
  queueMicrotask(() => isFocusVisible.set(true));
@@ -4503,6 +4471,140 @@ const createUserConsentProvider = (options) => ({
4503
4471
  }),
4504
4472
  });
4505
4473
 
4474
+ /**
4475
+ * Declares the `--ease-*` custom properties that every animated stylesheet in the SDK
4476
+ * transitions with, as a styles-only component. Mount it from any component or directive whose
4477
+ * CSS reads one - without the declaration the whole `transition` shorthand is invalid at
4478
+ * computed-value time and the element snaps instead of animating.
4479
+ */
4480
+ class EasingTokensStylesComponent {
4481
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: EasingTokensStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4482
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: EasingTokensStylesComponent, isStandalone: true, selector: "et-easing-tokens-styles", ngImport: i0, template: '', isInline: true, styles: ["@layer components{:where(html){--ease-1: cubic-bezier(.25, 0, .5, 1);--ease-2: cubic-bezier(.25, 0, .4, 1);--ease-3: cubic-bezier(.25, 0, .3, 1);--ease-4: cubic-bezier(.25, 0, .2, 1);--ease-5: cubic-bezier(.25, 0, .1, 1);--ease-in-1: cubic-bezier(.25, 0, 1, 1);--ease-in-2: cubic-bezier(.5, 0, 1, 1);--ease-in-3: cubic-bezier(.7, 0, 1, 1);--ease-in-4: cubic-bezier(.9, 0, 1, 1);--ease-in-5: cubic-bezier(1, 0, 1, 1);--ease-out-1: cubic-bezier(0, 0, .75, 1);--ease-out-2: cubic-bezier(0, 0, .5, 1);--ease-out-3: cubic-bezier(0, 0, .3, 1);--ease-out-4: cubic-bezier(0, 0, .1, 1);--ease-out-5: cubic-bezier(0, 0, 0, 1);--ease-in-out-1: cubic-bezier(.1, 0, .9, 1);--ease-in-out-2: cubic-bezier(.3, 0, .7, 1);--ease-in-out-3: cubic-bezier(.5, 0, .5, 1);--ease-in-out-4: cubic-bezier(.7, 0, .3, 1);--ease-in-out-5: cubic-bezier(.9, 0, .1, 1);--ease-elastic-1: cubic-bezier(.5, .75, .75, 1.25);--ease-elastic-2: cubic-bezier(.5, 1, .75, 1.25);--ease-elastic-3: cubic-bezier(.5, 1.25, .75, 1.25);--ease-elastic-4: cubic-bezier(.5, 1.5, .75, 1.25);--ease-elastic-5: cubic-bezier(.5, 1.75, .75, 1.25);--ease-squish-1: cubic-bezier(.5, -.1, .1, 1.5);--ease-squish-2: cubic-bezier(.5, -.3, .1, 1.5);--ease-squish-3: cubic-bezier(.5, -.5, .1, 1.5);--ease-squish-4: cubic-bezier(.5, -.7, .1, 1.5);--ease-squish-5: cubic-bezier(.5, -.9, .1, 1.5);--ease-step-1: steps(2);--ease-step-2: steps(3);--ease-step-3: steps(4);--ease-step-4: steps(7);--ease-step-5: steps(10);--ease-spring-1: linear( 0, .006, .025 2.8%, .101 6.1%, .539 18.9%, .721 25.3%, .849 31.5%, .937 38.1%, .968 41.8%, .991 45.7%, 1.006 50.1%, 1.015 55%, 1.017 63.9%, 1.001 );--ease-spring-2: linear( 0, .007, .029 2.2%, .118 4.7%, .625 14.4%, .826 19%, .902, .962, 1.008 26.1%, 1.041 28.7%, 1.064 32.1%, 1.07 36%, 1.061 40.5%, 1.015 53.4%, .999 61.6%, .995 71.2%, 1 );--ease-spring-3: linear( 0, .009, .035 2.1%, .141 4.4%, .723 12.9%, .938 16.7%, 1.017, 1.077, 1.121, 1.149 24.3%, 1.159, 1.163, 1.161, 1.154 29.9%, 1.129 32.8%, 1.051 39.6%, 1.017 43.1%, .991, .977 51%, .974 53.8%, .975 57.1%, .997 69.8%, 1.003 76.9%, 1 );--ease-spring-4: linear( 0, .009, .037 1.7%, .153 3.6%, .776 10.3%, 1.001, 1.142 16%, 1.185, 1.209 19%, 1.215 19.9% 20.8%, 1.199, 1.165 25%, 1.056 30.3%, 1.008 33%, .973, .955 39.2%, .953 41.1%, .957 43.3%, .998 53.3%, 1.009 59.1% 63.7%, .998 78.9%, 1 );--ease-spring-5: linear( 0, .01, .04 1.6%, .161 3.3%, .816 9.4%, 1.046, 1.189 14.4%, 1.231, 1.254 17%, 1.259, 1.257 18.6%, 1.236, 1.194 22.3%, 1.057 27%, .999 29.4%, .955 32.1%, .942, .935 34.9%, .933, .939 38.4%, 1 47.3%, 1.011, 1.017 52.6%, 1.016 56.4%, 1 65.2%, .996 70.2%, 1.001 87.2%, 1 )}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
4483
+ }
4484
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: EasingTokensStylesComponent, decorators: [{
4485
+ type: Component,
4486
+ args: [{ selector: 'et-easing-tokens-styles', template: '', encapsulation: ViewEncapsulation.None, styles: ["@layer components{:where(html){--ease-1: cubic-bezier(.25, 0, .5, 1);--ease-2: cubic-bezier(.25, 0, .4, 1);--ease-3: cubic-bezier(.25, 0, .3, 1);--ease-4: cubic-bezier(.25, 0, .2, 1);--ease-5: cubic-bezier(.25, 0, .1, 1);--ease-in-1: cubic-bezier(.25, 0, 1, 1);--ease-in-2: cubic-bezier(.5, 0, 1, 1);--ease-in-3: cubic-bezier(.7, 0, 1, 1);--ease-in-4: cubic-bezier(.9, 0, 1, 1);--ease-in-5: cubic-bezier(1, 0, 1, 1);--ease-out-1: cubic-bezier(0, 0, .75, 1);--ease-out-2: cubic-bezier(0, 0, .5, 1);--ease-out-3: cubic-bezier(0, 0, .3, 1);--ease-out-4: cubic-bezier(0, 0, .1, 1);--ease-out-5: cubic-bezier(0, 0, 0, 1);--ease-in-out-1: cubic-bezier(.1, 0, .9, 1);--ease-in-out-2: cubic-bezier(.3, 0, .7, 1);--ease-in-out-3: cubic-bezier(.5, 0, .5, 1);--ease-in-out-4: cubic-bezier(.7, 0, .3, 1);--ease-in-out-5: cubic-bezier(.9, 0, .1, 1);--ease-elastic-1: cubic-bezier(.5, .75, .75, 1.25);--ease-elastic-2: cubic-bezier(.5, 1, .75, 1.25);--ease-elastic-3: cubic-bezier(.5, 1.25, .75, 1.25);--ease-elastic-4: cubic-bezier(.5, 1.5, .75, 1.25);--ease-elastic-5: cubic-bezier(.5, 1.75, .75, 1.25);--ease-squish-1: cubic-bezier(.5, -.1, .1, 1.5);--ease-squish-2: cubic-bezier(.5, -.3, .1, 1.5);--ease-squish-3: cubic-bezier(.5, -.5, .1, 1.5);--ease-squish-4: cubic-bezier(.5, -.7, .1, 1.5);--ease-squish-5: cubic-bezier(.5, -.9, .1, 1.5);--ease-step-1: steps(2);--ease-step-2: steps(3);--ease-step-3: steps(4);--ease-step-4: steps(7);--ease-step-5: steps(10);--ease-spring-1: linear( 0, .006, .025 2.8%, .101 6.1%, .539 18.9%, .721 25.3%, .849 31.5%, .937 38.1%, .968 41.8%, .991 45.7%, 1.006 50.1%, 1.015 55%, 1.017 63.9%, 1.001 );--ease-spring-2: linear( 0, .007, .029 2.2%, .118 4.7%, .625 14.4%, .826 19%, .902, .962, 1.008 26.1%, 1.041 28.7%, 1.064 32.1%, 1.07 36%, 1.061 40.5%, 1.015 53.4%, .999 61.6%, .995 71.2%, 1 );--ease-spring-3: linear( 0, .009, .035 2.1%, .141 4.4%, .723 12.9%, .938 16.7%, 1.017, 1.077, 1.121, 1.149 24.3%, 1.159, 1.163, 1.161, 1.154 29.9%, 1.129 32.8%, 1.051 39.6%, 1.017 43.1%, .991, .977 51%, .974 53.8%, .975 57.1%, .997 69.8%, 1.003 76.9%, 1 );--ease-spring-4: linear( 0, .009, .037 1.7%, .153 3.6%, .776 10.3%, 1.001, 1.142 16%, 1.185, 1.209 19%, 1.215 19.9% 20.8%, 1.199, 1.165 25%, 1.056 30.3%, 1.008 33%, .973, .955 39.2%, .953 41.1%, .957 43.3%, .998 53.3%, 1.009 59.1% 63.7%, .998 78.9%, 1 );--ease-spring-5: linear( 0, .01, .04 1.6%, .161 3.3%, .816 9.4%, 1.046, 1.189 14.4%, 1.231, 1.254 17%, 1.259, 1.257 18.6%, 1.236, 1.194 22.3%, 1.057 27%, .999 29.4%, .955 32.1%, .942, .935 34.9%, .933, .939 38.4%, 1 47.3%, 1.011, 1.017 52.6%, 1.016 56.4%, 1 65.2%, .996 70.2%, 1.001 87.2%, 1 )}}\n"] }]
4487
+ }] });
4488
+ /** Mounts {@link EasingTokensStylesComponent}. Call from an injection context. */
4489
+ const mountEasingTokens = () => injectStyleManager().mount(EasingTokensStylesComponent);
4490
+
4491
+ const ANIMATABLE_TOKEN = new InjectionToken('ANIMATABLE_DIRECTIVE_TOKEN');
4492
+ class AnimatableDirective {
4493
+ constructor() {
4494
+ this.parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });
4495
+ this.elementRef = inject(ElementRef);
4496
+ this.animationStartSubject$ = new Subject();
4497
+ this.animationEndSubject$ = new Subject();
4498
+ this.activeAnimationCount = 0;
4499
+ this.hostActiveAnimationCount$ = new BehaviorSubject(0);
4500
+ this.animationStart$ = this.animationStartSubject$.asObservable().pipe(debounceTime(0));
4501
+ this.animationEnd$ = this.animationEndSubject$.asObservable().pipe(debounceTime(0));
4502
+ this.totalActiveAnimationCount$ = this.parent
4503
+ ? combineLatest([this.parent.totalActiveAnimationCount$, this.hostActiveAnimationCount$]).pipe(map(([parentCount, hostCount]) => Math.max(0, parentCount + hostCount)))
4504
+ : this.hostActiveAnimationCount$.pipe(map((count) => Math.max(0, count)));
4505
+ this.isAnimating$ = this.totalActiveAnimationCount$.pipe(map((count) => count > 0));
4506
+ mountEasingTokens();
4507
+ let didEmitStart = false;
4508
+ const el = this.elementRef.nativeElement;
4509
+ merge(merge(fromEvent(el, 'animationstart'), fromEvent(el, 'transitionrun')).pipe(filter((e) => e.target === el && !e.pseudoElement), map(() => 'start')), merge(fromEvent(el, 'animationend'), fromEvent(el, 'transitionend')).pipe(filter((e) => e.target === el && !e.pseudoElement), map(() => 'end')), merge(fromEvent(el, 'animationcancel'), fromEvent(el, 'transitioncancel')).pipe(filter((e) => e.target === el && !e.pseudoElement), map(() => 'cancel')))
4510
+ .pipe(tap((eventType) => {
4511
+ switch (eventType) {
4512
+ case 'start': {
4513
+ const startingNewBatch = this.activeAnimationCount === 0;
4514
+ this.updateActiveAnimationCount(1);
4515
+ if (startingNewBatch) {
4516
+ this.activeBatchTransitionId = this.pendingTransitionId;
4517
+ this.pendingTransitionId = undefined;
4518
+ }
4519
+ animationDebugLog(`animatable ${el.tagName.toLowerCase()}`, `start (count ${this.activeAnimationCount}, batch "${this.activeBatchTransitionId}", pending "${this.pendingTransitionId ?? 'none'}")`);
4520
+ if (!didEmitStart) {
4521
+ didEmitStart = true;
4522
+ this.animationStartSubject$.next();
4523
+ }
4524
+ break;
4525
+ }
4526
+ case 'end':
4527
+ case 'cancel': {
4528
+ if (this.activeAnimationCount > 0) {
4529
+ this.updateActiveAnimationCount(-1);
4530
+ animationDebugLog(`animatable ${el.tagName.toLowerCase()}`, `${eventType} (count ${this.activeAnimationCount}, batch "${this.activeBatchTransitionId}")`);
4531
+ if (this.activeAnimationCount === 0 && didEmitStart) {
4532
+ didEmitStart = false;
4533
+ this.animationEndSubject$.next({
4534
+ cancelled: eventType === 'cancel',
4535
+ transitionId: this.activeBatchTransitionId,
4536
+ });
4537
+ this.activeBatchTransitionId = undefined;
4538
+ }
4539
+ }
4540
+ else {
4541
+ animationDebugLog(`animatable ${el.tagName.toLowerCase()}`, `${eventType} ignored - count already 0 (start ${didEmitStart ? '' : 'not '}emitted)`);
4542
+ if (isDevMode()) {
4543
+ console.warn(`${el.tagName} received animation end/cancel event but activeAnimationCount is already 0. Start was ${didEmitStart ? '' : 'not '}emitted.`);
4544
+ }
4545
+ }
4546
+ break;
4547
+ }
4548
+ }
4549
+ }), takeUntilDestroyed())
4550
+ .subscribe();
4551
+ }
4552
+ /**
4553
+ * Labels the next batch of animations that starts on this element. Only the most recent id is
4554
+ * kept: a call whose animations never start must not leave an id behind for a later batch.
4555
+ */
4556
+ setTransitionId(id) {
4557
+ this.pendingTransitionId = id;
4558
+ }
4559
+ /**
4560
+ * The animations running on this element right now, without the endless and pseudo-element ones.
4561
+ *
4562
+ * Reading this flushes pending style changes, so an animation a class change started in the same
4563
+ * task is already listed here. `isAnimating$` cannot answer that: it turns true only once the
4564
+ * browser dispatches `transitionrun`, a frame after the style change is committed.
4565
+ */
4566
+ getRunningAnimations() {
4567
+ const el = this.elementRef.nativeElement;
4568
+ if (typeof el.getAnimations !== 'function')
4569
+ return [];
4570
+ return el.getAnimations().filter((animation) => {
4571
+ if (animation.playState !== 'running')
4572
+ return false;
4573
+ const effect = animation.effect;
4574
+ if (!effect || effect.pseudoElement)
4575
+ return false;
4576
+ // An endless animation never resolves `finished`, so awaiting one would strand the transition.
4577
+ return effect.getComputedTiming().iterations !== Infinity;
4578
+ });
4579
+ }
4580
+ updateActiveAnimationCount(delta) {
4581
+ const newVal = this.activeAnimationCount + delta;
4582
+ const clampedVal = Math.max(0, newVal);
4583
+ this.activeAnimationCount = clampedVal;
4584
+ this.hostActiveAnimationCount$.next(clampedVal);
4585
+ }
4586
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AnimatableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4587
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: AnimatableDirective, isStandalone: true, selector: "[etAnimatable]", providers: [
4588
+ {
4589
+ provide: ANIMATABLE_TOKEN,
4590
+ useExisting: AnimatableDirective,
4591
+ },
4592
+ ], exportAs: ["etAnimatable"], ngImport: i0 }); }
4593
+ }
4594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AnimatableDirective, decorators: [{
4595
+ type: Directive,
4596
+ args: [{
4597
+ selector: '[etAnimatable]',
4598
+ exportAs: 'etAnimatable',
4599
+ providers: [
4600
+ {
4601
+ provide: ANIMATABLE_TOKEN,
4602
+ useExisting: AnimatableDirective,
4603
+ },
4604
+ ],
4605
+ }]
4606
+ }], ctorParameters: () => [] });
4607
+
4506
4608
  const nextFrame = (cb) => {
4507
4609
  if (typeof requestAnimationFrame === 'undefined') {
4508
4610
  return;
@@ -4818,15 +4920,15 @@ class AnimatedLifecycleDirective {
4818
4920
  animationDebugLog(scope, message);
4819
4921
  }
4820
4922
  }
4821
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AnimatedLifecycleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4822
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: AnimatedLifecycleDirective, isStandalone: true, selector: "[etAnimatedLifecycle]", inputs: { skipNextEnter: { classPropertyName: "skipNextEnter", publicName: "skipNextEnter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { stateChange: "stateChange", skipNextEnter: "skipNextEnterChange" }, host: { classAttribute: "et-force-invisible" }, providers: [
4923
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AnimatedLifecycleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4924
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: AnimatedLifecycleDirective, isStandalone: true, selector: "[etAnimatedLifecycle]", inputs: { skipNextEnter: { classPropertyName: "skipNextEnter", publicName: "skipNextEnter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { stateChange: "stateChange", skipNextEnter: "skipNextEnterChange" }, host: { classAttribute: "et-force-invisible" }, providers: [
4823
4925
  {
4824
4926
  provide: ANIMATED_LIFECYCLE_TOKEN,
4825
4927
  useExisting: AnimatedLifecycleDirective,
4826
4928
  },
4827
4929
  ], exportAs: ["etAnimatedLifecycle"], hostDirectives: [{ directive: AnimatableDirective }], ngImport: i0 }); }
4828
4930
  }
4829
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AnimatedLifecycleDirective, decorators: [{
4931
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AnimatedLifecycleDirective, decorators: [{
4830
4932
  type: Directive,
4831
4933
  args: [{
4832
4934
  selector: '[etAnimatedLifecycle]',
@@ -4873,15 +4975,15 @@ class AnimatedIfDirective {
4873
4975
  }), takeUntilDestroyed())
4874
4976
  .subscribe();
4875
4977
  }
4876
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AnimatedIfDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4877
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: AnimatedIfDirective, isStandalone: true, selector: "[etAnimatedIf]", inputs: { ifValue: { classPropertyName: "ifValue", publicName: "etAnimatedIf", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
4978
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AnimatedIfDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4979
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: AnimatedIfDirective, isStandalone: true, selector: "[etAnimatedIf]", inputs: { ifValue: { classPropertyName: "ifValue", publicName: "etAnimatedIf", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
4878
4980
  {
4879
4981
  provide: ANIMATED_IF_TOKEN,
4880
4982
  useExisting: AnimatedIfDirective,
4881
4983
  },
4882
4984
  ], ngImport: i0 }); }
4883
4985
  }
4884
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AnimatedIfDirective, decorators: [{
4986
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AnimatedIfDirective, decorators: [{
4885
4987
  type: Directive,
4886
4988
  args: [{
4887
4989
  selector: '[etAnimatedIf]',
@@ -4901,14 +5003,51 @@ const createFlipAnimationGroup = (config) => {
4901
5003
  const originElement = 'originElement' in el ? el.originElement : undefined;
4902
5004
  return createFlipAnimation({ element, originElement, duration, easing, ignoreReducedMotion });
4903
5005
  });
4904
- const onStart$ = combineLatest(flips.map((animation) => animation.onStart$));
4905
- const onFinish$ = combineLatest(flips.map((animation) => animation.onFinish$));
4906
- const onCancel$ = combineLatest(flips.map((animation) => animation.onCancel$));
5006
+ const onStart$ = new Subject();
5007
+ const onFinish$ = new Subject();
5008
+ const onCancel$ = new Subject();
5009
+ let startedCount = 0;
5010
+ let settledCount = 0;
5011
+ let cancelledCount = 0;
5012
+ const settle = (wasCancelled) => {
5013
+ settledCount++;
5014
+ if (wasCancelled) {
5015
+ cancelledCount++;
5016
+ }
5017
+ if (settledCount !== flips.length) {
5018
+ return;
5019
+ }
5020
+ if (cancelledCount) {
5021
+ onCancel$.next();
5022
+ }
5023
+ else {
5024
+ onFinish$.next();
5025
+ }
5026
+ };
5027
+ flips.forEach((animation) => {
5028
+ animation.onStart$.subscribe(() => {
5029
+ startedCount++;
5030
+ if (startedCount === flips.length) {
5031
+ onStart$.next();
5032
+ }
5033
+ });
5034
+ animation.onFinish$.subscribe(() => settle(false));
5035
+ animation.onCancel$.subscribe(() => settle(true));
5036
+ });
4907
5037
  const updateInit = () => {
4908
5038
  flips.forEach((animation) => animation.updateInit());
4909
5039
  };
4910
5040
  const play = () => {
5041
+ startedCount = 0;
4911
5042
  flips.forEach((animation) => animation.play());
5043
+ // Reset after the loop: replaying a flip that is still running makes it report a cancel, and that
5044
+ // cancel settles the play being replaced, not this one.
5045
+ settledCount = 0;
5046
+ cancelledCount = 0;
5047
+ if (!flips.length) {
5048
+ onStart$.next();
5049
+ onFinish$.next();
5050
+ }
4912
5051
  };
4913
5052
  const cancel = () => {
4914
5053
  flips.forEach((animation) => animation.cancel());
@@ -4917,9 +5056,9 @@ const createFlipAnimationGroup = (config) => {
4917
5056
  updateInit,
4918
5057
  play,
4919
5058
  cancel,
4920
- onStart$,
4921
- onFinish$,
4922
- onCancel$,
5059
+ onStart$: onStart$.asObservable(),
5060
+ onFinish$: onFinish$.asObservable(),
5061
+ onCancel$: onCancel$.asObservable(),
4923
5062
  };
4924
5063
  };
4925
5064
  const createFlipAnimation = (config) => {
@@ -5531,7 +5670,10 @@ const applyLinkBinding = (binding) => {
5531
5670
  const linkId = Symbol('link-tag');
5532
5671
  let currentKey;
5533
5672
  applyHeadBinding(binding, (config) => {
5534
- currentKey = linkStore.getLinkKey(config);
5673
+ const key = linkStore.getLinkKey(config);
5674
+ if (currentKey !== undefined && currentKey !== key)
5675
+ linkStore.removeLink(linkId, currentKey);
5676
+ currentKey = key;
5535
5677
  linkStore.addLink(linkId, config);
5536
5678
  }, () => linkStore.removeLink(linkId, currentKey));
5537
5679
  };
@@ -5862,7 +6004,10 @@ const applyMetaBinding = (binding) => {
5862
6004
  const tagId = Symbol('meta-tag');
5863
6005
  let currentSelector;
5864
6006
  applyHeadBinding(binding, (config) => {
5865
- currentSelector = metaStore.getSelector(config);
6007
+ const selector = metaStore.getSelector(config);
6008
+ if (currentSelector !== undefined && currentSelector !== selector)
6009
+ metaStore.removeTag(tagId, currentSelector);
6010
+ currentSelector = selector;
5866
6011
  metaStore.addTag(tagId, config);
5867
6012
  }, () => metaStore.removeTag(tagId, currentSelector));
5868
6013
  };
@@ -6090,10 +6235,10 @@ class StructuredDataComponent {
6090
6235
  }, /* @ts-ignore */
6091
6236
  ...(ngDevMode ? [{ debugName: "jsonLD" }] : /* istanbul ignore next */ []));
6092
6237
  }
6093
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: StructuredDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6094
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: StructuredDataComponent, isStandalone: true, selector: "et-structured-data", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "innerHTML": "jsonLD()" }, styleAttribute: "display: none" }, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
6238
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: StructuredDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6239
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: StructuredDataComponent, isStandalone: true, selector: "et-structured-data", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "innerHTML": "jsonLD()" }, styleAttribute: "display: none" }, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
6095
6240
  }
6096
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: StructuredDataComponent, decorators: [{
6241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: StructuredDataComponent, decorators: [{
6097
6242
  type: Component,
6098
6243
  args: [{
6099
6244
  selector: 'et-structured-data',
@@ -6406,7 +6551,7 @@ const isCrossOrigin = (source) => /^(https?:)?\/\//.test(source);
6406
6551
  * Cross-origin scripts are left out: an analytics tag with a cache-busting query would otherwise read
6407
6552
  * as a new deploy on every check.
6408
6553
  */
6409
- const readBuildFingerprint = (document) => Array.from(document.head.querySelectorAll('script[src]'))
6554
+ const readBuildFingerprint = (document) => Array.from(document.querySelectorAll('script[src]'))
6410
6555
  .map((script) => script.getAttribute('src') ?? '')
6411
6556
  .filter((source) => !!source && !isCrossOrigin(source))
6412
6557
  .sort()
@@ -6479,6 +6624,12 @@ const isStaleBuildError = (error) => {
6479
6624
  };
6480
6625
 
6481
6626
  const RELOADED_AT_KEY = 'et-app-update-reloaded-at';
6627
+ // A subset check, not equality: the running document also holds every script the app appended to it,
6628
+ // which the served entry document never contains.
6629
+ const isNewBuild = (running, deployed) => {
6630
+ const runningScripts = new Set(running.split('|'));
6631
+ return deployed.split('|').some((source) => !runningScripts.has(source));
6632
+ };
6482
6633
  const APP_UPDATES_CONFIG_DEF = /* @__PURE__ */ defineStaticRootProvider({
6483
6634
  entryUrl: '/',
6484
6635
  pollInterval: 300_000,
@@ -6493,8 +6644,6 @@ const APP_UPDATES_DEF = /* @__PURE__ */ defineRootProvider(() => {
6493
6644
  const coordinator = injectUnsavedChangesCoordinator();
6494
6645
  const router = inject(Router, { optional: true });
6495
6646
  const isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
6496
- // Read once, at startup: this is the build the tab is running, and it cannot change without a
6497
- // reload. Reading it live would drift as the app appends scripts of its own.
6498
6647
  const runningBuild = isBrowser ? readBuildFingerprint(document) : '';
6499
6648
  const reloadedAt = createSessionMemory({
6500
6649
  key: RELOADED_AT_KEY,
@@ -6507,7 +6656,7 @@ const APP_UPDATES_DEF = /* @__PURE__ */ defineRootProvider(() => {
6507
6656
  ...(ngDevMode ? [{ debugName: "_isRequired" }] : /* istanbul ignore next */ []));
6508
6657
  const isAvailable = computed(() => {
6509
6658
  const deployed = _deployedBuild();
6510
- return !!runningBuild && !!deployed && deployed !== runningBuild;
6659
+ return !!runningBuild && !!deployed && isNewBuild(runningBuild, deployed);
6511
6660
  }, /* @ts-ignore */
6512
6661
  ...(ngDevMode ? [{ debugName: "isAvailable" }] : /* istanbul ignore next */ []));
6513
6662
  let lastCheckAt = 0;
@@ -6654,10 +6803,13 @@ const resolveOverlayLayer = (element) => {
6654
6803
  * menu opened from the devtools panel counts as part of the panel's level too.
6655
6804
  */
6656
6805
  const isOnHigherOverlayLayer = (target, layer) => {
6657
- if (!(target instanceof Element)) {
6806
+ const element = target;
6807
+ // Duck-typed rather than `instanceof Element`, which is realm-bound and would report every press
6808
+ // inside a same-origin pop-up as being on no layer at all.
6809
+ if (typeof element?.closest !== 'function') {
6658
6810
  return false;
6659
6811
  }
6660
- return resolveOverlayLayer(target) > layer;
6812
+ return resolveOverlayLayer(element) > layer;
6661
6813
  };
6662
6814
 
6663
6815
  class ClickOutsideDirective {
@@ -6678,10 +6830,10 @@ class ClickOutsideDirective {
6678
6830
  }), takeUntilDestroyed())
6679
6831
  .subscribe();
6680
6832
  }
6681
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ClickOutsideDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6682
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ClickOutsideDirective, isStandalone: true, selector: "[etClickOutside]", outputs: { didClickOutside: "etClickOutside" }, ngImport: i0 }); }
6833
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ClickOutsideDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6834
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: ClickOutsideDirective, isStandalone: true, selector: "[etClickOutside]", outputs: { didClickOutside: "etClickOutside" }, ngImport: i0 }); }
6683
6835
  }
6684
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ClickOutsideDirective, decorators: [{
6836
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ClickOutsideDirective, decorators: [{
6685
6837
  type: Directive,
6686
6838
  args: [{
6687
6839
  selector: '[etClickOutside]',
@@ -6703,10 +6855,10 @@ class RepeatDirective {
6703
6855
  }
6704
6856
  });
6705
6857
  }
6706
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RepeatDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6707
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: RepeatDirective, isStandalone: true, selector: "[etRepeat]", inputs: { repeatCount: { classPropertyName: "repeatCount", publicName: "etRepeat", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
6858
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RepeatDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6859
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: RepeatDirective, isStandalone: true, selector: "[etRepeat]", inputs: { repeatCount: { classPropertyName: "repeatCount", publicName: "etRepeat", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
6708
6860
  }
6709
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RepeatDirective, decorators: [{
6861
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RepeatDirective, decorators: [{
6710
6862
  type: Directive,
6711
6863
  args: [{
6712
6864
  selector: '[etRepeat]',
@@ -6732,10 +6884,10 @@ class RestoreScrollDirective {
6732
6884
  // on any later change detection run.
6733
6885
  this.elementRef.nativeElement.addEventListener('click', () => (this.routerLink.state = { ...this.routerLink.state, ...routerRestoreScroll() }), { capture: true });
6734
6886
  }
6735
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RestoreScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6736
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: RestoreScrollDirective, isStandalone: true, selector: "[routerLink][etRestoreScroll]", ngImport: i0 }); }
6887
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RestoreScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6888
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: RestoreScrollDirective, isStandalone: true, selector: "[routerLink][etRestoreScroll]", ngImport: i0 }); }
6737
6889
  }
6738
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RestoreScrollDirective, decorators: [{
6890
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RestoreScrollDirective, decorators: [{
6739
6891
  type: Directive,
6740
6892
  args: [{
6741
6893
  selector: '[routerLink][etRestoreScroll]',
@@ -6781,10 +6933,10 @@ class ScrollObserverDirective {
6781
6933
  this._endEl.set(el);
6782
6934
  return () => this._endEl.update((current) => (current === el ? null : current));
6783
6935
  }
6784
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ScrollObserverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6785
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: ScrollObserverDirective, isStandalone: true, selector: "[etScrollObserver]", inputs: { enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { enabled: "enabledChange" }, exportAs: ["etScrollObserver"], ngImport: i0 }); }
6936
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ScrollObserverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6937
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: ScrollObserverDirective, isStandalone: true, selector: "[etScrollObserver]", inputs: { enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { enabled: "enabledChange" }, exportAs: ["etScrollObserver"], ngImport: i0 }); }
6786
6938
  }
6787
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ScrollObserverDirective, decorators: [{
6939
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ScrollObserverDirective, decorators: [{
6788
6940
  type: Directive,
6789
6941
  args: [{
6790
6942
  selector: '[etScrollObserver]',
@@ -6798,10 +6950,10 @@ class ScrollObserverEndDirective {
6798
6950
  this.host = inject(ScrollObserverDirective);
6799
6951
  inject(DestroyRef).onDestroy(this.host.registerEnd(this.elementRef));
6800
6952
  }
6801
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ScrollObserverEndDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6802
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ScrollObserverEndDirective, isStandalone: true, selector: "[etScrollObserverEnd]", ngImport: i0 }); }
6953
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ScrollObserverEndDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6954
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: ScrollObserverEndDirective, isStandalone: true, selector: "[etScrollObserverEnd]", ngImport: i0 }); }
6803
6955
  }
6804
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ScrollObserverEndDirective, decorators: [{
6956
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ScrollObserverEndDirective, decorators: [{
6805
6957
  type: Directive,
6806
6958
  args: [{
6807
6959
  selector: '[etScrollObserverEnd]',
@@ -6814,10 +6966,10 @@ class ScrollObserverStartDirective {
6814
6966
  this.host = inject(ScrollObserverDirective);
6815
6967
  inject(DestroyRef).onDestroy(this.host.registerStart(this.elementRef));
6816
6968
  }
6817
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ScrollObserverStartDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6818
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ScrollObserverStartDirective, isStandalone: true, selector: "[etScrollObserverStart]", ngImport: i0 }); }
6969
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ScrollObserverStartDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6970
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: ScrollObserverStartDirective, isStandalone: true, selector: "[etScrollObserverStart]", ngImport: i0 }); }
6819
6971
  }
6820
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ScrollObserverStartDirective, decorators: [{
6972
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ScrollObserverStartDirective, decorators: [{
6821
6973
  type: Directive,
6822
6974
  args: [{
6823
6975
  selector: '[etScrollObserverStart]',
@@ -6934,7 +7086,7 @@ class DragHandleDirective {
6934
7086
  ...(ngDevMode ? [{ debugName: "commitThreshold" }] : /* istanbul ignore next */ []));
6935
7087
  this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6936
7088
  this.gestureStart$ = new Subject();
6937
- this.gesture$ = this.gestureStart$.pipe(exhaustMap((event) => dragGestureFrom(event, this.el.nativeElement, { commitThreshold: this.commitThreshold() })), takeUntilDestroyed(), share());
7089
+ this.gesture$ = this.gestureStart$.pipe(exhaustMap((event) => dragGestureFrom(event, this.el.nativeElement, { commitThreshold: this.commitThreshold() })), share(), takeUntilDestroyed());
6938
7090
  this.dragTapped = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'tapped'), map(() => undefined)));
6939
7091
  this.dragStarted = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'start'), map((e) => e.data)));
6940
7092
  this.dragMoved = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'move'), map((e) => e.data)));
@@ -6954,10 +7106,10 @@ class DragHandleDirective {
6954
7106
  event.stopPropagation();
6955
7107
  this.gestureStart$.next(event);
6956
7108
  }
6957
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DragHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6958
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: DragHandleDirective, isStandalone: true, selector: "[etDragHandle]", inputs: { commitThreshold: { classPropertyName: "commitThreshold", publicName: "commitThreshold", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dragTapped: "dragTapped", dragStarted: "dragStarted", dragMoved: "dragMoved", dragEnded: "dragEnded", dragCancelled: "dragCancelled" }, host: { properties: { "style.touch-action": "disabled() ? null : 'none'" } }, ngImport: i0 }); }
7109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: DragHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7110
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: DragHandleDirective, isStandalone: true, selector: "[etDragHandle]", inputs: { commitThreshold: { classPropertyName: "commitThreshold", publicName: "commitThreshold", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dragTapped: "dragTapped", dragStarted: "dragStarted", dragMoved: "dragMoved", dragEnded: "dragEnded", dragCancelled: "dragCancelled" }, host: { properties: { "style.touch-action": "disabled() ? null : 'none'" } }, ngImport: i0 }); }
6959
7111
  }
6960
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DragHandleDirective, decorators: [{
7112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: DragHandleDirective, decorators: [{
6961
7113
  type: Directive,
6962
7114
  args: [{
6963
7115
  selector: '[etDragHandle]',
@@ -7211,7 +7363,28 @@ const FOCUSABLE_SELECTOR = /* @__PURE__ */ [
7211
7363
  '[contenteditable="true"]',
7212
7364
  ].join(',');
7213
7365
  const isHTMLElement = (value) => {
7214
- return value instanceof HTMLElement;
7366
+ // `instanceof` is realm-bound: an element adopted by a same-origin pop-up (the `document` mount
7367
+ // option) belongs to that window's `HTMLElement`, not to this one's.
7368
+ const view = value?.ownerDocument?.defaultView;
7369
+ return view ? value instanceof view.HTMLElement : value instanceof HTMLElement;
7370
+ };
7371
+ const isElement = (value) => {
7372
+ const view = value?.ownerDocument?.defaultView;
7373
+ return view ? value instanceof view.Element : value instanceof Element;
7374
+ };
7375
+ const isHTMLOrSVGElement = (value) => {
7376
+ const view = value?.ownerDocument?.defaultView;
7377
+ return view
7378
+ ? value instanceof view.HTMLElement || value instanceof view.SVGElement
7379
+ : value instanceof HTMLElement || value instanceof SVGElement;
7380
+ };
7381
+ /**
7382
+ * Whether the overlay rooted at `hostElement` is still the owner of DOM focus - focus is inside it, or
7383
+ * nothing is focused. False once the user has moved focus somewhere else.
7384
+ */
7385
+ const ownsActiveElement = (hostElement, document) => {
7386
+ const activeElement = document.activeElement;
7387
+ return !activeElement || activeElement === document.body || hostElement.contains(activeElement);
7215
7388
  };
7216
7389
  const isFocusable = (element, document) => {
7217
7390
  const view = document.defaultView;
@@ -7640,7 +7813,7 @@ const createAnchoredPositionCleanup = (strategy, paneElement, overlayRef, render
7640
7813
  // or `autoCloseIfReferenceHidden` asked for it: a trigger destroyed while its overlay is open (a
7641
7814
  // menu item that removes the button it was opened from) would otherwise fly to the corner for the
7642
7815
  // frames the overlay takes to animate out.
7643
- if (isHTMLElement(strategy.referenceElement) && !strategy.referenceElement.isConnected) {
7816
+ if (isElement(strategy.referenceElement) && !strategy.referenceElement.isConnected) {
7644
7817
  handleUnusableReference();
7645
7818
  return;
7646
7819
  }
@@ -7653,6 +7826,8 @@ const createAnchoredPositionCleanup = (strategy, paneElement, overlayRef, render
7653
7826
  ? flip({
7654
7827
  fallbackPlacements: strategy.fallbackPlacements ?? undefined,
7655
7828
  fallbackAxisSideDirection: 'start',
7829
+ // shift owns cross-axis overflow; a full check here flips a pane near a side edge off its side
7830
+ crossAxis: strategy.shift !== false ? 'alignment' : true,
7656
7831
  padding: viewportPadding,
7657
7832
  boundary: strategy.boundary,
7658
7833
  })
@@ -7961,8 +8136,9 @@ const OVERLAY_RUNTIME_DEF = /* @__PURE__ */ defineRootProvider(() => {
7961
8136
  const entries = openEntriesState();
7962
8137
  for (let index = entries.length - 1; index >= 0; index--) {
7963
8138
  const entry = entries[index];
7964
- if (entry && entry.state() !== 'closing' && entry.state() !== 'closed')
7965
- return entry === overlayRef;
8139
+ if (!entry || entry.config.passive || entry.state() === 'closing' || entry.state() === 'closed')
8140
+ continue;
8141
+ return entry === overlayRef;
7966
8142
  }
7967
8143
  return false;
7968
8144
  };
@@ -7981,7 +8157,9 @@ const OVERLAY_RUNTIME_DEF = /* @__PURE__ */ defineRootProvider(() => {
7981
8157
  const paneElement = renderer.createElement('div');
7982
8158
  const backdropElement = signal(null, /* @ts-ignore */
7983
8159
  ...(ngDevMode ? [{ debugName: "backdropElement" }] : /* istanbul ignore next */ []));
7984
- const previousFocusedElement = isHTMLElement(targetDocument.activeElement) ? targetDocument.activeElement : null;
8160
+ const previousFocusedElement = isHTMLOrSVGElement(targetDocument.activeElement)
8161
+ ? targetDocument.activeElement
8162
+ : null;
7985
8163
  const autoFocus = config.autoFocus ?? 'first-tabbable';
7986
8164
  let currentHasBackdrop = config.hasBackdrop !== false;
7987
8165
  let currentPositionStrategy = config.positionStrategy;
@@ -8055,7 +8233,7 @@ const OVERLAY_RUNTIME_DEF = /* @__PURE__ */ defineRootProvider(() => {
8055
8233
  openEntriesState.update((entries) => [...entries, overlayRef]);
8056
8234
  let positionCleanup = setupPositioning(activeConfig(), hostElement, paneElement, overlayRef, renderer);
8057
8235
  cleanupFns.push(() => positionCleanup());
8058
- const getOriginElement = () => currentPositionStrategy?.kind === 'anchored' && isHTMLElement(currentPositionStrategy.referenceElement)
8236
+ const getOriginElement = () => currentPositionStrategy?.kind === 'anchored' && isElement(currentPositionStrategy.referenceElement)
8059
8237
  ? currentPositionStrategy.referenceElement
8060
8238
  : null;
8061
8239
  overlayRef.attachPositionUpdater((strategy) => {
@@ -8085,8 +8263,14 @@ const OVERLAY_RUNTIME_DEF = /* @__PURE__ */ defineRootProvider(() => {
8085
8263
  });
8086
8264
  const destroyMountedOverlay = (closeEvent) => {
8087
8265
  animationDebugLog(`runtime ${config.id}`, `destroy (source "${closeEvent.source}")`);
8266
+ // Read before teardown: removing the host element moves focus to the body, which would make
8267
+ // every close look like the overlay still owned it.
8268
+ const overlayStillOwnsFocus = ownsActiveElement(hostElement, targetDocument);
8088
8269
  cleanupFns.forEach((cleanup) => cleanup());
8089
- appRef.detachView(componentRef.hostView);
8270
+ // On app teardown the ApplicationRef is destroyed before this runs; detaching then warns NG0406.
8271
+ if (!appRef.destroyed) {
8272
+ appRef.detachView(componentRef.hostView);
8273
+ }
8090
8274
  componentRef.destroy();
8091
8275
  // Angular does not own this injector, so nothing else tears down what the overlay's own
8092
8276
  // providers registered on it - their `DestroyRef` hooks and effects would outlive the overlay.
@@ -8100,7 +8284,7 @@ const OVERLAY_RUNTIME_DEF = /* @__PURE__ */ defineRootProvider(() => {
8100
8284
  }
8101
8285
  openEntriesState.update((entries) => entries.filter((entry) => entry !== overlayRef));
8102
8286
  maybeDestroyRootElements(targetDocument);
8103
- if (config.restoreFocus !== false && previousFocusedElement?.isConnected) {
8287
+ if (config.restoreFocus !== false && overlayStillOwnsFocus && previousFocusedElement?.isConnected) {
8104
8288
  previousFocusedElement.focus({ preventScroll: true });
8105
8289
  }
8106
8290
  overlayRef.finishClose(closeEvent);
@@ -8164,7 +8348,7 @@ const OVERLAY_RUNTIME_DEF = /* @__PURE__ */ defineRootProvider(() => {
8164
8348
  return;
8165
8349
  }
8166
8350
  const target = event.target;
8167
- if (!isHTMLElement(target) || paneElement.contains(target)) {
8351
+ if (!isElement(target) || paneElement.contains(target)) {
8168
8352
  return;
8169
8353
  }
8170
8354
  if (isOnHigherOverlayLayer(target, layer)) {
@@ -8178,7 +8362,7 @@ const OVERLAY_RUNTIME_DEF = /* @__PURE__ */ defineRootProvider(() => {
8178
8362
  const originElement = getOriginElement();
8179
8363
  if (originElement && originElement.contains(target)) {
8180
8364
  const swallowReopenClick = (clickEvent) => {
8181
- if (isHTMLElement(clickEvent.target) && originElement.contains(clickEvent.target)) {
8365
+ if (isElement(clickEvent.target) && originElement.contains(clickEvent.target)) {
8182
8366
  clickEvent.stopImmediatePropagation();
8183
8367
  clickEvent.preventDefault();
8184
8368
  }
@@ -8242,10 +8426,10 @@ class NormalizeGameResultTypePipe {
8242
8426
  constructor() {
8243
8427
  this.transform = normalizeGameResultType;
8244
8428
  }
8245
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NormalizeGameResultTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8246
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: NormalizeGameResultTypePipe, isStandalone: true, name: "etNormalizeGameResultType" }); }
8429
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NormalizeGameResultTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8430
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: NormalizeGameResultTypePipe, isStandalone: true, name: "etNormalizeGameResultType" }); }
8247
8431
  }
8248
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NormalizeGameResultTypePipe, decorators: [{
8432
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NormalizeGameResultTypePipe, decorators: [{
8249
8433
  type: Pipe,
8250
8434
  args: [{ name: 'etNormalizeGameResultType' }]
8251
8435
  }] });
@@ -8286,10 +8470,10 @@ class NormalizeMatchStatePipe {
8286
8470
  constructor() {
8287
8471
  this.transform = normalizeMatchState;
8288
8472
  }
8289
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8290
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchStatePipe, isStandalone: true, name: "etNormalizeMatchState" }); }
8473
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8474
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchStatePipe, isStandalone: true, name: "etNormalizeMatchState" }); }
8291
8475
  }
8292
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchStatePipe, decorators: [{
8476
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchStatePipe, decorators: [{
8293
8477
  type: Pipe,
8294
8478
  args: [{ name: 'etNormalizeMatchState' }]
8295
8479
  }] });
@@ -8319,10 +8503,10 @@ class NormalizeMatchScorePipe {
8319
8503
  constructor() {
8320
8504
  this.transform = normalizeMatchScore;
8321
8505
  }
8322
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchScorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8323
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchScorePipe, isStandalone: true, name: "etNormalizeMatchScore" }); }
8506
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchScorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8507
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchScorePipe, isStandalone: true, name: "etNormalizeMatchScore" }); }
8324
8508
  }
8325
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchScorePipe, decorators: [{
8509
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchScorePipe, decorators: [{
8326
8510
  type: Pipe,
8327
8511
  args: [{ name: 'etNormalizeMatchScore' }]
8328
8512
  }] });
@@ -8461,10 +8645,10 @@ class NormalizeMatchParticipantsPipe {
8461
8645
  constructor() {
8462
8646
  this.transform = normalizeMatchParticipants;
8463
8647
  }
8464
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchParticipantsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8465
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchParticipantsPipe, isStandalone: true, name: "etNormalizeMatchParticipants" }); }
8648
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchParticipantsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8649
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchParticipantsPipe, isStandalone: true, name: "etNormalizeMatchParticipants" }); }
8466
8650
  }
8467
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchParticipantsPipe, decorators: [{
8651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchParticipantsPipe, decorators: [{
8468
8652
  type: Pipe,
8469
8653
  args: [{ name: 'etNormalizeMatchParticipants' }]
8470
8654
  }] });
@@ -8518,10 +8702,10 @@ class NormalizeMatchTypePipe {
8518
8702
  constructor() {
8519
8703
  this.transform = normalizeMatchType;
8520
8704
  }
8521
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8522
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchTypePipe, isStandalone: true, name: "etNormalizeMatchType" }); }
8705
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8706
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchTypePipe, isStandalone: true, name: "etNormalizeMatchType" }); }
8523
8707
  }
8524
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NormalizeMatchTypePipe, decorators: [{
8708
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NormalizeMatchTypePipe, decorators: [{
8525
8709
  type: Pipe,
8526
8710
  args: [{ name: 'etNormalizeMatchType' }]
8527
8711
  }] });
@@ -8569,10 +8753,10 @@ class HtmlToMarkdownPipe {
8569
8753
  constructor() {
8570
8754
  this.transform = htmlToMarkdown;
8571
8755
  }
8572
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HtmlToMarkdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8573
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: HtmlToMarkdownPipe, isStandalone: true, name: "htmlToMarkdown" }); }
8756
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: HtmlToMarkdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8757
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: HtmlToMarkdownPipe, isStandalone: true, name: "htmlToMarkdown" }); }
8574
8758
  }
8575
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HtmlToMarkdownPipe, decorators: [{
8759
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: HtmlToMarkdownPipe, decorators: [{
8576
8760
  type: Pipe,
8577
8761
  args: [{ name: 'htmlToMarkdown' }]
8578
8762
  }] });
@@ -8581,10 +8765,10 @@ class InferMimeTypePipe {
8581
8765
  constructor() {
8582
8766
  this.transform = inferMimeType;
8583
8767
  }
8584
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: InferMimeTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8585
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: InferMimeTypePipe, isStandalone: true, name: "inferMimeType" }); }
8768
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: InferMimeTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8769
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: InferMimeTypePipe, isStandalone: true, name: "inferMimeType" }); }
8586
8770
  }
8587
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: InferMimeTypePipe, decorators: [{
8771
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: InferMimeTypePipe, decorators: [{
8588
8772
  type: Pipe,
8589
8773
  args: [{
8590
8774
  name: 'inferMimeType',
@@ -8789,10 +8973,10 @@ class InitialsPipe {
8789
8973
  constructor() {
8790
8974
  this.transform = initials;
8791
8975
  }
8792
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: InitialsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8793
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: InitialsPipe, isStandalone: true, name: "initials" }); }
8976
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: InitialsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8977
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: InitialsPipe, isStandalone: true, name: "initials" }); }
8794
8978
  }
8795
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: InitialsPipe, decorators: [{
8979
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: InitialsPipe, decorators: [{
8796
8980
  type: Pipe,
8797
8981
  args: [{ name: 'initials' }]
8798
8982
  }] });
@@ -8826,10 +9010,10 @@ class MarkdownToHtmlPipe {
8826
9010
  constructor() {
8827
9011
  this.transform = markdownToHtml;
8828
9012
  }
8829
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MarkdownToHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8830
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: MarkdownToHtmlPipe, isStandalone: true, name: "markdownToHtml" }); }
9013
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: MarkdownToHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9014
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: MarkdownToHtmlPipe, isStandalone: true, name: "markdownToHtml" }); }
8831
9015
  }
8832
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MarkdownToHtmlPipe, decorators: [{
9016
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: MarkdownToHtmlPipe, decorators: [{
8833
9017
  type: Pipe,
8834
9018
  args: [{ name: 'markdownToHtml' }]
8835
9019
  }] });
@@ -8838,10 +9022,10 @@ class SlugifyPipe {
8838
9022
  constructor() {
8839
9023
  this.transform = slugify;
8840
9024
  }
8841
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SlugifyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8842
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: SlugifyPipe, isStandalone: true, name: "slugify" }); }
9025
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SlugifyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9026
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: SlugifyPipe, isStandalone: true, name: "slugify" }); }
8843
9027
  }
8844
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SlugifyPipe, decorators: [{
9028
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SlugifyPipe, decorators: [{
8845
9029
  type: Pipe,
8846
9030
  args: [{ name: 'slugify' }]
8847
9031
  }] });
@@ -8875,10 +9059,10 @@ class ToArrayPipe {
8875
9059
  constructor() {
8876
9060
  this.transform = toArray;
8877
9061
  }
8878
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8879
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
9062
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9063
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
8880
9064
  }
8881
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToArrayPipe, decorators: [{
9065
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ToArrayPipe, decorators: [{
8882
9066
  type: Pipe,
8883
9067
  args: [{ name: 'toArray' }]
8884
9068
  }] });
@@ -8887,292 +9071,6 @@ const toArray = (value) => {
8887
9071
  };
8888
9072
  const toArrayTrackByFn = (_, item) => item;
8889
9073
 
8890
- const createPropHandlers = () => {
8891
- const id = createComponentId('et-props');
8892
- const elementRef = inject(ElementRef);
8893
- const classes = signalHostClasses({});
8894
- const attributes = signalHostAttributes({});
8895
- const styles = signalHostStyles({});
8896
- return {
8897
- classes,
8898
- attributes,
8899
- styles,
8900
- id,
8901
- elementRef,
8902
- };
8903
- };
8904
-
8905
- const createElementDictionary = () => {
8906
- const dictionary = {
8907
- ids: signal([]),
8908
- elements: signal({}),
8909
- };
8910
- const firstElement = computed(() => {
8911
- const id = dictionary.ids()[0];
8912
- return id ? (dictionary.elements()[id] ?? null) : null;
8913
- }, /* @ts-ignore */
8914
- ...(ngDevMode ? [{ debugName: "firstElement" }] : /* istanbul ignore next */ []));
8915
- const firstId = computed(() => {
8916
- const id = dictionary.ids()[0];
8917
- return id ?? null;
8918
- }, /* @ts-ignore */
8919
- ...(ngDevMode ? [{ debugName: "firstId" }] : /* istanbul ignore next */ []));
8920
- const ids = computed(() => dictionary.ids(), /* @ts-ignore */
8921
- ...(ngDevMode ? [{ debugName: "ids" }] : /* istanbul ignore next */ []));
8922
- const elements = computed(() => {
8923
- const byId = dictionary.elements();
8924
- return ids()
8925
- .map((id) => byId[id])
8926
- .filter((element) => !!element);
8927
- }, /* @ts-ignore */
8928
- ...(ngDevMode ? [{ debugName: "elements" }] : /* istanbul ignore next */ []));
8929
- const isEmpty = computed(() => dictionary.ids().length === 0, /* @ts-ignore */
8930
- ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
8931
- const has = (id) => {
8932
- return dictionary.ids().includes(id);
8933
- };
8934
- const push = (id, element) => {
8935
- dictionary.ids.set([...dictionary.ids(), id]);
8936
- dictionary.elements.set({ ...dictionary.elements(), [id]: element });
8937
- };
8938
- const remove = (id) => {
8939
- dictionary.ids.set(dictionary.ids().filter((i) => i !== id));
8940
- dictionary.elements.set(Object.fromEntries(Object.entries(dictionary.elements()).filter(([k]) => k !== id)));
8941
- };
8942
- const get = (id) => {
8943
- return dictionary.elements()[id] ?? null;
8944
- };
8945
- return {
8946
- ids,
8947
- elements,
8948
- has,
8949
- get,
8950
- push,
8951
- remove,
8952
- isEmpty,
8953
- firstElement,
8954
- firstId,
8955
- };
8956
- };
8957
-
8958
- const bindProps = (config) => {
8959
- const props = config.props;
8960
- const { attachEventListeners, classBindings, attributeBindings, styleBindings, staticAttributeBindings, staticClassBindings, staticStyleBindings, attached, single, name, bindId, attachedElements, } = props;
8961
- const { attributes, classes, elementRef, id, styles } = config.handlers;
8962
- const el = elementRef.nativeElement;
8963
- if (attached()) {
8964
- if (attachedElements.has(id)) {
8965
- return;
8966
- }
8967
- else if (single) {
8968
- const firstAttachedRefElement = attachedElements.first();
8969
- if (isDevMode()) {
8970
- console.error(`[${name}] These props can only be attached to a single element at a time.\n\n Already attached to \n`, firstAttachedRefElement, '\n Trying to attach to \n', el);
8971
- }
8972
- return;
8973
- }
8974
- }
8975
- attachedElements.push(id, el);
8976
- if (bindId) {
8977
- el.id = id;
8978
- }
8979
- if (classBindings) {
8980
- classes.pushMany(classBindings);
8981
- }
8982
- if (attributeBindings) {
8983
- attributes.pushMany(attributeBindings);
8984
- }
8985
- if (styleBindings) {
8986
- styles.pushMany(styleBindings);
8987
- }
8988
- if (staticAttributeBindings) {
8989
- for (const key in staticAttributeBindings) {
8990
- el.setAttribute(key, `${staticAttributeBindings[key]}`);
8991
- }
8992
- }
8993
- if (staticClassBindings) {
8994
- el.classList.add(...staticClassBindings);
8995
- }
8996
- if (staticStyleBindings) {
8997
- for (const key in staticStyleBindings) {
8998
- el.style.setProperty(key, `${staticStyleBindings[key]}`);
8999
- }
9000
- }
9001
- if (attachEventListeners) {
9002
- attachEventListeners({
9003
- on: el.addEventListener.bind(el),
9004
- element: el,
9005
- });
9006
- }
9007
- };
9008
- const unbindProps = (config) => {
9009
- const props = config.props;
9010
- props.attachedElements.remove(config.handlers.id);
9011
- };
9012
-
9013
- const createProps = (props) => {
9014
- const { bindId = false, single = true, classes: classBindings, attributes: attributeBindings, styles: styleBindings, staticAttributes: staticAttributeBindings = null, staticClasses: staticClassBindings = null, staticStyles: staticStyleBindings = null, listeners, name, } = props;
9015
- const dictionary = createElementDictionary();
9016
- const attached = computed(() => !dictionary.isEmpty(), /* @ts-ignore */
9017
- ...(ngDevMode ? [{ debugName: "attached" }] : /* istanbul ignore next */ []));
9018
- const attachedElements = {
9019
- first: dictionary.firstElement,
9020
- firstId: dictionary.firstId,
9021
- has: dictionary.has,
9022
- push: dictionary.push,
9023
- remove: dictionary.remove,
9024
- get: dictionary.get,
9025
- };
9026
- const data = {
9027
- name,
9028
- single,
9029
- bindId,
9030
- attached,
9031
- attachedElements,
9032
- classBindings: classBindings ?? null,
9033
- attributeBindings: attributeBindings ?? null,
9034
- styleBindings: styleBindings ?? null,
9035
- staticAttributeBindings,
9036
- staticClassBindings,
9037
- staticStyleBindings,
9038
- attachEventListeners: listeners ?? null,
9039
- };
9040
- return data;
9041
- };
9042
- const createHostProps = (props) => {
9043
- const data = createProps(props);
9044
- const handlers = createPropHandlers();
9045
- afterNextRender({
9046
- write: () => {
9047
- bindProps({
9048
- handlers,
9049
- props: data,
9050
- });
9051
- },
9052
- });
9053
- const destroyRef = inject(DestroyRef);
9054
- destroyRef.onDestroy(() => {
9055
- unbindProps({
9056
- handlers,
9057
- props: data,
9058
- });
9059
- });
9060
- return { props: data, handlers };
9061
- };
9062
-
9063
- const createSetup = (config) => {
9064
- let didCallSetup = false;
9065
- afterNextRender(() => {
9066
- if (!didCallSetup && isDevMode()) {
9067
- console.error('The setup() function was not called. Please call it inside your constructor.', config.this);
9068
- return;
9069
- }
9070
- });
9071
- return (params) => {
9072
- if (didCallSetup) {
9073
- if (!isDevMode())
9074
- return;
9075
- console.error('The setup() function was already called. Please call it only once. \n\n', 'Instance containing the setup() call \n', config.this, '\n\n Setup was called with\n', params);
9076
- return;
9077
- }
9078
- didCallSetup = true;
9079
- config.setupFn(params);
9080
- };
9081
- };
9082
-
9083
- const createDependencyStash = (stash) => {
9084
- const injector = inject(Injector);
9085
- const provideSignal = (data) => {
9086
- runInInjectionContext(injector, () => {
9087
- effect(() => {
9088
- stash[data.for]?.set(data.signal());
9089
- });
9090
- });
9091
- };
9092
- const provideValue = (data) => {
9093
- stash[data.for]?.set(data.value);
9094
- };
9095
- return {
9096
- ...stash,
9097
- provideSignal,
9098
- provideValue,
9099
- };
9100
- };
9101
-
9102
- class PropsDirective {
9103
- constructor() {
9104
- this.destroyRef = inject(DestroyRef);
9105
- this.props = input.required({ ...(ngDevMode ? { debugName: "props" } : /* istanbul ignore next */ {}), alias: 'etProps', transform: (d) => d });
9106
- this.propHandlers = createPropHandlers();
9107
- let boundProps = null;
9108
- effect(() => {
9109
- const props = this.props();
9110
- untracked(() => {
9111
- if (boundProps) {
9112
- unbindProps({ handlers: this.propHandlers, props: boundProps });
9113
- }
9114
- bindProps({
9115
- handlers: this.propHandlers,
9116
- props,
9117
- });
9118
- boundProps = props;
9119
- });
9120
- });
9121
- this.destroyRef.onDestroy(() => {
9122
- if (boundProps)
9123
- unbindProps({ handlers: this.propHandlers, props: boundProps });
9124
- });
9125
- }
9126
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: PropsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9127
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: PropsDirective, isStandalone: true, selector: "[etProps]", inputs: { props: { classPropertyName: "props", publicName: "etProps", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
9128
- }
9129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: PropsDirective, decorators: [{
9130
- type: Directive,
9131
- args: [{
9132
- selector: '[etProps]',
9133
- }]
9134
- }], ctorParameters: () => [], propDecorators: { props: [{ type: i0.Input, args: [{ isSignal: true, alias: "etProps", required: true }] }] } });
9135
-
9136
- const templateComputed = (templateSignal) => computed(() => {
9137
- const content = templateSignal();
9138
- if (content === null)
9139
- return null;
9140
- if (typeof content === 'string') {
9141
- return {
9142
- type: 'string',
9143
- value: content,
9144
- };
9145
- }
9146
- if (content instanceof TemplateRef) {
9147
- return {
9148
- type: 'template',
9149
- value: content,
9150
- injector: null,
9151
- };
9152
- }
9153
- if ('component' in content) {
9154
- return {
9155
- type: 'component',
9156
- value: content.component,
9157
- inputs: content.inputs,
9158
- injector: content.injector ?? null,
9159
- };
9160
- }
9161
- if ('template' in content) {
9162
- return {
9163
- type: 'template',
9164
- value: content.template,
9165
- context: content.context,
9166
- injector: content.injector ?? null,
9167
- };
9168
- }
9169
- return {
9170
- type: 'component',
9171
- value: content,
9172
- injector: null,
9173
- };
9174
- });
9175
-
9176
9074
  const EDGE_CURSORS = {
9177
9075
  n: 'ns-resize',
9178
9076
  s: 'ns-resize',
@@ -9206,7 +9104,7 @@ class ResizeHandlesComponent {
9206
9104
  ...(ngDevMode ? [{ debugName: "edges" }] : /* istanbul ignore next */ []));
9207
9105
  this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
9208
9106
  this.gestureStart$ = new Subject();
9209
- this.gesture$ = this.gestureStart$.pipe(exhaustMap(({ event, edge }) => setupResizeObservable(event, edge, this.el.nativeElement.ownerDocument)), takeUntilDestroyed(), share());
9107
+ this.gesture$ = this.gestureStart$.pipe(exhaustMap(({ event, edge }) => setupResizeObservable(event, edge, this.el.nativeElement.ownerDocument)), share(), takeUntilDestroyed());
9210
9108
  this.resizeStarted = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'start'), map((e) => e.edge)));
9211
9109
  this.resizeMoved = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'move'), map((e) => e.data)));
9212
9110
  this.resizeEnded = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'end'), map(() => undefined)));
@@ -9232,8 +9130,8 @@ class ResizeHandlesComponent {
9232
9130
  event.stopPropagation();
9233
9131
  this.gestureStart$.next({ event, edge });
9234
9132
  }
9235
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ResizeHandlesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9236
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: ResizeHandlesComponent, isStandalone: true, selector: "et-resize-handles", inputs: { edges: { classPropertyName: "edges", publicName: "edges", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resizeStarted: "resizeStarted", resizeMoved: "resizeMoved", resizeEnded: "resizeEnded", resizeCancelled: "resizeCancelled" }, host: { properties: { "attr.inert": "disabled() ? \"\" : null", "attr.data-active-edge": "activeEdge()" }, classAttribute: "et-resize-handles" }, ngImport: i0, template: `
9133
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ResizeHandlesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9134
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: ResizeHandlesComponent, isStandalone: true, selector: "et-resize-handles", inputs: { edges: { classPropertyName: "edges", publicName: "edges", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resizeStarted: "resizeStarted", resizeMoved: "resizeMoved", resizeEnded: "resizeEnded", resizeCancelled: "resizeCancelled" }, host: { properties: { "attr.inert": "disabled() ? \"\" : null", "attr.data-active-edge": "activeEdge()" }, classAttribute: "et-resize-handles" }, ngImport: i0, template: `
9237
9135
  @for (edge of edges(); track edge) {
9238
9136
  <div
9239
9137
  [style.cursor]="edgeCursors[edge]"
@@ -9243,7 +9141,7 @@ class ResizeHandlesComponent {
9243
9141
  }
9244
9142
  `, isInline: true, styles: ["@layer components{@property --et-resize-handles-z-index{syntax: \"<integer>\"; inherits: true; initial-value: 10;}@property --et-resize-handles-edge-size{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-resize-handles-corner-size{syntax: \"<length>\"; inherits: true; initial-value: 12px;}@property --et-resize-handles-edge-inset{syntax: \"<length>\"; inherits: true; initial-value: 8px;}@property --et-resize-handles-outset{syntax: \"<length>\"; inherits: true; initial-value: 0px;}@property --et-resize-handles-side-top{syntax: \"<length>\"; inherits: true; initial-value: 0px;}@property --et-resize-handles-side-bottom{syntax: \"<length>\"; inherits: true; initial-value: 8px;}@property --et-resize-handles-touch-edge-size{syntax: \"<length>\"; inherits: true; initial-value: 20px;}@property --et-resize-handles-touch-corner-size{syntax: \"<length>\"; inherits: true; initial-value: 28px;}.et-resize-handles{position:absolute;inset:calc(-1 * var(--et-resize-handles-outset));pointer-events:none}.et-resize-handle{--et-resize-handle-thickness: calc(var(--et-resize-handles-edge-size) + var(--et-resize-handles-outset));--et-resize-handle-corner: calc(var(--et-resize-handles-corner-size) + var(--et-resize-handles-outset));position:absolute;z-index:var(--et-resize-handles-z-index);touch-action:none;pointer-events:auto}.et-resize-handle--n{top:0;right:var(--et-resize-handles-edge-inset);left:var(--et-resize-handles-edge-inset);height:var(--et-resize-handle-thickness)}.et-resize-handle--s{right:var(--et-resize-handles-edge-inset);bottom:0;left:var(--et-resize-handles-edge-inset);height:var(--et-resize-handle-thickness)}.et-resize-handle--e,.et-resize-handle--w{top:var(--et-resize-handles-side-top);bottom:var(--et-resize-handles-side-bottom);width:var(--et-resize-handle-thickness)}.et-resize-handle--e{right:0}.et-resize-handle--w{left:0}.et-resize-handle--ne,.et-resize-handle--nw{top:0;width:var(--et-resize-handle-corner);height:var(--et-resize-handle-corner)}.et-resize-handle--ne{right:0}.et-resize-handle--nw{left:0}.et-resize-handle--se,.et-resize-handle--sw{bottom:0;width:var(--et-resize-handle-corner);height:var(--et-resize-handle-corner)}.et-resize-handle--se{right:0}.et-resize-handle--sw{left:0}@media(any-pointer:coarse){.et-resize-handle{--et-resize-handle-thickness: calc(var(--et-resize-handles-touch-edge-size) + var(--et-resize-handles-outset));--et-resize-handle-corner: calc(var(--et-resize-handles-touch-corner-size) + var(--et-resize-handles-outset))}}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
9245
9143
  }
9246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ResizeHandlesComponent, decorators: [{
9144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ResizeHandlesComponent, decorators: [{
9247
9145
  type: Component,
9248
9146
  args: [{ selector: 'et-resize-handles', template: `
9249
9147
  @for (edge of edges(); track edge) {
@@ -9261,10 +9159,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
9261
9159
  }], propDecorators: { edges: [{ type: i0.Input, args: [{ isSignal: true, alias: "edges", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], resizeStarted: [{ type: i0.Output, args: ["resizeStarted"] }], resizeMoved: [{ type: i0.Output, args: ["resizeMoved"] }], resizeEnded: [{ type: i0.Output, args: ["resizeEnded"] }], resizeCancelled: [{ type: i0.Output, args: ["resizeCancelled"] }] } });
9262
9160
 
9263
9161
  class ColorInteractiveStylesComponent {
9264
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ColorInteractiveStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9265
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: ColorInteractiveStylesComponent, isStandalone: true, selector: "et-color-interactive-styles", ngImport: i0, template: '', isInline: true, styles: ["@layer components{:where(.et-color-interactive){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}@media(hover:hover){:where(.et-color-interactive:hover:not(:has(.et-color-interactive-exclude:hover))),:where(.et-color-interactive-container:hover) :where(.et-color-interactive){--et-theme-color-primary-rgb: var(--et-color-primary-hover, var(--et-color-primary));--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary-hover, var(--et-color-on-primary));--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-hover, var(--et-color-primary-ink, var(--et-color-primary-hover, var(--et-color-primary))) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}}:where(.et-color-interactive:focus-visible){--et-theme-color-primary-rgb: var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary)));--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var( --et-color-on-primary-focus, var(--et-color-on-primary-hover, var(--et-color-on-primary)) );--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-focus, var( --et-color-primary-ink-hover, var( --et-color-primary-ink, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) ) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive:active:not(:has(.et-color-interactive-exclude:hover))),:where(.et-color-interactive-container:active) :where(.et-color-interactive){--et-theme-color-primary-rgb: var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) );--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var( --et-color-on-primary-active, var(--et-color-on-primary-focus, var(--et-color-on-primary-hover, var(--et-color-on-primary))) );--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-active, var( --et-color-primary-ink-focus, var( --et-color-primary-ink-hover, var( --et-color-primary-ink, var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) ) ) ) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive--has-focus:has(:focus-visible)){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive[aria-readonly=true]){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive[disabled]),:where(.et-color-interactive[aria-disabled=true]){--et-theme-color-primary-rgb: var( --et-color-primary-disabled, var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) );--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var( --et-color-on-primary-disabled, var( --et-color-on-primary-active, var(--et-color-on-primary-focus, var(--et-color-on-primary-hover, var(--et-color-on-primary))) ) );--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-disabled, var( --et-color-primary-ink-active, var( --et-color-primary-ink-focus, var( --et-color-primary-ink-hover, var( --et-color-primary-ink, var( --et-color-primary-disabled, var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) ) ) ) ) ) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
9162
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ColorInteractiveStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9163
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: ColorInteractiveStylesComponent, isStandalone: true, selector: "et-color-interactive-styles", ngImport: i0, template: '', isInline: true, styles: ["@layer components{:where(.et-color-interactive){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}@media(hover:hover){:where(.et-color-interactive:hover:not(:has(.et-color-interactive-exclude:hover))),:where(.et-color-interactive-container:hover) :where(.et-color-interactive){--et-theme-color-primary-rgb: var(--et-color-primary-hover, var(--et-color-primary));--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary-hover, var(--et-color-on-primary));--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-hover, var(--et-color-primary-ink, var(--et-color-primary-hover, var(--et-color-primary))) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}}:where(.et-color-interactive:focus-visible){--et-theme-color-primary-rgb: var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary)));--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var( --et-color-on-primary-focus, var(--et-color-on-primary-hover, var(--et-color-on-primary)) );--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-focus, var( --et-color-primary-ink-hover, var( --et-color-primary-ink, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) ) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive:active:not(:has(.et-color-interactive-exclude:hover))),:where(.et-color-interactive-container:active) :where(.et-color-interactive){--et-theme-color-primary-rgb: var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) );--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var( --et-color-on-primary-active, var(--et-color-on-primary-focus, var(--et-color-on-primary-hover, var(--et-color-on-primary))) );--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-active, var( --et-color-primary-ink-focus, var( --et-color-primary-ink-hover, var( --et-color-primary-ink, var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) ) ) ) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive--has-focus:has(:focus-visible)){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive[aria-readonly=true]){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive[disabled]),:where(.et-color-interactive[aria-disabled=true]){--et-theme-color-primary-rgb: var( --et-color-primary-disabled, var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) );--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var( --et-color-on-primary-disabled, var( --et-color-on-primary-active, var(--et-color-on-primary-focus, var(--et-color-on-primary-hover, var(--et-color-on-primary))) ) );--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-disabled, var( --et-color-primary-ink-active, var( --et-color-primary-ink-focus, var( --et-color-primary-ink-hover, var( --et-color-primary-ink, var( --et-color-primary-disabled, var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) ) ) ) ) ) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
9266
9164
  }
9267
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ColorInteractiveStylesComponent, decorators: [{
9165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ColorInteractiveStylesComponent, decorators: [{
9268
9166
  type: Component,
9269
9167
  args: [{ selector: 'et-color-interactive-styles', template: '', encapsulation: ViewEncapsulation.None, styles: ["@layer components{:where(.et-color-interactive){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}@media(hover:hover){:where(.et-color-interactive:hover:not(:has(.et-color-interactive-exclude:hover))),:where(.et-color-interactive-container:hover) :where(.et-color-interactive){--et-theme-color-primary-rgb: var(--et-color-primary-hover, var(--et-color-primary));--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary-hover, var(--et-color-on-primary));--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-hover, var(--et-color-primary-ink, var(--et-color-primary-hover, var(--et-color-primary))) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}}:where(.et-color-interactive:focus-visible){--et-theme-color-primary-rgb: var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary)));--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var( --et-color-on-primary-focus, var(--et-color-on-primary-hover, var(--et-color-on-primary)) );--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-focus, var( --et-color-primary-ink-hover, var( --et-color-primary-ink, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) ) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive:active:not(:has(.et-color-interactive-exclude:hover))),:where(.et-color-interactive-container:active) :where(.et-color-interactive){--et-theme-color-primary-rgb: var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) );--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var( --et-color-on-primary-active, var(--et-color-on-primary-focus, var(--et-color-on-primary-hover, var(--et-color-on-primary))) );--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-active, var( --et-color-primary-ink-focus, var( --et-color-primary-ink-hover, var( --et-color-primary-ink, var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) ) ) ) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive--has-focus:has(:focus-visible)){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive[aria-readonly=true]){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}:where(.et-color-interactive[disabled]),:where(.et-color-interactive[aria-disabled=true]){--et-theme-color-primary-rgb: var( --et-color-primary-disabled, var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) );--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-on-primary-rgb: var( --et-color-on-primary-disabled, var( --et-color-on-primary-active, var(--et-color-on-primary-focus, var(--et-color-on-primary-hover, var(--et-color-on-primary))) ) );--et-theme-color-on-primary-solid: rgb(var(--et-theme-color-on-primary-rgb));--et-theme-color-ink-rgb: var( --et-color-primary-ink-disabled, var( --et-color-primary-ink-active, var( --et-color-primary-ink-focus, var( --et-color-primary-ink-hover, var( --et-color-primary-ink, var( --et-color-primary-disabled, var( --et-color-primary-active, var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary))) ) ) ) ) ) ) );--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb))}}\n"] }]
9270
9168
  }] });
@@ -9285,10 +9183,10 @@ class ColorInteractiveContainerDirective {
9285
9183
  this.styleManager = injectStyleManager();
9286
9184
  this.styleManager.mount(ColorInteractiveStylesComponent);
9287
9185
  }
9288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ColorInteractiveContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9289
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ColorInteractiveContainerDirective, isStandalone: true, selector: "[etColorInteractiveContainer]", host: { classAttribute: "et-color-interactive-container" }, ngImport: i0 }); }
9186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ColorInteractiveContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9187
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: ColorInteractiveContainerDirective, isStandalone: true, selector: "[etColorInteractiveContainer]", host: { classAttribute: "et-color-interactive-container" }, ngImport: i0 }); }
9290
9188
  }
9291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ColorInteractiveContainerDirective, decorators: [{
9189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ColorInteractiveContainerDirective, decorators: [{
9292
9190
  type: Directive,
9293
9191
  args: [{
9294
9192
  selector: '[etColorInteractiveContainer]',
@@ -9311,10 +9209,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
9311
9209
  * used to have (see its own comment).
9312
9210
  */
9313
9211
  class ColorInteractiveExcludeDirective {
9314
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ColorInteractiveExcludeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9315
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ColorInteractiveExcludeDirective, isStandalone: true, selector: "[etColorInteractiveExclude]", host: { classAttribute: "et-color-interactive-exclude" }, ngImport: i0 }); }
9212
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ColorInteractiveExcludeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9213
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: ColorInteractiveExcludeDirective, isStandalone: true, selector: "[etColorInteractiveExclude]", host: { classAttribute: "et-color-interactive-exclude" }, ngImport: i0 }); }
9316
9214
  }
9317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ColorInteractiveExcludeDirective, decorators: [{
9215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ColorInteractiveExcludeDirective, decorators: [{
9318
9216
  type: Directive,
9319
9217
  args: [{
9320
9218
  selector: '[etColorInteractiveExclude]',
@@ -9348,10 +9246,10 @@ class ColorInteractiveHasFocusDirective {
9348
9246
  this.styleManager = injectStyleManager();
9349
9247
  this.styleManager.mount(ColorInteractiveStylesComponent);
9350
9248
  }
9351
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ColorInteractiveHasFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9352
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ColorInteractiveHasFocusDirective, isStandalone: true, selector: "[etColorInteractiveHasFocus]", host: { classAttribute: "et-color-interactive--has-focus" }, ngImport: i0 }); }
9249
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ColorInteractiveHasFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9250
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: ColorInteractiveHasFocusDirective, isStandalone: true, selector: "[etColorInteractiveHasFocus]", host: { classAttribute: "et-color-interactive--has-focus" }, ngImport: i0 }); }
9353
9251
  }
9354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ColorInteractiveHasFocusDirective, decorators: [{
9252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ColorInteractiveHasFocusDirective, decorators: [{
9355
9253
  type: Directive,
9356
9254
  args: [{
9357
9255
  selector: '[etColorInteractiveHasFocus]',
@@ -9379,10 +9277,10 @@ class ColorInteractiveDirective {
9379
9277
  this.styleManager = injectStyleManager();
9380
9278
  this.styleManager.mount(ColorInteractiveStylesComponent);
9381
9279
  }
9382
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ColorInteractiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9383
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ColorInteractiveDirective, isStandalone: true, selector: "[etColorInteractive]", host: { classAttribute: "et-color-interactive" }, ngImport: i0 }); }
9280
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ColorInteractiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9281
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: ColorInteractiveDirective, isStandalone: true, selector: "[etColorInteractive]", host: { classAttribute: "et-color-interactive" }, ngImport: i0 }); }
9384
9282
  }
9385
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ColorInteractiveDirective, decorators: [{
9283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ColorInteractiveDirective, decorators: [{
9386
9284
  type: Directive,
9387
9285
  args: [{
9388
9286
  selector: '[etColorInteractive]',
@@ -9523,10 +9421,10 @@ class ProvideSurfaceDirective {
9523
9421
  }
9524
9422
  this.forcedSurface.set(FORCED_SURFACE_UNSET);
9525
9423
  }
9526
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ProvideSurfaceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9527
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: ProvideSurfaceDirective, isStandalone: true, selector: "[etProvideSurface]", inputs: { surface: { classPropertyName: "surface", publicName: "etProvideSurface", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "surfaceClass()" } }, providers: [{ provide: SURFACE_PROVIDER, useExisting: ProvideSurfaceDirective }], ngImport: i0 }); }
9424
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ProvideSurfaceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9425
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: ProvideSurfaceDirective, isStandalone: true, selector: "[etProvideSurface]", inputs: { surface: { classPropertyName: "surface", publicName: "etProvideSurface", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "surfaceClass()" } }, providers: [{ provide: SURFACE_PROVIDER, useExisting: ProvideSurfaceDirective }], ngImport: i0 }); }
9528
9426
  }
9529
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ProvideSurfaceDirective, decorators: [{
9427
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ProvideSurfaceDirective, decorators: [{
9530
9428
  type: Directive,
9531
9429
  args: [{
9532
9430
  selector: '[etProvideSurface]',
@@ -9709,10 +9607,10 @@ class AutoSurfaceDirective {
9709
9607
  });
9710
9608
  });
9711
9609
  }
9712
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AutoSurfaceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9713
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: AutoSurfaceDirective, isStandalone: true, selector: "[etAutoSurface]", inputs: { surfaceProvider: { classPropertyName: "surfaceProvider", publicName: "surfaceProvider", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: ProvideSurfaceDirective }], ngImport: i0 }); }
9610
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AutoSurfaceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9611
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: AutoSurfaceDirective, isStandalone: true, selector: "[etAutoSurface]", inputs: { surfaceProvider: { classPropertyName: "surfaceProvider", publicName: "surfaceProvider", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: ProvideSurfaceDirective }], ngImport: i0 }); }
9714
9612
  }
9715
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AutoSurfaceDirective, decorators: [{
9613
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AutoSurfaceDirective, decorators: [{
9716
9614
  type: Directive,
9717
9615
  args: [{
9718
9616
  selector: '[etAutoSurface]',
@@ -10109,10 +10007,10 @@ class ProvideColorDirective {
10109
10007
  }
10110
10008
  this.forcedColor.set(FORCED_COLOR_UNSET);
10111
10009
  }
10112
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ProvideColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10113
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: ProvideColorDirective, isStandalone: true, selector: "[etProvideColor]", inputs: { color: { classPropertyName: "color", publicName: "etProvideColor", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "themeClass()" } }, providers: [{ provide: COLOR_PROVIDER, useExisting: ProvideColorDirective }], ngImport: i0 }); }
10010
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ProvideColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10011
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: ProvideColorDirective, isStandalone: true, selector: "[etProvideColor]", inputs: { color: { classPropertyName: "color", publicName: "etProvideColor", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "themeClass()" } }, providers: [{ provide: COLOR_PROVIDER, useExisting: ProvideColorDirective }], ngImport: i0 }); }
10114
10012
  }
10115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ProvideColorDirective, decorators: [{
10013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ProvideColorDirective, decorators: [{
10116
10014
  type: Directive,
10117
10015
  args: [{
10118
10016
  selector: '[etProvideColor]',
@@ -10124,10 +10022,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
10124
10022
  }], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: "etProvideColor", required: false }] }] } });
10125
10023
 
10126
10024
  class SurfaceInteractiveStylesComponent {
10127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SurfaceInteractiveStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: SurfaceInteractiveStylesComponent, isStandalone: true, selector: "et-surface-interactive-styles", ngImport: i0, template: '', isInline: true, styles: ["@layer components{:where(.et-surface-interactive){--et-surface-interaction-rgb: var(--et-surface-interaction);--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}@media(hover:hover){:where(.et-surface-interactive:hover){--et-surface-interaction-rgb: var(--et-surface-interaction-hover, var(--et-surface-interaction));--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}}:where(.et-surface-interactive:focus-visible){--et-surface-interaction-rgb: var( --et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction)) );--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}:where(.et-surface-interactive:active){--et-surface-interaction-rgb: var( --et-surface-interaction-active, var(--et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction))) );--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}:where(.et-surface-interactive[disabled]),:where(.et-surface-interactive[aria-disabled=true]){--et-surface-interaction-rgb: var( --et-surface-interaction-disabled, var( --et-surface-interaction-active, var(--et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction))) ) );--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
10025
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SurfaceInteractiveStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10026
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: SurfaceInteractiveStylesComponent, isStandalone: true, selector: "et-surface-interactive-styles", ngImport: i0, template: '', isInline: true, styles: ["@layer components{:where(.et-surface-interactive){--et-surface-interaction-rgb: var(--et-surface-interaction);--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}@media(hover:hover){:where(.et-surface-interactive:hover){--et-surface-interaction-rgb: var(--et-surface-interaction-hover, var(--et-surface-interaction));--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}}:where(.et-surface-interactive:focus-visible){--et-surface-interaction-rgb: var( --et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction)) );--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}:where(.et-surface-interactive:active){--et-surface-interaction-rgb: var( --et-surface-interaction-active, var(--et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction))) );--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}:where(.et-surface-interactive[disabled]),:where(.et-surface-interactive[aria-disabled=true]){--et-surface-interaction-rgb: var( --et-surface-interaction-disabled, var( --et-surface-interaction-active, var(--et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction))) ) );--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
10129
10027
  }
10130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SurfaceInteractiveStylesComponent, decorators: [{
10028
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SurfaceInteractiveStylesComponent, decorators: [{
10131
10029
  type: Component,
10132
10030
  args: [{ selector: 'et-surface-interactive-styles', template: '', encapsulation: ViewEncapsulation.None, styles: ["@layer components{:where(.et-surface-interactive){--et-surface-interaction-rgb: var(--et-surface-interaction);--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}@media(hover:hover){:where(.et-surface-interactive:hover){--et-surface-interaction-rgb: var(--et-surface-interaction-hover, var(--et-surface-interaction));--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}}:where(.et-surface-interactive:focus-visible){--et-surface-interaction-rgb: var( --et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction)) );--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}:where(.et-surface-interactive:active){--et-surface-interaction-rgb: var( --et-surface-interaction-active, var(--et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction))) );--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}:where(.et-surface-interactive[disabled]),:where(.et-surface-interactive[aria-disabled=true]){--et-surface-interaction-rgb: var( --et-surface-interaction-disabled, var( --et-surface-interaction-active, var(--et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction))) ) );--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}}\n"] }]
10133
10031
  }] });
@@ -10148,10 +10046,10 @@ class SurfaceInteractiveDirective {
10148
10046
  this.styleManager = injectStyleManager();
10149
10047
  this.styleManager.mount(SurfaceInteractiveStylesComponent);
10150
10048
  }
10151
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SurfaceInteractiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10152
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: SurfaceInteractiveDirective, isStandalone: true, selector: "[etSurfaceInteractive]", host: { classAttribute: "et-surface-interactive" }, ngImport: i0 }); }
10049
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SurfaceInteractiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10050
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: SurfaceInteractiveDirective, isStandalone: true, selector: "[etSurfaceInteractive]", host: { classAttribute: "et-surface-interactive" }, ngImport: i0 }); }
10153
10051
  }
10154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SurfaceInteractiveDirective, decorators: [{
10052
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SurfaceInteractiveDirective, decorators: [{
10155
10053
  type: Directive,
10156
10054
  args: [{
10157
10055
  selector: '[etSurfaceInteractive]',
@@ -10163,11 +10061,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
10163
10061
 
10164
10062
  // Generated from package.json by tools/scripts/generate-version.js - do not edit.
10165
10063
  /** The version of `@ethlete/core` this build was cut from. */
10166
- const CORE_VERSION = '5.0.0-next.56';
10064
+ const CORE_VERSION = '5.0.0-next.58';
10167
10065
 
10168
10066
  /**
10169
10067
  * Generated bundle index. Do not edit.
10170
10068
  */
10171
10069
 
10172
- export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, ANIMATION_DEBUG_STORAGE_KEY, AT_LEAST_ONE_REQUIRED, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AutoSurfaceDirective, BOUNDARY_ELEMENT_TOKEN, BREAKPOINT_INSTANCE_TOKEN, BREAKPOINT_ORDER, COLOR_PALETTE, COLOR_PROVIDER, CORE_VERSION, ClickOutsideDirective, ColorInteractiveContainerDirective, ColorInteractiveDirective, ColorInteractiveExcludeDirective, ColorInteractiveHasFocusDirective, DEFAULT_MULTI_INSTANCE_RELS, DEFAULT_MULTI_INSTANCE_TAGS, DEFAULT_OVERLAY_LAYER, DEFAULT_VIEWPORT_CONFIG, DISABLE_LOGGER_PARAM, DragHandleDirective, ET_DISABLE_SCROLL_TOP, ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE, ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE, ET_PROPERTY_REMOVED, ET_RESTORE_SCROLL, EthleteValidators, FOCUSABLE_SELECTOR, FOCUS_VISIBLE_TRACKER_TOKEN, HtmlToMarkdownPipe, IS_ARRAY_NOT_EMPTY, IS_EMAIL, InferMimeTypePipe, InitialsPipe, IsArrayNotEmpty, IsEmail, jsonLd as JsonLD, KeyPressManager, MUST_MATCH, MarkdownToHtmlPipe, MatchStateType, MustMatch, NOTIFICATION_CLICK_MESSAGE_TYPE, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OVERLAY_LAYER_ATTRIBUTE, PropsDirective, ProvideColorDirective, ProvideSurfaceDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeHandlesComponent, RestoreScrollDirective, RuntimeError, SURFACE_COLOR, SURFACE_PROVIDER, SURFACE_TYPE, SWIPE_VELOCITY_WINDOW_MS, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SlugifyPipe, StructuredDataComponent, SurfaceInteractiveDirective, ToArrayPipe, TypedQueryList, UNSAVED_CHANGES_TITLE_MARKER, ValidateAtLeastOneRequired, anchoredOverlayPosition, animationDebugLog, applyAlternateBinding, applyAlternateLanguagesBindings, applyArticleBindings, applyAuthorBinding, applyCanonicalBinding, applyCenteredPosition, applyDescriptionBinding, applyFaviconOverlay, applyGlobalPosition, applyHeadBinding, applyHeadTitleBinding, applyHeadTitleMarker, applyHostListener, applyHostListeners, applyInitialFocus, applyKeywordsBinding, applyLinkBinding, applyMetaBinding, applyNextBinding, applyOgBinding, applyOpenGraphBindings, applyPrevBinding, applyResourceHintsBindings, applyRobotsBinding, applySocialMediaBindings, applyStructuredDataBinding, applyTwitterCardBindings, bindProps, boolBreakpointTransform, boundingClientRectToElementRect, breakpointTransformBase, buildElementSignal, buildSignalEffects, canUseSessionMemory, clamp, clone, cloneFormGroup, computedTillFalsy, computedTillTruthy, controlValueSignal, controlValueSignalWithPrevious, copyToClipboard, createAnchoredPositionCleanup, createArrayPropertyBinding, createAutoSessionMemoryKey, createCanAnimateSignal, createComponentId, createCssColorThemeName, createCssSurfaceName, createDependencyStash, createDestroy, createDocumentElementSignal, createElementDictionary, createElementDimensions, createEmptyElementSignal, createFlipAnimation, createFlipAnimationGroup, createHostProps, createIsRenderedSignal, createLogger, createObjectUrlHandle, createOverlayRuntimeRef, createPropHandlers, createPropertyBinding, createProps, createRootThemeCss, createRoute, createRouterState, createRxHostListener, createSessionMemory, createSetup, createSwatchCss, createSwipeTracker, createTailwindColorThemes, createTailwindCssVar, createTailwindRgbVar, createThemeStyle, createUnsavedChangesGuard, createUnsavedChangesTabLock, createUnsavedChangesTracker, createUserConsentProvider, deferredSignal, defineLabels, defineProvider, defineRootProvider, defineStaticProvider, defineStaticRootProvider, deleteCookie, dragGestureFrom, easeElastic, easeIn, easeInOut, easeLinear, easeOut, easeOutBack, easeOutBackStrong, elementCanScroll, enableAnchoredOverlayPositionExtras, equal, fetchDeployedBuildFingerprint, firstElementSignal, focusElement, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementScrollCoordinates, getFocusableElements, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getHeadingElement, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, getScrollContainerTarget, getScrollItemTarget, getScrollSnapTarget, hasCookie, holdScrollRestoration, htmlToMarkdown, inferMimeType, initials, injectAngularRootElement, injectAnimatedBlockSize, injectAppUpdates, injectAppUpdatesConfig, injectBoundaryElement, injectBreakpointInput, injectBreakpointIsMatched, injectBreakpointObserver, injectCanHover, injectColorPalette, injectColorThemes, injectColorThemesPrefix, injectCurrentBreakpoint, injectDefaultColorTheme, injectDefaultSurfaceTheme, injectDeviceInputType, injectDisplayOrientation, injectErrorTheme, injectFaviconStore, injectFileDownload, injectFocusVisibleTracker, injectFragment, injectHasPrecisionInput, injectHasTouchInput, injectHostElement, injectIs2Xl, injectIsDocumentVisible, injectIsLandscape, injectIsLg, injectIsMd, injectIsPortrait, injectIsRouterInitialized, injectIsSm, injectIsXl, injectIsXs, injectLinkStore, injectLinkStoreConfig, injectLocale, injectMediaQueryIsMatched, injectMetaConfig, injectMetaStore, injectNotifications, injectObserveBreakpoint, injectObserveMediaQuery, injectOverlayRuntime, injectParentSurface, injectPathParam, injectPathParamChanges, injectPathParams, injectPrefersReducedMotion, injectQueryParam, injectQueryParamChanges, injectQueryParams, injectRenderer, injectRoute, injectRouteData, injectRouteDataItem, injectRouteTitle, injectRouterEvent, injectRouterNavigationState, injectRouterState, injectScrollbarDimensions, injectStructuredDataConfig, injectStructuredDataStore, injectStyleManager, injectSuccessTheme, injectSurfaceContextTracker, injectSurfaceThemes, injectSurfaceThemesPrefix, injectSurfaceType, injectTemplateRef, injectTitleConfig, injectTitleStore, injectUnsavedChangesCoordinator, injectUrl, injectViewportConfig, injectViewportDimensions, injectViewportSize, injectWarningTheme, isAnimationDebugEnabled, isArray, isElementSignal, isElementVisible, isFocusable, isGroupMatch, isHTMLElement, isKnockoutMatch, isObject, isOnHigherOverlayLayer, isStaleBuildError, markdownToHtml, matchesReducedMotion, maybeSignalValue, memoizeSignal, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, normalizeUnsavedChangesSource, numberBreakpointTransform, onOverlayViewportInsetsChange, overlayViewportInsets, overlayViewportInsetsFor, previousSignalValue, provideAppUpdates, provideAppUpdatesConfig, provideAppUpdatesInstance, provideBoundaryElement, provideBreakpointInstance, provideBreakpointObserver, provideColorPalette, provideColorThemes, provideColorThemesWithTailwind4, provideFaviconStore, provideFocusVisibleTracker, provideLinkStore, provideLinkStoreConfig, provideLocale, provideMetaConfig, provideMetaStore, provideNotifications, provideOverlayRuntime, provideRenderer, provideStructuredDataConfig, provideStructuredDataStore, provideStyleManager, provideSurfaceContextTracker, provideSurfaceThemesWithTailwind4, provideTitleConfig, provideTitleStore, provideUnsavedChangesCoordinator, provideViewportConfig, randomId, readBuildFingerprint, readFromClipboard, registerAnchoredPositionMiddlewareExtras, registerAnchoredPositionSetup, reserveOverlayViewportSpace, resetPositioningStyles, resolveAppRootColorProvider, resolveOverlayLayer, resolveSurfaceByElevation, round, routerDisableScrollTop, routerRestoreScroll, scrollToElement, setBackdropStyles, setBaseElementStyles, setCookie, setInputSignal, setupFocusTrap, setupPositioning, setupScrollRestoration, signalAnimatedNumber, signalAttributes, signalClasses, signalDeferredLoading, signalElementChildren, signalElementDimensions, signalElementIntersection, signalElementLastScrollDirection, signalElementMutations, signalElementScrollState, signalHostAttributes, signalHostClasses, signalHostElementDimensions, signalHostElementIntersection, signalHostElementLastScrollDirection, signalHostElementMutations, signalHostElementScrollState, signalHostStyles, signalIsRendered, signalStyles, slugify, suppressTextSelection, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, toInjectFn, toProvideFn, toStringBinding, toToken, transformOrReturn, typedBreakpointTransform, unbindProps, useCursorDragScroll, writeScrollbarSizeToCssVariables, writeViewportSizeToCssVariables, ɵProvideColorThemes, ɵProvideColorThemesPrefix, ɵProvideSurfaceThemes, ɵProvideSurfaceThemesPrefix };
10070
+ export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, ANIMATION_DEBUG_STORAGE_KEY, AT_LEAST_ONE_REQUIRED, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AutoSurfaceDirective, BOUNDARY_ELEMENT_TOKEN, BREAKPOINT_INSTANCE_TOKEN, BREAKPOINT_ORDER, COLOR_PALETTE, COLOR_PROVIDER, CORE_VERSION, ClickOutsideDirective, ColorInteractiveContainerDirective, ColorInteractiveDirective, ColorInteractiveExcludeDirective, ColorInteractiveHasFocusDirective, DEFAULT_MULTI_INSTANCE_RELS, DEFAULT_MULTI_INSTANCE_TAGS, DEFAULT_OVERLAY_LAYER, DEFAULT_VIEWPORT_CONFIG, DISABLE_LOGGER_PARAM, DragHandleDirective, ET_DISABLE_SCROLL_TOP, ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE, ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE, ET_PROPERTY_REMOVED, ET_RESTORE_SCROLL, EasingTokensStylesComponent, EthleteValidators, FOCUSABLE_SELECTOR, FOCUS_VISIBLE_TRACKER_TOKEN, HtmlToMarkdownPipe, IS_ARRAY_NOT_EMPTY, IS_EMAIL, InferMimeTypePipe, InitialsPipe, IsArrayNotEmpty, IsEmail, jsonLd as JsonLD, KeyPressManager, MUST_MATCH, MarkdownToHtmlPipe, MatchStateType, MustMatch, NOTIFICATION_CLICK_MESSAGE_TYPE, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OVERLAY_LAYER_ATTRIBUTE, ProvideColorDirective, ProvideSurfaceDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeHandlesComponent, RestoreScrollDirective, RuntimeError, SURFACE_COLOR, SURFACE_PROVIDER, SURFACE_TYPE, SWIPE_VELOCITY_WINDOW_MS, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SlugifyPipe, StructuredDataComponent, SurfaceInteractiveDirective, ToArrayPipe, TypedQueryList, UNSAVED_CHANGES_TITLE_MARKER, ValidateAtLeastOneRequired, anchoredOverlayPosition, animationDebugLog, applyAlternateBinding, applyAlternateLanguagesBindings, applyArticleBindings, applyAuthorBinding, applyCanonicalBinding, applyCenteredPosition, applyDescriptionBinding, applyFaviconOverlay, applyGlobalPosition, applyHeadBinding, applyHeadTitleBinding, applyHeadTitleMarker, applyHostListener, applyHostListeners, applyInitialFocus, applyKeywordsBinding, applyLinkBinding, applyMetaBinding, applyNextBinding, applyOgBinding, applyOpenGraphBindings, applyPrevBinding, applyResourceHintsBindings, applyRobotsBinding, applySocialMediaBindings, applyStructuredDataBinding, applyTwitterCardBindings, boolBreakpointTransform, boundingClientRectToElementRect, breakpointTransformBase, buildElementSignal, buildSignalEffects, canUseSessionMemory, clamp, clone, cloneFormGroup, computedTillFalsy, computedTillTruthy, controlValueSignal, controlValueSignalWithPrevious, copyToClipboard, createAnchoredPositionCleanup, createArrayPropertyBinding, createAutoSessionMemoryKey, createCanAnimateSignal, createComponentId, createCssColorThemeName, createCssSurfaceName, createDestroy, createDocumentElementSignal, createElementDimensions, createEmptyElementSignal, createFlipAnimation, createFlipAnimationGroup, createIsRenderedSignal, createLogger, createObjectUrlHandle, createOverlayRuntimeRef, createPropertyBinding, createRootThemeCss, createRoute, createRouterState, createRxHostListener, createSessionMemory, createSwatchCss, createSwipeTracker, createTailwindColorThemes, createTailwindCssVar, createTailwindRgbVar, createThemeStyle, createUnsavedChangesGuard, createUnsavedChangesTabLock, createUnsavedChangesTracker, createUserConsentProvider, deferredSignal, defineLabels, defineProvider, defineRootProvider, defineStaticProvider, defineStaticRootProvider, deleteCookie, dragGestureFrom, easeElastic, easeIn, easeInOut, easeLinear, easeOut, easeOutBack, easeOutBackStrong, elementCanScroll, enableAnchoredOverlayPositionExtras, equal, fetchDeployedBuildFingerprint, firstElementSignal, focusElement, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementScrollCoordinates, getFocusableElements, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getHeadingElement, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, getScrollContainerTarget, getScrollItemTarget, getScrollSnapTarget, hasCookie, holdScrollRestoration, htmlToMarkdown, inferMimeType, initials, injectAngularRootElement, injectAnimatedBlockSize, injectAppUpdates, injectAppUpdatesConfig, injectBoundaryElement, injectBreakpointInput, injectBreakpointIsMatched, injectBreakpointObserver, injectCanHover, injectColorPalette, injectColorThemes, injectColorThemesPrefix, injectCurrentBreakpoint, injectDefaultColorTheme, injectDefaultSurfaceTheme, injectDeviceInputType, injectDisplayOrientation, injectErrorTheme, injectFaviconStore, injectFileDownload, injectFocusVisibleTracker, injectFragment, injectHasPrecisionInput, injectHasTouchInput, injectHostElement, injectIs2Xl, injectIsDocumentVisible, injectIsLandscape, injectIsLg, injectIsMd, injectIsPortrait, injectIsRouterInitialized, injectIsSm, injectIsXl, injectIsXs, injectLinkStore, injectLinkStoreConfig, injectLocale, injectMediaQueryIsMatched, injectMetaConfig, injectMetaStore, injectNotifications, injectObserveBreakpoint, injectObserveMediaQuery, injectOverlayRuntime, injectParentSurface, injectPathParam, injectPathParamChanges, injectPathParams, injectPrefersReducedMotion, injectQueryParam, injectQueryParamChanges, injectQueryParams, injectRenderer, injectRoute, injectRouteData, injectRouteDataItem, injectRouteTitle, injectRouterEvent, injectRouterNavigationState, injectRouterState, injectScrollbarDimensions, injectStructuredDataConfig, injectStructuredDataStore, injectStyleManager, injectSuccessTheme, injectSurfaceContextTracker, injectSurfaceThemes, injectSurfaceThemesPrefix, injectSurfaceType, injectTemplateRef, injectTitleConfig, injectTitleStore, injectUnsavedChangesCoordinator, injectUrl, injectViewportConfig, injectViewportDimensions, injectViewportSize, injectWarningTheme, isAnimationDebugEnabled, isArray, isElement, isElementSignal, isElementVisible, isFocusable, isGroupMatch, isHTMLElement, isHTMLOrSVGElement, isKnockoutMatch, isObject, isOnHigherOverlayLayer, isStaleBuildError, markdownToHtml, matchesReducedMotion, maybeSignalValue, memoizeSignal, mountEasingTokens, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, normalizeUnsavedChangesSource, numberBreakpointTransform, onOverlayViewportInsetsChange, overlayViewportInsets, overlayViewportInsetsFor, ownsActiveElement, previousSignalValue, provideAppUpdates, provideAppUpdatesConfig, provideAppUpdatesInstance, provideBoundaryElement, provideBreakpointInstance, provideBreakpointObserver, provideColorPalette, provideColorThemes, provideColorThemesWithTailwind4, provideFaviconStore, provideFocusVisibleTracker, provideLinkStore, provideLinkStoreConfig, provideLocale, provideMetaConfig, provideMetaStore, provideNotifications, provideOverlayRuntime, provideRenderer, provideStructuredDataConfig, provideStructuredDataStore, provideStyleManager, provideSurfaceContextTracker, provideSurfaceThemesWithTailwind4, provideTitleConfig, provideTitleStore, provideUnsavedChangesCoordinator, provideViewportConfig, randomId, readBuildFingerprint, readFromClipboard, registerAnchoredPositionMiddlewareExtras, registerAnchoredPositionSetup, reserveOverlayViewportSpace, resetPositioningStyles, resolveAppRootColorProvider, resolveOverlayLayer, resolveSurfaceByElevation, round, routerDisableScrollTop, routerRestoreScroll, scrollToElement, setBackdropStyles, setBaseElementStyles, setCookie, setInputSignal, setupFocusTrap, setupPositioning, setupScrollRestoration, signalAnimatedNumber, signalAttributes, signalClasses, signalCountdown, signalDeferredLoading, signalElementChildren, signalElementDimensions, signalElementIntersection, signalElementLastScrollDirection, signalElementMutations, signalElementScrollState, signalHostAttributes, signalHostClasses, signalHostElementDimensions, signalHostElementIntersection, signalHostElementLastScrollDirection, signalHostElementMutations, signalHostElementScrollState, signalHostStyles, signalIsRendered, signalStyles, slugify, suppressTextSelection, switchQueryListChanges, syncSignal, toArray, toArrayTrackByFn, toInjectFn, toProvideFn, toStringBinding, toToken, transformOrReturn, typedBreakpointTransform, useCursorDragScroll, writeScrollbarSizeToCssVariables, writeViewportSizeToCssVariables, ɵProvideColorThemes, ɵProvideColorThemesPrefix, ɵProvideSurfaceThemes, ɵProvideSurfaceThemesPrefix };
10173
10071
  //# sourceMappingURL=ethlete-core.mjs.map