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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
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, 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, Pipe, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { takeUntilDestroyed, toSignal, toObservable, outputFromObservable } from '@angular/core/rxjs-interop';
4
- import { Subject, BehaviorSubject, debounceTime, combineLatest, map, merge, fromEvent, filter, tap, switchMap, startWith, of, timer, takeUntil, pairwise, distinctUntilChanged, take, Observable } from 'rxjs';
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';
6
6
  import { SIGNAL, signalSetFn } from '@angular/core/primitives/signals';
7
7
  import { BreakpointObserver } from '@angular/cdk/layout';
8
8
  import { coerceElement } from '@angular/cdk/coercion';
9
- import { isPlatformBrowser, DOCUMENT as DOCUMENT$1 } from '@angular/common';
9
+ import { DOCUMENT as DOCUMENT$1, isPlatformBrowser } from '@angular/common';
10
10
  import { Router, NavigationEnd, NavigationSkipped } from '@angular/router';
11
11
  import { Overlay } from '@angular/cdk/overlay';
12
12
  import { ComponentPortal } from '@angular/cdk/portal';
@@ -996,6 +996,31 @@ const signalElementDimensions = (el) => {
996
996
  });
997
997
  };
998
998
  const signalHostElementDimensions = () => signalElementDimensions(inject(ElementRef));
999
+ const injectViewportSize = () => {
1000
+ const document = inject(DOCUMENT$1);
1001
+ const zone = inject(NgZone);
1002
+ const destroyRef = inject(DestroyRef);
1003
+ const getSize = () => {
1004
+ const vv = document.defaultView?.visualViewport;
1005
+ if (vv)
1006
+ return { width: vv.width, height: vv.height };
1007
+ const win = document.defaultView;
1008
+ return { width: win?.innerWidth ?? 0, height: win?.innerHeight ?? 0 };
1009
+ };
1010
+ const size = signal(getSize(), ...(ngDevMode ? [{ debugName: "size" }] : []));
1011
+ const onResize = () => zone.run(() => size.set(getSize()));
1012
+ const vv = document.defaultView?.visualViewport;
1013
+ if (vv) {
1014
+ vv.addEventListener('resize', onResize);
1015
+ destroyRef.onDestroy(() => vv.removeEventListener('resize', onResize));
1016
+ }
1017
+ else {
1018
+ const win = document.defaultView;
1019
+ win?.addEventListener('resize', onResize);
1020
+ destroyRef.onDestroy(() => win?.removeEventListener('resize', onResize));
1021
+ }
1022
+ return size;
1023
+ };
999
1024
 
