@ethlete/core 5.0.0-next.8 → 5.0.0-next.9

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, ElementRef, Directive, assertInInjectionContext, DestroyRef, TemplateRef, QueryList, NgZone, signal, isSignal, untracked, DOCUMENT, linkedSignal, isDevMode, computed, afterNextRender, effect, Injector, booleanAttribute, numberAttribute, runInInjectionContext, RendererStyleFlags2, PLATFORM_ID, ApplicationRef, RendererFactory2, EnvironmentInjector, createComponent, model, ViewContainerRef, input, output, Pipe, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { InjectionToken, inject, ElementRef, Directive, assertInInjectionContext, DestroyRef, TemplateRef, QueryList, NgZone, signal, isSignal, untracked, DOCUMENT, linkedSignal, isDevMode, computed, afterNextRender, effect, Injector, booleanAttribute, numberAttribute, runInInjectionContext, RendererStyleFlags2, PLATFORM_ID, ApplicationRef, RendererFactory2, EnvironmentInjector, createComponent, model, ViewContainerRef, input, output, inputBinding, Pipe, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { takeUntilDestroyed, toSignal, toObservable, outputFromObservable } from '@angular/core/rxjs-interop';
4
4
  import { Subject, BehaviorSubject, debounceTime, combineLatest, map, merge, fromEvent, filter, tap, switchMap, startWith, of, timer, takeUntil, pairwise, distinctUntilChanged, take, Observable, concatMap, EMPTY, concat, defer, exhaustMap, share } from 'rxjs';
5
5
  import { FormGroup, FormArray, FormControl } from '@angular/forms';
@@ -77,15 +77,15 @@ class AnimatableDirective {
77
77
  this.activeAnimationCount = clampedVal;
78
78
  this.hostActiveAnimationCount$.next(clampedVal);
79
79
  }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AnimatableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
81
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.1", type: AnimatableDirective, isStandalone: true, selector: "[etAnimatable]", providers: [
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: AnimatableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
81
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.13", type: AnimatableDirective, isStandalone: true, selector: "[etAnimatable]", providers: [
82
82
  {
83
83
  provide: ANIMATABLE_TOKEN,
84
84
  useExisting: AnimatableDirective,
85
85
  },
86
86
  ], exportAs: ["etAnimatable"], ngImport: i0 }); }
87
87
  }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AnimatableDirective, decorators: [{
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: AnimatableDirective, decorators: [{
89
89
  type: Directive,
90
90
  args: [{
91
91
  selector: '[etAnimatable]',
@@ -623,7 +623,7 @@ const signalAnimatedNumber = (source, options = {}) => {
623
623
  const easing = options.easing ?? easeOut;
624
624
  const round = options.round ?? ((v) => Math.round(v));
625
625
  const initialValue = options.initialValue ?? 0;
626
- const animatedValue = signal(initialValue, ...(ngDevMode ? [{ debugName: "animatedValue" }] : []));
626
+ const animatedValue = signal(initialValue, ...(ngDevMode ? [{ debugName: "animatedValue" }] : /* istanbul ignore next */ []));
627
627
  let rafId = null;
628
628
  let currentAnimatedValue = initialValue;
629
629
  const cancelAnimation = () => {
@@ -901,12 +901,12 @@ const firstElementSignal = (el) => computed(() => {
901
901
  });
902
902
 
903
903
  const signalIsRendered = () => {
904
- const isRendered = signal(false, ...(ngDevMode ? [{ debugName: "isRendered" }] : []));
904
+ const isRendered = signal(false, ...(ngDevMode ? [{ debugName: "isRendered" }] : /* istanbul ignore next */ []));
905
905
  afterNextRender(() => isRendered.set(true));
906
906
  return isRendered.asReadonly();
907
907
  };
908
908
  const createIsRenderedSignal = () => {
909
- const value = signal(false, ...(ngDevMode ? [{ debugName: "value" }] : []));
909
+ const value = signal(false, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
910
910
  nextFrame(() => {
911
911
  if (!value()) {
912
912
  console.error('Render signal was not set to true. This can cause unexpected behavior. Make sure to .bind() the render signal at the end of the constructor.');
@@ -918,7 +918,7 @@ const createIsRenderedSignal = () => {
918
918
  };
919
919
  };
920
920
  const createCanAnimateSignal = () => {
921
- const value = signal(false, ...(ngDevMode ? [{ debugName: "value" }] : []));
921
+ const value = signal(false, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
922
922
  nextFrame(() => {
923
923
  value.set(true);
924
924
  });
@@ -962,7 +962,7 @@ const signalElementDimensions = (el) => {
962
962
  const zone = inject(NgZone);
963
963
  const isRendered = signalIsRendered();
964
964
  const initialValue = () => createElementDimensions(firstEl().currentElement);
965
- const elementDimensionsSignal = signal(initialValue(), ...(ngDevMode ? [{ debugName: "elementDimensionsSignal" }] : []));
965
+ const elementDimensionsSignal = signal(initialValue(), ...(ngDevMode ? [{ debugName: "elementDimensionsSignal" }] : /* istanbul ignore next */ []));
966
966
  const observer = new ResizeObserver((e) => {
967
967
  if (!isRendered())
968
968
  return;
@@ -1007,7 +1007,7 @@ const injectViewportSize = () => {
1007
1007
  const win = document.defaultView;
1008
1008
  return { width: win?.innerWidth ?? 0, height: win?.innerHeight ?? 0 };
1009
1009
  };
1010
- const size = signal(getSize(), ...(ngDevMode ? [{ debugName: "size" }] : []));
1010
+ const size = signal(getSize(), ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
1011
1011
  const onResize = () => zone.run(() => size.set(getSize()));
1012
1012
  const vv = document.defaultView?.visualViewport;
1013
1013
  if (vv) {
@@ -1050,7 +1050,7 @@ const syncSignal = (from, to, options) => {
1050
1050
  untracked(() => {
1051
1051
  to.set(formVal);
1052
1052
  });
1053
- }, ...(ngDevMode ? [{ debugName: "ref" }] : []));
1053
+ }, ...(ngDevMode ? [{ debugName: "ref" }] : /* istanbul ignore next */ []));
1054
1054
  return ref;
1055
1055
  };
1056
1056
  const maybeSignalValue = (value) => {
@@ -1064,14 +1064,14 @@ const maybeSignalValue = (value) => {
1064
1064
  * All subsequent changes inside the computation will be ignored.
1065
1065
  */
1066
1066
  const computedTillTruthy = (source) => {
1067
- const value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
1067
+ const value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
1068
1068
  const ref = effect(() => {
1069
1069
  const val = source();
1070
1070
  if (val) {
1071
1071
  value.set(val);
1072
1072
  ref.destroy();
1073
1073
  }
1074
- }, ...(ngDevMode ? [{ debugName: "ref" }] : []));
1074
+ }, ...(ngDevMode ? [{ debugName: "ref" }] : /* istanbul ignore next */ []));
1075
1075
  return value.asReadonly();
1076
1076
  };
1077
1077
  /**
@@ -1079,14 +1079,14 @@ const computedTillTruthy = (source) => {
1079
1079
  * All subsequent changes inside the computation will be ignored.
1080
1080
  */
1081
1081
  const computedTillFalsy = (source) => {
1082
- const value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
1082
+ const value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
1083
1083
  const ref = effect(() => {
1084
1084
  const val = source();
1085
1085
  if (!val) {
1086
1086
  value.set(val);
1087
1087
  ref.destroy();
1088
1088
  }
1089
- }, ...(ngDevMode ? [{ debugName: "ref" }] : []));
1089
+ }, ...(ngDevMode ? [{ debugName: "ref" }] : /* istanbul ignore next */ []));
1090
1090
  return value.asReadonly();
1091
1091
  };
1092
1092
  /**
@@ -1094,7 +1094,7 @@ const computedTillFalsy = (source) => {
1094
1094
  * During that time, the signal will be set to `null`.
1095
1095
  */
1096
1096
  const deferredSignal = (valueFn) => {
1097
- const valueSignal = signal(null, ...(ngDevMode ? [{ debugName: "valueSignal" }] : []));
1097
+ const valueSignal = signal(null, ...(ngDevMode ? [{ debugName: "valueSignal" }] : /* istanbul ignore next */ []));
1098
1098
  afterNextRender(() => {
1099
1099
  valueSignal.set(valueFn());
1100
1100
  });
@@ -1229,7 +1229,7 @@ const resolveFromMap = (map, bp, defaultValue) => {
1229
1229
  const breakpointTransformBase = (coerce) => {
1230
1230
  const currentBp = injectCurrentBreakpoint();
1231
1231
  const injector = inject(Injector);
1232
- const raw = signal(undefined, ...(ngDevMode ? [{ debugName: "raw" }] : []));
1232
+ const raw = signal(undefined, ...(ngDevMode ? [{ debugName: "raw" }] : /* istanbul ignore next */ []));
1233
1233
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1234
1234
  let capturedDefault = undefined;
1235
1235
  let initialized = false;
@@ -1355,7 +1355,7 @@ const controlValueSignal = (control, options) => {
1355
1355
  * The first item in the pair is the previous value and the second item is the current value.
1356
1356
  */
1357
1357
  const controlValueSignalWithPrevious = (control, options) => {
1358
- const data = linkedSignal({ ...(ngDevMode ? { debugName: "data" } : {}), source: controlValueSignal(control, options),
1358
+ const data = linkedSignal({ ...(ngDevMode ? { debugName: "data" } : /* istanbul ignore next */ {}), source: controlValueSignal(control, options),
1359
1359
  computation: (curr, prev) => [prev?.source ?? null, curr] });
1360
1360
  return data.asReadonly();
1361
1361
  };
@@ -1366,7 +1366,7 @@ const signalElementMutations = (el, options) => {
1366
1366
  const firstEl = firstElementSignal(elements);
1367
1367
  const zone = inject(NgZone);
1368
1368
  const isRendered = signalIsRendered();
1369
- const elementMutationsSignal = signal(null, ...(ngDevMode ? [{ debugName: "elementMutationsSignal" }] : []));
1369
+ const elementMutationsSignal = signal(null, ...(ngDevMode ? [{ debugName: "elementMutationsSignal" }] : /* istanbul ignore next */ []));
1370
1370
  const observer = new MutationObserver((e) => {
1371
1371
  if (!isRendered())
1372
1372
  return;
@@ -1867,8 +1867,8 @@ const signalElementIntersection = (el, options) => {
1867
1867
  const zone = inject(NgZone);
1868
1868
  const isRendered = signalIsRendered();
1869
1869
  const isEnabled = options?.enabled ?? signal(true);
1870
- const elementIntersectionSignal = signal([], ...(ngDevMode ? [{ debugName: "elementIntersectionSignal" }] : []));
1871
- const observer = signal(null, ...(ngDevMode ? [{ debugName: "observer" }] : []));
1870
+ const elementIntersectionSignal = signal([], ...(ngDevMode ? [{ debugName: "elementIntersectionSignal" }] : /* istanbul ignore next */ []));
1871
+ const observer = signal(null, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
1872
1872
  const currentlyObservedElements = new Set();
1873
1873
  const updateIntersections = (entries) => {
1874
1874
  let currentValues = [...elementIntersectionSignal()];
@@ -1984,7 +1984,7 @@ const signalElementLastScrollDirection = (el) => {
1984
1984
  const elements = buildElementSignal(el);
1985
1985
  const element = firstElementSignal(elements);
1986
1986
  const destroyRef = inject(DestroyRef);
1987
- const lastScrollDirection = signal(null, ...(ngDevMode ? [{ debugName: "lastScrollDirection" }] : []));
1987
+ const lastScrollDirection = signal(null, ...(ngDevMode ? [{ debugName: "lastScrollDirection" }] : /* istanbul ignore next */ []));
1988
1988
  let lastScrollTop = 0;
1989
1989
  let lastScrollLeft = 0;
1990
1990
  toObservable(element)
@@ -2045,7 +2045,7 @@ const signalElementScrollState = (el, options) => {
2045
2045
  element.scrollTop = scrollPosition.top;
2046
2046
  ref.destroy();
2047
2047
  }
2048
- }, ...(ngDevMode ? [{ debugName: "ref" }] : []));
2048
+ }, ...(ngDevMode ? [{ debugName: "ref" }] : /* istanbul ignore next */ []));
2049
2049
  }
2050
2050
  const notScrollable = (dimensions) => ({
2051
2051
  canScroll: false,
@@ -2142,11 +2142,11 @@ const useCursorDragScroll = (el, options) => {
2142
2142
  const { enabled = signal(true), allowedDirection = 'both' } = options ?? {};
2143
2143
  const scrollState = signalElementScrollState(elements);
2144
2144
  const renderer = injectRenderer();
2145
- const isDragging = signal(false, ...(ngDevMode ? [{ debugName: "isDragging" }] : []));
2146
- const isInitDragging = signal(false, ...(ngDevMode ? [{ debugName: "isInitDragging" }] : []));
2147
- const initialDragPosition = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "initialDragPosition" }] : []));
2148
- const initialScrollPosition = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "initialScrollPosition" }] : []));
2149
- const dragAmount = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "dragAmount" }] : []));
2145
+ const isDragging = signal(false, ...(ngDevMode ? [{ debugName: "isDragging" }] : /* istanbul ignore next */ []));
2146
+ const isInitDragging = signal(false, ...(ngDevMode ? [{ debugName: "isInitDragging" }] : /* istanbul ignore next */ []));
2147
+ const initialDragPosition = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "initialDragPosition" }] : /* istanbul ignore next */ []));
2148
+ const initialScrollPosition = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "initialScrollPosition" }] : /* istanbul ignore next */ []));
2149
+ const dragAmount = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "dragAmount" }] : /* istanbul ignore next */ []));
2150
2150
  const document = inject(DOCUMENT);
2151
2151
  const canScroll = computed(() => {
2152
2152
  const currentScrollState = scrollState();
@@ -2159,7 +2159,7 @@ const useCursorDragScroll = (el, options) => {
2159
2159
  case 'vertical':
2160
2160
  return currentScrollState.canScrollVertically;
2161
2161
  }
2162
- }, ...(ngDevMode ? [{ debugName: "canScroll" }] : []));
2162
+ }, ...(ngDevMode ? [{ debugName: "canScroll" }] : /* istanbul ignore next */ []));
2163
2163
  // Cleanup if the element the cursor drag scroll is bound to gets changed
