@ethlete/components 1.0.0-next.35 → 1.0.0-next.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,15 +1,15 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { TemplateRef, ElementRef, InjectionToken, Signal, Type, InputSignal, WritableSignal, Injector, Provider, ViewContainerRef, Binding, StaticProvider, OnInit, ComponentRef, ModelSignal, OnDestroy, computed, EnvironmentInjector, ApplicationRef } from '@angular/core';
3
3
  import * as _ethlete_components from '@ethlete/components';
4
- import { MatchListViewUnion, MatchStatus, MediaView, ParticipantViewUnion, RoundStageStructureWithMatchesView, RoundStageStructureView, RoundType, GroupRankingView, PlacementView } from '@ethlete/types';
5
4
  import * as _ethlete_core from '@ethlete/core';
6
5
  import { ColorTheme, JsonLD, ScrollObserverDirective, ScrollToElementOptions, AnimatableDirective, OverlayRuntimeCloseSource, OverlayRuntimeCloseGuard, OverlayRuntimePositionStrategy, OverlayRuntimeCloseEvent, OverlayRuntimeRef, Breakpoint, AnimatedLifecycleDirective, AnimatedSizeAxis, ResizeEdge, DragHandleDirective, ResizeMoveEvent, CreateUnsavedChangesTrackerConfig, UnsavedChangesTrackerRef, AnimatedLifecycleState, OverlayRuntimeShiftOptions, AngularRenderer, OverlayRuntimeAnimationDelegate, ConsentHandler, LabelsSource, DragMoveEvent, ProvideColorDirective } from '@ethlete/core';
6
+ import { MatchListViewUnion, MatchStatus, MediaView, ParticipantViewUnion, RoundStageStructureWithMatchesView, RoundStageStructureView, RoundType, GroupRankingView, PlacementView } from '@ethlete/types';
7
7
  import * as _angular_platform_browser from '@angular/platform-browser';
8
8
  import { Locale } from 'date-fns';
9
9
  import * as _angular_forms_signals from '@angular/forms/signals';
10
10
  import { FieldTree, ValidationError, FormValueControl, FormCheckboxControl, PathKind, SchemaPath, SchemaPathRules, validate } from '@angular/forms/signals';
11
11
  import * as _ethlete_query from '@ethlete/query';
12
- import { QueryFormFields, QueryFormSignals, QueryFormModel, AnyQueryCreator, RequestArgs, QueryArgsOf, ResponseType, QueryErrorResponse, RequestError, QueryArgs, QueryCreator, AnyV2QueryCreator, AnyLegacyQueryCreator, QueryDataOf, ReadonlyQuery, QueryRepositoryEvent, QueryRefreshCause, QueryDevtoolsEntry, Query, QueryDevtoolsRun, QueryRepository, QueryRepositoryCacheEntry, QueryKeyLockState, QueryClient, HttpRequestRetryState, HttpRequestLoadingProgressState, QueryDevtoolsStats, QueryDevtoolsStatsHandle, AnyQueryStack, AnyPagedQueryStack, QuerySequence, AnyBearerAuthProvider, WebSocketDevtoolsHandle, QueryDevtoolsFormHandle, QuerySequenceStatus, AnyQuerySnapshot, QueryDevtoolsFeature, AnyV2Query, AnyLegacyQuery, AnyQueryCollection } from '@ethlete/query';
12
+ import { QueryFormFields, QueryFormSignals, QueryFormModel, AnyQueryCreator, RequestArgs, QueryArgsOf, ResponseType, QueryErrorResponse, RequestError, QueryArgs, QueryCreator, AnyV2QueryCreator, AnyLegacyQueryCreator, QueryDataOf, ReadonlyQuery, JsonPath, QueryDevtoolsOverridesRecorder, QueryRefreshCause, Query, QueryRepositoryCacheEntry, HttpRequestRetryState, HttpRequestLoadingProgressState, QueryDevtoolsStats, QueryDevtoolsStatsHandle, QueryDevtoolsEntry, QueryRepository, QueryKeyLockState, QueryClient, AnyQueryStack, AnyPagedQueryStack, QuerySequence, QueryDevtoolsRun, AnyBearerAuthProvider, WebSocketDevtoolsHandle, WebSocketDevtoolsMessage, QueryDevtoolsFormHandle, QuerySequenceStatus, AnyQuerySnapshot, QueryDevtoolsFeature, AnyV2Query, AnyLegacyQuery, AnyQueryCollection } from '@ethlete/query';
13
13
  import * as rxjs from 'rxjs';
14
14
  import { Observable } from 'rxjs';
15
15
  import { Placement, OffsetOptions, Padding } from '@floating-ui/dom';
@@ -35,6 +35,7 @@ declare const ACCORDION_ERROR_CODES: {
35
35
  */
36
36
  declare class AccordionPanelDirective {
37
37
  protected accordion: _ethlete_components.AccordionDirective | null;
38
+ private readonly hostElement;
38
39
  constructor();
39
40
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionPanelDirective, never>;
40
41
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AccordionPanelDirective, "[etAccordionPanel]", ["etAccordionPanel"], {}, {}, never, never, true, never>;
@@ -55,6 +56,7 @@ declare class AccordionPanelDirective {
55
56
  declare class AccordionLabelDirective {
56
57
  private accordion;
57
58
  templateRef: TemplateRef<unknown>;
59
+ private readonly hostElement;
58
60
  constructor();
59
61
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionLabelDirective, never>;
60
62
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AccordionLabelDirective, "ng-template[etAccordionLabel]", ["etAccordionLabel"], {}, {}, never, never, true, never>;
@@ -66,6 +68,7 @@ declare class AccordionLabelDirective {
66
68
  declare class AccordionHintDirective {
67
69
  private accordion;
68
70
  templateRef: TemplateRef<unknown>;
71
+ private readonly hostElement;
69
72
  constructor();
70
73
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionHintDirective, never>;
71
74
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AccordionHintDirective, "ng-template[etAccordionHint]", ["etAccordionHint"], {}, {}, never, never, true, never>;
@@ -89,6 +92,7 @@ declare class AccordionHintDirective {
89
92
  declare class AccordionContentDirective {
90
93
  private accordion;
91
94
  templateRef: TemplateRef<unknown>;
95
+ private readonly hostElement;
92
96
  constructor();
93
97
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionContentDirective, never>;
94
98
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AccordionContentDirective, "ng-template[etAccordionContent]", ["etAccordionContent"], {}, {}, never, never, true, never>;
@@ -314,6 +318,142 @@ declare class AccordionComponent {
314
318
  /** The accordion, its group, the slot templates, and the headless directives to build your own. */
315
319
  declare const ACCORDION_IMPORTS: readonly [typeof AccordionComponent, typeof AccordionGroupComponent, typeof AccordionLabelDirective, typeof AccordionHintDirective, typeof AccordionContentDirective, typeof AccordionDirective, typeof AccordionTriggerDirective, typeof AccordionPanelDirective, typeof AccordionGroupDirective];
316
320
 
321
+ declare const AVATAR_SIZES: {
322
+ readonly XS: "xs";
323
+ readonly SM: "sm";
324
+ readonly MD: "md";
325
+ readonly LG: "lg";
326
+ readonly XL: "xl";
327
+ };
328
+ type AvatarSize = (typeof AVATAR_SIZES)[keyof typeof AVATAR_SIZES];
329
+ declare const AVATAR_SHAPES: {
330
+ readonly CIRCLE: "circle";
331
+ readonly SQUARE: "square";
332
+ };
333
+ type AvatarShape = (typeof AVATAR_SHAPES)[keyof typeof AVATAR_SHAPES];
334
+ /**
335
+ * A user/entity representation: an image, falling back to initials derived from `name`, falling back
336
+ * to projected content (e.g. an icon) when neither is set. A failed image load falls back the same way.
337
+ *
338
+ * @example
339
+ * <et-avatar src="/jane.jpg" name="Jane Doe" />
340
+ * <et-avatar name="Jane Doe" color="brand" />
341
+ * <et-avatar><et-icon [definition]="USER_ICON" /></et-avatar>
342
+ */
343
+ declare class AvatarComponent {
344
+ src: _angular_core.InputSignal<string | null>;
345
+ name: _angular_core.InputSignal<string | null>;
346
+ size: _angular_core.InputSignal<AvatarSize>;
347
+ shape: _angular_core.InputSignal<AvatarShape>;
348
+ protected initials: _angular_core.Signal<string | null>;
349
+ private imageFailed;
350
+ protected imageVisible: _angular_core.Signal<boolean>;
351
+ protected markImageFailed(): void;
352
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarComponent, never>;
353
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarComponent, "et-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
354
+ }
355
+
356
+ /**
357
+ * Overlaps a row of `et-avatar`s into a stack, each one ringed so it reads apart from its neighbor.
358
+ * Project the avatars you want shown, in order - including any "+N" overflow indicator, itself just
359
+ * another `et-avatar` with initials text.
360
+ *
361
+ * @example
362
+ * <et-avatar-group>
363
+ * <et-avatar name="Jane Doe" />
364
+ * <et-avatar name="John Smith" />
365
+ * <et-avatar>+5</et-avatar>
366
+ * </et-avatar-group>
367
+ */
368
+ declare class AvatarGroupComponent {
369
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarGroupComponent, never>;
370
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarGroupComponent, "et-avatar-group", never, {}, {}, never, ["*"], true, never>;
371
+ }
372
+
373
+ declare const AVATAR_IMPORTS: readonly [typeof AvatarComponent, typeof AvatarGroupComponent];
374
+
375
+ declare const BADGE_VARIANTS: {
376
+ readonly FILLED: "filled";
377
+ readonly TONAL: "tonal";
378
+ readonly OUTLINE: "outline";
379
+ };
380
+ type BadgeVariant = (typeof BADGE_VARIANTS)[keyof typeof BADGE_VARIANTS];
381
+ /**
382
+ * A small, non-interactive pill for a status word or a count - "Active", "Beta", "3 new". Unlike
383
+ * `et-chip`, it never removes itself and carries no selection state; reach for a chip when the value
384
+ * is removable or selectable.
385
+ *
386
+ * @example
387
+ * <et-badge color="success">Active</et-badge>
388
+ * <et-badge variant="outline">Beta</et-badge>
389
+ */
390
+ declare class BadgeComponent {
391
+ variant: _angular_core.InputSignal<BadgeVariant>;
392
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeComponent, never>;
393
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "et-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
394
+ }
395
+
396
+ declare const BADGE_IMPORTS: readonly [typeof BadgeComponent];
397
+
398
+ /** The strings a banner renders itself. Its heading, description and actions are yours; dismissal is its own. */
399
+ type BannerLabels = {
400
+ /** Accessible label for a dismissible banner's dismiss button. */
401
+ dismiss: string;
402
+ };
403
+ /** The built-in English labels. */
404
+ declare const DEFAULT_BANNER_LABELS: BannerLabels;
405
+ /**
406
+ * Localize a banner's strings for everything below this injector, and read the set in effect here as a
407
+ * signal. Partial - whatever you leave out keeps its {@link DEFAULT_BANNER_LABELS} value. See {@link defineLabels}
408
+ * for the shape, which every domain in this library shares.
409
+ *
410
+ * @example
411
+ * provideBannerLabels({ dismiss: 'Schließen' });
412
+ */
413
+ declare const provideBannerLabels: (labels: _ethlete_core.LabelsSource<BannerLabels>) => _angular_core.Provider;
414
+ declare const injectBannerLabels: () => _angular_core.Signal<BannerLabels>;
415
+ declare const BANNER_LABELS: _angular_core.InjectionToken<_ethlete_core.LabelsSource<BannerLabels>>;
416
+
417
+ declare const BANNER_TYPES: {
418
+ readonly INFO: "info";
419
+ readonly SUCCESS: "success";
420
+ readonly WARNING: "warning";
421
+ readonly ERROR: "error";
422
+ };
423
+ type BannerType = (typeof BANNER_TYPES)[keyof typeof BANNER_TYPES];
424
+ /**
425
+ * A static, dismissible page or section message - icon/description/actions are yours to project,
426
+ * unlike `et-notification`, which is a transient, manager-driven toast.
427
+ *
428
+ * @example
429
+ * <et-banner type="error" heading="Something went wrong" description="Please try again." dismissible>
430
+ * <i etIcon="et-triangle-exclamation"></i>
431
+ * <button et-text-button etBannerAction type="button">Retry</button>
432
+ * </et-banner>
433
+ */
434
+ declare class BannerComponent {
435
+ private provideColor;
436
+ private injector;
437
+ protected resolvedLabels: _angular_core.Signal<_ethlete_components.BannerLabels>;
438
+ heading: _angular_core.InputSignal<string | undefined>;
439
+ description: _angular_core.InputSignal<string | undefined>;
440
+ type: _angular_core.InputSignal<BannerType>;
441
+ dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
442
+ /**
443
+ * Overrides the type's default color theme. `info` has no semantic theme of its own (there is no
444
+ * app-registered `type: 'info'` slot), so pass a theme name to color an informational banner -
445
+ * otherwise it renders untinted.
446
+ */
447
+ color: _angular_core.InputSignal<string | ColorTheme | null>;
448
+ dismiss: _angular_core.OutputEmitterRef<void>;
449
+ protected role: _angular_core.Signal<"alert" | "status">;
450
+ constructor();
451
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BannerComponent, never>;
452
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BannerComponent, "et-banner", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, ["[etIcon]", "[etBannerAction]"], true, [{ directive: typeof _ethlete_core.ProvideColorDirective; inputs: {}; outputs: {}; }]>;
453
+ }
454
+
455
+ declare const BANNER_IMPORTS: readonly [typeof BannerComponent];
456
+
317
457
  type BracketMatchSource<TMatchData> = {
318
458
  data: TMatchData;
319
459
  id: string;
@@ -2969,6 +3109,7 @@ declare class ButtonDirective {
2969
3109
  declare class SplitButtonActionDirective {
2970
3110
  private splitButton;
2971
3111
  private destroyRef;
3112
+ private readonly hostElement;
2972
3113
  constructor();
2973
3114
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SplitButtonActionDirective, never>;
2974
3115
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SplitButtonActionDirective, "[etSplitButtonAction]", ["etSplitButtonAction"], {}, {}, never, never, true, never>;
@@ -2984,12 +3125,14 @@ declare const SPLIT_BUTTON_ERROR_CODES: {
2984
3125
  declare class SplitButtonTriggerDirective {
2985
3126
  private splitButton;
2986
3127
  private destroyRef;
3128
+ private readonly hostElement;
2987
3129
  constructor();
2988
3130
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SplitButtonTriggerDirective, never>;
2989
3131
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SplitButtonTriggerDirective, "[etSplitButtonTrigger]", ["etSplitButtonTrigger"], {}, {}, never, never, true, never>;
2990
3132
  }
2991
3133
 
2992
3134
  declare class SplitButtonDirective {
3135
+ private readonly hostElement;
2993
3136
  registeredAction: _angular_core.WritableSignal<SplitButtonActionDirective | null>;
2994
3137
  registeredTrigger: _angular_core.WritableSignal<SplitButtonTriggerDirective | null>;
2995
3138
  constructor();
@@ -3655,6 +3798,30 @@ declare class CalendarComponent {
3655
3798
 
3656
3799
  declare const CALENDAR_IMPORTS: readonly [typeof CalendarComponent, typeof CalendarDirective, typeof CalendarGridDirective, typeof CalendarCellDirective, typeof CalendarHeaderDirective];
3657
3800
 
3801
+ declare const CARD_VARIANTS: {
3802
+ readonly ELEVATED: "elevated";
3803
+ readonly OUTLINED: "outlined";
3804
+ readonly FILLED: "filled";
3805
+ };
3806
+ type CardVariant = (typeof CARD_VARIANTS)[keyof typeof CARD_VARIANTS];
3807
+ /**
3808
+ * A generic content container - the padded, bordered or shadowed box every dashboard reaches for.
3809
+ * Content is yours; the card only owns the surrounding chrome.
3810
+ *
3811
+ * @example
3812
+ * <et-card variant="elevated">
3813
+ * <h3>Revenue</h3>
3814
+ * <p>$12,400 this month</p>
3815
+ * </et-card>
3816
+ */
3817
+ declare class CardComponent {
3818
+ variant: _angular_core.InputSignal<CardVariant>;
3819
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardComponent, never>;
3820
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "et-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof _ethlete_core.ProvideSurfaceDirective; inputs: { "etProvideSurface": "surface"; }; outputs: {}; }]>;
3821
+ }
3822
+
3823
+ declare const CARD_IMPORTS: readonly [typeof CardComponent];
3824
+
3658
3825
  declare const CAROUSEL_ERROR_CODES: {
3659
3826
  /** A carousel part (`etCarouselSlide`, `etCarouselItem`, a control, autoplay) was used outside an `[etCarousel]`. */
3660
3827
  readonly PART_OUTSIDE_CAROUSEL: 3800;
@@ -3822,6 +3989,7 @@ type ScrollableNavigation = {
3822
3989
  };
3823
3990
 
3824
3991
  declare class ScrollableDirective {
3992
+ private readonly hostElement;
3825
3993
  itemSize: _angular_core.InputSignalWithTransform<ScrollableItemSize, _ethlete_core.BreakpointInput<ScrollableItemSize>>;
3826
3994
  direction: _angular_core.InputSignalWithTransform<ScrollableDirection, _ethlete_core.BreakpointInput<ScrollableDirection>>;
3827
3995
  scrollMode: _angular_core.InputSignalWithTransform<ScrollableScrollMode, _ethlete_core.BreakpointInput<ScrollableScrollMode>>;
@@ -4226,6 +4394,7 @@ declare class CarouselAutoplayDirective {
4226
4394
  private prefersReducedMotion;
4227
4395
  private isDocumentVisible;
4228
4396
  private styleManager;
4397
+ private readonly hostElement;
4229
4398
  /**
4230
4399
  * Turn autoplay off without removing the directive - the same escape hatch `etScrollableSnap` has. A
4231
4400
  * disabled autoplay never plays and never asks for a pause control.
@@ -4444,6 +4613,7 @@ type CarouselSlideContext<T> = {
4444
4613
  */
4445
4614
  declare class CarouselSlideDirective<T> {
4446
4615
  private carousel;
4616
+ private readonly hostElement;
4447
4617
  /** @internal The template itself, stamped by whoever renders the slides. */
4448
4618
  templateRef: TemplateRef<CarouselSlideContext<T>>;
4449
4619
  /** The slides to render, one stamp of this template each. */
@@ -4521,6 +4691,7 @@ declare class CarouselDirective {
4521
4691
  private injectedLabels;
4522
4692
  private prefersReducedMotion;
4523
4693
  private styleManager;
4694
+ private readonly hostElement;
4524
4695
  private ownScrollable;
4525
4696
  /**
4526
4697
  * Cross the seam without showing it: the track carries clones of the slides either side of the real
@@ -4732,6 +4903,7 @@ declare class CarouselComponent {
4732
4903
  /** @internal Read from the template; also handy for a consumer reaching in with `viewChild`. */
4733
4904
  carousel: CarouselDirective;
4734
4905
  private autoplayDirective;
4906
+ private readonly hostElement;
4735
4907
  /**
4736
4908
  * How much of the track one slide takes: `'full'` (the default) is one slide per view; `'half'`,
4737
4909
  * `'third'` and `'quarter'` show several at once, and `'auto'` lets each slide size itself so the next
@@ -4831,6 +5003,78 @@ declare class ChipComponent {
4831
5003
 
4832
5004
  declare const CHIP_IMPORTS: readonly [typeof ChipComponent, typeof ChipDirective, typeof ChipRemoveDirective];
4833
5005
 
5006
+ /**
5007
+ * Copies `text` to the clipboard on click and ticks `copied()` for `resetDelay` ms - the
5008
+ * icon-swap feedback every copy button in this library wants, without each one hand-rolling its
5009
+ * own reset timer. Carries no template or styling of its own; compose it with `et-icon-button` (or
5010
+ * any other button) and swap the icon off `copied()`:
5011
+ *
5012
+ * @example
5013
+ * <button [text]="jsonText" et-icon-button etCopyButton #copyBtn="etCopyButton" type="button" (copySuccess)="onCopy()">
5014
+ * @if (copyBtn.copied()) {
5015
+ * <i etIcon="et-check"></i>
5016
+ * } @else {
5017
+ * <i etIcon="et-clipboard-check"></i>
5018
+ * }
5019
+ * </button>
5020
+ */
5021
+ declare class CopyButtonDirective {
5022
+ /** The value to copy, or a getter for it - a getter avoids re-serializing on every change detection. */
5023
+ text: _angular_core.InputSignal<string | (() => string)>;
5024
+ /** How long `copied()` stays `true` after a successful copy. */
5025
+ resetDelay: _angular_core.InputSignalWithTransform<number, unknown>;
5026
+ /** Fires once the value has actually reached the clipboard. */
5027
+ copySuccess: _angular_core.OutputEmitterRef<void>;
5028
+ copied: _angular_core.WritableSignal<boolean>;
5029
+ private reset$;
5030
+ constructor();
5031
+ requestCopy(): void;
5032
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CopyButtonDirective, never>;
5033
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CopyButtonDirective, "[etCopyButton]", ["etCopyButton"], { "text": { "alias": "text"; "required": false; "isSignal": true; }; "resetDelay": { "alias": "resetDelay"; "required": false; "isSignal": true; }; }, { "copySuccess": "copySuccess"; }, never, never, true, never>;
5034
+ }
5035
+
5036
+ declare const COPY_BUTTON_IMPORTS: readonly [typeof CopyButtonDirective];
5037
+
5038
+ /**
5039
+ * Styles a native `<dl>` for term/detail rows - CSS grid auto-placement pairs each `<dt>`/`<dd>`
5040
+ * into its own row, so plain semantic markup is all a consumer writes; there is no term/detail
5041
+ * wrapper component to reach for.
5042
+ *
5043
+ * @example
5044
+ * <dl et-description-list>
5045
+ * <dt>Name</dt>
5046
+ * <dd>Jane Doe</dd>
5047
+ * <dt>Email</dt>
5048
+ * <dd>jane&#64;example.com</dd>
5049
+ * </dl>
5050
+ */
5051
+ declare class DescriptionListComponent {
5052
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DescriptionListComponent, never>;
5053
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DescriptionListComponent, "dl[et-description-list]", never, {}, {}, never, ["*"], true, never>;
5054
+ }
5055
+
5056
+ declare const DESCRIPTION_LIST_IMPORTS: readonly [typeof DescriptionListComponent];
5057
+
5058
+ /**
5059
+ * A placeholder for a section or page that currently has nothing to show - no results, an empty
5060
+ * list, a not-yet-configured feature. Project an icon via `[etIcon]`, set `title`/`description`,
5061
+ * and project an action (e.g. a button) via `[etEmptyStateAction]`.
5062
+ *
5063
+ * @example
5064
+ * <et-empty-state heading="No results" description="Try a different search term.">
5065
+ * <i etIcon="et-file"></i>
5066
+ * <button et-button etEmptyStateAction type="button">Clear filters</button>
5067
+ * </et-empty-state>
5068
+ */
5069
+ declare class EmptyStateComponent {
5070
+ heading: _angular_core.InputSignal<string | undefined>;
5071
+ description: _angular_core.InputSignal<string | undefined>;
5072
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyStateComponent, never>;
5073
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyStateComponent, "et-empty-state", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, {}, never, ["[etIcon]", "[etEmptyStateAction]"], true, never>;
5074
+ }
5075
+
5076
+ declare const EMPTY_STATE_IMPORTS: readonly [typeof EmptyStateComponent];
5077
+
4834
5078
  /**
4835
5079
  * What the overlay closes with. `didUpdate: false` for a dismissal - the draft is thrown away and the page's
4836
5080
  * filters are untouched.
@@ -5406,6 +5650,7 @@ type LabelDirectiveBase = {
5406
5650
  };
5407
5651
 
5408
5652
  declare class FormFieldDirective implements FormFieldDirectiveBase {
5653
+ private readonly hostElement;
5409
5654
  /** @internal */
5410
5655
  registeredControl: _angular_core.WritableSignal<FormFieldControl | null>;
5411
5656
  /** @internal */
@@ -5836,6 +6081,7 @@ declare class OverlayTriggerDirective {
5836
6081
  declare class OverlayDirective {
5837
6082
  private destroyRef;
5838
6083
  private overlayManager;
6084
+ private readonly hostElement;
5839
6085
  mode: _angular_core.InputSignal<OverlayMode>;
5840
6086
  role: _angular_core.InputSignal<OverlayRole | undefined>;
5841
6087
  open: _angular_core.ModelSignal<boolean>;
@@ -6202,6 +6448,7 @@ declare class CascaderDirective<T = unknown> implements FormValueControl<T | T[]
6202
6448
  private destroyRef;
6203
6449
  private document;
6204
6450
  private bottomSheetStrategy;
6451
+ private readonly hostElement;
6205
6452
  /** The committed value: `T | null` in single mode, `T[]` with `multiple`. */
6206
6453
  value: _angular_core.ModelSignal<T | T[] | null>;
6207
6454
  /** View state for a field whose source values disagree. The raw form value stays untouched. */
@@ -6439,6 +6686,7 @@ declare class CascaderColumnDirective {
6439
6686
  private cascaderLabels;
6440
6687
  cascader: CascaderDirective<any> | null;
6441
6688
  private destroyRef;
6689
+ private readonly hostElement;
6442
6690
  /** The column's zero-based level - column 0 shows the root. */
6443
6691
  columnIndex: _angular_core.InputSignal<number>;
6444
6692
  readonly id: string;
@@ -6532,6 +6780,7 @@ declare class CascaderSearchDirective {
6532
6780
  declare class CascaderSurfaceDirective {
6533
6781
  private cascader;
6534
6782
  templateRef: TemplateRef<CascaderSurfaceContext>;
6783
+ private readonly hostElement;
6535
6784
  constructor();
6536
6785
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CascaderSurfaceDirective, never>;
6537
6786
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CascaderSurfaceDirective, "ng-template[etCascaderSurface]", ["etCascaderSurface"], {}, {}, never, never, true, never>;
@@ -7193,6 +7442,7 @@ declare class DateInputComponent {
7193
7442
  declare class DatePickerSurfaceDirective {
7194
7443
  private host;
7195
7444
  templateRef: TemplateRef<DatePickerSurfaceContext>;
7445
+ private readonly hostElement;
7196
7446
  constructor();
7197
7447
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatePickerSurfaceDirective, never>;
7198
7448
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DatePickerSurfaceDirective, "ng-template[etDatePickerSurface]", ["etDatePickerSurface"], {}, {}, never, never, true, never>;
@@ -7240,6 +7490,8 @@ declare class DateRangeInputDirective implements FormValueControl<DateRangeValue
7240
7490
  private dateTimeLabels;
7241
7491
  private formFieldLabels;
7242
7492
  private formField;
7493
+ /** Only present under a signal-forms `[field]` binding - unset in manual `[value]`/`[errors]` use. */
7494
+ private ngFormField;
7243
7495
  private destroyRef;
7244
7496
  private document;
7245
7497
  private defaultValueFormat;
@@ -7352,6 +7604,15 @@ declare class DateRangeInputDirective implements FormValueControl<DateRangeValue
7352
7604
  labelId: Signal<string | null>;
7353
7605
  /** The `[etInputMask]` pattern derived from the format in effect - `null` while `mask` is off or the format is refused. */
7354
7606
  maskPattern: Signal<string | null>;
7607
+ /**
7608
+ * `errors` is the `FormValueControl` input signal-forms writes the range field's *own* errors
7609
+ * into (e.g. a whole-range `customError`) - it never carries a descendant's, because a `Field`
7610
+ * directive only ever binds a control's own errors, not its children's (`schema.start.required()`
7611
+ * lands on the `start` subfield, not here). What the form field renders is a separate view that
7612
+ * prefers the bound field's `errorSummary` (own + descendants) and falls back to `errors` for
7613
+ * manual, schema-less use.
7614
+ */
7615
+ private formFieldControlView;
7355
7616
  private overlay;
7356
7617
  constructor();
7357
7618
  inputText(side: DateRangeSide): string;
@@ -7959,10 +8220,15 @@ type DropzoneUploadHandleOptions = {
7959
8220
  file: File;
7960
8221
  injector: Injector;
7961
8222
  };
8223
+ /** @internal Options passed to a config's `executeDelete`. */
8224
+ type DropzoneDeleteOptions<TValue> = {
8225
+ value: TValue;
8226
+ injector: Injector;
8227
+ };
7962
8228
  /**
7963
8229
  * The resolved upload config the dropzone directive consumes. Both `createDropzoneUpload` (new
7964
8230
  * query) and `createV2DropzoneUpload` (legacy v2) produce this shape - the query flavor lives
7965
- * entirely inside `createUploadHandle`.
8231
+ * entirely inside `createUploadHandle` / `executeDelete`.
7966
8232
  */
7967
8233
  type ResolvedDropzoneUploadConfig<TValue = unknown> = {
7968
8234
  /**
@@ -7980,10 +8246,29 @@ type ResolvedDropzoneUploadConfig<TValue = unknown> = {
7980
8246
  resolveExisting?: (value: TValue) => DropzoneExistingFileInfo;
7981
8247
  /** @internal Creates a per-file upload handle. Set by `createDropzoneUpload` / `createV2DropzoneUpload`. */
7982
8248
  createUploadHandle: (options: DropzoneUploadHandleOptions) => DropzoneUploadHandle<TValue>;
8249
+ /**
8250
+ * @internal Fires the delete request for an already-persisted value being removed. Unset when
8251
+ * the upload config was created without a `delete` option. Resolves with the request error, or
8252
+ * `null` on success.
8253
+ */
8254
+ executeDelete?: (options: DropzoneDeleteOptions<TValue>) => Promise<DropzoneUploadError | null>;
7983
8255
  };
7984
8256
  type AnyDropzoneUploadConfig<TValue = unknown> = ResolvedDropzoneUploadConfig<TValue>;
8257
+ /**
8258
+ * The authoring config for a delete request run when an already-persisted entry (a successful
8259
+ * upload or an existing value) is removed - e.g. a `DELETE` route that cleans up the uploaded
8260
+ * file server-side. Nest it under `DropzoneUploadConfig.delete` / `V2DropzoneUploadConfig.delete`.
8261
+ * Removing a still-uploading entry only cancels its upload; nothing was persisted yet, so no
8262
+ * delete request is made.
8263
+ */
8264
+ type DropzoneDeleteConfig<TArgs extends QueryArgs, TValue> = {
8265
+ /** The query creator used to delete one value (e.g. a `DELETE /media/:id` route). */
8266
+ queryCreator: QueryCreator<TArgs>;
8267
+ /** Builds the request args to delete one value, e.g. `(id) => ({ pathParams: { id } })`. */
8268
+ createArgs: (value: TValue) => RequestArgs<TArgs>;
8269
+ };
7985
8270
  /** The authoring config for `createDropzoneUpload` (new `@ethlete/query` API). */
7986
- type DropzoneUploadConfig<TArgs extends QueryArgs = QueryArgs, TValue = unknown> = {
8271
+ type DropzoneUploadConfig<TArgs extends QueryArgs = QueryArgs, TValue = unknown, TDeleteArgs extends QueryArgs = QueryArgs> = {
7987
8272
  /**
7988
8273
  * The query creator used to upload a single file (e.g. a POST multipart route).
7989
8274
  *
@@ -8014,14 +8299,26 @@ type DropzoneUploadConfig<TArgs extends QueryArgs = QueryArgs, TValue = unknown>
8014
8299
  * Required as soon as the form control can start with a non-empty value.
8015
8300
  */
8016
8301
  resolveExisting?: (value: TValue) => DropzoneExistingFileInfo;
8302
+ /**
8303
+ * Run when an already-persisted entry (a successful upload or an existing value) is removed.
8304
+ * Absent: removing an entry only updates the control locally, with no server-side cleanup.
8305
+ */
8306
+ delete?: DropzoneDeleteConfig<TDeleteArgs, TValue>;
8017
8307
  };
8018
8308
  /** The args accepted by a legacy v2 creator's `prepare()` - includes `mock`/`config` extras. */
8019
8309
  type V2DropzonePrepareArgsOf<TCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator> = Parameters<TCreator['prepare']>[0];
8310
+ /** The legacy `V2QueryClient` counterpart of `DropzoneDeleteConfig` - see there for behavior. */
8311
+ type V2DropzoneDeleteConfig<TCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator, TValue> = {
8312
+ /** The legacy query creator used to delete one value (from `V2QueryClient`'s `delete`). */
8313
+ queryCreator: TCreator;
8314
+ /** Builds the `prepare()` args to delete one value, e.g. `(id) => ({ pathParams: { id } })`. */
8315
+ createArgs: (value: TValue) => V2DropzonePrepareArgsOf<TCreator>;
8316
+ };
8020
8317
  /**
8021
8318
  * The authoring config for `createV2DropzoneUpload` - the legacy `V2QueryClient` counterpart of
8022
8319
  * `DropzoneUploadConfig`, for apps that haven't migrated to the new `@ethlete/query` API yet.
8023
8320
  */
8024
- type V2DropzoneUploadConfig<TCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator, TValue> = {
8321
+ type V2DropzoneUploadConfig<TCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator, TValue, TDeleteCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator = TCreator> = {
8025
8322
  /**
8026
8323
  * The legacy query creator used to upload a single file (from `V2QueryClient`'s `post`/`put`,
8027
8324
  * or a `createLegacyQueryCreator` interop wrapper). A fresh query is prepared and executed per
@@ -8053,6 +8350,11 @@ type V2DropzoneUploadConfig<TCreator extends AnyV2QueryCreator | AnyLegacyQueryC
8053
8350
  * Required as soon as the form control can start with a non-empty value.
8054
8351
  */
8055
8352
  resolveExisting?: (value: TValue) => DropzoneExistingFileInfo;
8353
+ /**
8354
+ * Run when an already-persisted entry (a successful upload or an existing value) is removed.
8355
+ * Absent: removing an entry only updates the control locally, with no server-side cleanup.
8356
+ */
8357
+ delete?: V2DropzoneDeleteConfig<TDeleteCreator, TValue>;
8056
8358
  };
8057
8359
  declare const createDefaultDropzoneArgs: (file: File) => RequestArgs<QueryArgs>;
8058
8360
  /**
@@ -8061,7 +8363,7 @@ declare const createDefaultDropzoneArgs: (file: File) => RequestArgs<QueryArgs>;
8061
8363
  *
8062
8364
  * For apps still on the legacy `V2QueryClient`, use {@link createV2DropzoneUpload} instead.
8063
8365
  */
8064
- declare const createDropzoneUpload: <TArgs extends QueryArgs, TValue>(config: DropzoneUploadConfig<TArgs, TValue>) => AnyDropzoneUploadConfig<TValue>;
8366
+ declare const createDropzoneUpload: <TArgs extends QueryArgs, TValue, TDeleteArgs extends QueryArgs = QueryArgs>(config: DropzoneUploadConfig<TArgs, TValue, TDeleteArgs>) => AnyDropzoneUploadConfig<TValue>;
8065
8367
  /**
8066
8368
  * The legacy `V2QueryClient` counterpart of {@link createDropzoneUpload}. Builds a dropzone upload
8067
8369
  * config from a legacy v2 query creator (or a `createLegacyQueryCreator` interop wrapper), so apps
@@ -8075,7 +8377,7 @@ declare const createDropzoneUpload: <TArgs extends QueryArgs, TValue>(config: Dr
8075
8377
  * });
8076
8378
  * ```
8077
8379
  */
8078
- declare const createV2DropzoneUpload: <TCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator, TValue>(config: V2DropzoneUploadConfig<TCreator, TValue>) => AnyDropzoneUploadConfig<TValue>;
8380
+ declare const createV2DropzoneUpload: <TCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator, TValue, TDeleteCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator = TCreator>(config: V2DropzoneUploadConfig<TCreator, TValue, TDeleteCreator>) => AnyDropzoneUploadConfig<TValue>;
8079
8381
 
8080
8382
  declare const DROPZONE_ENTRY_STATUSES: {
8081
8383
  readonly UPLOADING: "uploading";
@@ -8196,6 +8498,7 @@ declare class DropzoneDirective<TValue = unknown> implements FormValueControl<TV
8196
8498
  private signalFormField;
8197
8499
  private destroyRef;
8198
8500
  private injector;
8501
+ private readonly hostElement;
8199
8502
  value: _angular_core.ModelSignal<TValue | TValue[] | null>;
8200
8503
  touched: _angular_core.ModelSignal<boolean>;
8201
8504
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -8213,6 +8516,17 @@ declare class DropzoneDirective<TValue = unknown> implements FormValueControl<TV
8213
8516
  uploadSucceed: _angular_core.OutputEmitterRef<DropzoneEntry<TValue>>;
8214
8517
  /** Emits when the upload of an entry failed. */
8215
8518
  uploadFail: _angular_core.OutputEmitterRef<DropzoneEntry<TValue>>;
8519
+ /**
8520
+ * Emits when the delete request for a removed entry's persisted value succeeded. Only fires for
8521
+ * entries removed while the upload config has a `delete` option and the entry was already
8522
+ * persisted (a successful upload or an existing value).
8523
+ */
8524
+ deleteSucceed: _angular_core.OutputEmitterRef<TValue>;
8525
+ /** Emits when that delete request failed. The entry is already gone from `entries()` by then. */
8526
+ deleteFail: _angular_core.OutputEmitterRef<{
8527
+ value: TValue;
8528
+ error: DropzoneUploadError;
8529
+ }>;
8216
8530
  private internalEntries;
8217
8531
  private internalLastRejections;
8218
8532
  private dragDepth;
@@ -8258,10 +8572,11 @@ declare class DropzoneDirective<TValue = unknown> implements FormValueControl<TV
8258
8572
  private setRejections;
8259
8573
  private createFileEntry;
8260
8574
  private disposeEntry;
8575
+ private executeDelete;
8261
8576
  private syncValue;
8262
8577
  private reconcileValue;
8263
8578
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropzoneDirective<any>, never>;
8264
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DropzoneDirective<any>, "[etDropzone]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "upload": { "alias": "upload"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "filesReject": "filesReject"; "uploadSucceed": "uploadSucceed"; "uploadFail": "uploadFail"; }, never, never, true, never>;
8579
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DropzoneDirective<any>, "[etDropzone]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "upload": { "alias": "upload"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "filesReject": "filesReject"; "uploadSucceed": "uploadSucceed"; "uploadFail": "uploadFail"; "deleteSucceed": "deleteSucceed"; "deleteFail": "deleteFail"; }, never, never, true, never>;
8265
8580
  }
8266
8581
 
8267
8582
  declare class DropzoneComponent {
@@ -8336,7 +8651,7 @@ declare class DropzoneComponent {
8336
8651
  protected removeEntryAnimated(entry: DropzoneEntry, entryElement: HTMLElement): void;
8337
8652
  private defaultUploadErrorMessage;
8338
8653
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropzoneComponent, never>;
8339
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropzoneComponent, "et-dropzone", never, { "retryLabel": { "alias": "retryLabel"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "replaceLabel": { "alias": "replaceLabel"; "required": false; "isSignal": true; }; "uploadErrorLabel": { "alias": "uploadErrorLabel"; "required": false; "isSignal": true; }; "uploadErrorMessage": { "alias": "uploadErrorMessage"; "required": false; "isSignal": true; }; }, {}, never, ["et-label", "*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof DropzoneDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "upload": "upload"; "multiple": "multiple"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; "filesReject": "filesReject"; "uploadSucceed": "uploadSucceed"; "uploadFail": "uploadFail"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
8654
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropzoneComponent, "et-dropzone", never, { "retryLabel": { "alias": "retryLabel"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "replaceLabel": { "alias": "replaceLabel"; "required": false; "isSignal": true; }; "uploadErrorLabel": { "alias": "uploadErrorLabel"; "required": false; "isSignal": true; }; "uploadErrorMessage": { "alias": "uploadErrorMessage"; "required": false; "isSignal": true; }; }, {}, never, ["et-label", "*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof DropzoneDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "upload": "upload"; "multiple": "multiple"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; "filesReject": "filesReject"; "uploadSucceed": "uploadSucceed"; "uploadFail": "uploadFail"; "deleteSucceed": "deleteSucceed"; "deleteFail": "deleteFail"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
8340
8655
  }
8341
8656
 
8342
8657
  declare const DROPZONE_IMPORTS: readonly [typeof DropzoneComponent, typeof DropzoneDirective];
@@ -8787,6 +9102,7 @@ type MaskValueMode = (typeof MASK_VALUE_MODES)[keyof typeof MASK_VALUE_MODES];
8787
9102
  */
8788
9103
  declare class InputMaskDirective {
8789
9104
  private host;
9105
+ private readonly hostElement;
8790
9106
  /**
8791
9107
  * The mask: a pattern string (`0` digit, `9` optional digit, `a` letter, `*`
8792
9108
  * alphanumeric, `\` escapes, anything else literal) or a `MaskSpec` object
@@ -8951,34 +9267,6 @@ type RequiredLanguagesOptions = {
8951
9267
  */
8952
9268
  declare const requiredLanguages: (path: MultiLanguageRichTextEditorFieldPath, { codes, message }: RequiredLanguagesOptions) => void;
8953
9269
 
8954
- declare class RichTextEditorFloatingToolbarDirective {
8955
- private editor;
8956
- private document;
8957
- private renderer;
8958
- private overlayManager;
8959
- private destroyRef;
8960
- /** On touch devices the platform shows its own selection menu (Copy/Paste/…) over the selection,
8961
- * which this toolbar would fight and hide behind; the always-visible static toolbar covers
8962
- * formatting there instead, so the floating toolbar is a pointer-device-only enhancement. */
8963
- private hasTouchInput;
8964
- private overlayId;
8965
- private overlayRef;
8966
- private activeRange;
8967
- private pointerSelectingInContent;
8968
- constructor();
8969
- private selectableRange;
8970
- private finishContentPointerSelection;
8971
- /** Selection settled (key/pointer): open the toolbar or move it to the new range. */
8972
- private evaluate;
8973
- /** Selection changed while open: follow it, or close if it is no longer usable. */
8974
- private reposition;
8975
- private openOrReposition;
8976
- private buildAnchoredPosition;
8977
- private hide;
8978
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorFloatingToolbarDirective, never>;
8979
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RichTextEditorFloatingToolbarDirective, "[etRichTextEditorFloatingToolbar]", never, {}, {}, never, never, true, never>;
8980
- }
8981
-
8982
9270
  /**
8983
9271
  * A caret or selection as character offsets into the editor's text content. The only form that
8984
9272
  * survives a snapshot being restored: undo re-renders the editable from the value, so every node
@@ -9209,13 +9497,16 @@ declare const RICH_TEXT_EDITOR_TOOLS: {
9209
9497
  readonly DIVIDER: "divider";
9210
9498
  };
9211
9499
  /**
9212
- * A toolbar tool token. The `align`, `table` and `image` tools are opt-in - they only render when
9213
- * their provider (`provideRichTextEditorAlignmentTool` / `provideRichTextEditorTableTool` /
9214
- * `provideRichTextEditorImageTool`) is present, so their code tree-shakes away otherwise.
9215
- * `(string & {})` keeps the union open for custom tools.
9500
+ * A toolbar tool token. History, the inline marks and the lists are built in; every other tool is
9501
+ * opt-in and only renders when its provider is present, so its code tree-shakes away otherwise -
9502
+ * `provideRichTextEditorHeadingTool` / `…BlockquoteTool` / `…CodeBlockTool` / `…LinkTool` /
9503
+ * `…AlignmentTool` / `…TableTool` / `…ImageTool`. `(string & {})` keeps the union open for custom
9504
+ * tools.
9216
9505
  */
9217
9506
  type RichTextEditorTool = (typeof RICH_TEXT_EDITOR_TOOLS)[keyof typeof RICH_TEXT_EDITOR_TOOLS] | (string & {});
9218
- /** The default toolbar: history, then the block-style menu, inline marks, lists and links. */
9507
+ /** The default toolbar: history, then the block-style menu, inline marks, lists, quotes/fences and
9508
+ * links. The opt-in tokens in it render nothing until their provider is registered, so the bar an
9509
+ * editor actually shows is this list intersected with what was provided. */
9219
9510
  declare const DEFAULT_RICH_TEXT_EDITOR_TOOLS: readonly RichTextEditorTool[];
9220
9511
  /** The inline marks the selection (floating) toolbar can offer - headings/lists are block-level. */
9221
9512
  declare const RICH_TEXT_EDITOR_INLINE_TOOLS: readonly RichTextEditorTool[];
@@ -9422,34 +9713,48 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
9422
9713
  toggleList: (listTag: ListTag) => void;
9423
9714
  indentListItem: () => boolean;
9424
9715
  outdentListItem: () => boolean;
9425
- toggleHeading: (tag: HeadingTag) => void;
9426
- toggleBlockquote: () => void;
9427
- repairEmptyQuotes: () => boolean;
9428
- indentBlockquote: () => boolean;
9429
- outdentBlockquote: () => boolean;
9430
- toggleCodeBlock: () => void;
9431
- codeBlockArrowStep: (key: "ArrowUp" | "ArrowDown") => boolean;
9432
- exitCodeBlock: () => boolean;
9433
- repairCodeBlock: () => boolean;
9434
- applyLink: (href: string, options?: {
9435
- newTab?: boolean;
9436
- text?: string | null;
9437
- }) => void;
9438
- readActiveLink: () => {
9439
- href: string;
9440
- text: string;
9441
- newTab: boolean;
9442
- exists: boolean;
9443
- } | null;
9444
- removeLink: () => void;
9445
9716
  insertNormalizedHtml: (html: string) => void;
9446
- applyBlockAutoformat: (isReserved: (char: string) => boolean) => boolean;
9447
- applyInlineAutoformat: (typed: string, isReserved: (char: string) => boolean) => boolean;
9448
9717
  handleBackspace: () => boolean;
9449
9718
  handleEnter: () => boolean;
9450
9719
  codeExit: (key: string) => boolean;
9451
9720
  readSelectionOffsets: () => RichTextEditorSelectionOffsets | null;
9452
9721
  restoreSelectionOffsets: (offsets: RichTextEditorSelectionOffsets | null) => void;
9722
+ headings: {
9723
+ toggleHeading: (tag: HeadingTag) => void;
9724
+ headingEnter: () => boolean;
9725
+ } | null;
9726
+ links: {
9727
+ applyLink: (href: string, options?: {
9728
+ newTab?: boolean;
9729
+ text?: string | null;
9730
+ }) => void;
9731
+ readActiveLink: () => {
9732
+ href: string;
9733
+ text: string;
9734
+ newTab: boolean;
9735
+ exists: boolean;
9736
+ } | null;
9737
+ removeLink: () => void;
9738
+ } | null;
9739
+ blockquote: {
9740
+ toggleBlockquote: () => void;
9741
+ indentBlockquote: () => boolean;
9742
+ outdentBlockquote: () => boolean;
9743
+ blockquoteEnter: () => boolean;
9744
+ repairEmptyQuotes: () => boolean;
9745
+ } | null;
9746
+ codeBlock: {
9747
+ toggleCodeBlock: () => void;
9748
+ codeBlockEnter: () => boolean;
9749
+ codeBlockArrowStep: (key: "ArrowUp" | "ArrowDown") => boolean;
9750
+ exitCodeBlock: () => boolean;
9751
+ codeBlockBackspace: () => boolean;
9752
+ repairCodeBlock: () => boolean;
9753
+ } | null;
9754
+ autoformat: {
9755
+ applyBlockAutoformat: (isReserved: (char: string) => boolean) => boolean;
9756
+ applyInlineAutoformat: (typed: string, isReserved: (char: string) => boolean) => boolean;
9757
+ } | null;
9453
9758
  };
9454
9759
  value: _angular_core.ModelSignal<string>;
9455
9760
  touched: _angular_core.ModelSignal<boolean>;
@@ -9466,7 +9771,9 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
9466
9771
  tools: _angular_core.InputSignal<readonly RichTextEditorTool[] | null>;
9467
9772
  /** Markdown autoformat while typing: `- `, `1. ` and `# `–`### ` at a line start convert into
9468
9773
  * lists/headings, and closing `**bold**`, `*italic*`, `` `code` ``, `~~strike~~`, `__`/`_` runs
9469
- * convert into their marks. Registered token-trigger characters never autoformat. */
9774
+ * convert into their marks. Registered token-trigger characters never autoformat. Switches off
9775
+ * what `provideRichTextEditorAutoformat()` turned on; without that provider there is nothing to
9776
+ * switch off. */
9470
9777
  autoformat: _angular_core.InputSignalWithTransform<boolean, unknown>;
9471
9778
  /**
9472
9779
  * Per-instance overrides for the editor's strings, merged over the injected `RICH_TEXT_EDITOR_LABELS`.
@@ -9480,6 +9787,13 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
9480
9787
  private history;
9481
9788
  /** Resolved toolbar tools: the `tools` input if set, otherwise the provided/default config. */
9482
9789
  resolvedTools: _angular_core.Signal<readonly RichTextEditorTool[]>;
9790
+ /**
9791
+ * @internal Every tool that can render, by token: the always-built-in buttons plus whatever was
9792
+ * registered through {@link RICH_TEXT_EDITOR_TOOL}. Both toolbars read this, so a token in
9793
+ * `resolvedTools()` with no entry here renders nothing - which is how an opt-in tool stays absent
9794
+ * until its provider is added.
9795
+ */
9796
+ toolDefs: ReadonlyMap<string, RichTextEditorToolDefinition>;
9483
9797
  /**
9484
9798
  * The strings in effect here: the injected label set with this instance's `labels` applied. Every part
9485
9799
  * of the editor reads it through this - the toolbars, the link editor and the opt-in tools all reach
@@ -9612,20 +9926,27 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
9612
9926
  clearPendingMarks(): void;
9613
9927
  toggleUnorderedList(): void;
9614
9928
  toggleOrderedList(): void;
9615
- /** Quotes the selected blocks as `> ` lines, or lifts the caret's quote out one nesting level. */
9929
+ /** Quotes the selected blocks as `> ` lines, or lifts the caret's quote out one nesting level.
9930
+ * Needs `provideRichTextEditorBlockquoteTool()`. */
9616
9931
  toggleBlockquote(): void;
9617
9932
  /** Turns the selected blocks into a fenced code block, or a code block back into paragraphs. Only
9618
- * the text survives either way - a fence is literal, so it carries no inline markup. */
9933
+ * the text survives either way - a fence is literal, so it carries no inline markup. Needs
9934
+ * `provideRichTextEditorCodeBlockTool()`. */
9619
9935
  toggleCodeBlock(): void;
9936
+ /** Needs `provideRichTextEditorHeadingTool()`. */
9620
9937
  toggleHeading(level: number): void;
9938
+ /** Needs `provideRichTextEditorHeadingTool()`. */
9621
9939
  setHeading(level: number | null): void;
9622
9940
  /** Applies (or, with an empty `href`, removes) a link on the current selection. `newTab` sets
9623
- * `target="_blank"` + `rel="noopener noreferrer"`; `text` overrides the visible label. */
9941
+ * `target="_blank"` + `rel="noopener noreferrer"`; `text` overrides the visible label. Needs
9942
+ * `provideRichTextEditorLinkTool()`. */
9624
9943
  applyLink(href: string, options?: {
9625
9944
  newTab?: boolean;
9626
9945
  text?: string | null;
9627
9946
  }): void;
9947
+ /** Needs `provideRichTextEditorLinkTool()`. */
9628
9948
  removeLink(): void;
9949
+ /** Needs `provideRichTextEditorLinkTool()`. */
9629
9950
  promptForLink(): void;
9630
9951
  handleBackspace(): boolean;
9631
9952
  pasteHtml(html: string): boolean;
@@ -9685,6 +10006,24 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
9685
10006
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RichTextEditorDirective, "[etRichTextEditor]", ["etRichTextEditor"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "tools": { "alias": "tools"; "required": false; "isSignal": true; }; "autoformat": { "alias": "autoformat"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
9686
10007
  }
9687
10008
 
10009
+ /**
10010
+ * Registers the toolbar that follows the selection on `editor`. Must run in an injection context tied
10011
+ * to the editor's lifetime - `provideRichTextEditorFloatingToolbar()` and
10012
+ * `[etRichTextEditorFloatingToolbar]` are the two ways in.
10013
+ *
10014
+ * @internal
10015
+ */
10016
+ declare const setupRichTextEditorFloatingToolbar: (editor: RichTextEditorDirective) => void;
10017
+ /**
10018
+ * Adds the selection toolbar to a headless `[etRichTextEditor]`. The default `et-rich-text-editor`
10019
+ * takes the same wiring through `provideRichTextEditorFloatingToolbar()`.
10020
+ */
10021
+ declare class RichTextEditorFloatingToolbarDirective {
10022
+ constructor();
10023
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorFloatingToolbarDirective, never>;
10024
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RichTextEditorFloatingToolbarDirective, "[etRichTextEditorFloatingToolbar]", never, {}, {}, never, never, true, never>;
10025
+ }
10026
+
9688
10027
  /**
9689
10028
  * Registers the link editor popover on `editor`: the link tool opens it instead of falling back to
9690
10029
  * `window.prompt`, anchored to the selection (a top sheet below `md`). Must run in an injection
@@ -9778,20 +10117,42 @@ declare class RichTextEditorFloatingToolbarComponent {
9778
10117
  readonly IMAGE: "image";
9779
10118
  readonly DIVIDER: "divider";
9780
10119
  };
9781
- protected readonly TOOL_BUTTONS: Partial<Record<_ethlete_components.RichTextEditorTool, _ethlete_components.RichTextEditorToolButton>>;
9782
10120
  /** The editor's strings - the same set, since this toolbar is part of that editor. */
9783
10121
  protected labels: _angular_core.Signal<_ethlete_components.RichTextEditorLabels>;
9784
- /** The inline marks from the editor's configured tools - headings/lists stay in the static toolbar. */
9785
- protected inlineTools: _angular_core.Signal<_ethlete_components.RichTextEditorTool[]>;
10122
+ /** The inline marks from the editor's configured tools - headings/lists stay in the static toolbar.
10123
+ * A token whose tool was not provided has no definition and is dropped, same as in that bar. */
10124
+ protected inlineTools: _angular_core.Signal<RichTextEditorToolDefinition[]>;
9786
10125
  constructor();
9787
10126
  /** A tool button's accessible name, from the label set. */
9788
- protected toolLabel(token: string, tool: {
9789
- label: string;
9790
- }): string;
10127
+ protected toolLabel(tool: RichTextEditorToolDefinition): string;
9791
10128
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorFloatingToolbarComponent, never>;
9792
10129
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RichTextEditorFloatingToolbarComponent, "et-rich-text-editor-floating-toolbar", never, { "editor": { "alias": "editor"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ethlete_core.ProvideColorDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.AutoSurfaceDirective; inputs: {}; outputs: {}; }]>;
9793
10130
  }
9794
10131
 
10132
+ /**
10133
+ * Gives every `et-rich-text-editor` in scope the toolbar that follows the selection: selecting text
10134
+ * with a pointer or the keyboard floats the inline marks (bold, italic, underline, strikethrough,
10135
+ * code and - with the link tool - link) above the selected text.
10136
+ *
10137
+ * Without this provider the editor keeps its static toolbar, and the floating one, with the overlay
10138
+ * runtime and anchored positioning it pulls in, never reaches the bundle.
10139
+ *
10140
+ * @example
10141
+ * providers: [provideRichTextEditorFloatingToolbar()]
10142
+ */
10143
+ declare const provideRichTextEditorFloatingToolbar: () => Provider;
10144
+
10145
+ /**
10146
+ * Wires the selection toolbar to one editor instance. Called from the editor's constructor (an
10147
+ * injection context), so an implementation may `inject()`.
10148
+ */
10149
+ type RichTextEditorFloatingToolbarSetup = (editor: RichTextEditorDirective) => void;
10150
+ /**
10151
+ * The selection toolbar's wiring, registered by `provideRichTextEditorFloatingToolbar()`. Absent
10152
+ * means the editor shows its static toolbar only.
10153
+ */
10154
+ declare const RICH_TEXT_EDITOR_FLOATING_TOOLBAR: InjectionToken<RichTextEditorFloatingToolbarSetup>;
10155
+
9795
10156
  /**
9796
10157
  * The image popover of the opt-in image tool: the alt text of the image at the caret, plus the action
9797
10158
  * that takes the image back out. Opened by `provideRichTextEditorImageTool`, in the same kind of
@@ -10033,11 +10394,86 @@ declare class RichTextEditorAlignToolComponent {
10033
10394
  }
10034
10395
 
10035
10396
  /**
10036
- * Registers the `'heading'` tool: the block-style menu (paragraph, H1, H2, H3). `'heading'` is in the
10397
+ * Turns on markdown-as-you-type for every editor in scope: at a line start `- `, `1. `, `# `–`### `,
10398
+ * `> ` and ```` ``` ```` convert the block, and a closing `**bold**`, `*italic*`, `` `code` ``,
10399
+ * `~~strike~~`, `__`/`_` run converts into its mark. Registered token-trigger characters never
10400
+ * autoformat, and the editor's `autoformat` input still switches it off per instance.
10401
+ *
10402
+ * Each block rule needs its own domain to be provided as well - `# ` only converts with
10403
+ * `provideRichTextEditorHeadingTool()`, `> ` with `provideRichTextEditorBlockquoteTool()`,
10404
+ * ```` ``` ```` with `provideRichTextEditorCodeBlockTool()`. The list and inline rules work on their
10405
+ * own.
10406
+ *
10407
+ * @example
10408
+ * providers: [provideRichTextEditorAutoformat()]
10409
+ */
10410
+ declare const provideRichTextEditorAutoformat: () => Provider;
10411
+
10412
+ /**
10413
+ * Registers the `'blockquote'` tool: quoting the selected blocks as `> ` lines, lifting a quote back
10414
+ * out, Tab/Shift+Tab nesting, the Enter-on-the-last-line exit and the `> ` markdown autoformat
10415
+ * prefix. `'blockquote'` is in the default toolbar, so this provider is all it takes - without it the
10416
+ * editor renders no quote control, `> ` stays literal text, and the quote DOM operations tree-shake
10417
+ * away.
10418
+ *
10419
+ * @example
10420
+ * providers: [provideRichTextEditorBlockquoteTool()]
10421
+ */
10422
+ declare const provideRichTextEditorBlockquoteTool: () => Provider[];
10423
+
10424
+ /**
10425
+ * Registers the `'codeBlock'` tool: turning the selected blocks into a fenced code block and back,
10426
+ * the newline-on-Enter behavior inside a fence, the Escape and arrow-key exits, and the ```` ``` ````
10427
+ * markdown autoformat prefix. `'codeBlock'` is in the default toolbar, so this provider is all it
10428
+ * takes - without it the editor renders no fence control, ```` ``` ```` stays literal text, and the
10429
+ * fenced-code DOM operations tree-shake away.
10430
+ *
10431
+ * A fence a value already contains still renders (Markdown → HTML does not need this), but it is
10432
+ * then plain content: none of the caret handling above applies to it.
10433
+ *
10434
+ * @example
10435
+ * providers: [provideRichTextEditorCodeBlockTool()]
10436
+ */
10437
+ declare const provideRichTextEditorCodeBlockTool: () => Provider[];
10438
+
10439
+ /**
10440
+ * Everything {@link DEFAULT_RICH_TEXT_EDITOR_TOOLS} names that is opt-in: the block-style menu,
10441
+ * quotes, fenced code, links and markdown-as-you-type. Registering this gives an editor the full
10442
+ * default toolbar in one line.
10443
+ *
10444
+ * It also pulls all five domains into the bundle. An editor that needs fewer - a comment box wants
10445
+ * marks, lists and links, not fences - registers just those providers instead and leaves the rest
10446
+ * out; that is the whole reason they are separate.
10447
+ *
10448
+ * The always-built-in tools (undo/redo, the inline marks, the two lists) need no provider, and
10449
+ * alignment, tables and images are not in the default toolbar - they have their own providers.
10450
+ *
10451
+ * @example
10452
+ * providers: [provideRichTextEditorDefaultTools()]
10453
+ */
10454
+ declare const provideRichTextEditorDefaultTools: () => Provider[];
10455
+
10456
+ /**
10457
+ * Registers the `'heading'` tool: the block-style menu (paragraph, H1, H2, H3), the Enter-at-a-
10458
+ * heading-edge behavior and the `# `–`### ` markdown autoformat prefixes. `'heading'` is in the
10037
10459
  * default toolbar, so this provider is all it takes - without it the editor renders no block-style
10038
- * control. Tree-shakes when unused.
10460
+ * control, `# ` stays literal text, and the heading DOM operations tree-shake away.
10461
+ */
10462
+ declare const provideRichTextEditorHeadingTool: () => Provider[];
10463
+
10464
+ /**
10465
+ * Registers the `'link'` tool and the link DOM operations behind
10466
+ * {@link RichTextEditorDirective.applyLink} / `removeLink` / `promptForLink`. `'link'` is in the
10467
+ * default toolbar and in {@link RICH_TEXT_EDITOR_INLINE_TOOLS}, so this provider is all it takes -
10468
+ * without it neither toolbar renders a link control and the link DOM operations tree-shake away.
10469
+ *
10470
+ * What the tool *opens* is a separate opt-in: with `provideRichTextEditorLinkEditor()` it is the
10471
+ * popover form, without it `window.prompt`.
10472
+ *
10473
+ * @example
10474
+ * providers: [provideRichTextEditorLinkTool(), provideRichTextEditorLinkEditor()]
10039
10475
  */
10040
- declare const provideRichTextEditorHeadingTool: () => Provider;
10476
+ declare const provideRichTextEditorLinkTool: () => Provider[];
10041
10477
 
10042
10478
  /** Block-style options for the heading menu. `null` is a normal paragraph. */
10043
10479
  declare const RICH_TEXT_EDITOR_HEADING_OPTIONS: readonly {
@@ -10275,6 +10711,7 @@ declare class MenuSurfaceDirective {
10275
10711
  private menu;
10276
10712
  templateRef: TemplateRef<MenuSurfaceContext>;
10277
10713
  private destroyRef;
10714
+ private readonly hostElement;
10278
10715
  constructor();
10279
10716
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSurfaceDirective, never>;
10280
10717
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuSurfaceDirective, "ng-template[etMenuSurface]", ["etMenuSurface"], {}, {}, never, never, true, never>;
@@ -10309,6 +10746,7 @@ declare class MenuDirective {
10309
10746
  private destroyRef;
10310
10747
  private document;
10311
10748
  private overlayManager;
10749
+ private readonly hostElement;
10312
10750
  parent: MenuDirective | null;
10313
10751
  placement: _angular_core.InputSignal<"auto" | Placement>;
10314
10752
  fallbackPlacements: _angular_core.InputSignal<Placement[] | undefined>;
@@ -10779,6 +11217,9 @@ declare class RichTextEditorComponent {
10779
11217
  /** Present only when `provideRichTextEditorLinkEditor()` is in scope; otherwise the link tool
10780
11218
  * falls back to `window.prompt` and the popover never ships. */
10781
11219
  private linkEditorSetup;
11220
+ /** Present only when `provideRichTextEditorFloatingToolbar()` is in scope; otherwise the editor
11221
+ * shows its static toolbar only and the overlay runtime never ships. */
11222
+ private floatingToolbarSetup;
10782
11223
  protected editable: _angular_core.Signal<ElementRef<HTMLElement>>;
10783
11224
  protected toolbar: _angular_core.Signal<ElementRef<HTMLElement>>;
10784
11225
  protected readonly TOOLS: {
@@ -10803,8 +11244,6 @@ declare class RichTextEditorComponent {
10803
11244
  /** The strings in effect, owned by the directive so the opt-in tools read the same set. */
10804
11245
  protected labels: _angular_core.Signal<_ethlete_components.RichTextEditorLabels>;
10805
11246
  private registeredTools;
10806
- /** Every renderable tool by token: the static base buttons plus any opt-in tools provided via DI. */
10807
- protected toolDefs: _angular_core.Signal<Map<string, RichTextEditorToolDefinition>>;
10808
11247
  /** Keeps the docked toolbar up briefly after a blur so opening a menu/link editor from it (which
10809
11248
  * moves focus into an overlay) doesn't collapse the bar mid-interaction. */
10810
11249
  private editingActive;
@@ -10853,7 +11292,7 @@ declare class RichTextEditorComponent {
10853
11292
  * editor opened from the docked toolbar (which takes focus into an overlay) keeps the bar up. */
10854
11293
  private trackEditingActive;
10855
11294
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorComponent, never>;
10856
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RichTextEditorComponent, "et-rich-text-editor", never, {}, {}, never, never, true, [{ directive: typeof RichTextEditorDirective; inputs: { "value": "value"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "tools": "tools"; "autoformat": "autoformat"; "labels": "labels"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof RichTextEditorFloatingToolbarDirective; inputs: {}; outputs: {}; }]>;
11295
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RichTextEditorComponent, "et-rich-text-editor", never, {}, {}, never, never, true, [{ directive: typeof RichTextEditorDirective; inputs: { "value": "value"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "tools": "tools"; "autoformat": "autoformat"; "labels": "labels"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }]>;
10857
11296
  }
10858
11297
 
10859
11298
  declare const RICH_TEXT_EDITOR_IMPORTS: readonly [typeof RichTextEditorComponent, typeof RichTextEditorDirective];
@@ -11392,9 +11831,9 @@ type SelectSelectedEntry = {
11392
11831
  item: SelectItem | null;
11393
11832
  };
11394
11833
 
11395
- type SelectOptionTemplateContext = {
11834
+ type SelectOptionTemplateContext<TOption extends SelectOptionData = SelectOptionData> = {
11396
11835
  /** The option's source entry from the `options` input - extra fields included. */
11397
- $implicit: SelectOptionData;
11836
+ $implicit: TOption;
11398
11837
  item: SelectItem;
11399
11838
  };
11400
11839
  /**
@@ -11402,14 +11841,22 @@ type SelectOptionTemplateContext = {
11402
11841
  * present, `et-select` renders this template as each option's label content instead of the
11403
11842
  * plain label text. Only applies to data-driven rows - projected `et-select-option`s carry
11404
11843
  * their own content.
11844
+ *
11845
+ * `let-option`'s type widens to the base `SelectOptionData` unless this directive's own
11846
+ * `[options]` is also bound to the same array passed to the select's `[options]` - e.g.
11847
+ * `<ng-template etSelectOptionTemplate [options]="managers()" let-option>` - which carries the
11848
+ * array's element type into the template context, extra fields included.
11405
11849
  */
11406
- declare class SelectOptionTemplateDirective {
11850
+ declare class SelectOptionTemplateDirective<TOption extends SelectOptionData = SelectOptionData> {
11851
+ private readonly hostElement;
11407
11852
  private select;
11408
- templateRef: TemplateRef<SelectOptionTemplateContext>;
11853
+ templateRef: TemplateRef<SelectOptionTemplateContext<TOption>>;
11854
+ /** Type witness only, to type `let-option` - bind the same array passed to the select's `[options]`. Never read. */
11855
+ options: _angular_core.InputSignal<readonly TOption[] | undefined>;
11409
11856
  constructor();
11410
- static ngTemplateContextGuard(_directive: SelectOptionTemplateDirective, _context: unknown): _context is SelectOptionTemplateContext;
11411
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectOptionTemplateDirective, never>;
11412
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectOptionTemplateDirective, "ng-template[etSelectOptionTemplate]", ["etSelectOptionTemplate"], {}, {}, never, never, true, never>;
11857
+ static ngTemplateContextGuard<TOption extends SelectOptionData>(_directive: SelectOptionTemplateDirective<TOption>, _context: unknown): _context is SelectOptionTemplateContext<TOption>;
11858
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectOptionTemplateDirective<any>, never>;
11859
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectOptionTemplateDirective<any>, "ng-template[etSelectOptionTemplate]", ["etSelectOptionTemplate"], { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11413
11860
  }
11414
11861
 
11415
11862
  /**
@@ -11452,6 +11899,7 @@ declare class SelectSearchDirective {
11452
11899
 
11453
11900
  /** Replaces the default loading row rendered while the select's `loading` input is true. */
11454
11901
  declare class SelectLoadingDirective {
11902
+ private readonly hostElement;
11455
11903
  private select;
11456
11904
  templateRef: TemplateRef<unknown>;
11457
11905
  constructor();
@@ -11463,6 +11911,7 @@ type SelectErrorContext = {
11463
11911
  };
11464
11912
  /** Replaces the default error row rendered while the select's `error` input is set. Context: the error text. */
11465
11913
  declare class SelectErrorDirective {
11914
+ private readonly hostElement;
11466
11915
  private select;
11467
11916
  templateRef: TemplateRef<SelectErrorContext>;
11468
11917
  constructor();
@@ -11471,6 +11920,7 @@ declare class SelectErrorDirective {
11471
11920
  }
11472
11921
  /** Replaces the default empty row rendered when no options are visible. */
11473
11922
  declare class SelectEmptyDirective {
11923
+ private readonly hostElement;
11474
11924
  private select;
11475
11925
  templateRef: TemplateRef<unknown>;
11476
11926
  constructor();
@@ -11484,6 +11934,7 @@ type SelectSurfaceContext = {
11484
11934
  close: () => void;
11485
11935
  };
11486
11936
  declare class SelectSurfaceDirective {
11937
+ private readonly hostElement;
11487
11938
  private select;
11488
11939
  templateRef: TemplateRef<SelectSurfaceContext>;
11489
11940
  constructor();
@@ -11528,6 +11979,7 @@ type SelectValueContext = {
11528
11979
  * selected items as context.
11529
11980
  */
11530
11981
  declare class SelectValueDirective {
11982
+ private readonly hostElement;
11531
11983
  private select;
11532
11984
  templateRef: TemplateRef<SelectValueContext>;
11533
11985
  constructor();
@@ -11573,6 +12025,7 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
11573
12025
  private formField;
11574
12026
  private destroyRef;
11575
12027
  private document;
12028
+ private readonly hostElement;
11576
12029
  value: _angular_core.ModelSignal<unknown>;
11577
12030
  /** View state for a field whose source values disagree. The raw form value stays untouched. */
11578
12031
  mixed: _angular_core.ModelSignal<boolean>;
@@ -11697,7 +12150,7 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
11697
12150
  /** @internal */
11698
12151
  registeredEmptyTemplate: WritableSignal<SelectEmptyDirective | null>;
11699
12152
  /** @internal */
11700
- registeredOptionTemplate: WritableSignal<SelectOptionTemplateDirective | null>;
12153
+ registeredOptionTemplate: WritableSignal<SelectOptionTemplateDirective<SelectOptionData> | null>;
11701
12154
  /** @internal The scrollable viewport that data-driven rendering windows against. */
11702
12155
  registeredViewport: WritableSignal<SelectViewportDirective | null>;
11703
12156
  /** @internal The option that holds virtual focus while the listbox is open. */
@@ -11856,6 +12309,7 @@ type SelectOptionGroupItem = {
11856
12309
  * all of its options are filtered out.
11857
12310
  */
11858
12311
  declare class SelectOptionGroupDirective {
12312
+ private readonly hostElement;
11859
12313
  private select;
11860
12314
  /** The group's accessible name - also the default header text in `et-select-option-group`. */
11861
12315
  label: _angular_core.InputSignal<string>;
@@ -12036,6 +12490,7 @@ declare const selectOptionsFromQuery: <TCreator extends AnyQueryCreator, TOption
12036
12490
  * the legacy `V2QueryClient` alike.
12037
12491
  */
12038
12492
  declare class SelectOptionsDirective implements OnInit {
12493
+ private readonly hostElement;
12039
12494
  private select;
12040
12495
  private destroyRef;
12041
12496
  /** The bundle from `selectOptionsFromQuery` / `selectOptionsFromV2Query`. */
@@ -12681,6 +13136,7 @@ declare class RangeSliderDirective implements FormValueControl<RangeSliderValue>
12681
13136
  private formFieldLabels;
12682
13137
  private formField;
12683
13138
  private destroyRef;
13139
+ private readonly hostElement;
12684
13140
  value: _angular_core.ModelSignal<RangeSliderValue>;
12685
13141
  /** View state for a field whose source values disagree. The raw form value stays untouched. */
12686
13142
  mixed: _angular_core.ModelSignal<boolean>;
@@ -12754,6 +13210,7 @@ declare class RangeSliderDirective implements FormValueControl<RangeSliderValue>
12754
13210
  declare class SliderThumbLabelDirective implements SliderThumbLabelBase {
12755
13211
  private slider;
12756
13212
  templateRef: TemplateRef<SliderThumbLabelContext>;
13213
+ private readonly hostElement;
12757
13214
  constructor();
12758
13215
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SliderThumbLabelDirective, never>;
12759
13216
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SliderThumbLabelDirective, "ng-template[etSliderThumbLabel]", ["etSliderThumbLabel"], {}, {}, never, never, true, never>;
@@ -12808,6 +13265,7 @@ declare class SliderDirective implements FormValueControl<number>, FormFieldCont
12808
13265
  private formFieldLabels;
12809
13266
  private formField;
12810
13267
  private destroyRef;
13268
+ private readonly hostElement;
12811
13269
  value: _angular_core.ModelSignal<number>;
12812
13270
  /** View state for a field whose source values disagree. The raw form value stays untouched. */
12813
13271
  mixed: _angular_core.ModelSignal<boolean>;
@@ -13633,6 +14091,7 @@ declare class GridResizeDirective {
13633
14091
  private gridItem;
13634
14092
  private destroyRef;
13635
14093
  private document;
14094
+ private readonly hostElement;
13636
14095
  isResizing: _angular_core.WritableSignal<boolean>;
13637
14096
  resizeEdges: _angular_core.Signal<ResizeEdge[]>;
13638
14097
  private start;
@@ -13885,7 +14344,7 @@ declare const provideIcons: (...icons: IconDefinition[]) => {
13885
14344
  * Keep this in sync when adding or removing a built-in `et-*` icon under
13886
14345
  * `libs/components/src/lib/icon/headless/`.
13887
14346
  */
13888
- declare const ET_BUILT_IN_ICON_NAMES: readonly ["et-align-center", "et-align-justify", "et-align-left", "et-align-right", "et-arrow-out-up-right", "et-arrow-right", "et-arrow-up", "et-arrows-left-right", "et-bold", "et-calendar", "et-check", "et-chevron", "et-circle-check", "et-circle-info", "et-clipboard-check", "et-clock", "et-code", "et-code-block", "et-ellipsis", "et-ellipsis-vertical", "et-eye", "et-eye-slash", "et-file", "et-filter", "et-floppy-disk", "et-focus-frame", "et-grid-2x2", "et-heading-1", "et-heading-2", "et-heading-3", "et-image", "et-italic", "et-link", "et-list-bulleted", "et-list-numbered", "et-lock", "et-minus", "et-paragraph", "et-pause", "et-pencil", "et-play", "et-plus", "et-quote", "et-redo", "et-rotate-right", "et-star", "et-strikethrough", "et-table", "et-times", "et-triangle-exclamation", "et-trophy", "et-underline", "et-undo", "et-upload"];
14347
+ declare const ET_BUILT_IN_ICON_NAMES: readonly ["et-align-center", "et-align-justify", "et-align-left", "et-align-right", "et-arrow-out-up-right", "et-arrow-right", "et-arrow-up", "et-arrows-left-right", "et-bold", "et-calendar", "et-check", "et-chevron", "et-circle-check", "et-circle-info", "et-clipboard-check", "et-clock", "et-code", "et-code-block", "et-ellipsis", "et-ellipsis-vertical", "et-eye", "et-eye-slash", "et-file", "et-filter", "et-floppy-disk", "et-focus-frame", "et-grid-2x2", "et-heading-1", "et-heading-2", "et-heading-3", "et-image", "et-italic", "et-link", "et-list-bulleted", "et-list-numbered", "et-location", "et-lock", "et-minus", "et-paragraph", "et-pause", "et-pencil", "et-play", "et-plus", "et-quote", "et-redo", "et-rotate-right", "et-star", "et-strikethrough", "et-table", "et-times", "et-triangle-exclamation", "et-trophy", "et-underline", "et-undo", "et-upload"];
13889
14348
  /** Union of the SDK's built-in icon names - see {@link ET_BUILT_IN_ICON_NAMES}. */
13890
14349
  type EtBuiltInIconName = (typeof ET_BUILT_IN_ICON_NAMES)[number];
13891
14350
  /**
@@ -14040,6 +14499,8 @@ declare const LIST_BULLETED_ICON: IconDefinition;
14040
14499
 
14041
14500
  declare const LIST_NUMBERED_ICON: IconDefinition;
14042
14501
 
14502
+ declare const LOCATION_ICON: IconDefinition;
14503
+
14043
14504
  declare const LOCK_ICON: IconDefinition;
14044
14505
 
14045
14506
  declare const MINUS_ICON: IconDefinition;
@@ -14254,9 +14715,9 @@ type MasonryPacking = {
14254
14715
  *
14255
14716
  * It measures and positions, because CSS still can't: native masonry (`display: grid-lanes`, CSS Grid Level
14256
14717
  * 3) is not Baseline as of this writing, and CSS `columns` fills column by column, so the reading order of a
14257
- * feed would no longer be its visual order. See `plans/cdk-port/07-masonry.md` for the full verdict. Items
14258
- * are therefore absolutely positioned from their measured sizes, which keeps DOM order and reading order the
14259
- * same and means a reflow never relayouts the page around it.
14718
+ * feed would no longer be its visual order. Items are therefore absolutely positioned from their measured
14719
+ * sizes, which keeps DOM order and reading order the same and means a reflow never relayouts the page
14720
+ * around it.
14260
14721
  *
14261
14722
  * The measuring is per item and continuous (a `ResizeObserver` each), so a card whose image loads late, or
14262
14723
  * whose text reflows, moves the ones below it - the one thing cdk's one-shot `getBoundingClientRect()`
@@ -14479,6 +14940,7 @@ declare const injectNotificationManagerConfig: _ethlete_core.InjectFn<Notificati
14479
14940
 
14480
14941
  declare class NotificationActionDirective {
14481
14942
  private notification;
14943
+ private readonly hostElement;
14482
14944
  /** Which action this element runs - `etNotificationAction="secondary"` for the quieter one. */
14483
14945
  actionSlot: _angular_core.InputSignalWithTransform<NotificationActionSlot, "" | NotificationActionSlot>;
14484
14946
  action: _angular_core.Signal<_ethlete_components.NotificationAction | undefined>;
@@ -14490,6 +14952,7 @@ declare class NotificationActionDirective {
14490
14952
 
14491
14953
  declare class NotificationDismissDirective {
14492
14954
  private notification;
14955
+ private readonly hostElement;
14493
14956
  constructor();
14494
14957
  dismiss(): void;
14495
14958
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationDismissDirective, never>;
@@ -14626,7 +15089,7 @@ declare class NotificationDirective {
14626
15089
  progress: _angular_core.Signal<number | undefined>;
14627
15090
  /** The notification's own icon override - `undefined` leaves the icon to its status, `null` means none. */
14628
15091
  icon: _angular_core.Signal<string | null | undefined>;
14629
- ariaRole: _angular_core.Signal<"status" | "alert">;
15092
+ ariaRole: _angular_core.Signal<"alert" | "status">;
14630
15093
  /** @internal Every action element inside this notification - one per slot at most, in registration order. */
14631
15094
  registeredActions: _angular_core.WritableSignal<NotificationActionDirective[]>;
14632
15095
  /** @internal */
@@ -16038,6 +16501,42 @@ declare class PaginationSeoDirective {
16038
16501
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PaginationSeoDirective, "[etPaginationSeo]", never, { "urlForPage": { "alias": "etPaginationSeo"; "required": false; "isSignal": true; }; "pageTitle": { "alias": "pageTitle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16039
16502
  }
16040
16503
 
16504
+ declare const PROGRESS_STEP_STATES: {
16505
+ readonly COMPLETE: "complete";
16506
+ readonly CURRENT: "current";
16507
+ readonly UPCOMING: "upcoming";
16508
+ };
16509
+ type ProgressStepState = (typeof PROGRESS_STEP_STATES)[keyof typeof PROGRESS_STEP_STATES];
16510
+ /**
16511
+ * One step in an `et-progress-steps` row: a numbered marker that becomes a checkmark once
16512
+ * `complete`, plus a label. `state` is yours to set per step - nothing is derived from position, so
16513
+ * a skipped or out-of-order step is exactly as easy to render as a strictly linear one.
16514
+ */
16515
+ declare class ProgressStepComponent {
16516
+ state: _angular_core.InputSignal<ProgressStepState>;
16517
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressStepComponent, never>;
16518
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressStepComponent, "et-progress-step", never, { "state": { "alias": "state"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
16519
+ }
16520
+
16521
+ /**
16522
+ * Lays out a row of `et-progress-step`s with automatic step numbering and a connecting line
16523
+ * between them - project the steps in order, each with its own `state`.
16524
+ *
16525
+ * @example
16526
+ * <et-progress-steps>
16527
+ * <et-progress-step state="complete">Account</et-progress-step>
16528
+ * <et-progress-step state="current">Shipping</et-progress-step>
16529
+ * <et-progress-step state="upcoming">Payment</et-progress-step>
16530
+ * </et-progress-steps>
16531
+ */
16532
+ declare class ProgressStepsComponent {
16533
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressStepsComponent, never>;
16534
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressStepsComponent, "et-progress-steps", never, {}, {}, never, ["*"], true, never>;
16535
+ }
16536
+
16537
+ declare const PROGRESS_STEPS_IMPORTS: readonly [typeof ProgressStepsComponent, typeof ProgressStepComponent];
16538
+
16539
+ /** A JSON value's kind as the value explorer (and its per-node override menu) categorizes it. */
16041
16540
  type JsonKind = 'string' | 'number' | 'boolean' | 'null' | 'undefined' | 'array' | 'object';
16042
16541
  type JsonEntry = {
16043
16542
  k: string;
@@ -16049,6 +16548,7 @@ type JsonChunk = {
16049
16548
  end: number;
16050
16549
  label: string;
16051
16550
  };
16551
+ declare const kindOf: (value: unknown) => JsonKind;
16052
16552
  /**
16053
16553
  * A recursive, collapsible, searchable JSON tree used by the query devtools value explorer. Renders
16054
16554
  * the *transformed* value the app actually sees (post `transformResponse`). Self-recurses via its
@@ -16074,6 +16574,12 @@ declare class QueryDevtoolsJsonComponent {
16074
16574
  collapsedPaths: _angular_core.InputSignal<ReadonlySet<string> | null>;
16075
16575
  /** When provided, expansion is externally persisted via this callback instead of local state. */
16076
16576
  toggleFn: _angular_core.InputSignal<((path: string, expand: boolean) => void) | null>;
16577
+ /** Same node as {@link path}, but as the array-of-steps an override op targets rather than a display key. */
16578
+ jsonPath: _angular_core.InputSignal<JsonPath>;
16579
+ /** The kind of the container holding this node, so its override menu can offer "duplicate this item". */
16580
+ parentKind: _angular_core.InputSignal<JsonKind | null>;
16581
+ /** When provided, every node renders an override menu that arms/clears ops through it. */
16582
+ overrides: _angular_core.InputSignal<QueryDevtoolsOverridesRecorder | null>;
16077
16583
  protected kind: _angular_core.Signal<JsonKind>;
16078
16584
  protected isContainer: _angular_core.Signal<boolean>;
16079
16585
  /** The entries this node covers: the container's own, or just the window a chunk stands for. */
@@ -16098,6 +16604,7 @@ declare class QueryDevtoolsJsonComponent {
16098
16604
  protected valueHit: _angular_core.Signal<boolean>;
16099
16605
  constructor();
16100
16606
  protected childPath(key: string): string;
16607
+ protected childJsonPath(key: string): JsonPath;
16101
16608
  protected toggle(): void;
16102
16609
  /**
16103
16610
  * Containers copy their whole subtree as JSON, slices only the entries they cover; leaves copy
@@ -16108,7 +16615,29 @@ declare class QueryDevtoolsJsonComponent {
16108
16615
  private chunkValue;
16109
16616
  private flagCopied;
16110
16617
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryDevtoolsJsonComponent, never>;
16111
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsJsonComponent, "et-query-devtools-json", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "depth": { "alias": "depth"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "chunk": { "alias": "chunk"; "required": false; "isSignal": true; }; "path": { "alias": "path"; "required": false; "isSignal": true; }; "expandedPaths": { "alias": "expandedPaths"; "required": false; "isSignal": true; }; "collapsedPaths": { "alias": "collapsedPaths"; "required": false; "isSignal": true; }; "toggleFn": { "alias": "toggleFn"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16618
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsJsonComponent, "et-query-devtools-json", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "depth": { "alias": "depth"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "chunk": { "alias": "chunk"; "required": false; "isSignal": true; }; "path": { "alias": "path"; "required": false; "isSignal": true; }; "expandedPaths": { "alias": "expandedPaths"; "required": false; "isSignal": true; }; "collapsedPaths": { "alias": "collapsedPaths"; "required": false; "isSignal": true; }; "toggleFn": { "alias": "toggleFn"; "required": false; "isSignal": true; }; "jsonPath": { "alias": "jsonPath"; "required": false; "isSignal": true; }; "parentKind": { "alias": "parentKind"; "required": false; "isSignal": true; }; "overrides": { "alias": "overrides"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16619
+ }
16620
+
16621
+ /**
16622
+ * The value explorer's tree chrome, as a styles-only component the tree mounts itself - a session that
16623
+ * never opens a JSON view does not inject it.
16624
+ *
16625
+ * @internal
16626
+ */
16627
+ declare class QueryDevtoolsJsonStylesComponent {
16628
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryDevtoolsJsonStylesComponent, never>;
16629
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsJsonStylesComponent, "et-query-devtools-json-styles", never, {}, {}, never, never, true, never>;
16630
+ }
16631
+
16632
+ /**
16633
+ * The waterfall's grid, axis and bars, as a styles-only component the panel mounts when the Timeline tab
16634
+ * is first opened.
16635
+ *
16636
+ * @internal
16637
+ */
16638
+ declare class QueryDevtoolsTimelineStylesComponent {
16639
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryDevtoolsTimelineStylesComponent, never>;
16640
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsTimelineStylesComponent, "et-query-devtools-timeline-styles", never, {}, {}, never, never, true, never>;
16112
16641
  }
16113
16642
 
16114
16643
  /**
@@ -16118,10 +16647,11 @@ declare class QueryDevtoolsJsonComponent {
16118
16647
  * font-size; theme accent colour is read from an inherited custom property with a fallback.
16119
16648
  */
16120
16649
  declare class QueryDevtoolsToggleComponent {
16650
+ tampered: _angular_core.InputSignal<boolean>;
16121
16651
  openChange: _angular_core.OutputEmitterRef<void>;
16122
16652
  protected shortcut: string;
16123
16653
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryDevtoolsToggleComponent, never>;
16124
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsToggleComponent, "et-query-devtools-toggle", never, {}, { "openChange": "openChange"; }, never, never, true, never>;
16654
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsToggleComponent, "et-query-devtools-toggle", never, { "tampered": { "alias": "tampered"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; }, never, never, true, never>;
16125
16655
  }
16126
16656
 
16127
16657
  /** Whether a path exists only in the newer value, only in the older one, or in both with a new value. */
@@ -16149,20 +16679,16 @@ type DevtoolsTab = 'queries' | 'stacks' | 'sequences' | 'forms' | 'auth' | 'ws'
16149
16679
  * holds more than fits a column, and everything below the actions is reading material.
16150
16680
  */
16151
16681
  type DetailTab = 'overview' | 'history' | 'data';
16682
+ /**
16683
+ * Which pane of a two-pane tab a divider drag sizes: the Queries tab's list, or the drawer every
16684
+ * split view opens a query in.
16685
+ */
16686
+ type PaneTarget = 'list' | 'drawer';
16687
+ /** The axis a two-pane tab splits along: the panes sit side by side, or stack in a side dock. */
16688
+ type PaneAxis = 'inline' | 'block';
16152
16689
  type QueryStatus = 'idle' | 'loading' | 'success' | 'error';
16153
16690
  /** A live-state facet the Queries list can be narrowed to. */
16154
16691
  type QueryListFacet = 'error' | 'loading' | 'stale' | 'idle';
16155
- /**
16156
- * What a tab holds, as its badge reports it: how many entries, and how many of them are failing.
16157
- * `errorNoun` renames what the red badge counts for a tab where it is not a failure.
16158
- */
16159
- type TabBadge = {
16160
- count: number;
16161
- errors: number;
16162
- errorNoun?: string;
16163
- };
16164
- /** The fault fields the panel arms from a number input, as opposed to the status it picks from a list. */
16165
- type NumericFaultField = 'latencyMs' | 'failNext' | 'failRate';
16166
16692
  /**
16167
16693
  * A chunk of a route as rendered: literal path text, a path param (`name` is the param it fills in) or
16168
16694
  * the query string of the request that ran. The kind becomes the segment's class.
@@ -16205,30 +16731,6 @@ type RequestProgress = {
16205
16731
  retryInMs: number | null;
16206
16732
  progress: HttpRequestLoadingProgressState | null;
16207
16733
  };
16208
- /**
16209
- * One run of one query, placed on the timeline's shared axis. `leftPct` / `widthPct` are percentages of
16210
- * the window every row is laid out against, which is what makes overlapping runs visible as overlap.
16211
- */
16212
- type TimelineRow = {
16213
- key: string;
16214
- entryId: string;
16215
- method: string;
16216
- path: string;
16217
- run: QueryDevtoolsRun;
16218
- leftPct: number;
16219
- widthPct: number;
16220
- /** How long the run took, or `null` while it is still in flight. */
16221
- durationMs: number | null;
16222
- };
16223
- type Timeline = {
16224
- rows: TimelineRow[];
16225
- /** The start of the window the rows are laid out against. */
16226
- startedAt: number;
16227
- /** How long that window is - the axis every bar is a fraction of. */
16228
- windowMs: number;
16229
- /** How many older runs the view left out, so a capped timeline does not read as a complete one. */
16230
- hidden: number;
16231
- };
16232
16734
  /**
16233
16735
  * One request a refresh re-executed, as an event row lists it. A cache key is shared by every query
16234
16736
  * bound to it, so the row carries all of their ids - one to open, and the rest so each of those queries
@@ -16243,7 +16745,7 @@ type EventLogItem = {
16243
16745
  id: number;
16244
16746
  timestamp: number;
16245
16747
  client: string;
16246
- type: QueryRepositoryEvent['type'];
16748
+ type: 'entry-created' | 'request-success' | 'request-error' | 'unbind-all-secure' | 'queries-refreshed';
16247
16749
  /** `null` for events that are not about a single request, e.g. the logout-wide secure unbind. */
16248
16750
  method: string | null;
16249
16751
  url: string | null;
@@ -16258,10 +16760,52 @@ type EventLogItem = {
16258
16760
  cause: QueryRefreshCause | null;
16259
16761
  /** The requests that refresh re-executed - the fan-out the panel could not show before. */
16260
16762
  refreshed: RefreshedRequest[] | null;
16763
+ /**
16764
+ * How long the request took and how big its response was, read off the request as the event fired.
16765
+ * Both `null` for an event that is not one request settling, and the size also for a failure - an
16766
+ * error body is not a payload worth a column.
16767
+ */
16768
+ durationMs: number | null;
16769
+ bytes: number | null;
16770
+ /** @see QueryDevtoolsStats.hasEstimatedBytes */
16771
+ isEstimatedBytes: boolean;
16772
+ };
16773
+ /** One cache entry as the Cache tab lists it: the repository's own snapshot plus its measured size. */
16774
+ type CacheRow = {
16775
+ entry: QueryRepositoryCacheEntry;
16776
+ bytes: number;
16777
+ isEstimatedBytes: boolean;
16261
16778
  };
16779
+ /** What each tab holds, as its badge reports it: how many entries, and how many of them are failing. */
16780
+ type TabBadge = {
16781
+ count: number;
16782
+ errors: number;
16783
+ errorNoun?: string;
16784
+ };
16785
+
16786
+ /** Which edge the panel is attached to. A pop-out is not one of these - it is a window, not an edge. */
16787
+ type DevtoolsDock = 'bottom' | 'right';
16788
+ /** A drag in progress: either the panel's docked edge, or the divider between a two-pane tab's panes. */
16789
+ type ResizeDrag = {
16790
+ /** The document the pointer moves in - a popped-out panel lives in a window of its own. */
16791
+ doc: Document;
16792
+ } & ({
16793
+ kind: 'panel';
16794
+ } | {
16795
+ kind: 'pane';
16796
+ pane: PaneTarget;
16797
+ axis: PaneAxis;
16798
+ container: HTMLElement;
16799
+ });
16262
16800
  type PersistedState = {
16263
16801
  open?: boolean;
16264
16802
  height?: number;
16803
+ width?: number;
16804
+ listWidth?: number | null;
16805
+ drawerWidth?: number | null;
16806
+ listHeight?: number | null;
16807
+ drawerHeight?: number | null;
16808
+ dock?: DevtoolsDock;
16265
16809
  activeTab?: DevtoolsTab;
16266
16810
  detailTab?: DetailTab;
16267
16811
  selectedClientName?: string | null;
@@ -16270,6 +16814,9 @@ type PersistedState = {
16270
16814
  inspectFilterIds?: string[] | null;
16271
16815
  queryFilter?: string;
16272
16816
  queryFacets?: QueryListFacet[];
16817
+ eventClient?: string | null;
16818
+ eventErrorsOnly?: boolean;
16819
+ socketFilter?: string;
16273
16820
  jsonSearch?: string;
16274
16821
  expandedSteps?: string[];
16275
16822
  jsonExpanded?: string[];
@@ -16286,7 +16833,14 @@ type PersistedState = {
16286
16833
  declare class QueryDevtoolsComponent {
16287
16834
  private hostEl;
16288
16835
  private renderer;
16289
- protected document: Document;
16836
+ private styleManager;
16837
+ private zone;
16838
+ private destroyRef;
16839
+ private document;
16840
+ /** The panel itself, so a pop-out can move it into another window's document. */
16841
+ private panelEl;
16842
+ /** The overflow tab menu, to tell a click inside it from one that should dismiss it. */
16843
+ private tabMenuEl;
16290
16844
  private eventIdCounter;
16291
16845
  private lastSelectionKey;
16292
16846
  readonly persisted: PersistedState;
@@ -16321,77 +16875,92 @@ declare class QueryDevtoolsComponent {
16321
16875
  id: "faults";
16322
16876
  label: string;
16323
16877
  })[];
16324
- protected readonly detailTabs: ({
16325
- id: "overview";
16326
- label: string;
16327
- } | {
16328
- id: "history";
16329
- label: string;
16330
- } | {
16331
- id: "data";
16332
- label: string;
16333
- })[];
16334
- /** The status chips above the Queries list, in the order a problem is usually looked for. */
16335
- protected readonly facets: ({
16336
- id: "error";
16337
- label: string;
16338
- } | {
16339
- id: "loading";
16340
- label: string;
16341
- } | {
16342
- id: "stale";
16343
- label: string;
16344
- } | {
16345
- id: "idle";
16346
- label: string;
16347
- })[];
16878
+ /**
16879
+ * Tabs the bar keeps whether they hold anything or not: the one the panel opens on, and the one that
16880
+ * arms faults - which has entries to arm rather than to count.
16881
+ */
16882
+ private readonly PINNED_TABS;
16348
16883
  protected readonly shortcut: string;
16349
16884
  protected open: WritableSignal<boolean>;
16350
- protected panelHeight: WritableSignal<number>;
16351
- protected resizing: WritableSignal<boolean>;
16885
+ private panelHeight;
16886
+ private panelWidth;
16352
16887
  protected activeTab: WritableSignal<DevtoolsTab>;
16888
+ /**
16889
+ * The dragged sizes of the two-pane tabs, in px, one pair per axis - a side dock stacks the panes, so
16890
+ * the same divider sizes them along the block axis there and a dock switch has to keep both. `null`
16891
+ * keeps the stylesheet's proportional default, which is also what a double-click on a divider restores.
16892
+ */
16893
+ protected listWidth: WritableSignal<number | null>;
16894
+ protected drawerWidth: WritableSignal<number | null>;
16895
+ protected listHeight: WritableSignal<number | null>;
16896
+ protected drawerHeight: WritableSignal<number | null>;
16897
+ protected drag: WritableSignal<ResizeDrag | null>;
16898
+ protected resizing: _angular_core.Signal<boolean>;
16899
+ /** Which edge the panel is docked to. */
16900
+ protected dock: WritableSignal<DevtoolsDock>;
16901
+ /**
16902
+ * Whether the panel currently lives in a window of its own. Deliberately not persisted: a reload
16903
+ * cannot re-adopt a window the previous document opened, so it always starts docked.
16904
+ */
16905
+ protected poppedOut: WritableSignal<boolean>;
16906
+ /** Which axis the two-pane tabs split along, which the stylesheet keys off the dock the same way. */
16907
+ private paneAxis;
16908
+ private popup;
16909
+ protected panelBlockSize: _angular_core.Signal<number | null>;
16910
+ protected panelInlineSize: _angular_core.Signal<number | null>;
16353
16911
  /** Which section of the query detail is showing. Shared by the Queries tab and both drawers. */
16354
- protected detailTab: WritableSignal<DetailTab>;
16355
- protected selectedClientName: WritableSignal<string | null>;
16356
- protected selectedQueryId: WritableSignal<string | null>;
16912
+ detailTab: WritableSignal<DetailTab>;
16913
+ selectedClientName: WritableSignal<string | null>;
16914
+ selectedQueryId: WritableSignal<string | null>;
16357
16915
  /** The form whose detail the Forms tab has expanded. */
16358
- protected selectedFormId: WritableSignal<string | null>;
16359
- protected stackSelectedQueryId: WritableSignal<string | null>;
16360
- protected sequenceSelectedQueryId: WritableSignal<string | null>;
16361
- protected formSelectedQueryId: WritableSignal<string | null>;
16362
- protected timelineSelectedQueryId: WritableSignal<string | null>;
16916
+ selectedFormId: WritableSignal<string | null>;
16917
+ stackSelectedQueryId: WritableSignal<string | null>;
16918
+ sequenceSelectedQueryId: WritableSignal<string | null>;
16919
+ formSelectedQueryId: WritableSignal<string | null>;
16920
+ timelineSelectedQueryId: WritableSignal<string | null>;
16363
16921
  /** Free-text narrowing of the Queries list. Every whitespace-separated term has to match. */
16364
- protected queryFilter: WritableSignal<string>;
16922
+ queryFilter: WritableSignal<string>;
16365
16923
  /** The status facets the Queries list is narrowed to. Empty means no status narrowing. */
16366
16924
  queryFacets: WritableSignal<ReadonlySet<QueryListFacet>>;
16367
- protected eventLog: WritableSignal<EventLogItem[]>;
16925
+ eventLog: WritableSignal<EventLogItem[]>;
16926
+ /** The client (by base URL) the event log is scoped to, or `null` for all of them. */
16927
+ eventClient: WritableSignal<string | null>;
16928
+ /** Whether the event log is narrowed to failures - the rows a bug report is about. */
16929
+ eventErrorsOnly: WritableSignal<boolean>;
16930
+ /** Free-text narrowing of every socket's message log. Matches the event, the room and the direction. */
16931
+ socketFilter: WritableSignal<string>;
16932
+ /** The cache entry whose response is expanded, as `<client>|<key>`, or `null` while none is. */
16933
+ private expandedCacheKey;
16934
+ /** The socket whose emit box last failed, so the message shows on that card and no other. */
16935
+ private socketEmitError;
16368
16936
  /** Keys (`<entryId>:<stepIndex>`) of the sequence steps whose in/out detail is expanded. */
16369
16937
  private expandedSteps;
16370
16938
  /** Shared value-explorer search term. */
16371
- protected jsonSearch: WritableSignal<string>;
16372
- protected jsonSearchTerm: _angular_core.Signal<string>;
16939
+ jsonSearch: WritableSignal<string>;
16940
+ jsonSearchTerm: _angular_core.Signal<string>;
16373
16941
  /** Path-keyed value-explorer expansion overrides (persisted so open trees survive a reload). */
16374
- protected jsonExpandedPaths: WritableSignal<ReadonlySet<string>>;
16375
- protected jsonCollapsedPaths: WritableSignal<ReadonlySet<string>>;
16942
+ jsonExpandedPaths: WritableSignal<ReadonlySet<string>>;
16943
+ jsonCollapsedPaths: WritableSignal<ReadonlySet<string>>;
16376
16944
  /** Bound callback passed into the value explorer to persist per-path expansion. Assigned in the constructor. */
16377
- protected toggleJsonPath: (path: string, expand: boolean) => void;
16945
+ toggleJsonPath: (path: string, expand: boolean) => void;
16378
16946
  /** The run whose response the diff is comparing, by run index, or `null` while no diff is open. */
16379
- protected diffRunIndex: WritableSignal<number | null>;
16947
+ diffRunIndex: WritableSignal<number | null>;
16380
16948
  /** JIT editor state (response / args editing on the selected query). */
16381
- protected editorMode: WritableSignal<"none" | "response" | "args">;
16382
- protected responseDraft: WritableSignal<string>;
16383
- protected argsDraft: WritableSignal<string>;
16949
+ editorMode: WritableSignal<"none" | "response" | "args">;
16950
+ responseDraft: WritableSignal<string>;
16951
+ argsDraft: WritableSignal<string>;
16384
16952
  /**
16385
16953
  * The text the currently open editor was seeded with. The textareas bind `value` to this and not to
16386
16954
  * the live draft: a `value` binding fed by the draft is written back on every keystroke, and writing
16387
16955
  * a textarea's `value` puts the caret at the end.
16388
16956
  */
16389
- protected editorSeed: string;
16390
- protected editError: WritableSignal<string | null>;
16391
- /** Transient "Copied!" feedback for the copy-report, copy-as-Insomnia and copy-document actions. */
16392
- protected copiedReport: WritableSignal<boolean>;
16393
- protected copiedInsomnia: WritableSignal<boolean>;
16394
- protected copiedGql: WritableSignal<boolean>;
16957
+ editorSeed: string;
16958
+ editError: WritableSignal<string | null>;
16959
+ /** Transient "Copied!" feedback for the copy-report, copy-as-Insomnia / cURL and copy-document actions. */
16960
+ copiedReport: WritableSignal<boolean>;
16961
+ copiedInsomnia: WritableSignal<boolean>;
16962
+ copiedCurl: WritableSignal<boolean>;
16963
+ copiedGql: WritableSignal<boolean>;
16395
16964
  private copiedReset$;
16396
16965
  /** 1-second tick driving the cache freshness countdowns. */
16397
16966
  private clock;
@@ -16402,22 +16971,23 @@ declare class QueryDevtoolsComponent {
16402
16971
  entries: QueryDevtoolsEntry[];
16403
16972
  } | null>;
16404
16973
  /** When set (via inspect), the Queries list is filtered to exactly these entry ids. */
16405
- protected inspectFilterIds: WritableSignal<string[] | null>;
16974
+ inspectFilterIds: WritableSignal<string[] | null>;
16406
16975
  private queryEntries;
16407
- protected stackEntries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16408
- protected sequenceEntries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16409
- protected formEntries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16410
- protected authEntries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16411
- protected wsEntries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16976
+ protected panelTampered: _angular_core.Signal<boolean>;
16977
+ stackEntries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16978
+ sequenceEntries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16979
+ formEntries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16980
+ authEntries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16981
+ wsEntries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16412
16982
  /** Unique client names present across queries and auth providers, for the Queries-tab picker. */
16413
- protected clientNames: _angular_core.Signal<string[]>;
16983
+ clientNames: _angular_core.Signal<string[]>;
16414
16984
  /** Unique repositories (with their client name + base URL) used by the Cache and Events tabs. */
16415
16985
  private repositories;
16416
16986
  /**
16417
16987
  * Every client the Faults tab can arm, with the fault it currently carries. Clients with nothing armed
16418
16988
  * read as {@link EMPTY_QUERY_DEVTOOLS_FAULT} so the inputs always have a value to show.
16419
16989
  */
16420
- protected faultClients: _angular_core.Signal<{
16990
+ faultClients: _angular_core.Signal<{
16421
16991
  name: string;
16422
16992
  baseUrl: string;
16423
16993
  fault: _ethlete_query.QueryDevtoolsFault;
@@ -16434,36 +17004,7 @@ declare class QueryDevtoolsComponent {
16434
17004
  * The queries the list is scoped to before the search box and the status chips narrow them further:
16435
17005
  * either the picked client's, or exactly the inspected element's.
16436
17006
  */
16437
- private scopedQueries;
16438
- private searchedQueries;
16439
- /**
16440
- * How many queries each status chip would leave. Counted before the active chips are applied, so a
16441
- * chip always states what picking it yields rather than what the current selection happens to show.
16442
- */
16443
- protected facetCounts: _angular_core.Signal<Record<QueryListFacet, number>>;
16444
- protected filteredQueries: _angular_core.Signal<{
16445
- entry: QueryDevtoolsEntry;
16446
- query: AnyQuery;
16447
- }[]>;
16448
- /** How many queries are in scope, which is what the list would show unfiltered. */
16449
- protected scopedQueryCount: _angular_core.Signal<number>;
16450
- /** Whether the search box or a status chip is narrowing the list beyond its scope. */
16451
- protected isQueryListNarrowed: _angular_core.Signal<boolean>;
16452
- /**
16453
- * Every run the scoped queries have recorded, oldest first. The client picker and the inspection
16454
- * filter narrow the timeline the same way they narrow the Queries list.
16455
- */
16456
- private scopedRuns;
16457
- /**
16458
- * Every scoped run laid out on one axis, so a stampede reads as overlapping bars and a chain as a
16459
- * staircase - which is what the Events tab's flat list of wall-clock times cannot show.
16460
- */
16461
- protected timeline: _angular_core.Signal<Timeline>;
16462
- /** Axis labels for the timeline, as offsets from the window's start. */
16463
- protected timelineTicks: _angular_core.Signal<{
16464
- pct: number;
16465
- label: string;
16466
- }[]>;
17007
+ scopedQueries: _angular_core.Signal<QueryDevtoolsEntry[]>;
16467
17008
  /** How many runs every query has recorded, for the Timeline tab's badge. */
16468
17009
  private runTotals;
16469
17010
  /** Cache entries across every client, for the Cache tab's badge. */
@@ -16473,262 +17014,387 @@ declare class QueryDevtoolsComponent {
16473
17014
  * subscribes the tab bar to every entry's live state - which is the point of the badges.
16474
17015
  */
16475
17016
  protected tabBadges: _angular_core.Signal<Record<DevtoolsTab, TabBadge>>;
16476
- protected selectedQuery: _angular_core.Signal<{
17017
+ /**
17018
+ * The tabs the bar shows: the pinned ones, the one that is open, and every tab that currently holds
17019
+ * something.
17020
+ */
17021
+ protected visibleTabs: _angular_core.Signal<({
17022
+ id: "queries";
17023
+ label: string;
17024
+ } | {
17025
+ id: "stacks";
17026
+ label: string;
17027
+ } | {
17028
+ id: "sequences";
17029
+ label: string;
17030
+ } | {
17031
+ id: "forms";
17032
+ label: string;
17033
+ } | {
17034
+ id: "auth";
17035
+ label: string;
17036
+ } | {
17037
+ id: "ws";
17038
+ label: string;
17039
+ } | {
17040
+ id: "cache";
17041
+ label: string;
17042
+ } | {
17043
+ id: "timeline";
17044
+ label: string;
17045
+ } | {
17046
+ id: "events";
17047
+ label: string;
17048
+ } | {
17049
+ id: "faults";
17050
+ label: string;
17051
+ })[]>;
17052
+ /** The empty tabs, which the bar offers behind "More" instead. */
17053
+ protected overflowTabs: _angular_core.Signal<({
17054
+ id: "queries";
17055
+ label: string;
17056
+ } | {
17057
+ id: "stacks";
17058
+ label: string;
17059
+ } | {
17060
+ id: "sequences";
17061
+ label: string;
17062
+ } | {
17063
+ id: "forms";
17064
+ label: string;
17065
+ } | {
17066
+ id: "auth";
17067
+ label: string;
17068
+ } | {
17069
+ id: "ws";
17070
+ label: string;
17071
+ } | {
17072
+ id: "cache";
17073
+ label: string;
17074
+ } | {
17075
+ id: "timeline";
17076
+ label: string;
17077
+ } | {
17078
+ id: "events";
17079
+ label: string;
17080
+ } | {
17081
+ id: "faults";
17082
+ label: string;
17083
+ })[]>;
17084
+ protected tabMenuOpen: WritableSignal<boolean>;
17085
+ selectedQuery: _angular_core.Signal<{
16477
17086
  entry: QueryDevtoolsEntry;
16478
17087
  query: AnyQuery;
16479
17088
  } | null>;
16480
- protected stackSelectedQuery: _angular_core.Signal<{
17089
+ stackSelectedQuery: _angular_core.Signal<{
16481
17090
  entry: QueryDevtoolsEntry;
16482
17091
  query: AnyQuery;
16483
17092
  } | null>;
16484
- protected sequenceSelectedQuery: _angular_core.Signal<{
17093
+ sequenceSelectedQuery: _angular_core.Signal<{
16485
17094
  entry: QueryDevtoolsEntry;
16486
17095
  query: AnyQuery;
16487
17096
  } | null>;
16488
- protected formSelectedQuery: _angular_core.Signal<{
17097
+ formSelectedQuery: _angular_core.Signal<{
16489
17098
  entry: QueryDevtoolsEntry;
16490
17099
  query: AnyQuery;
16491
17100
  } | null>;
16492
- protected timelineSelectedQuery: _angular_core.Signal<{
17101
+ timelineSelectedQuery: _angular_core.Signal<{
16493
17102
  entry: QueryDevtoolsEntry;
16494
17103
  query: AnyQuery;
16495
17104
  } | null>;
16496
- protected cacheView: _angular_core.Signal<{
17105
+ /**
17106
+ * The cache per client, with every entry's size measured. Reading each response inside the computed is
17107
+ * what keeps the totals current: a cache mutation bumps `cacheVersion`, but a response landing in an
17108
+ * entry that is already there does not.
17109
+ */
17110
+ cacheView: _angular_core.Signal<{
16497
17111
  name: string;
16498
17112
  baseUrl: string;
16499
17113
  repository: QueryRepository;
16500
- entries: QueryRepositoryCacheEntry[];
17114
+ rows: CacheRow[];
17115
+ bytes: number;
17116
+ isEstimatedBytes: boolean;
17117
+ unused: number;
16501
17118
  pollStates: Record<string, QueryKeyLockState>;
16502
17119
  client: QueryClient | null;
16503
17120
  }[]>;
16504
17121
  /** Map of a component's host element to the query entries it created (for the inspect tool). */
16505
17122
  private elementQueryMap;
16506
- protected readonly FAULT_STATUSES: {
16507
- status: number;
16508
- label: string;
16509
- retryable: boolean;
16510
- }[];
17123
+ /** Disarms every client's fault - the shell's "Faults armed" banner offers this above every tab. */
16511
17124
  protected readonly CLEAR_FAULTS: (clientName?: string) => void;
16512
- /** The ceiling each numeric fault field is clamped to. */
16513
- private readonly FAULT_LIMITS;
16514
17125
  constructor();
17126
+ /**
17127
+ * Closing while popped out docks back instead: the panel a pop-out shows is the very element the
17128
+ * `@if` below would destroy, so it has to come home before it can be closed.
17129
+ */
16515
17130
  protected toggleOpen(): void;
16516
- protected clearEvents(): void;
16517
- protected selectClient(name: string | null): void;
16518
- protected clearInspectFilter(): void;
16519
- protected toggleFacet(facet: QueryListFacet): void;
17131
+ protected toggleDock(): void;
17132
+ protected toggleTabMenu(): void;
17133
+ protected selectTab(tab: DevtoolsTab): void;
17134
+ /**
17135
+ * Moves the panel into a window of its own - the same element, adopted by the pop-up's document, so
17136
+ * every signal binding in it keeps updating from the app it is inspecting.
17137
+ *
17138
+ * The panel's styles are global `<style>` tags in the host document, and the theming tokens it reads
17139
+ * hang off the root element, so both are copied over; without them the pop-out renders unstyled.
17140
+ */
17141
+ protected popOut(): void;
17142
+ selectClient(name: string | null): void;
17143
+ clearInspectFilter(): void;
17144
+ toggleFacet(facet: QueryListFacet): void;
16520
17145
  /** Drops the search term and the status chips, keeping the client / inspection scope. */
16521
- protected clearQueryFilters(): void;
17146
+ clearQueryFilters(): void;
16522
17147
  protected toggleInspect(): void;
16523
17148
  protected startResize(event: PointerEvent): void;
17149
+ startPaneResize(event: PointerEvent, target: {
17150
+ pane: PaneTarget;
17151
+ container: HTMLElement;
17152
+ }): void;
17153
+ /** Hands a pane back to the stylesheet's proportional default, on the axis it is being sized along. */
17154
+ resetPaneSize(pane: PaneTarget): void;
16524
17155
  protected inspectLabel(entries: QueryDevtoolsEntry[]): string;
16525
17156
  /**
16526
17157
  * A query's route, split so the template can tell its static path from its path params (each carrying
16527
17158
  * the value the query used, or `:<name>` while it has none yet) and from the query string of the
16528
17159
  * request that ran - which is what tells two requests to the same endpoint apart.
16529
17160
  */
16530
- protected routeSegments(entry: QueryDevtoolsEntry | undefined, query: AnyQuery): RouteSegment[];
17161
+ routeSegments(entry: QueryDevtoolsEntry | undefined, query: AnyQuery): RouteSegment[];
16531
17162
  /** The full URL of the request a query last made, or `null` while it has not executed. */
16532
- protected requestUrl(query: AnyQuery): string | null;
17163
+ requestUrl(query: AnyQuery): string | null;
16533
17164
  /**
16534
17165
  * The args of a query. A query executed imperatively (`execute({ args })`, a sequence step, an auth
16535
17166
  * query) never writes them to its own `args` signal - only the `withArgs` feature does - so the args
16536
17167
  * its current request was built from stand in.
16537
17168
  */
16538
- protected queryArgs(query: AnyQuery): Omit<any, "response"> | null;
16539
- protected queryStatus(query: AnyQuery): QueryStatus;
17169
+ queryArgs(query: AnyQuery): Omit<any, "response"> | null;
17170
+ queryStatus(query: AnyQuery): QueryStatus;
16540
17171
  /**
16541
17172
  * A request in flight is already refreshing, so reporting it as stale on top of `loading` is noise -
16542
17173
  * the same precedence the cache tab's freshness column applies.
16543
17174
  */
16544
- protected isStale(query: AnyQuery): boolean;
17175
+ isStale(query: AnyQuery): boolean;
17176
+ /**
17177
+ * Whether an entry is showing something other than what the server actually sent - an armed response
17178
+ * override, or a devtools fault that decided its last completed run. Deliberately not "a fault is
17179
+ * armed nearby": an armed-but-idle fault (a `failRate` under 100, say) mostly lets requests through
17180
+ * untouched, so that would over-claim for the vast majority of queries on that client.
17181
+ */
17182
+ isTampered(entry: QueryDevtoolsEntry): boolean;
16545
17183
  /**
16546
17184
  * What a query's current request is doing beyond being loading, or `null` when there is nothing beyond
16547
17185
  * the status dot to say - so the readout only takes up room while it carries something.
16548
17186
  */
16549
- protected requestProgress(query: AnyQuery): RequestProgress | null;
17187
+ requestProgress(query: AnyQuery): RequestProgress | null;
16550
17188
  /** Why a retry was scheduled, as the panel spells it out. A status of 0 never reached the server. */
16551
- protected retryCause(status: number): string;
16552
- protected formatPercent(percentage: number): string;
17189
+ retryCause(status: number): string;
17190
+ formatPercent(percentage: number): string;
16553
17191
  /** A countdown in whole seconds, spelled out the way the cache freshness column does. */
16554
- protected formatCountdown(ms: number | null): string;
16555
- protected queryActivity(entry: QueryDevtoolsEntry): QueryActivity;
16556
- protected linkActivity(link: QueryLink): QueryActivity;
16557
- protected stackActivity(stack: AnyQueryStack | AnyPagedQueryStack): QueryActivity;
16558
- protected sequenceActivity(sequence: QuerySequence<unknown[]>): QueryActivity;
17192
+ formatCountdown(ms: number | null): string;
17193
+ queryActivity(entry: QueryDevtoolsEntry): QueryActivity;
17194
+ linkActivity(link: QueryLink): QueryActivity;
17195
+ stackActivity(stack: AnyQueryStack | AnyPagedQueryStack): QueryActivity;
17196
+ sequenceActivity(sequence: QuerySequence<unknown[]>): QueryActivity;
16559
17197
  /** Clears an entry's counters and run history, so the next interaction can be measured on its own. */
16560
- protected resetStats(entry: QueryDevtoolsEntry): void;
16561
- /** The same, for every query the timeline covers. */
16562
- protected resetTimeline(): void;
17198
+ resetStats(entry: QueryDevtoolsEntry): void;
16563
17199
  /** A query's runs, newest first - the order a history is read in. */
16564
- protected queryRuns(entry: QueryDevtoolsEntry): QueryDevtoolsRun[];
17200
+ queryRuns(entry: QueryDevtoolsEntry): QueryDevtoolsRun[];
16565
17201
  /**
16566
17202
  * What a run's status dot and timeline bar colour by. `pending` reuses the panel's loading colour;
16567
17203
  * `aborted` matches no rule and so falls back to the neutral one.
16568
17204
  */
16569
- protected runStatus(run: QueryDevtoolsRun): "loading" | "error" | "success" | "aborted";
17205
+ runStatus(run: QueryDevtoolsRun): "success" | "error" | "loading" | "aborted";
16570
17206
  /** Whether a run can be diffed: it still holds its body, and so does an older run of the same query. */
16571
- protected canDiffRun(entry: QueryDevtoolsEntry, run: QueryDevtoolsRun): boolean;
16572
- protected toggleRunDiff(run: QueryDevtoolsRun): void;
17207
+ canDiffRun(entry: QueryDevtoolsEntry, run: QueryDevtoolsRun): boolean;
17208
+ toggleRunDiff(run: QueryDevtoolsRun): void;
16573
17209
  /**
16574
17210
  * The response diff of the picked run against the newest older run that still holds a body - which is
16575
17211
  * not necessarily the run right before it, since a failed run has none to compare.
16576
17212
  *
16577
17213
  * `null` unless a run is picked, so a closed diff costs nothing to walk.
16578
17214
  */
16579
- protected responseDiff(entry: QueryDevtoolsEntry): {
17215
+ responseDiff(entry: QueryDevtoolsEntry): {
16580
17216
  before: QueryDevtoolsRun;
16581
17217
  after: QueryDevtoolsRun;
16582
17218
  diff: QueryDevtoolsDiff;
16583
17219
  } | null;
16584
17220
  /** Opens a query in the Queries tab - the Events tab is a way in, not a dead end. */
16585
- protected selectQuery(id: string): void;
16586
- protected selectTimelineRow(row: TimelineRow): void;
16587
- protected selectEventRow(item: EventLogItem): void;
17221
+ selectQuery(id: string): void;
16588
17222
  /** A value on one line, for a diff row or a form field. The full tree would bury the row it sits in. */
16589
- protected inlineValue(value: unknown): string;
17223
+ inlineValue(value: unknown): string;
16590
17224
  /** A byte count the way a network panel spells one out. */
16591
- protected formatBytes(bytes: number): string;
17225
+ formatBytes(bytes: number): string;
16592
17226
  /**
16593
17227
  * A transferred size, marked `≈` when any part of it was measured from a decoded body instead of read
16594
17228
  * from a `content-length` header - such a size ignores transport compression.
16595
17229
  */
16596
- protected formatTransferred(bytes: number, isEstimated: boolean): string;
16597
- protected formatDuration(ms: number | null): string;
16598
- protected executeQuery(query: AnyQuery, allowCache: boolean): void;
16599
- protected resetQuery(query: AnyQuery): void;
17230
+ formatTransferred(bytes: number, isEstimated: boolean): string;
17231
+ /** A transfer rate, given in bytes per second the way `HttpRequestLoadingProgressState.speed` reports it. */
17232
+ formatSpeed(bytesPerSecond: number): string;
17233
+ formatDuration(ms: number | null): string;
17234
+ executeQuery(query: AnyQuery, allowCache: boolean): void;
17235
+ resetQuery(query: AnyQuery): void;
16600
17236
  /**
16601
17237
  * Copies a shareable report (path, args, status, slimmed response) for handing to an API dev.
16602
17238
  * Writes both rich `text/html` (Slack applies formatting on paste - it does not parse markdown) and
16603
17239
  * a plain-text fallback.
16604
17240
  */
16605
- protected copyReport(entry: QueryDevtoolsEntry, query: AnyQuery): void;
17241
+ copyReport(entry: QueryDevtoolsEntry, query: AnyQuery): void;
16606
17242
  /** Copies one query as an Insomnia collection, for `Import > From Clipboard`. */
16607
- protected copyInsomniaRequest(entry: QueryDevtoolsEntry, query: AnyQuery): void;
17243
+ copyInsomniaRequest(entry: QueryDevtoolsEntry, query: AnyQuery): void;
17244
+ /**
17245
+ * Copies one query as a `curl` command - what goes into a terminal, a ticket or a chat message, where
17246
+ * an Insomnia collection is too heavy to be read at all.
17247
+ */
17248
+ copyCurlRequest(entry: QueryDevtoolsEntry, query: AnyQuery): void;
16608
17249
  /** Copies the GraphQL document as displayed — dedented, so it pastes straight into a playground. */
16609
- protected copyGqlDocument(doc: string): void;
16610
- /**
16611
- * Downloads every query currently listed (so the client filter and the inspection filter both apply)
16612
- * as one Insomnia collection, filed into a folder per query client.
16613
- */
16614
- protected downloadInsomniaCollection(): void;
16615
- protected openResponseEditor(query: AnyQuery): void;
16616
- protected openArgsEditor(query: AnyQuery): void;
16617
- protected applyResponse(query: AnyQuery): void;
16618
- protected applyArgs(query: AnyQuery): void;
16619
- protected cancelEditor(): void;
16620
- protected forceLoading(query: AnyQuery): void;
16621
- protected forceError(query: AnyQuery): void;
16622
- protected forceEmpty(query: AnyQuery): void;
16623
- protected clearForced(query: AnyQuery): void;
16624
- /**
16625
- * Arms one numeric field of a client's fault from an input's raw value. Clamped here rather than left
16626
- * to the input's `min`/`max`, which a typed-in (or pasted) value ignores.
16627
- */
16628
- protected armFaultValue(options: {
16629
- clientName: string;
16630
- field: NumericFaultField;
16631
- value: string;
16632
- }): void;
16633
- protected armFaultStatus(options: {
16634
- clientName: string;
16635
- value: string;
16636
- }): void;
16637
- /** Whether the default retry policy retries the status a client is armed to fail with. */
16638
- protected isFaultStatusRetryable(status: number): boolean;
16639
- protected refetchCacheEntry(entry: QueryRepositoryCacheEntry): void;
16640
- protected evictCacheEntry(repository: QueryRepository, key: string): void;
16641
- protected cacheFreshness(entry: QueryRepositoryCacheEntry): string;
17250
+ copyGqlDocument(doc: string): void;
17251
+ /**
17252
+ * Downloads the given queries (already scoped/filtered by the caller) as one Insomnia collection,
17253
+ * filed into a folder per query client.
17254
+ */
17255
+ downloadInsomniaCollection(items: {
17256
+ entry: QueryDevtoolsEntry;
17257
+ query: AnyQuery;
17258
+ }[], clientLabel: string | null): void;
17259
+ /**
17260
+ * Downloads the whole panel as one JSON file: every registered entry with what it ran and what it
17261
+ * holds, the event log, the cache totals and anything armed in the Faults tab. Unlike **Copy report**
17262
+ * this is not scoped to one query - it is the attachment for a bug report about a screen.
17263
+ *
17264
+ * Deliberately unfiltered: a report is read by someone who was not there, and a dump that silently
17265
+ * left out the client you were not looking at is worse than no dump.
17266
+ */
17267
+ protected downloadSession(): void;
17268
+ openResponseEditor(query: AnyQuery): void;
17269
+ openArgsEditor(query: AnyQuery): void;
17270
+ applyResponse(query: AnyQuery): void;
17271
+ applyArgs(query: AnyQuery): void;
17272
+ cancelEditor(): void;
17273
+ forceLoading(query: AnyQuery): void;
17274
+ forceError(query: AnyQuery): void;
17275
+ forceEmpty(query: AnyQuery): void;
17276
+ clearForced(query: AnyQuery): void;
17277
+ refetchCacheEntry(entry: QueryRepositoryCacheEntry): void;
17278
+ evictCacheEntry(repository: QueryRepository, key: string): void;
17279
+ /**
17280
+ * Drops every entry of one client, consumers included - the cold-start check that does not need a
17281
+ * reload. A query still bound to an evicted entry requests again on its next execution.
17282
+ */
17283
+ evictAllCacheEntries(repository: QueryRepository): void;
17284
+ /**
17285
+ * Expands the response held under a cache key, which is the only way to read an entry no live query is
17286
+ * bound to any more - the Queries tab has nothing to select for it.
17287
+ */
17288
+ toggleCacheValue(clientName: string, key: string): void;
17289
+ isCacheValueExpanded(clientName: string, key: string): boolean;
17290
+ cacheFreshness(entry: QueryRepositoryCacheEntry): string;
16642
17291
  /**
16643
17292
  * What multi-tab sync is doing for a cache entry: whether this tab is the one polling the key, and
16644
17293
  * how long ago it last took a response from another tab. Empty when the client has no sync.
16645
17294
  */
16646
- protected cacheSync(entry: QueryRepositoryCacheEntry, pollStates: Record<string, QueryKeyLockState>): string;
17295
+ cacheSync(entry: QueryRepositoryCacheEntry, pollStates: Record<string, QueryKeyLockState>): string;
16647
17296
  /**
16648
17297
  * Whether a cache entry is showing data that came off the disk rather than the network - the answer
16649
17298
  * to "why is this here already?" on a cold start. Empty when the client does not persist responses.
16650
17299
  */
16651
- protected cachePersistence(entry: QueryRepositoryCacheEntry): string;
17300
+ cachePersistence(entry: QueryRepositoryCacheEntry): string;
16652
17301
  /** How many responses this client has on disk, which is usually more than it has in memory. */
16653
- protected persistedCount(client: QueryClient): number;
16654
- protected clearPersistedQueries(client: QueryClient): void;
17302
+ persistedCount(client: QueryClient): number;
17303
+ clearPersistedQueries(client: QueryClient): void;
16655
17304
  /** The path + query of a request URL (origin stripped), for readable cache/event identifiers. */
16656
- protected requestPath(url: string): string;
16657
- protected asStack(entry: QueryDevtoolsEntry): AnyQueryStack;
16658
- protected asPagedStack(entry: QueryDevtoolsEntry): AnyPagedQueryStack;
16659
- protected asSequence(entry: QueryDevtoolsEntry): QuerySequence<unknown[]>;
16660
- protected asAuth(entry: QueryDevtoolsEntry): AnyBearerAuthProvider;
16661
- protected asWs(entry: QueryDevtoolsEntry): WebSocketDevtoolsHandle;
16662
- protected asForm(entry: QueryDevtoolsEntry): QueryDevtoolsFormHandle;
17305
+ requestPath(url: string): string;
17306
+ asStack(entry: QueryDevtoolsEntry): AnyQueryStack;
17307
+ asPagedStack(entry: QueryDevtoolsEntry): AnyPagedQueryStack;
17308
+ asSequence(entry: QueryDevtoolsEntry): QuerySequence<unknown[]>;
17309
+ asAuth(entry: QueryDevtoolsEntry): AnyBearerAuthProvider;
17310
+ asWs(entry: QueryDevtoolsEntry): WebSocketDevtoolsHandle;
17311
+ /**
17312
+ * A socket's messages, narrowed by the filter box. Every whitespace-separated term has to match the
17313
+ * event, the room or the direction, so `out join` finds the room joins the client sent.
17314
+ */
17315
+ socketMessages(ws: WebSocketDevtoolsHandle): WebSocketDevtoolsMessage[];
17316
+ /** How the message log labels a direction: what the client sent, versus what the server pushed. */
17317
+ socketDirectionLabel(message: WebSocketDevtoolsMessage): "↑ sent" | "↓ received";
17318
+ /**
17319
+ * Sends a message as the app would, so a server that only answers a client that asked can be provoked
17320
+ * from the panel. An empty payload sends nothing rather than `""` - a plain event is a valid message.
17321
+ */
17322
+ emitSocketMessage(options: {
17323
+ entry: QueryDevtoolsEntry;
17324
+ event: string;
17325
+ data: string;
17326
+ }): void;
17327
+ socketEmitErrorFor(entryId: string): string | null;
17328
+ asForm(entry: QueryDevtoolsEntry): QueryDevtoolsFormHandle;
16663
17329
  /**
16664
17330
  * The queries a form feeds, discovered from the reads its `value()` recorded while their args were
16665
17331
  * built - so a form that nothing consumes yet reads as exactly that.
16666
17332
  */
16667
- protected queriesDrivenByForm(entry: QueryDevtoolsEntry): QueryLink[];
17333
+ queriesDrivenByForm(entry: QueryDevtoolsEntry): QueryLink[];
16668
17334
  /** The reverse: the forms whose value a query's args read. */
16669
- protected formsDrivingQuery(entry: QueryDevtoolsEntry): QueryDevtoolsEntry[];
16670
- protected selectForm(id: string): void;
17335
+ formsDrivingQuery(entry: QueryDevtoolsEntry): QueryDevtoolsEntry[];
17336
+ selectForm(id: string): void;
16671
17337
  /**
16672
17338
  * The refreshes that re-executed a query, newest first - the answer to "why did this refetch?". Read
16673
17339
  * off the event log, so it goes back exactly as far as the log does.
16674
17340
  */
16675
- protected refreshesFor(entryId: string): {
17341
+ refreshesFor(entryId: string): {
16676
17342
  id: number;
16677
17343
  timestamp: number;
16678
17344
  label: string;
16679
17345
  }[];
16680
17346
  /** What asked for a refresh, on one line. */
16681
- protected causeLabel(cause: QueryRefreshCause): string;
17347
+ causeLabel(cause: QueryRefreshCause): string;
16682
17348
  /** Derives the per-step status of a sequence step from its live progress signals. */
16683
- protected sequenceStepStatus(sequence: QuerySequence<unknown[]>, index: number): QuerySequenceStatus;
16684
- protected authTokenPayload(auth: AnyBearerAuthProvider): Record<string, unknown> | null;
16685
- protected queriesForStack(stack: AnyQueryStack | AnyPagedQueryStack): QueryLink[];
16686
- /** Identifying info for a stack, derived from its (uniform) inner queries. */
16687
- protected stackIdentity(stack: AnyQueryStack | AnyPagedQueryStack): {
16688
- method: string;
16689
- segments: RouteSegment[];
16690
- baseUrl: string;
16691
- };
16692
- protected authQueryKeys(auth: AnyBearerAuthProvider): string[];
17349
+ sequenceStepStatus(sequence: QuerySequence<unknown[]>, index: number): QuerySequenceStatus;
17350
+ authTokenPayload(auth: AnyBearerAuthProvider): Record<string, unknown> | null;
17351
+ queriesForStack(stack: AnyQueryStack | AnyPagedQueryStack): QueryLink[];
17352
+ authQueryKeys(auth: AnyBearerAuthProvider): string[];
16693
17353
  /** Countdown to the access-token's `exp` (the point a refresh becomes due), or `null` if unknown. */
16694
- protected authTokenExpiry(auth: AnyBearerAuthProvider): string | null;
16695
- protected queriesForSequence(sequence: QuerySequence<unknown[]>): QueryLink[];
17354
+ authTokenExpiry(auth: AnyBearerAuthProvider): string | null;
17355
+ queriesForSequence(sequence: QuerySequence<unknown[]>): QueryLink[];
16696
17356
  /** The snapshot of a sequence step, once it has run (holds the args in and the response/error out). */
16697
- protected stepSnapshot(sequence: QuerySequence<unknown[]>, index: number): AnyQuerySnapshot | null;
16698
- protected isStepExpanded(entryId: string, index: number): boolean;
16699
- protected toggleStep(entryId: string, index: number): void;
17357
+ stepSnapshot(sequence: QuerySequence<unknown[]>, index: number): AnyQuerySnapshot | null;
17358
+ isStepExpanded(entryId: string, index: number): boolean;
17359
+ toggleStep(entryId: string, index: number): void;
16700
17360
  /** Dedents a GraphQL document (template-literal indentation) for readable display. */
16701
- protected gqlDocument(doc: string): string;
16702
- protected featureLabel(type: string): string;
17361
+ gqlDocument(doc: string): string;
17362
+ featureLabel(type: string): string;
16703
17363
  /** A feature and its options on one line, for a report or a chip's tooltip. */
16704
17364
  featureSummary(feature: QueryDevtoolsFeature): string;
16705
17365
  /** The features of the client behind a cache tab card, or `null` for a client without any. */
16706
- protected clientFeatures(client: QueryClient | null | undefined): QueryDevtoolsFeature[] | null;
16707
- protected formatTime(timestamp: number | null): string;
16708
- protected eventTypeLabel(event: EventLogItem): string;
17366
+ clientFeatures(client: QueryClient | null | undefined): QueryDevtoolsFeature[] | null;
17367
+ formatTime(timestamp: number | null): string;
17368
+ private isTabPrimary;
17369
+ /** Moves the panel into a pop-up whose document has finished loading. @see popOut */
17370
+ private mountPopOut;
17371
+ /**
17372
+ * The panel's chrome tokens as the app currently resolves them, so a pop-out keeps the surface it was
17373
+ * docked in. Its own CSS resolves them from the host app's theme, and that theme is set on an ancestor
17374
+ * the pop-out does not have - inherited afresh over there, the panel would take the document's theme
17375
+ * (usually the light one) rather than the one it was just being read against.
17376
+ *
17377
+ * Empty on a browser that does not enumerate custom properties, which leaves the tokens to be
17378
+ * inherited as before.
17379
+ */
17380
+ private chromeTokens;
17381
+ /** Whether a `<head>` child carries CSS the pop-out needs a copy of. */
17382
+ private isStyleNode;
17383
+ /** Brings the panel back into the host element and closes the window it was living in. */
17384
+ private dockBack;
16709
17385
  /** A registered query as a row that opens the detail drawer. */
16710
17386
  private queryLinkFor;
16711
17387
  /** The activity of one entry, or the total of a group of them (a stack's queries, a whole tab). */
16712
17388
  private activityOf;
16713
17389
  /** An activity summary on one line, for a report. `null` for a query that has not run. */
16714
17390
  private activitySummary;
16715
- /** A query matches the chips if it is in any of the picked states - chips widen, they don't intersect. */
16716
- private matchesFacets;
16717
- /**
16718
- * What the search box matches against: what the row shows, plus the path of the request that ran for a
16719
- * query whose template differs from it.
16720
- *
16721
- * Deliberately not the origin or the client name - both repeat across most entries, so a short term
16722
- * ("p") would match nearly everything through the host name. Scoping to a client is the picker's job.
16723
- */
16724
- private queryHaystack;
16725
17391
  /** {@link routeSegments} as a plain string, for the places that cannot render markup. */
16726
17392
  private queryRoute;
16727
17393
  /**
16728
17394
  * Describes a query the way a replay outside the app needs it: the URL, headers and body of the
16729
17395
  * request it last made, or - for a query that has not run - what its current args would send.
16730
17396
  */
16731
- private insomniaRequest;
17397
+ private exportedRequest;
16732
17398
  /**
16733
17399
  * The token refreshes the given requests authenticate with - one per auth provider they name, and
16734
17400
  * only for a provider that is logged in, since a refresh request without a refresh token has
@@ -16753,9 +17419,30 @@ declare class QueryDevtoolsComponent {
16753
17419
  * (a secure query's needs an access token), in which case the request is exported without them.
16754
17420
  */
16755
17421
  private insomniaHeaders;
17422
+ private sessionClients;
17423
+ /** Every registered entry, described by whatever its kind carries. */
17424
+ private sessionEntries;
17425
+ private sessionQuery;
17426
+ private sessionActivity;
17427
+ private sessionSequence;
17428
+ private sessionForm;
17429
+ /**
17430
+ * An auth provider without its tokens. A session report is a file that gets attached to a ticket, and
17431
+ * the access token is the one thing in the panel that must never travel with it - which is why only
17432
+ * its presence and its remaining lifetime are exported.
17433
+ */
17434
+ private sessionAuth;
17435
+ private sessionSocket;
17436
+ private sessionEvents;
17437
+ private sessionFaults;
16756
17438
  private downloadFile;
16757
17439
  private stepKey;
17440
+ private paneSize;
17441
+ /** The panel's size is the distance from the pointer to the edge it is docked to. */
16758
17442
  private applyResize;
17443
+ /** A pane's size is the distance from the pointer to the container edge that pane sits against. */
17444
+ private applyPaneResize;
17445
+ private closePopup;
16759
17446
  private updateInspectHover;
16760
17447
  private selectInspectedQuery;
16761
17448
  private selectionKey;
@@ -16764,6 +17451,11 @@ declare class QueryDevtoolsComponent {
16764
17451
  private responseStatus;
16765
17452
  private findQuery;
16766
17453
  private pushEvent;
17454
+ /**
17455
+ * The size of a settled request's response, taken from its `content-length` when the response carried
17456
+ * one and measured from the decoded body otherwise.
17457
+ */
17458
+ private measureResponse;
16767
17459
  private refreshedRequestOf;
16768
17460
  private pushEventItem;
16769
17461
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryDevtoolsComponent, never>;
@@ -17028,7 +17720,557 @@ declare class QueryErrorComponent {
17028
17720
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryErrorComponent, "et-query-error", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof QueryErrorDirective; inputs: { "error": "error"; "query": "query"; "alwaysAllowRetry": "alwaysAllowRetry"; "labels": "labels"; }; outputs: { "retryRequest": "retryRequest"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: {}; outputs: {}; }]>;
17029
17721
  }
17030
17722
 
17031
- declare const QUERY_ERROR_IMPORTS: readonly [typeof QueryErrorComponent, typeof QueryErrorDirective, typeof QueryErrorTitleDirective, typeof QueryErrorActionsDirective];
17723
+ declare const QUERY_ERROR_IMPORTS: readonly [typeof QueryErrorComponent, typeof QueryErrorDirective, typeof QueryErrorTitleDirective, typeof QueryErrorActionsDirective];
17724
+
17725
+ declare const SCHEDULER_ERROR_CODES: {
17726
+ /** An opt-in scheduler feature (e.g. a badge adornment) was used outside an `<et-scheduler>`. */
17727
+ readonly FEATURE_OUTSIDE_SCHEDULER: 4500;
17728
+ /** A view layout directive (e.g. `[etSchedulerMonth]`) was placed outside an `[etScheduler]`. */
17729
+ readonly VIEW_OUTSIDE_SCHEDULER: 4501;
17730
+ };
17731
+
17732
+ /**
17733
+ * Every string the scheduler renders or announces itself. Defaults are English
17734
+ * ({@link DEFAULT_SCHEDULER_LABELS}); override them app-wide with {@link provideSchedulerLabels}.
17735
+ */
17736
+ type SchedulerLabels = {
17737
+ /** Accessible label for the control that steps back a period (a month, week or day). */
17738
+ previous: string;
17739
+ /** Accessible label for the control that steps forward a period. */
17740
+ next: string;
17741
+ /** Accessible label for the control that jumps back to today. */
17742
+ today: string;
17743
+ /** The "+N more" overflow affordance in a day cell with more appointments than it can show. */
17744
+ moreAppointments: (count: number) => string;
17745
+ /** Accessible label for the view-switch control (month/week/day). */
17746
+ switchView: string;
17747
+ /** The month view's name, as shown in the view switch. */
17748
+ month: string;
17749
+ /** The week view's name, as shown in the view switch. */
17750
+ week: string;
17751
+ /** The day view's name, as shown in the view switch. */
17752
+ day: string;
17753
+ /** The agenda view's name, as shown in the view switch. */
17754
+ agenda: string;
17755
+ };
17756
+ /** The built-in English labels. */
17757
+ declare const DEFAULT_SCHEDULER_LABELS: SchedulerLabels;
17758
+ declare const provideSchedulerLabels: (labels: _ethlete_core.LabelsSource<SchedulerLabels>) => _angular_core.Provider;
17759
+ declare const injectSchedulerLabels: () => _angular_core.Signal<SchedulerLabels>;
17760
+ declare const SCHEDULER_LABELS: _angular_core.InjectionToken<_ethlete_core.LabelsSource<SchedulerLabels>>;
17761
+
17762
+ /** Stable identity of an {@link Appointment}. */
17763
+ type AppointmentId = string;
17764
+ /**
17765
+ * One item on the scheduler - a leaf, or a link in a Jira-esque sub-appointment chain via
17766
+ * {@link parentId}. `TExtra` is the consumer's own extension point: custom edit-surface fields
17767
+ * read and write it, so adding a field never requires widening this type.
17768
+ */
17769
+ type Appointment<TExtra = unknown> = {
17770
+ id: AppointmentId;
17771
+ /** The appointment this one nests under, or `null` for a top-level appointment. */
17772
+ parentId: AppointmentId | null;
17773
+ title: string;
17774
+ start: Date;
17775
+ end: Date;
17776
+ allDay?: boolean;
17777
+ /** Resolves via the color-theming system - see `theming`. Never a literal color. */
17778
+ colorToken?: string;
17779
+ /** Shown by the built-in location badge adornment (`etSchedulerBadgeLocation`) when set. */
17780
+ location?: string;
17781
+ extra?: TExtra;
17782
+ };
17783
+ /** Which of the scheduler's views is on screen. */
17784
+ type SchedulerView = 'month' | 'week' | 'day' | 'agenda';
17785
+ /** The date span a view is currently showing - what appointments get filtered/queried against. */
17786
+ type SchedulerVisibleRange = {
17787
+ start: Date;
17788
+ end: Date;
17789
+ };
17790
+
17791
+ /** One node of the tree {@link buildAppointmentTree} produces - an appointment, its nesting depth, and its direct children, arbitrarily deep. */
17792
+ type AppointmentTreeNode<TExtra = unknown> = {
17793
+ appointment: Appointment<TExtra>;
17794
+ depth: number;
17795
+ children: AppointmentTreeNode<TExtra>[];
17796
+ };
17797
+ /** Every descendant a node has, at any depth - what the chain-count badge adornment shows. */
17798
+ declare const countDescendants: (node: Pick<AppointmentTreeNode, "children">) => number;
17799
+
17800
+ /** 0 = Sunday … 6 = Saturday. */
17801
+ type SchedulerWeekStartsOn = 0 | 1 | 2 | 3 | 4 | 5 | 6;
17802
+ /** A localized weekday name, in both its short (`Mon`) and long (`Monday`) form. */
17803
+ type SchedulerWeekday = {
17804
+ short: string;
17805
+ long: string;
17806
+ };
17807
+ /**
17808
+ * Headless scheduler state: the active view, the focused date, the visible date range each view
17809
+ * derives from it, and the appointment set arranged into sub-appointment chains. Operates on
17810
+ * `Date` objects and plain data only - rendering, badges and the edit surface are separate
17811
+ * features layered on top (see `SCHEDULER_FEATURE_HOST`).
17812
+ */
17813
+ declare class SchedulerDirective<TExtra = unknown> {
17814
+ private defaultLocale;
17815
+ /** Every appointment the scheduler knows about - not pre-filtered to the visible range. */
17816
+ appointments: _angular_core.InputSignal<readonly Appointment<TExtra>[]>;
17817
+ /** Which view is on screen. */
17818
+ view: _angular_core.ModelSignal<SchedulerView>;
17819
+ /** The date every view's visible range is derived from. */
17820
+ focusedDate: _angular_core.ModelSignal<Date>;
17821
+ /** The currently selected appointment, or `null`. */
17822
+ selectedAppointmentId: _angular_core.ModelSignal<string | null>;
17823
+ locale: _angular_core.InputSignal<Locale | null>;
17824
+ /** Defaults to the locale's week start, else Monday. */
17825
+ firstDayOfWeek: _angular_core.InputSignal<SchedulerWeekStartsOn | undefined>;
17826
+ effectiveLocale: _angular_core.Signal<Locale | null>;
17827
+ effectiveFirstDayOfWeek: _angular_core.Signal<SchedulerWeekStartsOn>;
17828
+ /**
17829
+ * The date span the active view is showing. Month pads out to full weeks, covering the grid's
17830
+ * leading/trailing days from adjacent months; week and agenda share one 7-day window, since
17831
+ * agenda is a flat render of the same days the week view lays out on a grid.
17832
+ */
17833
+ visibleRange: _angular_core.Signal<SchedulerVisibleRange>;
17834
+ /** {@link appointments}, arranged into sub-appointment chains - see `buildAppointmentTree`. */
17835
+ appointmentTree: _angular_core.Signal<_ethlete_components.AppointmentTreeNode<TExtra>[]>;
17836
+ /** The seven weekday names, starting from {@link effectiveFirstDayOfWeek} - for grid/agenda headers. */
17837
+ weekdays: _angular_core.Signal<SchedulerWeekday[]>;
17838
+ /** {@link appointments} that overlap {@link visibleRange} at all - not yet bucketed per view. */
17839
+ visibleAppointments: _angular_core.Signal<Appointment<TExtra>[]>;
17840
+ /** The selected appointment itself, or `null` - resolved from {@link selectedAppointmentId}. */
17841
+ selectedAppointment: _angular_core.Signal<Appointment<TExtra> | null>;
17842
+ /** Steps {@link focusedDate} forward by the active view's unit - a day, a week, or a month. */
17843
+ next(): void;
17844
+ /** Steps {@link focusedDate} backward by the active view's unit. */
17845
+ previous(): void;
17846
+ /** Focuses today. */
17847
+ goToToday(): void;
17848
+ private stepBy;
17849
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerDirective<any>, never>;
17850
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SchedulerDirective<any>, "[etScheduler]", ["etScheduler"], { "appointments": { "alias": "appointments"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "focusedDate": { "alias": "focusedDate"; "required": false; "isSignal": true; }; "selectedAppointmentId": { "alias": "selectedAppointmentId"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; }, { "view": "viewChange"; "focusedDate": "focusedDateChange"; "selectedAppointmentId": "selectedAppointmentIdChange"; }, never, never, true, never>;
17851
+ }
17852
+
17853
+ /** One day of an agenda list: the appointments (in chain order, depth-first) that touch it. */
17854
+ type SchedulerAgendaDay<TExtra = unknown> = {
17855
+ date: Date;
17856
+ today: boolean;
17857
+ nodes: AppointmentTreeNode<TExtra>[];
17858
+ };
17859
+
17860
+ /**
17861
+ * Groups the host `[etScheduler]`'s appointments into an agenda list: one entry per day of the
17862
+ * visible range, each holding the appointments that touch it in chain order. Pure layout - no
17863
+ * template structure, see `SchedulerAgendaViewComponent` for the default rendering.
17864
+ */
17865
+ declare class SchedulerAgendaDirective {
17866
+ private readonly hostElement;
17867
+ private scheduler;
17868
+ /** One entry per day of the visible range, laid out by `buildSchedulerAgenda`. */
17869
+ days: _angular_core.Signal<_ethlete_components.SchedulerAgendaDay<any>[]>;
17870
+ constructor();
17871
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerAgendaDirective, never>;
17872
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SchedulerAgendaDirective, "[etSchedulerAgenda]", ["etSchedulerAgenda"], {}, {}, never, never, true, never>;
17873
+ }
17874
+
17875
+ /**
17876
+ * A feature's contribution to every appointment badge/block - e.g. the title, a time range, the
17877
+ * location icon. The scheduler stamps `component` into every rendered badge (month cell, time-grid
17878
+ * block, agenda row), so the feature itself never needs a view of its own beyond this one piece.
17879
+ */
17880
+ type SchedulerBadgeAdornment = {
17881
+ /** The component to stamp. It must declare a `node` input to receive the tree node it renders for. */
17882
+ component: Type<{
17883
+ node: InputSignal<AppointmentTreeNode>;
17884
+ }>;
17885
+ /**
17886
+ * The injector the stamped component resolves from - pass the feature's own (`inject(Injector)`)
17887
+ * so the component can inject the feature that registered it. Defaults to the scheduler's own.
17888
+ */
17889
+ injector?: Injector;
17890
+ /**
17891
+ * Render order within the badge - lower renders first. The built-ins take `-10` (color dot),
17892
+ * `0` (title), `10` (time range), `20` (location), `30` (chain count); pick a number relative to
17893
+ * those to place your own adornment among them.
17894
+ *
17895
+ * @default 0
17896
+ */
17897
+ order?: number;
17898
+ /**
17899
+ * Whether this contribution is live. A feature registers once, in its constructor, and gates
17900
+ * itself with this rather than re-registering - so `[etSchedulerBadgeLocation]="{ enabled: … }"`
17901
+ * can be toggled at runtime. Omitted means always on.
17902
+ */
17903
+ enabled?: Signal<boolean>;
17904
+ };
17905
+ /**
17906
+ * What an opt-in scheduler feature can reach on its host `<et-scheduler>`. Features **register**
17907
+ * themselves here (the scheduler never queries for them) - modeled on the table's
17908
+ * `TableFeatureHost`. This is the read-only surface every feature needs regardless of which one
17909
+ * it is; registration points (badge adornments, edit-surface fields, appointment actions, grid
17910
+ * overlays) are added here incrementally as the features that need them land.
17911
+ */
17912
+ type SchedulerFeatureHost = {
17913
+ /** The appointments currently in view - already filtered to the visible range. */
17914
+ appointments(): readonly Appointment[];
17915
+ /** {@link appointments}, arranged into sub-appointment chains - see `buildAppointmentTree`. */
17916
+ appointmentTree(): AppointmentTreeNode[];
17917
+ /** The currently selected appointment, or `null`. */
17918
+ selectedAppointment(): Appointment | null;
17919
+ /** The scheduler's host element - a feature is a directive on it, so this is also what it can listen on or measure. */
17920
+ readonly element: HTMLElement;
17921
+ /** Add a piece of content to every appointment badge/block. Call once, from the feature's constructor. */
17922
+ registerBadgeAdornment(adornment: SchedulerBadgeAdornment): void;
17923
+ /** The registered badge adornments, enabled ones only, in render order - what every view renders per badge. */
17924
+ badgeAdornments(): readonly SchedulerBadgeAdornment[];
17925
+ };
17926
+ declare const SCHEDULER_FEATURE_HOST: InjectionToken<SchedulerFeatureHost>;
17927
+ /** Options every badge adornment feature accepts on top of its own. */
17928
+ type SchedulerFeatureConfig = {
17929
+ /**
17930
+ * Turn the feature off without removing it - a directive can't be applied conditionally, so this
17931
+ * is how `[etSchedulerBadgeLocation]="{ enabled: canShow() }"` toggles at runtime. @default true
17932
+ */
17933
+ enabled?: boolean;
17934
+ };
17935
+ /**
17936
+ * Read a feature's config input. A feature directive is usually written bare
17937
+ * (`etSchedulerBadgeLocation`), which Angular binds as the empty string - normalize that to "no
17938
+ * options given".
17939
+ */
17940
+ declare const schedulerFeatureConfig: <TConfig extends SchedulerFeatureConfig>(value: TConfig | "") => TConfig;
17941
+ /**
17942
+ * Inject the host scheduler from inside a feature. Throws a labelled error when the feature was
17943
+ * placed outside an `<et-scheduler>`, where it could only ever silently do nothing.
17944
+ */
17945
+ declare const injectSchedulerFeatureHost: (feature: string) => SchedulerFeatureHost;
17946
+
17947
+ /** One day cell of a month grid: the appointments it shows, capped, and the rest it hides. */
17948
+ type SchedulerMonthDayCell<TExtra = unknown> = {
17949
+ date: Date;
17950
+ outsideMonth: boolean;
17951
+ today: boolean;
17952
+ visible: AppointmentTreeNode<TExtra>[];
17953
+ overflow: AppointmentTreeNode<TExtra>[];
17954
+ };
17955
+
17956
+ /**
17957
+ * Buckets the host `[etScheduler]`'s appointments into a month grid: one day cell per day of the
17958
+ * padded month, each capped to {@link maxVisiblePerCell} appointments so the view can render a
17959
+ * "+N more" affordance for the rest. Pure layout - no template structure, see
17960
+ * `SchedulerMonthViewComponent` for the default rendering.
17961
+ */
17962
+ declare class SchedulerMonthDirective {
17963
+ private readonly hostElement;
17964
+ private scheduler;
17965
+ /** How many appointments a day cell shows before the rest collapse into an overflow count. */
17966
+ maxVisiblePerCell: _angular_core.InputSignalWithTransform<number, unknown>;
17967
+ /** Full weeks covering the focused month, padded with the adjacent months' leading/trailing days. */
17968
+ weeks: _angular_core.Signal<_ethlete_components.SchedulerMonthDayCell<any>[][]>;
17969
+ constructor();
17970
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerMonthDirective, never>;
17971
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SchedulerMonthDirective, "[etSchedulerMonth]", ["etSchedulerMonth"], { "maxVisiblePerCell": { "alias": "maxVisiblePerCell"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
17972
+ }
17973
+
17974
+ /** One timed appointment positioned on a time-grid day column. */
17975
+ type SchedulerTimeGridBlock<TExtra = unknown> = {
17976
+ node: AppointmentTreeNode<TExtra>;
17977
+ /** Percent (0-100) of the day the block starts at - its `inset-block-start` within the day column. */
17978
+ offset: number;
17979
+ /** Percent (0-100] of the day the block spans - its `block-size` within the day column. */
17980
+ span: number;
17981
+ /** 0-based column index within this block's overlap group. */
17982
+ column: number;
17983
+ /** How many columns wide this block's overlap group is - every block in the group shares this width. */
17984
+ columnCount: number;
17985
+ /** Percent (0-100) of the day column's inline size the block starts at - `inset-inline-start`. */
17986
+ inlineOffset: number;
17987
+ /** Percent (0-100] of the day column's inline size the block occupies - `inline-size`. */
17988
+ inlineSize: number;
17989
+ };
17990
+ /** One day column of a time grid: its positioned timed blocks. All-day appointments live in {@link SchedulerTimeGrid.allDay} instead, spanning the days they cover. */
17991
+ type SchedulerTimeGridDay<TExtra = unknown> = {
17992
+ date: Date;
17993
+ today: boolean;
17994
+ blocks: SchedulerTimeGridBlock<TExtra>[];
17995
+ };
17996
+ /** One all-day appointment positioned across the time grid's day columns. */
17997
+ type SchedulerTimeGridAllDayEntry<TExtra = unknown> = {
17998
+ node: AppointmentTreeNode<TExtra>;
17999
+ /** Percent (0-100) of the visible range's width the entry starts at - `inset-inline-start`. */
18000
+ inlineOffset: number;
18001
+ /** Percent (0-100] of the visible range's width the entry spans - `inline-size`. */
18002
+ inlineSize: number;
18003
+ /** 0-based stacking row among all-day entries whose day spans overlap. */
18004
+ row: number;
18005
+ };
18006
+
18007
+ /**
18008
+ * Lays the host `[etScheduler]`'s appointments onto an hour-axis time grid: one day column per day
18009
+ * of the visible range - a single day for the day view, seven for the week view, same directive,
18010
+ * only the range differs. Each column splits into an all-day strip and overlap-packed timed
18011
+ * blocks. Pure layout - no template structure, see `SchedulerTimeGridViewComponent` for the
18012
+ * default rendering.
18013
+ */
18014
+ declare class SchedulerTimeGridDirective {
18015
+ private readonly hostElement;
18016
+ private scheduler;
18017
+ private grid;
18018
+ /** One day column per day of the visible range. */
18019
+ days: _angular_core.Signal<_ethlete_components.SchedulerTimeGridDay<any>[]>;
18020
+ /** All-day appointments, each spanning the visible days it covers and stacked to avoid overlap. */
18021
+ allDay: _angular_core.Signal<_ethlete_components.SchedulerTimeGridAllDayEntry<any>[]>;
18022
+ /** How many stacking rows {@link allDay} needs - sizes the all-day lane's reserved space. */
18023
+ allDayRowCount: _angular_core.Signal<number>;
18024
+ constructor();
18025
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerTimeGridDirective, never>;
18026
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SchedulerTimeGridDirective, "[etSchedulerTimeGrid]", ["etSchedulerTimeGrid"], {}, {}, never, never, true, never>;
18027
+ }
18028
+
18029
+ /** The default agenda list: one section per visible day, appointments as full-width badges indented by chain depth. */
18030
+ declare class SchedulerAgendaViewComponent {
18031
+ protected scheduler: SchedulerDirective<any> | null;
18032
+ protected agenda: SchedulerAgendaDirective;
18033
+ private featureHost;
18034
+ constructor();
18035
+ /** UI contributed by badge features (title, time range, …) - see `registerBadgeAdornment`. */
18036
+ protected badgeAdornments(): readonly _ethlete_components.SchedulerBadgeAdornment[];
18037
+ protected weekdayLabel(date: Date): string;
18038
+ protected isSelected(appointment: Appointment): boolean;
18039
+ protected select(appointment: Appointment): void;
18040
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerAgendaViewComponent, never>;
18041
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchedulerAgendaViewComponent, "et-scheduler-agenda-view", never, {}, {}, never, never, true, [{ directive: typeof SchedulerAgendaDirective; inputs: {}; outputs: {}; }]>;
18042
+ }
18043
+
18044
+ /** Options for {@link SchedulerBadgeChainCountDirective}. */
18045
+ type SchedulerBadgeChainCountConfig = SchedulerFeatureConfig;
18046
+ /**
18047
+ * Built-in badge adornment: a chevron and the appointment's total descendant count (every depth) -
18048
+ * hidden for an appointment with no sub-appointments. One of the default pieces `<et-scheduler>`
18049
+ * bundles - see `registerBadgeAdornment`.
18050
+ *
18051
+ * @example
18052
+ * <et-scheduler [etSchedulerBadgeChainCount]="{ enabled: false }" … />
18053
+ */
18054
+ declare class SchedulerBadgeChainCountDirective {
18055
+ private host;
18056
+ /** See {@link SchedulerBadgeChainCountConfig}. */
18057
+ config: _angular_core.InputSignalWithTransform<SchedulerFeatureConfig, "" | SchedulerFeatureConfig>;
18058
+ constructor();
18059
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerBadgeChainCountDirective, never>;
18060
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SchedulerBadgeChainCountDirective, "[etSchedulerBadgeChainCount]", ["etSchedulerBadgeChainCount"], { "config": { "alias": "etSchedulerBadgeChainCount"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
18061
+ }
18062
+
18063
+ /** Options for {@link SchedulerBadgeColorDotDirective}. */
18064
+ type SchedulerBadgeColorDotConfig = SchedulerFeatureConfig;
18065
+ /**
18066
+ * Built-in badge adornment: the small dot in the appointment's own color, ahead of its title. One
18067
+ * of the default pieces `<et-scheduler>` bundles - see `registerBadgeAdornment`.
18068
+ *
18069
+ * @example
18070
+ * <et-scheduler [etSchedulerBadgeColorDot]="{ enabled: false }" … />
18071
+ */
18072
+ declare class SchedulerBadgeColorDotDirective {
18073
+ private host;
18074
+ /** See {@link SchedulerBadgeColorDotConfig}. */
18075
+ config: _angular_core.InputSignalWithTransform<SchedulerFeatureConfig, "" | SchedulerFeatureConfig>;
18076
+ constructor();
18077
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerBadgeColorDotDirective, never>;
18078
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SchedulerBadgeColorDotDirective, "[etSchedulerBadgeColorDot]", ["etSchedulerBadgeColorDot"], { "config": { "alias": "etSchedulerBadgeColorDot"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
18079
+ }
18080
+
18081
+ /** Options for {@link SchedulerBadgeLocationDirective}. */
18082
+ type SchedulerBadgeLocationConfig = SchedulerFeatureConfig;
18083
+ /**
18084
+ * Built-in badge adornment: the appointment's `location`, with a pin icon - hidden when unset.
18085
+ * One of the default pieces `<et-scheduler>` bundles - see `registerBadgeAdornment`.
18086
+ *
18087
+ * @example
18088
+ * <et-scheduler [etSchedulerBadgeLocation]="{ enabled: false }" … />
18089
+ */
18090
+ declare class SchedulerBadgeLocationDirective {
18091
+ private host;
18092
+ /** See {@link SchedulerBadgeLocationConfig}. */
18093
+ config: _angular_core.InputSignalWithTransform<SchedulerFeatureConfig, "" | SchedulerFeatureConfig>;
18094
+ constructor();
18095
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerBadgeLocationDirective, never>;
18096
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SchedulerBadgeLocationDirective, "[etSchedulerBadgeLocation]", ["etSchedulerBadgeLocation"], { "config": { "alias": "etSchedulerBadgeLocation"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
18097
+ }
18098
+
18099
+ /** Options for {@link SchedulerBadgeTimeRangeDirective}. */
18100
+ type SchedulerBadgeTimeRangeConfig = SchedulerFeatureConfig;
18101
+ /**
18102
+ * Built-in badge adornment: the appointment's `start`–`end` time, hidden for an all-day
18103
+ * appointment. One of the default pieces `<et-scheduler>` bundles - see `registerBadgeAdornment`.
18104
+ *
18105
+ * @example
18106
+ * <et-scheduler [etSchedulerBadgeTimeRange]="{ enabled: false }" … />
18107
+ */
18108
+ declare class SchedulerBadgeTimeRangeDirective {
18109
+ private host;
18110
+ /** See {@link SchedulerBadgeTimeRangeConfig}. */
18111
+ config: _angular_core.InputSignalWithTransform<SchedulerFeatureConfig, "" | SchedulerFeatureConfig>;
18112
+ constructor();
18113
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerBadgeTimeRangeDirective, never>;
18114
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SchedulerBadgeTimeRangeDirective, "[etSchedulerBadgeTimeRange]", ["etSchedulerBadgeTimeRange"], { "config": { "alias": "etSchedulerBadgeTimeRange"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
18115
+ }
18116
+
18117
+ /** Options for {@link SchedulerBadgeTitleDirective}. */
18118
+ type SchedulerBadgeTitleConfig = SchedulerFeatureConfig;
18119
+ /**
18120
+ * Built-in badge adornment: the appointment's title. One of the default pieces `<et-scheduler>`
18121
+ * bundles - see `registerBadgeAdornment`.
18122
+ *
18123
+ * @example
18124
+ * <et-scheduler [etSchedulerBadgeTitle]="{ enabled: false }" … />
18125
+ */
18126
+ declare class SchedulerBadgeTitleDirective {
18127
+ private host;
18128
+ /** See {@link SchedulerBadgeTitleConfig}. */
18129
+ config: _angular_core.InputSignalWithTransform<SchedulerFeatureConfig, "" | SchedulerFeatureConfig>;
18130
+ constructor();
18131
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerBadgeTitleDirective, never>;
18132
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SchedulerBadgeTitleDirective, "[etSchedulerBadgeTitle]", ["etSchedulerBadgeTitle"], { "config": { "alias": "etSchedulerBadgeTitle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
18133
+ }
18134
+
18135
+ declare class SchedulerComponent implements SchedulerFeatureHost {
18136
+ private labels;
18137
+ /**
18138
+ * The headless directive behind this scheduler - everything `[etScheduler]` exposes, for chrome
18139
+ * of your own around or instead of the default toolbar (`<et-scheduler #s>` then `s.headless`).
18140
+ */
18141
+ headless: SchedulerDirective<any>;
18142
+ private elementRef;
18143
+ previousLabel: _angular_core.Signal<string>;
18144
+ nextLabel: _angular_core.Signal<string>;
18145
+ todayLabel: _angular_core.Signal<string>;
18146
+ switchViewLabel: _angular_core.Signal<string>;
18147
+ monthViewLabel: _angular_core.Signal<string>;
18148
+ weekViewLabel: _angular_core.Signal<string>;
18149
+ dayViewLabel: _angular_core.Signal<string>;
18150
+ agendaViewLabel: _angular_core.Signal<string>;
18151
+ headerLabel: _angular_core.Signal<string>;
18152
+ private badgeAdornmentList;
18153
+ badgeAdornments: _angular_core.Signal<SchedulerBadgeAdornment[]>;
18154
+ /** Bound to the view-switch's `(valueChange)` - safe to cast since every `<et-segmented-button>` below carries a `SchedulerView` literal. */
18155
+ setView(value: unknown): void;
18156
+ /** The scheduler's own element. Part of the feature contract (a feature is a directive on it). */
18157
+ get element(): HTMLElement;
18158
+ /** Part of the feature contract - see `SchedulerFeatureHost`. */
18159
+ get appointmentTree(): _angular_core.Signal<_ethlete_components.AppointmentTreeNode<any>[]>;
18160
+ /** Part of the feature contract - see `SchedulerFeatureHost`. */
18161
+ get selectedAppointment(): _angular_core.Signal<Appointment<any> | null>;
18162
+ appointments(): readonly Appointment[];
18163
+ /** Part of the feature contract - see `SchedulerFeatureHost`. */
18164
+ registerBadgeAdornment(adornment: SchedulerBadgeAdornment): void;
18165
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerComponent, never>;
18166
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchedulerComponent, "et-scheduler", never, {}, {}, never, never, true, [{ directive: typeof SchedulerDirective; inputs: { "appointments": "appointments"; "view": "view"; "focusedDate": "focusedDate"; "selectedAppointmentId": "selectedAppointmentId"; "locale": "locale"; "firstDayOfWeek": "firstDayOfWeek"; }; outputs: { "viewChange": "viewChange"; "focusedDateChange": "focusedDateChange"; "selectedAppointmentIdChange": "selectedAppointmentIdChange"; }; }, { directive: typeof SchedulerBadgeColorDotDirective; inputs: { "etSchedulerBadgeColorDot": "etSchedulerBadgeColorDot"; }; outputs: {}; }, { directive: typeof SchedulerBadgeTitleDirective; inputs: { "etSchedulerBadgeTitle": "etSchedulerBadgeTitle"; }; outputs: {}; }, { directive: typeof SchedulerBadgeTimeRangeDirective; inputs: { "etSchedulerBadgeTimeRange": "etSchedulerBadgeTimeRange"; }; outputs: {}; }, { directive: typeof SchedulerBadgeLocationDirective; inputs: { "etSchedulerBadgeLocation": "etSchedulerBadgeLocation"; }; outputs: {}; }, { directive: typeof SchedulerBadgeChainCountDirective; inputs: { "etSchedulerBadgeChainCount": "etSchedulerBadgeChainCount"; }; outputs: {}; }]>;
18167
+ }
18168
+
18169
+ /** The default month grid: one day cell per day, appointments as one-line badges with a "+N more" overflow. */
18170
+ declare class SchedulerMonthViewComponent {
18171
+ protected scheduler: SchedulerDirective<any> | null;
18172
+ protected month: SchedulerMonthDirective;
18173
+ protected labels: _angular_core.Signal<_ethlete_components.SchedulerLabels>;
18174
+ private featureHost;
18175
+ constructor();
18176
+ /** UI contributed by badge features (title, time range, …) - see `registerBadgeAdornment`. */
18177
+ protected badgeAdornments(): readonly _ethlete_components.SchedulerBadgeAdornment[];
18178
+ protected weekdays(): _ethlete_components.SchedulerWeekday[];
18179
+ protected isSelected(appointment: Appointment): boolean;
18180
+ protected select(appointment: Appointment): void;
18181
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerMonthViewComponent, never>;
18182
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchedulerMonthViewComponent, "et-scheduler-month-view", never, {}, {}, never, never, true, [{ directive: typeof SchedulerMonthDirective; inputs: {}; outputs: {}; }]>;
18183
+ }
18184
+
18185
+ /**
18186
+ * The default time grid: an hour axis, an all-day strip, and appointments packed into
18187
+ * overlap-free columns. Backs both the week and day views - the day view is this same component
18188
+ * with a one-day visible range, not a separate implementation.
18189
+ */
18190
+ declare class SchedulerTimeGridViewComponent {
18191
+ protected scheduler: SchedulerDirective<any> | null;
18192
+ protected grid: SchedulerTimeGridDirective;
18193
+ private featureHost;
18194
+ protected hours: _angular_core.Signal<{
18195
+ hour: number;
18196
+ label: string;
18197
+ }[]>;
18198
+ constructor();
18199
+ /** UI contributed by badge features (title, time range, …) - see `registerBadgeAdornment`. */
18200
+ protected badgeAdornments(): readonly _ethlete_components.SchedulerBadgeAdornment[];
18201
+ protected weekdayLabel(date: Date): string;
18202
+ protected isSelected(appointment: Appointment): boolean;
18203
+ protected select(appointment: Appointment): void;
18204
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerTimeGridViewComponent, never>;
18205
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchedulerTimeGridViewComponent, "et-scheduler-time-grid-view", never, {}, {}, never, never, true, [{ directive: typeof SchedulerTimeGridDirective; inputs: {}; outputs: {}; }]>;
18206
+ }
18207
+
18208
+ declare const SCHEDULER_IMPORTS: readonly [typeof SchedulerDirective, typeof SchedulerAgendaDirective, typeof SchedulerMonthDirective, typeof SchedulerTimeGridDirective, typeof SchedulerComponent, typeof SchedulerAgendaViewComponent, typeof SchedulerMonthViewComponent, typeof SchedulerTimeGridViewComponent, typeof SchedulerBadgeColorDotDirective, typeof SchedulerBadgeTitleDirective, typeof SchedulerBadgeTimeRangeDirective, typeof SchedulerBadgeLocationDirective, typeof SchedulerBadgeChainCountDirective];
18209
+
18210
+ /**
18211
+ * The sub-appointment chain piece of an appointment badge, stamped by `etSchedulerBadgeChainCount`.
18212
+ * Renders a chevron and the total descendant count (every depth, not just direct children); hidden
18213
+ * for an appointment with no children.
18214
+ *
18215
+ * @internal
18216
+ */
18217
+ declare class SchedulerBadgeChainCountComponent {
18218
+ node: _angular_core.InputSignal<AppointmentTreeNode>;
18219
+ protected count: _angular_core.Signal<number | null>;
18220
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerBadgeChainCountComponent, never>;
18221
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchedulerBadgeChainCountComponent, "et-scheduler-badge-chain-count", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
18222
+ }
18223
+
18224
+ /**
18225
+ * The color-dot piece of an appointment badge, stamped by `etSchedulerBadgeColorDot`. Its color
18226
+ * comes from the ambient `[etProvideColor]` the badge button already carries, so this component
18227
+ * renders no color of its own - see the shared appointment badge styles.
18228
+ *
18229
+ * @internal
18230
+ */
18231
+ declare class SchedulerBadgeColorDotComponent {
18232
+ /** The tree node this badge renders - unused here, present to satisfy `SchedulerBadgeAdornment`. */
18233
+ node: _angular_core.InputSignal<AppointmentTreeNode>;
18234
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerBadgeColorDotComponent, never>;
18235
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchedulerBadgeColorDotComponent, "et-scheduler-badge-color-dot", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
18236
+ }
18237
+
18238
+ /**
18239
+ * The location piece of an appointment badge, stamped by `etSchedulerBadgeLocation`. Renders
18240
+ * nothing when the appointment has no `location`.
18241
+ *
18242
+ * @internal
18243
+ */
18244
+ declare class SchedulerBadgeLocationComponent {
18245
+ node: _angular_core.InputSignal<AppointmentTreeNode>;
18246
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerBadgeLocationComponent, never>;
18247
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchedulerBadgeLocationComponent, "et-scheduler-badge-location", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
18248
+ }
18249
+
18250
+ /**
18251
+ * The time-range piece of an appointment badge, stamped by `etSchedulerBadgeTimeRange`. Renders
18252
+ * nothing for an all-day appointment, which has no meaningful start/end time to show.
18253
+ *
18254
+ * @internal
18255
+ */
18256
+ declare class SchedulerBadgeTimeRangeComponent {
18257
+ private scheduler;
18258
+ node: _angular_core.InputSignal<AppointmentTreeNode>;
18259
+ protected range: _angular_core.Signal<string | null>;
18260
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerBadgeTimeRangeComponent, never>;
18261
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchedulerBadgeTimeRangeComponent, "et-scheduler-badge-time-range", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
18262
+ }
18263
+
18264
+ /**
18265
+ * The title piece of an appointment badge, stamped by `etSchedulerBadgeTitle`.
18266
+ *
18267
+ * @internal
18268
+ */
18269
+ declare class SchedulerBadgeTitleComponent {
18270
+ node: _angular_core.InputSignal<AppointmentTreeNode>;
18271
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SchedulerBadgeTitleComponent, never>;
18272
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SchedulerBadgeTitleComponent, "et-scheduler-badge-title", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
18273
+ }
17032
18274
 
17033
18275
  /** The common placeholder shapes. Anything else is your own CSS on the item. */
17034
18276
  type SkeletonShape = 'text' | 'rect' | 'circle';
@@ -17214,6 +18456,7 @@ type StandingsRenderRow = {
17214
18456
  * cards instead of rows can read the same state.
17215
18457
  */
17216
18458
  declare class StandingsDirective {
18459
+ private readonly hostElement;
17217
18460
  private injectedLabels;
17218
18461
  /** The rows, in the order they should appear - this never re-sorts them. */
17219
18462
  rows: _angular_core.InputSignal<readonly NormalizedStandingRow[]>;
@@ -19052,17 +20295,23 @@ type TableColumnState = {
19052
20295
  };
19053
20296
  /**
19054
20297
  * A serializable snapshot of a table's configurable state - column order, visibility,
19055
- * sort and filters (per column) plus expanded rows. Versioned so persisted states
19056
- * survive schema evolution. Round-trips via `state()` / `restoreState()`.
20298
+ * sort and filters (per column) plus whatever the imported features own. Versioned so
20299
+ * persisted states survive schema evolution. Round-trips via `state()` / `restoreState()`.
19057
20300
  */
19058
20301
  type TableState = {
19059
- /** State schema version. `1` predates the `features` bag and still restores. */
19060
- v: 1 | 2;
20302
+ /**
20303
+ * State schema version. `1` predates the `features` bag and still restores; `2` carried expanded rows
20304
+ * in {@link expanded}, which is now the expansion feature's own slice.
20305
+ */
20306
+ v: 1 | 2 | 3;
19061
20307
  /** Columns in display order, each with its visibility, sort and filter. */
19062
20308
  columns: TableColumnState[];
19063
20309
  /**
19064
- * Expanded row keys (the string form of each `rowKey`). Present only when row
19065
- * expansion is used with a `rowKey` - without one, expansion can't be serialized.
20310
+ * Where `v: 2` and earlier kept the expanded row keys. Row expansion is an opt-in feature as of `v: 3`
20311
+ * and carries them in `features.expansion`, so nothing reads this any more: a persisted `2` restores
20312
+ * its columns, sort and filters, and leaves whatever is expanded alone.
20313
+ *
20314
+ * @deprecated Read `features.expansion` instead. Kept so a stored `v: 2` state still has a type.
19066
20315
  */
19067
20316
  expanded?: string[];
19068
20317
  /**
@@ -19401,7 +20650,13 @@ type TableHeaderAdornment = {
19401
20650
  * is what the table's built-in cells use.
19402
20651
  */
19403
20652
  injector?: Injector;
19404
- /** Render order within the header cell - lower renders first. @default 0 */
20653
+ /**
20654
+ * Render order within the header cell - lower renders first. The built-in features take `0`
20655
+ * (`etTableFilters`), `5` (`etTableColumnMenu`) and `10` (`etTableResize`); pick a number relative
20656
+ * to those to place your own adornment among them.
20657
+ *
20658
+ * @default 0
20659
+ */
19405
20660
  order?: number;
19406
20661
  /**
19407
20662
  * Whether this contribution is live. A feature registers once, in its constructor, and gates itself
@@ -19434,8 +20689,7 @@ type TableCellErrorMark = {
19434
20689
  };
19435
20690
  /**
19436
20691
  * A leading utility column: a fixed-width column before the data columns, with a cell in every row
19437
- * kind (group header, header, body, footer). Selection contributes one; row expansion is the table's
19438
- * own built-in one.
20692
+ * kind (group header, header, body, footer). Selection contributes one, row expansion another.
19439
20693
  *
19440
20694
  * The table owns the chrome - track width, sticky offsets, cell classes, ARIA roles - and stamps the
19441
20695
  * registered components into the body/header cells.
@@ -19445,7 +20699,13 @@ type TableLeadColumn = {
19445
20699
  key: string;
19446
20700
  /** The column's `grid-template-columns` track (e.g. `'var(--et-table-select-width, 32px)'`). */
19447
20701
  width: string;
19448
- /** Lower renders closer to the inline-start edge. @default 0 */
20702
+ /**
20703
+ * Lower renders closer to the inline-start edge. The built-in features take `0`
20704
+ * (`etTableSelection`) and `100` (`etTableRowExpansion`); pick a number relative to those to place
20705
+ * your own column among them.
20706
+ *
20707
+ * @default 0
20708
+ */
19449
20709
  order?: number;
19450
20710
  /** Extra class put on every cell of this column, for the feature's own styling. */
19451
20711
  cellClass: string;
@@ -19472,6 +20732,107 @@ type TableLayer = {
19472
20732
  /** Whether the layer is live - see {@link TableHeaderAdornment.enabled}. */
19473
20733
  enabled?: Signal<boolean>;
19474
20734
  };
20735
+ /** A column's horizontal pinning, as the table's header, body and footer cells render it. */
20736
+ type TableCellPinning = {
20737
+ stickyStart: boolean;
20738
+ stickyEnd: boolean;
20739
+ /** Inline-start offset (px) a start-pinned cell sits at, or `null` when it isn't one. */
20740
+ offsetStart: number | null;
20741
+ /** Inline-end offset (px) an end-pinned cell sits at, or `null` when it isn't one. */
20742
+ offsetEnd: number | null;
20743
+ };
20744
+ /**
20745
+ * How a feature pins columns to the table's inline edges (`etTableStickyColumns`).
20746
+ *
20747
+ * The table keeps *rendering* the pinning - the classes and inline offsets sit on the cells it draws, and
20748
+ * a feature cannot contribute an attribute to those. What moves out is everything behind them: measuring
20749
+ * the header cells, stacking the offsets from each edge, and deciding when pinning would crowd the
20750
+ * scrollable columns off-screen. A table with no feature registered asks for none of it and runs no
20751
+ * measurement on resize.
20752
+ */
20753
+ type TableColumnPinning = {
20754
+ /** How a data column is pinned. Called once per rendered cell kind, from a `computed`. */
20755
+ cellPinning(key: string): TableCellPinning;
20756
+ /** Whether the leading utility columns are pinned along with a start-pinned column, and how far in. */
20757
+ leadPinning(key: string): {
20758
+ sticky: boolean;
20759
+ offset: number | null;
20760
+ };
20761
+ /** Total frozen width (px) at each inline edge - where the scroll fades sit. */
20762
+ insets(): {
20763
+ start: number;
20764
+ end: number;
20765
+ };
20766
+ /** Whether any visible column is pinned to the trailing edge, which already owns that edge. */
20767
+ hasStickyEnd(): boolean;
20768
+ /** Whether pinning is live - see {@link TableHeaderAdornment.enabled}. */
20769
+ enabled?: Signal<boolean>;
20770
+ };
20771
+ /**
20772
+ * A row a feature renders above the column headers - the spanning group-header row. The table stamps
20773
+ * `component` as the grid's first child, before its own header row.
20774
+ *
20775
+ * The stamped component must be `display: contents` and render one cell per track itself: the table's
20776
+ * rows are `display: contents` too, so every cell of every row kind is a grid item of the same grid.
20777
+ * {@link TableFeatureHost.leadColumnsMeta} and {@link TableFeatureHost.hasFillerTrack} are what a row
20778
+ * needs to cover the tracks that are not data columns.
20779
+ */
20780
+ type TableHeaderRow = {
20781
+ component: Type<unknown>;
20782
+ /** The injector it resolves from - see {@link TableHeaderAdornment.injector}. */
20783
+ injector?: Injector;
20784
+ /** Whether the row is live - see {@link TableHeaderAdornment.enabled}. */
20785
+ enabled?: Signal<boolean>;
20786
+ };
20787
+ /**
20788
+ * What a feature renders in place of the body while the table is loading and has no rows to show yet -
20789
+ * the placeholder rows. The table owns *when* (its `loading` / `error` inputs and row count); the
20790
+ * feature owns what a loading body looks like.
20791
+ *
20792
+ * The stamped component must be `display: contents` and lay its own cells into the table's tracks, the
20793
+ * same way {@link TableHeaderRow} does. Without a registered placeholder the body simply stays empty
20794
+ * while loading - blank rather than a misleading empty state.
20795
+ */
20796
+ type TableBodyPlaceholder = {
20797
+ component: Type<unknown>;
20798
+ /** The injector it resolves from - see {@link TableHeaderAdornment.injector}. */
20799
+ injector?: Injector;
20800
+ /** Whether the placeholder is live - see {@link TableHeaderAdornment.enabled}. */
20801
+ enabled?: Signal<boolean>;
20802
+ };
20803
+ /**
20804
+ * A feature's stand-in for the content of one cell that is loading on its own (see the table's
20805
+ * `cellState`). Stamped only into cells actually in that state, so it costs nothing on a healthy table.
20806
+ *
20807
+ * This exists so the skeleton bone can stay out of the base bundle, the same way
20808
+ * {@link TableCellErrorMark} keeps the tooltip out of it. Without one, a loading cell keeps showing its
20809
+ * value and only carries `data-state="loading"` for styling.
20810
+ */
20811
+ type TableCellPlaceholder = {
20812
+ component: Type<unknown>;
20813
+ /** The injector it resolves from - see {@link TableHeaderAdornment.injector}. */
20814
+ injector?: Injector;
20815
+ /** Whether the placeholder is live - see {@link TableHeaderAdornment.enabled}. */
20816
+ enabled?: Signal<boolean>;
20817
+ };
20818
+ /**
20819
+ * A full-width row a feature renders directly under a body row - the detail row of an expanded row.
20820
+ * The table stamps `component` after every row `isOpen` answers `true` for, so the feature owns what a
20821
+ * detail row is and when it shows while the table keeps owning the grid.
20822
+ *
20823
+ * The stamped component must span every track itself (`grid-column: 1 / -1`), because the table's rows
20824
+ * are `display: contents` and it is placed in the same grid as their cells.
20825
+ */
20826
+ type TableRowDetail = {
20827
+ /** The component to stamp. It must declare a `row` input to receive the row it belongs to. */
20828
+ component: TableLeadCellComponent;
20829
+ /** Whether this row's detail row is currently rendered. */
20830
+ isOpen(row: unknown): boolean;
20831
+ /** The injector it resolves from - see {@link TableHeaderAdornment.injector}. */
20832
+ injector?: Injector;
20833
+ /** Whether detail rows are live - see {@link TableHeaderAdornment.enabled}. */
20834
+ enabled?: Signal<boolean>;
20835
+ };
19475
20836
  /**
19476
20837
  * How a feature windows the rendered rows (virtual scrolling): the table renders `slice(rows)` with
19477
20838
  * spacers of `paddingStart`/`paddingEnd` standing in for what's left out, and offsets cell indices by
@@ -19532,10 +20893,10 @@ type TableCellEditing = {
19532
20893
  /**
19533
20894
  * A feature's own serializable state, contributed to the table's {@link TableState} under `key`.
19534
20895
  *
19535
- * The base table owns column order/visibility/width, sort, filters and expansion because they must
19536
- * round-trip whether or not a feature is imported. Anything a *feature* owns (a selection) can't live
19537
- * there without the base knowing about the feature - so the feature hands over a slice instead, and
19538
- * `state()` / `restoreState()` carry it as opaque JSON.
20896
+ * The base table owns column order/visibility/width, sort and filters because they must round-trip
20897
+ * whether or not a feature is imported. Anything a *feature* owns (a selection, the expanded rows)
20898
+ * can't live there without the base knowing about the feature - so the feature hands over a slice
20899
+ * instead, and `state()` / `restoreState()` carry it as opaque JSON.
19539
20900
  */
19540
20901
  type TableStateSlice = {
19541
20902
  /** Stable name of the slice in the serialized state, e.g. `'selection'`. */
@@ -19550,9 +20911,9 @@ type TableStateSlice = {
19550
20911
  * (the table never queries for them), which is what keeps the base table free of any reference to a
19551
20912
  * feature's dependencies - a table without `etTableFilters` never pulls in the menu system.
19552
20913
  *
19553
- * Serializable state (column order/visibility/width, sort, filters, expansion) stays owned by the
19554
- * base table so `state()` / `restoreState()` round-trip regardless of which features are imported;
19555
- * features read and write it through this contract.
20914
+ * Serializable state (column order/visibility/width, sort, filters) stays owned by the base table so
20915
+ * `state()` / `restoreState()` round-trip regardless of which features are imported; features read and
20916
+ * write it through this contract, and contribute their own with {@link registerStateSlice}.
19556
20917
  */
19557
20918
  type TableFeatureHost = {
19558
20919
  /** Add a component to every header cell. Call once, from the feature's constructor. */
@@ -19567,6 +20928,16 @@ type TableFeatureHost = {
19567
20928
  registerCellEditing(editing: TableCellEditing): void;
19568
20929
  /** Add a floating layer rendered after the grid (a drag ghost). Call once, from the constructor. */
19569
20930
  registerLayer(layer: TableLayer): void;
20931
+ /** Render a full-width row under expanded rows. Call once, from the feature's constructor. */
20932
+ registerRowDetail(detail: TableRowDetail): void;
20933
+ /** Render a row above the column headers. Call once, from the feature's constructor. */
20934
+ registerHeaderRow(row: TableHeaderRow): void;
20935
+ /** Render the body while the table is loading with no rows yet. Call once, from the constructor. */
20936
+ registerBodyPlaceholder(placeholder: TableBodyPlaceholder): void;
20937
+ /** Replace the content of a cell that is loading on its own. Call once, from the constructor. */
20938
+ registerCellPlaceholder(placeholder: TableCellPlaceholder): void;
20939
+ /** Pin columns to the table's inline edges. Call once, from the feature's constructor. */
20940
+ registerColumnPinning(pinning: TableColumnPinning): void;
19570
20941
  /** Replace the mark drawn in failed cells. Call once, from the feature's constructor. */
19571
20942
  registerCellErrorMark(mark: TableCellErrorMark): void;
19572
20943
  /** Contribute the feature's own serializable state. Call once, from the feature's constructor. */
@@ -19583,6 +20954,12 @@ type TableFeatureHost = {
19583
20954
  * without owning a registry of its own.
19584
20955
  */
19585
20956
  columnTemplate(slot: TableTemplateSlot, key: string): TemplateRef<unknown> | null;
20957
+ /**
20958
+ * The table's `expandedRowTemplate`, or `null`. It stays a table input rather than a feature option
20959
+ * because only the table knows the row type - which is what gives the template's `let-row` a type
20960
+ * instead of `any` (see `plans/table-api.md`). The expansion feature renders it from here.
20961
+ */
20962
+ detailTemplate(): TemplateRef<unknown> | null;
19586
20963
  /** The rows the table would render, after client filtering/sorting. */
19587
20964
  rows(): readonly unknown[];
19588
20965
  /** Stable identity for a row - `rowKey`'s string form, else the row reference. */
@@ -19635,6 +21012,21 @@ type TableFeatureHost = {
19635
21012
  setFilterValues(key: string, values: unknown[]): void;
19636
21013
  /** The visible columns, in render order - what a feature hit-tests or iterates over. */
19637
21014
  visibleColumnsMeta(): TableColumnMeta[];
21015
+ /**
21016
+ * The leading utility columns (selection, expander) in render order, as much of each as a feature needs:
21017
+ * a whole-row feature draws one cell per entry with its `cellClass`, and a pinning feature keys their
21018
+ * offsets by `key`.
21019
+ */
21020
+ leadColumnsMeta(): {
21021
+ key: string;
21022
+ cellClass: string;
21023
+ }[];
21024
+ /**
21025
+ * Whether a trailing slack track is in play - it carries an empty cell in every row so the table's
21026
+ * chrome runs to the panel's edge instead of stopping at the last rigid column. A feature rendering a
21027
+ * whole row has to cover that track too.
21028
+ */
21029
+ hasFillerTrack(): boolean;
19638
21030
  /**
19639
21031
  * The rendered header cells of the visible columns, in the same order as `visibleColumnsMeta()`.
19640
21032
  * A feature that must attach behavior to cells the table renders (a reorder drag) works from these.
@@ -19642,7 +21034,20 @@ type TableFeatureHost = {
19642
21034
  headerCellElements(): HTMLElement[];
19643
21035
  /** The rendered body cells of one column, e.g. to animate a column into its new position. */
19644
21036
  bodyCellElementsFor(key: string): HTMLElement[];
19645
- /** A column's effective pinning - `null` when unpinned or when pinning is currently suppressed. */
21037
+ /**
21038
+ * The rendered header cells of the leading utility columns, in {@link leadColumnsMeta} order. A feature
21039
+ * stacking offsets from the inline-start edge has to measure them before the first data column.
21040
+ */
21041
+ leadHeaderCellElements(): HTMLElement[];
21042
+ /**
21043
+ * The user's column width overrides (px), keyed by column key. Reading it in a `computed` or `effect`
21044
+ * is how a feature re-measures when a resize changes the tracks without changing the host's size.
21045
+ */
21046
+ columnWidths(): Readonly<Record<string, number>>;
21047
+ /**
21048
+ * A column's effective pinning - `null` when unpinned, when pinning is currently suppressed, or when
21049
+ * nothing pins columns at all. What `etTableReorder` asks to leave pinned columns out of a drag.
21050
+ */
19646
21051
  effectiveStickyOf(key: string): 'start' | 'end' | null;
19647
21052
  /** Move a column next to another one in the full column order (hidden columns stay put). */
19648
21053
  moveColumnNextTo(key: string, target: {
@@ -19961,12 +21366,6 @@ type TableStateStorage = ReturnType<typeof createTableStateStorage>;
19961
21366
  * template is a plain projection of it. (Event bindings still call methods - that's the one place a
19962
21367
  * call belongs.)
19963
21368
  */
19964
- type TableStickyVm = {
19965
- stickyStart: boolean;
19966
- stickyEnd: boolean;
19967
- offsetStart: number | null;
19968
- offsetEnd: number | null;
19969
- };
19970
21369
  /** One leading utility cell (selection, expander) - identical chrome in every row kind. */
19971
21370
  type TableLeadCellVm = {
19972
21371
  key: string;
@@ -19975,7 +21374,7 @@ type TableLeadCellVm = {
19975
21374
  offset: number | null;
19976
21375
  lead: TableLeadColumn;
19977
21376
  };
19978
- type TableHeaderCellVm<T> = TableStickyVm & {
21377
+ type TableHeaderCellVm<T> = TableCellPinning & {
19979
21378
  key: string;
19980
21379
  column: TableColumnDef<T>;
19981
21380
  align: string;
@@ -19985,7 +21384,7 @@ type TableHeaderCellVm<T> = TableStickyVm & {
19985
21384
  direction: TableSortDirection | null;
19986
21385
  template: TemplateRef<unknown> | null;
19987
21386
  };
19988
- type TableBodyCellVm<T> = TableStickyVm & {
21387
+ type TableBodyCellVm<T> = TableCellPinning & {
19989
21388
  key: string;
19990
21389
  align: string;
19991
21390
  state: TableCellState | null;
@@ -20013,31 +21412,16 @@ type TableBodyRowVm<T> = {
20013
21412
  key: unknown;
20014
21413
  classes: string;
20015
21414
  stripe: boolean;
20016
- showDetail: boolean;
20017
- /** Enter/leave animation classes, empty unless this is the row the user just toggled. */
20018
- enterAnimation: string;
20019
- leaveAnimation: string;
21415
+ /** The registered detail row to stamp under this row, while it is open. */
21416
+ detail: TableRowDetail | null;
20020
21417
  leads: TableLeadCellVm[];
20021
21418
  cells: TableBodyCellVm<T>[];
20022
21419
  };
20023
- type TableFooterCellVm = TableStickyVm & {
21420
+ type TableFooterCellVm = TableCellPinning & {
20024
21421
  key: string;
20025
21422
  align: string;
20026
21423
  template: TemplateRef<unknown> | null;
20027
21424
  };
20028
- /** One loading placeholder row: a bone per column, at a width that doesn't change between passes. */
20029
- type TablePlaceholderRowVm = {
20030
- key: number;
20031
- leads: TableLeadCellVm[];
20032
- cells: {
20033
- key: string;
20034
- align: string;
20035
- width: number;
20036
- /** The column's own `etTableCellSkeleton`, when it has one. */
20037
- template: TemplateRef<unknown> | null;
20038
- context: TableCellSkeletonContext;
20039
- }[];
20040
- };
20041
21425
  /**
20042
21426
  * The default table. Renders typed rows and cells from a {@link TableColumns}
20043
21427
  * record on a CSS grid with a sticky header and an empty state. Light by
@@ -20054,10 +21438,8 @@ type TablePlaceholderRowVm = {
20054
21438
  */
20055
21439
  declare class TableComponent<T> {
20056
21440
  private elementRef;
20057
- private destroyRef;
20058
21441
  protected injector: Injector;
20059
21442
  private injectedLabels;
20060
- private styleManager;
20061
21443
  /** The rows to render. */
20062
21444
  data: _angular_core.InputSignal<readonly T[]>;
20063
21445
  /**
@@ -20083,14 +21465,13 @@ declare class TableComponent<T> {
20083
21465
  */
20084
21466
  labels: _angular_core.InputSignal<Partial<TableLabels> | null>;
20085
21467
  /**
20086
- * Whether the rows are being loaded. With nothing to show yet the body renders placeholder rows
20087
- * ({@link loadingRows}); over rows that are already on screen it keeps them readable and runs a
20088
- * busy bar under the header instead, so a refetch doesn't blank the table the user is reading.
20089
- * The host carries `aria-busy` either way. @default false
21468
+ * Whether the rows are being loaded. Over rows that are already on screen it keeps them readable and
21469
+ * runs a busy bar under the header, so a refetch doesn't blank the table the user is reading; with
21470
+ * nothing to show yet the body is left to whatever renders a loading state - `etTableSkeleton` draws
21471
+ * placeholder rows, and without it the body simply stays empty. The host carries `aria-busy` either
21472
+ * way. @default false
20090
21473
  */
20091
21474
  loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
20092
- /** How many placeholder rows to draw while loading with no rows yet. @default 5 */
20093
- loadingRows: _angular_core.InputSignalWithTransform<number, unknown>;
20094
21475
  /**
20095
21476
  * The load's failure, if any - anything non-nullish counts (an `HttpErrorResponse`, a message, a
20096
21477
  * flag), so it takes a query's `error` signal as-is. Set, it replaces the body with the error
@@ -20154,15 +21535,15 @@ declare class TableComponent<T> {
20154
21535
  */
20155
21536
  filterMode: _angular_core.InputSignal<"client" | "server" | undefined>;
20156
21537
  /**
20157
- * The detail template rendered as a full-width row when a row is expanded. Setting
20158
- * it enables row expansion (an expander column is prepended). Context: `{ $implicit: row }`.
20159
- * Nest another `<et-table>` here for sub-tables.
21538
+ * The detail template rendered as a full-width row when a row is expanded. Context:
21539
+ * `{ $implicit: row }`. Nest another `<et-table>` here for sub-tables.
21540
+ *
21541
+ * It stays a table input rather than an option on {@link TableRowExpansionDirective} because only the
21542
+ * table knows the row type, which is what types the template's `let-row`. **Rendering it needs
21543
+ * `etTableRowExpansion`** - the expander column, the detail row and its animation ship with the
21544
+ * feature, so a table that never expands a row carries none of it.
20160
21545
  */
20161
21546
  expandedRowTemplate: _angular_core.InputSignal<TemplateRef<TableExpandedRowContext<T>> | undefined>;
20162
- /** Gate which rows can expand. Defaults to all rows (when a detail template is set). */
20163
- expandableRow: _angular_core.InputSignal<((row: T) => boolean) | undefined>;
20164
- /** The set of expanded row keys (by `rowKey`, else row reference). Two-way bindable. */
20165
- expandedKeys: _angular_core.ModelSignal<Set<unknown>>;
20166
21547
  /**
20167
21548
  * Make whole rows respond to clicks: adds a hover/pointer affordance and emits {@link rowClick}
20168
21549
  * (clicks landing on interactive cell content are ignored - see `rowClick`). @default false
@@ -20179,7 +21560,6 @@ declare class TableComponent<T> {
20179
21560
  protected footerSlot: _angular_core.Signal<TableFooterDirective | undefined>;
20180
21561
  private headerCells;
20181
21562
  private bodyCells;
20182
- private groupCells;
20183
21563
  private leadHeaderCells;
20184
21564
  /** The sort mode in effect: what you set, else `'server'` when a {@link rowsSource} is bound. */
20185
21565
  resolvedSortMode: _angular_core.Signal<"client" | "server">;
@@ -20194,7 +21574,6 @@ declare class TableComponent<T> {
20194
21574
  * error UI stays on the surface's own colors.
20195
21575
  */
20196
21576
  errorColorTheme: _ethlete_core.ColorTheme | undefined;
20197
- private leadStickyOffsets;
20198
21577
  private headerAdornmentList;
20199
21578
  protected headerAdornments: _angular_core.Signal<TableHeaderAdornment[]>;
20200
21579
  private stateSliceList;
@@ -20202,6 +21581,16 @@ declare class TableComponent<T> {
20202
21581
  protected cellErrorMark: _angular_core.Signal<TableCellErrorMark | null>;
20203
21582
  private layerList;
20204
21583
  protected layers: _angular_core.Signal<TableLayer[]>;
21584
+ private headerRowList;
21585
+ protected headerRows: _angular_core.Signal<TableHeaderRow[]>;
21586
+ private columnPinningList;
21587
+ private columnPinning;
21588
+ private bodyPlaceholderList;
21589
+ protected bodyPlaceholder: _angular_core.Signal<TableBodyPlaceholder | null>;
21590
+ private cellPlaceholderList;
21591
+ protected cellPlaceholder: _angular_core.Signal<TableCellPlaceholder | null>;
21592
+ private rowDetailList;
21593
+ private rowDetail;
20205
21594
  private leadColumnList;
20206
21595
  private registeredRowWindow;
20207
21596
  private cellNavigationList;
@@ -20211,12 +21600,7 @@ declare class TableComponent<T> {
20211
21600
  private cellEditing;
20212
21601
  private rowWindow;
20213
21602
  private hostDimensions;
20214
- private groupCellDimensions;
20215
- protected groupRowHeight: _angular_core.Signal<number>;
20216
- private stickyOffsets;
20217
- private stickySuppressed;
20218
21603
  private autosizing;
20219
- private pinnedInsets;
20220
21604
  /**
20221
21605
  * Where content is currently scrolled out of view horizontally. Drives the edge gradients: they mark
20222
21606
  * the boundary the rows disappear under, which is *not* the viewport edge when columns are pinned -
@@ -20232,40 +21616,24 @@ declare class TableComponent<T> {
20232
21616
  start: number;
20233
21617
  end: number;
20234
21618
  }>;
20235
- /** Whether row expansion is active (a detail template was provided). */
20236
- expandable: _angular_core.Signal<boolean>;
20237
- private userToggledKey;
20238
- private userToggleReset;
20239
21619
  private columnDefs;
20240
21620
  private columnOrder;
20241
21621
  private hiddenColumns;
20242
- private columnWidths;
21622
+ /**
21623
+ * The user's width overrides (px) per column. Public because it is part of the feature contract -
21624
+ * `etTableStickyColumns` re-measures its offsets when a resize changes the tracks without changing the
21625
+ * host's size, which is the one thing no other signal reports.
21626
+ */
21627
+ columnWidths: _angular_core.WritableSignal<Record<string, number>>;
20243
21628
  private columnsByKey;
20244
21629
  private columnTemplateList;
20245
21630
  columnTemplates: _angular_core.Signal<Record<TableTemplateSlot, Map<string, TemplateRef<unknown>>>>;
20246
21631
  private orderedColumns;
20247
21632
  /** Columns currently displayed, in order. */
20248
21633
  visibleColumns: _angular_core.Signal<TableColumnDef<T>[]>;
20249
- /** Whether any visible column declares a `group` (drives the spanning group-header row). */
20250
- hasGroups: _angular_core.Signal<boolean>;
20251
- /**
20252
- * The spanning group-header row as maximal runs of adjacent visible columns sharing a `group`.
20253
- * Ungrouped columns each form their own single-track run (`label: null`) so the row still covers
20254
- * every track - dragging a column out of a group simply splits the run.
20255
- */
20256
- headerGroups: _angular_core.Signal<TableHeaderGroup[]>;
20257
- /** Whether any visible column is pinned to the inline-start edge (also pins the expander column). */
20258
- hasStickyStart: _angular_core.Signal<boolean>;
20259
- /** Whether any visible column is pinned to the trailing edge. */
20260
- hasStickyEnd: _angular_core.Signal<boolean>;
20261
- /** Whether any visible column is pinned (start or end) - the grid then sizes to its tracks so pinning works. */
20262
- hasStickyColumns: _angular_core.Signal<boolean>;
20263
21634
  /** Whether any visible column has a registered footer cell (drives the sticky footer row). */
20264
21635
  hasFooter: _angular_core.Signal<boolean>;
20265
- /**
20266
- * The leading utility columns in render order: whatever features registered (selection), then the
20267
- * table's own expander column when a detail template is set.
20268
- */
21636
+ /** The leading utility columns in render order - whatever features registered (selection, expansion). */
20269
21637
  leadColumns: _angular_core.Signal<TableLeadColumn[]>;
20270
21638
  /**
20271
21639
  * The column tracks, plus whether they are all rigid.
@@ -20285,7 +21653,7 @@ declare class TableComponent<T> {
20285
21653
  * rigid column.
20286
21654
  */
20287
21655
  protected hasFiller: _angular_core.Signal<boolean>;
20288
- /** The serializable, versioned table state - column order, visibility, sort, filters and expanded rows. */
21656
+ /** The serializable, versioned table state - column order, visibility, sort, filters and feature slices. */
20289
21657
  state: _angular_core.Signal<TableState>;
20290
21658
  /**
20291
21659
  * The rendered rows - client-filtered then client-sorted for whichever of
@@ -20322,15 +21690,6 @@ declare class TableComponent<T> {
20322
21690
  protected headerCellVms: _angular_core.Signal<TableHeaderCellVm<T>[]>;
20323
21691
  protected bodyRows: _angular_core.Signal<TableBodyRowVm<T>[]>;
20324
21692
  protected footerCells: _angular_core.Signal<TableFooterCellVm[]>;
20325
- /** The placeholder rows, in the same tracks as real ones so the layout doesn't jump when data lands. */
20326
- protected placeholderGrid: _angular_core.Signal<TablePlaceholderRowVm[]>;
20327
- /**
20328
- * The height of a real row, remembered from the last time this table had any. Placeholder rows adopt
20329
- * it, so a refetch or a page change keeps the table exactly as tall as the data the user was just
20330
- * looking at. `null` until a row has been rendered - the first load has nothing to measure, which is
20331
- * what `etTableCellSkeleton` is for.
20332
- */
20333
- protected measuredRowHeight: _angular_core.WritableSignal<number | null>;
20334
21693
  /** Spacer sizes standing in for the rows a window leaves out, or `null` when every row renders. */
20335
21694
  protected spacers: _angular_core.Signal<{
20336
21695
  start: number;
@@ -20398,6 +21757,42 @@ declare class TableComponent<T> {
20398
21757
  * drag ghost). Part of the feature contract; consumers never call this.
20399
21758
  */
20400
21759
  registerLayer(layer: TableLayer): void;
21760
+ /**
21761
+ * Called by an opt-in feature to render a full-width row under expanded rows (`etTableRowExpansion`).
21762
+ * Part of the feature contract; consumers never call this.
21763
+ */
21764
+ registerRowDetail(detail: TableRowDetail): void;
21765
+ /**
21766
+ * Called by an opt-in feature to render a row above the column headers (`etTableGroupHeaders`). Part
21767
+ * of the feature contract; consumers never call this.
21768
+ */
21769
+ registerHeaderRow(row: TableHeaderRow): void;
21770
+ /**
21771
+ * Called by an opt-in feature to render the loading body (`etTableSkeleton`). Part of the feature
21772
+ * contract; consumers never call this.
21773
+ */
21774
+ registerBodyPlaceholder(placeholder: TableBodyPlaceholder): void;
21775
+ /**
21776
+ * Called by an opt-in feature to fill a cell that is loading on its own (`etTableSkeleton`). Part of
21777
+ * the feature contract; consumers never call this.
21778
+ */
21779
+ registerCellPlaceholder(placeholder: TableCellPlaceholder): void;
21780
+ /**
21781
+ * Called by an opt-in feature to pin columns to the inline edges (`etTableStickyColumns`). Part of the
21782
+ * feature contract; consumers never call this.
21783
+ */
21784
+ registerColumnPinning(pinning: TableColumnPinning): void;
21785
+ /** The rendered header cells of the leading utility columns. Part of the feature contract. */
21786
+ leadHeaderCellElements(): HTMLElement[];
21787
+ /** The leading utility columns, in render order. Part of the feature contract. */
21788
+ leadColumnsMeta(): {
21789
+ key: string;
21790
+ cellClass: string;
21791
+ }[];
21792
+ /** Whether a trailing slack track is in play. Part of the feature contract. */
21793
+ hasFillerTrack(): boolean;
21794
+ /** The `expandedRowTemplate` input, type-erased for the feature contract. */
21795
+ detailTemplate(): TemplateRef<TableExpandedRowContext<T>> | null;
20401
21796
  /**
20402
21797
  * Called by an opt-in feature to take over cell focus (`etTableKeyboardNav`). Part of the feature
20403
21798
  * contract; consumers never call this.
@@ -20434,7 +21829,7 @@ declare class TableComponent<T> {
20434
21829
  scrollRowIntoView(rowIndex: number): boolean;
20435
21830
  /** How many rows fit the scroll viewport. Part of the feature contract - the PageUp/PageDown step. */
20436
21831
  rowsPerPage(): number;
20437
- /** Apply a previously captured {@link TableState} - column order, visibility, sort, filters and expanded rows. */
21832
+ /** Apply a previously captured {@link TableState} - column order, visibility, sort, filters and feature slices. */
20438
21833
  restoreState(next: TableState): void;
20439
21834
  /** The sort direction for a column key, or `null` when it isn't sorted. */
20440
21835
  sortDirection(key: string): TableSortDirection | null;
@@ -20466,20 +21861,6 @@ declare class TableComponent<T> {
20466
21861
  showAllColumns(): void;
20467
21862
  /** Move a column to a new index within the full column order. */
20468
21863
  moveColumn(key: string, toIndex: number): void;
20469
- /** Whether a row is currently expanded. */
20470
- isExpanded(row: T): boolean;
20471
- /** Toggle a row's expanded state. */
20472
- toggleExpanded(row: T): void;
20473
- /** The inline-start offset (px) of a lead column, when the leading columns are pinned. */
20474
- /** Whether a row can expand - expansion is on and the row passes `expandableRow`. */
20475
- canExpand(row: T): boolean;
20476
- /**
20477
- * The animation class for a detail row's enter/leave, or `''` to mount/unmount it instantly.
20478
- *
20479
- * Only the row the user just toggled animates. A detail row also mounts and unmounts when the rows
20480
- * themselves change - paging away and back, sorting, a query refresh - and animating those replays
20481
- * an open/close the user never asked for (and pays the layout cost mid page-change).
20482
- */
20483
21864
  /**
20484
21865
  * Emit {@link rowClick} for a row (click or keyboard), unless the activation came from interactive
20485
21866
  * content inside it. Takes a plain `Event`: Angular types `$event` for the `keydown.enter` /
@@ -20542,20 +21923,15 @@ declare class TableComponent<T> {
20542
21923
  autosizeAllColumns(): void;
20543
21924
  /** Reset a column to its default width (drops the user override), e.g. on grip double-click. */
20544
21925
  resetColumnWidth(key: string): void;
20545
- /** A column's effective pinning, or `null` when it isn't pinned or pinning is suppressed (see {@link stickySuppressed}). */
20546
- effectiveSticky(column: TableColumnDef<T>): 'start' | 'end' | null;
20547
21926
  /**
20548
21927
  * The one place sort state is written. A bound {@link rowsSource} owns it - it resets the page and
20549
21928
  * refetches - and its own value syncs back into `sort` (see the constructor), so everything else can
20550
21929
  * keep reading `sort()` whichever drives it.
20551
21930
  */
20552
21931
  private applySort;
20553
- /** A column's pinning and offsets, shared by its header, body and footer cells. */
20554
- private stickyVmOf;
20555
- private markUserToggled;
20556
21932
  private originatesFromInteractive;
20557
21933
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent<any>, never>;
20558
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent<any>, "et-table", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "rowsSource": { "alias": "rowsSource"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; "isSignal": true; }; "errorTemplate": { "alias": "errorTemplate"; "required": false; "isSignal": true; }; "cellState": { "alias": "cellState"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "required": false; "isSignal": true; }; "sortMode": { "alias": "sortMode"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "expandedRowTemplate": { "alias": "expandedRowTemplate"; "required": false; "isSignal": true; }; "expandableRow": { "alias": "expandableRow"; "required": false; "isSignal": true; }; "expandedKeys": { "alias": "expandedKeys"; "required": false; "isSignal": true; }; "rowInteractive": { "alias": "rowInteractive"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; "filters": "filtersChange"; "expandedKeys": "expandedKeysChange"; "rowClick": "rowClick"; }, ["footerSlot"], ["[etTableError]", "[etTableEmpty]", "[etTableFooter]"], true, never>;
21934
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent<any>, "et-table", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "rowsSource": { "alias": "rowsSource"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; "isSignal": true; }; "errorTemplate": { "alias": "errorTemplate"; "required": false; "isSignal": true; }; "cellState": { "alias": "cellState"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "required": false; "isSignal": true; }; "sortMode": { "alias": "sortMode"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "expandedRowTemplate": { "alias": "expandedRowTemplate"; "required": false; "isSignal": true; }; "rowInteractive": { "alias": "rowInteractive"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; "filters": "filtersChange"; "rowClick": "rowClick"; }, ["footerSlot"], ["[etTableError]", "[etTableEmpty]", "[etTableFooter]"], true, never>;
20559
21935
  }
20560
21936
 
20561
21937
  /** Options for {@link TableStatePersistenceDirective}. */
@@ -20947,13 +22323,12 @@ declare class TableCsvExportDirective<T> {
20947
22323
  }
20948
22324
 
20949
22325
  /**
20950
- * The detail row's chrome and its grow-open animation, as a styles-only component mounted on demand -
20951
- * see `ButtonStylesDirective` for the same pattern, and the table's `expandable` effect for the mount.
22326
+ * The detail row's chrome and its grow-open animation, as a styles-only component mounted by
22327
+ * `etTableRowExpansion` - see `ButtonStylesDirective` for the same pattern.
20952
22328
  *
20953
22329
  * Split out of `table.component.css` because it is the largest block in there (the keyframes alone are
20954
- * most of it) and it does nothing for a table that never expands a row. Mounting it the first time a
20955
- * table has a detail template keeps those rules out of the document - and out of style recalculation -
20956
- * for every table that doesn't.
22330
+ * most of it) and it does nothing for a table that never expands a row. It arrives with the feature, so
22331
+ * those rules stay out of the document - and out of style recalculation - for every table without it.
20957
22332
  *
20958
22333
  * @internal
20959
22334
  */
@@ -20977,6 +22352,8 @@ declare const TABLE_ERROR_CODES: {
20977
22352
  readonly PARTIAL_EXPORT: 3506;
20978
22353
  /** A CSV export was given both a server-built `file` and options that only apply to a built one. */
20979
22354
  readonly CONFLICTING_EXPORT_OPTIONS: 3507;
22355
+ /** An `expandedRowTemplate` was set on a table without `etTableRowExpansion` to render it. */
22356
+ readonly MISSING_ROW_EXPANSION: 3508;
20980
22357
  };
20981
22358
 
20982
22359
  /** Options for {@link TableKeyboardNavDirective}. */
@@ -21041,18 +22418,79 @@ declare class TableKeyboardNavDirective {
21041
22418
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TableKeyboardNavDirective, "[etTableKeyboardNav]", ["etTableKeyboardNav"], { "config": { "alias": "etTableKeyboardNav"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
21042
22419
  }
21043
22420
 
22421
+ /** Options for {@link TableRowExpansionDirective}. */
22422
+ type TableRowExpansionConfig<T> = TableFeatureConfig & {
22423
+ /**
22424
+ * The signal holding the expanded row keys (by the table's `rowKey`, else the row reference). The
22425
+ * feature writes into it directly, so pass your own signal to read or drive the expansion - set a
22426
+ * `rowKey` on the table so it survives sorting, filtering and data changes, and so it can be
22427
+ * serialized into `state()`. Omit it and the expansion is kept internally (reachable via `exportAs`).
22428
+ */
22429
+ expanded?: WritableSignal<Set<unknown>>;
22430
+ /** Gate which rows can expand. Defaults to all rows. */
22431
+ expandableRow?: (row: T) => boolean;
22432
+ };
21044
22433
  /**
21045
- * The row expander, stamped into the table's own lead column when a detail template is set. Registered
21046
- * through the same seam as a feature's lead column, so the table's row loops have no special case.
22434
+ * Opt-in row expansion for `et-table`: adds a leading expander column and renders the table's
22435
+ * `[expandedRowTemplate]` as a full-width detail row under the row it belongs to.
22436
+ *
22437
+ * The template stays a table input because only the table knows the row type - that is what gives
22438
+ * `let-row` a type instead of `any`. Everything else is here, which is what keeps the expander cell, the
22439
+ * detail row's chrome and its grow-open animation out of a table that never expands a row.
22440
+ *
22441
+ * @example
22442
+ * protected expanded = signal<Set<unknown>>(new Set());
21047
22443
  *
21048
- * It is created inside the table's view, so it reaches the table by plain DI - no injector plumbing,
21049
- * unlike a feature's cells (see `TableLeadColumn.injector`). Its styles travel with it rather than in
21050
- * `table.component.css`, so Angular injects them the first time a table actually renders an expander.
22444
+ * <et-table
22445
+ * [data]="users()"
22446
+ * [columns]="COLUMNS"
22447
+ * [rowKey]="rowId"
22448
+ * [expandedRowTemplate]="detail"
22449
+ * [etTableRowExpansion]="{ expanded: expanded }"
22450
+ * >
22451
+ * <ng-template #detail let-user>{{ user.bio }}</ng-template>
22452
+ * </et-table>
22453
+ */
22454
+ declare class TableRowExpansionDirective<T> {
22455
+ private table;
22456
+ private destroyRef;
22457
+ /** See {@link TableRowExpansionConfig}. */
22458
+ config: _angular_core.InputSignalWithTransform<TableRowExpansionConfig<T>, "" | TableRowExpansionConfig<T>>;
22459
+ private ownExpanded;
22460
+ /** The signal the expanded keys are kept in - the consumer's when they passed one, else the feature's own. */
22461
+ expanded: _angular_core.Signal<WritableSignal<Set<unknown>>>;
22462
+ private userToggledKey;
22463
+ private userToggleReset;
22464
+ constructor();
22465
+ /** Whether a row is currently expanded. */
22466
+ isExpanded(row: T): boolean;
22467
+ /** Whether a row may expand at all (see `expandableRow`). */
22468
+ canExpand(row: T): boolean;
22469
+ /**
22470
+ * Whether this row's detail row should animate open/closed.
22471
+ *
22472
+ * Only the row the user just toggled does. A detail row also mounts and unmounts when the rows
22473
+ * themselves change - paging away and back, sorting, a query refresh - and animating those replays an
22474
+ * open/close the user never asked for (and pays the layout cost mid page-change).
22475
+ */
22476
+ animates(row: unknown): boolean;
22477
+ /** Toggle a row's expanded state. */
22478
+ toggle(row: T): void;
22479
+ private markUserToggled;
22480
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableRowExpansionDirective<any>, never>;
22481
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TableRowExpansionDirective<any>, "[etTableRowExpansion]", ["etTableRowExpansion"], { "config": { "alias": "etTableRowExpansion"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
22482
+ }
22483
+
22484
+ /**
22485
+ * The row expander, stamped into the lead column `etTableRowExpansion` registers. Its styles travel
22486
+ * with it rather than in `table.component.css`, so Angular injects them the first time a table actually
22487
+ * renders an expander.
21051
22488
  *
21052
22489
  * @internal
21053
22490
  */
21054
22491
  declare class TableExpanderCellComponent {
21055
- protected table: TableComponent<unknown>;
22492
+ protected expansion: TableRowExpansionDirective<unknown>;
22493
+ protected table: _ethlete_components.TableFeatureHost;
21056
22494
  /** The row this cell belongs to. Set by the table (see {@link TableLeadCellComponent}). */
21057
22495
  row: _angular_core.InputSignal<unknown>;
21058
22496
  protected canExpand: _angular_core.Signal<boolean>;
@@ -21146,6 +22584,67 @@ declare class TableFilterTriggerComponent {
21146
22584
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableFilterTriggerComponent, "et-table-filter-trigger", never, { "column": { "alias": "column"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
21147
22585
  }
21148
22586
 
22587
+ /** Options for {@link TableGroupHeadersDirective}. */
22588
+ type TableGroupHeadersConfig = TableFeatureConfig;
22589
+ /**
22590
+ * Opt-in grouped column headers for `et-table`: a spanning row above the column headers, in which
22591
+ * adjacent visible columns that share a `group` read under one label.
22592
+ *
22593
+ * @example
22594
+ * const COLUMNS = {
22595
+ * won: { header: 'W', value: (t: Team) => t.won, group: 'Season' },
22596
+ * lost: { header: 'L', value: (t: Team) => t.lost, group: 'Season' },
22597
+ * form: { header: 'Form', value: (t: Team) => t.form },
22598
+ * } satisfies TableColumns<Team>;
22599
+ *
22600
+ * <et-table [data]="teams()" [columns]="COLUMNS" etTableGroupHeaders />
22601
+ */
22602
+ declare class TableGroupHeadersDirective {
22603
+ private table;
22604
+ /** See {@link TableGroupHeadersConfig}. */
22605
+ config: _angular_core.InputSignalWithTransform<TableFeatureConfig, "" | TableFeatureConfig>;
22606
+ /**
22607
+ * The stamped row's own measured height, which it hands over on construction - the row is created in
22608
+ * the table's view, so there is nothing here to query for it. Part of the feature's internal contract
22609
+ * with its row; consumers never set this.
22610
+ */
22611
+ rowHeight: _angular_core.WritableSignal<Signal<number> | null>;
22612
+ protected groupRowHeight: Signal<number>;
22613
+ /**
22614
+ * The spanning row as maximal runs of adjacent visible columns sharing a `group`. Ungrouped columns
22615
+ * each form their own single-track run (`label: null`) so the row still covers every track - dragging
22616
+ * a column out of a group simply splits the run.
22617
+ */
22618
+ headerGroups: Signal<TableHeaderGroup[]>;
22619
+ /** Whether any visible column declares a `group`, i.e. whether the row shows a label at all. */
22620
+ hasGroups: Signal<boolean>;
22621
+ constructor();
22622
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableGroupHeadersDirective, never>;
22623
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TableGroupHeadersDirective, "[etTableGroupHeaders]", ["etTableGroupHeaders"], { "config": { "alias": "etTableGroupHeaders"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
22624
+ }
22625
+
22626
+ /**
22627
+ * The spanning group-header row, stamped by the table through `registerHeaderRow`. It is
22628
+ * `display: contents`, so the cells below are grid items of the table's own grid and land in its tracks.
22629
+ *
22630
+ * @internal
22631
+ */
22632
+ declare class TableGroupHeaderRowComponent {
22633
+ protected feature: TableGroupHeadersDirective;
22634
+ protected table: _ethlete_components.TableFeatureHost;
22635
+ private groupCells;
22636
+ private groupCellDimensions;
22637
+ /** Rendered height of the row, for the header row's sticky offset. */
22638
+ blockSize: _angular_core.Signal<number>;
22639
+ protected leads: _angular_core.Signal<{
22640
+ key: string;
22641
+ cellClass: string;
22642
+ }[]>;
22643
+ constructor();
22644
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableGroupHeaderRowComponent, never>;
22645
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableGroupHeaderRowComponent, "et-table-group-header-row", never, {}, {}, never, never, true, never>;
22646
+ }
22647
+
21149
22648
  /**
21150
22649
  * The edit-mode cell's rules, as a styles-only component mounted by `etTableInlineEdit` (see
21151
22650
  * `TableVirtualScrollStylesComponent` for the pattern).
@@ -21384,6 +22883,28 @@ declare class TableReorderOverlayComponent {
21384
22883
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableReorderOverlayComponent, "et-table-reorder-overlay", never, {}, {}, never, never, true, never>;
21385
22884
  }
21386
22885
 
22886
+ /**
22887
+ * The detail row of an expanded row: the table's `expandedRowTemplate` in a full-width row under the
22888
+ * row it belongs to. Stamped by the table through `registerRowDetail`, so it exists only while a row is
22889
+ * actually open.
22890
+ *
22891
+ * The enter/leave animation is a **host** binding rather than a binding on an element inside the
22892
+ * template, because Angular runs `animate.leave` on the element that is being removed - and what the
22893
+ * table removes is this component's host. On a child it would never be awaited, and the row would
22894
+ * disappear instantly instead of closing.
22895
+ *
22896
+ * @internal
22897
+ */
22898
+ declare class TableRowDetailComponent {
22899
+ private expansion;
22900
+ protected table: _ethlete_components.TableFeatureHost;
22901
+ /** The row this detail row belongs to. Set by the table (see {@link TableRowDetail}). */
22902
+ row: _angular_core.InputSignal<unknown>;
22903
+ protected animated: _angular_core.Signal<boolean>;
22904
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableRowDetailComponent, never>;
22905
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableRowDetailComponent, "et-table-row-detail", never, { "row": { "alias": "row"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
22906
+ }
22907
+
21387
22908
  /** Options for {@link TableResizeDirective}. */
21388
22909
  type TableResizeConfig = TableFeatureConfig;
21389
22910
  /**
@@ -21514,6 +23035,114 @@ declare class TableSelectCellComponent {
21514
23035
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableSelectCellComponent, "et-table-select-cell", never, { "row": { "alias": "row"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
21515
23036
  }
21516
23037
 
23038
+ /** Options for {@link TableStickyColumnsDirective}. */
23039
+ type TableStickyColumnsConfig = TableFeatureConfig;
23040
+ /**
23041
+ * Opt-in sticky columns for `et-table`: a column declaring `sticky: 'start' | 'end'` stays put while the
23042
+ * table scrolls horizontally, and the scroll fades move in to sit at the pinned column's inner edge.
23043
+ *
23044
+ * The offsets are measured, not declared - each pinned column stacks after the ones before it from its
23045
+ * own edge - so this runs a measurement whenever the host resizes or a column is resized. That is the
23046
+ * reason it is a feature: a table that pins nothing runs none of it, and never has the pinned cells'
23047
+ * chrome in the document either.
23048
+ *
23049
+ * @example
23050
+ * const COLUMNS = {
23051
+ * name: { header: 'Name', value: (u: User) => u.name, width: '220px', sticky: 'start' },
23052
+ * email: { header: 'Email', value: (u: User) => u.email, width: '280px' },
23053
+ * } satisfies TableColumns<User>;
23054
+ *
23055
+ * <et-table [data]="users()" [columns]="COLUMNS" etTableStickyColumns />
23056
+ */
23057
+ declare class TableStickyColumnsDirective {
23058
+ private table;
23059
+ /** See {@link TableStickyColumnsConfig}. */
23060
+ config: _angular_core.InputSignalWithTransform<TableFeatureConfig, "" | TableFeatureConfig>;
23061
+ private hostDimensions;
23062
+ private offsets;
23063
+ private leadOffsets;
23064
+ /**
23065
+ * True when pinning is measured to crowd the non-pinned columns off-screen. Pinning is then dropped so
23066
+ * every column scrolls normally instead of hiding behind the pins - which is what makes the same table
23067
+ * work on desktop and on a narrow viewport without a breakpoint of the consumer's own.
23068
+ */
23069
+ suppressed: _angular_core.WritableSignal<boolean>;
23070
+ private insets;
23071
+ /** Whether any visible column is pinned to the inline-start edge (which also pins the lead columns). */
23072
+ hasStickyStart: _angular_core.Signal<boolean>;
23073
+ /** Whether any visible column is pinned to the trailing edge. */
23074
+ hasStickyEnd: _angular_core.Signal<boolean>;
23075
+ constructor();
23076
+ /** How a data column is pinned, as the table's header, body and footer cells render it. */
23077
+ cellPinning(key: string): TableCellPinning;
23078
+ /** Whether the leading utility columns are pinned along with a start-pinned column, and how far in. */
23079
+ leadPinning(key: string): {
23080
+ sticky: boolean;
23081
+ offset: number | null;
23082
+ };
23083
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableStickyColumnsDirective, never>;
23084
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TableStickyColumnsDirective, "[etTableStickyColumns]", ["etTableStickyColumns"], { "config": { "alias": "etTableStickyColumns"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
23085
+ }
23086
+
23087
+ /** Options for {@link TableSkeletonDirective}. */
23088
+ type TableSkeletonConfig = TableFeatureConfig & {
23089
+ /** How many placeholder rows to draw while loading with no rows yet. @default 5 */
23090
+ rows?: number;
23091
+ };
23092
+ /**
23093
+ * Opt-in loading placeholders for `et-table`: the body becomes a block of skeleton rows while the table
23094
+ * is loading with nothing to show yet, and a cell that is loading on its own (see the table's
23095
+ * `cellState`) shows a bone in place of its value.
23096
+ *
23097
+ * It carries the [skeleton](/components/skeleton) component with it, which is why it is separate: a table
23098
+ * that never draws a placeholder never pulls that in. Without it a first load leaves the body blank -
23099
+ * the host's `aria-busy` and the busy bar over existing rows are part of the base.
23100
+ *
23101
+ * @example
23102
+ * <et-table [data]="rows()" [columns]="COLUMNS" [loading]="loading()" etTableSkeleton />
23103
+ */
23104
+ declare class TableSkeletonDirective {
23105
+ private table;
23106
+ /** See {@link TableSkeletonConfig}. */
23107
+ config: _angular_core.InputSignalWithTransform<TableSkeletonConfig, "" | TableSkeletonConfig>;
23108
+ /**
23109
+ * The height of a real row, remembered from the last time this table had any, so a refetch or a page
23110
+ * change keeps the table exactly as tall as the data the user was just looking at. `null` until a row
23111
+ * has been rendered - a first load has nothing to measure, which is what `etTableCellSkeleton` is for.
23112
+ */
23113
+ measuredRowHeight: _angular_core.WritableSignal<number | null>;
23114
+ constructor();
23115
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableSkeletonDirective, never>;
23116
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TableSkeletonDirective, "[etTableSkeleton]", ["etTableSkeleton"], { "config": { "alias": "etTableSkeleton"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
23117
+ }
23118
+
23119
+ /** One placeholder row: a bone per column, at a width that doesn't change between passes. */
23120
+ type SkeletonRowVm = {
23121
+ key: number;
23122
+ cells: {
23123
+ key: string;
23124
+ align: string;
23125
+ width: number;
23126
+ /** The column's own `etTableCellSkeleton`, when it has one. */
23127
+ template: TemplateRef<unknown> | null;
23128
+ context: TableCellSkeletonContext;
23129
+ }[];
23130
+ };
23131
+ /**
23132
+ * The placeholder body of a first load, stamped by the table through `registerBodyPlaceholder`. It is
23133
+ * `display: contents`, so its rows and cells are grid items of the table's own grid and land in the same
23134
+ * tracks as real ones - which is what keeps the columns from jumping when the data arrives.
23135
+ *
23136
+ * @internal
23137
+ */
23138
+ declare class TableSkeletonRowsComponent {
23139
+ protected feature: TableSkeletonDirective;
23140
+ protected table: _ethlete_components.TableFeatureHost;
23141
+ protected rows: _angular_core.Signal<SkeletonRowVm[]>;
23142
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableSkeletonRowsComponent, never>;
23143
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableSkeletonRowsComponent, "et-table-skeleton-rows", never, {}, {}, never, never, true, never>;
23144
+ }
23145
+
21517
23146
  /**
21518
23147
  * The virtual window's spacer rule, as a styles-only component mounted by `etTableVirtualScroll` (see
21519
23148
  * `ButtonStylesDirective` for the pattern).
@@ -21560,11 +23189,15 @@ declare class TableVirtualScrollDirective {
21560
23189
 
21561
23190
  /**
21562
23191
  * The base table: typed rows and cells, the `etTableCell` / `etTableHeaderCell` /
21563
- * `etTableFooterCell` templates, sort headers, sticky columns, the empty state and the footer slot.
23192
+ * `etTableFooterCell` templates, sort headers, the empty state and the footer slot.
21564
23193
  * Deliberately lean - each optional feature ships its own imports array (e.g.
21565
23194
  * {@link TABLE_FILTER_IMPORTS}), so what you don't import stays out of your bundle.
23195
+ *
23196
+ * Row expansion, grouped headers, loading placeholders and sticky columns are **not** in here - see
23197
+ * {@link TABLE_ROW_EXPANSION_IMPORTS}, {@link TABLE_GROUP_HEADERS_IMPORTS},
23198
+ * {@link TABLE_SKELETON_IMPORTS} and {@link TABLE_STICKY_COLUMNS_IMPORTS}.
21566
23199
  */
21567
- declare const TABLE_IMPORTS: readonly [typeof TableComponent, typeof TableFooterDirective, typeof TableCellDirective, typeof TableHeaderCellDirective, typeof TableFooterCellDirective, typeof TableCellSkeletonDirective];
23200
+ declare const TABLE_IMPORTS: readonly [typeof TableComponent, typeof TableFooterDirective, typeof TableCellDirective, typeof TableHeaderCellDirective, typeof TableFooterCellDirective];
21568
23201
  /**
21569
23202
  * Filter menus for `filterable` columns (`etTableFilters`), plus the `etTableFilterOption` template for
21570
23203
  * templating an option's content. Pulls in the menu system.
@@ -21604,6 +23237,29 @@ declare const TABLE_RESIZE_IMPORTS: readonly [typeof TableResizeDirective];
21604
23237
  declare const TABLE_REORDER_IMPORTS: readonly [typeof TableReorderDirective];
21605
23238
  /** Multi-row selection (`etTableSelection`). Pulls in the checkbox component. */
21606
23239
  declare const TABLE_SELECTION_IMPORTS: readonly [typeof TableSelectionDirective];
23240
+ /**
23241
+ * Grouped column headers (`etTableGroupHeaders`): a spanning row above the column headers in which
23242
+ * adjacent columns sharing a `group` read under one label. Carries that row and its chrome.
23243
+ */
23244
+ declare const TABLE_GROUP_HEADERS_IMPORTS: readonly [typeof TableGroupHeadersDirective];
23245
+ /**
23246
+ * Sticky columns (`etTableStickyColumns`): a column declaring `sticky: 'start' | 'end'` stays put while
23247
+ * the table scrolls horizontally. Carries the measuring of the pinned offsets and the pinned cells'
23248
+ * chrome, which is why it is separate - a table that pins nothing measures nothing.
23249
+ */
23250
+ declare const TABLE_STICKY_COLUMNS_IMPORTS: readonly [typeof TableStickyColumnsDirective];
23251
+ /**
23252
+ * Loading placeholders (`etTableSkeleton`): a block of skeleton rows while loading with no rows yet, a
23253
+ * bone in a cell that is loading on its own, and the `etTableCellSkeleton` template for saying what a
23254
+ * column's bone looks like. Pulls in the [skeleton](/components/skeleton) component.
23255
+ */
23256
+ declare const TABLE_SKELETON_IMPORTS: readonly [typeof TableSkeletonDirective, typeof TableCellSkeletonDirective];
23257
+ /**
23258
+ * Row expansion (`etTableRowExpansion`): a leading expander column and a full-width detail row for the
23259
+ * table's `[expandedRowTemplate]`. Carries the detail row's chrome and its grow-open animation, which is
23260
+ * why it is separate - a table that never expands a row pays for none of it.
23261
+ */
23262
+ declare const TABLE_ROW_EXPANSION_IMPORTS: readonly [typeof TableRowExpansionDirective];
21607
23263
  /**
21608
23264
  * Tooltips on failed cells (`etTableCellErrorTooltip`): a `cellState` message is shown on hover/focus
21609
23265
  * rather than as a native `title`. Pulls in the tooltip, and with it the overlay runtime.
@@ -21707,6 +23363,7 @@ declare class NavTabLinkDirective {
21707
23363
  private navTabs;
21708
23364
  private tabBar;
21709
23365
  private destroyRef;
23366
+ private readonly hostElement;
21710
23367
  trigger: TabBarTriggerDirective;
21711
23368
  private routerLinkIsActive;
21712
23369
  isActive: _angular_core.Signal<boolean>;
@@ -21718,6 +23375,7 @@ declare class NavTabLinkDirective {
21718
23375
  declare class NavTabsOutletDirective {
21719
23376
  private nearestTabBar;
21720
23377
  private registry;
23378
+ private readonly hostElement;
21721
23379
  readonly ID: string;
21722
23380
  private tabBar;
21723
23381
  activeTriggerId: _angular_core.Signal<string | null>;
@@ -21776,6 +23434,7 @@ declare const TAB_ERROR_CODES: {
21776
23434
 
21777
23435
  declare class TabPanelDirective {
21778
23436
  private tabGroup;
23437
+ private readonly hostElement;
21779
23438
  triggerId: _angular_core.InputSignal<string | null>;
21780
23439
  readonly ID: string;
21781
23440
  isActive: _angular_core.Signal<boolean>;
@@ -21830,6 +23489,7 @@ declare class TabLabelDirective {
21830
23489
 
21831
23490
  declare class TabComponent {
21832
23491
  private tabGroup;
23492
+ private readonly hostElement;
21833
23493
  label: _angular_core.InputSignal<string>;
21834
23494
  icon: _angular_core.InputSignal<string | null>;
21835
23495
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -22202,5 +23862,5 @@ declare const TOOLTIP_ERROR_CODES: {
22202
23862
 
22203
23863
  declare const TOOLTIP_IMPORTS: readonly [typeof TooltipDirective, typeof TooltipComponent];
22204
23864
 
22205
- export { ACCORDION_ERROR_CODES, ACCORDION_GROUP_TOKEN, ACCORDION_IMPORTS, ACCORDION_TOKEN, ALIGN_CENTER_ICON, ALIGN_JUSTIFY_ICON, ALIGN_LEFT_ICON, ALIGN_RIGHT_ICON, ARROWS_LEFT_RIGHT_ICON, ARROW_OUT_UP_RIGHT_ICON, ARROW_RIGHT_ICON, ARROW_UP_ICON, AccordionComponent, AccordionContentDirective, AccordionDirective, AccordionGroupComponent, AccordionGroupDirective, AccordionHintDirective, AccordionLabelDirective, AccordionPanelDirective, AccordionTriggerDirective, BOLD_ICON, BRACKET_CARD_CONTEXT, BRACKET_DATA_LAYOUT, BRACKET_DEFAULTS, BRACKET_DENSITY, BRACKET_DENSITY_PRESETS, BRACKET_ERROR_CODES, BRACKET_IMPORTS, BRACKET_LABELS, BRACKET_ROUND_MIRROR_TYPE, BRACKET_SWISS_GROUP_COLOR_TYPE, BREADCRUMB_COLLAPSE_IMPORTS, BREADCRUMB_COLLAPSE_TOKEN, BREADCRUMB_ERROR_CODES, BREADCRUMB_IMPORTS, BREADCRUMB_LABELS, BREADCRUMB_SEGMENT_TOKEN, BREADCRUMB_SEO_IMPORTS, BREADCRUMB_TOKEN, BUTTON_ICON_ALIGNMENTS, BUTTON_IMPORTS, BUTTON_SIZES, BUTTON_SPINNER_CONFIG, BUTTON_TYPES, BUTTON_VARIANTS, BracketComponent, BracketDefaultContinueComponent, BracketDefaultFinalMatchComponent, BracketDefaultMatchComponent, BracketDefaultRoundHeaderComponent, BracketMap, BracketRoundsListComponent, BrandLoaderComponent, BreadcrumbCollapseDirective, BreadcrumbComponent, BreadcrumbDirective, BreadcrumbItemDirective, BreadcrumbItemTemplateDirective, BreadcrumbOutletComponent, BreadcrumbOverflowComponent, BreadcrumbSegmentDirective, BreadcrumbSeoDirective, BreadcrumbSeparatorDirective, ButtonComponent, ButtonDirective, ButtonStylesDirective, CALENDAR_ERROR_CODES, CALENDAR_ICON, CALENDAR_IMPORTS, CALENDAR_LABELS, CAROUSEL_AUTOPLAY_TOKEN, CAROUSEL_ERROR_CODES, CAROUSEL_IMPORTS, CAROUSEL_LABELS, CAROUSEL_SLIDE_ALIGNMENTS, CAROUSEL_TOKEN, CAROUSEL_TRANSITIONS, CAROUSEL_TRANSITION_DRIVERS, CASCADER_ERROR_CODES, CASCADER_IMPORTS, CASCADER_LABELS, CASCADER_SELECTABLE_LEVELS, CHECKBOX_GROUP_IMPORTS, CHECKBOX_IMPORTS, CHECKBOX_OPTION_VARIANTS, CHECK_ICON, CHEVRON_ICON, CHIP_ERROR_CODES, CHIP_IMPORTS, CHIP_LABELS, CHOICE_FIELD_IMPORTS, CHOICE_FIELD_VARIANTS, CIRCLE_CHECK_ICON, CIRCLE_INFO_ICON, CLIPBOARD_CHECK_ICON, CLOCK_ICON, CODE_BLOCK_ICON, CODE_ICON, COLOR_INPUT_IMPORTS, COMMON_BRACKET_ROUND_TYPE, CalendarCellDirective, CalendarComponent, CalendarDirective, CalendarGridDirective, CalendarHeaderDirective, CarouselAutoplayDirective, CarouselComponent, CarouselDirective, CarouselItemDirective, CarouselNextDirective, CarouselPlayToggleDirective, CarouselPreviousDirective, CarouselSlideDirective, CascaderColumnDirective, CascaderComponent, CascaderDirective, CascaderNodeDirective, CascaderPanelComponent, CascaderSearchDirective, CascaderSearchOptionDirective, CascaderSurfaceDirective, CascaderTriggerDirective, CheckboxComponent, CheckboxDirective, CheckboxGroupComponent, CheckboxGroupSelectAllComponent, CheckboxOptionComponent, ChipComponent, ChipDirective, ChipRemoveDirective, ChoiceFieldComponent, ColorInputComponent, ColorInputDirective, CounterComponent, DAILYMOTION_PLAYER_TOKEN, DATE_FORMAT, DATE_INPUT_ERROR_CODES, DATE_INPUT_IMPORTS, DATE_LOCALE, DATE_PICKER_HOST, DATE_RANGE_INPUT_ERROR_CODES, DATE_RANGE_INPUT_IMPORTS, DATE_TIME_INPUT_ERROR_CODES, DATE_TIME_INPUT_IMPORTS, DATE_TIME_LABELS, DEFAULT_BRACKET_LABELS, DEFAULT_BREADCRUMB_LABELS, DEFAULT_BREAKPOINTS, DEFAULT_CALENDAR_LABELS, DEFAULT_CALENDAR_RANGE_STRATEGY, DEFAULT_CAROUSEL_LABELS, DEFAULT_CASCADER_LABELS, DEFAULT_CHIP_LABELS, DEFAULT_DATE_TIME_LABELS, DEFAULT_DROPZONE_LABELS, DEFAULT_FILTER_OVERLAY_LABELS, DEFAULT_FORM_FIELD_LABELS, DEFAULT_GRID_LABELS, DEFAULT_ICON_VARIANT, DEFAULT_INPUT_LABELS, DEFAULT_LOADER_LABELS, DEFAULT_MATCH_CARD_START_TIME_FORMAT, DEFAULT_MATCH_LABELS, DEFAULT_NOTIFICATION_LABELS, DEFAULT_NOTIFICATION_MANAGER_CONFIG, DEFAULT_NOTIFICATION_STATUS_ICONS, DEFAULT_PAGINATION_LABELS, DEFAULT_PHONE_INPUT_LABELS, DEFAULT_PIP_WINDOW_CONFIG, DEFAULT_QUERY_ERROR_LABELS, DEFAULT_RICH_TEXT_EDITOR_LABELS, DEFAULT_RICH_TEXT_EDITOR_TOOLS, DEFAULT_SELECT_LABELS, DEFAULT_SLIDER_LABELS, DEFAULT_STANDINGS_LABELS, DEFAULT_STREAM_LABELS, DEFAULT_STREAM_PLAYER_STATE, DEFAULT_TABLE_LABELS, DEFAULT_TIME_PICKER_LABELS, DESCRIPTION_IMPORTS, DOUBLE_ELIMINATION_BRACKET_ROUND_TYPE, DROPZONE_ENTRY_STATUSES, DROPZONE_ERROR_CODES, DROPZONE_FILES_ERROR_KIND, DROPZONE_FILE_CONSTRAINTS, DROPZONE_FILE_REJECTION_REASONS, DROPZONE_IMPORTS, DROPZONE_LABELS, DURATION_INPUT_ERROR_CODES, DURATION_INPUT_IMPORTS, DailymotionPlayerComponent, DailymotionPlayerDirective, DailymotionPlayerParamsDirective, DailymotionPlayerSlotComponent, DateInputComponent, DateInputDirective, DateInputFieldDirective, DatePickerPanelComponent, DatePickerSurfaceDirective, DatePickerTriggerDirective, DateRangeInputComponent, DateRangeInputDirective, DateRangeInputFieldDirective, DateTimeInputComponent, DateTimeInputDirective, DateTimeInputFieldDirective, DescriptionComponent, DropzoneComponent, DropzoneDirective, DurationInputComponent, DurationInputDirective, DurationInputFieldDirective, ELLIPSIS_ICON, ELLIPSIS_VERTICAL_ICON, ET_BUILT_IN_ICON_NAMES, EYE_ICON, EYE_SLASH_ICON, FACEBOOK_PLAYER_TOKEN, FILE_ICON, FILTER_ICON, FILTER_OVERLAY_ERROR_CODES, FILTER_OVERLAY_IMPORTS, FILTER_OVERLAY_LABELS, FILTER_OVERLAY_TOKEN, FLOATING_ACTION_ERROR_CODES, FLOATING_ACTION_IMPORTS, FLOATING_ACTION_STATES, FLOATING_ACTION_TOKEN, FLOPPY_DISK_ICON, FOCUS_FRAME_ICON, FORM_ERROR_MESSAGE_RESOLVER, FORM_FIELD_APPEARANCES, FORM_FIELD_CONTROL_TYPES, FORM_FIELD_ERROR_CODES, FORM_FIELD_FILLS, FORM_FIELD_IMPORTS, FORM_FIELD_LABELS, FORM_FIELD_LABEL_MODES, FORM_FIELD_SIZES, FORM_FIELD_TOKEN, FabComponent, FacebookPlayerComponent, FacebookPlayerDirective, FacebookPlayerParamsDirective, FacebookPlayerSlotComponent, FilterOverlayResetDirective, FilterOverlaySubmitDirective, FloatingActionAnchorDirective, FloatingActionDirective, FloatingActionScopeDirective, FloatingActionTopDirective, FloatingActionTriggerDirective, FocusRingDirective, FormErrorComponent, FormFieldComponent, FormFieldDirective, GERMAN_FILTER_OVERLAY_LABELS, GERMAN_QUERY_ERROR_LABELS, GRID_2X2_ICON, GRID_DEBUG_IMPORTS, GRID_ERROR_CODES, GRID_IMPORTS, GRID_LABELS, GRID_TOKEN, GROUP_BRACKET_ROUND_TYPE, GridComponent, GridDebugComponent, GridDirective, GridDragDirective, GridItemComponent, GridItemDefaultActionsComponent, GridItemDirective, GridItemRef, GridItemToolbarComponent, GridResizeDirective, HEADING_1_ICON, HEADING_2_ICON, HEADING_3_ICON, HintComponent, ICONS_TOKEN, ICON_DIRECTIVE_TOKEN, ICON_ERROR_CODES, ICON_IMPORTS, ICON_OVERRIDES_TOKEN, IMAGE_ICON, INITIAL_SUPPORT_PRESENTATION_STATE, INPUT_IMPORTS, INPUT_LABELS, INPUT_MASK_HOST, INPUT_TEXT_ALIGNMENTS, INPUT_TYPES, INTERACTIVE_TAGS, ITALIC_ICON, IconButtonComponent, IconDirective, InputComponent, InputDirective, InputMaskDirective, InputPrefixDirective, InputSuffixDirective, KICK_PLAYER_TOKEN, KickPlayerComponent, KickPlayerDirective, KickPlayerParamsDirective, KickPlayerSlotComponent, LINK_ICON, LIST_BULLETED_ICON, LIST_NUMBERED_ICON, LOADER_LABELS, LOCK_ICON, LabelDirective, MASKED_INPUT_ERROR_CODES, MASKED_INPUT_IMPORTS, MASK_VALUE_MODES, MASONRY_ERROR_CODES, MASONRY_IMPORTS, MASONRY_TOKEN, MATCH_CARD_IMPORTS, MATCH_CARD_SIZES, MATCH_CARD_TOKEN, MATCH_ERROR_CODES, MATCH_LABELS, MATCH_PARTICIPANT_IMPORTS, MENU_ERROR_CODES, MENU_IMPORTS, MENU_ITEM_VARIANTS, MENU_SELECTION_GROUP_MULTIPLE, MENU_SELECTION_GROUP_TOKEN, MENU_SELECTION_ITEM_KIND, MINUS_ICON, MULTI_LANGUAGE_RICH_TEXT_EDITOR_ERROR_CODES, MULTI_LANGUAGE_RICH_TEXT_EDITOR_IMPORTS, MasonryDirective, MasonryItemDirective, MatchCardComponent, MatchCardDirective, MatchCardGameScoresDirective, MatchCardMetaDirective, MatchCardScoreDirective, MatchParticipantComponent, MatchScoreComponent, MenuCheckboxGroupComponent, MenuCheckboxItemComponent, MenuComponent, MenuContextTriggerDirective, MenuDirective, MenuGroupLabelComponent, MenuItemComponent, MenuItemDirective, MenuItemShortcutComponent, MenuPanelDirective, MenuRadioGroupComponent, MenuRadioItemComponent, MenuSearchDirective, MenuSelectionGroupDirective, MenuSelectionItemDirective, MenuSeparatorComponent, MenuSurfaceDirective, MenuTriggerDirective, MultiLanguageRichTextEditorComponent, MultiLanguageRichTextEditorDirective, MultiLanguageRichTextEditorLanguageToolComponent, NAV_TABS_TOKEN, NAV_TAB_IMPORTS, NOTIFICATION_ACTION_SLOTS, NOTIFICATION_ERROR_CODES, NOTIFICATION_IMPORTS, NOTIFICATION_LABELS, NOTIFICATION_STACK_CONTEXT_TOKEN, NOTIFICATION_STATUS, NUMBER_INPUT_IMPORTS, NavTabLinkComponent, NavTabLinkDirective, NavTabsComponent, NavTabsDirective, NavTabsOutletComponent, NavTabsOutletDirective, NotificationActionDirective, NotificationComponent, NotificationDirective, NotificationDismissDirective, NotificationItemDirective, NotificationStackDirective, NotificationSwipeToDismissDirective, NumberInputComponent, NumberInputDirective, OTP_INPUT_IMPORTS, OVERLAY_BACK_OR_CLOSE_TOKEN, OVERLAY_BODY_TOKEN, OVERLAY_CONFIG_CLASS_KEYS, OVERLAY_CONTENT_IMPORTS, OVERLAY_ERROR_CODES, OVERLAY_FOOTER_TOKEN, OVERLAY_HEADER_TEMPLATE_TOKEN, OVERLAY_HEADER_TOKEN, OVERLAY_IMPORTS, OVERLAY_MAIN_TOKEN, OVERLAY_QUERY_PARAM_INPUT_NAME, OVERLAY_REF, OVERLAY_ROUTER_CONFIG_TOKEN, OVERLAY_ROUTER_LINK_TOKEN, OVERLAY_ROUTER_OUTLET_DISABLED_TEMPLATE_TOKEN, OVERLAY_ROUTER_OUTLET_TOKEN, OVERLAY_ROUTER_TOKEN, OVERLAY_SHARED_ROUTE_TEMPLATE_TOKEN, OtpInputComponent, OtpInputDirective, OverlayAnchorDirective, OverlayBackOrCloseDirective, OverlayBodyComponent, OverlayCloseDirective, OverlayContainerComponent, OverlayDirective, OverlayFooterDirective, OverlayHeaderDirective, OverlayHeaderTemplateDirective, OverlayMainDirective, OverlayOriginCloneComponent, OverlayRouteHeaderTemplateOutletComponent, OverlayRouterLinkDirective, OverlayRouterOutletComponent, OverlayRouterOutletDisabledTemplateDirective, OverlaySharedRouteTemplateDirective, OverlaySharedRouteTemplateOutletComponent, OverlaySidebarComponent, OverlaySidebarPageComponent, OverlaySurfaceDirective, OverlayTitleDirective, OverlayTriggerDirective, PAGE_SIZE_SELECT_IMPORTS, PAGINATION_IMPORTS, PAGINATION_LABELS, PARAGRAPH_ICON, PASSWORD_INPUT_IMPORTS, PAUSE_ICON, PENCIL_ICON, PHONE_COUNTRIES, PHONE_INPUT_ERROR_CODES, PHONE_INPUT_IMPORTS, PHONE_INPUT_LABELS, PICTURE_IMPORTS, PICTURE_STATES, PIP_CHROME_REF_TOKEN, PIP_ENTRY_TOKEN, PIP_WINDOW_ASPECT_RATIO_TOKEN, PLAY_ICON, PLUS_ICON, PageSizeSelectComponent, PaginationComponent, PaginationDirective, PaginationSeoDirective, PasswordInputComponent, PasswordInputDirective, PhoneInputComponent, PhoneInputDirective, PhoneInputFieldDirective, PhoneInputFlagDirective, PictureComponent, PictureErrorDirective, PicturePlaceholderDirective, PipBackDirective, PipBringBackDirective, PipCellDirective, PipCloseDirective, PipCollapseOverlayDirective, PipGridToggleDirective, PipPlayerComponent, PipSlotPlaceholderComponent, PipStageDirective, PipTitleBarDirective, PipTitleBarTemplateDirective, PipWindowComponent, PipWindowParamsDirective, ProgressBarComponent, QUERY_DEVTOOLS_IMPORTS, QUERY_ERROR_ERROR_CODES, QUERY_ERROR_IMPORTS, QUERY_ERROR_LABELS, QUERY_ERROR_TOKEN, QUOTE_ICON, QueryDevtoolsComponent, QueryDevtoolsJsonComponent, QueryDevtoolsToggleComponent, QueryErrorActionsDirective, QueryErrorComponent, QueryErrorDirective, QueryErrorTitleDirective, QueryParamOverlayLinkDirective, RADIO_GROUP_IMPORTS, RADIO_VARIANTS, RATING_IMPORTS, REDO_ICON, RICH_TEXT_EDITOR_HEADING_OPTIONS, RICH_TEXT_EDITOR_IMPORTS, RICH_TEXT_EDITOR_INLINE_TOOLS, RICH_TEXT_EDITOR_LABELS, RICH_TEXT_EDITOR_LANGUAGE_TOOL, RICH_TEXT_EDITOR_LINK_EDITOR, RICH_TEXT_EDITOR_TOKEN_CODEC, RICH_TEXT_EDITOR_TOKEN_PALETTE_IMPORTS, RICH_TEXT_EDITOR_TOOL, RICH_TEXT_EDITOR_TOOLS, RICH_TEXT_EDITOR_TOOL_BUTTONS, RICH_TEXT_EDITOR_TRIGGERS_IMPORTS, ROTATE_RIGHT_ICON, RadioComponent, RadioGroupComponent, RangeSliderComponent, RangeSliderDirective, RatingComponent, RatingDirective, RatingIconDirective, RichTextEditorAlignToolComponent, RichTextEditorComponent, RichTextEditorDirective, RichTextEditorFloatingToolbarComponent, RichTextEditorFloatingToolbarDirective, RichTextEditorHeadingToolComponent, RichTextEditorImageEditorComponent, RichTextEditorImageStylesComponent, RichTextEditorImageToolComponent, RichTextEditorLinkEditorComponent, RichTextEditorLinkEditorDirective, RichTextEditorTableStylesComponent, RichTextEditorTableToolComponent, RichTextEditorTokenPaletteComponent, RichTextEditorTokenPopupComponent, RichTextEditorTriggersDirective, SCROLLABLE_DARKEN_IMPORTS, SCROLLABLE_DRAG_IMPORTS, SCROLLABLE_ERROR_CODES, SCROLLABLE_IMPORTS, SCROLLABLE_NAVIGATION_IMPORTS, SEGMENTED_BUTTON_GROUP_VARIANTS, SEGMENTED_BUTTON_IMPORTS, SELECTION_LIST_IMPORTS, SELECTION_LIST_MULTIPLE, SELECTION_LIST_TOKEN, SELECT_ERROR_CODES, SELECT_FILTER_MODES, SELECT_IMPORTS, SELECT_LABELS, SIDEBAR_OVERLAY_CONFIG, SIDEBAR_OVERLAY_TOKEN, SINGLE_ELIMINATION_BRACKET_ROUND_TYPE, SKELETON_IMPORTS, SLIDER_ERROR_CODES, SLIDER_IMPORTS, SLIDER_LABELS, SLIDER_MARK_VALUE_ATTRIBUTE, SLIDER_TOKEN, SNAP_HYSTERESIS, SOOP_PLAYER_TOKEN, SPLIT_BUTTON_ERROR_CODES, STANDINGS_ERROR_CODES, STANDINGS_IMPORTS, STANDINGS_LABELS, STAR_ICON, STREAM_ALL_IMPORTS, STREAM_CONSENT_TOKEN, STREAM_DAILYMOTION_IMPORTS, STREAM_FACEBOOK_IMPORTS, STREAM_IMPORTS, STREAM_KICK_IMPORTS, STREAM_LABELS, STREAM_PIP_IMPORTS, STREAM_PLAYER_COMPONENT_TOKEN, STREAM_PLAYER_ERROR_CONTEXT_TOKEN, STREAM_PLAYER_ERROR_TOKEN, STREAM_PLAYER_PARAMS_TOKEN, STREAM_PLAYER_SLOT_TOKEN, STREAM_PLAYER_TOKEN, STREAM_SLOT_PLAYER_ID_TOKEN, STREAM_SOOP_IMPORTS, STREAM_TIKTOK_IMPORTS, STREAM_TWITCH_IMPORTS, STREAM_USER_CONSENT_PROVIDER_TOKEN, STREAM_VIMEO_IMPORTS, STREAM_YOUTUBE_IMPORTS, STRIKETHROUGH_ICON, SUPPORT_CONTENT_STATE, SUPPORT_TRANSITION_DIRECTION, SWISS_ADVANCE_WINS, SWISS_BRACKET_ROUND_TYPE, SWISS_ELIMINATE_LOSSES, SWITCH_IMPORTS, ScrollableActiveChildDirective, ScrollableButtonsComponent, ScrollableButtonsDirective, ScrollableComponent, ScrollableDarkenDirective, ScrollableDirective, ScrollableDragDirective, ScrollableIgnoreChildDirective, ScrollableLoadingTemplateDirective, ScrollableMasksComponent, ScrollableNavigationComponent, ScrollableNavigationDirective, ScrollableSnapDirective, SegmentedButtonComponent, SegmentedButtonGroupComponent, SelectComponent, SelectDirective, SelectEmptyDirective, SelectErrorDirective, SelectListboxDirective, SelectLoadingDirective, SelectOptionComponent, SelectOptionDirective, SelectOptionGroupComponent, SelectOptionGroupDirective, SelectOptionTemplateDirective, SelectOptionsDirective, SelectPanelComponent, SelectSearchDirective, SelectSurfaceDirective, SelectTriggerDirective, SelectValueDirective, SelectViewportDirective, SelectVirtualOptionComponent, SelectVirtualOptionDirective, SelectionListControlDirective, SelectionListDirective, SelectionOptionDirective, SkeletonComponent, SkeletonItemComponent, SkeletonTextComponent, SliderComponent, SliderDirective, SliderThumbDirective, SliderThumbLabelDirective, SliderTrackDirective, SoopPlayerComponent, SoopPlayerDirective, SoopPlayerParamsDirective, SoopPlayerSlotComponent, SpinnerComponent, SplitButtonActionDirective, SplitButtonComponent, SplitButtonDirective, SplitButtonTriggerDirective, StandingsComponent, StandingsDirective, StreamConsentAcceptDirective, StreamConsentComponent, StreamConsentDirective, StreamPipChromeComponent, StreamPlayerErrorComponent, StreamPlayerErrorDirective, StreamPlayerLoadingComponent, StreamPlayerSlotDirective, SwitchComponent, SwitchDirective, TABLE_CELL_ERROR_TOOLTIP_IMPORTS, TABLE_COLUMN_CHOOSER_IMPORTS, TABLE_COLUMN_MENU_IMPORTS, TABLE_CSV_EXPORT_IMPORTS, TABLE_ERROR_CODES, TABLE_FEATURE_HOST, TABLE_FILTER_IMPORTS, TABLE_ICON, TABLE_IMPORTS, TABLE_INLINE_EDIT_IMPORTS, TABLE_KEYBOARD_NAV_IMPORTS, TABLE_LABELS, TABLE_REORDER_IMPORTS, TABLE_RESIZE_IMPORTS, TABLE_SELECTION_IMPORTS, TABLE_STATE_PERSISTENCE_IMPORTS, TABLE_VIRTUAL_SCROLL_IMPORTS, TAB_BAR_FITS, TAB_BAR_ORIENTATIONS, TAB_BAR_TOKEN, TAB_BAR_TRIGGER_TOKEN, TAB_BAR_VARIANTS, TAB_ERROR_CODES, TAB_GROUP_TOKEN, TAB_IMPORTS, TAB_PANEL_TOKEN, TAB_SIZES, TAG_INPUT_ERROR_CODES, TAG_INPUT_IMPORTS, TEXTAREA_IMPORTS, TEXTAREA_RESIZE_MODES, TEXT_ALIGNS, TIKTOK_PLAYER_TOKEN, TIMES_ICON, TIME_FORMAT, TIME_INPUT_ERROR_CODES, TIME_INPUT_IMPORTS, TIME_PICKER_ERROR_CODES, TIME_PICKER_IMPORTS, TIME_PICKER_LABELS, TOGGLETIP_ERROR_CODES, TOGGLETIP_IMPORTS, TOOLTIP_ERROR_CODES, TOOLTIP_IMPORTS, TOURNAMENT_MODE, TRIANGLE_EXCLAMATION_ICON, TROPHY_ICON, TWITCH_PLAYER_TOKEN, TabBarDirective, TabBarTriggerDirective, TabBarUnderlineDirective, TabComponent, TabGroupComponent, TabGroupDirective, TabLabelDirective, TabPanelDirective, TabTriggerDirective, TableCellDirective, TableCellEditDirective, TableCellErrorMarkComponent, TableCellErrorTooltipDirective, TableCellSkeletonDirective, TableColumnChooserComponent, TableColumnMenuDirective, TableColumnMenuTriggerComponent, TableComponent, TableCsvExportDirective, TableDetailStylesComponent, TableExpanderCellComponent, TableFilterOptionDirective, TableFilterTriggerComponent, TableFiltersDirective, TableFooterCellDirective, TableFooterDirective, TableHeaderCellDirective, TableInlineEditDirective, TableInlineEditStylesComponent, TableKeyboardNavDirective, TableReorderDirective, TableReorderOverlayComponent, TableResizeDirective, TableResizeGripComponent, TableSelectAllCellComponent, TableSelectCellComponent, TableSelectionDirective, TableStatePersistenceDirective, TableVirtualScrollDirective, TableVirtualScrollStylesComponent, TagInputComponent, TagInputDirective, TagInputFieldDirective, TextButtonComponent, TextFieldControlDirective, TextareaComponent, TextareaDirective, TikTokPlayerComponent, TikTokPlayerDirective, TikTokPlayerParamsDirective, TikTokPlayerSlotComponent, TimeInputComponent, TimeInputDirective, TimeInputFieldDirective, TimePickerColumnDirective, TimePickerComponent, TimePickerDirective, TimePickerOptionDirective, ToggletipCloseDirective, ToggletipComponent, ToggletipDirective, ToggletipTriggerDirective, TooltipComponent, TooltipDirective, TwitchPlayerComponent, TwitchPlayerDirective, TwitchPlayerParamsDirective, TwitchPlayerSlotComponent, UNDERLINE_ICON, UNDO_ICON, UNIT_MS, UPLOAD_ICON, VIMEO_PLAYER_TOKEN, VimeoPlayerComponent, VimeoPlayerDirective, VimeoPlayerParamsDirective, VimeoPlayerSlotComponent, WINDOW_CONTROL_BUTTON_KINDS, WINDOW_CONTROL_BUTTON_SIZES, WindowControlButtonComponent, YOUTUBE_PLAYER_SLOT_TOKEN, YOUTUBE_PLAYER_TOKEN, YoutubePlayerComponent, YoutubePlayerDirective, YoutubePlayerParamsDirective, YoutubePlayerSlotComponent, YoutubePlayerSlotDirective, abortFullscreenAnimation, anchoredDialogOverlayStrategy, anchoredOverlayStrategy, autoPlace, bottomSheetOverlayStrategy, bracketFitsWidth, bracketNaturalWidth, buildAnchoredRuntimePositionStrategy, canHaveChildren, cascaderFromQuery, centeredOverlayStrategy, clampPosition, clampResizeRect, cleanupFullscreenAnimation, cleanupFullscreenAnimationStyles, compactLayout, computeGeometry, computeGridHeight, createAnchoredPanelController, createAutoScroller, createBracket, createBracketBase, createCardMask, createCurrencyMask, createDefaultDropzoneArgs, createDropzoneUpload, createExistingDropzoneEntry, createFileDropzoneEntry, createFixedLengthRangeStrategy, createGridAdapter, createIbanMask, createMatchesMapBase, createNewMatchParticipantBase, createNormalizedBracketMatch, createNotificationPromiseFn, createNotificationRef, createOverlayOpener, createOverlayRef, createOverlayStrategyController, createOverlayUnsavedChangesGuard, createParticipantsMapBase, createPipChromeAnimations, createPipChromeState, createRichTextEditorTrigger, createRichTextEditorTriggerWithQuery, createRoundsMapBase, createStreamConfig, createStreamPlayerSlot, createTableRowsSource, createTableStateStorage, createV2DropzoneUpload, createWeekRangeStrategy, defaultCompareWith, defaultDropzoneRejectionMessage, defineOverlay, defineQueryParamOverlay, deriveDurationFormatSpec, deserializeGridLayout, deserializeTableState, dialogOverlayStrategy, disposeDropzoneEntry, doubleEliminationBracketLayout, dropzoneFiles, enableDragToDismiss, extractFirstImageUrl, filterOverlayLabelsForLocale, filterOverlayPreviewFromQuery, filterRows, findCollision, findNextRelevantHtmlElement, findScrollableAncestor, formatDuration, formatFileSize, fromGridPosition, fullScreenDialogOverlayStrategy, generateBracketDataForEthlete, generateBracketRoundSwissGroupMaps, generateMatchPosition, generateMatchRelationPositions, generateMatchRelationsNew, generateRoundRelationsNew, generateRoundTypeFromEthleteRoundType, generateTournamentModeFormEthleteRounds, getAvailableSwissGroupsForRound, getClosestOverlay, getOriginCoordinatesAndDimensions, getSwissGroupColorType, hysteresisRound, iconRegistryKey, indexOfNode, injectAnchoredDialogStrategy, injectAnchoredDialogStrategyDefaults, injectBottomSheetStrategy, injectBottomSheetStrategyDefaults, injectBracketConfig, injectBracketLabels, injectBreadcrumbLabels, injectBreadcrumbManager, injectCalendarLabels, injectCarouselLabels, injectCascaderLabels, injectChipLabels, injectDateFormat, injectDateLocale, injectDateTimeLabels, injectDialogStrategy, injectDialogStrategyDefaults, injectDropzoneLabels, injectFilterOverlay, injectFilterOverlayLabels, injectFormFieldLabels, injectFormSupport, injectFullscreenDialogStrategy, injectFullscreenDialogStrategyDefaults, injectGridConfig, injectGridLabels, injectInputLabels, injectLeftSheetStrategy, injectLeftSheetStrategyDefaults, injectLoaderLabels, injectMatchLabels, injectNotificationLabels, injectNotificationManager, injectNotificationManagerConfig, injectOverlayManager, injectOverlayRouter, injectOverlayScrollBlocker, injectOverlaySurfaceContext, injectPaginationLabels, injectPhoneInputLabels, injectPictureConfig, injectPipChromeManager, injectPipManager, injectPipSlotPlaceholderConfig, injectQueryErrorLabels, injectRichTextEditorLabels, injectRichTextEditorTools, injectRightSheetStrategy, injectRightSheetStrategyDefaults, injectSelectLabels, injectSidebarOverlay, injectSliderLabels, injectStandingsLabels, injectStreamConfig, injectStreamConsentConfig, injectStreamLabels, injectStreamManager, injectStreamPlayerErrorConfig, injectStreamPlayerLoadingConfig, injectStreamScriptLoader, injectStreamUserConsentProvider, injectTableCsvExport, injectTableFeatureHost, injectTableLabels, injectTimeFormat, injectTimePickerLabels, injectTopSheetStrategy, injectTopSheetStrategyDefaults, isFileAccepted, isHtmlElement, isInteractiveElement, isPointerEvent, isTargetInsideOverlayTree, isTouchEvent, itemsCollide, leftSheetOverlayStrategy, legacyQueryErrorSource, mapLayoutToBreakpoint, matchCountryByDialCode, matchParticipantDisplayName, mergeOverlayBreakpointConfigs, mergeOverlayConfigs, mirroredDoubleEliminationBracketLayout, mirroredSingleEliminationBracketLayout, mountRichTextEditorImageStyles, mountRichTextEditorTableStyles, nodesEqual, normalizeEthleteBracketMatch, normalizeEthleteGroupRanking, normalizeEthleteMatch, normalizeEthleteMatchStatus, normalizeEthleteMedia, normalizeEthleteParticipant, normalizeEthletePlacement, normalizePictureSizes, normalizePictureSource, paginate, parseDuration, phoneCountryFlag, phoneCountryName, pixelRectsEqual, positionToPixelRect, positionsEqual, projectDragCell, provideAnchoredDialogStrategy, provideAnchoredDialogStrategyDefaults, provideBottomSheetStrategy, provideBottomSheetStrategyDefaults, provideBracketConfig, provideBracketLabels, provideBreadcrumbLabels, provideBreadcrumbManager, provideCalendarLabels, provideCarouselLabels, provideCascaderLabels, provideChipLabels, provideDateFormat, provideDateLocale, provideDateTimeLabels, provideDialogStrategy, provideDialogStrategyDefaults, provideDropzoneLabels, provideFilterOverlay, provideFilterOverlayLabels, provideFormErrorMessageResolver, provideFormFieldLabels, provideFormSupport, provideFullscreenDialogStrategy, provideFullscreenDialogStrategyDefaults, provideGridConfig, provideGridLabels, provideIconOverrides, provideIcons, provideInputLabels, provideLeftSheetStrategy, provideLeftSheetStrategyDefaults, provideLoaderLabels, provideMatchLabels, provideNotificationLabels, provideNotificationManager, provideNotificationManagerConfig, provideNotificationManagerInstance, provideOverlay, provideOverlayManager, provideOverlayRouter, provideOverlayRouterConfig, provideOverlayRouterService, provideOverlayScrollBlocker, providePaginationLabels, providePhoneInputLabels, providePictureConfig, providePipChromeManager, providePipManager, providePipSlotPlaceholderConfig, provideQueryErrorLabels, provideRichTextEditorAlignmentTool, provideRichTextEditorHeadingTool, provideRichTextEditorImageTool, provideRichTextEditorLabels, provideRichTextEditorLanguageTool, provideRichTextEditorLinkEditor, provideRichTextEditorTableTool, provideRichTextEditorTokenRendering, provideRichTextEditorTools, provideRightSheetStrategy, provideRightSheetStrategyDefaults, provideSelectLabels, provideSidebarOverlay, provideSidebarOverlayConfig, provideSidebarOverlayService, provideSliderLabels, provideStandingsLabels, provideStreamConfig, provideStreamConsentConfig, provideStreamLabels, provideStreamManager, provideStreamPlayerErrorConfig, provideStreamPlayerLoadingConfig, provideTableLabels, provideTimeFormat, provideTimePickerLabels, provideTopSheetStrategy, provideTopSheetStrategyDefaults, queryErrorLabelsForLocale, queryErrorResponseFromLegacyError, reconcileColumnOrder, reconcileColumnWidths, reconcileHiddenColumns, reduceSupportPresentation, registerSingleton, requiredLanguages, resizeSpanBounds, resolveBracketLayout, resolveBreakpoint, resolveClosestOverlay, resolveCollisions, resolveFilterOverlaySubmitButton, resolveNotificationStatusIcon, resolveTableCsvRows, richTextEditorToolLabel, rightSheetOverlayStrategy, rowsToPixelHeight, selectOptionsFromQuery, selectOptionsFromV2Query, serializeGridLayout, serializeTableState, setupRichTextEditorLinkEditor, singleEliminationBracketLayout, snapResizeSpan, sortRows, spanHeight, spanWidth, startFullscreenEnterAnimation, startFullscreenLeaveAnimation, startImageUpload, startOfCalendarUnit, stripTrunkZero, supportPresentationIncludesState, swissBracketLayout, tableCsvRowsFromPages, tableFeatureConfig, tableRowsFromQuery, tableRowsFromV2Query, tableToCsv, toChildrenObservable, toGridPosition, toNotificationContent, toPathObservable, toSearchObservable, topSheetOverlayStrategy, transformingBottomSheetToDialogOverlayStrategy, transformingFullScreenDialogToDialogOverlayStrategy, transformingFullScreenDialogToRightSheetOverlayStrategy, wireFormSupport, withPictureBaseUrl };
22206
- export type { AccordionHeadingLevel, AnchoredDialogOverlayStrategyOptions, AnchoredOverlayStrategyOptions, AnchoredPanelCloseInfo, AnchoredPanelOverlayRef, AnchoredPanelSurfaceLike, AnchoredPositionOptions, AnyDropzoneUploadConfig, AnyTableColumn, AutoPlaceOptions, AutoScrollPointer, AutoScroller, Bracket, BracketBase, BracketCardContext, BracketComponents, BracketConfig, BracketContinueComponent, BracketDataLayout, BracketDataSource, BracketDensity, BracketDrawEdgesContext, BracketLabels, BracketLayout, BracketLayoutConfig, BracketListSection, BracketMatch, BracketMatchBase, BracketMatchComponent, BracketMatchFactor, BracketMatchId, BracketMatchNormalizer, BracketMatchParticipant, BracketMatchParticipantBase, BracketMatchParticipantWithRelationsBase, BracketMatchPosition, BracketMatchRelation, BracketMatchRelationNothingToOne, BracketMatchRelationOneToNothing, BracketMatchRelationOneToOne, BracketMatchRelationTwoToNothing, BracketMatchRelationTwoToOne, BracketMatchShortId, BracketMatchSource, BracketMatchStatus, BracketMatchWithRelationsBase, BracketParticipant, BracketParticipantBase, BracketParticipantMatch, BracketParticipantWithRelationsBase, BracketRound, BracketRoundBase, BracketRoundHeaderComponent, BracketRoundId, BracketRoundMapWithSwissData, BracketRoundMirrorType, BracketRoundPosition, BracketRoundRelation, BracketRoundRelationNothingToOne, BracketRoundRelationOneToNothing, BracketRoundRelationOneToOne, BracketRoundRelationTwoToNothing, BracketRoundRelationTwoToOne, BracketRoundShortId, BracketRoundSource, BracketRoundSwissData, BracketRoundSwissGroup, BracketRoundSwissGroupId, BracketRoundSwissGroupMap, BracketRoundType, BracketRoundWithRelationsBase, BracketRoundsListBlock, BracketRoundsListSection, BracketSwissColors, BracketSwissGroupColorType, BreadcrumbCollapseAffordance, BreadcrumbCrumb, BreadcrumbLabels, BreadcrumbRenderItem, BreadcrumbSegment, ButtonIconAlignment, ButtonSize, CalendarBandPosition, CalendarCell, CalendarCellBase, CalendarDateClassFn, CalendarFixedLengthRangeStrategyOptions, CalendarHeaderContext, CalendarInterval, CalendarLabels, CalendarMode, CalendarMonthPage, CalendarNavigationDirection, CalendarPrecision, CalendarRange, CalendarRangeSelectionStrategy, CalendarSelectionFlags, CalendarView, CalendarWeekRangeStrategyOptions, CalendarWeekday, CarouselAutoplayPauseReason, CarouselLabels, CarouselResolvedTransitionDriver, CarouselSlideAlign, CarouselSlideContext, CarouselSlideTemplateRef, CarouselTransition, CarouselTransitionDriver, CascaderColumnState, CascaderCompareWith, CascaderDataSource, CascaderFromQueryConfig, CascaderFromQuerySearchConfig, CascaderLabels, CascaderNode, CascaderNodeSignal, CascaderSearchState, CascaderSelectableLevels, CascaderSurfaceContext, CenteredOverlayStrategyOptions, CheckboxOptionVariant, ChipLabels, ChoiceFieldVariant, ClampPositionOptions, CommonBracketRoundType, CompactLayoutOptions, ComponentInputValue, ComputedBracketGrid, CounterComponentBase, CreateAnchoredPanelControllerOptions, CreateBracketGridConfig, CreateExistingDropzoneEntryOptions, CreateFileDropzoneEntryOptions, CreateOverlayUnsavedChangesGuardConfig, CreateTableRowsSourceOptions, CurrencyMaskOptions, DatePickerHost, DatePickerSurfaceBase, DatePickerSurfaceContext, DatePickerTriggerBase, DateRangeSide, DateRangeValue, DateTimeLabels, Dimensions, DoubleEliminationBracketRoundType, DragDismissMomentum, DragToDismissContext, DragToDismissRef, DropzoneEntry, DropzoneEntrySource, DropzoneEntryStatus, DropzoneExistingFileInfo, DropzoneFileConstraints, DropzoneFileRejection, DropzoneFileRejectionReason, DropzoneFileValidationChannel, DropzoneLabels, DropzoneUploadConfig, DropzoneUploadError, DropzoneUploadHandle, DropzoneUploadHandleOptions, DropzoneUploadState, DurationFormatSpec, DurationSegment, DurationUnit, EtBuiltInIconName, EthleteIconNameRegistry, EthleteIconVariantRegistry, FacebookVideoPlayer, FacebookWindow, FilterOverlay, FilterOverlayConfig, FilterOverlayDraft, FilterOverlayLabels, FilterOverlayPreview, FilterOverlayResult, FilterOverlaySubmitButton, FilterOverlaySubmitState, FilterOverlayValueOf, FilterRowsConfig, FindCollisionOptions, FloatingActionState, FormErrorMessageResolver, FormFieldAppearance, FormFieldControl, FormFieldControlType, FormFieldDirectiveBase, FormFieldFill, FormFieldLabelMode, FormFieldLabels, FormFieldSize, FormSupport, FullscreenAnimationCancellable, FullscreenAnimationDeps, FullscreenAnimationState, GenerateBracketDataOptions, GridAdapter, GridBreakpointConfig, GridBreakpointName, GridComponentRegistration, GridConfig, GridGeometry, GridItemActionsComponent, GridItemConfig, GridItemConstraints, GridItemPosition, GridLabels, GridLayoutEntry, GridSerializedState, GroupBracketRoundType, HintComponentBase, IconDefinition, IconOverride, InputLabels, InputMaskHost, InputTextAlignment, LabelDirectiveBase, LegacyQueryErrorSource, LoaderLabels, MapLayoutOptions, MaskSpec, MaskValueMode, MasonryColumns, MasonryPacking, MasonryPlacement, MatchCardNameContext, MatchCardSize, MatchLabels, MatchParticipantDisplayNameOptions, MatchParticipantId, MatchParticipantShortId, MatchParticipantSide, MatchPositionMaps, MatchResultNameContext, MatchScoreChange, MenuAnchorPoint, MenuCloseReason, MenuItemActivationEvent, MenuItemActivationSource, MenuItemVariant, MenuOpenSource, MenuSelectionGroupDirectiveBase, MenuSelectionGroupItem, MenuSelectionItemKind, MenuSurfaceContext, MultiLanguageRichTextEditorLanguage, MultiLanguageRichTextEditorValue, NormalizedGameScore, NormalizedMatch, NormalizedMatchParticipant, NormalizedMatchResultKind, NormalizedMatchStatus, NormalizedMedia, NormalizedStandingRow, NotificationAction, NotificationActionSlot, NotificationConfig, NotificationContentInit, NotificationContentInput, NotificationEntry, NotificationLabels, NotificationManager, NotificationManagerConfig, NotificationPromiseContent, NotificationPromiseFn, NotificationPromiseWork, NotificationRef, NotificationStackContext, NotificationStatus, OtpInputCharset, OverlayAutoFocusTarget, OverlayBodyDividerType, OverlayBreakpointConfig, OverlayCloseGuard, OverlayConfig, OverlayDefinition, OverlayDefinitionConfig, OverlayDragToDismissConfig, OverlayDragToDismissDirection, OverlayDragToDismissPhysicalDirection, OverlayLifecycleConfig, OverlayManager, OverlayMode, OverlayOpenConfig, OverlayOpener, OverlayOpenerConfig, OverlayRef, OverlayRole, OverlayRoute, OverlayRouter, OverlayRouterConfig, OverlayRouterNavigateConfig, OverlayRouterNavigationDirection, OverlayRouterResolvedPath, OverlayRouterTransitionType, OverlayStrategy, OverlayStrategyBreakpoint, OverlayStrategyContext, OverlayStrategyController, OverlayStrategyControllerMountConfig, OverlaySurfaceContext, OverlayTreeContainmentOptions, OverlayUnsavedChangesDismissSources, OverlayUnsavedChangesGuardRef, PaginateOptions, PaginationItem, PaginationItemType, PaginationLabels, PaginationRangeContext, PaginationRenderAs, ParticipantMatchResult, PhoneCountry, PhoneInputFlagContext, PhoneInputFlagCountry, PhoneInputLabels, PictureConfig, PictureSource, PictureState, PipCellData, PipChromeAnimations, PipChromeRef, PipChromeState, PipManager, PipSlotPlaceholderConfig, PixelRect, QueryErrorLabels, QueryErrorRetryTarget, QueryErrorSlotContext, QueryErrorView, QueryParamOverlayDefinition, QueryParamOverlayDefinitionConfig, QueryParamOverlayHost, QueryParamOverlayOpener, QueryParamOverlayValue, RadioVariant, RangeSliderValue, RatingIconContext, RatingIconState, ReconcilableColumn, ReduceSupportPresentationInput, RegisteredIconName, RegisteredIconVariant, RequiredLanguagesOptions, ResizeSpanBounds, ResolveClosestOverlayOptions, ResolveCollisionsOptions, ResolvedDropzoneUploadConfig, ResolvedScrollableChrome, RichTextEditorImageFailure, RichTextEditorImageFailureReason, RichTextEditorImageToolConfig, RichTextEditorImageUpload, RichTextEditorImageUploadFn, RichTextEditorImageUploadRun, RichTextEditorLabels, RichTextEditorLinkEditorSetup, RichTextEditorLinkEditorValue, RichTextEditorQueryTriggerConfig, RichTextEditorTool, RichTextEditorToolButton, RichTextEditorToolDefinition, RichTextEditorToolsConfig, RichTextEditorTrigger, RichTextEditorTriggerItem, RichTextEditorTriggerItemResolver, RichTextEditorTriggerItemSource, RichTextEditorTriggerType, RowFloors, ScrollableActiveChildRef, ScrollableButtonPosition, ScrollableButtonsConfig, ScrollableChrome, ScrollableChromeSlot, ScrollableDirection, ScrollableIntersectionChange, ScrollableItemSize, ScrollableLoadingTemplatePosition, ScrollableLoadingTemplateRef, ScrollableMaskVariant, ScrollableNavigation, ScrollableNavigationConfig, ScrollableNavigationItem, ScrollableScrollMode, ScrollableScrollOrigin, ScrollableScrollState, SegmentedButtonGroupVariant, SelectAsyncOptions, SelectErrorContext, SelectFilterMode, SelectItem, SelectLabels, SelectOptionData, SelectOptionGroupItem, SelectOptionTemplateContext, SelectOptionsFromQuery, SelectOptionsFromQueryConfig, SelectOptionsFromV2QueryConfig, SelectSelectedEntry, SelectSurfaceContext, SelectValueContext, SelectionListDirectiveBase, SelectionListItem, SelectionListOrientation, SerializeOptions, SidebarOverlay, SidebarOverlayConfig, SingleEliminationBracketRoundType, SkeletonShape, SliderHostBase, SliderLabels, SliderMark, SliderMarkStop, SliderMarks, SliderOrientation, SliderThumbBase, SliderThumbLabelBase, SliderThumbLabelContext, SortRowsConfig, Spacing, StandingsFormResult, StandingsLabels, StandingsRenderRow, StandingsZone, StartImageUploadOptions, StreamConfig, StreamConsentConfig, StreamLabels, StreamManager, StreamPipEntry, StreamPipWindowConfig, StreamPlayer, StreamPlayerCapabilities, StreamPlayerEntry, StreamPlayerErrorConfig, StreamPlayerErrorContext, StreamPlayerId, StreamPlayerLoadingConfig, StreamPlayerParams, StreamPlayerSlotHandle, StreamPlayerSlotOptions, StreamPlayerState, StreamScriptLoader, StreamSlotEntry, SupportContentState, SupportPresentationState, SupportTransitionDirection, SwissBracketLayoutOptions, SwissBracketRoundType, TabBarFit, TabBarOrientation, TabBarVariant, TabSize, TableCellContext, TableCellEditCommit, TableCellEditContext, TableCellEditTarget, TableCellEditing, TableCellErrorMark, TableCellErrorTooltipConfig, TableCellNavigation, TableCellSkeletonContext, TableCellState, TableCellStateValue, TableColumn, TableColumnAlign, TableColumnDef, TableColumnMenuConfig, TableColumnMeta, TableColumnState, TableColumnTemplate, TableColumnVisibilityHost, TableColumns, TableCsvExportConfig, TableCsvExportFile, TableCsvExportOptions, TableCsvRowsFromPagesOptions, TableCsvRowsProvider, TableCsvSerializeOptions, TableCsvSource, TableCsvValue, TableEmptyContext, TableErrorContext, TableExpandedRowContext, TableFeatureConfig, TableFeatureHost, TableFilter, TableFilterOption, TableFilterOptionContext, TableFilterOptionsProvider, TableFilterSelection, TableFiltersConfig, TableFooterContext, TableHeaderAdornment, TableHeaderContext, TableHeaderGroup, TableInlineEditConfig, TableKeyboardNavConfig, TableLabels, TableLabelsSource, TableLayer, TableLeadCellComponent, TableLeadColumn, TableReorderConfig, TableResizeConfig, TableRowKey, TableRowWindow, TableRowsDriver, TableRowsFromQuery, TableRowsFromQueryConfig, TableRowsFromV2QueryConfig, TableRowsQueryState, TableRowsSource, TableSelectionConfig, TableSort, TableSortDirection, TableSortValue, TableState, TableStatePersistenceConfig, TableStateSlice, TableStateStorage, TableStateStorageKind, TableStateStorageOptions, TableTemplateSlot, TableVirtualScrollConfig, TextAlign, TextareaResizeMode, TimePickerColumn, TimePickerLabels, TimePickerOption, TimePickerUnit, ToggletipContent, TooltipContent, TournamentMode, TwitchEmbed, TwitchEmbedConstructor, TwitchEmbedPlayer, TwitchPlayerParams, TwitchWindow, V2DropzonePrepareArgsOf, V2DropzoneUploadConfig, V2PrepareArgsOf, ViewportTransformData, VimeoDurationChangeEvent, VimeoPlaybackEvent, VimeoPlayer, VimeoPlayerOptions, VimeoWindow, WindowControlButtonKind, WindowControlButtonSize, YtPlayer, YtPlayerConfig, YtPlayerErrorEvent, YtPlayerEvent, YtPlayerStateChangeEvent, YtPlayerVars, YtWindow };
23865
+ export { ACCORDION_ERROR_CODES, ACCORDION_GROUP_TOKEN, ACCORDION_IMPORTS, ACCORDION_TOKEN, ALIGN_CENTER_ICON, ALIGN_JUSTIFY_ICON, ALIGN_LEFT_ICON, ALIGN_RIGHT_ICON, ARROWS_LEFT_RIGHT_ICON, ARROW_OUT_UP_RIGHT_ICON, ARROW_RIGHT_ICON, ARROW_UP_ICON, AVATAR_IMPORTS, AVATAR_SHAPES, AVATAR_SIZES, AccordionComponent, AccordionContentDirective, AccordionDirective, AccordionGroupComponent, AccordionGroupDirective, AccordionHintDirective, AccordionLabelDirective, AccordionPanelDirective, AccordionTriggerDirective, AvatarComponent, AvatarGroupComponent, BADGE_IMPORTS, BADGE_VARIANTS, BANNER_IMPORTS, BANNER_LABELS, BANNER_TYPES, BOLD_ICON, BRACKET_CARD_CONTEXT, BRACKET_DATA_LAYOUT, BRACKET_DEFAULTS, BRACKET_DENSITY, BRACKET_DENSITY_PRESETS, BRACKET_ERROR_CODES, BRACKET_IMPORTS, BRACKET_LABELS, BRACKET_ROUND_MIRROR_TYPE, BRACKET_SWISS_GROUP_COLOR_TYPE, BREADCRUMB_COLLAPSE_IMPORTS, BREADCRUMB_COLLAPSE_TOKEN, BREADCRUMB_ERROR_CODES, BREADCRUMB_IMPORTS, BREADCRUMB_LABELS, BREADCRUMB_SEGMENT_TOKEN, BREADCRUMB_SEO_IMPORTS, BREADCRUMB_TOKEN, BUTTON_ICON_ALIGNMENTS, BUTTON_IMPORTS, BUTTON_SIZES, BUTTON_SPINNER_CONFIG, BUTTON_TYPES, BUTTON_VARIANTS, BadgeComponent, BannerComponent, BracketComponent, BracketDefaultContinueComponent, BracketDefaultFinalMatchComponent, BracketDefaultMatchComponent, BracketDefaultRoundHeaderComponent, BracketMap, BracketRoundsListComponent, BrandLoaderComponent, BreadcrumbCollapseDirective, BreadcrumbComponent, BreadcrumbDirective, BreadcrumbItemDirective, BreadcrumbItemTemplateDirective, BreadcrumbOutletComponent, BreadcrumbOverflowComponent, BreadcrumbSegmentDirective, BreadcrumbSeoDirective, BreadcrumbSeparatorDirective, ButtonComponent, ButtonDirective, ButtonStylesDirective, CALENDAR_ERROR_CODES, CALENDAR_ICON, CALENDAR_IMPORTS, CALENDAR_LABELS, CARD_IMPORTS, CARD_VARIANTS, CAROUSEL_AUTOPLAY_TOKEN, CAROUSEL_ERROR_CODES, CAROUSEL_IMPORTS, CAROUSEL_LABELS, CAROUSEL_SLIDE_ALIGNMENTS, CAROUSEL_TOKEN, CAROUSEL_TRANSITIONS, CAROUSEL_TRANSITION_DRIVERS, CASCADER_ERROR_CODES, CASCADER_IMPORTS, CASCADER_LABELS, CASCADER_SELECTABLE_LEVELS, CHECKBOX_GROUP_IMPORTS, CHECKBOX_IMPORTS, CHECKBOX_OPTION_VARIANTS, CHECK_ICON, CHEVRON_ICON, CHIP_ERROR_CODES, CHIP_IMPORTS, CHIP_LABELS, CHOICE_FIELD_IMPORTS, CHOICE_FIELD_VARIANTS, CIRCLE_CHECK_ICON, CIRCLE_INFO_ICON, CLIPBOARD_CHECK_ICON, CLOCK_ICON, CODE_BLOCK_ICON, CODE_ICON, COLOR_INPUT_IMPORTS, COMMON_BRACKET_ROUND_TYPE, COPY_BUTTON_IMPORTS, CalendarCellDirective, CalendarComponent, CalendarDirective, CalendarGridDirective, CalendarHeaderDirective, CardComponent, CarouselAutoplayDirective, CarouselComponent, CarouselDirective, CarouselItemDirective, CarouselNextDirective, CarouselPlayToggleDirective, CarouselPreviousDirective, CarouselSlideDirective, CascaderColumnDirective, CascaderComponent, CascaderDirective, CascaderNodeDirective, CascaderPanelComponent, CascaderSearchDirective, CascaderSearchOptionDirective, CascaderSurfaceDirective, CascaderTriggerDirective, CheckboxComponent, CheckboxDirective, CheckboxGroupComponent, CheckboxGroupSelectAllComponent, CheckboxOptionComponent, ChipComponent, ChipDirective, ChipRemoveDirective, ChoiceFieldComponent, ColorInputComponent, ColorInputDirective, CopyButtonDirective, CounterComponent, DAILYMOTION_PLAYER_TOKEN, DATE_FORMAT, DATE_INPUT_ERROR_CODES, DATE_INPUT_IMPORTS, DATE_LOCALE, DATE_PICKER_HOST, DATE_RANGE_INPUT_ERROR_CODES, DATE_RANGE_INPUT_IMPORTS, DATE_TIME_INPUT_ERROR_CODES, DATE_TIME_INPUT_IMPORTS, DATE_TIME_LABELS, DEFAULT_BANNER_LABELS, DEFAULT_BRACKET_LABELS, DEFAULT_BREADCRUMB_LABELS, DEFAULT_BREAKPOINTS, DEFAULT_CALENDAR_LABELS, DEFAULT_CALENDAR_RANGE_STRATEGY, DEFAULT_CAROUSEL_LABELS, DEFAULT_CASCADER_LABELS, DEFAULT_CHIP_LABELS, DEFAULT_DATE_TIME_LABELS, DEFAULT_DROPZONE_LABELS, DEFAULT_FILTER_OVERLAY_LABELS, DEFAULT_FORM_FIELD_LABELS, DEFAULT_GRID_LABELS, DEFAULT_ICON_VARIANT, DEFAULT_INPUT_LABELS, DEFAULT_LOADER_LABELS, DEFAULT_MATCH_CARD_START_TIME_FORMAT, DEFAULT_MATCH_LABELS, DEFAULT_NOTIFICATION_LABELS, DEFAULT_NOTIFICATION_MANAGER_CONFIG, DEFAULT_NOTIFICATION_STATUS_ICONS, DEFAULT_PAGINATION_LABELS, DEFAULT_PHONE_INPUT_LABELS, DEFAULT_PIP_WINDOW_CONFIG, DEFAULT_QUERY_ERROR_LABELS, DEFAULT_RICH_TEXT_EDITOR_LABELS, DEFAULT_RICH_TEXT_EDITOR_TOOLS, DEFAULT_SCHEDULER_LABELS, DEFAULT_SELECT_LABELS, DEFAULT_SLIDER_LABELS, DEFAULT_STANDINGS_LABELS, DEFAULT_STREAM_LABELS, DEFAULT_STREAM_PLAYER_STATE, DEFAULT_TABLE_LABELS, DEFAULT_TIME_PICKER_LABELS, DESCRIPTION_IMPORTS, DESCRIPTION_LIST_IMPORTS, DOUBLE_ELIMINATION_BRACKET_ROUND_TYPE, DROPZONE_ENTRY_STATUSES, DROPZONE_ERROR_CODES, DROPZONE_FILES_ERROR_KIND, DROPZONE_FILE_CONSTRAINTS, DROPZONE_FILE_REJECTION_REASONS, DROPZONE_IMPORTS, DROPZONE_LABELS, DURATION_INPUT_ERROR_CODES, DURATION_INPUT_IMPORTS, DailymotionPlayerComponent, DailymotionPlayerDirective, DailymotionPlayerParamsDirective, DailymotionPlayerSlotComponent, DateInputComponent, DateInputDirective, DateInputFieldDirective, DatePickerPanelComponent, DatePickerSurfaceDirective, DatePickerTriggerDirective, DateRangeInputComponent, DateRangeInputDirective, DateRangeInputFieldDirective, DateTimeInputComponent, DateTimeInputDirective, DateTimeInputFieldDirective, DescriptionComponent, DescriptionListComponent, DropzoneComponent, DropzoneDirective, DurationInputComponent, DurationInputDirective, DurationInputFieldDirective, ELLIPSIS_ICON, ELLIPSIS_VERTICAL_ICON, EMPTY_STATE_IMPORTS, ET_BUILT_IN_ICON_NAMES, EYE_ICON, EYE_SLASH_ICON, EmptyStateComponent, FACEBOOK_PLAYER_TOKEN, FILE_ICON, FILTER_ICON, FILTER_OVERLAY_ERROR_CODES, FILTER_OVERLAY_IMPORTS, FILTER_OVERLAY_LABELS, FILTER_OVERLAY_TOKEN, FLOATING_ACTION_ERROR_CODES, FLOATING_ACTION_IMPORTS, FLOATING_ACTION_STATES, FLOATING_ACTION_TOKEN, FLOPPY_DISK_ICON, FOCUS_FRAME_ICON, FORM_ERROR_MESSAGE_RESOLVER, FORM_FIELD_APPEARANCES, FORM_FIELD_CONTROL_TYPES, FORM_FIELD_ERROR_CODES, FORM_FIELD_FILLS, FORM_FIELD_IMPORTS, FORM_FIELD_LABELS, FORM_FIELD_LABEL_MODES, FORM_FIELD_SIZES, FORM_FIELD_TOKEN, FabComponent, FacebookPlayerComponent, FacebookPlayerDirective, FacebookPlayerParamsDirective, FacebookPlayerSlotComponent, FilterOverlayResetDirective, FilterOverlaySubmitDirective, FloatingActionAnchorDirective, FloatingActionDirective, FloatingActionScopeDirective, FloatingActionTopDirective, FloatingActionTriggerDirective, FocusRingDirective, FormErrorComponent, FormFieldComponent, FormFieldDirective, GERMAN_FILTER_OVERLAY_LABELS, GERMAN_QUERY_ERROR_LABELS, GRID_2X2_ICON, GRID_DEBUG_IMPORTS, GRID_ERROR_CODES, GRID_IMPORTS, GRID_LABELS, GRID_TOKEN, GROUP_BRACKET_ROUND_TYPE, GridComponent, GridDebugComponent, GridDirective, GridDragDirective, GridItemComponent, GridItemDefaultActionsComponent, GridItemDirective, GridItemRef, GridItemToolbarComponent, GridResizeDirective, HEADING_1_ICON, HEADING_2_ICON, HEADING_3_ICON, HintComponent, ICONS_TOKEN, ICON_DIRECTIVE_TOKEN, ICON_ERROR_CODES, ICON_IMPORTS, ICON_OVERRIDES_TOKEN, IMAGE_ICON, INITIAL_SUPPORT_PRESENTATION_STATE, INPUT_IMPORTS, INPUT_LABELS, INPUT_MASK_HOST, INPUT_TEXT_ALIGNMENTS, INPUT_TYPES, INTERACTIVE_TAGS, ITALIC_ICON, IconButtonComponent, IconDirective, InputComponent, InputDirective, InputMaskDirective, InputPrefixDirective, InputSuffixDirective, KICK_PLAYER_TOKEN, KickPlayerComponent, KickPlayerDirective, KickPlayerParamsDirective, KickPlayerSlotComponent, LINK_ICON, LIST_BULLETED_ICON, LIST_NUMBERED_ICON, LOADER_LABELS, LOCATION_ICON, LOCK_ICON, LabelDirective, MASKED_INPUT_ERROR_CODES, MASKED_INPUT_IMPORTS, MASK_VALUE_MODES, MASONRY_ERROR_CODES, MASONRY_IMPORTS, MASONRY_TOKEN, MATCH_CARD_IMPORTS, MATCH_CARD_SIZES, MATCH_CARD_TOKEN, MATCH_ERROR_CODES, MATCH_LABELS, MATCH_PARTICIPANT_IMPORTS, MENU_ERROR_CODES, MENU_IMPORTS, MENU_ITEM_VARIANTS, MENU_SELECTION_GROUP_MULTIPLE, MENU_SELECTION_GROUP_TOKEN, MENU_SELECTION_ITEM_KIND, MINUS_ICON, MULTI_LANGUAGE_RICH_TEXT_EDITOR_ERROR_CODES, MULTI_LANGUAGE_RICH_TEXT_EDITOR_IMPORTS, MasonryDirective, MasonryItemDirective, MatchCardComponent, MatchCardDirective, MatchCardGameScoresDirective, MatchCardMetaDirective, MatchCardScoreDirective, MatchParticipantComponent, MatchScoreComponent, MenuCheckboxGroupComponent, MenuCheckboxItemComponent, MenuComponent, MenuContextTriggerDirective, MenuDirective, MenuGroupLabelComponent, MenuItemComponent, MenuItemDirective, MenuItemShortcutComponent, MenuPanelDirective, MenuRadioGroupComponent, MenuRadioItemComponent, MenuSearchDirective, MenuSelectionGroupDirective, MenuSelectionItemDirective, MenuSeparatorComponent, MenuSurfaceDirective, MenuTriggerDirective, MultiLanguageRichTextEditorComponent, MultiLanguageRichTextEditorDirective, MultiLanguageRichTextEditorLanguageToolComponent, NAV_TABS_TOKEN, NAV_TAB_IMPORTS, NOTIFICATION_ACTION_SLOTS, NOTIFICATION_ERROR_CODES, NOTIFICATION_IMPORTS, NOTIFICATION_LABELS, NOTIFICATION_STACK_CONTEXT_TOKEN, NOTIFICATION_STATUS, NUMBER_INPUT_IMPORTS, NavTabLinkComponent, NavTabLinkDirective, NavTabsComponent, NavTabsDirective, NavTabsOutletComponent, NavTabsOutletDirective, NotificationActionDirective, NotificationComponent, NotificationDirective, NotificationDismissDirective, NotificationItemDirective, NotificationStackDirective, NotificationSwipeToDismissDirective, NumberInputComponent, NumberInputDirective, OTP_INPUT_IMPORTS, OVERLAY_BACK_OR_CLOSE_TOKEN, OVERLAY_BODY_TOKEN, OVERLAY_CONFIG_CLASS_KEYS, OVERLAY_CONTENT_IMPORTS, OVERLAY_ERROR_CODES, OVERLAY_FOOTER_TOKEN, OVERLAY_HEADER_TEMPLATE_TOKEN, OVERLAY_HEADER_TOKEN, OVERLAY_IMPORTS, OVERLAY_MAIN_TOKEN, OVERLAY_QUERY_PARAM_INPUT_NAME, OVERLAY_REF, OVERLAY_ROUTER_CONFIG_TOKEN, OVERLAY_ROUTER_LINK_TOKEN, OVERLAY_ROUTER_OUTLET_DISABLED_TEMPLATE_TOKEN, OVERLAY_ROUTER_OUTLET_TOKEN, OVERLAY_ROUTER_TOKEN, OVERLAY_SHARED_ROUTE_TEMPLATE_TOKEN, OtpInputComponent, OtpInputDirective, OverlayAnchorDirective, OverlayBackOrCloseDirective, OverlayBodyComponent, OverlayCloseDirective, OverlayContainerComponent, OverlayDirective, OverlayFooterDirective, OverlayHeaderDirective, OverlayHeaderTemplateDirective, OverlayMainDirective, OverlayOriginCloneComponent, OverlayRouteHeaderTemplateOutletComponent, OverlayRouterLinkDirective, OverlayRouterOutletComponent, OverlayRouterOutletDisabledTemplateDirective, OverlaySharedRouteTemplateDirective, OverlaySharedRouteTemplateOutletComponent, OverlaySidebarComponent, OverlaySidebarPageComponent, OverlaySurfaceDirective, OverlayTitleDirective, OverlayTriggerDirective, PAGE_SIZE_SELECT_IMPORTS, PAGINATION_IMPORTS, PAGINATION_LABELS, PARAGRAPH_ICON, PASSWORD_INPUT_IMPORTS, PAUSE_ICON, PENCIL_ICON, PHONE_COUNTRIES, PHONE_INPUT_ERROR_CODES, PHONE_INPUT_IMPORTS, PHONE_INPUT_LABELS, PICTURE_IMPORTS, PICTURE_STATES, PIP_CHROME_REF_TOKEN, PIP_ENTRY_TOKEN, PIP_WINDOW_ASPECT_RATIO_TOKEN, PLAY_ICON, PLUS_ICON, PROGRESS_STEPS_IMPORTS, PROGRESS_STEP_STATES, PageSizeSelectComponent, PaginationComponent, PaginationDirective, PaginationSeoDirective, PasswordInputComponent, PasswordInputDirective, PhoneInputComponent, PhoneInputDirective, PhoneInputFieldDirective, PhoneInputFlagDirective, PictureComponent, PictureErrorDirective, PicturePlaceholderDirective, PipBackDirective, PipBringBackDirective, PipCellDirective, PipCloseDirective, PipCollapseOverlayDirective, PipGridToggleDirective, PipPlayerComponent, PipSlotPlaceholderComponent, PipStageDirective, PipTitleBarDirective, PipTitleBarTemplateDirective, PipWindowComponent, PipWindowParamsDirective, ProgressBarComponent, ProgressStepComponent, ProgressStepsComponent, QUERY_DEVTOOLS_IMPORTS, QUERY_ERROR_ERROR_CODES, QUERY_ERROR_IMPORTS, QUERY_ERROR_LABELS, QUERY_ERROR_TOKEN, QUOTE_ICON, QueryDevtoolsComponent, QueryDevtoolsJsonComponent, QueryDevtoolsJsonStylesComponent, QueryDevtoolsTimelineStylesComponent, QueryDevtoolsToggleComponent, QueryErrorActionsDirective, QueryErrorComponent, QueryErrorDirective, QueryErrorTitleDirective, QueryParamOverlayLinkDirective, RADIO_GROUP_IMPORTS, RADIO_VARIANTS, RATING_IMPORTS, REDO_ICON, RICH_TEXT_EDITOR_FLOATING_TOOLBAR, RICH_TEXT_EDITOR_HEADING_OPTIONS, RICH_TEXT_EDITOR_IMPORTS, RICH_TEXT_EDITOR_INLINE_TOOLS, RICH_TEXT_EDITOR_LABELS, RICH_TEXT_EDITOR_LANGUAGE_TOOL, RICH_TEXT_EDITOR_LINK_EDITOR, RICH_TEXT_EDITOR_TOKEN_CODEC, RICH_TEXT_EDITOR_TOKEN_PALETTE_IMPORTS, RICH_TEXT_EDITOR_TOOL, RICH_TEXT_EDITOR_TOOLS, RICH_TEXT_EDITOR_TOOL_BUTTONS, RICH_TEXT_EDITOR_TRIGGERS_IMPORTS, ROTATE_RIGHT_ICON, RadioComponent, RadioGroupComponent, RangeSliderComponent, RangeSliderDirective, RatingComponent, RatingDirective, RatingIconDirective, RichTextEditorAlignToolComponent, RichTextEditorComponent, RichTextEditorDirective, RichTextEditorFloatingToolbarComponent, RichTextEditorFloatingToolbarDirective, RichTextEditorHeadingToolComponent, RichTextEditorImageEditorComponent, RichTextEditorImageStylesComponent, RichTextEditorImageToolComponent, RichTextEditorLinkEditorComponent, RichTextEditorLinkEditorDirective, RichTextEditorTableStylesComponent, RichTextEditorTableToolComponent, RichTextEditorTokenPaletteComponent, RichTextEditorTokenPopupComponent, RichTextEditorTriggersDirective, SCHEDULER_ERROR_CODES, SCHEDULER_FEATURE_HOST, SCHEDULER_IMPORTS, SCHEDULER_LABELS, SCROLLABLE_DARKEN_IMPORTS, SCROLLABLE_DRAG_IMPORTS, SCROLLABLE_ERROR_CODES, SCROLLABLE_IMPORTS, SCROLLABLE_NAVIGATION_IMPORTS, SEGMENTED_BUTTON_GROUP_VARIANTS, SEGMENTED_BUTTON_IMPORTS, SELECTION_LIST_IMPORTS, SELECTION_LIST_MULTIPLE, SELECTION_LIST_TOKEN, SELECT_ERROR_CODES, SELECT_FILTER_MODES, SELECT_IMPORTS, SELECT_LABELS, SIDEBAR_OVERLAY_CONFIG, SIDEBAR_OVERLAY_TOKEN, SINGLE_ELIMINATION_BRACKET_ROUND_TYPE, SKELETON_IMPORTS, SLIDER_ERROR_CODES, SLIDER_IMPORTS, SLIDER_LABELS, SLIDER_MARK_VALUE_ATTRIBUTE, SLIDER_TOKEN, SNAP_HYSTERESIS, SOOP_PLAYER_TOKEN, SPLIT_BUTTON_ERROR_CODES, STANDINGS_ERROR_CODES, STANDINGS_IMPORTS, STANDINGS_LABELS, STAR_ICON, STREAM_ALL_IMPORTS, STREAM_CONSENT_TOKEN, STREAM_DAILYMOTION_IMPORTS, STREAM_FACEBOOK_IMPORTS, STREAM_IMPORTS, STREAM_KICK_IMPORTS, STREAM_LABELS, STREAM_PIP_IMPORTS, STREAM_PLAYER_COMPONENT_TOKEN, STREAM_PLAYER_ERROR_CONTEXT_TOKEN, STREAM_PLAYER_ERROR_TOKEN, STREAM_PLAYER_PARAMS_TOKEN, STREAM_PLAYER_SLOT_TOKEN, STREAM_PLAYER_TOKEN, STREAM_SLOT_PLAYER_ID_TOKEN, STREAM_SOOP_IMPORTS, STREAM_TIKTOK_IMPORTS, STREAM_TWITCH_IMPORTS, STREAM_USER_CONSENT_PROVIDER_TOKEN, STREAM_VIMEO_IMPORTS, STREAM_YOUTUBE_IMPORTS, STRIKETHROUGH_ICON, SUPPORT_CONTENT_STATE, SUPPORT_TRANSITION_DIRECTION, SWISS_ADVANCE_WINS, SWISS_BRACKET_ROUND_TYPE, SWISS_ELIMINATE_LOSSES, SWITCH_IMPORTS, SchedulerAgendaDirective, SchedulerAgendaViewComponent, SchedulerBadgeChainCountComponent, SchedulerBadgeChainCountDirective, SchedulerBadgeColorDotComponent, SchedulerBadgeColorDotDirective, SchedulerBadgeLocationComponent, SchedulerBadgeLocationDirective, SchedulerBadgeTimeRangeComponent, SchedulerBadgeTimeRangeDirective, SchedulerBadgeTitleComponent, SchedulerBadgeTitleDirective, SchedulerComponent, SchedulerDirective, SchedulerMonthDirective, SchedulerMonthViewComponent, SchedulerTimeGridDirective, SchedulerTimeGridViewComponent, ScrollableActiveChildDirective, ScrollableButtonsComponent, ScrollableButtonsDirective, ScrollableComponent, ScrollableDarkenDirective, ScrollableDirective, ScrollableDragDirective, ScrollableIgnoreChildDirective, ScrollableLoadingTemplateDirective, ScrollableMasksComponent, ScrollableNavigationComponent, ScrollableNavigationDirective, ScrollableSnapDirective, SegmentedButtonComponent, SegmentedButtonGroupComponent, SelectComponent, SelectDirective, SelectEmptyDirective, SelectErrorDirective, SelectListboxDirective, SelectLoadingDirective, SelectOptionComponent, SelectOptionDirective, SelectOptionGroupComponent, SelectOptionGroupDirective, SelectOptionTemplateDirective, SelectOptionsDirective, SelectPanelComponent, SelectSearchDirective, SelectSurfaceDirective, SelectTriggerDirective, SelectValueDirective, SelectViewportDirective, SelectVirtualOptionComponent, SelectVirtualOptionDirective, SelectionListControlDirective, SelectionListDirective, SelectionOptionDirective, SkeletonComponent, SkeletonItemComponent, SkeletonTextComponent, SliderComponent, SliderDirective, SliderThumbDirective, SliderThumbLabelDirective, SliderTrackDirective, SoopPlayerComponent, SoopPlayerDirective, SoopPlayerParamsDirective, SoopPlayerSlotComponent, SpinnerComponent, SplitButtonActionDirective, SplitButtonComponent, SplitButtonDirective, SplitButtonTriggerDirective, StandingsComponent, StandingsDirective, StreamConsentAcceptDirective, StreamConsentComponent, StreamConsentDirective, StreamPipChromeComponent, StreamPlayerErrorComponent, StreamPlayerErrorDirective, StreamPlayerLoadingComponent, StreamPlayerSlotDirective, SwitchComponent, SwitchDirective, TABLE_CELL_ERROR_TOOLTIP_IMPORTS, TABLE_COLUMN_CHOOSER_IMPORTS, TABLE_COLUMN_MENU_IMPORTS, TABLE_CSV_EXPORT_IMPORTS, TABLE_ERROR_CODES, TABLE_FEATURE_HOST, TABLE_FILTER_IMPORTS, TABLE_GROUP_HEADERS_IMPORTS, TABLE_ICON, TABLE_IMPORTS, TABLE_INLINE_EDIT_IMPORTS, TABLE_KEYBOARD_NAV_IMPORTS, TABLE_LABELS, TABLE_REORDER_IMPORTS, TABLE_RESIZE_IMPORTS, TABLE_ROW_EXPANSION_IMPORTS, TABLE_SELECTION_IMPORTS, TABLE_SKELETON_IMPORTS, TABLE_STATE_PERSISTENCE_IMPORTS, TABLE_STICKY_COLUMNS_IMPORTS, TABLE_VIRTUAL_SCROLL_IMPORTS, TAB_BAR_FITS, TAB_BAR_ORIENTATIONS, TAB_BAR_TOKEN, TAB_BAR_TRIGGER_TOKEN, TAB_BAR_VARIANTS, TAB_ERROR_CODES, TAB_GROUP_TOKEN, TAB_IMPORTS, TAB_PANEL_TOKEN, TAB_SIZES, TAG_INPUT_ERROR_CODES, TAG_INPUT_IMPORTS, TEXTAREA_IMPORTS, TEXTAREA_RESIZE_MODES, TEXT_ALIGNS, TIKTOK_PLAYER_TOKEN, TIMES_ICON, TIME_FORMAT, TIME_INPUT_ERROR_CODES, TIME_INPUT_IMPORTS, TIME_PICKER_ERROR_CODES, TIME_PICKER_IMPORTS, TIME_PICKER_LABELS, TOGGLETIP_ERROR_CODES, TOGGLETIP_IMPORTS, TOOLTIP_ERROR_CODES, TOOLTIP_IMPORTS, TOURNAMENT_MODE, TRIANGLE_EXCLAMATION_ICON, TROPHY_ICON, TWITCH_PLAYER_TOKEN, TabBarDirective, TabBarTriggerDirective, TabBarUnderlineDirective, TabComponent, TabGroupComponent, TabGroupDirective, TabLabelDirective, TabPanelDirective, TabTriggerDirective, TableCellDirective, TableCellEditDirective, TableCellErrorMarkComponent, TableCellErrorTooltipDirective, TableCellSkeletonDirective, TableColumnChooserComponent, TableColumnMenuDirective, TableColumnMenuTriggerComponent, TableComponent, TableCsvExportDirective, TableDetailStylesComponent, TableExpanderCellComponent, TableFilterOptionDirective, TableFilterTriggerComponent, TableFiltersDirective, TableFooterCellDirective, TableFooterDirective, TableGroupHeaderRowComponent, TableGroupHeadersDirective, TableHeaderCellDirective, TableInlineEditDirective, TableInlineEditStylesComponent, TableKeyboardNavDirective, TableReorderDirective, TableReorderOverlayComponent, TableResizeDirective, TableResizeGripComponent, TableRowDetailComponent, TableRowExpansionDirective, TableSelectAllCellComponent, TableSelectCellComponent, TableSelectionDirective, TableSkeletonDirective, TableSkeletonRowsComponent, TableStatePersistenceDirective, TableStickyColumnsDirective, TableVirtualScrollDirective, TableVirtualScrollStylesComponent, TagInputComponent, TagInputDirective, TagInputFieldDirective, TextButtonComponent, TextFieldControlDirective, TextareaComponent, TextareaDirective, TikTokPlayerComponent, TikTokPlayerDirective, TikTokPlayerParamsDirective, TikTokPlayerSlotComponent, TimeInputComponent, TimeInputDirective, TimeInputFieldDirective, TimePickerColumnDirective, TimePickerComponent, TimePickerDirective, TimePickerOptionDirective, ToggletipCloseDirective, ToggletipComponent, ToggletipDirective, ToggletipTriggerDirective, TooltipComponent, TooltipDirective, TwitchPlayerComponent, TwitchPlayerDirective, TwitchPlayerParamsDirective, TwitchPlayerSlotComponent, UNDERLINE_ICON, UNDO_ICON, UNIT_MS, UPLOAD_ICON, VIMEO_PLAYER_TOKEN, VimeoPlayerComponent, VimeoPlayerDirective, VimeoPlayerParamsDirective, VimeoPlayerSlotComponent, WINDOW_CONTROL_BUTTON_KINDS, WINDOW_CONTROL_BUTTON_SIZES, WindowControlButtonComponent, YOUTUBE_PLAYER_SLOT_TOKEN, YOUTUBE_PLAYER_TOKEN, YoutubePlayerComponent, YoutubePlayerDirective, YoutubePlayerParamsDirective, YoutubePlayerSlotComponent, YoutubePlayerSlotDirective, abortFullscreenAnimation, anchoredDialogOverlayStrategy, anchoredOverlayStrategy, autoPlace, bottomSheetOverlayStrategy, bracketFitsWidth, bracketNaturalWidth, buildAnchoredRuntimePositionStrategy, canHaveChildren, cascaderFromQuery, centeredOverlayStrategy, clampPosition, clampResizeRect, cleanupFullscreenAnimation, cleanupFullscreenAnimationStyles, compactLayout, computeGeometry, computeGridHeight, countDescendants, createAnchoredPanelController, createAutoScroller, createBracket, createBracketBase, createCardMask, createCurrencyMask, createDefaultDropzoneArgs, createDropzoneUpload, createExistingDropzoneEntry, createFileDropzoneEntry, createFixedLengthRangeStrategy, createGridAdapter, createIbanMask, createMatchesMapBase, createNewMatchParticipantBase, createNormalizedBracketMatch, createNotificationPromiseFn, createNotificationRef, createOverlayOpener, createOverlayRef, createOverlayStrategyController, createOverlayUnsavedChangesGuard, createParticipantsMapBase, createPipChromeAnimations, createPipChromeState, createRichTextEditorTrigger, createRichTextEditorTriggerWithQuery, createRoundsMapBase, createStreamConfig, createStreamPlayerSlot, createTableRowsSource, createTableStateStorage, createV2DropzoneUpload, createWeekRangeStrategy, defaultCompareWith, defaultDropzoneRejectionMessage, defineOverlay, defineQueryParamOverlay, deriveDurationFormatSpec, deserializeGridLayout, deserializeTableState, dialogOverlayStrategy, disposeDropzoneEntry, doubleEliminationBracketLayout, dropzoneFiles, enableDragToDismiss, extractFirstImageUrl, filterOverlayLabelsForLocale, filterOverlayPreviewFromQuery, filterRows, findCollision, findNextRelevantHtmlElement, findScrollableAncestor, formatDuration, formatFileSize, fromGridPosition, fullScreenDialogOverlayStrategy, generateBracketDataForEthlete, generateBracketRoundSwissGroupMaps, generateMatchPosition, generateMatchRelationPositions, generateMatchRelationsNew, generateRoundRelationsNew, generateRoundTypeFromEthleteRoundType, generateTournamentModeFormEthleteRounds, getAvailableSwissGroupsForRound, getClosestOverlay, getOriginCoordinatesAndDimensions, getSwissGroupColorType, hysteresisRound, iconRegistryKey, indexOfNode, injectAnchoredDialogStrategy, injectAnchoredDialogStrategyDefaults, injectBannerLabels, injectBottomSheetStrategy, injectBottomSheetStrategyDefaults, injectBracketConfig, injectBracketLabels, injectBreadcrumbLabels, injectBreadcrumbManager, injectCalendarLabels, injectCarouselLabels, injectCascaderLabels, injectChipLabels, injectDateFormat, injectDateLocale, injectDateTimeLabels, injectDialogStrategy, injectDialogStrategyDefaults, injectDropzoneLabels, injectFilterOverlay, injectFilterOverlayLabels, injectFormFieldLabels, injectFormSupport, injectFullscreenDialogStrategy, injectFullscreenDialogStrategyDefaults, injectGridConfig, injectGridLabels, injectInputLabels, injectLeftSheetStrategy, injectLeftSheetStrategyDefaults, injectLoaderLabels, injectMatchLabels, injectNotificationLabels, injectNotificationManager, injectNotificationManagerConfig, injectOverlayManager, injectOverlayRouter, injectOverlayScrollBlocker, injectOverlaySurfaceContext, injectPaginationLabels, injectPhoneInputLabels, injectPictureConfig, injectPipChromeManager, injectPipManager, injectPipSlotPlaceholderConfig, injectQueryErrorLabels, injectRichTextEditorLabels, injectRichTextEditorTools, injectRightSheetStrategy, injectRightSheetStrategyDefaults, injectSchedulerFeatureHost, injectSchedulerLabels, injectSelectLabels, injectSidebarOverlay, injectSliderLabels, injectStandingsLabels, injectStreamConfig, injectStreamConsentConfig, injectStreamLabels, injectStreamManager, injectStreamPlayerErrorConfig, injectStreamPlayerLoadingConfig, injectStreamScriptLoader, injectStreamUserConsentProvider, injectTableCsvExport, injectTableFeatureHost, injectTableLabels, injectTimeFormat, injectTimePickerLabels, injectTopSheetStrategy, injectTopSheetStrategyDefaults, isFileAccepted, isHtmlElement, isInteractiveElement, isPointerEvent, isTargetInsideOverlayTree, isTouchEvent, itemsCollide, kindOf, leftSheetOverlayStrategy, legacyQueryErrorSource, mapLayoutToBreakpoint, matchCountryByDialCode, matchParticipantDisplayName, mergeOverlayBreakpointConfigs, mergeOverlayConfigs, mirroredDoubleEliminationBracketLayout, mirroredSingleEliminationBracketLayout, mountRichTextEditorImageStyles, mountRichTextEditorTableStyles, nodesEqual, normalizeEthleteBracketMatch, normalizeEthleteGroupRanking, normalizeEthleteMatch, normalizeEthleteMatchStatus, normalizeEthleteMedia, normalizeEthleteParticipant, normalizeEthletePlacement, normalizePictureSizes, normalizePictureSource, paginate, parseDuration, phoneCountryFlag, phoneCountryName, pixelRectsEqual, positionToPixelRect, positionsEqual, projectDragCell, provideAnchoredDialogStrategy, provideAnchoredDialogStrategyDefaults, provideBannerLabels, provideBottomSheetStrategy, provideBottomSheetStrategyDefaults, provideBracketConfig, provideBracketLabels, provideBreadcrumbLabels, provideBreadcrumbManager, provideCalendarLabels, provideCarouselLabels, provideCascaderLabels, provideChipLabels, provideDateFormat, provideDateLocale, provideDateTimeLabels, provideDialogStrategy, provideDialogStrategyDefaults, provideDropzoneLabels, provideFilterOverlay, provideFilterOverlayLabels, provideFormErrorMessageResolver, provideFormFieldLabels, provideFormSupport, provideFullscreenDialogStrategy, provideFullscreenDialogStrategyDefaults, provideGridConfig, provideGridLabels, provideIconOverrides, provideIcons, provideInputLabels, provideLeftSheetStrategy, provideLeftSheetStrategyDefaults, provideLoaderLabels, provideMatchLabels, provideNotificationLabels, provideNotificationManager, provideNotificationManagerConfig, provideNotificationManagerInstance, provideOverlay, provideOverlayManager, provideOverlayRouter, provideOverlayRouterConfig, provideOverlayRouterService, provideOverlayScrollBlocker, providePaginationLabels, providePhoneInputLabels, providePictureConfig, providePipChromeManager, providePipManager, providePipSlotPlaceholderConfig, provideQueryErrorLabels, provideRichTextEditorAlignmentTool, provideRichTextEditorAutoformat, provideRichTextEditorBlockquoteTool, provideRichTextEditorCodeBlockTool, provideRichTextEditorDefaultTools, provideRichTextEditorFloatingToolbar, provideRichTextEditorHeadingTool, provideRichTextEditorImageTool, provideRichTextEditorLabels, provideRichTextEditorLanguageTool, provideRichTextEditorLinkEditor, provideRichTextEditorLinkTool, provideRichTextEditorTableTool, provideRichTextEditorTokenRendering, provideRichTextEditorTools, provideRightSheetStrategy, provideRightSheetStrategyDefaults, provideSchedulerLabels, provideSelectLabels, provideSidebarOverlay, provideSidebarOverlayConfig, provideSidebarOverlayService, provideSliderLabels, provideStandingsLabels, provideStreamConfig, provideStreamConsentConfig, provideStreamLabels, provideStreamManager, provideStreamPlayerErrorConfig, provideStreamPlayerLoadingConfig, provideTableLabels, provideTimeFormat, provideTimePickerLabels, provideTopSheetStrategy, provideTopSheetStrategyDefaults, queryErrorLabelsForLocale, queryErrorResponseFromLegacyError, reconcileColumnOrder, reconcileColumnWidths, reconcileHiddenColumns, reduceSupportPresentation, registerSingleton, requiredLanguages, resizeSpanBounds, resolveBracketLayout, resolveBreakpoint, resolveClosestOverlay, resolveCollisions, resolveFilterOverlaySubmitButton, resolveNotificationStatusIcon, resolveTableCsvRows, richTextEditorToolLabel, rightSheetOverlayStrategy, rowsToPixelHeight, schedulerFeatureConfig, selectOptionsFromQuery, selectOptionsFromV2Query, serializeGridLayout, serializeTableState, setupRichTextEditorFloatingToolbar, setupRichTextEditorLinkEditor, singleEliminationBracketLayout, snapResizeSpan, sortRows, spanHeight, spanWidth, startFullscreenEnterAnimation, startFullscreenLeaveAnimation, startImageUpload, startOfCalendarUnit, stripTrunkZero, supportPresentationIncludesState, swissBracketLayout, tableCsvRowsFromPages, tableFeatureConfig, tableRowsFromQuery, tableRowsFromV2Query, tableToCsv, toChildrenObservable, toGridPosition, toNotificationContent, toPathObservable, toSearchObservable, topSheetOverlayStrategy, transformingBottomSheetToDialogOverlayStrategy, transformingFullScreenDialogToDialogOverlayStrategy, transformingFullScreenDialogToRightSheetOverlayStrategy, wireFormSupport, withPictureBaseUrl };
23866
+ export type { AccordionHeadingLevel, AnchoredDialogOverlayStrategyOptions, AnchoredOverlayStrategyOptions, AnchoredPanelCloseInfo, AnchoredPanelOverlayRef, AnchoredPanelSurfaceLike, AnchoredPositionOptions, AnyDropzoneUploadConfig, AnyTableColumn, Appointment, AppointmentId, AppointmentTreeNode, AutoPlaceOptions, AutoScrollPointer, AutoScroller, AvatarShape, AvatarSize, BadgeVariant, BannerLabels, BannerType, Bracket, BracketBase, BracketCardContext, BracketComponents, BracketConfig, BracketContinueComponent, BracketDataLayout, BracketDataSource, BracketDensity, BracketDrawEdgesContext, BracketLabels, BracketLayout, BracketLayoutConfig, BracketListSection, BracketMatch, BracketMatchBase, BracketMatchComponent, BracketMatchFactor, BracketMatchId, BracketMatchNormalizer, BracketMatchParticipant, BracketMatchParticipantBase, BracketMatchParticipantWithRelationsBase, BracketMatchPosition, BracketMatchRelation, BracketMatchRelationNothingToOne, BracketMatchRelationOneToNothing, BracketMatchRelationOneToOne, BracketMatchRelationTwoToNothing, BracketMatchRelationTwoToOne, BracketMatchShortId, BracketMatchSource, BracketMatchStatus, BracketMatchWithRelationsBase, BracketParticipant, BracketParticipantBase, BracketParticipantMatch, BracketParticipantWithRelationsBase, BracketRound, BracketRoundBase, BracketRoundHeaderComponent, BracketRoundId, BracketRoundMapWithSwissData, BracketRoundMirrorType, BracketRoundPosition, BracketRoundRelation, BracketRoundRelationNothingToOne, BracketRoundRelationOneToNothing, BracketRoundRelationOneToOne, BracketRoundRelationTwoToNothing, BracketRoundRelationTwoToOne, BracketRoundShortId, BracketRoundSource, BracketRoundSwissData, BracketRoundSwissGroup, BracketRoundSwissGroupId, BracketRoundSwissGroupMap, BracketRoundType, BracketRoundWithRelationsBase, BracketRoundsListBlock, BracketRoundsListSection, BracketSwissColors, BracketSwissGroupColorType, BreadcrumbCollapseAffordance, BreadcrumbCrumb, BreadcrumbLabels, BreadcrumbRenderItem, BreadcrumbSegment, ButtonIconAlignment, ButtonSize, CalendarBandPosition, CalendarCell, CalendarCellBase, CalendarDateClassFn, CalendarFixedLengthRangeStrategyOptions, CalendarHeaderContext, CalendarInterval, CalendarLabels, CalendarMode, CalendarMonthPage, CalendarNavigationDirection, CalendarPrecision, CalendarRange, CalendarRangeSelectionStrategy, CalendarSelectionFlags, CalendarView, CalendarWeekRangeStrategyOptions, CalendarWeekday, CardVariant, CarouselAutoplayPauseReason, CarouselLabels, CarouselResolvedTransitionDriver, CarouselSlideAlign, CarouselSlideContext, CarouselSlideTemplateRef, CarouselTransition, CarouselTransitionDriver, CascaderColumnState, CascaderCompareWith, CascaderDataSource, CascaderFromQueryConfig, CascaderFromQuerySearchConfig, CascaderLabels, CascaderNode, CascaderNodeSignal, CascaderSearchState, CascaderSelectableLevels, CascaderSurfaceContext, CenteredOverlayStrategyOptions, CheckboxOptionVariant, ChipLabels, ChoiceFieldVariant, ClampPositionOptions, CommonBracketRoundType, CompactLayoutOptions, ComponentInputValue, ComputedBracketGrid, CounterComponentBase, CreateAnchoredPanelControllerOptions, CreateBracketGridConfig, CreateExistingDropzoneEntryOptions, CreateFileDropzoneEntryOptions, CreateOverlayUnsavedChangesGuardConfig, CreateTableRowsSourceOptions, CurrencyMaskOptions, DatePickerHost, DatePickerSurfaceBase, DatePickerSurfaceContext, DatePickerTriggerBase, DateRangeSide, DateRangeValue, DateTimeLabels, Dimensions, DoubleEliminationBracketRoundType, DragDismissMomentum, DragToDismissContext, DragToDismissRef, DropzoneDeleteConfig, DropzoneDeleteOptions, DropzoneEntry, DropzoneEntrySource, DropzoneEntryStatus, DropzoneExistingFileInfo, DropzoneFileConstraints, DropzoneFileRejection, DropzoneFileRejectionReason, DropzoneFileValidationChannel, DropzoneLabels, DropzoneUploadConfig, DropzoneUploadError, DropzoneUploadHandle, DropzoneUploadHandleOptions, DropzoneUploadState, DurationFormatSpec, DurationSegment, DurationUnit, EtBuiltInIconName, EthleteIconNameRegistry, EthleteIconVariantRegistry, FacebookVideoPlayer, FacebookWindow, FilterOverlay, FilterOverlayConfig, FilterOverlayDraft, FilterOverlayLabels, FilterOverlayPreview, FilterOverlayResult, FilterOverlaySubmitButton, FilterOverlaySubmitState, FilterOverlayValueOf, FilterRowsConfig, FindCollisionOptions, FloatingActionState, FormErrorMessageResolver, FormFieldAppearance, FormFieldControl, FormFieldControlType, FormFieldDirectiveBase, FormFieldFill, FormFieldLabelMode, FormFieldLabels, FormFieldSize, FormSupport, FullscreenAnimationCancellable, FullscreenAnimationDeps, FullscreenAnimationState, GenerateBracketDataOptions, GridAdapter, GridBreakpointConfig, GridBreakpointName, GridComponentRegistration, GridConfig, GridGeometry, GridItemActionsComponent, GridItemConfig, GridItemConstraints, GridItemPosition, GridLabels, GridLayoutEntry, GridSerializedState, GroupBracketRoundType, HintComponentBase, IconDefinition, IconOverride, InputLabels, InputMaskHost, InputTextAlignment, JsonKind, LabelDirectiveBase, LegacyQueryErrorSource, LoaderLabels, MapLayoutOptions, MaskSpec, MaskValueMode, MasonryColumns, MasonryPacking, MasonryPlacement, MatchCardNameContext, MatchCardSize, MatchLabels, MatchParticipantDisplayNameOptions, MatchParticipantId, MatchParticipantShortId, MatchParticipantSide, MatchPositionMaps, MatchResultNameContext, MatchScoreChange, MenuAnchorPoint, MenuCloseReason, MenuItemActivationEvent, MenuItemActivationSource, MenuItemVariant, MenuOpenSource, MenuSelectionGroupDirectiveBase, MenuSelectionGroupItem, MenuSelectionItemKind, MenuSurfaceContext, MultiLanguageRichTextEditorLanguage, MultiLanguageRichTextEditorValue, NormalizedGameScore, NormalizedMatch, NormalizedMatchParticipant, NormalizedMatchResultKind, NormalizedMatchStatus, NormalizedMedia, NormalizedStandingRow, NotificationAction, NotificationActionSlot, NotificationConfig, NotificationContentInit, NotificationContentInput, NotificationEntry, NotificationLabels, NotificationManager, NotificationManagerConfig, NotificationPromiseContent, NotificationPromiseFn, NotificationPromiseWork, NotificationRef, NotificationStackContext, NotificationStatus, OtpInputCharset, OverlayAutoFocusTarget, OverlayBodyDividerType, OverlayBreakpointConfig, OverlayCloseGuard, OverlayConfig, OverlayDefinition, OverlayDefinitionConfig, OverlayDragToDismissConfig, OverlayDragToDismissDirection, OverlayDragToDismissPhysicalDirection, OverlayLifecycleConfig, OverlayManager, OverlayMode, OverlayOpenConfig, OverlayOpener, OverlayOpenerConfig, OverlayRef, OverlayRole, OverlayRoute, OverlayRouter, OverlayRouterConfig, OverlayRouterNavigateConfig, OverlayRouterNavigationDirection, OverlayRouterResolvedPath, OverlayRouterTransitionType, OverlayStrategy, OverlayStrategyBreakpoint, OverlayStrategyContext, OverlayStrategyController, OverlayStrategyControllerMountConfig, OverlaySurfaceContext, OverlayTreeContainmentOptions, OverlayUnsavedChangesDismissSources, OverlayUnsavedChangesGuardRef, PaginateOptions, PaginationItem, PaginationItemType, PaginationLabels, PaginationRangeContext, PaginationRenderAs, ParticipantMatchResult, PhoneCountry, PhoneInputFlagContext, PhoneInputFlagCountry, PhoneInputLabels, PictureConfig, PictureSource, PictureState, PipCellData, PipChromeAnimations, PipChromeRef, PipChromeState, PipManager, PipSlotPlaceholderConfig, PixelRect, ProgressStepState, QueryErrorLabels, QueryErrorRetryTarget, QueryErrorSlotContext, QueryErrorView, QueryParamOverlayDefinition, QueryParamOverlayDefinitionConfig, QueryParamOverlayHost, QueryParamOverlayOpener, QueryParamOverlayValue, RadioVariant, RangeSliderValue, RatingIconContext, RatingIconState, ReconcilableColumn, ReduceSupportPresentationInput, RegisteredIconName, RegisteredIconVariant, RequiredLanguagesOptions, ResizeSpanBounds, ResolveClosestOverlayOptions, ResolveCollisionsOptions, ResolvedDropzoneUploadConfig, ResolvedScrollableChrome, RichTextEditorFloatingToolbarSetup, RichTextEditorImageFailure, RichTextEditorImageFailureReason, RichTextEditorImageToolConfig, RichTextEditorImageUpload, RichTextEditorImageUploadFn, RichTextEditorImageUploadRun, RichTextEditorLabels, RichTextEditorLinkEditorSetup, RichTextEditorLinkEditorValue, RichTextEditorQueryTriggerConfig, RichTextEditorTool, RichTextEditorToolButton, RichTextEditorToolDefinition, RichTextEditorToolsConfig, RichTextEditorTrigger, RichTextEditorTriggerItem, RichTextEditorTriggerItemResolver, RichTextEditorTriggerItemSource, RichTextEditorTriggerType, RowFloors, SchedulerAgendaDay, SchedulerBadgeAdornment, SchedulerBadgeChainCountConfig, SchedulerBadgeColorDotConfig, SchedulerBadgeLocationConfig, SchedulerBadgeTimeRangeConfig, SchedulerBadgeTitleConfig, SchedulerFeatureConfig, SchedulerFeatureHost, SchedulerLabels, SchedulerMonthDayCell, SchedulerTimeGridAllDayEntry, SchedulerTimeGridBlock, SchedulerTimeGridDay, SchedulerView, SchedulerVisibleRange, SchedulerWeekStartsOn, SchedulerWeekday, ScrollableActiveChildRef, ScrollableButtonPosition, ScrollableButtonsConfig, ScrollableChrome, ScrollableChromeSlot, ScrollableDirection, ScrollableIntersectionChange, ScrollableItemSize, ScrollableLoadingTemplatePosition, ScrollableLoadingTemplateRef, ScrollableMaskVariant, ScrollableNavigation, ScrollableNavigationConfig, ScrollableNavigationItem, ScrollableScrollMode, ScrollableScrollOrigin, ScrollableScrollState, SegmentedButtonGroupVariant, SelectAsyncOptions, SelectErrorContext, SelectFilterMode, SelectItem, SelectLabels, SelectOptionData, SelectOptionGroupItem, SelectOptionTemplateContext, SelectOptionsFromQuery, SelectOptionsFromQueryConfig, SelectOptionsFromV2QueryConfig, SelectSelectedEntry, SelectSurfaceContext, SelectValueContext, SelectionListDirectiveBase, SelectionListItem, SelectionListOrientation, SerializeOptions, SidebarOverlay, SidebarOverlayConfig, SingleEliminationBracketRoundType, SkeletonShape, SliderHostBase, SliderLabels, SliderMark, SliderMarkStop, SliderMarks, SliderOrientation, SliderThumbBase, SliderThumbLabelBase, SliderThumbLabelContext, SortRowsConfig, Spacing, StandingsFormResult, StandingsLabels, StandingsRenderRow, StandingsZone, StartImageUploadOptions, StreamConfig, StreamConsentConfig, StreamLabels, StreamManager, StreamPipEntry, StreamPipWindowConfig, StreamPlayer, StreamPlayerCapabilities, StreamPlayerEntry, StreamPlayerErrorConfig, StreamPlayerErrorContext, StreamPlayerId, StreamPlayerLoadingConfig, StreamPlayerParams, StreamPlayerSlotHandle, StreamPlayerSlotOptions, StreamPlayerState, StreamScriptLoader, StreamSlotEntry, SupportContentState, SupportPresentationState, SupportTransitionDirection, SwissBracketLayoutOptions, SwissBracketRoundType, TabBarFit, TabBarOrientation, TabBarVariant, TabSize, TableBodyPlaceholder, TableCellContext, TableCellEditCommit, TableCellEditContext, TableCellEditTarget, TableCellEditing, TableCellErrorMark, TableCellErrorTooltipConfig, TableCellNavigation, TableCellPinning, TableCellPlaceholder, TableCellSkeletonContext, TableCellState, TableCellStateValue, TableColumn, TableColumnAlign, TableColumnDef, TableColumnMenuConfig, TableColumnMeta, TableColumnPinning, TableColumnState, TableColumnTemplate, TableColumnVisibilityHost, TableColumns, TableCsvExportConfig, TableCsvExportFile, TableCsvExportOptions, TableCsvRowsFromPagesOptions, TableCsvRowsProvider, TableCsvSerializeOptions, TableCsvSource, TableCsvValue, TableEmptyContext, TableErrorContext, TableExpandedRowContext, TableFeatureConfig, TableFeatureHost, TableFilter, TableFilterOption, TableFilterOptionContext, TableFilterOptionsProvider, TableFilterSelection, TableFiltersConfig, TableFooterContext, TableGroupHeadersConfig, TableHeaderAdornment, TableHeaderContext, TableHeaderGroup, TableHeaderRow, TableInlineEditConfig, TableKeyboardNavConfig, TableLabels, TableLabelsSource, TableLayer, TableLeadCellComponent, TableLeadColumn, TableReorderConfig, TableResizeConfig, TableRowDetail, TableRowExpansionConfig, TableRowKey, TableRowWindow, TableRowsDriver, TableRowsFromQuery, TableRowsFromQueryConfig, TableRowsFromV2QueryConfig, TableRowsQueryState, TableRowsSource, TableSelectionConfig, TableSkeletonConfig, TableSort, TableSortDirection, TableSortValue, TableState, TableStatePersistenceConfig, TableStateSlice, TableStateStorage, TableStateStorageKind, TableStateStorageOptions, TableStickyColumnsConfig, TableTemplateSlot, TableVirtualScrollConfig, TextAlign, TextareaResizeMode, TimePickerColumn, TimePickerLabels, TimePickerOption, TimePickerUnit, ToggletipContent, TooltipContent, TournamentMode, TwitchEmbed, TwitchEmbedConstructor, TwitchEmbedPlayer, TwitchPlayerParams, TwitchWindow, V2DropzoneDeleteConfig, V2DropzonePrepareArgsOf, V2DropzoneUploadConfig, V2PrepareArgsOf, ViewportTransformData, VimeoDurationChangeEvent, VimeoPlaybackEvent, VimeoPlayer, VimeoPlayerOptions, VimeoWindow, WindowControlButtonKind, WindowControlButtonSize, YtPlayer, YtPlayerConfig, YtPlayerErrorEvent, YtPlayerEvent, YtPlayerStateChangeEvent, YtPlayerVars, YtWindow };