1000
1025
  const previousSignalValue = (signal) => {
1001
1026
  const obs = toObservable(signal).pipe(pairwise(), map(([prev]) => prev));
@@ -2578,10 +2603,9 @@ const getObjectProperty = (obj, prop) => {
2578
2603
 
2579
2604
  const RUNTIME_ERROR_NO_DATA = '__ET_NO_DATA__';
2580
2605
  class RuntimeError extends Error {
2581
- constructor(code, message, devOnly = false, data = RUNTIME_ERROR_NO_DATA) {
2582
- super(formatRuntimeError(code, message, devOnly));
2606
+ constructor(code, message, data = RUNTIME_ERROR_NO_DATA) {
2607
+ super(formatRuntimeError(code, message));
2583
2608
  this.code = code;
2584
- this.devOnly = devOnly;
2585
2609
  this.data = data;
2586
2610
  if (data !== RUNTIME_ERROR_NO_DATA) {
2587
2611
  try {
@@ -2598,12 +2622,11 @@ class RuntimeError extends Error {
2598
2622
  }
2599
2623
  }
2600
2624
  }
2601
- function formatRuntimeError(code, message, devOnly) {
2625
+ function formatRuntimeError(code, message) {
2602
2626
  // prefix code with zeros if it's less than 100
2603
2627
  const codeWithZeros = code < 10 ? `00${code}` : code < 100 ? `0${code}` : code;
2604
2628
  const fullCode = `ET${codeWithZeros}`;
2605
- const devOnlyText = devOnly ? ' [DEV ONLY] ' : '';
2606
- return `${devOnlyText}${fullCode}${message ? ': ' + message : ''}`;
2629
+ return `${fullCode}${message ? ': ' + message : ''}`;
2607
2630
  }
2608
2631
 
2609
2632
  const [, injectAngularRootElement] = createRootProvider(() => {
@@ -2818,6 +2841,20 @@ const [provideRenderer, injectRenderer] = createRootProvider(() => {
2818
2841
  setAttribute(element, `data-${key}`, value);
2819
2842
  });
2820
2843
  };
2844
+ const moveBefore = (config) => {
2845
+ const { newParent, child, before = null } = config;
2846
+ if ('moveBefore' in newParent) {
2847
+ try {
2848
+ newParent.moveBefore(child, before);
2849
+ }
2850
+ catch {
2851
+ newParent.insertBefore(child, before);
2852
+ }
2853
+ }
2854
+ else {
2855
+ newParent.insertBefore(child, before);
2856
+ }
2857
+ };
2821
2858
  return {
2822
2859
  addClass,
2823
2860
  removeClass,
@@ -2849,10 +2886,63 @@ const [provideRenderer, injectRenderer] = createRootProvider(() => {
2849
2886
  setDataAttributes,
2850
2887
  setCssProperty,
2851
2888
  setCssProperties,
2889
+ moveBefore,
2852
2890
  renderer,
2853
2891
  };
2854
2892
  }, { name: 'Angular Renderer' });
2855
2893
 
2894
+ const [provideStyleManager, injectStyleManager] = createRootProvider(() => {
2895
+ const appRef = inject(ApplicationRef);
2896
+ const destroyRef = inject(DestroyRef);
2897
+ const document = inject(DOCUMENT);
2898
+ const envInjector = inject(EnvironmentInjector);
2899
+ const renderer = injectRenderer();
2900
+ let container = null;
2901
+ const mountedComponents = new Map();
2902
+ const getContainerParent = () => {
2903
+ return document.body ?? document.documentElement;
2904
+ };
2905
+ const ensureContainer = () => {
2906
+ if (container) {
2907
+ return container;
2908
+ }
2909
+ const nextContainer = renderer.createElement('div');
2910
+ renderer.addClass(nextContainer, 'et-style-manager');
2911
+ renderer.setAttribute(nextContainer, 'aria-hidden', 'true');
2912
+ renderer.setStyle(nextContainer, { display: 'none' });
2913
+ renderer.appendChild(getContainerParent(), nextContainer);
2914
+ container = nextContainer;
2915
+ return nextContainer;
2916
+ };
2917
+ const mount = (component) => {
2918
+ const existingComponent = mountedComponents.get(component);
2919
+ if (existingComponent) {
2920
+ return existingComponent;
2921
+ }
2922
+ const componentRef = createComponent(component, { environmentInjector: envInjector });
2923
+ appRef.attachView(componentRef.hostView);
2924
+ renderer.appendChild(ensureContainer(), componentRef.location.nativeElement);
2925
+ mountedComponents.set(component, componentRef);
2926
+ return componentRef;
2927
+ };
2928
+ destroyRef.onDestroy(() => {
2929
+ mountedComponents.forEach((componentRef) => {
2930
+ appRef.detachView(componentRef.hostView);
2931
+ componentRef.destroy();
2932
+ });
2933
+ 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;
2942
+ });
2943
+ return { mount };
2944
+ }, { name: 'StyleManager' });
2945
+
2856
2946
  const createUserConsentProvider = (options) => ({
2857
2947
  provide: options.for,
2858
2948
  useFactory: () => ({
@@ -3267,7 +3357,7 @@ class AnimatedOverlayDirective {
3267
3357
  this.unmountSubscription?.unsubscribe();
3268
3358
  this.unmountSubscription = null;
3269
3359
  this.applyComponentData(config.data);
3270
- this.applyThemeProvider(config.themeProvider);
3360
+ this.applyColorProvider(config.colorProvider);
3271
3361
  const lifecycle = this.componentRef.instance.animatedLifecycle();
3272
3362
  if (lifecycle) {
3273
3363
  this.state.set('mounting');
@@ -3290,7 +3380,7 @@ class AnimatedOverlayDirective {
3290
3380
  }
3291
3381
  return;
3292
3382
  }
3293
- const { component, providers, data, themeProvider } = config;
3383
+ const { component, providers, data, colorProvider } = config;
3294
3384
  this.state.set('mounting');
3295
3385
  this.beforeOpened$.next();
3296
3386
  const injector = Injector.create({
@@ -3301,7 +3391,7 @@ class AnimatedOverlayDirective {
3301
3391
  this.portal = new ComponentPortal(component, this.viewContainerRef, injector);
3302
3392
  this.componentRef = this.overlayRef.attach(this.portal);
3303
3393
  this.applyComponentData(data);
3304
- this.applyThemeProvider(themeProvider);
3394
+ this.applyColorProvider(colorProvider);
3305
3395
  this.updateOverlaySize();
3306
3396
  this.setupFloatingUI();
3307
3397
  return this.componentRef.instance;
@@ -3347,10 +3437,10 @@ class AnimatedOverlayDirective {
3347
3437
  Object.assign(this.componentRef.instance, data);
3348
3438
  this.componentRef.changeDetectorRef.markForCheck();
3349
3439
  }
3350
- applyThemeProvider(themeProvider) {
3351
- if (!this.componentRef || !themeProvider)
3440
+ applyColorProvider(colorProvider) {
3441
+ if (!this.componentRef || !colorProvider)
3352
3442
  return;
3353
- this.componentRef.instance.setThemeFromProvider(themeProvider);
3443
+ this.componentRef.instance.setColorFromProvider(colorProvider);
3354
3444
  }
3355
3445
  updateOverlaySize() {
3356
3446
  if (!this.overlayRef || !this.mirrorWidth())
@@ -3730,6 +3820,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
3730
3820
  }]
3731
3821
  }], ctorParameters: () => [] });
3732
3822
 
3823
+ const setupDragObservable = (startEvent, el, commitThreshold) => {
3824
+ const { pointerId, clientX: startX, clientY: startY } = startEvent;
3825
+ const end$ = merge(fromEvent(document, 'pointerup'), fromEvent(document, 'pointercancel')).pipe(filter((e) => e.pointerId === pointerId), take(1));
3826
+ let lastX = startX;
3827
+ let lastY = startY;
3828
+ let committed = false;
3829
+ const moves$ = fromEvent(document, 'pointermove').pipe(filter((e) => e.pointerId === pointerId), concatMap((e) => {
3830
+ if (!committed) {
3831
+ if (Math.abs(e.clientX - startX) < commitThreshold && Math.abs(e.clientY - startY) < commitThreshold) {
3832
+ return EMPTY;
3833
+ }
3834
+ committed = true;
3835
+ el.setPointerCapture(pointerId);
3836
+ lastX = e.clientX;
3837
+ lastY = e.clientY;
3838
+ return of({ type: 'start' });
3839
+ }
3840
+ const stepX = e.clientX - lastX;
3841
+ const stepY = e.clientY - lastY;
3842
+ lastX = e.clientX;
3843
+ lastY = e.clientY;
3844
+ return of({ type: 'move', data: { stepX, stepY, clientX: e.clientX, clientY: e.clientY } });
3845
+ }), takeUntil(end$));
3846
+ return concat(moves$, defer(() => of(committed ? { type: 'end' } : { type: 'tapped' })));
3847
+ };
3848
+ class DragHandleDirective {
3849
+ constructor() {
3850
+ this.el = inject(ElementRef);
3851
+ this.commitThreshold = input(8, ...(ngDevMode ? [{ debugName: "commitThreshold" }] : []));
3852
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
3853
+ this.gestureStart$ = new Subject();
3854
+ this.gesture$ = this.gestureStart$.pipe(exhaustMap((event) => setupDragObservable(event, this.el.nativeElement, this.commitThreshold())), takeUntilDestroyed(), share());
3855
+ this.dragTapped = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'tapped'), map(() => undefined)));
3856
+ this.dragStarted = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'start'), map(() => undefined)));
3857
+ this.dragMoved = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'move'), map((e) => e.data)));
3858
+ this.dragEnded = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'end'), map(() => undefined)));
3859
+ this.isDragging = toSignal(this.gesture$.pipe(map((e) => e.type === 'start' || e.type === 'move'), distinctUntilChanged()), { initialValue: false });
3860
+ applyHostListener('pointerdown', (e) => this.startGesture(e));
3861
+ }
3862
+ startGesture(event) {
3863
+ if (event.button !== 0 || this.disabled())
3864
+ return;
3865
+ event.stopPropagation();
3866
+ this.gestureStart$.next(event);
3867
+ }
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 }); }
3870
+ }
3871
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: DragHandleDirective, decorators: [{
3872
+ type: Directive,
3873
+ args: [{
3874
+ selector: '[etDragHandle]',
3875
+ }]
3876
+ }], 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
+
3733
3878
  class NormalizeGameResultTypePipe {
3734
3879
  constructor() {
3735
3880
  this.transform = normalizeGameResultType;
@@ -4543,6 +4688,76 @@ const templateComputed = (templateSignal) => computed(() => {
4543
4688
  };
4544
4689
  });
4545
4690
 
4691
+ const EDGE_CURSORS = {
4692
+ n: 'ns-resize',
4693
+ s: 'ns-resize',
4694
+ e: 'ew-resize',
4695
+ w: 'ew-resize',
4696
+ ne: 'nesw-resize',
4697
+ sw: 'nesw-resize',
4698
+ nw: 'nwse-resize',
4699
+ se: 'nwse-resize',
4700
+ };
4701
+ const setupResizeObservable = (startEvent, edge) => {
4702
+ const pointerId = startEvent.pointerId;
4703
+ const startX = startEvent.clientX;
4704
+ const startY = startEvent.clientY;
4705
+ const end$ = merge(fromEvent(document, 'pointerup'), fromEvent(document, 'pointercancel')).pipe(filter((e) => e.pointerId === pointerId), take(1));
4706
+ return concat(of({ type: 'start', edge }), fromEvent(document, 'pointermove').pipe(filter((e) => e.pointerId === pointerId), map((e) => ({ type: 'move', data: { edge, dx: e.clientX - startX, dy: e.clientY - startY } })), takeUntil(end$)), of({ type: 'end' }));
4707
+ };
4708
+ class ResizeHandlesComponent {
4709
+ 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 });
4712
+ this.gestureStart$ = new Subject();
4713
+ this.gesture$ = this.gestureStart$.pipe(exhaustMap(({ event, edge }) => setupResizeObservable(event, edge)), takeUntilDestroyed(), share());
4714
+ this.resizeStarted = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'start'), map((e) => e.edge)));
4715
+ this.resizeMoved = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'move'), map((e) => e.data)));
4716
+ this.resizeEnded = outputFromObservable(this.gesture$.pipe(filter((e) => e.type === 'end'), map(() => undefined)));
4717
+ this.isResizing = toSignal(this.gesture$.pipe(map((e) => e.type !== 'end'), distinctUntilChanged()), { initialValue: false });
4718
+ this.activeEdge = toSignal(this.gesture$.pipe(map((e) => {
4719
+ if (e.type === 'end')
4720
+ return null;
4721
+ if (e.type === 'start')
4722
+ return e.edge;
4723
+ return e.data.edge;
4724
+ }), distinctUntilChanged()), { initialValue: null });
4725
+ this.edgeCursors = EDGE_CURSORS;
4726
+ }
4727
+ startResizeGesture(event, edge) {
4728
+ if (event.button !== 0 || this.disabled())
4729
+ return;
4730
+ event.stopPropagation();
4731
+ this.gestureStart$.next({ event, edge });
4732
+ }
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: `
4735
+ @for (edge of edges(); track edge) {
4736
+ <div
4737
+ [style.cursor]="edgeCursors[edge]"
4738
+ (pointerdown)="startResizeGesture($event, edge)"
4739
+ class="et-resize-handle et-resize-handle--{{ edge }}"
4740
+ ></div>
4741
+ }
4742
+ `, 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
+ }
4744
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ResizeHandlesComponent, decorators: [{
4745
+ type: Component,
4746
+ args: [{ selector: 'et-resize-handles', template: `
4747
+ @for (edge of edges(); track edge) {
4748
+ <div
4749
+ [style.cursor]="edgeCursors[edge]"
4750
+ (pointerdown)="startResizeGesture($event, edge)"
4751
+ class="et-resize-handle et-resize-handle--{{ edge }}"
4752
+ ></div>
4753
+ }
4754
+ `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
4755
+ class: 'et-resize-handles',
4756
+ '[attr.inert]': 'disabled() ? "" : null',
4757
+ '[attr.data-active-edge]': 'activeEdge()',
4758
+ }, 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"] }]
4759
+ }], propDecorators: { edges: [{ type: i0.Input, args: [{ isSignal: true, alias: "edges", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], resizeStarted: [{ type: i0.Output, args: ["resizeStarted"] }], resizeMoved: [{ type: i0.Output, args: ["resizeMoved"] }], resizeEnded: [{ type: i0.Output, args: ["resizeEnded"] }] } });
4760
+
4546
4761
  const applyHeadBinding = (binding, applyFn, removeFn, isValid) => {
4547
4762
  const destroyRef = inject(DestroyRef);
4548
4763
  const signalBinding = isSignal(binding) ? binding : signal(binding);
@@ -5424,22 +5639,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
5424
5639
  }]
5425
5640
  }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }] } });
