@ethlete/core 4.32.1 → 4.33.0

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.
@@ -0,0 +1,2072 @@
1
+ import { SafeHtml } from "@angular/platform-browser";
2
+ import { JsonLD, MatchListView, MatchRankingView, ParticipantViewUnion, StageType } from "@ethlete/types";
3
+ import * as i0 from "@angular/core";
4
+ import { AfterContentInit, AfterViewInit, ComponentRef, DestroyRef, EffectRef, ElementRef, EventEmitter, InjectOptions, InjectionToken, Injector, OnDestroy, OnInit, PipeTransform, Provider, QueryList, Signal, StaticProvider, TemplateRef, TrackByFunction, Type, WritableSignal } from "@angular/core";
5
+ import { Observable, Subject } from "rxjs";
6
+ import * as i1 from "@angular/common";
7
+ import { OverlayRef, ScrollStrategy } from "@angular/cdk/overlay";
8
+ import { ComponentPortal, ComponentType } from "@angular/cdk/portal";
9
+ import { OffsetOptions, Padding, Placement } from "@floating-ui/dom";
10
+ import { Data, Event, Params } from "@angular/router";
11
+ import { AbstractControl, FormControl, FormGroup, ValidationErrors, ValidatorFn } from "@angular/forms";
12
+ export declare class StructuredDataComponent {
13
+ private readonly _sanitizer;
14
+ set data(currentValue: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined);
15
+ jsonLD?: SafeHtml;
16
+ getSafeHTML(value: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined): SafeHtml;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<StructuredDataComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<StructuredDataComponent, "et-structured-data", never, {
19
+ "data": {
20
+ "alias": "data";
21
+ "required": false;
22
+ };
23
+ }, {}, never, never, true, never>;
24
+ }
25
+ export type NgClassType = string | string[] | Set<string> | {
26
+ [klass: string]: any;
27
+ } | null | undefined;
28
+ export type HostDirective = Type<unknown> | {
29
+ directive: Type<unknown>;
30
+ inputs?: string[];
31
+ outputs?: string[];
32
+ };
33
+ export declare class TypedQueryList<T> extends QueryList<T> {
34
+ get changes(): Observable<TypedQueryList<T>>;
35
+ }
36
+ export interface Translatable {
37
+ i18n: string;
38
+ text: string;
39
+ }
40
+ export type Primitive = string | number | boolean | null | undefined | symbol | bigint;
41
+ export type Reference = Record<string, unknown> | Array<unknown>;
42
+ export type Vec2 = [number, number];
43
+ export interface ViewportConfig {
44
+ breakpoints: {
45
+ xs: Vec2;
46
+ sm: Vec2;
47
+ md: Vec2;
48
+ lg: Vec2;
49
+ xl: Vec2;
50
+ '2xl': Vec2;
51
+ };
52
+ }
53
+ export type Breakpoint = keyof ViewportConfig['breakpoints'];
54
+ export declare const VIEWPORT_CONFIG: InjectionToken<ViewportConfig>;
55
+ /**
56
+ * Default viewport config based on Tailwind CSS.
57
+ * @see https://tailwindcss.com/docs/screens
58
+ */
59
+ export declare const DEFAULT_VIEWPORT_CONFIG: ViewportConfig;
60
+ export interface MemoResolver {
61
+ (...args: any[]): any;
62
+ }
63
+ export interface MapLike<K = unknown, V = unknown> {
64
+ set(key: K, v: V): MapLike<K, V>;
65
+ get(key: K): V;
66
+ has(key: K): boolean;
67
+ }
68
+ export interface MemoConfig {
69
+ resolver?: MemoResolver;
70
+ cache?: MapLike;
71
+ }
72
+ export declare const Memo: (config?: MemoConfig) => (_: unknown, __: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
73
+ export declare const ANIMATABLE_TOKEN: InjectionToken<AnimatableDirective>;
74
+ export declare class AnimatableDirective implements OnInit {
75
+ private _didEmitStart;
76
+ private readonly _parent;
77
+ private readonly _destroy$;
78
+ private readonly _elementRef;
79
+ private readonly _animationStart$;
80
+ private readonly _animationEnd$;
81
+ private readonly _animationCancelled$;
82
+ set animatedElement(value: string | HTMLElement | null | undefined);
83
+ private _animatedElement$;
84
+ readonly animationStart$: Observable<void>;
85
+ readonly animationEnd$: Observable<void>;
86
+ readonly animationCancelled$: Observable<void>;
87
+ private readonly _hostActiveAnimationCount$;
88
+ private readonly _totalActiveAnimationCount$;
89
+ readonly isAnimating$: Observable<boolean>;
90
+ ngOnInit(): void;
91
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnimatableDirective, never>;
92
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AnimatableDirective, "[etAnimatable]", ["etAnimatable"], {
93
+ "animatedElement": {
94
+ "alias": "etAnimatable";
95
+ "required": false;
96
+ };
97
+ }, {}, never, never, true, never>;
98
+ }
99
+ export declare const ANIMATED_IF_TOKEN: InjectionToken<AnimatedIfDirective>;
100
+ export declare class AnimatedIfDirective {
101
+ private readonly _destroy$;
102
+ private readonly _ngIf;
103
+ private readonly _animatedLifecycle;
104
+ set shouldRender(value: unknown);
105
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnimatedIfDirective, never>;
106
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AnimatedIfDirective, "[etAnimatedIf]", never, {
107
+ "shouldRender": {
108
+ "alias": "etAnimatedIf";
109
+ "required": false;
110
+ };
111
+ }, {}, never, never, true, [{
112
+ directive: typeof i1.NgIf;
113
+ inputs: {};
114
+ outputs: {};
115
+ }]>;
116
+ }
117
+ export declare const ANIMATED_LIFECYCLE_TOKEN: InjectionToken<AnimatedLifecycleDirective>;
118
+ export type AnimatedLifecycleState = 'entering' | 'entered' | 'leaving' | 'left' | 'init';
119
+ export declare class AnimatedLifecycleDirective implements AfterViewInit {
120
+ private readonly _destroy$;
121
+ private readonly _elementRef;
122
+ private readonly _animatable;
123
+ private readonly _classList;
124
+ private _isConstructed;
125
+ private _state$;
126
+ readonly state$: import("rxjs").Observable<AnimatedLifecycleState>;
127
+ get state(): AnimatedLifecycleState;
128
+ stateSignal: import("@angular/core").Signal<AnimatedLifecycleState>;
129
+ stateChange: import("@angular/core").OutputRef<AnimatedLifecycleState>;
130
+ skipNextEnter: import("@angular/core").ModelSignal<boolean>;
131
+ constructor();
132
+ ngAfterViewInit(): void;
133
+ enter(): void;
134
+ leave(): void;
135
+ _forceState(state: AnimatedLifecycleState): void;
136
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnimatedLifecycleDirective, never>;
137
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AnimatedLifecycleDirective, "[etAnimatedLifecycle]", ["etAnimatedLifecycle"], {
138
+ "skipNextEnter": {
139
+ "alias": "skipNextEnter";
140
+ "required": false;
141
+ "isSignal": true;
142
+ };
143
+ }, {
144
+ "stateChange": "stateChange";
145
+ "skipNextEnter": "skipNextEnterChange";
146
+ }, never, never, true, [{
147
+ directive: typeof AnimatableDirective;
148
+ inputs: {};
149
+ outputs: {};
150
+ }]>;
151
+ }
152
+ export interface AnimatedOverlayComponentBase {
153
+ _elementRef?: ElementRef<HTMLElement>;
154
+ _animatedLifecycle?: AnimatedLifecycleDirective;
155
+ _markForCheck?: () => void;
156
+ _setThemeFromProvider?: (provider: any) => void;
157
+ }
158
+ export declare class AnimatedOverlayDirective<T extends AnimatedOverlayComponentBase> {
159
+ private readonly _destroy$;
160
+ private readonly _overlayService;
161
+ private readonly _injector;
162
+ private readonly _viewContainerRef;
163
+ private readonly _zone;
164
+ private readonly _elementRef;
165
+ private readonly _resizeObserverService;
166
+ private readonly _rootBoundary;
167
+ private _portal;
168
+ private _overlayRef;
169
+ private _componentRef;
170
+ private _floatingElCleanupFn;
171
+ private _beforeOpened;
172
+ private _afterOpened;
173
+ private _beforeClosed;
174
+ private _afterClosed;
175
+ private readonly _isMounted$;
176
+ private readonly _isMounting$;
177
+ private readonly _isUnmounting$;
178
+ private readonly _isHidden$;
179
+ /**
180
+ * The placement of the animated overlay.
181
+ * @default undefined
182
+ */
183
+ placement?: Placement;
184
+ /**
185
+ * The allowed auto placements of the animated overlay.
186
+ * @see https://floating-ui.com/docs/flip#fallbackplacements
187
+ */
188
+ fallbackPlacements?: Placement[];
189
+ /**
190
+ * The offset of the animated overlay.
191
+ * @see https://floating-ui.com/docs/offset
192
+ */
193
+ offset: OffsetOptions | null;
194
+ /**
195
+ * The arrow padding.
196
+ * @see https://floating-ui.com/docs/arrow#padding
197
+ * @default 4
198
+ */
199
+ arrowPadding: Padding | null;
200
+ /**
201
+ * The viewport padding.
202
+ * @default 8
203
+ */
204
+ viewportPadding: Padding | null;
205
+ /**
206
+ * Whether the animated overlay should auto resize to fit the available space.
207
+ * Useful for things like selects where the list of options might be longer than the available space.
208
+ * @default false
209
+ */
210
+ autoResize: boolean;
211
+ /**
212
+ * Whether the animated overlay should shift when it is near the viewport boundary.
213
+ */
214
+ shift: boolean;
215
+ /**
216
+ * Whether the animated overlay should auto hide when the reference element is hidden.
217
+ * @default false
218
+ */
219
+ autoHide: boolean;
220
+ /**
221
+ * Whether the animated overlay should auto close if the reference element is hidden.
222
+ * @default false
223
+ */
224
+ autoCloseIfReferenceHidden: boolean;
225
+ /**
226
+ * The reference element for the animated overlay.
227
+ * @default this._elementRef.nativeElement
228
+ */
229
+ referenceElement: HTMLElement;
230
+ get isMounted(): boolean;
231
+ get isMounted$(): import("rxjs").Observable<boolean>;
232
+ get isMounting(): boolean;
233
+ get isMounting$(): import("rxjs").Observable<boolean>;
234
+ get isUnmounting(): boolean;
235
+ get isHidden$(): import("rxjs").Observable<boolean>;
236
+ get isHidden(): boolean;
237
+ get canMount(): boolean;
238
+ get canUnmount(): boolean;
239
+ get portal(): ComponentPortal<T> | null;
240
+ get overlayRef(): OverlayRef | null;
241
+ get componentRef(): ComponentRef<T> | null;
242
+ mount(config: {
243
+ component: ComponentType<T>;
244
+ providers?: StaticProvider[];
245
+ data?: Partial<T>;
246
+ mirrorWidth?: boolean;
247
+ themeProvider?: any | null;
248
+ }): T | undefined;
249
+ unmount(): void;
250
+ beforeOpened(): Subject<void>;
251
+ afterOpened(): Subject<void>;
252
+ beforeClosed(): Subject<void>;
253
+ afterClosed(): Subject<void>;
254
+ _destroy(): void;
255
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnimatedOverlayDirective<any>, never>;
256
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AnimatedOverlayDirective<any>, never, never, {
257
+ "placement": {
258
+ "alias": "placement";
259
+ "required": false;
260
+ };
261
+ "fallbackPlacements": {
262
+ "alias": "fallbackPlacements";
263
+ "required": false;
264
+ };
265
+ "offset": {
266
+ "alias": "offset";
267
+ "required": false;
268
+ };
269
+ "arrowPadding": {
270
+ "alias": "arrowPadding";
271
+ "required": false;
272
+ };
273
+ "viewportPadding": {
274
+ "alias": "viewportPadding";
275
+ "required": false;
276
+ };
277
+ "autoResize": {
278
+ "alias": "autoResize";
279
+ "required": false;
280
+ };
281
+ "shift": {
282
+ "alias": "shift";
283
+ "required": false;
284
+ };
285
+ "autoHide": {
286
+ "alias": "autoHide";
287
+ "required": false;
288
+ };
289
+ "autoCloseIfReferenceHidden": {
290
+ "alias": "autoCloseIfReferenceHidden";
291
+ "required": false;
292
+ };
293
+ "referenceElement": {
294
+ "alias": "referenceElement";
295
+ "required": false;
296
+ };
297
+ }, {}, never, never, true, never>;
298
+ static ngAcceptInputType_autoResize: unknown;
299
+ static ngAcceptInputType_shift: unknown;
300
+ static ngAcceptInputType_autoHide: unknown;
301
+ static ngAcceptInputType_autoCloseIfReferenceHidden: unknown;
302
+ }
303
+ export declare class ClickOutsideDirective implements OnInit, OnDestroy {
304
+ private _elementRef;
305
+ private _clickObserverService;
306
+ private _subscription;
307
+ etClickOutside: EventEmitter<MouseEvent>;
308
+ ngOnInit(): void;
309
+ ngOnDestroy(): void;
310
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClickOutsideDirective, never>;
311
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ClickOutsideDirective, "[etClickOutside]", never, {}, {
312
+ "etClickOutside": "etClickOutside";
313
+ }, never, never, true, never>;
314
+ }
315
+ export declare const CURSOR_DRAG_SCROLLING_CLASS = "et-cursor-drag-scroll--scrolling";
316
+ export declare const CURSOR_DRAG_SCROLLING_PREPARED_CLASS = "et-cursor-drag-scroll--prepared";
317
+ export declare class CursorDragScrollDirective implements AfterViewInit {
318
+ private readonly _subscriptions;
319
+ private readonly _destroy$;
320
+ private readonly _elementRef;
321
+ private readonly _contentObserverService;
322
+ private readonly _resizeObserverService;
323
+ private readonly _bufferUntilScroll;
324
+ private readonly _mouseUp$;
325
+ private _isScrolling;
326
+ private _canScroll;
327
+ private _currentScrollState;
328
+ get enabled(): boolean;
329
+ set enabled(value: unknown);
330
+ private _enabled;
331
+ allowedDirection: 'horizontal' | 'vertical' | 'both';
332
+ readonly cursorDragStart: EventEmitter<void>;
333
+ readonly cursorDragMove: EventEmitter<void>;
334
+ readonly cursorDragEnd: EventEmitter<void>;
335
+ ngAfterViewInit(): void;
336
+ private _enableCursorDragScroll;
337
+ private _disableCursorDragScroll;
338
+ private _onMouseDown;
339
+ private _mouseMoveHandler;
340
+ private _mouseUpHandler;
341
+ private _updateCanScrollState;
342
+ static ɵfac: i0.ɵɵFactoryDeclaration<CursorDragScrollDirective, never>;
343
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CursorDragScrollDirective, "[etCursorDragScroll]", ["etCursorDragScroll"], {
344
+ "enabled": {
345
+ "alias": "etCursorDragScroll";
346
+ "required": false;
347
+ };
348
+ "allowedDirection": {
349
+ "alias": "allowedDirection";
350
+ "required": false;
351
+ };
352
+ }, {
353
+ "cursorDragStart": "cursorDragStart";
354
+ "cursorDragMove": "cursorDragMove";
355
+ "cursorDragEnd": "cursorDragEnd";
356
+ }, never, never, true, never>;
357
+ }
358
+ export declare const DEBUG_TOKEN: InjectionToken<DebugDirective>;
359
+ export declare class DebugDirective {
360
+ private readonly _destroy$;
361
+ private set sDebug(value);
362
+ private _debug;
363
+ readonly debug: import("@angular/core").Signal<boolean>;
364
+ readonly debug$: import("rxjs").Observable<boolean>;
365
+ readonly startDebug$: import("rxjs").Observable<boolean>;
366
+ readonly stopDebug$: import("rxjs").Observable<boolean>;
367
+ static ɵfac: i0.ɵɵFactoryDeclaration<DebugDirective, never>;
368
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DebugDirective, "[etDebug]", ["etDebug"], {
369
+ "sDebug": {
370
+ "alias": "etDebug";
371
+ "required": false;
372
+ };
373
+ }, {}, never, never, true, never>;
374
+ static ngAcceptInputType_sDebug: unknown;
375
+ }
376
+ export declare const DELAYABLE_TOKEN: InjectionToken<DelayableDirective>;
377
+ export declare class DelayableDirective {
378
+ private readonly _isDelayed$;
379
+ get isDelayed$(): import("rxjs").Observable<boolean>;
380
+ get isDelayed(): boolean;
381
+ enableDelayed(): void;
382
+ disableDelayed(): void;
383
+ setDelayed(val: boolean): void;
384
+ static ɵfac: i0.ɵɵFactoryDeclaration<DelayableDirective, never>;
385
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DelayableDirective, "[etDelayable]", ["etDelayable"], {}, {}, never, never, true, never>;
386
+ }
387
+ export declare const IS_ACTIVE_ELEMENT: InjectionToken<IsActiveElementDirective>;
388
+ export declare class IsActiveElementDirective {
389
+ readonly elementRef: ElementRef<HTMLElement>;
390
+ isActiveElement: boolean;
391
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsActiveElementDirective, never>;
392
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IsActiveElementDirective, "[etIsActiveElement]", never, {
393
+ "isActiveElement": {
394
+ "alias": "etIsActiveElement";
395
+ "required": false;
396
+ };
397
+ }, {}, never, never, true, never>;
398
+ static ngAcceptInputType_isActiveElement: unknown;
399
+ }
400
+ export declare const IS_ELEMENT: InjectionToken<IsElementDirective>;
401
+ export declare class IsElementDirective {
402
+ readonly elementRef: ElementRef<HTMLElement>;
403
+ isElement: boolean;
404
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsElementDirective, never>;
405
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IsElementDirective, "[etIsElement]", never, {
406
+ "isElement": {
407
+ "alias": "etIsElement";
408
+ "required": false;
409
+ };
410
+ }, {}, never, never, true, never>;
411
+ static ngAcceptInputType_isElement: unknown;
412
+ }
413
+ export declare class LetContext<T = unknown> {
414
+ $implicit: T;
415
+ etLet: T;
416
+ }
417
+ /** @deprecated Use the let keyword provided by Angular instead. */
418
+ export declare class LetDirective<T = unknown> {
419
+ private _viewContainer;
420
+ set etLet(value: T);
421
+ static ngTemplateGuard_ngLet: 'binding';
422
+ private _context;
423
+ private _templateRef;
424
+ private _viewRef;
425
+ static ngTemplateContextGuard<T>(dir: LetDirective<T>, ctx: any): ctx is LetContext<T>;
426
+ private _updateView;
427
+ static ɵfac: i0.ɵɵFactoryDeclaration<LetDirective<any>, never>;
428
+ static ɵdir: i0.ɵɵDirectiveDeclaration<LetDirective<any>, "[etLet]", never, {
429
+ "etLet": {
430
+ "alias": "etLet";
431
+ "required": false;
432
+ };
433
+ }, {}, never, never, true, never>;
434
+ }
435
+ export declare class ObserveContentDirective implements AfterContentInit, OnDestroy {
436
+ private _contentObserver;
437
+ private _elementRef;
438
+ private _ngZone;
439
+ readonly valueChange: EventEmitter<MutationRecord[]>;
440
+ get disabled(): boolean;
441
+ set disabled(value: unknown);
442
+ private _disabled;
443
+ get debounce(): number | null;
444
+ set debounce(value: unknown);
445
+ private _debounce;
446
+ private _currentSubscription;
447
+ ngAfterContentInit(): void;
448
+ ngOnDestroy(): void;
449
+ private _subscribe;
450
+ private _unsubscribe;
451
+ static ɵfac: i0.ɵɵFactoryDeclaration<ObserveContentDirective, never>;
452
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ObserveContentDirective, "[etObserveContent]", ["etObserveContent"], {
453
+ "disabled": {
454
+ "alias": "etObserveContentDisabled";
455
+ "required": false;
456
+ };
457
+ "debounce": {
458
+ "alias": "etObserveContentDebounce";
459
+ "required": false;
460
+ };
461
+ }, {
462
+ "valueChange": "etObserveContent";
463
+ }, never, never, true, never>;
464
+ }
465
+ export declare class ObserveResizeDirective implements AfterContentInit, OnDestroy {
466
+ private _resizeObserver;
467
+ private _elementRef;
468
+ private _ngZone;
469
+ readonly valueChange: EventEmitter<ResizeObserverEntry[]>;
470
+ get disabled(): boolean;
471
+ set disabled(value: unknown);
472
+ private _disabled;
473
+ get debounce(): number | null;
474
+ set debounce(value: unknown);
475
+ private _debounce;
476
+ private _currentSubscription;
477
+ ngAfterContentInit(): void;
478
+ ngOnDestroy(): void;
479
+ private _subscribe;
480
+ private _unsubscribe;
481
+ static ɵfac: i0.ɵɵFactoryDeclaration<ObserveResizeDirective, never>;
482
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ObserveResizeDirective, "[etObserveResize]", ["etObserveResize"], {
483
+ "disabled": {
484
+ "alias": "etObserveResizeDisabled";
485
+ "required": false;
486
+ };
487
+ "debounce": {
488
+ "alias": "etObserveResizeDebounce";
489
+ "required": false;
490
+ };
491
+ }, {
492
+ "valueChange": "etObserveResize";
493
+ }, never, never, true, never>;
494
+ }
495
+ export interface ScrollObserverScrollState {
496
+ isAtStart: boolean;
497
+ isAtEnd: boolean;
498
+ canScroll: boolean;
499
+ }
500
+ export type ObservedScrollableChild = 'first' | 'last';
501
+ export declare const SCROLL_OBSERVER_OBSERVING_FIRST_ELEMENT_CLASS = "et-scroll-observer-observing-first-element";
502
+ export declare const SCROLL_OBSERVER_OBSERVING_LAST_ELEMENT_CLASS = "et-scroll-observer-observing-last-element";
503
+ export declare class ObserveScrollStateDirective implements OnInit, OnDestroy {
504
+ private readonly _destroy$;
505
+ private readonly _elementRef;
506
+ private readonly _contentObserverService;
507
+ private readonly _resizeObserverService;
508
+ private get _firstCurrentChild();
509
+ private get _lastCurrentChild();
510
+ rootMargin: number;
511
+ get observerThreshold(): number | number[];
512
+ set observerThreshold(value: unknown);
513
+ private _threshold;
514
+ private _intersectionObserver;
515
+ private get _observerElements();
516
+ valueChange: EventEmitter<ScrollObserverScrollState>;
517
+ ngOnInit(): void;
518
+ ngOnDestroy(): void;
519
+ private _checkChildren;
520
+ private _initiateIntersectionObserver;
521
+ private _observe;
522
+ private _unobserve;
523
+ private _clearIntersectionObserver;
524
+ private _getNonIgnoredChild;
525
+ static ɵfac: i0.ɵɵFactoryDeclaration<ObserveScrollStateDirective, never>;
526
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ObserveScrollStateDirective, "[etObserveScrollState]", ["etObserveScrollState"], {
527
+ "rootMargin": {
528
+ "alias": "rootMargin";
529
+ "required": false;
530
+ };
531
+ "observerThreshold": {
532
+ "alias": "observerThreshold";
533
+ "required": false;
534
+ };
535
+ }, {
536
+ "valueChange": "etObserveScrollState";
537
+ }, never, never, true, never>;
538
+ static ngAcceptInputType_rootMargin: unknown;
539
+ }
540
+ export declare const OBSERVE_SCROLL_STATE: InjectionToken<ObserveScrollStateDirective>;
541
+ export declare const OBSERVE_VISIBILITY_TOKEN: InjectionToken<ObserveVisibilityDirective>;
542
+ export interface ObserveVisibilityChange {
543
+ visible: boolean;
544
+ isAbove: boolean;
545
+ isBelow: boolean;
546
+ isLeft: boolean;
547
+ isRight: boolean;
548
+ entry: IntersectionObserverEntry;
549
+ }
550
+ export declare const signalVisibilityChangeClasses: (cfg: {
551
+ name: string;
552
+ signal: Signal<ObserveVisibilityChange | null | undefined>;
553
+ }) => {
554
+ [x: string]: Signal<boolean | undefined>;
555
+ };
556
+ export declare class ObserveVisibilityDirective implements AfterViewInit {
557
+ private readonly _destroy$;
558
+ private readonly _elementRef;
559
+ private readonly _intersectionObserverService;
560
+ protected readonly visibilityChange: import("@angular/core").WritableSignal<ObserveVisibilityChange | null>;
561
+ readonly currentVisibility: Signal<ObserveVisibilityChange | null>;
562
+ readonly currentVisibility$: import("rxjs").Observable<ObserveVisibilityChange | null>;
563
+ readonly etObserveVisibility: EventEmitter<ObserveVisibilityChange>;
564
+ constructor();
565
+ ngAfterViewInit(): void;
566
+ static ɵfac: i0.ɵɵFactoryDeclaration<ObserveVisibilityDirective, never>;
567
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ObserveVisibilityDirective, "[etObserveVisibility]", never, {}, {
568
+ "etObserveVisibility": "etObserveVisibility";
569
+ }, never, never, true, never>;
570
+ }
571
+ export declare class RepeatDirective {
572
+ private _mainTemplateRef;
573
+ private _viewContainerRef;
574
+ get repeatCount(): number;
575
+ set repeatCount(value: unknown);
576
+ private _repeatCount;
577
+ private _render;
578
+ static ɵfac: i0.ɵɵFactoryDeclaration<RepeatDirective, never>;
579
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RepeatDirective, "[etRepeat]", never, {
580
+ "repeatCount": {
581
+ "alias": "etRepeat";
582
+ "required": false;
583
+ };
584
+ }, {}, never, never, true, never>;
585
+ }
586
+ export declare const ROOT_BOUNDARY_TOKEN: InjectionToken<RootBoundaryDirective>;
587
+ export declare class RootBoundaryDirective {
588
+ private readonly _elementRef;
589
+ get boundaryElement(): HTMLElement | null;
590
+ set boundaryElement(v: HTMLElement | null);
591
+ private _boundaryElement;
592
+ static ɵfac: i0.ɵɵFactoryDeclaration<RootBoundaryDirective, never>;
593
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RootBoundaryDirective, "[etRootBoundary]", never, {}, {}, never, never, true, never>;
594
+ }
595
+ export declare const SCROLL_OBSERVER_FIRST_ELEMENT_CLASS = "et-scroll-observer-first-element";
596
+ export declare class ScrollObserverFirstElementDirective {
597
+ isFirstElement: boolean;
598
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScrollObserverFirstElementDirective, never>;
599
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollObserverFirstElementDirective, "[etScrollObserverFirstElement]", never, {
600
+ "isFirstElement": {
601
+ "alias": "etScrollObserverFirstElement";
602
+ "required": false;
603
+ };
604
+ }, {}, never, never, true, never>;
605
+ static ngAcceptInputType_isFirstElement: unknown;
606
+ }
607
+ export declare const SCROLL_OBSERVER_IGNORE_TARGET_CLASS = "et-scroll-observer-ignore-target";
608
+ export declare class ScrollObserverIgnoreTargetDirective {
609
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScrollObserverIgnoreTargetDirective, never>;
610
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollObserverIgnoreTargetDirective, "[etScrollObserverIgnoreTarget]", never, {}, {}, never, never, true, never>;
611
+ }
612
+ export declare const SCROLL_OBSERVER_LAST_ELEMENT_CLASS = "et-scroll-observer-last-element";
613
+ export declare class ScrollObserverLastElementDirective {
614
+ isLastElement: boolean;
615
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScrollObserverLastElementDirective, never>;
616
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollObserverLastElementDirective, "[etScrollObserverLastElement]", never, {
617
+ "isLastElement": {
618
+ "alias": "etScrollObserverLastElement";
619
+ "required": false;
620
+ };
621
+ }, {}, never, never, true, never>;
622
+ static ngAcceptInputType_isLastElement: unknown;
623
+ }
624
+ export type MaybeObservable<T> = T | Observable<T>;
625
+ export interface SeoConfig {
626
+ title?: MaybeObservable<string>;
627
+ description?: MaybeObservable<string>;
628
+ keywords?: MaybeObservable<string[]>;
629
+ icon?: MaybeObservable<string>;
630
+ themeColor?: MaybeObservable<string>;
631
+ colorScheme?: MaybeObservable<'light' | 'dark'>;
632
+ robots?: MaybeObservable<string>;
633
+ canonical?: MaybeObservable<string>;
634
+ alternate?: MaybeObservable<AlternateLink>[];
635
+ og?: MaybeObservable<OpenGraph>;
636
+ twitter?: MaybeObservable<TwitterCard>;
637
+ facebook?: MaybeObservable<FacebookCard>;
638
+ [key: string]: MaybeObservable<unknown>;
639
+ }
640
+ export interface AlternateLink {
641
+ href: string;
642
+ hreflang: string;
643
+ }
644
+ export interface OpenGraph {
645
+ title?: MaybeObservable<string>;
646
+ description?: MaybeObservable<string>;
647
+ type?: MaybeObservable<string>;
648
+ url?: MaybeObservable<string>;
649
+ image?: MaybeObservable<string>;
650
+ siteName?: MaybeObservable<string>;
651
+ locale?: MaybeObservable<string>;
652
+ localeAlternate?: MaybeObservable<string[]>;
653
+ }
654
+ export interface TwitterCard {
655
+ card?: MaybeObservable<string>;
656
+ site?: MaybeObservable<string>;
657
+ creator?: MaybeObservable<string>;
658
+ title?: MaybeObservable<string>;
659
+ description?: MaybeObservable<string>;
660
+ image?: MaybeObservable<string>;
661
+ imageAlt?: MaybeObservable<string>;
662
+ }
663
+ export interface FacebookCard {
664
+ title?: MaybeObservable<string>;
665
+ description?: MaybeObservable<string>;
666
+ image?: MaybeObservable<string>;
667
+ imageAlt?: MaybeObservable<string>;
668
+ type?: MaybeObservable<string>;
669
+ url?: MaybeObservable<string>;
670
+ siteName?: MaybeObservable<string>;
671
+ locale?: MaybeObservable<string>;
672
+ localeAlternate?: MaybeObservable<string[]>;
673
+ }
674
+ export declare class SeoDirective implements OnInit, OnDestroy {
675
+ private readonly _metaService;
676
+ private readonly _titleService;
677
+ private readonly _onDeactivate$;
678
+ private _isDeactivated;
679
+ readonly parent: SeoDirective | null;
680
+ get config(): SeoConfig;
681
+ private _config;
682
+ ngOnInit(): void;
683
+ ngOnDestroy(): void;
684
+ updateConfig(config: SeoConfig): void;
685
+ _activate(): void;
686
+ _deactivate(): void;
687
+ private _update;
688
+ private _cleanUp;
689
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeoDirective, never>;
690
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SeoDirective, never, never, {}, {}, never, never, true, never>;
691
+ }
692
+ export declare const SEO_DIRECTIVE_TOKEN: InjectionToken<SeoDirective>;
693
+ export declare const mergeSeoConfig: (config: SeoConfig, parentConfig: SeoConfig) => SeoConfig;
694
+ export declare class InferMimeTypePipe implements PipeTransform {
695
+ transform: (srcset: string) => "image/avif" | "image/bmp" | "image/gif" | "image/vdn.microsoft.icon" | "image/jpeg" | "image/png" | "image/svg+xml" | "image/tiff" | "image/webp" | "audio/aac" | "application/x-abiword" | "application/x-freearc" | "video/x-msvideo" | "application/vnd.amazon.ebook" | "application/octet-stream" | "application/x-bzip" | "application/x-bzip2" | "application/x-cdf" | "application/x-csh" | "text/css" | "text/csv" | "application/msword" | "application/vnd.openxmlformats-officedocument.wordprocessingml.document" | "application/vnd.ms-fontobject" | "application/epub+zip" | "application/gzip" | "text/html" | "text/calendar" | "application/java-archive" | "text/javascript" | "application/json" | "application/ld+json" | "audio/midi" | "audio/mpeg" | "video/mp4" | "video/mpeg" | "tapplication/vnd.apple.installer+xml" | "application/vnd.oasis.opendocument.presentation" | "application/vnd.oasis.opendocument.spreadsheet" | "application/vnd.oasis.opendocument.text" | "audio/ogg" | "video/ogg" | "application/ogg" | "audio/opus" | "font/otf" | "application/pdf" | "application/x-httpd-php" | "application/vnd.ms-powerpoint" | "application/vnd.openxmlformats-officedocument.presentationml.presentation" | "application/vnd.rar" | "application/rtf" | "application/x-sh" | "application/x-tar" | "video/mp2t" | "font/ttf" | "text/plain" | "application/vnd.visio" | "audio/wav" | "audio/webm" | "video/webm" | "font/woff" | "font/woff2" | "application/xhtml+xml" | "application/vnd.ms-excel" | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | "application/xml" | "application/vnd.mozilla.xul+xml" | "application/zip" | "video/3gpp" | "video/3gpp2" | "application/x-7z-compressed" | null;
696
+ static ɵfac: i0.ɵɵFactoryDeclaration<InferMimeTypePipe, never>;
697
+ static ɵpipe: i0.ɵɵPipeDeclaration<InferMimeTypePipe, "inferMimeType", true>;
698
+ }
699
+ /**
700
+ * Infers the mime type of a given url or srcset.
701
+ * If a srcset is provided, it will infer the mime type of the first url in the srcset.
702
+ * If the srcset contains a query parameter `?fm=`, it will use the value of that parameter, since it is often used to specify the file format in image api's like contentful.
703
+ */
704
+ export declare const inferMimeType: (srcset: string) => "image/avif" | "image/bmp" | "image/gif" | "image/vdn.microsoft.icon" | "image/jpeg" | "image/png" | "image/svg+xml" | "image/tiff" | "image/webp" | "audio/aac" | "application/x-abiword" | "application/x-freearc" | "video/x-msvideo" | "application/vnd.amazon.ebook" | "application/octet-stream" | "application/x-bzip" | "application/x-bzip2" | "application/x-cdf" | "application/x-csh" | "text/css" | "text/csv" | "application/msword" | "application/vnd.openxmlformats-officedocument.wordprocessingml.document" | "application/vnd.ms-fontobject" | "application/epub+zip" | "application/gzip" | "text/html" | "text/calendar" | "application/java-archive" | "text/javascript" | "application/json" | "application/ld+json" | "audio/midi" | "audio/mpeg" | "video/mp4" | "video/mpeg" | "tapplication/vnd.apple.installer+xml" | "application/vnd.oasis.opendocument.presentation" | "application/vnd.oasis.opendocument.spreadsheet" | "application/vnd.oasis.opendocument.text" | "audio/ogg" | "video/ogg" | "application/ogg" | "audio/opus" | "font/otf" | "application/pdf" | "application/x-httpd-php" | "application/vnd.ms-powerpoint" | "application/vnd.openxmlformats-officedocument.presentationml.presentation" | "application/vnd.rar" | "application/rtf" | "application/x-sh" | "application/x-tar" | "video/mp2t" | "font/ttf" | "text/plain" | "application/vnd.visio" | "audio/wav" | "audio/webm" | "video/webm" | "font/woff" | "font/woff2" | "application/xhtml+xml" | "application/vnd.ms-excel" | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | "application/xml" | "application/vnd.mozilla.xul+xml" | "application/zip" | "video/3gpp" | "video/3gpp2" | "application/x-7z-compressed" | null;
705
+ export declare class NormalizeGameResultTypePipe implements PipeTransform {
706
+ transform: (type: string | null) => import("@ethlete/core").NormalizedGameResultType | null;
707
+ static ɵfac: i0.ɵɵFactoryDeclaration<NormalizeGameResultTypePipe, never>;
708
+ static ɵpipe: i0.ɵɵPipeDeclaration<NormalizeGameResultTypePipe, "etNormalizeGameResultType", true>;
709
+ }
710
+ export interface NormalizedGameResultType extends Translatable {
711
+ shortCode: string;
712
+ }
713
+ export declare const normalizeGameResultType: (type: string | null) => NormalizedGameResultType | null;
714
+ export declare class NormalizeMatchParticipantsPipe implements PipeTransform {
715
+ transform: (match: import("dist/libs/types/types/ethlete-types").MatchListView | null) => import("@ethlete/core").NormalizedMatchParticipants | null;
716
+ static ɵfac: i0.ɵɵFactoryDeclaration<NormalizeMatchParticipantsPipe, never>;
717
+ static ɵpipe: i0.ɵɵPipeDeclaration<NormalizeMatchParticipantsPipe, "etNormalizeMatchParticipants", true>;
718
+ }
719
+ export interface NormalizedMatchParticipants {
720
+ home: NormalizedMatchParticipant | null;
721
+ away: NormalizedMatchParticipant | null;
722
+ }
723
+ type NormalizedParticipantType = 'team' | 'player' | 'unknown';
724
+ export type NormalizedMatchParticipant = ({
725
+ type: 'tbd';
726
+ participantType: NormalizedParticipantType;
727
+ data: ParticipantViewUnion | null;
728
+ } & Translatable) | {
729
+ type: 'participant';
730
+ participantType: NormalizedParticipantType;
731
+ data: ParticipantViewUnion;
732
+ } | ({
733
+ type: 'none';
734
+ participantType: NormalizedParticipantType;
735
+ data: ParticipantViewUnion | null;
736
+ } & Translatable);
737
+ export declare const normalizeMatchParticipants: (match: MatchListView | null) => NormalizedMatchParticipants | null;
738
+ export declare const normalizeMatchParticipant: (match: MatchListView | null, side: "home" | "away") => NormalizedMatchParticipant | null;
739
+ export declare class NormalizeMatchScorePipe implements PipeTransform {
740
+ transform: (match: import("dist/libs/types/types/ethlete-types").MatchListView | null | undefined) => import("@ethlete/core").NormalizedMatchScore | null;
741
+ static ɵfac: i0.ɵɵFactoryDeclaration<NormalizeMatchScorePipe, never>;
742
+ static ɵpipe: i0.ɵɵPipeDeclaration<NormalizeMatchScorePipe, "etNormalizeMatchScore", true>;
743
+ }
744
+ export interface NormalizedMatchScore {
745
+ home: {
746
+ score: string | number | null;
747
+ isWinner: boolean;
748
+ };
749
+ away: {
750
+ score: string | number | null;
751
+ isWinner: boolean;
752
+ };
753
+ subLine: string | null;
754
+ isNumeric: boolean;
755
+ }
756
+ export declare const normalizeMatchScore: (match: MatchListView | null | undefined) => NormalizedMatchScore | null;
757
+ export declare const isKnockoutMatch: (match: MatchListView | null | undefined) => boolean;
758
+ export declare const isGroupMatch: (match: MatchListView | null | undefined) => boolean;
759
+ export declare const getKnockoutMatchScore: (score: MatchRankingView | null | undefined) => "match-score.knockout.won" | "match-score.knockout.lost" | "match-score.knockout.tie" | null;
760
+ export declare const getMatchScoreSubLine: (match: MatchListView | null | undefined) => "match-score.groups.sub-line" | null;
761
+ export declare const getGroupMatchScore: (match: MatchListView | null | undefined) => {
762
+ home: {
763
+ score: number;
764
+ isWinner: boolean;
765
+ };
766
+ away: {
767
+ score: number;
768
+ isWinner: boolean;
769
+ };
770
+ } | null;
771
+ export declare const getGroupMatchPoints: (match: MatchListView | null | undefined) => {
772
+ home: {
773
+ score: number;
774
+ isWinner: boolean;
775
+ };
776
+ away: {
777
+ score: number;
778
+ isWinner: boolean;
779
+ };
780
+ } | null;
781
+ export declare const enum MatchStateType {
782
+ PREPARING_ROUND = "preparingRound",
783
+ PRE_MATCH = "preMatch",
784
+ LIVE = "live",
785
+ POST_MATCH = "postMatch",
786
+ AUTO_WIN = "autoWin"
787
+ }
788
+ export declare class NormalizeMatchStatePipe implements PipeTransform {
789
+ transform: (match: import("dist/libs/types/types/ethlete-types").MatchListView | null | undefined) => import("@ethlete/core").MatchStateType | null;
790
+ static ɵfac: i0.ɵɵFactoryDeclaration<NormalizeMatchStatePipe, never>;
791
+ static ɵpipe: i0.ɵɵPipeDeclaration<NormalizeMatchStatePipe, "etNormalizeMatchState", true>;
792
+ }
793
+ export declare const normalizeMatchState: (match: MatchListView | null | undefined) => MatchStateType | null;
794
+ export declare class NormalizeMatchTypePipe implements PipeTransform {
795
+ transform: (matchType: import("dist/libs/types/types/ethlete-types").StageType | null | undefined) => import("@ethlete/core").Translatable | null;
796
+ static ɵfac: i0.ɵɵFactoryDeclaration<NormalizeMatchTypePipe, never>;
797
+ static ɵpipe: i0.ɵɵPipeDeclaration<NormalizeMatchTypePipe, "etNormalizeMatchType", true>;
798
+ }
799
+ export declare const normalizeMatchType: (matchType: StageType | null | undefined) => Translatable | null;
800
+ export declare class ToArrayPipe implements PipeTransform {
801
+ transform: (value: number) => number[];
802
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToArrayPipe, never>;
803
+ static ɵpipe: i0.ɵɵPipeDeclaration<ToArrayPipe, "toArray", true>;
804
+ }
805
+ export declare const toArray: (value: number) => number[];
806
+ export declare const toArrayTrackByFn: TrackByFunction<number>;
807
+ export declare const createPropHandlers: () => {
808
+ classes: {
809
+ remove: (tokens: string) => void;
810
+ removeMany: (tokens: string[]) => void;
811
+ has: (tokens: string) => boolean;
812
+ push: (tokens: string, signal: import("@angular/core").Signal<unknown>) => void;
813
+ pushMany: (map: Record<string, import("@angular/core").Signal<unknown>>) => void;
814
+ };
815
+ attributes: {
816
+ remove: (tokens: string) => void;
817
+ removeMany: (tokens: string[]) => void;
818
+ has: (tokens: string) => boolean;
819
+ push: (tokens: string, signal: import("@angular/core").Signal<unknown>) => void;
820
+ pushMany: (map: Record<string, import("@angular/core").Signal<unknown>>) => void;
821
+ };
822
+ styles: {
823
+ remove: (tokens: string) => void;
824
+ removeMany: (tokens: string[]) => void;
825
+ has: (tokens: string) => boolean;
826
+ push: (tokens: string, signal: import("@angular/core").Signal<unknown>) => void;
827
+ pushMany: (map: Record<string, import("@angular/core").Signal<unknown>>) => void;
828
+ };
829
+ id: string;
830
+ elementRef: ElementRef<HTMLElement>;
831
+ };
832
+ export type PropHandlers = ReturnType<typeof createPropHandlers>;
833
+ export type Props = Readonly<{
834
+ attached: Signal<boolean>;
835
+ attachedElements: PropsAttachedElements;
836
+ }>;
837
+ export interface PropsAttachedElements {
838
+ first: Signal<HTMLElement | null>;
839
+ firstId: Signal<string | null>;
840
+ get(id: string): HTMLElement | null;
841
+ }
842
+ export interface PropsAttachedElementsInternal extends PropsAttachedElements {
843
+ has: (id: string) => boolean;
844
+ push: (id: string, element: HTMLElement) => void;
845
+ remove: (id: string) => void;
846
+ }
847
+ export interface PropsInternal {
848
+ single: boolean;
849
+ name: string;
850
+ bindId: boolean;
851
+ attached: Signal<boolean>;
852
+ attachedElements: PropsAttachedElementsInternal;
853
+ classBindings: Record<string, Signal<unknown>> | null;
854
+ attributeBindings: Record<string, Signal<unknown>> | null;
855
+ styleBindings: Record<string, Signal<unknown>> | null;
856
+ staticClassBindings: string[] | null;
857
+ staticAttributeBindings: Record<string, unknown> | null;
858
+ staticStyleBindings: Record<string, unknown> | null;
859
+ attachEventListeners: ((context: {
860
+ on: HTMLElement['addEventListener'];
861
+ element: HTMLElement;
862
+ }) => void) | null;
863
+ }
864
+ export interface CreatePropsOptions {
865
+ name: string;
866
+ bindId?: boolean;
867
+ single?: boolean;
868
+ classes?: Record<string, Signal<unknown>>;
869
+ attributes?: Record<string, Signal<unknown>>;
870
+ styles?: Record<string, Signal<unknown>>;
871
+ staticClasses?: string[];
872
+ staticAttributes?: Record<string, unknown>;
873
+ staticStyles?: Record<string, unknown>;
874
+ listeners?: (context: {
875
+ on: HTMLElement['addEventListener'];
876
+ element: HTMLElement;
877
+ }) => void;
878
+ }
879
+ export declare const createProps: (props: CreatePropsOptions) => Props;
880
+ export interface HostProps {
881
+ props: Props;
882
+ handlers: PropHandlers;
883
+ }
884
+ export declare const createHostProps: (props: CreatePropsOptions) => HostProps;
885
+ export declare const createSetup: <T extends Record<string, unknown>>(config: {
886
+ setupFn: (params: T) => void;
887
+ this: ThisType<unknown>;
888
+ }) => (params: T) => void;
889
+ export declare const createDependencyStash: <T extends Record<string, WritableSignal<unknown>>>(stash: T) => T & {
890
+ provideSignal: <K extends keyof T>(data: {
891
+ signal: Signal<ReturnType<T[K]>>;
892
+ for: K;
893
+ }) => void;
894
+ provideValue: <K extends keyof T>(data: {
895
+ value: ReturnType<T[K]>;
896
+ for: K;
897
+ }) => void;
898
+ };
899
+ export declare const createElementDictionary: () => {
900
+ ids: import("@angular/core").Signal<string[]>;
901
+ elements: import("@angular/core").Signal<HTMLElement[]>;
902
+ has: (id: string) => boolean;
903
+ get: (id: string) => HTMLElement | null;
904
+ push: (id: string, element: HTMLElement) => void;
905
+ remove: (id: string) => void;
906
+ isEmpty: import("@angular/core").Signal<boolean>;
907
+ firstElement: import("@angular/core").Signal<HTMLElement | null>;
908
+ firstId: import("@angular/core").Signal<string | null>;
909
+ };
910
+ export interface BindPropsOptions {
911
+ props: Props | PropsInternal;
912
+ handlers: PropHandlers;
913
+ }
914
+ export declare const bindProps: (config: BindPropsOptions) => void;
915
+ export interface UnbindPropsOptions {
916
+ props: Props | PropsInternal;
917
+ handlers: PropHandlers;
918
+ }
919
+ export declare const unbindProps: (config: UnbindPropsOptions) => void;
920
+ export declare class PropsDirective {
921
+ destroyRef: DestroyRef;
922
+ props: import("@angular/core").InputSignalWithTransform<PropsInternal, Readonly<{
923
+ attached: import("@angular/core").Signal<boolean>;
924
+ attachedElements: import("@ethlete/core").PropsAttachedElements;
925
+ }>>;
926
+ propHandlers: {
927
+ classes: {
928
+ remove: (tokens: string) => void;
929
+ removeMany: (tokens: string[]) => void;
930
+ has: (tokens: string) => boolean;
931
+ push: (tokens: string, signal: import("@angular/core").Signal<unknown>) => void;
932
+ pushMany: (map: Record<string, import("@angular/core").Signal<unknown>>) => void;
933
+ };
934
+ attributes: {
935
+ remove: (tokens: string) => void;
936
+ removeMany: (tokens: string[]) => void;
937
+ has: (tokens: string) => boolean;
938
+ push: (tokens: string, signal: import("@angular/core").Signal<unknown>) => void;
939
+ pushMany: (map: Record<string, import("@angular/core").Signal<unknown>>) => void;
940
+ };
941
+ styles: {
942
+ remove: (tokens: string) => void;
943
+ removeMany: (tokens: string[]) => void;
944
+ has: (tokens: string) => boolean;
945
+ push: (tokens: string, signal: import("@angular/core").Signal<unknown>) => void;
946
+ pushMany: (map: Record<string, import("@angular/core").Signal<unknown>>) => void;
947
+ };
948
+ id: string;
949
+ elementRef: import("@angular/core").ElementRef<HTMLElement>;
950
+ };
951
+ constructor();
952
+ static ɵfac: i0.ɵɵFactoryDeclaration<PropsDirective, never>;
953
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PropsDirective, "[etProps]", never, {
954
+ "props": {
955
+ "alias": "etProps";
956
+ "required": true;
957
+ "isSignal": true;
958
+ };
959
+ }, {}, never, never, true, never>;
960
+ }
961
+ export type AnyTemplateType = string | TemplateRef<unknown> | ComponentType<unknown> | TemplateRefWithContext | ComponentTypeWithInputs;
962
+ export type TemplateRefWithContext<T = Record<string, unknown> | undefined, J = unknown> = {
963
+ template: TemplateRef<J>;
964
+ context?: T;
965
+ injector?: Injector;
966
+ };
967
+ export type ComponentTypeWithInputs<T = Record<string, unknown> | undefined, J = unknown> = {
968
+ component: ComponentType<J>;
969
+ inputs?: T;
970
+ injector?: Injector;
971
+ };
972
+ export type StringTemplate = {
973
+ type: 'string';
974
+ value: string;
975
+ };
976
+ export type NgTemplateTemplate = {
977
+ type: 'template';
978
+ value: TemplateRef<unknown>;
979
+ context?: Record<string, unknown>;
980
+ injector: Injector | null;
981
+ };
982
+ export type ComponentTemplate = {
983
+ type: 'component';
984
+ value: ComponentType<unknown>;
985
+ inputs?: Record<string, unknown>;
986
+ injector: Injector | null;
987
+ };
988
+ export declare const templateComputed: (templateSignal: Signal<AnyTemplateType | null>) => Signal<StringTemplate | NgTemplateTemplate | ComponentTemplate | null>;
989
+ export declare class ClickObserverFactory {
990
+ create(): Observable<MouseEvent>;
991
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClickObserverFactory, never>;
992
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
993
+ }
994
+ export declare class ClickObserverService implements OnDestroy {
995
+ private _clickObserverFactory;
996
+ private _observedElements;
997
+ ngOnDestroy(): void;
998
+ observe(element: Element): Observable<MouseEvent>;
999
+ observe(element: ElementRef<Element>): Observable<MouseEvent>;
1000
+ private _observeElement;
1001
+ private _unobserveElement;
1002
+ private _cleanupObserver;
1003
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClickObserverService, never>;
1004
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1005
+ }
1006
+ export declare class MutationObserverFactory {
1007
+ create(callback: MutationCallback): MutationObserver | null;
1008
+ static ɵfac: i0.ɵɵFactoryDeclaration<MutationObserverFactory, never>;
1009
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1010
+ }
1011
+ export declare class ContentObserverService implements OnDestroy {
1012
+ private _mutationObserverFactory;
1013
+ private _observedElements;
1014
+ ngOnDestroy(): void;
1015
+ observe(element: Element): Observable<MutationRecord[]>;
1016
+ observe(element: ElementRef<Element>): Observable<MutationRecord[]>;
1017
+ private _observeElement;
1018
+ private _unobserveElement;
1019
+ private _cleanupObserver;
1020
+ static ɵfac: i0.ɵɵFactoryDeclaration<ContentObserverService, never>;
1021
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1022
+ }
1023
+ export declare class FocusVisibleService {
1024
+ private readonly _document;
1025
+ private _hadKeyboardEvent;
1026
+ get isFocusVisible(): boolean;
1027
+ constructor();
1028
+ onKeyDown(e: KeyboardEvent): void;
1029
+ onPointerDown(): void;
1030
+ static ɵfac: i0.ɵɵFactoryDeclaration<FocusVisibleService, never>;
1031
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1032
+ }
1033
+ export declare class IntersectionObserverFactory {
1034
+ create(callback: IntersectionObserverCallback): IntersectionObserver | null;
1035
+ static ɵfac: i0.ɵɵFactoryDeclaration<IntersectionObserverFactory, never>;
1036
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1037
+ }
1038
+ export declare class IntersectionObserverService implements OnDestroy {
1039
+ private _intersectionObserverFactory;
1040
+ private _observedElements;
1041
+ ngOnDestroy(): void;
1042
+ observe(element: Element): Observable<IntersectionObserverEntry[]>;
1043
+ observe(element: ElementRef<Element>): Observable<IntersectionObserverEntry[]>;
1044
+ private _observeElement;
1045
+ private _unobserveElement;
1046
+ private _cleanupObserver;
1047
+ static ɵfac: i0.ɵɵFactoryDeclaration<IntersectionObserverService, never>;
1048
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1049
+ }
1050
+ export declare class ResizeObserverFactory {
1051
+ create(callback: ResizeObserverCallback): ResizeObserver | null;
1052
+ static ɵfac: i0.ɵɵFactoryDeclaration<ResizeObserverFactory, never>;
1053
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1054
+ }
1055
+ export declare class ResizeObserverService implements OnDestroy {
1056
+ private _mutationObserverFactory;
1057
+ private _observedElements;
1058
+ ngOnDestroy(): void;
1059
+ observe(element: Element): Observable<ResizeObserverEntry[]>;
1060
+ observe(element: ElementRef<Element>): Observable<ResizeObserverEntry[]>;
1061
+ private _observeElement;
1062
+ private _unobserveElement;
1063
+ private _cleanupObserver;
1064
+ static ɵfac: i0.ɵɵFactoryDeclaration<ResizeObserverService, never>;
1065
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1066
+ }
1067
+ declare const ET_DISABLE_SCROLL_TOP: unique symbol;
1068
+ declare const ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE: unique symbol;
1069
+ declare const ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE: unique symbol;
1070
+ export interface RouterDisableScrollTopConfig {
1071
+ /**
1072
+ * Whether to disable scroll to top ONLY when navigating back to this route.
1073
+ * @default false
1074
+ */
1075
+ asReturnRoute?: boolean;
1076
+ /**
1077
+ * Whether to disable scroll to top when a path param changes.
1078
+ * @default false
1079
+ */
1080
+ onPathParamChange?: boolean;
1081
+ }
1082
+ export declare const routerDisableScrollTop: (config?: RouterDisableScrollTopConfig) => {
1083
+ [ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE]?: boolean | undefined;
1084
+ [ET_DISABLE_SCROLL_TOP]: boolean;
1085
+ } | {
1086
+ [ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE]?: boolean | undefined;
1087
+ [ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE]: boolean;
1088
+ };
1089
+ export declare const ET_PROPERTY_REMOVED: unique symbol;
1090
+ export interface ScrollEnhancementsConfig {
1091
+ /**
1092
+ * The scrollable container.
1093
+ * @default document.documentElement
1094
+ */
1095
+ scrollElement?: HTMLElement;
1096
+ /**
1097
+ * A list of query params that should trigger a scroll to top.
1098
+ * @default []
1099
+ * @example ['page'] // will scroll to top when the page query param changes
1100
+ */
1101
+ queryParamTriggerList?: string[];
1102
+ /**
1103
+ * Config for fragment scrolling.
1104
+ */
1105
+ fragment?: {
1106
+ /**
1107
+ * Enable fragment scrolling (scroll to element with id)
1108
+ * @default false
1109
+ */
1110
+ enabled?: boolean;
1111
+ /**
1112
+ * Whether to use smooth scrolling or not.
1113
+ * @default false
1114
+ */
1115
+ smooth?: boolean;
1116
+ };
1117
+ }
1118
+ export interface RouterState {
1119
+ data: Data;
1120
+ pathParams: Params;
1121
+ queryParams: Params;
1122
+ title: string | null;
1123
+ fragment: string | null;
1124
+ }
1125
+ export declare class RouterStateService {
1126
+ private _isScrollTopOnNavigationEnabled;
1127
+ private readonly _router;
1128
+ private readonly _route$;
1129
+ private readonly _state$;
1130
+ private readonly _afterInitialize$;
1131
+ readonly afterInitialize$: Observable<boolean>;
1132
+ get route$(): Observable<string>;
1133
+ get route(): string;
1134
+ get state$(): Observable<RouterState>;
1135
+ get state(): RouterState;
1136
+ get data$(): Observable<Data>;
1137
+ get data(): Data;
1138
+ get pathParams$(): Observable<Params>;
1139
+ get pathParams(): Params;
1140
+ get queryParams$(): Observable<Params>;
1141
+ get queryParams(): Params;
1142
+ get title$(): Observable<string | null>;
1143
+ get title(): string | null;
1144
+ get fragment$(): Observable<string | null>;
1145
+ get fragment(): string | null;
1146
+ get dataChanges$(): Observable<Partial<Data>>;
1147
+ get queryParamChanges$(): Observable<Partial<Params>>;
1148
+ get pathParamChanges$(): Observable<Partial<Params>>;
1149
+ latestEvent: import("@angular/core").WritableSignal<Event | null>;
1150
+ constructor();
1151
+ enableScrollEnhancements(config?: ScrollEnhancementsConfig): void;
1152
+ selectQueryParam<T = string | undefined>(key: string): Observable<T>;
1153
+ selectPathParam<T = string | undefined>(key: string): Observable<T>;
1154
+ selectData<T = unknown>(key: string): Observable<T>;
1155
+ private _findChanges;
1156
+ private _getInitialState;
1157
+ static ɵfac: i0.ɵɵFactoryDeclaration<RouterStateService, never>;
1158
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1159
+ }
1160
+ export interface Size {
1161
+ width: number;
1162
+ height: number;
1163
+ }
1164
+ export declare class ViewportService {
1165
+ private readonly _resizeObserverService;
1166
+ private readonly _viewportConfig;
1167
+ private readonly _breakpointObserver;
1168
+ private readonly _viewportMonitorStop$;
1169
+ private _isViewportMonitorEnabled;
1170
+ private _isXs$;
1171
+ private _isSm$;
1172
+ private _isMd$;
1173
+ private _isLg$;
1174
+ private _isXl$;
1175
+ private _is2Xl$;
1176
+ private _viewportSize$;
1177
+ private _scrollbarSize$;
1178
+ get isXs$(): Observable<boolean>;
1179
+ get isXs(): boolean;
1180
+ get isSm$(): Observable<boolean>;
1181
+ get isSm(): boolean;
1182
+ get isMd$(): Observable<boolean>;
1183
+ get isMd(): boolean;
1184
+ get isLg$(): Observable<boolean>;
1185
+ get isLg(): boolean;
1186
+ get isXl$(): Observable<boolean>;
1187
+ get isXl(): boolean;
1188
+ get is2Xl$(): Observable<boolean>;
1189
+ get is2Xl(): boolean;
1190
+ get viewportSize$(): Observable<Size | null>;
1191
+ get viewportSize(): Size | null;
1192
+ get scrollbarSize$(): Observable<Size | null>;
1193
+ get scrollbarSize(): Size | null;
1194
+ currentViewport$: Observable<"xs" | "sm" | "md" | "lg" | "xl" | "2xl">;
1195
+ get currentViewport(): "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
1196
+ constructor();
1197
+ observe(options: {
1198
+ min?: number | Breakpoint;
1199
+ max?: number | Breakpoint;
1200
+ }): Observable<boolean>;
1201
+ isMatched(options: {
1202
+ min?: number | Breakpoint;
1203
+ max?: number | Breakpoint;
1204
+ }): boolean;
1205
+ /**
1206
+ * Applies size CSS variables to the documentElement in pixels.
1207
+ * - `--et-vw`: viewport width excluding scrollbar width
1208
+ * - `--et-vh`: viewport height excluding scrollbar height
1209
+ * - `--et-sw`: scrollbar width
1210
+ * - `--et-sh`: scrollbar height
1211
+ */
1212
+ monitorViewport(): void;
1213
+ unmonitorViewport(): void;
1214
+ getBreakpointSize(type: Breakpoint, option: 'min' | 'max'): number;
1215
+ private _observeDefaultBreakpoints;
1216
+ private _buildMediaQuery;
1217
+ private getCurrentViewport;
1218
+ static ɵfac: i0.ɵɵFactoryDeclaration<ViewportService, never>;
1219
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1220
+ }
1221
+ export type BuildMediaQueryOptions = {
1222
+ min?: number | Breakpoint;
1223
+ max?: number | Breakpoint;
1224
+ };
1225
+ export type SelectionModelTypes = string | number | Record<string, unknown> | unknown;
1226
+ export type SelectionModelPropertyPath = string;
1227
+ export type SelectionModelOptionValueFn<T extends SelectionModelTypes = any> = (option: T) => unknown;
1228
+ /**
1229
+ * You can use a property path or a function to get the value of an option. The function should be as **lightweight as possible** as it will be called **a lot**.
1230
+ *
1231
+ * @example
1232
+ * // Property path
1233
+ * "id" // option.id
1234
+ * "user.name" // option.user.name
1235
+ *
1236
+ * // Function
1237
+ * (option) => option.id // option.id
1238
+ * (option) => option.user.name // option.user.name
1239
+ */
1240
+ export type SelectionModelBinding<T extends SelectionModelTypes = any> = SelectionModelPropertyPath | SelectionModelOptionValueFn<T>;
1241
+ export declare class SelectionModel<T extends SelectionModelTypes = unknown> {
1242
+ private readonly _destroy$;
1243
+ private _lastSelectionSetSubscription;
1244
+ get isSyncingSelectionFromValue(): boolean;
1245
+ private _isSyncingSelectionFromValue;
1246
+ get selection$(): Observable<T[]>;
1247
+ get selection(): T[];
1248
+ private readonly _selection$;
1249
+ get options$(): Observable<T[]>;
1250
+ get options(): T[];
1251
+ private readonly _options$;
1252
+ readonly optionsSignal: import("@angular/core").Signal<T[] | undefined>;
1253
+ get valueBinding$(): Observable<SelectionModelBinding<T> | null>;
1254
+ get valueBinding(): SelectionModelBinding<T> | null;
1255
+ private readonly _valueBinding$;
1256
+ get keyBinding$(): Observable<SelectionModelBinding<T> | null>;
1257
+ get keyBinding(): SelectionModelBinding<T> | null;
1258
+ private readonly _keyBinding$;
1259
+ get labelBinding$(): Observable<SelectionModelBinding<T> | null>;
1260
+ get labelBinding(): SelectionModelBinding<T> | null;
1261
+ private readonly _labelBinding$;
1262
+ get disabledBinding$(): Observable<SelectionModelBinding<T> | null>;
1263
+ get disabledBinding(): SelectionModelBinding<T> | null;
1264
+ private readonly _disabledBinding$;
1265
+ get allowMultiple$(): Observable<boolean>;
1266
+ get allowMultiple(): boolean;
1267
+ private readonly _allowMultiple$;
1268
+ get filter$(): Observable<string>;
1269
+ get filter(): string;
1270
+ private readonly _filter$;
1271
+ readonly value$: Observable<unknown>;
1272
+ readonly filteredOptions$: Observable<T[]>;
1273
+ private readonly _optionsAndSelection$;
1274
+ constructor();
1275
+ setSelection(selection: T | T[]): this;
1276
+ setSelectionFromValue(value: unknown): void;
1277
+ /**
1278
+ * Applies `value` once options are available. Until then, and while applying it, `isSyncingSelectionFromValue` is `true`.
1279
+ * Any user selection change cancels a pending sync.
1280
+ */
1281
+ setSelectionFromValue$(value: unknown): void;
1282
+ setValueBinding(fnOrPropertyPath: SelectionModelBinding<T> | null): this;
1283
+ setKeyBinding(fnOrPropertyPath: SelectionModelBinding<T> | null): this;
1284
+ setLabelBinding(fnOrPropertyPath: SelectionModelBinding<T> | null): this;
1285
+ setDisabledBinding(fnOrPropertyPath: SelectionModelBinding<T> | null): this;
1286
+ setOptions(options: T[]): this;
1287
+ setOptionsFromQueryList(queryList: TypedQueryList<T>): this;
1288
+ setOptionsFromQueryList$(queryList$: Observable<TypedQueryList<T> | null | undefined>): this;
1289
+ setAllowMultiple(allowMultiple: boolean): this;
1290
+ setFilter(filter: string | null): void;
1291
+ reset(): void;
1292
+ trackByOptionKey: (option: T) => unknown;
1293
+ getOptionByValue$(value: unknown): Observable<T | undefined>;
1294
+ getOptionByLabel$(label: string): Observable<T | undefined>;
1295
+ getOptionByKey$(key: string): Observable<T | undefined>;
1296
+ isSelected$(option: T): Observable<boolean>;
1297
+ isDisabled$(option: T): Observable<boolean>;
1298
+ getLabel$(option: T): Observable<unknown>;
1299
+ getValue$(option: T): Observable<unknown>;
1300
+ getKey$(option: T): Observable<unknown>;
1301
+ getOptionByValue(value: unknown): T | undefined;
1302
+ getOptionByLabel(label: string): T | undefined;
1303
+ getOptionByKey(key: string): T | undefined;
1304
+ getOption(value: unknown, propertyPath?: SelectionModelBinding<T> | null, options?: T[]): T | undefined;
1305
+ getOptionByIndex(index: number, options?: T[]): T | null;
1306
+ getOptionByOffset(offset: number, index: number, config?: {
1307
+ loop?: boolean;
1308
+ clamp?: boolean;
1309
+ skipDisabled?: boolean;
1310
+ options?: T[];
1311
+ }): T | null;
1312
+ getFirstOption(options?: T[]): T | null;
1313
+ getLastOption(options?: T[]): T | null;
1314
+ getOptionIndex(option: T, options?: T[]): number | null;
1315
+ getNonMultipleSelectedOption(): T | null;
1316
+ getNonMultipleSelectedOptionIndex(): number | null;
1317
+ getNonMultipleOptionByOffsetFromSelected(offset: number, config?: {
1318
+ loop?: boolean;
1319
+ clamp?: boolean;
1320
+ }): T | null;
1321
+ getLabel(option: T): unknown;
1322
+ getValue(option: T): unknown;
1323
+ getKey(option: T): unknown;
1324
+ getDisabled(option: T): unknown;
1325
+ execFnOrGetOptionProperty(option: T, fnOrPropertyPath: SelectionModelBinding<T> | null): unknown;
1326
+ execFnOrGetOptionPropertyNullable(option: T, fnOrPropertyPath: SelectionModelBinding<T> | null): unknown;
1327
+ getOptionProperty(option: T, propertyPath: string | null): unknown;
1328
+ isSelected(option: T): boolean;
1329
+ isDisabled(option: T): boolean;
1330
+ getFilteredOptions(filter?: string, options?: T[]): T[];
1331
+ addSelectedOption(option: T): void;
1332
+ removeSelectedOption(option: T): void;
1333
+ clearSelectedOptions(): void;
1334
+ toggleSelectedOption(option: T): void;
1335
+ toggleAllSelectedOptions(): void;
1336
+ private _cancelPendingSelectionFromValue;
1337
+ }
1338
+ export declare class ActiveSelectionModel<T = unknown> {
1339
+ private readonly _destroy$;
1340
+ get selectionModel$(): import("rxjs").Observable<SelectionModel<T> | null>;
1341
+ get selectionModel(): SelectionModel<T> | null;
1342
+ private readonly _selectionModel$;
1343
+ get activeOption$(): import("rxjs").Observable<T | null>;
1344
+ get activeOption(): T | null;
1345
+ private readonly _activeOption$;
1346
+ constructor();
1347
+ setSelectionModel(selectionModel: SelectionModel<T> | null): this;
1348
+ setActiveOption(option: T | null): this;
1349
+ isOptionActive$(option: T): import("rxjs").Observable<boolean>;
1350
+ evaluateKeyboardEvent(event: KeyboardEvent, config?: {
1351
+ skipDisabled?: boolean;
1352
+ }): NonNullable<T> | null;
1353
+ private _resetActiveOptions;
1354
+ }
1355
+ export declare function switchQueryListChanges(): <T extends TypedQueryList<unknown> | null | undefined>(source: Observable<T>) => Observable<T>;
1356
+ export declare const nextFrame: (cb: () => void) => void;
1357
+ export declare const fromNextFrame: () => Observable<void>;
1358
+ export declare const forceReflow: (element?: HTMLElement) => number;
1359
+ interface FlipAnimationGroupConfig {
1360
+ /**
1361
+ * The elements to animate
1362
+ */
1363
+ elements: Array<HTMLElement | {
1364
+ element: HTMLElement;
1365
+ originElement?: HTMLElement;
1366
+ }>;
1367
+ /**
1368
+ * The duration of the animation in milliseconds
1369
+ * @default 250
1370
+ */
1371
+ duration?: number;
1372
+ /**
1373
+ * The easing function to use for the animation
1374
+ * @default 'cubic-bezier(0.4, 0, 0.2, 1)'
1375
+ */
1376
+ easing?: string;
1377
+ }
1378
+ export declare const createFlipAnimationGroup: (config: FlipAnimationGroupConfig) => {
1379
+ updateInit: () => void;
1380
+ play: () => void;
1381
+ cancel: () => void;
1382
+ onStart$: Observable<void[]>;
1383
+ onFinish$: Observable<void[]>;
1384
+ onCancel$: Observable<void[]>;
1385
+ };
1386
+ export interface FlipAnimationConfig {
1387
+ /**
1388
+ * The element to animate
1389
+ */
1390
+ element: HTMLElement;
1391
+ /**
1392
+ * The element to use as the origin for the animation
1393
+ * @default element
1394
+ */
1395
+ originElement?: HTMLElement;
1396
+ /**
1397
+ * The duration of the animation in milliseconds
1398
+ * @default 250
1399
+ */
1400
+ duration?: number;
1401
+ /**
1402
+ * The easing function to use for the animation
1403
+ * @default 'cubic-bezier(0.4, 0, 0.2, 1)'
1404
+ */
1405
+ easing?: string;
1406
+ }
1407
+ export declare const createFlipAnimation: (config: FlipAnimationConfig) => {
1408
+ updateInit: () => void;
1409
+ play: () => void;
1410
+ cancel: () => void;
1411
+ onStart$: Observable<void>;
1412
+ onFinish$: Observable<void>;
1413
+ onCancel$: Observable<void>;
1414
+ };
1415
+ export declare const clamp: (value: number, min?: number, max?: number) => number;
1416
+ /**
1417
+ * Stolen from klona to avoid adding a dependency
1418
+ * https://github.com/lukeed/klona
1419
+ *
1420
+ * MIT License
1421
+ *
1422
+ * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
1423
+ *
1424
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
1425
+ *
1426
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1427
+ *
1428
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1429
+ */
1430
+ export declare const clone: <T>(original: T) => T;
1431
+ export declare const createComponentId: (prefix: string) => string;
1432
+ export declare const hasCookie: (name: string) => boolean;
1433
+ export declare const getCookie: (name: string) => string | null | undefined;
1434
+ export declare const setCookie: (name: string, data: string, expiresInDays?: number, domain?: string | null, path?: string, sameSite?: "strict" | "none" | "lax") => void;
1435
+ export declare const deleteCookie: (name: string, path?: string, domain?: string | null) => void;
1436
+ export declare const getDomain: () => string | null;
1437
+ export declare const createDestroy: () => import("rxjs").Observable<boolean>;
1438
+ /**
1439
+ * Stolen from dequal to avoid adding a dependency
1440
+ * https://github.com/lukeed/dequal
1441
+ *
1442
+ * The MIT License (MIT)
1443
+ *
1444
+ * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
1445
+ *
1446
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
1447
+ * of this software and associated documentation files (the "Software"), to deal
1448
+ * in the Software without restriction, including without limitation the rights
1449
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1450
+ * copies of the Software, and to permit persons to whom the Software is
1451
+ * furnished to do so, subject to the following conditions:
1452
+ *
1453
+ * The above copyright notice and this permission notice shall be included in
1454
+ * all copies or substantial portions of the Software.
1455
+ *
1456
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1457
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1458
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1459
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1460
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1461
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1462
+ * THE SOFTWARE.
1463
+ */
1464
+ export declare const equal: (foo: any, bar: any) => boolean;
1465
+ export declare const cloneFormGroup: <T extends FormGroup<any>>(formGroup: T) => T;
1466
+ export declare const getFormGroupValue: <T extends FormGroup>(formGroup: T) => Record<string, unknown>;
1467
+ export declare const injectHostElement: <T = HTMLElement>() => T;
1468
+ export declare const injectTemplateRef: <C = unknown>() => TemplateRef<C>;
1469
+ export type CreateProviderOptions = {
1470
+ /**
1471
+ * Optional name for the provider, useful for debugging.
1472
+ * If not provided, the name will be a generated string.
1473
+ */
1474
+ name?: string;
1475
+ /**
1476
+ * Optional existing InjectionToken to also provide the created provider under.
1477
+ */
1478
+ extraInjectionToken?: InjectionToken<unknown>;
1479
+ };
1480
+ export type ProviderResult<T> = readonly [provide: () => Provider[], inject: {
1481
+ (): T;
1482
+ (options: InjectOptions & {
1483
+ optional?: false;
1484
+ }): T;
1485
+ (options: InjectOptions): T | null;
1486
+ }, token: InjectionToken<T>];
1487
+ export type StaticProviderResult<T> = readonly [provide: (valueOverride?: Partial<T>) => Provider[], inject: {
1488
+ (): T;
1489
+ (options: InjectOptions & {
1490
+ optional?: false;
1491
+ }): T;
1492
+ (options: InjectOptions): T | null;
1493
+ }, token: InjectionToken<T>];
1494
+ export type RootProviderResult<T> = readonly [inject: {
1495
+ (): T;
1496
+ (options: InjectOptions & {
1497
+ optional?: false;
1498
+ }): T;
1499
+ (options: InjectOptions): T | null;
1500
+ }, token: InjectionToken<T>];
1501
+ export declare const createProvider: <T>(factory: () => T, options?: CreateProviderOptions) => ProviderResult<T>;
1502
+ export declare const createRootProvider: <T>(factory: () => T, options?: CreateProviderOptions) => ProviderResult<T>;
1503
+ export declare const createStaticProvider: <T>(defaultValue?: T, options?: CreateProviderOptions) => StaticProviderResult<T>;
1504
+ export declare const createStaticRootProvider: <T>(defaultValue?: T, options?: CreateProviderOptions) => StaticProviderResult<T>;
1505
+ export declare const getIntersectionInfo: (intersections: IntersectionObserverEntry[]) => {
1506
+ partial: {
1507
+ hasAny: boolean;
1508
+ hasMultiple: boolean;
1509
+ first: {
1510
+ intersection: IntersectionObserverEntry;
1511
+ index: number;
1512
+ };
1513
+ last: {
1514
+ intersection: IntersectionObserverEntry;
1515
+ index: number;
1516
+ };
1517
+ biggest: {
1518
+ intersection: IntersectionObserverEntry;
1519
+ index: number;
1520
+ };
1521
+ };
1522
+ full: {
1523
+ hasAny: boolean;
1524
+ hasMultiple: boolean;
1525
+ first: {
1526
+ index: number;
1527
+ intersection: IntersectionObserverEntry | undefined;
1528
+ };
1529
+ last: {
1530
+ index: number;
1531
+ intersection: IntersectionObserverEntry | undefined;
1532
+ };
1533
+ };
1534
+ none: {
1535
+ first: {
1536
+ index: number;
1537
+ intersection: IntersectionObserverEntry | undefined;
1538
+ };
1539
+ last: {
1540
+ index: number;
1541
+ intersection: IntersectionObserverEntry | undefined;
1542
+ };
1543
+ };
1544
+ } | null;
1545
+ export declare class KeyPressManager {
1546
+ readonly key: number;
1547
+ private readonly _isKeyPressed$;
1548
+ private readonly _keyPressCount$;
1549
+ private readonly _stopTimeout$;
1550
+ constructor(key: number);
1551
+ isPressed(event: KeyboardEvent): boolean;
1552
+ clear(): void;
1553
+ }
1554
+ export declare const DISABLE_LOGGER_PARAM = "et-logger-quiet";
1555
+ export type CreateLoggerConfig = {
1556
+ scope: string;
1557
+ feature: string;
1558
+ };
1559
+ export declare const createLogger: (config: CreateLoggerConfig) => {
1560
+ log: (...args: unknown[]) => void;
1561
+ warn: (...args: unknown[]) => void;
1562
+ error: (...args: unknown[]) => void;
1563
+ };
1564
+ export declare const createMediaQueryObservable: (query: string) => Observable<{
1565
+ matches: boolean;
1566
+ query: string;
1567
+ }>;
1568
+ export declare const createMutationObservable: (config: {
1569
+ elements: HTMLElement | HTMLElement[];
1570
+ options?: MutationObserverInit & {
1571
+ styleIgnoreList?: string[];
1572
+ };
1573
+ }) => Observable<MutationRecord[]>;
1574
+ export declare const isObject: (value: unknown) => value is Record<string, unknown>;
1575
+ export declare const isArray: (value: unknown) => value is unknown[];
1576
+ export declare const getObjectProperty: (obj: Record<string, unknown>, prop: string) => unknown;
1577
+ type AttributeValueBinding = {
1578
+ render: boolean;
1579
+ value: boolean | string | number;
1580
+ };
1581
+ type AttributeRenderBinding = boolean;
1582
+ export type ReactiveAttributes = {
1583
+ attribute: string | string[];
1584
+ observable: Observable<AttributeValueBinding | AttributeRenderBinding>;
1585
+ eager?: boolean;
1586
+ elementRef?: ElementRef<HTMLElement>;
1587
+ };
1588
+ export interface ReactiveBindingResult {
1589
+ reset: () => void;
1590
+ remove: (...attributes: string[]) => void;
1591
+ push: (value: ReactiveAttributes) => void;
1592
+ }
1593
+ /**
1594
+ * @deprecated Use one of the following instead:
1595
+ * - `signalHostAttributes`
1596
+ * - `signalHostClasses`
1597
+ * - `signalHostStyles`
1598
+ * - `signalAttributes`
1599
+ * - `signalClasses`
1600
+ * - `signalStyles`
1601
+ *
1602
+ * Will be removed in v5.
1603
+ */
1604
+ export declare const createReactiveBindings: (...values: ReactiveAttributes[]) => ReactiveBindingResult;
1605
+ export declare const createResizeObservable: (config: {
1606
+ elements: HTMLElement | HTMLElement[];
1607
+ options?: ResizeObserverOptions;
1608
+ }) => Observable<ResizeObserverEntry[]>;
1609
+ export declare const round: (value: number, precision?: number) => number;
1610
+ export declare const RUNTIME_ERROR_NO_DATA = "__ET_NO_DATA__";
1611
+ export declare class RuntimeError<T extends number> extends Error {
1612
+ code: T;
1613
+ devOnly: boolean;
1614
+ data: unknown;
1615
+ constructor(code: T, message: null | false | string, devOnly?: boolean, data?: unknown);
1616
+ }
1617
+ export declare function formatRuntimeError<T extends number>(code: T, message: null | false | string, devOnly: boolean): string;
1618
+ export declare const elementCanScroll: (element: HTMLElement, direction?: "x" | "y") => boolean;
1619
+ export interface IsElementVisibleOptions {
1620
+ /**
1621
+ * The element to check if it is visible inside a container.
1622
+ */
1623
+ element?: HTMLElement | null;
1624
+ /**
1625
+ * The container to check if the element is visible inside.
1626
+ * @default document.documentElement
1627
+ */
1628
+ container?: HTMLElement | null;
1629
+ /**
1630
+ * The container's rect to check if the element is visible inside. Can be supplied to reduce the amount of DOM reads.
1631
+ * @default container.getBoundingClientRect()
1632
+ */
1633
+ containerRect?: DOMRect | null;
1634
+ /**
1635
+ * The element's rect. Can be supplied to reduce the amount of DOM reads.
1636
+ * @default container.getBoundingClientRect()
1637
+ */
1638
+ elementRect?: DOMRect | null;
1639
+ }
1640
+ export interface CurrentElementVisibility {
1641
+ /**
1642
+ * Whether the element is visible in the inline direction.
1643
+ */
1644
+ inline: boolean;
1645
+ /**
1646
+ * Whether the element is visible in the block direction.
1647
+ */
1648
+ block: boolean;
1649
+ /**
1650
+ * The percentage of the element that is visible in the inline direction.
1651
+ */
1652
+ inlineIntersection: number;
1653
+ /**
1654
+ * The percentage of the element that is visible in the block direction.
1655
+ */
1656
+ blockIntersection: number;
1657
+ /**
1658
+ * Whether the element is intersecting the container.
1659
+ */
1660
+ isIntersecting: boolean;
1661
+ /**
1662
+ * The ratio of the element that is intersecting the container.
1663
+ */
1664
+ intersectionRatio: number;
1665
+ /**
1666
+ * The element that is being checked for visibility.
1667
+ */
1668
+ element: HTMLElement;
1669
+ }
1670
+ export declare const isElementVisible: (options: IsElementVisibleOptions) => CurrentElementVisibility | null;
1671
+ export declare const getElementScrollCoordinates: (options: ScrollToElementOptions) => ScrollToOptions;
1672
+ export interface ScrollToElementOptions {
1673
+ /**
1674
+ * The element to scroll to.
1675
+ */
1676
+ element?: HTMLElement | null;
1677
+ /**
1678
+ * The scroll container to scroll to the element in.
1679
+ * @default document.documentElement
1680
+ */
1681
+ container?: HTMLElement | null;
1682
+ /**
1683
+ * The direction to scroll in.
1684
+ * @default 'both'
1685
+ */
1686
+ direction?: 'inline' | 'block' | 'both';
1687
+ /**
1688
+ * The origin of the element to scroll to.
1689
+ * @default 'nearest'
1690
+ */
1691
+ origin?: 'start' | 'end' | 'center' | 'nearest';
1692
+ /**
1693
+ * The scroll behavior.
1694
+ * @default 'smooth'
1695
+ */
1696
+ behavior?: ScrollBehavior;
1697
+ /**
1698
+ * The scroll inline-margin
1699
+ * @default 0
1700
+ */
1701
+ scrollInlineMargin?: number;
1702
+ /**
1703
+ * The scroll block-margin
1704
+ * @default 0
1705
+ */
1706
+ scrollBlockMargin?: number;
1707
+ }
1708
+ export declare const scrollToElement: (options: ScrollToElementOptions) => void;
1709
+ type SignalElementBindingComplexType = HTMLElement | ElementRef<HTMLElement> | QueryList<ElementRef<HTMLElement> | HTMLElement> | Array<ElementRef<HTMLElement> | HTMLElement> | null | undefined;
1710
+ type SignalElementBindingType = HTMLElement | ElementRef<HTMLElement> | Observable<SignalElementBindingComplexType> | Signal<SignalElementBindingComplexType> | QueryList<ElementRef<HTMLElement> | HTMLElement> | ElementSignal;
1711
+ type ElementSignal = Signal<{
1712
+ /** @deprecated Always use currentElements */
1713
+ currentElement: HTMLElement | null;
1714
+ /** @deprecated Always use previousElements */
1715
+ previousElement: HTMLElement | null;
1716
+ currentElements: HTMLElement[];
1717
+ previousElements: HTMLElement[];
1718
+ }>;
1719
+ export interface BuildSignalEffectsConfig<T extends Record<string, Signal<unknown>>> {
1720
+ /** The tokens to apply and their signal value */
1721
+ tokenMap: T;
1722
+ /** This function will be invoked for elements that were removed from the signal effects */
1723
+ cleanupFn: (el: HTMLElement, tokens: string[]) => void;
1724
+ /** This function will be invoked for elements that were added to the signal effects or when their signal value changes */
1725
+ updateFn: (el: HTMLElement, tokens: string[], conditionResult: unknown) => void;
1726
+ }
1727
+ export declare const buildSignalEffects: <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, config: BuildSignalEffectsConfig<T>) => {
1728
+ remove: (tokens: string) => void;
1729
+ removeMany: (tokens: string[]) => void;
1730
+ has: (tokens: string) => boolean;
1731
+ push: (tokens: string, signal: Signal<unknown>) => void;
1732
+ pushMany: (map: Record<string, Signal<unknown>>) => void;
1733
+ };
1734
+ export declare const signalIsRendered: () => Signal<boolean>;
1735
+ export declare const signalClasses: <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, classMap: T) => {
1736
+ remove: (tokens: string) => void;
1737
+ removeMany: (tokens: string[]) => void;
1738
+ has: (tokens: string) => boolean;
1739
+ push: (tokens: string, signal: Signal<unknown>) => void;
1740
+ pushMany: (map: Record<string, Signal<unknown>>) => void;
1741
+ };
1742
+ export declare const signalHostClasses: <T extends Record<string, Signal<unknown>>>(classMap: T) => {
1743
+ remove: (tokens: string) => void;
1744
+ removeMany: (tokens: string[]) => void;
1745
+ has: (tokens: string) => boolean;
1746
+ push: (tokens: string, signal: Signal<unknown>) => void;
1747
+ pushMany: (map: Record<string, Signal<unknown>>) => void;
1748
+ };
1749
+ export declare const signalAttributes: <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, attributeMap: T) => {
1750
+ remove: (tokens: string) => void;
1751
+ removeMany: (tokens: string[]) => void;
1752
+ has: (tokens: string) => boolean;
1753
+ push: (tokens: string, signal: Signal<unknown>) => void;
1754
+ pushMany: (map: Record<string, Signal<unknown>>) => void;
1755
+ };
1756
+ export declare const signalHostAttributes: <T extends Record<string, Signal<unknown>>>(attributeMap: T) => {
1757
+ remove: (tokens: string) => void;
1758
+ removeMany: (tokens: string[]) => void;
1759
+ has: (tokens: string) => boolean;
1760
+ push: (tokens: string, signal: Signal<unknown>) => void;
1761
+ pushMany: (map: Record<string, Signal<unknown>>) => void;
1762
+ };
1763
+ export declare const signalStyles: <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, styleMap: T) => {
1764
+ remove: (tokens: string) => void;
1765
+ removeMany: (tokens: string[]) => void;
1766
+ has: (tokens: string) => boolean;
1767
+ push: (tokens: string, signal: Signal<unknown>) => void;
1768
+ pushMany: (map: Record<string, Signal<unknown>>) => void;
1769
+ };
1770
+ export declare const signalHostStyles: <T extends Record<string, Signal<unknown>>>(styleMap: T) => {
1771
+ remove: (tokens: string) => void;
1772
+ removeMany: (tokens: string[]) => void;
1773
+ has: (tokens: string) => boolean;
1774
+ push: (tokens: string, signal: Signal<unknown>) => void;
1775
+ pushMany: (map: Record<string, Signal<unknown>>) => void;
1776
+ };
1777
+ export interface LogicalSize {
1778
+ inlineSize: number;
1779
+ blockSize: number;
1780
+ }
1781
+ export type ElementRect = {
1782
+ bottom: number;
1783
+ height: number;
1784
+ left: number;
1785
+ right: number;
1786
+ top: number;
1787
+ width: number;
1788
+ x: number;
1789
+ y: number;
1790
+ };
1791
+ export type ElementSize = {
1792
+ width: number;
1793
+ height: number;
1794
+ };
1795
+ export declare const boundingClientRectToElementRect: (rect: DOMRectReadOnly) => ElementRect;
1796
+ export declare const createElementDimensions: (el: HTMLElement | null, rect?: DOMRect) => NullableElementDimensions;
1797
+ export type ElementDimensions = {
1798
+ rect: () => ElementRect;
1799
+ client: ElementSize;
1800
+ scroll: ElementSize;
1801
+ offset: ElementSize;
1802
+ };
1803
+ export type NullableElementDimensions = { [K in keyof ElementDimensions]: ElementDimensions[K] | null; };
1804
+ export declare const signalElementDimensions: (el: SignalElementBindingType) => Signal<NullableElementDimensions>;
1805
+ export declare const signalHostElementDimensions: () => Signal<NullableElementDimensions>;
1806
+ export declare const signalElementMutations: (el: SignalElementBindingType, options?: MutationObserverInit) => Signal<MutationRecord | null>;
1807
+ export declare const signalHostElementMutations: (options?: MutationObserverInit) => Signal<MutationRecord | null>;
1808
+ export type SignalElementScrollStateOptions = {
1809
+ /** The initial scroll position to scroll to. Once a truthy value get's emitted, all further values will be ignored. */
1810
+ initialScrollPosition?: Signal<ScrollToOptions | null>;
1811
+ };
1812
+ export type ElementScrollState = {
1813
+ canScroll: boolean;
1814
+ canScrollHorizontally: boolean;
1815
+ canScrollVertically: boolean;
1816
+ elementDimensions: NullableElementDimensions;
1817
+ };
1818
+ export declare const areScrollStatesEqual: (a: ElementScrollState, b: ElementScrollState) => boolean;
1819
+ export declare const signalElementScrollState: (el: SignalElementBindingType, options?: SignalElementScrollStateOptions) => Signal<ElementScrollState>;
1820
+ export declare const signalHostElementScrollState: () => Signal<ElementScrollState>;
1821
+ export type SignalElementIntersectionOptions = Omit<IntersectionObserverInit, 'root'> & {
1822
+ root?: SignalElementBindingType;
1823
+ enabled?: Signal<boolean>;
1824
+ };
1825
+ export declare const signalElementIntersection: (el: SignalElementBindingType, options?: SignalElementIntersectionOptions) => Signal<IntersectionObserverEntry[]>;
1826
+ export declare const signalHostElementIntersection: (options?: SignalElementIntersectionOptions) => Signal<IntersectionObserverEntry[]>;
1827
+ export declare const signalElementChildren: (el: SignalElementBindingType) => Signal<HTMLElement[]>;
1828
+ export declare const previousSignalValue: <T>(signal: Signal<T>) => Signal<T | undefined>;
1829
+ export type SyncSignalOptions = {
1830
+ /**
1831
+ * If true, the target signal will not be updated with the source signal's value in a sync operation.
1832
+ * This should be set to true for signals that need to be initialized first before syncing (eg. required inputs)
1833
+ * @default false
1834
+ */
1835
+ skipSyncRead?: boolean;
1836
+ /**
1837
+ * If true, the first time the effect will be triggered will be skipped.
1838
+ * @default false
1839
+ */
1840
+ skipFirstRun?: boolean;
1841
+ };
1842
+ export declare const syncSignal: <T>(from: Signal<T>, to: WritableSignal<T>, options?: SyncSignalOptions) => EffectRef;
1843
+ export interface ControlValueSignalOptions {
1844
+ debounceTime?: number;
1845
+ /**
1846
+ * @default false
1847
+ */
1848
+ debounceFirst?: boolean;
1849
+ }
1850
+ export declare const controlValueSignal: <TControlInput extends Signal<AbstractControl | null> | AbstractControl, TControl extends (TControlInput extends Signal<infer TSignalControl> ? TSignalControl : TControlInput)>(control: TControlInput, options?: ControlValueSignalOptions) => Signal<ReturnType<NonNullable<TControl>["getRawValue"]> | null>;
1851
+ /**
1852
+ * The first item in the pair is the previous value and the second item is the current value.
1853
+ */
1854
+ export declare const controlValueSignalWithPrevious: <T extends AbstractControl>(control: T, options?: ControlValueSignalOptions) => Signal<any[] | [ReturnType<NonNullable<T extends Signal<infer TSignalControl> ? TSignalControl : T>["getRawValue"]> | null, ReturnType<NonNullable<T extends Signal<infer TSignalControl> ? TSignalControl : T>["getRawValue"]> | null]>;
1855
+ /**
1856
+ * @deprecated Use `controlValueSignal` instead with `debounceTime` option.
1857
+ */
1858
+ export interface DebouncedControlValueSignalOptions {
1859
+ /**
1860
+ * @default 300
1861
+ */
1862
+ debounceTime?: number;
1863
+ }
1864
+ /**
1865
+ * @deprecated Use `controlValueSignal` instead with `debounceTime` set to `300` and `debounceFirst` set to `true`.
1866
+ */
1867
+ export declare const debouncedControlValueSignal: <T extends FormControl>(control: T, options?: DebouncedControlValueSignalOptions) => Signal<ReturnType<NonNullable<T extends Signal<infer TSignalControl> ? TSignalControl : T>["getRawValue"]> | null>;
1868
+ export type InjectUtilConfig = {
1869
+ /** The injector to use for the injection. Must be provided if the function is not called from within a injection context. */
1870
+ injector?: Injector;
1871
+ };
1872
+ export type InjectUtilTransformConfig<In, Out> = {
1873
+ /**
1874
+ * A transform function similar to the `transform` function in Angular input bindings.
1875
+ * Can be used to transform the value before it is returned.
1876
+ * E.g. transforming `"true"` to `true` for a boolean attribute.
1877
+ */
1878
+ transform?: (value: In) => Out;
1879
+ };
1880
+ export declare const transformOrReturn: <In, Out>(src: Signal<In>, config?: InjectUtilTransformConfig<In, Out>) => Signal<Out>;
1881
+ /** Inject the current router event */
1882
+ export declare const injectRouterEvent: () => Signal<import("@angular/router").Event | null>;
1883
+ /**
1884
+ * Inject the current url.
1885
+ * The url includes query params as well as the fragment. Use `injectRoute` instead if you are not intrusted in those.
1886
+ * @example "/my-page?query=1&param=true#fragment"
1887
+ */
1888
+ export declare const injectUrl: () => Signal<string>;
1889
+ /**
1890
+ * Inject the current route
1891
+ * @example "/my-page"
1892
+ */
1893
+ export declare const injectRoute: () => Signal<string>;
1894
+ /**
1895
+ * Inject the complete router state. This includes the current route data, path params, query params, title and fragment.
1896
+ */
1897
+ export declare const injectRouterState: () => Signal<RouterState>;
1898
+ /** Inject a signal containing the current route fragment (the part after the # inside the url if present) */
1899
+ export declare const injectFragment: <T = string | null>(config?: InjectUtilConfig & InjectUtilTransformConfig<string | null, T>) => Signal<T>;
1900
+ /** Inject all currently available query parameters as a signal */
1901
+ export declare const injectQueryParams: () => Signal<import("@angular/router").Params>;
1902
+ /** Inject all currently available route data as a signal */
1903
+ export declare const injectRouteData: () => Signal<import("@angular/router").Data>;
1904
+ /** Inject the current route title as a signal */
1905
+ export declare const injectRouteTitle: <T = string | null>(config?: InjectUtilTransformConfig<string | null, T>) => Signal<T>;
1906
+ /** Inject all currently available path parameters as a signal */
1907
+ export declare const injectPathParams: () => Signal<import("@angular/router").Params>;
1908
+ export type InjectQueryParamConfig<T> = InjectUtilTransformConfig<string | null, T> & {
1909
+ /**
1910
+ * If true, the initial value will be read from the browser's url.
1911
+ * Note that this will not work with arrays or complex objects.
1912
+ */
1913
+ requireSync?: boolean;
1914
+ };
1915
+ /** Inject a specific query parameter as a signal */
1916
+ export declare const injectQueryParam: <T = string | null>(key: string, config?: InjectQueryParamConfig<T>) => Signal<T>;
1917
+ /** Inject a specific route data item as a signal */
1918
+ export declare const injectRouteDataItem: <T = unknown>(key: string, config?: InjectUtilTransformConfig<unknown, T>) => Signal<T>;
1919
+ /** Inject a specific path parameter as a signal */
1920
+ export declare const injectPathParam: <T = string | null>(key: string, config?: InjectUtilTransformConfig<string | null, T>) => Signal<T>;
1921
+ /**
1922
+ * Inject query params that changed during navigation. Unchanged query params will be ignored.
1923
+ * Removed query params will be represented by the symbol `ET_PROPERTY_REMOVED`.
1924
+ */
1925
+ export declare const injectQueryParamChanges: () => Signal<Record<string, unknown>>;
1926
+ /**
1927
+ * Inject path params that changed during navigation. Unchanged path params will be ignored.
1928
+ * Removed path params will be represented by the symbol `ET_PROPERTY_REMOVED`.
1929
+ */
1930
+ export declare const injectPathParamChanges: () => Signal<Record<string, unknown>>;
1931
+ export declare const createIsRenderedSignal: () => {
1932
+ state: WritableSignal<boolean>;
1933
+ bind: () => EffectRef;
1934
+ };
1935
+ export declare const createCanAnimateSignal: () => {
1936
+ state: Signal<boolean>;
1937
+ };
1938
+ export type ElementLastScrollDirectionType = 'up' | 'down' | 'left' | 'right';
1939
+ export type ElementLastScrollDirection = {
1940
+ type: ElementLastScrollDirectionType;
1941
+ time: number;
1942
+ };
1943
+ export declare const signalElementLastScrollDirection: (el: SignalElementBindingType) => Signal<ElementLastScrollDirection | null>;
1944
+ export declare const signalHostElementLastScrollDirection: () => Signal<ElementLastScrollDirection | null>;
1945
+ export type CursorDragScrollDirection = 'horizontal' | 'vertical' | 'both';
1946
+ export type MaybeSignal<T> = T | Signal<T>;
1947
+ export declare const maybeSignalValue: <T>(value: MaybeSignal<T>) => T;
1948
+ export type CursorDragScrollOptions = {
1949
+ /** If true, cursor drag scrolling will be enabled. */
1950
+ enabled?: Signal<boolean>;
1951
+ /** The allowed scroll direction. */
1952
+ allowedDirection?: MaybeSignal<CursorDragScrollDirection>;
1953
+ };
1954
+ /** A function to apply cursor drag scroll behavior to an element. */
1955
+ export declare const useCursorDragScroll: (el: SignalElementBindingType, options?: CursorDragScrollOptions) => {
1956
+ isDragging: Signal<boolean>;
1957
+ currentDragAmount: Signal<{
1958
+ x: number;
1959
+ y: number;
1960
+ }>;
1961
+ };
1962
+ /**
1963
+ * A computed that will only be reactive until the source signal contains a truthy value.
1964
+ * All subsequent changes inside the computation will be ignored.
1965
+ */
1966
+ export declare const computedTillTruthy: <T>(source: Signal<T>) => Signal<T | null>;
1967
+ /**
1968
+ * A computed that will only be reactive until the source signal contains a falsy value.
1969
+ * All subsequent changes inside the computation will be ignored.
1970
+ */
1971
+ export declare const computedTillFalsy: <T>(source: Signal<T>) => Signal<T | null>;
1972
+ /**
1973
+ * A writeable signal that will be set to the provided value once all inputs are set.
1974
+ * During that time, the signal will be set to `null`.
1975
+ */
1976
+ export declare const deferredSignal: <T extends () => unknown>(valueFn: T) => WritableSignal<ReturnType<T> | null>;
1977
+ /** Inject a signal containing a boolean value indicating if the viewport is xs */
1978
+ export declare const injectIsXs: () => Signal<boolean>;
1979
+ /** Inject a signal containing a boolean value indicating if the viewport is sm */
1980
+ export declare const injectIsSm: () => Signal<boolean>;
1981
+ /** Inject a signal containing a boolean value indicating if the viewport is md */
1982
+ export declare const injectIsMd: () => Signal<boolean>;
1983
+ /** Inject a signal containing a boolean value indicating if the viewport is lg */
1984
+ export declare const injectIsLg: () => Signal<boolean>;
1985
+ /** Inject a signal containing a boolean value indicating if the viewport is xl */
1986
+ export declare const injectIsXl: () => Signal<boolean>;
1987
+ /** Inject a signal containing a boolean value indicating if the viewport is 2xl */
1988
+ export declare const injectIs2Xl: () => Signal<boolean>;
1989
+ /**
1990
+ * Inject a boolean value indicating if the viewport is matching the provided options.
1991
+ * This value is not reactive. If you want to react to changes, use the {@link injectObserveBreakpoint} function instead.
1992
+ */
1993
+ export declare const injectBreakpointIsMatched: (options: {
1994
+ min?: number | Breakpoint;
1995
+ max?: number | Breakpoint;
1996
+ }) => boolean;
1997
+ /**
1998
+ * Inject a signal containing a boolean value indicating if the viewport is matching the provided options.
1999
+ */
2000
+ export declare const injectObserveBreakpoint: (options: {
2001
+ min?: number | Breakpoint;
2002
+ max?: number | Breakpoint;
2003
+ }) => Signal<boolean>;
2004
+ /** Inject a signal containing the current breakpoint. */
2005
+ export declare const injectCurrentBreakpoint: () => Signal<"xs" | "sm" | "md" | "lg" | "xl" | "2xl">;
2006
+ /** Inject a signal that indicates if the user is using a portrait display */
2007
+ export declare const injectIsPortrait: () => Signal<boolean>;
2008
+ /** Inject a signal that indicates if the user is using a landscape display */
2009
+ export declare const injectIsLandscape: () => Signal<boolean>;
2010
+ /** Inject a signal containing the current display orientation */
2011
+ export declare const injectDisplayOrientation: () => Signal<"portrait" | "landscape">;
2012
+ /** Inject a signal that indicates if the device has a touch input */
2013
+ export declare const injectHasTouchInput: () => Signal<boolean>;
2014
+ /** Inject a signal that indicates if the device has a fine input (mouse or stylus) */
2015
+ export declare const injectHasPrecisionInput: () => Signal<boolean>;
2016
+ /** Inject a signal containing the current device input type */
2017
+ export declare const injectDeviceInputType: () => Signal<"touch" | "mouse">;
2018
+ /** Inject a signal containing a boolean value indicating if the user can hover (eg. using a mouse) */
2019
+ export declare const injectCanHover: () => Signal<boolean>;
2020
+ /**
2021
+ * @deprecated Will be removed in v5. Scroll blocking for overlays is build in by default.
2022
+ */
2023
+ export declare class SmartBlockScrollStrategy implements ScrollStrategy {
2024
+ #private;
2025
+ private _previousHTMLStyles;
2026
+ private _previousScrollPosition;
2027
+ private _isEnabled;
2028
+ private _urlSubscription;
2029
+ private _resizeSubscription;
2030
+ private _didNavigate;
2031
+ attach(): void;
2032
+ enable(): void;
2033
+ disable(): void;
2034
+ private _canBeEnabled;
2035
+ }
2036
+ export declare const isPrimitiveArray: (value: unknown) => value is Array<Primitive>;
2037
+ export declare const isObjectArray: (value: unknown) => value is Array<Record<string, unknown>>;
2038
+ export declare const isEmptyArray: (value: unknown) => value is [];
2039
+ export declare const provideViewportConfig: (viewportConfig: ViewportConfig) => {
2040
+ provide: typeof VIEWPORT_CONFIG;
2041
+ useValue: typeof viewportConfig;
2042
+ };
2043
+ export declare const AT_LEAST_ONE_REQUIRED = "atLeastOneRequired";
2044
+ export interface ValidateAtLeastOneRequiredConfig {
2045
+ /**
2046
+ * Keys of form controls to validate in the supplied form group
2047
+ */
2048
+ keys: string[];
2049
+ /**
2050
+ * If true, the value `false` will result in a validation error
2051
+ * @default false
2052
+ */
2053
+ checkFalse?: boolean;
2054
+ }
2055
+ export declare const ValidateAtLeastOneRequired: (config: ValidateAtLeastOneRequiredConfig) => ValidatorFn;
2056
+ export declare const IS_ARRAY_NOT_EMPTY = "isArrayNotEmpty";
2057
+ export declare const IsArrayNotEmpty: (control: AbstractControl) => ValidationErrors | null;
2058
+ export declare const IS_EMAIL = "isEmail";
2059
+ export declare const IsEmail: (control: AbstractControl) => ValidationErrors | null;
2060
+ export declare const MUST_MATCH = "mustMatch";
2061
+ export declare const MustMatch: (controlName: string, matchingControlName: string) => (formGroup: AbstractControl) => {
2062
+ mustMatch: boolean;
2063
+ } | null;
2064
+ export declare const Validators: {
2065
+ readonly MustMatch: (controlName: string, matchingControlName: string) => (formGroup: import("@angular/forms").AbstractControl) => {
2066
+ mustMatch: boolean;
2067
+ } | null;
2068
+ readonly IsEmail: (control: import("@angular/forms").AbstractControl) => import("@angular/forms").ValidationErrors | null;
2069
+ readonly IsArrayNotEmpty: (control: import("@angular/forms").AbstractControl) => import("@angular/forms").ValidationErrors | null;
2070
+ readonly ValidateAtLeastOneRequired: (config: import("@ethlete/core").ValidateAtLeastOneRequiredConfig) => import("@angular/forms").ValidatorFn;
2071
+ };
2072
+ export {};