2164
2164
  effect(() => {
2165
2165
  const { previousElement } = element();
@@ -2375,7 +2375,7 @@ const createRouterState = (router) => {
2375
2375
  const injectRouterState = memoizeSignal(() => {
2376
2376
  const event = injectRouterEvent();
2377
2377
  const router = inject(Router);
2378
- const routerState = signal(createRouterState(router), ...(ngDevMode ? [{ debugName: "routerState" }] : []));
2378
+ const routerState = signal(createRouterState(router), ...(ngDevMode ? [{ debugName: "routerState" }] : /* istanbul ignore next */ []));
2379
2379
  effect(() => {
2380
2380
  const e = event();
2381
2381
  untracked(() => {
@@ -2392,31 +2392,31 @@ const injectRouterState = memoizeSignal(() => {
2392
2392
  /** Inject a signal containing the current route fragment (the part after the # inside the url if present) */
2393
2393
  const injectFragment = (config) => {
2394
2394
  const routerState = injectRouterState();
2395
- const fragment = computed(() => routerState().fragment, ...(ngDevMode ? [{ debugName: "fragment" }] : []));
2395
+ const fragment = computed(() => routerState().fragment, ...(ngDevMode ? [{ debugName: "fragment" }] : /* istanbul ignore next */ []));
2396
2396
  return transformOrReturn(fragment, config);
2397
2397
  };
2398
2398
  /** Inject all currently available query parameters as a signal */
2399
2399
  const injectQueryParams = () => {
2400
2400
  const routerState = injectRouterState();
2401
- const queryParams = computed(() => routerState().queryParams, ...(ngDevMode ? [{ debugName: "queryParams" }] : []));
2401
+ const queryParams = computed(() => routerState().queryParams, ...(ngDevMode ? [{ debugName: "queryParams" }] : /* istanbul ignore next */ []));
2402
2402
  return queryParams;
2403
2403
  };
2404
2404
  /** Inject all currently available route data as a signal */
2405
2405
  const injectRouteData = () => {
2406
2406
  const routerState = injectRouterState();
2407
- const data = computed(() => routerState().data, ...(ngDevMode ? [{ debugName: "data" }] : []));
2407
+ const data = computed(() => routerState().data, ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
2408
2408
  return data;
2409
2409
  };
2410
2410
  /** Inject the current route title as a signal */
2411
2411
  const injectRouteTitle = (config) => {
2412
2412
  const routerState = injectRouterState();
2413
- const title = computed(() => routerState().title, ...(ngDevMode ? [{ debugName: "title" }] : []));
2413
+ const title = computed(() => routerState().title, ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
2414
2414
  return transformOrReturn(title, config);
2415
2415
  };
2416
2416
  /** Inject all currently available path parameters as a signal */
2417
2417
  const injectPathParams = () => {
2418
2418
  const routerState = injectRouterState();
2419
- const pathParams = computed(() => routerState().pathParams, ...(ngDevMode ? [{ debugName: "pathParams" }] : []));
2419
+ const pathParams = computed(() => routerState().pathParams, ...(ngDevMode ? [{ debugName: "pathParams" }] : /* istanbul ignore next */ []));
2420
2420
  return pathParams;
2421
2421
  };
2422
2422
  const getQueryParamFromUrl = (key) => {
@@ -2629,9 +2629,97 @@ function formatRuntimeError(code, message) {
2629
2629
  return `${fullCode}${message ? ': ' + message : ''}`;
2630
2630
  }
2631
2631
 
2632
+ const createAutoSessionMemoryKey = ({ element, prefix }) => {
2633
+ const pathSegments = [];
2634
+ let currentElement = element;
2635
+ while (currentElement) {
2636
+ const currentElementName = currentElement.localName;
2637
+ const parentElement = currentElement.parentElement;
2638
+ if (!parentElement) {
2639
+ pathSegments.unshift(currentElementName);
2640
+ break;
2641
+ }
2642
+ const siblingElements = Array.from(parentElement.children);
2643
+ const siblingIndex = siblingElements.indexOf(currentElement);
2644
+ pathSegments.unshift(`${currentElementName}[${siblingIndex}]`);
2645
+ currentElement = parentElement;
2646
+ }
2647
+ const locationPath = element.ownerDocument.defaultView?.location.pathname ?? 'root';
2648
+ return `${prefix}:${locationPath}:${pathSegments.join('/')}`;
2649
+ };
2650
+ const canUseSessionMemory = () => {
2651
+ try {
2652
+ if (typeof globalThis.window === 'undefined') {
2653
+ return false;
2654
+ }
2655
+ if (typeof globalThis.document === 'undefined') {
2656
+ return false;
2657
+ }
2658
+ return globalThis.sessionStorage != null;
2659
+ }
2660
+ catch {
2661
+ return false;
2662
+ }
2663
+ };
2664
+ const getSessionStorage = () => {
2665
+ if (!canUseSessionMemory()) {
2666
+ return null;
2667
+ }
2668
+ return globalThis.sessionStorage;
2669
+ };
2670
+ const createSessionMemory = ({ key, parse, serialize }) => {
2671
+ const read = () => {
2672
+ const sessionStorage = getSessionStorage();
2673
+ if (!sessionStorage) {
2674
+ return null;
2675
+ }
2676
+ try {
2677
+ const storedValue = sessionStorage.getItem(key);
2678
+ if (storedValue === null) {
2679
+ return null;
2680
+ }
2681
+ return parse(storedValue);
2682
+ }
2683
+ catch {
2684
+ return null;
2685
+ }
2686
+ };
2687
+ const write = (value) => {
2688
+ const sessionStorage = getSessionStorage();
2689
+ if (!sessionStorage) {
2690
+ return false;
2691
+ }
2692
+ try {
2693
+ sessionStorage.setItem(key, serialize(value));
2694
+ return true;
2695
+ }
2696
+ catch {
2697
+ return false;
2698
+ }
2699
+ };
2700
+ const remove = () => {
2701
+ const sessionStorage = getSessionStorage();
2702
+ if (!sessionStorage) {
2703
+ return false;
2704
+ }
2705
+ try {
2706
+ sessionStorage.removeItem(key);
2707
+ return true;
2708
+ }
2709
+ catch {
2710
+ return false;
2711
+ }
2712
+ };
2713
+ return {
2714
+ read,
2715
+ write,
2716
+ remove,
2717
+ };
2718
+ };
2719
+
2632
2720
  const [, injectAngularRootElement] = createRootProvider(() => {
2633
2721
  const appRef = inject(ApplicationRef);
2634
- const rootElement = signal(null, ...(ngDevMode ? [{ debugName: "rootElement" }] : []));
2722
+ const rootElement = signal(null, ...(ngDevMode ? [{ debugName: "rootElement" }] : /* istanbul ignore next */ []));
2635
2723
  const poll = () => {
2636
2724
  const appComponents = appRef.components;
2637
2725
  if (appComponents.length > 0) {
@@ -2648,8 +2736,8 @@ const [, injectAngularRootElement] = createRootProvider(() => {
2648
2736
  const [provideBoundaryElement, injectBoundaryElement, BOUNDARY_ELEMENT_TOKEN] = createProvider(() => {
2649
2737
  const hostElement = inject(ElementRef, { optional: true });
2650
2738
  const document = inject(DOCUMENT);
2651
- const override = signal(null, ...(ngDevMode ? [{ debugName: "override" }] : []));
2652
- const value = computed(() => override() ?? hostElement?.nativeElement ?? document.documentElement, ...(ngDevMode ? [{ debugName: "value" }] : []));
2739
+ const override = signal(null, ...(ngDevMode ? [{ debugName: "override" }] : /* istanbul ignore next */ []));
2740
+ const value = computed(() => override() ?? hostElement?.nativeElement ?? document.documentElement, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
2653
2741
  return {
2654
2742
  value,
2655
2743
  override,
@@ -2659,7 +2747,7 @@ const [provideBoundaryElement, injectBoundaryElement, BOUNDARY_ELEMENT_TOKEN] =
2659
2747
  const [provideFocusVisibleTracker, injectFocusVisibleTracker, FOCUS_VISIBLE_TRACKER_TOKEN] = createRootProvider(() => {
2660
2748
  const document = inject(DOCUMENT);
2661
2749
  const destroyRef = inject(DestroyRef);
2662
- const isFocusVisible = signal(false, ...(ngDevMode ? [{ debugName: "isFocusVisible" }] : []));
2750
+ const isFocusVisible = signal(false, ...(ngDevMode ? [{ debugName: "isFocusVisible" }] : /* istanbul ignore next */ []));
2663
2751
  let hadKeyboardEvent = false;
2664
2752
  const onKeyDown = (e) => {
2665
2753
  if (e.key === 'Tab' || e.key === 'Shift' || e.key === 'Meta' || e.key === 'Alt' || e.key === 'Control') {
@@ -2699,7 +2787,7 @@ const [provideFocusVisibleTracker, injectFocusVisibleTracker, FOCUS_VISIBLE_TRAC
2699
2787
  }, { name: 'Focus Visible Tracker' });
2700
2788
 
2701
2789
  const [provideLocale, injectLocale] = createRootProvider(() => {
2702
- const currentLocale = signal('en', ...(ngDevMode ? [{ debugName: "currentLocale" }] : []));
2790
+ const currentLocale = signal('en', ...(ngDevMode ? [{ debugName: "currentLocale" }] : /* istanbul ignore next */ []));
2703
2791
  return {
2704
2792
  currentLocale,
2705
2793
  };
@@ -2914,6 +3002,16 @@ const [provideStyleManager, injectStyleManager] = createRootProvider(() => {
2914
3002
  container = nextContainer;
2915
3003
  return nextContainer;
2916
3004
  };
3005
+ const cleanupContainer = () => {
3006
+ if (!container) {
3007
+ return;
3008
+ }
3009
+ const parent = renderer.parentNode(container);
3010
+ if (parent) {
3011
+ renderer.removeChild(parent, container);
3012
+ }
3013
+ container = null;
3014
+ };
2917
3015
  const mount = (component) => {
2918
3016
  const existingComponent = mountedComponents.get(component);
2919
3017
  if (existingComponent) {
@@ -2926,19 +3024,17 @@ const [provideStyleManager, injectStyleManager] = createRootProvider(() => {
2926
3024
  return componentRef;
2927
3025
  };
2928
3026
  destroyRef.onDestroy(() => {
3027
+ if (appRef.destroyed) {
3028
+ mountedComponents.clear();
3029
+ cleanupContainer();
3030
+ return;
3031
+ }
2929
3032
  mountedComponents.forEach((componentRef) => {
2930
3033
  appRef.detachView(componentRef.hostView);
2931
3034
  componentRef.destroy();
2932
3035
  });
2933
3036
  mountedComponents.clear();
2934
- if (!container) {
2935
- return;
2936
- }
2937
- const parent = renderer.parentNode(container);
2938
- if (parent) {
2939
- renderer.removeChild(parent, container);
2940
- }
2941
- container = null;
3037
+ cleanupContainer();
2942
3038
  });
2943
3039
  return { mount };
2944
3040
  }, { name: 'StyleManager' });
@@ -2997,7 +3093,7 @@ class AnimatedLifecycleDirective {
2997
3093
  this.currentFrameId = 0;
2998
3094
  this.state$ = new BehaviorSubject('init');
2999
3095
  this.stateChange = outputFromObservable(this.state$);
3000
- this.skipNextEnter = model(false, ...(ngDevMode ? [{ debugName: "skipNextEnter" }] : []));
3096
+ this.skipNextEnter = model(false, ...(ngDevMode ? [{ debugName: "skipNextEnter" }] : /* istanbul ignore next */ []));
3001
3097
  this.state$
3002
3098
  .pipe(tap((state) => {
3003
3099
  if (state !== 'init') {
@@ -3215,15 +3311,15 @@ class AnimatedLifecycleDirective {
3215
3311
  updateState(newState) {
3216
3312
  this.state$.next(newState);
3217
3313
  }
3218
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AnimatedLifecycleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3219
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", 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: [
3314
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: AnimatedLifecycleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3315
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.13", 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: [
3220
3316
  {
3221
3317
  provide: ANIMATED_LIFECYCLE_TOKEN,
3222
3318
  useExisting: AnimatedLifecycleDirective,
3223
3319
  },
3224
3320
  ], exportAs: ["etAnimatedLifecycle"], hostDirectives: [{ directive: AnimatableDirective }], ngImport: i0 }); }
3225
3321
  }
3226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AnimatedLifecycleDirective, decorators: [{
3322
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: AnimatedLifecycleDirective, decorators: [{
3227
3323
  type: Directive,
3228
3324
  args: [{
3229
3325
  selector: '[etAnimatedLifecycle]',
@@ -3248,7 +3344,7 @@ class AnimatedIfDirective {
3248
3344
  this.viewContainerRef = inject(ViewContainerRef);
3249
3345
  this.animatedLifecycle = inject(ANIMATED_LIFECYCLE_TOKEN);
3250
3346
  this.hasView = false;
3251
- this.ifValue = input(null, { ...(ngDevMode ? { debugName: "ifValue" } : {}), alias: 'etAnimatedIf' });
3347
+ this.ifValue = input(null, { ...(ngDevMode ? { debugName: "ifValue" } : /* istanbul ignore next */ {}), alias: 'etAnimatedIf' });
3252
3348
  toObservable(this.ifValue)
3253
3349
  .pipe(switchMap((value) => {
3254
3350
  if (value) {
@@ -3270,15 +3366,15 @@ class AnimatedIfDirective {
3270
3366
  }), takeUntilDestroyed())
3271
3367
  .subscribe();
3272
3368
  }
3273
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AnimatedIfDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3274
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", type: AnimatedIfDirective, isStandalone: true, selector: "[etAnimatedIf]", inputs: { ifValue: { classPropertyName: "ifValue", publicName: "etAnimatedIf", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
3369
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: AnimatedIfDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3370
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.13", type: AnimatedIfDirective, isStandalone: true, selector: "[etAnimatedIf]", inputs: { ifValue: { classPropertyName: "ifValue", publicName: "etAnimatedIf", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
3275
3371
  {
3276
3372
  provide: ANIMATED_IF_TOKEN,
3277
3373
  useExisting: AnimatedIfDirective,
3278
3374
  },
3279
3375
  ], ngImport: i0 }); }
3280
3376
  }
3281
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AnimatedIfDirective, decorators: [{
3377
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: AnimatedIfDirective, decorators: [{
3282
3378
  type: Directive,
3283
3379
  args: [{
3284
3380
  selector: '[etAnimatedIf]',
@@ -3302,17 +3398,17 @@ class AnimatedOverlayDirective {
3302
3398
  this.destroyRef = inject(DestroyRef);
3303
3399
  this.floatingElCleanupFn = null;
3304
3400
  this.unmountSubscription = null;
3305
- this.placement = input('bottom', ...(ngDevMode ? [{ debugName: "placement" }] : []));
3306
- this.fallbackPlacements = input(...(ngDevMode ? [undefined, { debugName: "fallbackPlacements" }] : []));
3307
- this.offset = input(null, ...(ngDevMode ? [{ debugName: "offset" }] : []));
3308
- this.arrowPadding = input(4, ...(ngDevMode ? [{ debugName: "arrowPadding" }] : []));
3309
- this.viewportPadding = input(8, ...(ngDevMode ? [{ debugName: "viewportPadding" }] : []));
3310
- this.autoResize = input(false, { ...(ngDevMode ? { debugName: "autoResize" } : {}), transform: booleanAttribute });
3311
- this.shift = input(true, { ...(ngDevMode ? { debugName: "shift" } : {}), transform: booleanAttribute });
3312
- this.autoHide = input(false, { ...(ngDevMode ? { debugName: "autoHide" } : {}), transform: booleanAttribute });
3313
- this.autoCloseIfReferenceHidden = input(false, { ...(ngDevMode ? { debugName: "autoCloseIfReferenceHidden" } : {}), transform: booleanAttribute });
3314
- this.referenceElement = input(this.elementRef.nativeElement, ...(ngDevMode ? [{ debugName: "referenceElement" }] : []));
3315
- this.mirrorWidth = input(false, { ...(ngDevMode ? { debugName: "mirrorWidth" } : {}), transform: booleanAttribute });
3401
+ this.placement = input('bottom', ...(ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []));
3402
+ this.fallbackPlacements = input(...(ngDevMode ? [undefined, { debugName: "fallbackPlacements" }] : /* istanbul ignore next */ []));
3403
+ this.offset = input(null, ...(ngDevMode ? [{ debugName: "offset" }] : /* istanbul ignore next */ []));
3404
+ this.arrowPadding = input(4, ...(ngDevMode ? [{ debugName: "arrowPadding" }] : /* istanbul ignore next */ []));
3405
+ this.viewportPadding = input(8, ...(ngDevMode ? [{ debugName: "viewportPadding" }] : /* istanbul ignore next */ []));
3406
+ this.autoResize = input(false, { ...(ngDevMode ? { debugName: "autoResize" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3407
+ this.shift = input(true, { ...(ngDevMode ? { debugName: "shift" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3408
+ this.autoHide = input(false, { ...(ngDevMode ? { debugName: "autoHide" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3409
+ this.autoCloseIfReferenceHidden = input(false, { ...(ngDevMode ? { debugName: "autoCloseIfReferenceHidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3410
+ this.referenceElement = input(this.elementRef.nativeElement, ...(ngDevMode ? [{ debugName: "referenceElement" }] : /* istanbul ignore next */ []));
3411
+ this.mirrorWidth = input(false, { ...(ngDevMode ? { debugName: "mirrorWidth" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3316
3412
  this.portal = null;
3317
3413
  this.overlayRef = null;
3318
3414
  this.componentRef = null;
@@ -3320,14 +3416,14 @@ class AnimatedOverlayDirective {
3320
3416
  this.afterOpened$ = new Subject();
3321
3417
  this.beforeClosed$ = new Subject();
3322
3418
  this.afterClosed$ = new Subject();
3323
- this.state = signal('init', ...(ngDevMode ? [{ debugName: "state" }] : []));
3324
- this.isMounted = computed(() => this.state() === 'mounted', ...(ngDevMode ? [{ debugName: "isMounted" }] : []));
3325
- this.isMounting = computed(() => this.state() === 'mounting', ...(ngDevMode ? [{ debugName: "isMounting" }] : []));
3326
- this.isUnmounted = computed(() => this.state() === 'unmounted', ...(ngDevMode ? [{ debugName: "isUnmounted" }] : []));
3327
- this.isUnmounting = computed(() => this.state() === 'unmounting', ...(ngDevMode ? [{ debugName: "isUnmounting" }] : []));
3328
- this.canMount = computed(() => !this.isMounted() && !this.isMounting(), ...(ngDevMode ? [{ debugName: "canMount" }] : []));
3329
- this.canUnmount = computed(() => (this.isMounted() || this.isMounting()) && !this.isUnmounting(), ...(ngDevMode ? [{ debugName: "canUnmount" }] : []));
3330
- this.isHidden = signal(false, ...(ngDevMode ? [{ debugName: "isHidden" }] : []));
3419
+ this.state = signal('init', ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
3420
+ this.isMounted = computed(() => this.state() === 'mounted', ...(ngDevMode ? [{ debugName: "isMounted" }] : /* istanbul ignore next */ []));
3421
+ this.isMounting = computed(() => this.state() === 'mounting', ...(ngDevMode ? [{ debugName: "isMounting" }] : /* istanbul ignore next */ []));
3422
+ this.isUnmounted = computed(() => this.state() === 'unmounted', ...(ngDevMode ? [{ debugName: "isUnmounted" }] : /* istanbul ignore next */ []));
3423
+ this.isUnmounting = computed(() => this.state() === 'unmounting', ...(ngDevMode ? [{ debugName: "isUnmounting" }] : /* istanbul ignore next */ []));
3424
+ this.canMount = computed(() => !this.isMounted() && !this.isMounting(), ...(ngDevMode ? [{ debugName: "canMount" }] : /* istanbul ignore next */ []));
3425
+ this.canUnmount = computed(() => (this.isMounted() || this.isMounting()) && !this.isUnmounting(), ...(ngDevMode ? [{ debugName: "canUnmount" }] : /* istanbul ignore next */ []));
3426
+ this.isHidden = signal(false, ...(ngDevMode ? [{ debugName: "isHidden" }] : /* istanbul ignore next */ []));
3331
3427
  this.isMounted$ = toObservable(this.isMounted);
3332
3428
  this.isMounting$ = toObservable(this.isMounting);
3333
3429
  this.isUnmounted$ = toObservable(this.isUnmounted);
@@ -3578,10 +3674,10 @@ class AnimatedOverlayDirective {
3578
3674
  this.state.set('unmounted');
3579
3675
  this.afterClosed$.next();
3580
3676
  }
3581
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AnimatedOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3582
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", type: AnimatedOverlayDirective, isStandalone: true, selector: "[etAnimatedOverlay]", inputs: { placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, fallbackPlacements: { classPropertyName: "fallbackPlacements", publicName: "fallbackPlacements", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, arrowPadding: { classPropertyName: "arrowPadding", publicName: "arrowPadding", isSignal: true, isRequired: false, transformFunction: null }, viewportPadding: { classPropertyName: "viewportPadding", publicName: "viewportPadding", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: "autoResize", publicName: "autoResize", isSignal: true, isRequired: false, transformFunction: null }, shift: { classPropertyName: "shift", publicName: "shift", isSignal: true, isRequired: false, transformFunction: null }, autoHide: { classPropertyName: "autoHide", publicName: "autoHide", isSignal: true, isRequired: false, transformFunction: null }, autoCloseIfReferenceHidden: { classPropertyName: "autoCloseIfReferenceHidden", publicName: "autoCloseIfReferenceHidden", isSignal: true, isRequired: false, transformFunction: null }, referenceElement: { classPropertyName: "referenceElement", publicName: "referenceElement", isSignal: true, isRequired: false, transformFunction: null }, mirrorWidth: { classPropertyName: "mirrorWidth", publicName: "mirrorWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "et-animated-overlay" }, exportAs: ["etAnimatedOverlay"], ngImport: i0 }); }
3677
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: AnimatedOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3678
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.13", type: AnimatedOverlayDirective, isStandalone: true, selector: "[etAnimatedOverlay]", inputs: { placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, fallbackPlacements: { classPropertyName: "fallbackPlacements", publicName: "fallbackPlacements", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, arrowPadding: { classPropertyName: "arrowPadding", publicName: "arrowPadding", isSignal: true, isRequired: false, transformFunction: null }, viewportPadding: { classPropertyName: "viewportPadding", publicName: "viewportPadding", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: "autoResize", publicName: "autoResize", isSignal: true, isRequired: false, transformFunction: null }, shift: { classPropertyName: "shift", publicName: "shift", isSignal: true, isRequired: false, transformFunction: null }, autoHide: { classPropertyName: "autoHide", publicName: "autoHide", isSignal: true, isRequired: false, transformFunction: null }, autoCloseIfReferenceHidden: { classPropertyName: "autoCloseIfReferenceHidden", publicName: "autoCloseIfReferenceHidden", isSignal: true, isRequired: false, transformFunction: null }, referenceElement: { classPropertyName: "referenceElement", publicName: "referenceElement", isSignal: true, isRequired: false, transformFunction: null }, mirrorWidth: { classPropertyName: "mirrorWidth", publicName: "mirrorWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "et-animated-overlay" }, exportAs: ["etAnimatedOverlay"], ngImport: i0 }); }
3583
3679
  }
3584
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AnimatedOverlayDirective, decorators: [{
3680
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: AnimatedOverlayDirective, decorators: [{
3585
3681
  type: Directive,
3586
3682
  args: [{
3587
3683
  selector: '[etAnimatedOverlay]',
@@ -3704,10 +3800,10 @@ class ClickOutsideDirective {
3704
3800
  }), takeUntilDestroyed())
3705
3801
  .subscribe();
3706
3802
  }
3707
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ClickOutsideDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3708
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.1", type: ClickOutsideDirective, isStandalone: true, selector: "[etClickOutside]", outputs: { didClickOutside: "etClickOutside" }, ngImport: i0 }); }
3803
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ClickOutsideDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3804
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.13", type: ClickOutsideDirective, isStandalone: true, selector: "[etClickOutside]", outputs: { didClickOutside: "etClickOutside" }, ngImport: i0 }); }
3709
3805
  }
3710
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ClickOutsideDirective, decorators: [{
3806
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ClickOutsideDirective, decorators: [{
3711
3807
  type: Directive,
3712
3808
  args: [{
3713
3809
  selector: '[etClickOutside]',
@@ -3718,8 +3814,8 @@ class RepeatDirective {
3718
3814
  constructor() {
3719
3815
  this.mainTemplateRef = inject(TemplateRef);
3720
3816
  this.viewContainerRef = inject(ViewContainerRef);
3721
- this.repeatCount = input(2, { ...(ngDevMode ? { debugName: "repeatCount" } : {}), alias: 'etRepeat', transform: numberAttribute });
3722
- this.views = linkedSignal({ ...(ngDevMode ? { debugName: "views" } : {}), source: this.repeatCount,
3817
+ this.repeatCount = input(2, { ...(ngDevMode ? { debugName: "repeatCount" } : /* istanbul ignore next */ {}), alias: 'etRepeat', transform: numberAttribute });
3818
+ this.views = linkedSignal({ ...(ngDevMode ? { debugName: "views" } : /* istanbul ignore next */ {}), source: this.repeatCount,
3723
3819
  computation: (count, previous) => {
3724
3820
  const prevCount = previous?.source ?? 0;
3725
3821
  const views = previous?.value ?? [];
@@ -3744,10 +3840,10 @@ class RepeatDirective {
3744
3840
  // Otherwise it has no consumers and won't run.
3745
3841
  effect(() => this.views());
3746
3842
  }
3747
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RepeatDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3748
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", type: RepeatDirective, isStandalone: true, selector: "[etRepeat]", inputs: { repeatCount: { classPropertyName: "repeatCount", publicName: "etRepeat", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
3843
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: RepeatDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3844
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.13", type: RepeatDirective, isStandalone: true, selector: "[etRepeat]", inputs: { repeatCount: { classPropertyName: "repeatCount", publicName: "etRepeat", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
3749
3845
  }
3750
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: RepeatDirective, decorators: [{
3846
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: RepeatDirective, decorators: [{
3751
3847
  type: Directive,
3752
3848
  args: [{
3753
3849
  selector: '[etRepeat]',
@@ -3757,9 +3853,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
3757
3853
  class ScrollObserverDirective {
3758
3854
  constructor() {
3759
3855
  this.elementRef = inject(ElementRef);
3760
- this.enabled = model(true, ...(ngDevMode ? [{ debugName: "enabled" }] : []));
3761
- this._startEl = signal(null, ...(ngDevMode ? [{ debugName: "_startEl" }] : []));
3762
- this._endEl = signal(null, ...(ngDevMode ? [{ debugName: "_endEl" }] : []));
3856
+ this.enabled = model(true, ...(ngDevMode ? [{ debugName: "enabled" }] : /* istanbul ignore next */ []));
3857
+ this._startEl = signal(null, ...(ngDevMode ? [{ debugName: "_startEl" }] : /* istanbul ignore next */ []));
3858
+ this._endEl = signal(null, ...(ngDevMode ? [{ debugName: "_endEl" }] : /* istanbul ignore next */ []));
3763
3859
  this._startIntersection = signalElementIntersection(this._startEl, {
3764
3860
  root: this.elementRef,
3765
3861
  enabled: this.enabled,
@@ -3768,8 +3864,8 @@ class ScrollObserverDirective {
3768
3864
  root: this.elementRef,
3769
3865
  enabled: this.enabled,
3770
3866
  });
3771
- this.isAtStart = computed(() => this._startIntersection()[0]?.isIntersecting ?? false, ...(ngDevMode ? [{ debugName: "isAtStart" }] : []));
3772
- this.isAtEnd = computed(() => this._endIntersection()[0]?.isIntersecting ?? false, ...(ngDevMode ? [{ debugName: "isAtEnd" }] : []));
3867
+ this.isAtStart = computed(() => this._startIntersection()[0]?.isIntersecting ?? false, ...(ngDevMode ? [{ debugName: "isAtStart" }] : /* istanbul ignore next */ []));
3868
+ this.isAtEnd = computed(() => this._endIntersection()[0]?.isIntersecting ?? false, ...(ngDevMode ? [{ debugName: "isAtEnd" }] : /* istanbul ignore next */ []));
3773
3869
  }
3774
3870
  _registerStart(el) {
3775
3871
  this._startEl.set(el);
@@ -3777,10 +3873,10 @@ class ScrollObserverDirective {
3777
3873
  _registerEnd(el) {
3778
3874
  this._endEl.set(el);
3779
3875
  }
3780
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ScrollObserverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3781
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", 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 }); }
3876
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScrollObserverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3877
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.13", 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 }); }
3782
3878
  }
3783
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ScrollObserverDirective, decorators: [{
3879
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScrollObserverDirective, decorators: [{
3784
3880
  type: Directive,
3785
3881
  args: [{
3786
3882
  selector: '[etScrollObserver]',
@@ -3794,10 +3890,10 @@ class ScrollObserverEndDirective {
3794
3890
  this.host = inject(ScrollObserverDirective);
3795
3891
  this.host._registerEnd(this.elementRef);
3796
3892
  }
3797
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ScrollObserverEndDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3798
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.1", type: ScrollObserverEndDirective, isStandalone: true, selector: "[etScrollObserverEnd]", ngImport: i0 }); }
3893
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScrollObserverEndDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3894
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.13", type: ScrollObserverEndDirective, isStandalone: true, selector: "[etScrollObserverEnd]", ngImport: i0 }); }
3799
3895
  }
3800
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ScrollObserverEndDirective, decorators: [{
3896
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScrollObserverEndDirective, decorators: [{
3801
3897
  type: Directive,
3802
3898
  args: [{
3803
3899
  selector: '[etScrollObserverEnd]',
@@ -3810,10 +3906,10 @@ class ScrollObserverStartDirective {
3810
3906
  this.host = inject(ScrollObserverDirective);
3811
3907
  this.host._registerStart(this.elementRef);
3812
3908
  }
3813
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ScrollObserverStartDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3814
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.1", type: ScrollObserverStartDirective, isStandalone: true, selector: "[etScrollObserverStart]", ngImport: i0 }); }
3909
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScrollObserverStartDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3910
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.13", type: ScrollObserverStartDirective, isStandalone: true, selector: "[etScrollObserverStart]", ngImport: i0 }); }
3815
3911
  }
3816
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ScrollObserverStartDirective, decorators: [{
3912
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScrollObserverStartDirective, decorators: [{
3817
3913
  type: Directive,
3818
3914
  args: [{
3819
3915
  selector: '[etScrollObserverStart]',
@@ -3848,8 +3944,8 @@ const setupDragObservable = (startEvent, el, commitThreshold) => {
3848
3944
  class DragHandleDirective {
3849
3945
  constructor() {
3850
3946
  this.el = inject(ElementRef);
3851
- this.commitThreshold = input(8, ...(ngDevMode ? [{ debugName: "commitThreshold" }] : []));
3852
- this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
3947
+ this.commitThreshold = input(8, ...(ngDevMode ? [{ debugName: "commitThreshold" }] : /* istanbul ignore next */ []));
3948
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3853
3949
  this.gestureStart$ = new Subject();
3854
3950
  this.gesture$ = this.gestureStart$.pipe(exhaustMap((event) => setupDragObservable(event, this.el.nativeElement, this.commitThreshold())), takeUntilDestroyed(), share());
3855
3951
  this.dragTapped = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'tapped'), map(() => undefined)));
@@ -3865,24 +3961,484 @@ class DragHandleDirective {
3865
3961
  event.stopPropagation();
3866
3962
  this.gestureStart$.next(event);
3867
3963
  }
3868
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: DragHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3869
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", 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" }, ngImport: i0 }); }
3964
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: DragHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3965
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.13", 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" }, ngImport: i0 }); }
3870
3966
  }
3871
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: DragHandleDirective, decorators: [{
3967
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: DragHandleDirective, decorators: [{
3872
3968
  type: Directive,
3873
3969
  args: [{
3874
3970
  selector: '[etDragHandle]',
3875
3971
  }]
3876
3972
  }], ctorParameters: () => [], propDecorators: { commitThreshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "commitThreshold", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], dragTapped: [{ type: i0.Output, args: ["dragTapped"] }], dragStarted: [{ type: i0.Output, args: ["dragStarted"] }], dragMoved: [{ type: i0.Output, args: ["dragMoved"] }], dragEnded: [{ type: i0.Output, args: ["dragEnded"] }] } });
3877
3973
 
3974
+ const FOCUSABLE_SELECTOR = [
3975
+ 'a[href]',
3976
+ 'area[href]',
3977
+ 'button:not([disabled])',
3978
+ 'input:not([disabled]):not([type="hidden"])',
3979
+ 'select:not([disabled])',
3980
+ 'textarea:not([disabled])',
3981
+ 'iframe',
3982
+ '[tabindex]:not([tabindex="-1"])',
3983
+ '[contenteditable="true"]',
3984
+ ].join(',');
3985
+ const isHTMLElement = (value) => {
3986
+ return value instanceof HTMLElement;
3987
+ };
3988
+ const isFocusable = (element, document) => {
3989
+ const view = document.defaultView;
3990
+ const style = view?.getComputedStyle(element);
3991
+ const isVisible = style?.display !== 'none' && style?.visibility !== 'hidden' && element.getClientRects().length > 0;
3992
+ return isVisible && !element.hasAttribute('disabled') && element.tabIndex >= 0;
3993
+ };
3994
+ const getFocusableElements = (container, document) => {
3995
+ return Array.from(container.querySelectorAll(FOCUSABLE_SELECTOR)).filter((el) => isFocusable(el, document));
3996
+ };
3997
+ const getHeadingElement = (container) => {
3998
+ return container.querySelector('h1, h2, h3, h4, h5, h6, [role="heading"]');
3999
+ };
4000
+ const focusElement = (element) => {
4001
+ if (!element) {
4002
+ return;
4003
+ }
4004
+ element.focus({ preventScroll: true });
4005
+ };
4006
+ const applyInitialFocus = (paneElement, autoFocus, document) => {
4007
+ if (autoFocus === false) {
4008
+ return;
4009
+ }
4010
+ if (autoFocus === 'container') {
4011
+ focusElement(paneElement);
4012
+ return;
4013
+ }
4014
+ if (autoFocus === 'first-heading') {
4015
+ focusElement(getHeadingElement(paneElement) ?? paneElement);
4016
+ return;
4017
+ }
4018
+ if (autoFocus === 'first-tabbable') {
4019
+ focusElement(getFocusableElements(paneElement, document)[0] ?? paneElement);
4020
+ return;
4021
+ }
4022
+ focusElement(paneElement.querySelector(autoFocus) ?? paneElement);
4023
+ };
4024
+ const setupFocusTrap = (paneElement, overlayRef, enabled, isTopMost, document) => {
4025
+ if (!enabled) {
4026
+ return () => undefined;
4027
+ }
4028
+ const onKeyDown = (event) => {
4029
+ if (event.key !== 'Tab' || !isTopMost(overlayRef)) {
4030
+ return;
4031
+ }
4032
+ const focusableElements = getFocusableElements(paneElement, document);
4033
+ if (focusableElements.length === 0) {
4034
+ event.preventDefault();
4035
+ focusElement(paneElement);
4036
+ return;
4037
+ }
4038
+ const firstElement = focusableElements[0];
4039
+ const lastElement = focusableElements[focusableElements.length - 1];
4040
+ const activeElement = document.activeElement;
4041
+ if (event.shiftKey && activeElement === firstElement) {
4042
+ event.preventDefault();
4043
+ focusElement(lastElement ?? null);
4044
+ return;
4045
+ }
4046
+ if (!event.shiftKey && activeElement === lastElement) {
4047
+ event.preventDefault();
4048
+ focusElement(firstElement ?? null);
4049
+ }
4050
+ };
4051
+ paneElement.addEventListener('keydown', onKeyDown);
4052
+ return () => {
4053
+ paneElement.removeEventListener('keydown', onKeyDown);
4054
+ };
4055
+ };
4056
+
4057
+ const setBaseElementStyles = (config, hostElement, paneElement, renderer) => {
4058
+ renderer.setStyle(hostElement, {
4059
+ position: 'fixed',
4060
+ top: '0',
4061
+ left: '0',
4062
+ right: '0',
4063
+ bottom: '0',
4064
+ display: 'block',
4065
+ pointerEvents: config.hasBackdrop === false ? 'none' : 'auto',
4066
+ });
4067
+ renderer.setStyle(paneElement, {
4068
+ pointerEvents: 'auto',
4069
+ outline: 'none',
4070
+ });
4071
+ };
4072
+ const setBackdropStyles = (backdropElement, renderer) => {
4073
+ renderer.setStyle(backdropElement, {
4074
+ position: 'absolute',
4075
+ top: '0',
4076
+ left: '0',
4077
+ right: '0',
4078
+ bottom: '0',
4079
+ });
4080
+ };
4081
+ const applyCenteredPosition = (hostElement, paneElement, renderer, _config) => {
4082
+ renderer.setStyle(hostElement, {
4083
+ display: 'grid',
4084
+ placeItems: 'center',
4085
+ padding: '16px',
4086
+ overflow: 'auto',
4087
+ });
4088
+ renderer.setStyle(paneElement, {
4089
+ position: 'relative',
4090
+ });
4091
+ };
4092
+ const createAnchoredPositionCleanup = (strategy, paneElement, overlayRef, renderer) => {
4093
+ const arrowElement = paneElement.querySelector('[et-floating-arrow]');
4094
+ renderer.setStyle(paneElement, {
4095
+ position: 'absolute',
4096
+ top: '0',
4097
+ left: '0',
4098
+ width: strategy.mirrorWidth ? `${strategy.referenceElement.offsetWidth}px` : 'max-content',
4099
+ });
4100
+ const cleanup = autoUpdate(strategy.referenceElement, paneElement, () => {
4101
+ const middleware = [];
4102
+ middleware.push(offset(strategy.offset ?? 8));
4103
+ middleware.push(flip({
4104
+ fallbackPlacements: strategy.fallbackPlacements ?? undefined,
4105
+ fallbackAxisSideDirection: 'start',
4106
+ }));
4107
+ if (strategy.autoResize) {
4108
+ middleware.push(size({
4109
+ padding: strategy.viewportPadding ?? 8,
4110
+ apply({ availableHeight, availableWidth }) {
4111
+ renderer.setCssProperties(paneElement, {
4112
+ '--et-overlay-max-width': `${availableWidth}px`,
4113
+ '--et-overlay-max-height': `${availableHeight}px`,
4114
+ });
4115
+ },
4116
+ }));
4117
+ }
4118
+ if (strategy.shift !== false) {
4119
+ middleware.push(shift({
4120
+ limiter: limitShift(),
4121
+ padding: strategy.viewportPadding ?? 8,
4122
+ }));
4123
+ }
4124
+ if (arrowElement) {
4125
+ middleware.push(arrow({
4126
+ element: arrowElement,
4127
+ padding: strategy.arrowPadding ?? 4,
4128
+ }));
4129
+ }
4130
+ if (strategy.autoHide || strategy.autoCloseIfReferenceHidden) {
4131
+ middleware.push(hide({
4132
+ strategy: 'referenceHidden',
4133
+ }));
4134
+ }
4135
+ computePosition(strategy.referenceElement, paneElement, {
4136
+ placement: strategy.placement ?? 'bottom',
4137
+ strategy: 'absolute',
4138
+ middleware,
4139
+ }).then(({ x, y, placement, middlewareData }) => {
4140
+ renderer.setStyle(paneElement, {
4141
+ transform: `translate3d(${x}px, ${y}px, 0)`,
4142
+ width: strategy.mirrorWidth ? `${strategy.referenceElement.offsetWidth}px` : null,
4143
+ });
4144
+ renderer.setAttribute(paneElement, 'data-overlay-placement', placement);
4145
+ if (arrowElement && middlewareData.arrow) {
4146
+ renderer.setCssProperty(arrowElement, '--et-floating-arrow-translate', `translate3d(${middlewareData.arrow.x ?? 0}px, ${middlewareData.arrow.y ?? 0}px, 0)`);
4147
+ }
4148
+ if (middlewareData.hide?.referenceHidden) {
4149
+ if (strategy.autoCloseIfReferenceHidden) {
4150
+ overlayRef.close(undefined, 'api');
4151
+ return;
4152
+ }
4153
+ renderer.setStyle(paneElement, {
4154
+ visibility: strategy.autoHide ? 'hidden' : null,
4155
+ });
4156
+ return;
4157
+ }
4158
+ renderer.setStyle(paneElement, {
4159
+ visibility: null,
4160
+ });
4161
+ });
4162
+ });
4163
+ return () => {
4164
+ cleanup();
4165
+ };
4166
+ };
4167
+ const setupPositioning = (config, hostElement, paneElement, overlayRef, renderer) => {
4168
+ const strategy = config.positionStrategy ?? { kind: 'center' };
4169
+ if (strategy.kind === 'anchored') {
4170
+ renderer.setStyle(hostElement, {
4171
+ pointerEvents: config.hasBackdrop === false ? 'none' : 'auto',
4172
+ });
4173
+ return createAnchoredPositionCleanup(strategy, paneElement, overlayRef, renderer);
4174
+ }
4175
+ applyCenteredPosition(hostElement, paneElement, renderer, strategy);
4176
+ return () => undefined;
4177
+ };
4178
+
4179
+ const createOverlayRuntimeRef = (id, config, elements, requestClose) => {
4180
+ const _state = signal('mounting', ...(ngDevMode ? [{ debugName: "_state" }] : /* istanbul ignore next */ []));
4181
+ const _componentInstance = signal(null, ...(ngDevMode ? [{ debugName: "_componentInstance" }] : /* istanbul ignore next */ []));
4182
+ const beforeOpenedSubject = new Subject();
4183
+ const afterOpenedSubject = new Subject();
4184
+ const beforeClosedSubject = new Subject();
4185
+ const afterClosedSubject = new Subject();
4186
+ return {
4187
+ id,
4188
+ config,
4189
+ elements,
4190
+ state: _state.asReadonly(),
4191
+ componentInstance: _componentInstance.asReadonly(),
4192
+ // Internal — driven by overlay-runtime.ts
4193
+ beforeOpenedSubject,
4194
+ close(result, source = 'api') {
4195
+ if (_state() === 'closing' || _state() === 'closed') {
4196
+ return;
4197
+ }
4198
+ requestClose(result, source);
4199
+ },
4200
+ beforeOpened() {
4201
+ return beforeOpenedSubject.asObservable();
4202
+ },
4203
+ afterOpened() {
4204
+ return afterOpenedSubject.asObservable();
4205
+ },
4206
+ beforeClosed() {
4207
+ return beforeClosedSubject.asObservable();
4208
+ },
4209
+ afterClosed() {
4210
+ return afterClosedSubject.asObservable();
4211
+ },
4212
+ attachComponentRef(componentRef) {
4213
+ _componentInstance.set(componentRef.instance);
4214
+ },
4215
+ markOpened() {
4216
+ if (_state() !== 'mounting') {
4217
+ return;
4218
+ }
4219
+ _state.set('mounted');
4220
+ afterOpenedSubject.next();
4221
+ afterOpenedSubject.complete();
4222
+ },
4223
+ beginClose(closeEvent) {
4224
+ if (_state() === 'closing' || _state() === 'closed') {
4225
+ return false;
4226
+ }
4227
+ _state.set('closing');
4228
+ beforeClosedSubject.next(closeEvent);
4229
+ beforeClosedSubject.complete();
4230
+ return true;
4231
+ },
4232
+ finishClose(closeEvent) {
4233
+ if (_state() === 'closed') {
4234
+ return;
4235
+ }
4236
+ _state.set('closed');
4237
+ _componentInstance.set(null);
4238
+ afterClosedSubject.next(closeEvent);
4239
+ afterClosedSubject.complete();
4240
+ },
4241
+ };
4242
+ };
4243
+
4244
+ const [provideOverlayRuntime, injectOverlayRuntime] = createRootProvider(() => {
4245
+ const appRef = inject(ApplicationRef);
4246
+ const destroyRef = inject(DestroyRef);
4247
+ const document = inject(DOCUMENT);
4248
+ const environmentInjector = inject(EnvironmentInjector);
4249
+ const renderer = injectRenderer();
4250
+ const openEntriesState = signal([], ...(ngDevMode ? [{ debugName: "openEntriesState" }] : /* istanbul ignore next */ []));
4251
+ const openEntries = computed(() => openEntriesState(), ...(ngDevMode ? [{ debugName: "openEntries" }] : /* istanbul ignore next */ []));
4252
+ let rootElement = null;
4253
+ const getRootElement = () => {
4254
+ if (rootElement) {
4255
+ return rootElement;
4256
+ }
4257
+ rootElement = renderer.createElement('div');
4258
+ renderer.addClass(rootElement, 'et-overlay-runtime-root');
4259
+ renderer.setStyle(rootElement, {
4260
+ position: 'fixed',
4261
+ top: '0',
4262
+ left: '0',
4263
+ right: '0',
4264
+ bottom: '0',
4265
+ pointerEvents: 'none',
4266
+ zIndex: '1000',
4267
+ });
4268
+ renderer.appendChild(document.body, rootElement);
4269
+ return rootElement;
4270
+ };
4271
+ const maybeDestroyRootElement = () => {
4272
+ if (!rootElement || openEntriesState().length > 0) {
4273
+ return;
4274
+ }
4275
+ const parentNode = renderer.parentNode(rootElement);
4276
+ if (parentNode) {
4277
+ renderer.removeChild(parentNode, rootElement);
4278
+ }
4279
+ rootElement = null;
4280
+ };
4281
+ const isTopMost = (overlayRef) => {
4282
+ return openEntriesState().at(-1) === overlayRef;
4283
+ };
4284
+ const getAnimatedLifecycle = (componentRef) => {
4285
+ const componentLifecycle = componentRef.instance.animatedLifecycle?.();
4286
+ if (componentLifecycle) {
4287
+ return componentLifecycle;
4288
+ }
4289
+ return componentRef.injector.get(ANIMATED_LIFECYCLE_TOKEN, null);
4290
+ };
4291
+ const mount = (config) => {
4292
+ const root = getRootElement();
4293
+ const hostElement = renderer.createElement('div');
4294
+ const paneElement = renderer.createElement('div');
4295
+ const backdropElement = config.hasBackdrop === false ? null : renderer.createElement('div');
4296
+ const previousFocusedElement = isHTMLElement(document.activeElement) ? document.activeElement : null;
4297
+ const autoFocus = config.autoFocus ?? 'first-tabbable';
4298
+ renderer.addClass(hostElement, 'et-overlay-runtime-entry');
4299
+ renderer.addClass(paneElement, 'et-overlay-runtime-pane');
4300
+ setBaseElementStyles(config, hostElement, paneElement, renderer);
4301
+ renderer.setAttributes(hostElement, {
4302
+ 'data-overlay-id': config.id,
4303
+ role: config.role ?? null,
4304
+ tabindex: '-1',
4305
+ 'aria-modal': config.role ? `${config.modal !== false}` : null,
4306
+ 'aria-describedby': config.ariaDescribedBy ?? null,
4307
+ 'aria-labelledby': config.ariaLabelledBy ?? null,
4308
+ 'aria-label': config.ariaLabel ?? null,
4309
+ });
4310
+ renderer.addClass(hostElement, ...(config.hostClass ?? []));
4311
+ renderer.addClass(paneElement, ...(config.paneClass ?? []));
4312
+ if (backdropElement) {
4313
+ renderer.addClass(backdropElement, 'et-overlay-runtime-backdrop');
4314
+ setBackdropStyles(backdropElement, renderer);
4315
+ renderer.setAttribute(backdropElement, 'data-overlay-id', config.id);
4316
+ (config.backdropClass ?? []).forEach((className) => renderer.addClass(backdropElement, className));
4317
+ renderer.appendChild(hostElement, backdropElement);
4318
+ }
4319
+ renderer.appendChild(hostElement, paneElement);
4320
+ renderer.appendChild(root, hostElement);
4321
+ const overlayRef = createOverlayRuntimeRef(config.id, { ...config }, {
4322
+ rootElement: root,
4323
+ hostElement,
4324
+ backdropElement,
4325
+ paneElement,
4326
+ }, (result, source) => beginClose({ result, source }));
4327
+ const cleanupFns = [];
4328
+ const parentInjector = config.injector ?? config.viewContainerRef?.injector ?? environmentInjector;
4329
+ const elementInjector = Injector.create({
4330
+ parent: parentInjector,
4331
+ providers: config.providers ?? [],
4332
+ });
4333
+ const componentRef = createComponent(config.component, {
4334
+ environmentInjector,
4335
+ elementInjector,
4336
+ hostElement: paneElement,
4337
+ bindings: Object.entries(config.inputBindings ?? {}).map(([key, value]) => inputBinding(key, () => value)),
4338
+ });
4339
+ appRef.attachView(componentRef.hostView);
4340
+ overlayRef.attachComponentRef(componentRef);
4341
+ overlayRef.beforeOpenedSubject.next();
4342
+ overlayRef.beforeOpenedSubject.complete();
4343
+ openEntriesState.update((entries) => [...entries, overlayRef]);
4344
+ cleanupFns.push(setupPositioning(config, hostElement, paneElement, overlayRef, renderer));
4345
+ const destroyMountedOverlay = (closeEvent) => {
4346
+ cleanupFns.forEach((cleanup) => cleanup());
4347
+ appRef.detachView(componentRef.hostView);
4348
+ componentRef.destroy();
4349
+ const parentNode = renderer.parentNode(hostElement);
4350
+ if (parentNode) {
4351
+ renderer.removeChild(parentNode, hostElement);
4352
+ }
4353
+ openEntriesState.update((entries) => entries.filter((entry) => entry !== overlayRef));
4354
+ maybeDestroyRootElement();
4355
+ if (config.restoreFocus !== false && previousFocusedElement?.isConnected) {
4356
+ previousFocusedElement.focus({ preventScroll: true });
4357
+ }
4358
+ overlayRef.finishClose(closeEvent);
4359
+ };
4360
+ const beginClose = (closeEvent) => {
4361
+ if (!overlayRef.beginClose(closeEvent)) {
4362
+ return;
4363
+ }
4364
+ const lifecycle = getAnimatedLifecycle(componentRef);
4365
+ if (!lifecycle) {
4366
+ destroyMountedOverlay(closeEvent);
4367
+ return;
4368
+ }
4369
+ lifecycle.leave();
4370
+ lifecycle.state$
4371
+ .pipe(filter((state) => state === 'left'), take(1))
4372
+ .subscribe(() => {
4373
+ destroyMountedOverlay(closeEvent);
4374
+ });
4375
+ };
4376
+ const closeOnEscape = config.closeOnEscape ?? true;
4377
+ if (closeOnEscape) {
4378
+ const onKeyDown = (event) => {
4379
+ if (event.key !== 'Escape' || !isTopMost(overlayRef)) {
4380
+ return;
4381
+ }
4382
+ event.preventDefault();
4383
+ overlayRef.close(undefined, 'escape');
4384
+ };
4385
+ document.addEventListener('keydown', onKeyDown, true);
4386
+ cleanupFns.push(() => document.removeEventListener('keydown', onKeyDown, true));
4387
+ }
4388
+ const closeOnOutsidePointer = config.closeOnOutsidePointer ?? config.modal === false;
4389
+ if (closeOnOutsidePointer) {
4390
+ const onPointerDown = (event) => {
4391
+ if (!isTopMost(overlayRef)) {
4392
+ return;
4393
+ }
4394
+ const target = event.target;
4395
+ if (!isHTMLElement(target) || paneElement.contains(target)) {
4396
+ return;
4397
+ }
4398
+ overlayRef.close(undefined, 'outside-pointer');
4399
+ };
4400
+ document.addEventListener('pointerdown', onPointerDown, true);
4401
+ cleanupFns.push(() => document.removeEventListener('pointerdown', onPointerDown, true));
4402
+ }
4403
+ cleanupFns.push(setupFocusTrap(paneElement, overlayRef, config.modal !== false, isTopMost, document));
4404
+ nextFrame(() => {
4405
+ if (overlayRef.state() !== 'mounting') {
4406
+ return;
4407
+ }
4408
+ const lifecycle = getAnimatedLifecycle(componentRef);
4409
+ if (!lifecycle) {
4410
+ applyInitialFocus(paneElement, autoFocus, document);
4411
+ overlayRef.markOpened();
4412
+ return;
4413
+ }
4414
+ lifecycle.enter();
4415
+ lifecycle.state$
4416
+ .pipe(filter((state) => state === 'entered'), take(1))
4417
+ .subscribe(() => {
4418
+ applyInitialFocus(paneElement, autoFocus, document);
4419
+ overlayRef.markOpened();
4420
+ });
4421
+ });
4422
+ return overlayRef;
4423
+ };
4424
+ destroyRef.onDestroy(() => {
4425
+ openEntriesState().forEach((entry) => entry.close(undefined, 'api'));
4426
+ maybeDestroyRootElement();
4427
+ });
4428
+ return {
4429
+ mount,
4430
+ openEntries,
4431
+ };
4432
+ }, { name: 'OverlayRuntime' });
4433
+
3878
4434
  class NormalizeGameResultTypePipe {
3879
4435
  constructor() {
3880
4436
  this.transform = normalizeGameResultType;
3881
4437
  }
3882
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NormalizeGameResultTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3883
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: NormalizeGameResultTypePipe, isStandalone: true, name: "etNormalizeGameResultType" }); }
4438
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NormalizeGameResultTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4439
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.13", ngImport: i0, type: NormalizeGameResultTypePipe, isStandalone: true, name: "etNormalizeGameResultType" }); }
3884
4440
  }
3885
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NormalizeGameResultTypePipe, decorators: [{
4441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NormalizeGameResultTypePipe, decorators: [{
3886
4442
  type: Pipe,
3887
4443
  args: [{ name: 'etNormalizeGameResultType' }]
3888
4444
  }] });
@@ -3924,10 +4480,10 @@ class NormalizeMatchStatePipe {
3924
4480
  constructor() {
3925
4481
  this.transform = normalizeMatchState;
3926
4482
  }
3927
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3928
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchStatePipe, isStandalone: true, name: "etNormalizeMatchState" }); }
4483
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4484
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchStatePipe, isStandalone: true, name: "etNormalizeMatchState" }); }
3929
4485
  }
3930
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchStatePipe, decorators: [{
4486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchStatePipe, decorators: [{
3931
4487
  type: Pipe,
3932
4488
  args: [{ name: 'etNormalizeMatchState' }]
3933
4489
  }] });
@@ -3954,10 +4510,10 @@ class NormalizeMatchParticipantsPipe {
3954
4510
  constructor() {
3955
4511
  this.transform = normalizeMatchParticipants;
3956
4512
  }
3957
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchParticipantsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3958
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchParticipantsPipe, isStandalone: true, name: "etNormalizeMatchParticipants" }); }
4513
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchParticipantsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4514
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchParticipantsPipe, isStandalone: true, name: "etNormalizeMatchParticipants" }); }
3959
4515
  }
3960
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchParticipantsPipe, decorators: [{
4516
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchParticipantsPipe, decorators: [{
3961
4517
  type: Pipe,
3962
4518
  args: [{ name: 'etNormalizeMatchParticipants' }]
3963
4519
  }] });
@@ -4011,10 +4567,10 @@ class NormalizeMatchScorePipe {
4011
4567
  constructor() {
4012
4568
  this.transform = normalizeMatchScore;
4013
4569
  }
4014
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchScorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4015
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchScorePipe, isStandalone: true, name: "etNormalizeMatchScore" }); }
4570
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchScorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4571
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchScorePipe, isStandalone: true, name: "etNormalizeMatchScore" }); }
4016
4572
  }
4017
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchScorePipe, decorators: [{
4573
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchScorePipe, decorators: [{
4018
4574
  type: Pipe,
4019
4575
  args: [{ name: 'etNormalizeMatchScore' }]
4020
4576
  }] });
@@ -4147,10 +4703,10 @@ class NormalizeMatchTypePipe {
4147
4703
  constructor() {
4148
4704
  this.transform = normalizeMatchType;
4149
4705
  }
4150
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4151
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchTypePipe, isStandalone: true, name: "etNormalizeMatchType" }); }
4706
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4707
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchTypePipe, isStandalone: true, name: "etNormalizeMatchType" }); }
4152
4708
  }
4153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NormalizeMatchTypePipe, decorators: [{
4709
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NormalizeMatchTypePipe, decorators: [{
4154
4710
  type: Pipe,
4155
4711
  args: [{ name: 'etNormalizeMatchType' }]
4156
4712
  }] });
@@ -4189,6 +4745,8 @@ const normalizeMatchType = (matchType) => {
4189
4745
  i18n: 'match-type.pools',
4190
4746
  text: 'Pools',
4191
4747
  };
4748
+ default:
4749
+ return null;
4192
4750
  }
4193
4751
  };
4194
4752
 
@@ -4196,10 +4754,10 @@ class InferMimeTypePipe {
4196
4754
  constructor() {
4197
4755
  this.transform = inferMimeType;
4198
4756
  }
4199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: InferMimeTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4200
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: InferMimeTypePipe, isStandalone: true, name: "inferMimeType" }); }
4757
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: InferMimeTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4758
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.13", ngImport: i0, type: InferMimeTypePipe, isStandalone: true, name: "inferMimeType" }); }
4201
4759
  }
4202
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: InferMimeTypePipe, decorators: [{
4760
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: InferMimeTypePipe, decorators: [{
4203
4761
  type: Pipe,
4204
4762
  args: [{
4205
4763
  name: 'inferMimeType',
@@ -4409,10 +4967,10 @@ class ToArrayPipe {
4409
4967
  constructor() {
4410
4968
  this.transform = toArray;
4411
4969
  }
4412
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4413
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
4970
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4971
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.13", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
4414
4972
  }
4415
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ToArrayPipe, decorators: [{
4973
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ToArrayPipe, decorators: [{
4416
4974
  type: Pipe,
4417
4975
  args: [{ name: 'toArray' }]
4418
4976
  }] });
@@ -4444,14 +5002,14 @@ const createElementDictionary = () => {
4444
5002
  const firstElement = computed(() => {
4445
5003
  const id = dictionary.ids()[0];
4446
5004
  return id ? (dictionary.elements()[id] ?? null) : null;
4447
- }, ...(ngDevMode ? [{ debugName: "firstElement" }] : []));
5005
+ }, ...(ngDevMode ? [{ debugName: "firstElement" }] : /* istanbul ignore next */ []));
4448
5006
  const firstId = computed(() => {
4449
5007
  const id = dictionary.ids()[0];
4450
5008
  return id ?? null;
4451
- }, ...(ngDevMode ? [{ debugName: "firstId" }] : []));
4452
- const ids = computed(() => dictionary.ids(), ...(ngDevMode ? [{ debugName: "ids" }] : []));
4453
- const elements = computed(() => ids().map((id) => dictionary.elements()[id]), ...(ngDevMode ? [{ debugName: "elements" }] : []));
4454
- const isEmpty = computed(() => dictionary.ids().length === 0, ...(ngDevMode ? [{ debugName: "isEmpty" }] : []));
5009
+ }, ...(ngDevMode ? [{ debugName: "firstId" }] : /* istanbul ignore next */ []));
5010
+ const ids = computed(() => dictionary.ids(), ...(ngDevMode ? [{ debugName: "ids" }] : /* istanbul ignore next */ []));
5011
+ const elements = computed(() => ids().map((id) => dictionary.elements()[id]), ...(ngDevMode ? [{ debugName: "elements" }] : /* istanbul ignore next */ []));
5012
+ const isEmpty = computed(() => dictionary.ids().length === 0, ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
4455
5013
  const has = (id) => {
4456
5014
  return dictionary.ids().includes(id);
4457
5015
  };
@@ -4535,7 +5093,7 @@ const unbindProps = (config) => {
4535
5093
  const createProps = (props) => {
4536
5094
  const { bindId = false, single = true, classes: classBindings, attributes: attributeBindings, styles: styleBindings, staticAttributes: staticAttributeBindings = null, staticClasses: staticClassBindings = null, staticStyles: staticStyleBindings = null, listeners, name, } = props;
4537
5095
  const dictionary = createElementDictionary();
4538
- const attached = computed(() => !dictionary.isEmpty(), ...(ngDevMode ? [{ debugName: "attached" }] : []));
5096
+ const attached = computed(() => !dictionary.isEmpty(), ...(ngDevMode ? [{ debugName: "attached" }] : /* istanbul ignore next */ []));
4539
5097
  const attachedElements = {
4540
5098
  first: dictionary.firstElement,
4541
5099
  firstId: dictionary.firstId,
@@ -4621,7 +5179,7 @@ const createDependencyStash = (stash) => {
4621
5179
  class PropsDirective {
4622
5180
  constructor() {
4623
5181
  this.destroyRef = inject(DestroyRef);
4624
- this.props = input.required({ ...(ngDevMode ? { debugName: "props" } : {}), alias: 'etProps', transform: (d) => d });
5182
+ this.props = input.required({ ...(ngDevMode ? { debugName: "props" } : /* istanbul ignore next */ {}), alias: 'etProps', transform: (d) => d });
4625
5183
  this.propHandlers = createPropHandlers();
4626
5184
  afterNextRender({
4627
5185
  write: () => {
@@ -4638,10 +5196,10 @@ class PropsDirective {
4638
5196
  });
4639
5197
  });
4640
5198
  }
4641
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PropsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4642
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", type: PropsDirective, isStandalone: true, selector: "[etProps]", inputs: { props: { classPropertyName: "props", publicName: "etProps", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
5199
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PropsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5200
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.13", type: PropsDirective, isStandalone: true, selector: "[etProps]", inputs: { props: { classPropertyName: "props", publicName: "etProps", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
4643
5201
  }
4644
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PropsDirective, decorators: [{
5202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PropsDirective, decorators: [{
4645
5203
  type: Directive,
4646
5204
  args: [{
4647
5205
  selector: '[etProps]',
@@ -4707,8 +5265,8 @@ const setupResizeObservable = (startEvent, edge) => {
4707
5265
  };
4708
5266
  class ResizeHandlesComponent {
4709
5267
  constructor() {
4710
- this.edges = input(['n', 's', 'e', 'w', 'ne', 'nw', 'se', 'sw'], ...(ngDevMode ? [{ debugName: "edges" }] : []));
4711
- this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
5268
+ this.edges = input(['n', 's', 'e', 'w', 'ne', 'nw', 'se', 'sw'], ...(ngDevMode ? [{ debugName: "edges" }] : /* istanbul ignore next */ []));
5269
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
4712
5270
  this.gestureStart$ = new Subject();
4713
5271
  this.gesture$ = this.gestureStart$.pipe(exhaustMap(({ event, edge }) => setupResizeObservable(event, edge)), takeUntilDestroyed(), share());
4714
5272
  this.resizeStarted = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'start'), map((e) => e.edge)));
@@ -4730,8 +5288,8 @@ class ResizeHandlesComponent {
4730
5288
  event.stopPropagation();
4731
5289
  this.gestureStart$.next({ event, edge });
4732
5290
  }
4733
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ResizeHandlesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4734
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", 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" }, host: { properties: { "attr.inert": "disabled() ? \"\" : null", "attr.data-active-edge": "activeEdge()" }, classAttribute: "et-resize-handles" }, ngImport: i0, template: `
5291
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ResizeHandlesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5292
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.13", 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" }, host: { properties: { "attr.inert": "disabled() ? \"\" : null", "attr.data-active-edge": "activeEdge()" }, classAttribute: "et-resize-handles" }, ngImport: i0, template: `
4735
5293
  @for (edge of edges(); track edge) {
4736
5294
  <div
4737
5295
  [style.cursor]="edgeCursors[edge]"
@@ -4741,7 +5299,7 @@ class ResizeHandlesComponent {
4741
5299
  }
4742
5300
  `, isInline: true, styles: ["@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-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:0;pointer-events:none}.et-resize-handle{position:absolute;z-index:var(--et-resize-handles-z-index);touch-action:none;pointer-events:auto}.et-resize-handle--n{left:var(--et-resize-handles-edge-inset);right:var(--et-resize-handles-edge-inset);height:var(--et-resize-handles-edge-size);top:0}.et-resize-handle--s{left:var(--et-resize-handles-edge-inset);right:var(--et-resize-handles-edge-inset);height:var(--et-resize-handles-edge-size);bottom:0}.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-handles-edge-size)}.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-handles-corner-size);height:var(--et-resize-handles-corner-size)}.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-handles-corner-size);height:var(--et-resize-handles-corner-size)}.et-resize-handle--se{right:0}.et-resize-handle--sw{left:0}@media(hover:none){.et-resize-handle--n,.et-resize-handle--s{height:var(--et-resize-handles-touch-edge-size)}.et-resize-handle--e,.et-resize-handle--w{width:var(--et-resize-handles-touch-edge-size)}.et-resize-handle--ne,.et-resize-handle--nw,.et-resize-handle--se,.et-resize-handle--sw{width:var(--et-resize-handles-touch-corner-size);height:var(--et-resize-handles-touch-corner-size)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4743
5301
  }
4744
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ResizeHandlesComponent, decorators: [{
5302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ResizeHandlesComponent, decorators: [{
4745
5303
  type: Component,
4746
5304
  args: [{ selector: 'et-resize-handles', template: `
4747
5305
  @for (edge of edges(); track edge) {
@@ -4791,7 +5349,7 @@ const createPropertyBinding = (configBuilder, applyConfigFn) => {
4791
5349
  const createArrayPropertyBinding = (configBuilder, applyConfigFn) => {
4792
5350
  return (binding) => {
4793
5351
  const valuesSignal = isSignal(binding) ? binding : signal(binding);
4794
- const valuesList = computed(() => untracked(() => valuesSignal()) ?? [], ...(ngDevMode ? [{ debugName: "valuesList" }] : []));
5352
+ const valuesList = computed(() => untracked(() => valuesSignal()) ?? [], ...(ngDevMode ? [{ debugName: "valuesList" }] : /* istanbul ignore next */ []));
4795
5353
  valuesList().forEach((value, index) => {
4796
5354
  applyConfigFn(computed(() => configBuilder(value, index)));
4797
5355
  });
@@ -4836,7 +5394,7 @@ const [provideLinkStoreConfig, injectLinkStoreConfig] = createStaticRootProvider
4836
5394
  const [provideLinkStore, injectLinkStore] = createRootProvider(() => {
4837
5395
  const document = inject(DOCUMENT$1);
4838
5396
  const config = injectLinkStoreConfig();
4839
- const linksByKey = signal(new Map(), ...(ngDevMode ? [{ debugName: "linksByKey" }] : []));
5397
+ const linksByKey = signal(new Map(), ...(ngDevMode ? [{ debugName: "linksByKey" }] : /* istanbul ignore next */ []));
4840
5398
  let priorityCounter = 0;
4841
5399
  const getLinkKey = (linkConfig) => {
4842
5400
  const isMultiInstance = config.multiInstanceRels.has(linkConfig.rel) || linkConfig.allowMultiple;
@@ -4998,7 +5556,7 @@ const [provideTitleConfig, injectTitleConfig] = createStaticRootProvider({
4998
5556
  }, { name: 'Title Config' });
4999
5557
  const [provideTitleStore, injectTitleStore] = createRootProvider(() => {
5000
5558
  const config = injectTitleConfig();
5001
- const titleParts = signal(new Map(), ...(ngDevMode ? [{ debugName: "titleParts" }] : []));
5559
+ const titleParts = signal(new Map(), ...(ngDevMode ? [{ debugName: "titleParts" }] : /* istanbul ignore next */ []));
5002
5560
  const { currentLocale } = injectLocale();
5003
5561
  const titleService = inject(Title);
5004
5562
  const isRouterInitialized = injectIsRouterInitialized();
@@ -5026,7 +5584,7 @@ const [provideTitleStore, injectTitleStore] = createRootProvider(() => {
5026
5584
  finalTextParts.push(config.transformer(config.suffixPart.text, currentLocale()));
5027
5585
  }
5028
5586
  return finalTextParts.join(` ${config.divider} `);
5029
- }, ...(ngDevMode ? [{ debugName: "title" }] : []));
5587
+ }, ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
5030
5588
  const addPart = (id, part) => {
5031
5589
  titleParts.update((parts) => new Map(parts).set(id, part));
5032
5590
  };
@@ -5126,7 +5684,7 @@ const [provideMetaStore, injectMetaStore] = createRootProvider(() => {
5126
5684
  const metaService = inject(Meta);
5127
5685
  const config = injectMetaConfig();
5128
5686
  const { currentLocale } = injectLocale();
5129
- const metaTagsBySelector = signal(new Map(), ...(ngDevMode ? [{ debugName: "metaTagsBySelector" }] : []));
5687
+ const metaTagsBySelector = signal(new Map(), ...(ngDevMode ? [{ debugName: "metaTagsBySelector" }] : /* istanbul ignore next */ []));
5130
5688
  let priorityCounter = 0;
5131
5689
  const getSelector = (config) => {
5132
5690
  if (config.name)
@@ -5553,10 +6111,10 @@ class SeoDirective {
5553
6111
  }
5554
6112
  }
5555
6113
  }
5556
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SeoDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5557
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.1", type: SeoDirective, isStandalone: true, providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }], ngImport: i0 }); }
6114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SeoDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6115
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.13", type: SeoDirective, isStandalone: true, providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }], ngImport: i0 }); }
5558
6116
  }
5559
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SeoDirective, decorators: [{
6117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SeoDirective, decorators: [{
5560
6118
  type: Directive,
5561
6119
  args: [{
5562
6120
  providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }],
@@ -5570,7 +6128,7 @@ const [provideStructuredDataStore, injectStructuredDataStore] = createRootProvid
5570
6128
  const document = inject(DOCUMENT$1);
5571
6129
  const renderer = injectRenderer();
5572
6130
  const config = injectStructuredDataConfig();
5573
- const scripts = signal(new Map(), ...(ngDevMode ? [{ debugName: "scripts" }] : []));
6131
+ const scripts = signal(new Map(), ...(ngDevMode ? [{ debugName: "scripts" }] : /* istanbul ignore next */ []));
5574
6132
  const getTargetElement = () => {
5575
6133
  return config.placement === 'head' ? document.head : document.body;
5576
6134
  };
@@ -5611,7 +6169,7 @@ const applyStructuredDataBinding = (binding) => {
5611
6169
  class StructuredDataComponent {
5612
6170
  constructor() {
5613
6171
  this.sanitizer = inject(DomSanitizer);
5614
- this.data = input(null, ...(ngDevMode ? [{ debugName: "data" }] : []));
6172
+ this.data = input(null, ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
5615
6173
  this.jsonLD = computed(() => {
5616
6174
  const data = this.data();
5617
6175
  if (!data) {
@@ -5620,12 +6178,12 @@ class StructuredDataComponent {
5620
6178
  const json = data ? JSON.stringify(data, null, 2).replace(/<\/script>/g, '<\\/script>') : '';
5621
6179
  const html = `<script type="application/ld+json">${json}</script>`;
5622
6180
  return this.sanitizer.bypassSecurityTrustHtml(html);
5623
- }, ...(ngDevMode ? [{ debugName: "jsonLD" }] : []));
6181
+ }, ...(ngDevMode ? [{ debugName: "jsonLD" }] : /* istanbul ignore next */ []));
5624
6182
  }
5625
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: StructuredDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5626
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", 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, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: StructuredDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6184
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.13", 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, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
5627
6185
  }
5628
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: StructuredDataComponent, decorators: [{
6186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: StructuredDataComponent, decorators: [{
5629
6187
  type: Component,
5630
6188
  args: [{
5631
6189
  selector: 'et-structured-data',
@@ -5639,45 +6197,115 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
5639
6197
  }]
5640
6198
  }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }] } });
5641
6199
 
5642
- const createCssColorThemeName = (name) => name.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);
5643
- const [ɵProvideColorThemes, injectColorThemes] = createStaticProvider(undefined, {
5644
- name: 'Color Themes',
5645
- });
5646
- const [ɵProvideColorThemesPrefix, injectColorThemesPrefix] = createStaticProvider('et', {
5647
- name: 'Themes Prefix',
5648
- });
5649
- const provideColorThemesWithTailwind4 = (themes, prefix = 'et') => [
5650
- ɵProvideColorThemes(themes.map((theme) => theme.name)),
5651
- ɵProvideColorThemesPrefix(prefix),
5652
- ];
5653
-
5654
- class ColoredStylesComponent {
5655
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColoredStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5656
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: ColoredStylesComponent, isStandalone: true, selector: "et-colored-styles", ngImport: i0, template: '', isInline: true, styles: [":where(.et-colored){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-opacity: 1;--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-primary: rgb(var(--et-theme-color-primary-rgb) / var(--et-theme-color-primary-opacity));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-opacity: 1;--et-theme-color-on-primary-solid: rgb( var(--et-theme-color-on-primary-rgb) / var(--et-theme-color-on-primary-opacity) );--et-theme-color-on-primary: rgb(var(--et-theme-color-on-primary-rgb) / var(--et-theme-color-on-primary-opacity));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-opacity: 1;--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb) / var(--et-theme-color-ink-opacity));--et-theme-color-ink: rgb(var(--et-theme-color-ink-rgb) / var(--et-theme-color-ink-opacity))}:where(.et-colored:hover){--et-theme-color-primary-rgb: var(--et-color-primary-hover, var(--et-color-primary));--et-theme-color-on-primary-rgb: var(--et-color-on-primary-hover, var(--et-color-on-primary));--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))) )}:where(.et-colored:focus-visible){--et-theme-color-primary-rgb: var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary)));--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-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)))) ) )}:where(.et-colored:active){--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-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-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))) ) ) ) ) )}:where(.et-colored[disabled]),:where(.et-colored[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-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-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))) ) ) ) ) ) ) )}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6200
+ class ColorInteractiveStylesComponent {
6201
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ColorInteractiveStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6202
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.13", type: ColorInteractiveStylesComponent, isStandalone: true, selector: "et-color-interactive-styles", ngImport: i0, template: '', isInline: true, styles: [":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-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[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"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
5657
6203
  }
5658
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColoredStylesComponent, decorators: [{
6204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ColorInteractiveStylesComponent, decorators: [{
5659
6205
  type: Component,
5660
- args: [{ selector: 'et-colored-styles', template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":where(.et-colored){--et-theme-color-primary-rgb: var(--et-color-primary);--et-theme-color-primary-opacity: 1;--et-theme-color-primary-solid: rgb(var(--et-theme-color-primary-rgb));--et-theme-color-primary: rgb(var(--et-theme-color-primary-rgb) / var(--et-theme-color-primary-opacity));--et-theme-color-on-primary-rgb: var(--et-color-on-primary);--et-theme-color-on-primary-opacity: 1;--et-theme-color-on-primary-solid: rgb( var(--et-theme-color-on-primary-rgb) / var(--et-theme-color-on-primary-opacity) );--et-theme-color-on-primary: rgb(var(--et-theme-color-on-primary-rgb) / var(--et-theme-color-on-primary-opacity));--et-theme-color-ink-rgb: var(--et-color-primary-ink, var(--et-color-primary));--et-theme-color-ink-opacity: 1;--et-theme-color-ink-solid: rgb(var(--et-theme-color-ink-rgb) / var(--et-theme-color-ink-opacity));--et-theme-color-ink: rgb(var(--et-theme-color-ink-rgb) / var(--et-theme-color-ink-opacity))}:where(.et-colored:hover){--et-theme-color-primary-rgb: var(--et-color-primary-hover, var(--et-color-primary));--et-theme-color-on-primary-rgb: var(--et-color-on-primary-hover, var(--et-color-on-primary));--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))) )}:where(.et-colored:focus-visible){--et-theme-color-primary-rgb: var(--et-color-primary-focus, var(--et-color-primary-hover, var(--et-color-primary)));--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-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)))) ) )}:where(.et-colored:active){--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-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-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))) ) ) ) ) )}:where(.et-colored[disabled]),:where(.et-colored[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-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-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))) ) ) ) ) ) ) )}\n"] }]
6206
+ args: [{ selector: 'et-color-interactive-styles', template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":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-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[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"] }]
6207
+ }] });
6208
+
6209
+ class ColorInteractiveContainerDirective {
6210
+ constructor() {
6211
+ this.styleManager = injectStyleManager();
6212
+ this.styleManager.mount(ColorInteractiveStylesComponent);
6213
+ }
6214
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ColorInteractiveContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6215
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.13", type: ColorInteractiveContainerDirective, isStandalone: true, selector: "[etColorInteractiveContainer]", host: { classAttribute: "et-color-interactive-container" }, ngImport: i0 }); }
6216
+ }
6217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ColorInteractiveContainerDirective, decorators: [{
6218
+ type: Directive,
6219
+ args: [{
6220
+ selector: '[etColorInteractiveContainer]',
6221
+ host: {
6222
+ class: 'et-color-interactive-container',
6223
+ },
6224
+ }]
6225
+ }], ctorParameters: () => [] });
6226
+
6227
+ class ColorInteractiveExcludeDirective {
6228
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ColorInteractiveExcludeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6229
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.13", type: ColorInteractiveExcludeDirective, isStandalone: true, selector: "[etColorInteractiveExclude]", host: { classAttribute: "et-color-interactive-exclude" }, ngImport: i0 }); }
6230
+ }
6231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ColorInteractiveExcludeDirective, decorators: [{
6232
+ type: Directive,
6233
+ args: [{
6234
+ selector: '[etColorInteractiveExclude]',
6235
+ host: {
6236
+ class: 'et-color-interactive-exclude',
6237
+ },
6238
+ }]
5661
6239
  }] });
5662
6240
 
5663
- class ColoredDirective {
6241
+ class ColorInteractiveHasFocusDirective {
6242
+ constructor() {
6243
+ this.styleManager = injectStyleManager();
6244
+ this.styleManager.mount(ColorInteractiveStylesComponent);
6245
+ }
6246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ColorInteractiveHasFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6247
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.13", type: ColorInteractiveHasFocusDirective, isStandalone: true, selector: "[etColorInteractiveHasFocus]", host: { classAttribute: "et-color-interactive et-color-interactive--has-focus" }, ngImport: i0 }); }
6248
+ }
6249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ColorInteractiveHasFocusDirective, decorators: [{
6250
+ type: Directive,
6251
+ args: [{
6252
+ selector: '[etColorInteractiveHasFocus]',
6253
+ host: {
6254
+ class: 'et-color-interactive et-color-interactive--has-focus',
6255
+ },
6256
+ }]
6257
+ }], ctorParameters: () => [] });
6258
+
6259
+ class ColorInteractiveDirective {
5664
6260
  constructor() {
5665
6261
  this.styleManager = injectStyleManager();
5666
- this.styleManager.mount(ColoredStylesComponent);
6262
+ this.styleManager.mount(ColorInteractiveStylesComponent);
5667
6263
  }
5668
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColoredDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5669
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.1", type: ColoredDirective, isStandalone: true, selector: "[etColored]", host: { classAttribute: "et-colored" }, ngImport: i0 }); }
6264
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ColorInteractiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6265
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.13", type: ColorInteractiveDirective, isStandalone: true, selector: "[etColorInteractive]", host: { classAttribute: "et-color-interactive" }, ngImport: i0 }); }
5670
6266
  }
5671
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColoredDirective, decorators: [{
6267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ColorInteractiveDirective, decorators: [{
5672
6268
  type: Directive,
5673
6269
  args: [{
5674
- selector: '[etColored]',
6270
+ selector: '[etColorInteractive]',
5675
6271
  host: {
5676
- class: 'et-colored',
6272
+ class: 'et-color-interactive',
5677
6273
  },
5678
6274
  }]
5679
6275
  }], ctorParameters: () => [] });
5680
6276
 
6277
+ const createCssColorThemeName = (name) => name.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);
6278
+ const [ɵProvideColorThemes, injectColorThemes] = createStaticProvider(undefined, {
6279
+ name: 'Color Themes',
6280
+ });
6281
+ const [ɵProvideColorThemesPrefix, injectColorThemesPrefix] = createStaticProvider('et', {
6282
+ name: 'Themes Prefix',
6283
+ });
6284
+ const provideColorThemesWithTailwind4 = (themes, prefix = 'et') => [
6285
+ ɵProvideColorThemes(themes),
6286
+ ɵProvideColorThemesPrefix(prefix),
6287
+ ];
6288
+ const injectColorThemeByType = (type) => {
6289
+ const themes = injectColorThemes();
6290
+ if (!themes) {
6291
+ throw new Error(`[injectColorThemeByType] No color themes provided. Call provideColorThemesWithTailwind4() in your app config.`);
6292
+ }
6293
+ const theme = themes.find((t) => t.type === type);
6294
+ if (!theme) {
6295
+ throw new Error(`[injectColorThemeByType] No color theme with type "${type}" found. Add a theme with type: "${type}" to provideColorThemesWithTailwind4().`);
6296
+ }
6297
+ if (isDevMode()) {
6298
+ const duplicates = themes.filter((t) => t.type === type);
6299
+ if (duplicates.length > 1) {
6300
+ console.error(`[injectColorThemeByType] Multiple themes with type "${type}" found: ${duplicates.map((t) => t.name).join(', ')}. Only the first one will be used.`);
6301
+ }
6302
+ }
6303
+ return theme;
6304
+ };
6305
+ const injectErrorTheme = () => injectColorThemeByType('error');
6306
+ const injectWarningTheme = () => injectColorThemeByType('warning');
6307
+ const injectSuccessTheme = () => injectColorThemeByType('success');
6308
+
5681
6309
  /**
5682
6310
  * @deprecated Migrate to Tailwind v4. Intent to remove in v6.
5683
6311
  */
@@ -5863,69 +6491,82 @@ const provideColorThemes = (themes) => {
5863
6491
  createThemeStyle(theme, true);
5864
6492
  }
5865
6493
  createRootThemeCss(themes);
5866
- return [ɵProvideColorThemes(themes.map((theme) => theme.name)), ɵProvideColorThemesPrefix('et')];
6494
+ return [ɵProvideColorThemes(themes), ɵProvideColorThemesPrefix('et')];
5867
6495
  };
5868
6496
 
5869
6497
  const COLOR_PROVIDER = new InjectionToken('ColorProvider');
6498
+ const FORCED_COLOR_UNSET = Symbol('FORCED_COLOR_UNSET');
5870
6499
  class ProvideColorDirective {
5871
6500
  constructor() {
5872
6501
  this.themes = injectColorThemes({ optional: true });
5873
6502
  this.prefix = injectColorThemesPrefix({ optional: true });
5874
6503
  this.injector = inject(Injector);
5875
6504
  this.currentProviderSync = null;
5876
- this.mainColor = input(undefined, { ...(ngDevMode ? { debugName: "mainColor" } : {}), alias: 'etProvideColor' });
5877
- this.altColor = input(undefined, { ...(ngDevMode ? { debugName: "altColor" } : {}), alias: 'etProvideAltColor' });
5878
- this.mainColorName = computed(() => {
5879
- const value = this.mainColor();
5880
- if (!this.themes || !value)
5881
- return;
5882
- if (isDevMode() && !this.themes?.some((theme) => theme === value) && value !== null) {
5883
- console.error(`Theme ${value} does not exist. Please make sure to add it to provideColorThemes()`);
6505
+ this.forcedColor = signal(FORCED_COLOR_UNSET, ...(ngDevMode ? [{ debugName: "forcedColor" }] : /* istanbul ignore next */ []));
6506
+ this.color = input(undefined, { ...(ngDevMode ? { debugName: "color" } : /* istanbul ignore next */ {}), alias: 'etProvideColor' });
6507
+ this.effectiveColor = computed(() => {
6508
+ const forcedColor = this.forcedColor();
6509
+ if (forcedColor !== FORCED_COLOR_UNSET) {
6510
+ return forcedColor;
5884
6511
  }
5885
- return createCssColorThemeName(value);
5886
- }, ...(ngDevMode ? [{ debugName: "mainColorName" }] : []));
5887
- this.altColorName = computed(() => {
5888
- const value = this.altColor();
6512
+ return this.color();
6513
+ }, ...(ngDevMode ? [{ debugName: "effectiveColor" }] : /* istanbul ignore next */ []));
6514
+ this.colorName = computed(() => {
6515
+ const raw = this.effectiveColor();
6516
+ const value = typeof raw === 'object' && raw !== null ? raw.name : raw;
5889
6517
  if (!this.themes || !value)
5890
6518
  return;
5891
- if (isDevMode() && !this.themes?.some((theme) => theme === value) && value !== null) {
5892
- console.warn(`Theme ${value} does not exist. Please make sure to add it to provideColorThemes()`);
6519
+ if (isDevMode() && !this.themes.some((theme) => theme.name === value) && value !== null) {
6520
+ console.error(`Theme ${value} does not exist. Please make sure to add it to provideColorThemesWithTailwind4()`);
5893
6521
  }
5894
6522
  return createCssColorThemeName(value);
5895
- }, ...(ngDevMode ? [{ debugName: "altColorName" }] : []));
6523
+ }, ...(ngDevMode ? [{ debugName: "colorName" }] : /* istanbul ignore next */ []));
5896
6524
  this.themeClass = computed(() => {
5897
- const themes = [];
5898
6525
  const prefix = this.prefix || 'et';
5899
- if (this.mainColorName()) {
5900
- themes.push(`${prefix}-color--${this.mainColorName()}`);
5901
- }
5902
- if (this.altColorName()) {
5903
- themes.push(`${prefix}-color-alt--${this.altColorName()}`);
6526
+ if (this.colorName()) {
6527
+ return `${prefix}-color--${this.colorName()}`;
5904
6528
  }
5905
- return themes.join(' ');
5906
- }, ...(ngDevMode ? [{ debugName: "themeClass" }] : []));
6529
+ return `${prefix}-color--inherited`;
6530
+ }, ...(ngDevMode ? [{ debugName: "themeClass" }] : /* istanbul ignore next */ []));
5907
6531
  }
5908
6532
  syncWithProvider(provider) {
5909
6533
  this.currentProviderSync?.destroy();
5910
6534
  runInInjectionContext(this.injector, () => {
5911
6535
  this.currentProviderSync = effect(() => {
5912
- const provideMainColor = provider.mainColor();
5913
- const provideAltColor = provider.altColor();
6536
+ const provideColor = provider.effectiveColor();
5914
6537
  untracked(() => {
5915
- setInputSignal(this.mainColor, provideMainColor);
5916
- setInputSignal(this.altColor, provideAltColor);
6538
+ if (provideColor === undefined) {
6539
+ this.clearForcedColor();
6540
+ return;
6541
+ }
6542
+ this.forceColor(provideColor);
5917
6543
  });
5918
- }, ...(ngDevMode ? [{ debugName: "currentProviderSync" }] : []));
6544
+ }, ...(ngDevMode ? [{ debugName: "currentProviderSync" }] : /* istanbul ignore next */ []));
5919
6545
  });
5920
6546
  }
5921
6547
  stopSyncWithProvider() {
6548
+ const hadProviderSync = !!this.currentProviderSync;
5922
6549
  this.currentProviderSync?.destroy();
5923
6550
  this.currentProviderSync = null;
6551
+ if (hadProviderSync) {
6552
+ this.clearForcedColor();
6553
+ }
6554
+ }
6555
+ /** @internal */
6556
+ forceColor(color) {
6557
+ this.forcedColor.set(color);
6558
+ }
6559
+ /** @internal */
6560
+ clearForcedColor() {
6561
+ if (this.forcedColor() === FORCED_COLOR_UNSET) {
6562
+ return;
6563
+ }
6564
+ this.forcedColor.set(FORCED_COLOR_UNSET);
5924
6565
  }
5925
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ProvideColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5926
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", type: ProvideColorDirective, isStandalone: true, selector: "[etProvideColor]", inputs: { mainColor: { classPropertyName: "mainColor", publicName: "etProvideColor", isSignal: true, isRequired: false, transformFunction: null }, altColor: { classPropertyName: "altColor", publicName: "etProvideAltColor", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "themeClass()" } }, providers: [{ provide: COLOR_PROVIDER, useExisting: ProvideColorDirective }], ngImport: i0 }); }
6566
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ProvideColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6567
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.13", 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 }); }
5927
6568
  }
5928
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ProvideColorDirective, decorators: [{
6569
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ProvideColorDirective, decorators: [{
5929
6570
  type: Directive,
5930
6571
  args: [{
5931
6572
  selector: '[etProvideColor]',
@@ -5934,7 +6575,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
5934
6575
  '[class]': 'themeClass()',
5935
6576
  },
5936
6577
  }]
5937
- }], propDecorators: { mainColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "etProvideColor", required: false }] }], altColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "etProvideAltColor", required: false }] }] } });
6578
+ }], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: "etProvideColor", required: false }] }] } });
5938
6579
 
5939
6580
  const SURFACE_TYPE = {
5940
6581
  LIGHT: 'light',
@@ -5954,15 +6595,24 @@ const provideSurfaceThemesWithTailwind4 = (themes, prefix = 'et') => [
5954
6595
  ];
5955
6596
 
5956
6597
  const SURFACE_PROVIDER = new InjectionToken('SurfaceProvider');
6598
+ const FORCED_SURFACE_UNSET = Symbol('FORCED_SURFACE_UNSET');
5957
6599
  class ProvideSurfaceDirective {
5958
6600
  constructor() {
5959
6601
  this.themes = injectSurfaceThemes({ optional: true });
5960
6602
  this.prefix = injectSurfaceThemesPrefix({ optional: true });
5961
6603
  this.injector = inject(Injector);
5962
6604
  this.currentProviderSync = null;
5963
- this.surface = input(undefined, { ...(ngDevMode ? { debugName: "surface" } : {}), alias: 'etProvideSurface' });
6605
+ this.forcedSurface = signal(FORCED_SURFACE_UNSET, ...(ngDevMode ? [{ debugName: "forcedSurface" }] : /* istanbul ignore next */ []));
6606
+ this.surface = input(undefined, { ...(ngDevMode ? { debugName: "surface" } : /* istanbul ignore next */ {}), alias: 'etProvideSurface' });
6607
+ this.effectiveSurface = computed(() => {
6608
+ const forcedSurface = this.forcedSurface();
6609
+ if (forcedSurface !== FORCED_SURFACE_UNSET) {
6610
+ return forcedSurface;
6611
+ }
6612
+ return this.surface();
6613
+ }, ...(ngDevMode ? [{ debugName: "effectiveSurface" }] : /* istanbul ignore next */ []));
5964
6614
  this.resolvedTheme = computed(() => {
5965
- const value = this.surface();
6615
+ const value = this.effectiveSurface();
5966
6616
  if (!this.themes || !value)
5967
6617
  return null;
5968
6618
  const theme = this.themes.find((t) => t.name === value) ?? null;
@@ -5970,43 +6620,61 @@ class ProvideSurfaceDirective {
5970
6620
  console.error(`Surface theme ${value} does not exist. Please make sure to add it to provideSurfaceThemesWithTailwind4()`);
5971
6621
  }
5972
6622
  return theme;
5973
- }, ...(ngDevMode ? [{ debugName: "resolvedTheme" }] : []));
5974
- this.elevation = computed(() => this.resolvedTheme()?.elevation ?? 0, ...(ngDevMode ? [{ debugName: "elevation" }] : []));
5975
- this.surfaceType = computed(() => this.resolvedTheme()?.type ?? null, ...(ngDevMode ? [{ debugName: "surfaceType" }] : []));
5976
- this.neutralColor = computed(() => this.resolvedTheme()?.neutralColor ?? null, ...(ngDevMode ? [{ debugName: "neutralColor" }] : []));
6623
+ }, ...(ngDevMode ? [{ debugName: "resolvedTheme" }] : /* istanbul ignore next */ []));
6624
+ this.elevation = computed(() => this.resolvedTheme()?.elevation ?? 0, ...(ngDevMode ? [{ debugName: "elevation" }] : /* istanbul ignore next */ []));
6625
+ this.surfaceType = computed(() => this.resolvedTheme()?.type ?? null, ...(ngDevMode ? [{ debugName: "surfaceType" }] : /* istanbul ignore next */ []));
5977
6626
  this.surfaceName = computed(() => {
5978
- const value = this.surface();
6627
+ const value = this.effectiveSurface();
5979
6628
  if (!this.themes || !value)
5980
6629
  return;
5981
6630
  return createCssSurfaceName(value);
5982
- }, ...(ngDevMode ? [{ debugName: "surfaceName" }] : []));
6631
+ }, ...(ngDevMode ? [{ debugName: "surfaceName" }] : /* istanbul ignore next */ []));
5983
6632
  this.surfaceClass = computed(() => {
5984
6633
  const prefix = this.prefix || 'et';
5985
6634
  if (this.surfaceName()) {
5986
6635
  return `${prefix}-surface--${this.surfaceName()}`;
5987
6636
  }
5988
- return '';
5989
- }, ...(ngDevMode ? [{ debugName: "surfaceClass" }] : []));
6637
+ return `${prefix}-surface--inherited`;
6638
+ }, ...(ngDevMode ? [{ debugName: "surfaceClass" }] : /* istanbul ignore next */ []));
5990
6639
  }
5991
6640
  syncWithProvider(provider) {
5992
6641
  this.currentProviderSync?.destroy();
5993
6642
  runInInjectionContext(this.injector, () => {
5994
6643
  this.currentProviderSync = effect(() => {
5995
- const provideSurface = provider.surface();
6644
+ const provideSurface = provider.effectiveSurface();
5996
6645
  untracked(() => {
5997
- setInputSignal(this.surface, provideSurface);
6646
+ if (provideSurface === undefined) {
6647
+ this.clearForcedSurface();
6648
+ return;
6649
+ }
6650
+ this.forceSurface(provideSurface);
5998
6651
  });
5999
- }, ...(ngDevMode ? [{ debugName: "currentProviderSync" }] : []));
6652
+ }, ...(ngDevMode ? [{ debugName: "currentProviderSync" }] : /* istanbul ignore next */ []));
6000
6653
  });
6001
6654
  }
6002
6655
  stopSyncWithProvider() {
6656
+ const hadProviderSync = !!this.currentProviderSync;
6003
6657
  this.currentProviderSync?.destroy();
6004
6658
  this.currentProviderSync = null;
6659
+ if (hadProviderSync) {
6660
+ this.clearForcedSurface();
6661
+ }
6662
+ }
6663
+ /** @internal */
6664
+ forceSurface(surface) {
6665
+ this.forcedSurface.set(surface);
6666
+ }
6667
+ /** @internal */
6668
+ clearForcedSurface() {
6669
+ if (this.forcedSurface() === FORCED_SURFACE_UNSET) {
6670
+ return;
6671
+ }
6672
+ this.forcedSurface.set(FORCED_SURFACE_UNSET);
6005
6673
  }
6006
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ProvideSurfaceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6007
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", 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 }); }
6674
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ProvideSurfaceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6675
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.13", 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 }); }
6008
6676
  }
6009
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ProvideSurfaceDirective, decorators: [{
6677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ProvideSurfaceDirective, decorators: [{
6010
6678
  type: Directive,
6011
6679
  args: [{
6012
6680
  selector: '[etProvideSurface]',
@@ -6019,48 +6687,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
6019
6687
 
6020
6688
  let uniqueId = 0;
6021
6689
  const [provideSurfaceContextTracker, injectSurfaceContextTracker] = createRootProvider(() => {
6022
- const entries = signal([], ...(ngDevMode ? [{ debugName: "entries" }] : []));
6690
+ const entries = signal([], ...(ngDevMode ? [{ debugName: "entries" }] : /* istanbul ignore next */ []));
6023
6691
  const topEntry = computed(() => {
6024
6692
  const stack = entries();
6025
6693
  return stack.length > 0 ? (stack[stack.length - 1] ?? null) : null;
6026
- }, ...(ngDevMode ? [{ debugName: "topEntry" }] : []));
6027
- const topType = computed(() => topEntry()?.type ?? null, ...(ngDevMode ? [{ debugName: "topType" }] : []));
6028
- const topElevation = computed(() => topEntry()?.elevation ?? 0, ...(ngDevMode ? [{ debugName: "topElevation" }] : []));
6029
- const topNeutralColor = computed(() => topEntry()?.neutralColor ?? null, ...(ngDevMode ? [{ debugName: "topNeutralColor" }] : []));
6030
- const register = (type, elevation, neutralColor) => {
6694
+ }, ...(ngDevMode ? [{ debugName: "topEntry" }] : /* istanbul ignore next */ []));
6695
+ const topType = computed(() => topEntry()?.type ?? null, ...(ngDevMode ? [{ debugName: "topType" }] : /* istanbul ignore next */ []));
6696
+ const topElevation = computed(() => topEntry()?.elevation ?? 0, ...(ngDevMode ? [{ debugName: "topElevation" }] : /* istanbul ignore next */ []));
6697
+ const register = (type, elevation) => {
6031
6698
  const id = `surface-ctx-${uniqueId++}`;
6032
- const entry = { id, type, elevation, neutralColor: neutralColor ?? null };
6699
+ const entry = { id, type, elevation };
6033
6700
  entries.update((e) => [...e, entry]);
6034
6701
  return () => {
6035
6702
  entries.update((e) => e.filter((item) => item.id !== id));
6036
6703
  };
6037
6704
  };
6038
- return { topType, topElevation, topNeutralColor, register };
6705
+ return { topType, topElevation, register };
6039
6706
  }, { name: 'SurfaceContextTracker' });
6040
6707
 
6041
- class SurfacedStylesComponent {
6042
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SurfacedStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6043
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: SurfacedStylesComponent, isStandalone: true, selector: "et-surfaced-styles", ngImport: i0, template: '', isInline: true, styles: [":where(.et-surfaced){--et-surface-background-rgb: var(--et-surface-background);--et-surface-background-solid: rgb(var(--et-surface-background-rgb));--et-surface-color-rgb: var(--et-surface-color);--et-surface-color-solid: rgb(var(--et-surface-color-rgb));--et-surface-color-muted-rgb: var(--et-surface-color-muted);--et-surface-color-muted-solid: rgb(var(--et-surface-color-muted-rgb));--et-surface-color-subtle-rgb: var(--et-surface-color-subtle);--et-surface-color-subtle-solid: rgb(var(--et-surface-color-subtle-rgb));--et-surface-border-rgb: var(--et-surface-border);--et-surface-border-solid: rgb(var(--et-surface-border-rgb))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6708
+ class SurfaceInteractiveStylesComponent {
6709
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SurfaceInteractiveStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6710
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.13", type: SurfaceInteractiveStylesComponent, isStandalone: true, selector: "et-surface-interactive-styles", ngImport: i0, template: '', isInline: true, styles: [":where(.et-surface-interactive){--et-surface-interaction-rgb: var(--et-surface-interaction);--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}: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"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6044
6711
  }
6045
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SurfacedStylesComponent, decorators: [{
6712
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SurfaceInteractiveStylesComponent, decorators: [{
6046
6713
  type: Component,
6047
- args: [{ selector: 'et-surfaced-styles', template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":where(.et-surfaced){--et-surface-background-rgb: var(--et-surface-background);--et-surface-background-solid: rgb(var(--et-surface-background-rgb));--et-surface-color-rgb: var(--et-surface-color);--et-surface-color-solid: rgb(var(--et-surface-color-rgb));--et-surface-color-muted-rgb: var(--et-surface-color-muted);--et-surface-color-muted-solid: rgb(var(--et-surface-color-muted-rgb));--et-surface-color-subtle-rgb: var(--et-surface-color-subtle);--et-surface-color-subtle-solid: rgb(var(--et-surface-color-subtle-rgb));--et-surface-border-rgb: var(--et-surface-border);--et-surface-border-solid: rgb(var(--et-surface-border-rgb))}\n"] }]
6714
+ args: [{ selector: 'et-surface-interactive-styles', template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":where(.et-surface-interactive){--et-surface-interaction-rgb: var(--et-surface-interaction);--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb))}: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"] }]
6048
6715
  }] });
6049
6716
 
6050
- class SurfacedDirective {
6717
+ class SurfaceInteractiveDirective {
6051
6718
  constructor() {
6052
6719
  this.styleManager = injectStyleManager();
6053
- this.styleManager.mount(SurfacedStylesComponent);
6720
+ this.styleManager.mount(SurfaceInteractiveStylesComponent);
6054
6721
  }
6055
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SurfacedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6056
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.1", type: SurfacedDirective, isStandalone: true, selector: "[etSurfaced]", host: { classAttribute: "et-surfaced" }, ngImport: i0 }); }
6722
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SurfaceInteractiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6723
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.13", type: SurfaceInteractiveDirective, isStandalone: true, selector: "[etSurfaceInteractive]", host: { classAttribute: "et-surface-interactive" }, ngImport: i0 }); }
6057
6724
  }
6058
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SurfacedDirective, decorators: [{
6725
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SurfaceInteractiveDirective, decorators: [{
6059
6726
  type: Directive,
6060
6727
  args: [{
6061
- selector: '[etSurfaced]',
6728
+ selector: '[etSurfaceInteractive]',
6062
6729
  host: {
6063
- class: 'et-surfaced',
6730
+ class: 'et-surface-interactive',
6064
6731
  },
6065
6732
  }]
6066
6733
  }], ctorParameters: () => [] });
@@ -6069,5 +6736,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
6069
6736
  * Generated bundle index. Do not edit.
6070
6737
  */
6071
6738
 
6072
- export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AT_LEAST_ONE_REQUIRED, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, BOUNDARY_ELEMENT_TOKEN, BREAKPOINT_INSTANCE_TOKEN, BREAKPOINT_ORDER, COLOR_PROVIDER, ClickOutsideDirective, ColoredDirective, DEFAULT_MULTI_INSTANCE_RELS, DEFAULT_MULTI_INSTANCE_TAGS, 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, FOCUS_VISIBLE_TRACKER_TOKEN, IS_ARRAY_NOT_EMPTY, IS_EMAIL, InferMimeTypePipe, IsArrayNotEmpty, IsEmail, jsonLd as JsonLD, KeyPressManager, MUST_MATCH, MustMatch, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, PropsDirective, ProvideColorDirective, ProvideSurfaceDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeHandlesComponent, RuntimeError, SEO_DIRECTIVE_TOKEN, SURFACE_PROVIDER, SURFACE_TYPE, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SeoDirective, StructuredDataComponent, SurfacedDirective, ToArrayPipe, TypedQueryList, ValidateAtLeastOneRequired, Validators, applyAlternateBinding, applyAlternateLanguagesBindings, applyArticleBindings, applyAuthorBinding, applyCanonicalBinding, applyDescriptionBinding, applyHeadBinding, applyHeadTitleBinding, applyHostListener, applyHostListeners, applyKeywordsBinding, applyLinkBinding, applyMetaBinding, applyNextBinding, applyOgBinding, applyOpenGraphBindings, applyPrevBinding, applyResourceHintsBindings, applyRobotsBinding, applySocialMediaBindings, applyStructuredDataBinding, applyTwitterCardBindings, areScrollStatesEqual, bindProps, boolBreakpointTransform, booleanBreakpointAttribute, boundingClientRectToElementRect, breakpointTransformBase, buildElementSignal, buildSignalEffects, clamp, clone, cloneFormGroup, computedTillFalsy, computedTillTruthy, controlValueSignal, controlValueSignalWithPrevious, createArrayPropertyBinding, createBulkPropertyBinding, createCanAnimateSignal, createComponentId, createCssColorThemeName, createCssSurfaceName, createDependencyStash, createDestroy, createDocumentElementSignal, createElementDictionary, createElementDimensions, createEmptyElementSignal, createFlipAnimation, createFlipAnimationGroup, createHostProps, createIsRenderedSignal, createLogger, createPropHandlers, createPropertyBinding, createProps, createProvider, createRootProvider, createRootThemeCss, createRxHostListener, createSetup, createStaticProvider, createStaticRootProvider, createSwatchCss, createTailwindColorThemes, createTailwindCssVar, createTailwindRgbVar, createThemeStyle, createUserConsentProvider, deferredSignal, deleteCookie, easeElastic, easeIn, easeInOut, easeLinear, easeOut, easeOutBack, easeOutBackStrong, elementCanScroll, equal, firstElementSignal, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementScrollCoordinates, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, getScrollContainerTarget, getScrollItemTarget, getScrollSnapTarget, hasCookie, inferMimeType, injectAngularRootElement, injectBoundaryElement, injectBreakpointInput, injectBreakpointIsMatched, injectBreakpointObserver, injectCanHover, injectColorThemes, injectColorThemesPrefix, injectCurrentBreakpoint, injectDeviceInputType, injectDisplayOrientation, injectFocusVisibleTracker, injectFragment, injectHasPrecisionInput, injectHasTouchInput, injectHostElement, injectIs2Xl, injectIsLandscape, injectIsLg, injectIsMd, injectIsPortrait, injectIsRouterInitialized, injectIsSm, injectIsXl, injectIsXs, injectLinkStore, injectLinkStoreConfig, injectLocale, injectMediaQueryIsMatched, injectMetaConfig, injectMetaStore, injectObserveBreakpoint, injectObserveMediaQuery, injectPathParam, injectPathParamChanges, injectPathParams, injectQueryParam, injectQueryParamChanges, injectQueryParams, injectRenderer, injectRoute, injectRouteData, injectRouteDataItem, injectRouteTitle, injectRouterEvent, injectRouterState, injectScrollbarDimensions, injectStructuredDataConfig, injectStructuredDataStore, injectStyleManager, injectSurfaceContextTracker, injectSurfaceThemes, injectSurfaceThemesPrefix, injectTemplateRef, injectTitleConfig, injectTitleStore, injectUrl, injectViewportConfig, injectViewportDimensions, injectViewportSize, isArray, isElementSignal, isElementVisible, isGroupMatch, isKnockoutMatch, isObject, maybeSignalValue, memoizeSignal, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, numberBreakpointAttribute, numberBreakpointTransform, previousSignalValue, provideBoundaryElement, provideBreakpointInstance, provideBreakpointObserver, provideColorThemes, provideColorThemesWithTailwind4, provideFocusVisibleTracker, provideLinkStore, provideLinkStoreConfig, provideLocale, provideMetaConfig, provideMetaStore, provideRenderer, provideStructuredDataConfig, provideStructuredDataStore, provideStyleManager, provideSurfaceContextTracker, provideSurfaceThemesWithTailwind4, provideTitleConfig, provideTitleStore, provideViewportConfig, resolveSurfaceByElevation, round, routerDisableScrollTop, scrollToElement, setCookie, setInputSignal, setupScrollRestoration, signalAnimatedNumber, signalAttributes, signalClasses, signalElementChildren, signalElementDimensions, signalElementIntersection, signalElementLastScrollDirection, signalElementMutations, signalElementScrollState, signalHostAttributes, signalHostClasses, signalHostElementDimensions, signalHostElementIntersection, signalHostElementLastScrollDirection, signalHostElementMutations, signalHostElementScrollState, signalHostStyles, signalIsRendered, signalStyles, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, toStringBinding, transformOrReturn, typedBreakpointTransform, unbindProps, useCursorDragScroll, writeScrollbarSizeToCssVariables, writeViewportSizeToCssVariables, ɵProvideColorThemes, ɵProvideColorThemesPrefix, ɵProvideSurfaceThemes, ɵProvideSurfaceThemesPrefix };
6739
+ export { ANIMATABLE_TOKEN, ANIMATED_IF_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AT_LEAST_ONE_REQUIRED, AnimatableDirective, AnimatedIfDirective, AnimatedLifecycleDirective, AnimatedOverlayDirective, BOUNDARY_ELEMENT_TOKEN, BREAKPOINT_INSTANCE_TOKEN, BREAKPOINT_ORDER, COLOR_PROVIDER, ClickOutsideDirective, ColorInteractiveContainerDirective, ColorInteractiveDirective, ColorInteractiveExcludeDirective, ColorInteractiveHasFocusDirective, DEFAULT_MULTI_INSTANCE_RELS, DEFAULT_MULTI_INSTANCE_TAGS, 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, FOCUSABLE_SELECTOR, FOCUS_VISIBLE_TRACKER_TOKEN, IS_ARRAY_NOT_EMPTY, IS_EMAIL, InferMimeTypePipe, IsArrayNotEmpty, IsEmail, jsonLd as JsonLD, KeyPressManager, MUST_MATCH, MustMatch, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, PropsDirective, ProvideColorDirective, ProvideSurfaceDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, ResizeHandlesComponent, RuntimeError, SEO_DIRECTIVE_TOKEN, SURFACE_PROVIDER, SURFACE_TYPE, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SeoDirective, StructuredDataComponent, SurfaceInteractiveDirective, ToArrayPipe, TypedQueryList, ValidateAtLeastOneRequired, Validators, applyAlternateBinding, applyAlternateLanguagesBindings, applyArticleBindings, applyAuthorBinding, applyCanonicalBinding, applyCenteredPosition, applyDescriptionBinding, applyHeadBinding, applyHeadTitleBinding, applyHostListener, applyHostListeners, applyInitialFocus, applyKeywordsBinding, applyLinkBinding, applyMetaBinding, applyNextBinding, applyOgBinding, applyOpenGraphBindings, applyPrevBinding, applyResourceHintsBindings, applyRobotsBinding, applySocialMediaBindings, applyStructuredDataBinding, applyTwitterCardBindings, areScrollStatesEqual, bindProps, boolBreakpointTransform, booleanBreakpointAttribute, boundingClientRectToElementRect, breakpointTransformBase, buildElementSignal, buildSignalEffects, canUseSessionMemory, clamp, clone, cloneFormGroup, computedTillFalsy, computedTillTruthy, controlValueSignal, controlValueSignalWithPrevious, createAnchoredPositionCleanup, createArrayPropertyBinding, createAutoSessionMemoryKey, createBulkPropertyBinding, createCanAnimateSignal, createComponentId, createCssColorThemeName, createCssSurfaceName, createDependencyStash, createDestroy, createDocumentElementSignal, createElementDictionary, createElementDimensions, createEmptyElementSignal, createFlipAnimation, createFlipAnimationGroup, createHostProps, createIsRenderedSignal, createLogger, createOverlayRuntimeRef, createPropHandlers, createPropertyBinding, createProps, createProvider, createRootProvider, createRootThemeCss, createRxHostListener, createSessionMemory, createSetup, createStaticProvider, createStaticRootProvider, createSwatchCss, createTailwindColorThemes, createTailwindCssVar, createTailwindRgbVar, createThemeStyle, createUserConsentProvider, deferredSignal, deleteCookie, easeElastic, easeIn, easeInOut, easeLinear, easeOut, easeOutBack, easeOutBackStrong, elementCanScroll, equal, firstElementSignal, focusElement, forceReflow, formatRuntimeError, fromNextFrame, getCookie, getDomain, getElementScrollCoordinates, getFocusableElements, getFormGroupValue, getGroupMatchPoints, getGroupMatchScore, getHeadingElement, getKnockoutMatchScore, getMatchScoreSubLine, getObjectProperty, getScrollContainerTarget, getScrollItemTarget, getScrollSnapTarget, hasCookie, inferMimeType, injectAngularRootElement, injectBoundaryElement, injectBreakpointInput, injectBreakpointIsMatched, injectBreakpointObserver, injectCanHover, injectColorThemes, injectColorThemesPrefix, injectCurrentBreakpoint, injectDeviceInputType, injectDisplayOrientation, injectErrorTheme, injectFocusVisibleTracker, injectFragment, injectHasPrecisionInput, injectHasTouchInput, injectHostElement, injectIs2Xl, injectIsLandscape, injectIsLg, injectIsMd, injectIsPortrait, injectIsRouterInitialized, injectIsSm, injectIsXl, injectIsXs, injectLinkStore, injectLinkStoreConfig, injectLocale, injectMediaQueryIsMatched, injectMetaConfig, injectMetaStore, injectObserveBreakpoint, injectObserveMediaQuery, injectOverlayRuntime, injectPathParam, injectPathParamChanges, injectPathParams, injectQueryParam, injectQueryParamChanges, injectQueryParams, injectRenderer, injectRoute, injectRouteData, injectRouteDataItem, injectRouteTitle, injectRouterEvent, injectRouterState, injectScrollbarDimensions, injectStructuredDataConfig, injectStructuredDataStore, injectStyleManager, injectSuccessTheme, injectSurfaceContextTracker, injectSurfaceThemes, injectSurfaceThemesPrefix, injectTemplateRef, injectTitleConfig, injectTitleStore, injectUrl, injectViewportConfig, injectViewportDimensions, injectViewportSize, injectWarningTheme, isArray, isElementSignal, isElementVisible, isFocusable, isGroupMatch, isHTMLElement, isKnockoutMatch, isObject, maybeSignalValue, memoizeSignal, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, numberBreakpointAttribute, numberBreakpointTransform, previousSignalValue, provideBoundaryElement, provideBreakpointInstance, provideBreakpointObserver, provideColorThemes, provideColorThemesWithTailwind4, provideFocusVisibleTracker, provideLinkStore, provideLinkStoreConfig, provideLocale, provideMetaConfig, provideMetaStore, provideOverlayRuntime, provideRenderer, provideStructuredDataConfig, provideStructuredDataStore, provideStyleManager, provideSurfaceContextTracker, provideSurfaceThemesWithTailwind4, provideTitleConfig, provideTitleStore, provideViewportConfig, resolveSurfaceByElevation, round, routerDisableScrollTop, scrollToElement, setBackdropStyles, setBaseElementStyles, setCookie, setInputSignal, setupFocusTrap, setupPositioning, setupScrollRestoration, signalAnimatedNumber, signalAttributes, signalClasses, signalElementChildren, signalElementDimensions, signalElementIntersection, signalElementLastScrollDirection, signalElementMutations, signalElementScrollState, signalHostAttributes, signalHostClasses, signalHostElementDimensions, signalHostElementIntersection, signalHostElementLastScrollDirection, signalHostElementMutations, signalHostElementScrollState, signalHostStyles, signalIsRendered, signalStyles, switchQueryListChanges, syncSignal, templateComputed, toArray, toArrayTrackByFn, toStringBinding, transformOrReturn, typedBreakpointTransform, unbindProps, useCursorDragScroll, writeScrollbarSizeToCssVariables, writeViewportSizeToCssVariables, ɵProvideColorThemes, ɵProvideColorThemesPrefix, ɵProvideSurfaceThemes, ɵProvideSurfaceThemesPrefix };
6073
6740
  //# sourceMappingURL=ethlete-core.mjs.map