5426
5641
 
5427
- const createCssThemeName = (name) => name.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);
5642
+ const createCssColorThemeName = (name) => name.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);
5428
5643
  const [ɵProvideColorThemes, injectColorThemes] = createStaticProvider(undefined, {
5429
5644
  name: 'Color Themes',
5430
5645
  });
5431
- const [ɵProvideThemesPrefix, injectThemesPrefix] = createStaticProvider('et', { name: 'Themes Prefix' });
5646
+ const [ɵProvideColorThemesPrefix, injectColorThemesPrefix] = createStaticProvider('et', {
5647
+ name: 'Themes Prefix',
5648
+ });
5432
5649
  const provideColorThemesWithTailwind4 = (themes, prefix = 'et') => [
5433
5650
  ɵProvideColorThemes(themes.map((theme) => theme.name)),
5434
- ɵProvideThemesPrefix(prefix),
5651
+ ɵProvideColorThemesPrefix(prefix),
5435
5652
  ];
5436
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 }); }
5657
+ }
5658
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColoredStylesComponent, decorators: [{
5659
+ 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"] }]
5661
+ }] });
5662
+
5663
+ class ColoredDirective {
5664
+ constructor() {
5665
+ this.styleManager = injectStyleManager();
5666
+ this.styleManager.mount(ColoredStylesComponent);
5667
+ }
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 }); }
5670
+ }
5671
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ColoredDirective, decorators: [{
5672
+ type: Directive,
5673
+ args: [{
5674
+ selector: '[etColored]',
5675
+ host: {
5676
+ class: 'et-colored',
5677
+ },
5678
+ }]
5679
+ }], ctorParameters: () => [] });
5680
+
5437
5681
  /**
5438
5682
  * @deprecated Migrate to Tailwind v4. Intent to remove in v6.
5439
5683
  */
5440
5684
  const createSwatchCss = (swatch, isAlt, data) => {
5441
5685
  const varSuffix = isAlt ? 'alt-' + swatch : swatch;
5442
5686
  const varOnSuffix = isAlt ? 'alt-' : '';
5687
+ const inkDefault = data.inkColor?.default || data.color.default;
5688
+ const inkHover = data.inkColor?.hover || inkDefault;
5689
+ const inkFocus = data.inkColor?.focus || data.inkColor?.hover || inkDefault;
5690
+ const inkActive = data.inkColor?.active || inkDefault;
5691
+ const inkDisabled = data.inkColor?.disabled || inkDefault;
5443
5692
  return `
5444
5693
  --et-color-${varSuffix}: ${data.color.default};
5445
5694
  --et-color-${varSuffix}-hover: ${data.color.hover};
@@ -5452,6 +5701,12 @@ const createSwatchCss = (swatch, isAlt, data) => {
5452
5701
  --et-color-${varOnSuffix}on-${swatch}-focus: ${data.onColor.focus || data.onColor.hover || data.onColor.default};
5453
5702
  --et-color-${varOnSuffix}on-${swatch}-active: ${data.onColor.active || data.onColor.default};
5454
5703
  --et-color-${varOnSuffix}on-${swatch}-disabled: ${data.onColor.disabled || data.onColor.default};
5704
+
5705
+ --et-color-${varSuffix}-ink: ${inkDefault};
5706
+ --et-color-${varSuffix}-ink-hover: ${inkHover};
5707
+ --et-color-${varSuffix}-ink-focus: ${inkFocus};
5708
+ --et-color-${varSuffix}-ink-active: ${inkActive};
5709
+ --et-color-${varSuffix}-ink-disabled: ${inkDisabled};
5455
5710
  `;
5456
5711
  };
5457
5712
  /**
@@ -5459,6 +5714,11 @@ const createSwatchCss = (swatch, isAlt, data) => {
5459
5714
  */
5460
5715
  const createRootThemeCss = (themes) => {
5461
5716
  const createVars = (name, swatch) => {
5717
+ const inkDefault = swatch.inkColor?.default || swatch.color.default;
5718
+ const inkHover = swatch.inkColor?.hover || inkDefault;
5719
+ const inkFocus = swatch.inkColor?.focus || swatch.inkColor?.hover || inkDefault;
5720
+ const inkActive = swatch.inkColor?.active || inkDefault;
5721
+ const inkDisabled = swatch.inkColor?.disabled || inkDefault;
5462
5722
  return `
5463
5723
  --et-color-${name}: ${swatch.color.default};
5464
5724
  --et-color-${name}-hover: ${swatch.color.hover};
@@ -5471,11 +5731,17 @@ const createRootThemeCss = (themes) => {
5471
5731
  --et-color-on-${name}-focus: ${swatch.onColor.focus || swatch.onColor.hover || swatch.onColor.default};
5472
5732
  --et-color-on-${name}-active: ${swatch.onColor.active || swatch.onColor.default};
5473
5733
  --et-color-on-${name}-disabled: ${swatch.onColor.disabled || swatch.onColor.default};
5734
+
5735
+ --et-color-${name}-ink: ${inkDefault};
5736
+ --et-color-${name}-ink-hover: ${inkHover};
5737
+ --et-color-${name}-ink-focus: ${inkFocus};
5738
+ --et-color-${name}-ink-active: ${inkActive};
5739
+ --et-color-${name}-ink-disabled: ${inkDisabled};
5474
5740
  `;
5475
5741
  };
5476
5742
  const vars = [];
5477
5743
  for (const theme of themes) {
5478
- const name = createCssThemeName(theme.name);
5744
+ const name = createCssColorThemeName(theme.name);
5479
5745
  if (theme.secondary || theme.tertiary) {
5480
5746
  vars.push(createVars(`${name}-primary`, theme.primary));
5481
5747
  if (theme.secondary) {
@@ -5503,7 +5769,7 @@ const createRootThemeCss = (themes) => {
5503
5769
  * @deprecated Migrate to Tailwind v4. Intent to remove in v6.
5504
5770
  */
5505
5771
  const createThemeStyle = (theme, isAlt) => {
5506
- const cssThemeName = createCssThemeName(theme.name);
5772
+ const cssThemeName = createCssColorThemeName(theme.name);
5507
5773
  const stringSuffix = isAlt ? '-alt' : '';
5508
5774
  const selectors = [
5509
5775
  ...((theme.isDefault && !isAlt) || (theme.isDefaultAlt && isAlt)
@@ -5555,6 +5821,23 @@ const createTailwindColorThemes = (themes, prefix = 'et') => {
5555
5821
  active: createTailwindRgbVar(theme.primary.onColor.active) || createTailwindRgbVar(theme.primary.onColor.default),
5556
5822
  disabled: createTailwindRgbVar(theme.primary.onColor.disabled) || createTailwindRgbVar(theme.primary.onColor.default),
5557
5823
  };
5824
+ const keyInk = `${prefix}-${theme.name}-ink`;
5825
+ twThemes[keyInk] = {
5826
+ DEFAULT: createTailwindRgbVar(theme.primary.inkColor?.default) || createTailwindRgbVar(theme.primary.color.default),
5827
+ hover: createTailwindRgbVar(theme.primary.inkColor?.hover) ||
5828
+ createTailwindRgbVar(theme.primary.inkColor?.default) ||
5829
+ createTailwindRgbVar(theme.primary.color.default),
5830
+ focus: createTailwindRgbVar(theme.primary.inkColor?.focus) ||
5831
+ createTailwindRgbVar(theme.primary.inkColor?.hover) ||
5832
+ createTailwindRgbVar(theme.primary.inkColor?.default) ||
5833
+ createTailwindRgbVar(theme.primary.color.default),
5834
+ active: createTailwindRgbVar(theme.primary.inkColor?.active) ||
5835
+ createTailwindRgbVar(theme.primary.inkColor?.default) ||
5836
+ createTailwindRgbVar(theme.primary.color.default),
5837
+ disabled: createTailwindRgbVar(theme.primary.inkColor?.disabled) ||
5838
+ createTailwindRgbVar(theme.primary.inkColor?.default) ||
5839
+ createTailwindRgbVar(theme.primary.color.default),
5840
+ };
5558
5841
  }
5559
5842
  return twThemes;
5560
5843
  };
@@ -5580,44 +5863,44 @@ const provideColorThemes = (themes) => {
5580
5863
  createThemeStyle(theme, true);
5581
5864
  }
5582
5865
  createRootThemeCss(themes);
5583
- return [ɵProvideColorThemes(themes.map((theme) => theme.name)), ɵProvideThemesPrefix('et')];
5866
+ return [ɵProvideColorThemes(themes.map((theme) => theme.name)), ɵProvideColorThemesPrefix('et')];
5584
5867
  };
5585
5868
 
5586
- const THEME_PROVIDER = new InjectionToken('ThemeProvider');
5587
- class ProvideThemeDirective {
5869
+ const COLOR_PROVIDER = new InjectionToken('ColorProvider');
5870
+ class ProvideColorDirective {
5588
5871
  constructor() {
5589
5872
  this.themes = injectColorThemes({ optional: true });
5590
- this.prefix = injectThemesPrefix({ optional: true });
5873
+ this.prefix = injectColorThemesPrefix({ optional: true });
5591
5874
  this.injector = inject(Injector);
5592
5875
  this.currentProviderSync = null;
5593
- this.mainTheme = input(undefined, { ...(ngDevMode ? { debugName: "mainTheme" } : {}), alias: 'etProvideTheme' });
5594
- this.altTheme = input(undefined, { ...(ngDevMode ? { debugName: "altTheme" } : {}), alias: 'etProvideAltTheme' });
5595
- this.mainThemeName = computed(() => {
5596
- const value = this.mainTheme();
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();
5597
5880
  if (!this.themes || !value)
5598
5881
  return;
5599
5882
  if (isDevMode() && !this.themes?.some((theme) => theme === value) && value !== null) {
5600
5883
  console.error(`Theme ${value} does not exist. Please make sure to add it to provideColorThemes()`);
5601
5884
  }
5602
- return createCssThemeName(value);
5603
- }, ...(ngDevMode ? [{ debugName: "mainThemeName" }] : []));
5604
- this.altThemeName = computed(() => {
5605
- const value = this.altTheme();
5885
+ return createCssColorThemeName(value);
5886
+ }, ...(ngDevMode ? [{ debugName: "mainColorName" }] : []));
5887
+ this.altColorName = computed(() => {
5888
+ const value = this.altColor();
5606
5889
  if (!this.themes || !value)
5607
5890
  return;
5608
5891
  if (isDevMode() && !this.themes?.some((theme) => theme === value) && value !== null) {
5609
5892
  console.warn(`Theme ${value} does not exist. Please make sure to add it to provideColorThemes()`);
5610
5893
  }
5611
- return createCssThemeName(value);
5612
- }, ...(ngDevMode ? [{ debugName: "altThemeName" }] : []));
5894
+ return createCssColorThemeName(value);
5895
+ }, ...(ngDevMode ? [{ debugName: "altColorName" }] : []));
5613
5896
  this.themeClass = computed(() => {
5614
5897
  const themes = [];
5615
5898
  const prefix = this.prefix || 'et';
5616
- if (this.mainThemeName()) {
5617
- themes.push(`${prefix}-theme--${this.mainThemeName()}`);
5899
+ if (this.mainColorName()) {
5900
+ themes.push(`${prefix}-color--${this.mainColorName()}`);
5618
5901
  }
5619
- if (this.altThemeName()) {
5620
- themes.push(`${prefix}-theme-alt--${this.altThemeName()}`);
5902
+ if (this.altColorName()) {
5903
+ themes.push(`${prefix}-color-alt--${this.altColorName()}`);
5621
5904
  }
5622
5905
  return themes.join(' ');
5623
5906
  }, ...(ngDevMode ? [{ debugName: "themeClass" }] : []));
@@ -5626,11 +5909,11 @@ class ProvideThemeDirective {
5626
5909
  this.currentProviderSync?.destroy();
5627
5910
  runInInjectionContext(this.injector, () => {
5628
5911
  this.currentProviderSync = effect(() => {
5629
- const provideMainTheme = provider.mainTheme();
5630
- const provideAltTheme = provider.altTheme();
5912
+ const provideMainColor = provider.mainColor();
5913
+ const provideAltColor = provider.altColor();
5631
5914
  untracked(() => {
5632
- setInputSignal(this.mainTheme, provideMainTheme);
5633
- setInputSignal(this.altTheme, provideAltTheme);
5915
+ setInputSignal(this.mainColor, provideMainColor);
5916
+ setInputSignal(this.altColor, provideAltColor);
5634
5917
  });
5635
5918
  }, ...(ngDevMode ? [{ debugName: "currentProviderSync" }] : []));
5636
5919
  });
@@ -5639,23 +5922,152 @@ class ProvideThemeDirective {
5639
5922
  this.currentProviderSync?.destroy();
5640
5923
  this.currentProviderSync = null;
5641
5924
  }
5642
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ProvideThemeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5643
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.1", type: ProvideThemeDirective, isStandalone: true, selector: "[etProvideTheme]", inputs: { mainTheme: { classPropertyName: "mainTheme", publicName: "etProvideTheme", isSignal: true, isRequired: false, transformFunction: null }, altTheme: { classPropertyName: "altTheme", publicName: "etProvideAltTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "themeClass()" } }, providers: [{ provide: THEME_PROVIDER, useExisting: ProvideThemeDirective }], ngImport: i0 }); }
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 }); }
5644
5927
  }
5645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ProvideThemeDirective, decorators: [{
5928
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ProvideColorDirective, decorators: [{
5646
5929
  type: Directive,
5647
5930
  args: [{
5648
- selector: '[etProvideTheme]',
5649
- providers: [{ provide: THEME_PROVIDER, useExisting: ProvideThemeDirective }],
5931
+ selector: '[etProvideColor]',
5932
+ providers: [{ provide: COLOR_PROVIDER, useExisting: ProvideColorDirective }],
5650
5933
  host: {
5651
5934
  '[class]': 'themeClass()',
5652
5935
  },
5653
5936
  }]
5654
- }], propDecorators: { mainTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "etProvideTheme", required: false }] }], altTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "etProvideAltTheme", required: false }] }] } });
5937
+ }], propDecorators: { mainColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "etProvideColor", required: false }] }], altColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "etProvideAltColor", required: false }] }] } });
5938
+
5939
+ const SURFACE_TYPE = {
5940
+ LIGHT: 'light',
5941
+ DARK: 'dark',
5942
+ };
5943
+ const createCssSurfaceName = (name) => name.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);
5944
+ const resolveSurfaceByElevation = (themes, type, elevation) => themes.find((t) => t.type === type && t.elevation === elevation) ?? null;
5945
+ const [ɵProvideSurfaceThemes, injectSurfaceThemes] = createStaticProvider(undefined, {
5946
+ name: 'Surface Themes',
5947
+ });
5948
+ const [ɵProvideSurfaceThemesPrefix, injectSurfaceThemesPrefix] = createStaticProvider('et', {
5949
+ name: 'Surface Themes Prefix',
5950
+ });
5951
+ const provideSurfaceThemesWithTailwind4 = (themes, prefix = 'et') => [
5952
+ ɵProvideSurfaceThemes(themes),
5953
+ ɵProvideSurfaceThemesPrefix(prefix),
5954
+ ];
5955
+
5956
+ const SURFACE_PROVIDER = new InjectionToken('SurfaceProvider');
5957
+ class ProvideSurfaceDirective {
5958
+ constructor() {
5959
+ this.themes = injectSurfaceThemes({ optional: true });
5960
+ this.prefix = injectSurfaceThemesPrefix({ optional: true });
5961
+ this.injector = inject(Injector);
5962
+ this.currentProviderSync = null;
5963
+ this.surface = input(undefined, { ...(ngDevMode ? { debugName: "surface" } : {}), alias: 'etProvideSurface' });
5964
+ this.resolvedTheme = computed(() => {
5965
+ const value = this.surface();
5966
+ if (!this.themes || !value)
5967
+ return null;
5968
+ const theme = this.themes.find((t) => t.name === value) ?? null;
5969
+ if (isDevMode() && !theme && value !== null) {
5970
+ console.error(`Surface theme ${value} does not exist. Please make sure to add it to provideSurfaceThemesWithTailwind4()`);
5971
+ }
5972
+ 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" }] : []));
5977
+ this.surfaceName = computed(() => {
5978
+ const value = this.surface();
5979
+ if (!this.themes || !value)
5980
+ return;
5981
+ return createCssSurfaceName(value);
5982
+ }, ...(ngDevMode ? [{ debugName: "surfaceName" }] : []));
5983
+ this.surfaceClass = computed(() => {
5984
+ const prefix = this.prefix || 'et';
5985
+ if (this.surfaceName()) {
5986
+ return `${prefix}-surface--${this.surfaceName()}`;
5987
+ }
5988
+ return '';
5989
+ }, ...(ngDevMode ? [{ debugName: "surfaceClass" }] : []));
5990
+ }
5991
+ syncWithProvider(provider) {
5992
+ this.currentProviderSync?.destroy();
5993
+ runInInjectionContext(this.injector, () => {
5994
+ this.currentProviderSync = effect(() => {
5995
+ const provideSurface = provider.surface();
5996
+ untracked(() => {
5997
+ setInputSignal(this.surface, provideSurface);
5998
+ });
5999
+ }, ...(ngDevMode ? [{ debugName: "currentProviderSync" }] : []));
6000
+ });
6001
+ }
6002
+ stopSyncWithProvider() {
6003
+ this.currentProviderSync?.destroy();
6004
+ this.currentProviderSync = null;
6005
+ }
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 }); }
6008
+ }
6009
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ProvideSurfaceDirective, decorators: [{
6010
+ type: Directive,
6011
+ args: [{
6012
+ selector: '[etProvideSurface]',
6013
+ providers: [{ provide: SURFACE_PROVIDER, useExisting: ProvideSurfaceDirective }],
6014
+ host: {
6015
+ '[class]': 'surfaceClass()',
6016
+ },
6017
+ }]
6018
+ }], propDecorators: { surface: [{ type: i0.Input, args: [{ isSignal: true, alias: "etProvideSurface", required: false }] }] } });
6019
+
6020
+ let uniqueId = 0;
6021
+ const [provideSurfaceContextTracker, injectSurfaceContextTracker] = createRootProvider(() => {
6022
+ const entries = signal([], ...(ngDevMode ? [{ debugName: "entries" }] : []));
6023
+ const topEntry = computed(() => {
6024
+ const stack = entries();
6025
+ 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) => {
6031
+ const id = `surface-ctx-${uniqueId++}`;
6032
+ const entry = { id, type, elevation, neutralColor: neutralColor ?? null };
6033
+ entries.update((e) => [...e, entry]);
6034
+ return () => {
6035
+ entries.update((e) => e.filter((item) => item.id !== id));
6036
+ };
6037
+ };
6038
+ return { topType, topElevation, topNeutralColor, register };
6039
+ }, { name: 'SurfaceContextTracker' });
6040
+
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 }); }
6044
+ }
6045
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SurfacedStylesComponent, decorators: [{
6046
+ 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"] }]
6048
+ }] });
6049
+
6050
+ class SurfacedDirective {
6051
+ constructor() {
6052
+ this.styleManager = injectStyleManager();
6053
+ this.styleManager.mount(SurfacedStylesComponent);
6054
+ }
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 }); }
6057
+ }
6058
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SurfacedDirective, decorators: [{
6059
+ type: Directive,
6060
+ args: [{
6061
+ selector: '[etSurfaced]',
6062
+ host: {
6063
+ class: 'et-surfaced',
6064
+ },
6065
+ }]
6066
+ }], ctorParameters: () => [] });
5655
6067
 
5656
6068
  /**
5657
6069
  * Generated bundle index. Do not edit.
5658
6070
  */
5659
6071
 
5660
- 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, ClickOutsideDirective, DEFAULT_MULTI_INSTANCE_RELS, DEFAULT_MULTI_INSTANCE_TAGS, DEFAULT_VIEWPORT_CONFIG, DISABLE_LOGGER_PARAM, 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, ProvideThemeDirective, RUNTIME_ERROR_NO_DATA, RepeatDirective, RuntimeError, SEO_DIRECTIVE_TOKEN, ScrollObserverDirective, ScrollObserverEndDirective, ScrollObserverStartDirective, SeoDirective, StructuredDataComponent, THEME_PROVIDER, 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, createCssThemeName, 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, 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, injectTemplateRef, injectThemesPrefix, injectTitleConfig, injectTitleStore, injectUrl, injectViewportConfig, injectViewportDimensions, 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, provideTitleConfig, provideTitleStore, provideViewportConfig, 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, ɵProvideThemesPrefix };
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 };
5661
6073
  //# sourceMappingURL=ethlete-core.mjs.map