@ethlete/components 1.0.0-next.38 → 1.0.0-next.39

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.
@@ -6,7 +6,7 @@ import { NgTemplateOutlet, NgComponentOutlet, Location, DOCUMENT as DOCUMENT$1,
6
6
  import { DomSanitizer } from '@angular/platform-browser';
7
7
  import { format, startOfWeek, startOfDay, endOfWeek, isBefore, addDays, endOfMonth, startOfMonth, isSameYear, isSameMonth, isSameDay, startOfYear, isAfter, addYears, addMonths, setMonth, setYear, getDate, setDate, lastDayOfMonth, getWeek, endOfYear, parse, isValid, setSeconds, setMinutes, setHours, setMilliseconds, endOfDay, eachDayOfInterval, addHours } from 'date-fns';
8
8
  import { takeUntilDestroyed, toObservable, toSignal, outputFromObservable, outputToObservable, rxResource } from '@angular/core/rxjs-interop';
9
- import { Subject, take, tap, timer, takeUntil, fromEvent, filter, combineLatest, switchMap, map, distinctUntilChanged, EMPTY, debounceTime, merge, defer, finalize, of, isObservable, from, catchError, firstValueFrom, concat, scan, interval, animationFrameScheduler, EmptyError, exhaustMap, Observable, shareReplay, defaultIfEmpty, expand, toArray } from 'rxjs';
9
+ import { Subject, take, tap, timer, takeUntil, fromEvent, filter, combineLatest, switchMap, map, distinctUntilChanged, EMPTY, debounceTime, merge, defer, finalize, of, isObservable, from, catchError, firstValueFrom, concat, scan, interval, animationFrameScheduler, EmptyError, exhaustMap, Observable, shareReplay, defaultIfEmpty, expand, toArray, mergeMap } from 'rxjs';
10
10
  import * as i1$1 from '@angular/router';
11
11
  import { Router, RouterLink, RouterLinkActive, NavigationEnd } from '@angular/router';
12
12
  import { withArgs, queryStateSignal, isQueryStateSuccess, isQueryStateFailure, isQueryStateLoading, executeUntilSettled, extractQuery, queryComputed, detectPaginationShape, isDateShapedLeaf, collectLeafPaths, QUERY_DEVTOOLS_FAULT_STATUSES, clearQueryDevtoolsFaults, setQueryDevtoolsFault, queryDevtoolsEntries, queryDevtoolsFaults, EMPTY_QUERY_DEVTOOLS_FAULT, isQueryDevtoolsFaultArmed, measureQueryDevtoolsPayload, createQueryErrorResponse, sumQueryDevtoolsStats, parseHttpErrorCodeToMessageEn, parseHttpErrorCodeToTitleEn, parseHttpErrorCodeToMessageDe, parseHttpErrorCodeToTitleDe, queryErrorMessages } from '@ethlete/query';
@@ -18526,7 +18526,7 @@ const provideFilterOverlay = (config) => [{ provide: FILTER_OVERLAY_TOKEN, useFa
18526
18526
  * The filter overlay provided above this component, typed to your filters' **value** shape:
18527
18527
  *
18528
18528
  * ```ts
18529
- * const createTeamFilters = () => createQueryForm({ fields: TEAM_FILTER_FIELDS });
18529
+ * const createTeamFilters = () => defineQueryForm({ fields: TEAM_FILTER_FIELDS });
18530
18530
  * type TeamFilterValue = FilterOverlayValueOf<ReturnType<typeof createTeamFilters>>;
18531
18531
  *
18532
18532
  * protected filters = injectFilterOverlay<TeamFilterValue>();
@@ -19955,9 +19955,9 @@ const createTypeahead = (resetDelay = 500) => {
19955
19955
 
19956
19956
  /** Whether a node can be drilled into - false for explicit leaves and `hasChildren: false`. */
19957
19957
  const canHaveChildren = (node) => node.isLeaf !== true && node.hasChildren !== false;
19958
- const defaultCompareWith = (a, b) => a === b;
19958
+ const defaultCompareWith$1 = (a, b) => a === b;
19959
19959
  /** Value equality between two nodes via the configured comparator. */
19960
- const nodesEqual = (options) => {
19960
+ const nodesEqual$1 = (options) => {
19961
19961
  const { a, b, compareWith } = options;
19962
19962
  return a !== null && b !== null && compareWith(a.value, b.value);
19963
19963
  };
@@ -19967,7 +19967,7 @@ const indexOfNode = (options) => {
19967
19967
  return node === null ? -1 : nodes.findIndex((candidate) => compareWith(candidate.value, node.value));
19968
19968
  };
19969
19969
  /** Normalizes a `loadChildren` result (array | Promise | Observable) into an Observable. */
19970
- const toChildrenObservable = (result) => {
19970
+ const toChildrenObservable$1 = (result) => {
19971
19971
  if (Array.isArray(result)) {
19972
19972
  return of(result);
19973
19973
  }
@@ -20046,7 +20046,7 @@ class CascaderDirective {
20046
20046
  this.selectableLevels = input(CASCADER_SELECTABLE_LEVELS.LEAF, /* @ts-ignore */
20047
20047
  ...(ngDevMode ? [{ debugName: "selectableLevels" }] : /* istanbul ignore next */ []));
20048
20048
  /** Value equality - override when values are objects. */
20049
- this.compareWith = input(defaultCompareWith, /* @ts-ignore */
20049
+ this.compareWith = input(defaultCompareWith$1, /* @ts-ignore */
20050
20050
  ...(ngDevMode ? [{ debugName: "compareWith" }] : /* istanbul ignore next */ []));
20051
20051
  /**
20052
20052
  * Turns a `loadChildren` / `search` failure into the error text shown in the panel. The default
@@ -20523,7 +20523,7 @@ class CascaderDirective {
20523
20523
  }
20524
20524
  /** Whether a node is expanded (its children fill the next column). */
20525
20525
  isExpanded(node, columnIndex) {
20526
- return nodesEqual({ a: this.openPath()[columnIndex] ?? null, b: node, compareWith: this.compareWith() });
20526
+ return nodesEqual$1({ a: this.openPath()[columnIndex] ?? null, b: node, compareWith: this.compareWith() });
20527
20527
  }
20528
20528
  /**
20529
20529
  * Activates a node from a pointer/keyboard interaction: drills into branches, commits leaves.
@@ -20846,7 +20846,7 @@ class CascaderDirective {
20846
20846
  if (!canHaveChildren(node) || visited.some((seen) => compareWith(seen.value, node.value))) {
20847
20847
  return false;
20848
20848
  }
20849
- const children = this.knownChildren().find((entry) => nodesEqual({ a: entry.parent, b: node, compareWith }))?.children;
20849
+ const children = this.knownChildren().find((entry) => nodesEqual$1({ a: entry.parent, b: node, compareWith }))?.children;
20850
20850
  const selectable = children?.filter((child) => !child.disabled) ?? [];
20851
20851
  return selectable.length > 0 && selectable.every((child) => this.isFullySelected(child, [...visited, node]));
20852
20852
  }
@@ -20947,7 +20947,7 @@ class CascaderDirective {
20947
20947
  }
20948
20948
  this.loadSubscriptions.get(columnIndex)?.unsubscribe();
20949
20949
  this.setColumn(columnIndex, { parent, status: 'loading', nodes: [], error: null });
20950
- const subscription = toChildrenObservable(source.loadChildren(parent))
20950
+ const subscription = toChildrenObservable$1(source.loadChildren(parent))
20951
20951
  .pipe(take(1), tap({
20952
20952
  next: (nodes) => {
20953
20953
  this.setColumn(columnIndex, { parent, status: 'loaded', nodes, error: null });
@@ -20965,7 +20965,7 @@ class CascaderDirective {
20965
20965
  rememberChildren(parent, children) {
20966
20966
  const compareWith = this.compareWith();
20967
20967
  this.knownChildren.update((entries) => [
20968
- ...entries.filter((entry) => parent === null ? entry.parent !== null : !nodesEqual({ a: entry.parent, b: parent, compareWith })),
20968
+ ...entries.filter((entry) => parent === null ? entry.parent !== null : !nodesEqual$1({ a: entry.parent, b: parent, compareWith })),
20969
20969
  { parent, children },
20970
20970
  ]);
20971
20971
  }
@@ -21126,7 +21126,7 @@ class CascaderNodeDirective {
21126
21126
  ...(ngDevMode ? [{ debugName: "indeterminate" }] : /* istanbul ignore next */ []));
21127
21127
  this.expanded = computed(() => this.cascader?.isExpanded(this.node(), this.column.columnIndex()) ?? false, /* @ts-ignore */
21128
21128
  ...(ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []));
21129
- this.focused = computed(() => nodesEqual({
21129
+ this.focused = computed(() => nodesEqual$1({
21130
21130
  a: this.cascader?.focusedNode() ?? null,
21131
21131
  b: this.node(),
21132
21132
  compareWith: this.cascader?.compareWith() ?? ((a, b) => a === b),
@@ -49178,17 +49178,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
49178
49178
  args: [{ selector: 'et-query-devtools-faults-tab', encapsulation: ViewEncapsulation.None, template: "<div class=\"et-query-devtools-scroll\">\n <div class=\"et-query-devtools-toolbar\">\n <p class=\"et-query-devtools-hint\">\n Faults are injected into the request pipeline, so retries, error handling features and the cache see them exactly\n as they would see a real one. Unlike the rest of the panel, what you arm here is not persisted - a page reload\n disarms every client.\n </p>\n </div>\n\n @for (client of host.faultClients(); track client.name) {\n @let fault = client.fault;\n <div [class.et-query-devtools-card--armed]=\"client.armed\" class=\"et-query-devtools-card\">\n <div class=\"et-query-devtools-card-head\">\n <strong class=\"et-query-devtools-mono\">{{ client.name }}</strong>\n <span class=\"et-query-devtools-url\">{{ client.baseUrl }}</span>\n @if (client.armed) {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--error\">armed</span>\n <button (click)=\"CLEAR_FAULTS(client.name)\" class=\"et-query-devtools-btn\" type=\"button\">Disarm</button>\n }\n </div>\n\n <div class=\"et-query-devtools-faults\">\n <label class=\"et-query-devtools-field\">\n <span>Latency</span>\n <input\n #latencyInput\n [value]=\"fault.latencyMs\"\n (change)=\"armFaultValue({ clientName: client.name, field: 'latencyMs', value: latencyInput.value })\"\n class=\"et-query-devtools-input et-query-devtools-input--number\"\n type=\"number\"\n min=\"0\"\n max=\"60000\"\n step=\"100\"\n />\n <small>ms before every attempt starts</small>\n </label>\n\n <label class=\"et-query-devtools-field\">\n <span>Fail next</span>\n <input\n #failNextInput\n [value]=\"fault.failNext\"\n (change)=\"armFaultValue({ clientName: client.name, field: 'failNext', value: failNextInput.value })\"\n class=\"et-query-devtools-input et-query-devtools-input--number\"\n type=\"number\"\n min=\"0\"\n max=\"99\"\n step=\"1\"\n />\n <small>attempts, counted down as they are spent</small>\n </label>\n\n <label class=\"et-query-devtools-field\">\n <span>Fail rate</span>\n <input\n #failRateInput\n [value]=\"fault.failRate\"\n (change)=\"armFaultValue({ clientName: client.name, field: 'failRate', value: failRateInput.value })\"\n class=\"et-query-devtools-input et-query-devtools-input--number\"\n type=\"number\"\n min=\"0\"\n max=\"100\"\n step=\"5\"\n />\n <small>% of attempts, rolled per attempt</small>\n </label>\n\n <label class=\"et-query-devtools-field\">\n <span>Status</span>\n <select\n #statusSelect\n (change)=\"armFaultStatus({ clientName: client.name, value: statusSelect.value })\"\n class=\"et-query-devtools-select\"\n >\n @for (option of FAULT_STATUSES; track option.status) {\n <!-- `selected` on the option, not `value` on the select: the select's value is\n applied before its options exist, so it would fall back to the first one. -->\n <option [value]=\"option.status\" [selected]=\"option.status === fault.status\">\n {{ option.status }} \u00B7 {{ option.label }}\n </option>\n }\n </select>\n <small>\n @if (isFaultStatusRetryable(fault.status)) {\n the default retry policy retries this\n } @else {\n the default retry policy gives up on this\n }\n </small>\n </label>\n </div>\n </div>\n } @empty {\n <p class=\"et-query-devtools-empty\">No query clients registered yet.</p>\n }\n</div>\n" }]
49179
49179
  }] });
49180
49180
 
49181
- /** The Forms tab: registered `createQueryForm()` handles, each expandable to its field table. */
49181
+ /** The Forms tab: registered `defineQueryForm()` handles, each expandable to its field table. */
49182
49182
  class QueryDevtoolsFormsTabComponent {
49183
49183
  constructor() {
49184
49184
  this.host = injectQueryDevtoolsHost();
49185
49185
  }
49186
49186
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: QueryDevtoolsFormsTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: QueryDevtoolsFormsTabComponent, isStandalone: true, selector: "et-query-devtools-forms-tab", ngImport: i0, template: "<div #panes class=\"et-query-devtools-split\">\n <div class=\"et-query-devtools-scroll\">\n @for (entry of host.formEntries(); track entry.id) {\n @let form = host.asForm(entry);\n @let expanded = host.selectedFormId() === entry.id;\n <div class=\"et-query-devtools-card\">\n <div class=\"et-query-devtools-card-head\">\n <button\n [attr.aria-expanded]=\"expanded\"\n (click)=\"host.selectedFormId.set(expanded ? null : entry.id)\"\n class=\"et-query-devtools-row-link\"\n type=\"button\"\n >\n <span class=\"et-query-devtools-caret\">{{ expanded ? '\u25BE' : '\u25B8' }}</span>\n <strong>{{ entry.meta.name || 'query form' }}</strong>\n </button>\n @if (form.activeFilterCount(); as count) {\n <span class=\"et-query-devtools-chip\">{{ count }} active</span>\n } @else {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--muted\">at defaults</span>\n }\n @if (form.isCommitPending()) {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--loading\">debouncing</span>\n }\n @if (!form.isObserving()) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"observe() has not been called, so nothing syncs with the URL\"\n >\n not observing\n </span>\n }\n <button\n [disabled]=\"form.isAtDefaults()\"\n (click)=\"form.resetAll()\"\n class=\"et-query-devtools-btn\"\n type=\"button\"\n >\n \u27F2 Reset all\n </button>\n </div>\n\n @let driven = host.queriesDrivenByForm(entry);\n <dl class=\"et-query-devtools-meta\">\n <dt>Drives</dt>\n <dd>\n @if (driven.length) {\n <div class=\"et-query-devtools-inner-queries\">\n @for (link of driven; track link.id) {\n <button\n [class.et-query-devtools-inner-row--active]=\"host.formSelectedQueryId() === link.id\"\n [disabled]=\"!link.id\"\n (click)=\"host.formSelectedQueryId.set(link.id)\"\n class=\"et-query-devtools-inner-row\"\n type=\"button\"\n >\n <span [attr.data-status]=\"host.queryStatus(link.query)\" class=\"et-query-devtools-status\"></span>\n <span class=\"et-query-devtools-method\">{{ link.method }}</span>\n <span class=\"et-query-devtools-route\">\n <et-query-devtools-route [segments]=\"link.segments\" [fallback]=\"link.query.id() || 'query'\" />\n </span>\n </button>\n }\n </div>\n } @else {\n <span class=\"et-query-devtools-hint\">\n No query has read this form's value yet. A query picks it up the first time its\n <code>withArgs</code> reads <code>value()</code>.\n </span>\n }\n </dd>\n </dl>\n\n @if (expanded) {\n <table class=\"et-query-devtools-table\">\n <thead>\n <tr>\n <th>Field</th>\n <th>Value</th>\n <th>Default</th>\n <th>URL param</th>\n <th>Rules</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (field of form.fields(); track field.key) {\n <tr [attr.data-status]=\"field.isDefault ? null : 'success'\">\n <td class=\"et-query-devtools-mono\">{{ field.key }}</td>\n <td class=\"et-query-devtools-mono\">\n {{ host.inlineValue(field.value) }}\n <!-- The live value only differs while a debounce is pending, which is exactly\n when \"the input says X but the query asked for Y\" needs explaining. -->\n @if (field.liveValue !== field.value) {\n <span class=\"et-query-devtools-stat-sub\">typing {{ host.inlineValue(field.liveValue) }}</span>\n }\n </td>\n <td class=\"et-query-devtools-mono\">{{ host.inlineValue(field.defaultValue) }}</td>\n <td class=\"et-query-devtools-mono\">\n @if (field.queryParam === undefined) {\n <span class=\"et-query-devtools-hint\">\u2014</span>\n } @else {\n {{ field.paramKey }}={{ host.inlineValue(field.queryParam) }}\n }\n </td>\n <td>\n <div class=\"et-query-devtools-chips\">\n @if (field.debounceMs !== null) {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--muted\">\n {{ field.debounceMs }}ms\n </span>\n }\n @if (field.isResetBy.length) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"Reset to its default whenever one of these changes\"\n >\n reset by {{ field.isResetBy.join(', ') }}\n </span>\n }\n @if (!field.countsAsFilter) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"Not counted by activeFilterCount\"\n >\n not a filter\n </span>\n }\n </div>\n </td>\n <td>\n <button\n [disabled]=\"field.isDefault\"\n (click)=\"form.resetField(field.key)\"\n class=\"et-query-devtools-btn\"\n type=\"button\"\n >\n \u27F2\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <h4 class=\"et-query-devtools-section\">Committed value</h4>\n <et-query-devtools-json [value]=\"form.value()\" />\n }\n </div>\n } @empty {\n <p class=\"et-query-devtools-empty\">\n No query forms registered. A form created with <code>createQueryForm()</code> registers itself.\n </p>\n }\n </div>\n\n <et-query-devtools-drawer\n [sel]=\"host.formSelectedQuery()\"\n [container]=\"panes\"\n (dismiss)=\"host.formSelectedQueryId.set(null)\"\n />\n</div>\n", dependencies: [{ kind: "component", type: QueryDevtoolsDrawerComponent, selector: "et-query-devtools-drawer", inputs: ["sel", "container"], outputs: ["dismiss"] }, { kind: "component", type: QueryDevtoolsJsonComponent, selector: "et-query-devtools-json", inputs: ["value", "nodeKey", "depth", "search", "chunk", "path", "expandedPaths", "collapsedPaths", "toggleFn", "jsonPath", "parentKind", "overrides"] }, { kind: "component", type: QueryDevtoolsRouteComponent, selector: "et-query-devtools-route", inputs: ["segments", "fallback"] }], encapsulation: i0.ViewEncapsulation.None }); }
49187
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: QueryDevtoolsFormsTabComponent, isStandalone: true, selector: "et-query-devtools-forms-tab", ngImport: i0, template: "<div #panes class=\"et-query-devtools-split\">\n <div class=\"et-query-devtools-scroll\">\n @for (entry of host.formEntries(); track entry.id) {\n @let form = host.asForm(entry);\n @let expanded = host.selectedFormId() === entry.id;\n <div class=\"et-query-devtools-card\">\n <div class=\"et-query-devtools-card-head\">\n <button\n [attr.aria-expanded]=\"expanded\"\n (click)=\"host.selectedFormId.set(expanded ? null : entry.id)\"\n class=\"et-query-devtools-row-link\"\n type=\"button\"\n >\n <span class=\"et-query-devtools-caret\">{{ expanded ? '\u25BE' : '\u25B8' }}</span>\n <strong>{{ entry.meta.name || 'query form' }}</strong>\n </button>\n @if (form.activeFilterCount(); as count) {\n <span class=\"et-query-devtools-chip\">{{ count }} active</span>\n } @else {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--muted\">at defaults</span>\n }\n @if (form.isCommitPending()) {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--loading\">debouncing</span>\n }\n @if (!form.isObserving()) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"observe() has not been called, so nothing syncs with the URL\"\n >\n not observing\n </span>\n }\n <button\n [disabled]=\"form.isAtDefaults()\"\n (click)=\"form.resetAll()\"\n class=\"et-query-devtools-btn\"\n type=\"button\"\n >\n \u27F2 Reset all\n </button>\n </div>\n\n @let driven = host.queriesDrivenByForm(entry);\n <dl class=\"et-query-devtools-meta\">\n <dt>Drives</dt>\n <dd>\n @if (driven.length) {\n <div class=\"et-query-devtools-inner-queries\">\n @for (link of driven; track link.id) {\n <button\n [class.et-query-devtools-inner-row--active]=\"host.formSelectedQueryId() === link.id\"\n [disabled]=\"!link.id\"\n (click)=\"host.formSelectedQueryId.set(link.id)\"\n class=\"et-query-devtools-inner-row\"\n type=\"button\"\n >\n <span [attr.data-status]=\"host.queryStatus(link.query)\" class=\"et-query-devtools-status\"></span>\n <span class=\"et-query-devtools-method\">{{ link.method }}</span>\n <span class=\"et-query-devtools-route\">\n <et-query-devtools-route [segments]=\"link.segments\" [fallback]=\"link.query.id() || 'query'\" />\n </span>\n </button>\n }\n </div>\n } @else {\n <span class=\"et-query-devtools-hint\">\n No query has read this form's value yet. A query picks it up the first time its\n <code>withArgs</code> reads <code>value()</code>.\n </span>\n }\n </dd>\n </dl>\n\n @if (expanded) {\n <table class=\"et-query-devtools-table\">\n <thead>\n <tr>\n <th>Field</th>\n <th>Value</th>\n <th>Default</th>\n <th>URL param</th>\n <th>Rules</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (field of form.fields(); track field.key) {\n <tr [attr.data-status]=\"field.isDefault ? null : 'success'\">\n <td class=\"et-query-devtools-mono\">{{ field.key }}</td>\n <td class=\"et-query-devtools-mono\">\n {{ host.inlineValue(field.value) }}\n <!-- The live value only differs while a debounce is pending, which is exactly\n when \"the input says X but the query asked for Y\" needs explaining. -->\n @if (field.liveValue !== field.value) {\n <span class=\"et-query-devtools-stat-sub\">typing {{ host.inlineValue(field.liveValue) }}</span>\n }\n </td>\n <td class=\"et-query-devtools-mono\">{{ host.inlineValue(field.defaultValue) }}</td>\n <td class=\"et-query-devtools-mono\">\n @if (field.queryParam === undefined) {\n <span class=\"et-query-devtools-hint\">\u2014</span>\n } @else {\n {{ field.paramKey }}={{ host.inlineValue(field.queryParam) }}\n }\n </td>\n <td>\n <div class=\"et-query-devtools-chips\">\n @if (field.debounceMs !== null) {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--muted\">\n {{ field.debounceMs }}ms\n </span>\n }\n @if (field.isResetBy.length) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"Reset to its default whenever one of these changes\"\n >\n reset by {{ field.isResetBy.join(', ') }}\n </span>\n }\n @if (!field.countsAsFilter) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"Not counted by activeFilterCount\"\n >\n not a filter\n </span>\n }\n </div>\n </td>\n <td>\n <button\n [disabled]=\"field.isDefault\"\n (click)=\"form.resetField(field.key)\"\n class=\"et-query-devtools-btn\"\n type=\"button\"\n >\n \u27F2\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <h4 class=\"et-query-devtools-section\">Committed value</h4>\n <et-query-devtools-json [value]=\"form.value()\" />\n }\n </div>\n } @empty {\n <p class=\"et-query-devtools-empty\">\n No query forms registered. A form created with <code>defineQueryForm()</code> registers itself.\n </p>\n }\n </div>\n\n <et-query-devtools-drawer\n [sel]=\"host.formSelectedQuery()\"\n [container]=\"panes\"\n (dismiss)=\"host.formSelectedQueryId.set(null)\"\n />\n</div>\n", dependencies: [{ kind: "component", type: QueryDevtoolsDrawerComponent, selector: "et-query-devtools-drawer", inputs: ["sel", "container"], outputs: ["dismiss"] }, { kind: "component", type: QueryDevtoolsJsonComponent, selector: "et-query-devtools-json", inputs: ["value", "nodeKey", "depth", "search", "chunk", "path", "expandedPaths", "collapsedPaths", "toggleFn", "jsonPath", "parentKind", "overrides"] }, { kind: "component", type: QueryDevtoolsRouteComponent, selector: "et-query-devtools-route", inputs: ["segments", "fallback"] }], encapsulation: i0.ViewEncapsulation.None }); }
49188
49188
  }
49189
49189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: QueryDevtoolsFormsTabComponent, decorators: [{
49190
49190
  type: Component,
49191
- args: [{ selector: 'et-query-devtools-forms-tab', encapsulation: ViewEncapsulation.None, imports: [QueryDevtoolsDrawerComponent, QueryDevtoolsJsonComponent, QueryDevtoolsRouteComponent], template: "<div #panes class=\"et-query-devtools-split\">\n <div class=\"et-query-devtools-scroll\">\n @for (entry of host.formEntries(); track entry.id) {\n @let form = host.asForm(entry);\n @let expanded = host.selectedFormId() === entry.id;\n <div class=\"et-query-devtools-card\">\n <div class=\"et-query-devtools-card-head\">\n <button\n [attr.aria-expanded]=\"expanded\"\n (click)=\"host.selectedFormId.set(expanded ? null : entry.id)\"\n class=\"et-query-devtools-row-link\"\n type=\"button\"\n >\n <span class=\"et-query-devtools-caret\">{{ expanded ? '\u25BE' : '\u25B8' }}</span>\n <strong>{{ entry.meta.name || 'query form' }}</strong>\n </button>\n @if (form.activeFilterCount(); as count) {\n <span class=\"et-query-devtools-chip\">{{ count }} active</span>\n } @else {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--muted\">at defaults</span>\n }\n @if (form.isCommitPending()) {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--loading\">debouncing</span>\n }\n @if (!form.isObserving()) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"observe() has not been called, so nothing syncs with the URL\"\n >\n not observing\n </span>\n }\n <button\n [disabled]=\"form.isAtDefaults()\"\n (click)=\"form.resetAll()\"\n class=\"et-query-devtools-btn\"\n type=\"button\"\n >\n \u27F2 Reset all\n </button>\n </div>\n\n @let driven = host.queriesDrivenByForm(entry);\n <dl class=\"et-query-devtools-meta\">\n <dt>Drives</dt>\n <dd>\n @if (driven.length) {\n <div class=\"et-query-devtools-inner-queries\">\n @for (link of driven; track link.id) {\n <button\n [class.et-query-devtools-inner-row--active]=\"host.formSelectedQueryId() === link.id\"\n [disabled]=\"!link.id\"\n (click)=\"host.formSelectedQueryId.set(link.id)\"\n class=\"et-query-devtools-inner-row\"\n type=\"button\"\n >\n <span [attr.data-status]=\"host.queryStatus(link.query)\" class=\"et-query-devtools-status\"></span>\n <span class=\"et-query-devtools-method\">{{ link.method }}</span>\n <span class=\"et-query-devtools-route\">\n <et-query-devtools-route [segments]=\"link.segments\" [fallback]=\"link.query.id() || 'query'\" />\n </span>\n </button>\n }\n </div>\n } @else {\n <span class=\"et-query-devtools-hint\">\n No query has read this form's value yet. A query picks it up the first time its\n <code>withArgs</code> reads <code>value()</code>.\n </span>\n }\n </dd>\n </dl>\n\n @if (expanded) {\n <table class=\"et-query-devtools-table\">\n <thead>\n <tr>\n <th>Field</th>\n <th>Value</th>\n <th>Default</th>\n <th>URL param</th>\n <th>Rules</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (field of form.fields(); track field.key) {\n <tr [attr.data-status]=\"field.isDefault ? null : 'success'\">\n <td class=\"et-query-devtools-mono\">{{ field.key }}</td>\n <td class=\"et-query-devtools-mono\">\n {{ host.inlineValue(field.value) }}\n <!-- The live value only differs while a debounce is pending, which is exactly\n when \"the input says X but the query asked for Y\" needs explaining. -->\n @if (field.liveValue !== field.value) {\n <span class=\"et-query-devtools-stat-sub\">typing {{ host.inlineValue(field.liveValue) }}</span>\n }\n </td>\n <td class=\"et-query-devtools-mono\">{{ host.inlineValue(field.defaultValue) }}</td>\n <td class=\"et-query-devtools-mono\">\n @if (field.queryParam === undefined) {\n <span class=\"et-query-devtools-hint\">\u2014</span>\n } @else {\n {{ field.paramKey }}={{ host.inlineValue(field.queryParam) }}\n }\n </td>\n <td>\n <div class=\"et-query-devtools-chips\">\n @if (field.debounceMs !== null) {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--muted\">\n {{ field.debounceMs }}ms\n </span>\n }\n @if (field.isResetBy.length) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"Reset to its default whenever one of these changes\"\n >\n reset by {{ field.isResetBy.join(', ') }}\n </span>\n }\n @if (!field.countsAsFilter) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"Not counted by activeFilterCount\"\n >\n not a filter\n </span>\n }\n </div>\n </td>\n <td>\n <button\n [disabled]=\"field.isDefault\"\n (click)=\"form.resetField(field.key)\"\n class=\"et-query-devtools-btn\"\n type=\"button\"\n >\n \u27F2\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <h4 class=\"et-query-devtools-section\">Committed value</h4>\n <et-query-devtools-json [value]=\"form.value()\" />\n }\n </div>\n } @empty {\n <p class=\"et-query-devtools-empty\">\n No query forms registered. A form created with <code>createQueryForm()</code> registers itself.\n </p>\n }\n </div>\n\n <et-query-devtools-drawer\n [sel]=\"host.formSelectedQuery()\"\n [container]=\"panes\"\n (dismiss)=\"host.formSelectedQueryId.set(null)\"\n />\n</div>\n" }]
49191
+ args: [{ selector: 'et-query-devtools-forms-tab', encapsulation: ViewEncapsulation.None, imports: [QueryDevtoolsDrawerComponent, QueryDevtoolsJsonComponent, QueryDevtoolsRouteComponent], template: "<div #panes class=\"et-query-devtools-split\">\n <div class=\"et-query-devtools-scroll\">\n @for (entry of host.formEntries(); track entry.id) {\n @let form = host.asForm(entry);\n @let expanded = host.selectedFormId() === entry.id;\n <div class=\"et-query-devtools-card\">\n <div class=\"et-query-devtools-card-head\">\n <button\n [attr.aria-expanded]=\"expanded\"\n (click)=\"host.selectedFormId.set(expanded ? null : entry.id)\"\n class=\"et-query-devtools-row-link\"\n type=\"button\"\n >\n <span class=\"et-query-devtools-caret\">{{ expanded ? '\u25BE' : '\u25B8' }}</span>\n <strong>{{ entry.meta.name || 'query form' }}</strong>\n </button>\n @if (form.activeFilterCount(); as count) {\n <span class=\"et-query-devtools-chip\">{{ count }} active</span>\n } @else {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--muted\">at defaults</span>\n }\n @if (form.isCommitPending()) {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--loading\">debouncing</span>\n }\n @if (!form.isObserving()) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"observe() has not been called, so nothing syncs with the URL\"\n >\n not observing\n </span>\n }\n <button\n [disabled]=\"form.isAtDefaults()\"\n (click)=\"form.resetAll()\"\n class=\"et-query-devtools-btn\"\n type=\"button\"\n >\n \u27F2 Reset all\n </button>\n </div>\n\n @let driven = host.queriesDrivenByForm(entry);\n <dl class=\"et-query-devtools-meta\">\n <dt>Drives</dt>\n <dd>\n @if (driven.length) {\n <div class=\"et-query-devtools-inner-queries\">\n @for (link of driven; track link.id) {\n <button\n [class.et-query-devtools-inner-row--active]=\"host.formSelectedQueryId() === link.id\"\n [disabled]=\"!link.id\"\n (click)=\"host.formSelectedQueryId.set(link.id)\"\n class=\"et-query-devtools-inner-row\"\n type=\"button\"\n >\n <span [attr.data-status]=\"host.queryStatus(link.query)\" class=\"et-query-devtools-status\"></span>\n <span class=\"et-query-devtools-method\">{{ link.method }}</span>\n <span class=\"et-query-devtools-route\">\n <et-query-devtools-route [segments]=\"link.segments\" [fallback]=\"link.query.id() || 'query'\" />\n </span>\n </button>\n }\n </div>\n } @else {\n <span class=\"et-query-devtools-hint\">\n No query has read this form's value yet. A query picks it up the first time its\n <code>withArgs</code> reads <code>value()</code>.\n </span>\n }\n </dd>\n </dl>\n\n @if (expanded) {\n <table class=\"et-query-devtools-table\">\n <thead>\n <tr>\n <th>Field</th>\n <th>Value</th>\n <th>Default</th>\n <th>URL param</th>\n <th>Rules</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (field of form.fields(); track field.key) {\n <tr [attr.data-status]=\"field.isDefault ? null : 'success'\">\n <td class=\"et-query-devtools-mono\">{{ field.key }}</td>\n <td class=\"et-query-devtools-mono\">\n {{ host.inlineValue(field.value) }}\n <!-- The live value only differs while a debounce is pending, which is exactly\n when \"the input says X but the query asked for Y\" needs explaining. -->\n @if (field.liveValue !== field.value) {\n <span class=\"et-query-devtools-stat-sub\">typing {{ host.inlineValue(field.liveValue) }}</span>\n }\n </td>\n <td class=\"et-query-devtools-mono\">{{ host.inlineValue(field.defaultValue) }}</td>\n <td class=\"et-query-devtools-mono\">\n @if (field.queryParam === undefined) {\n <span class=\"et-query-devtools-hint\">\u2014</span>\n } @else {\n {{ field.paramKey }}={{ host.inlineValue(field.queryParam) }}\n }\n </td>\n <td>\n <div class=\"et-query-devtools-chips\">\n @if (field.debounceMs !== null) {\n <span class=\"et-query-devtools-chip et-query-devtools-chip--muted\">\n {{ field.debounceMs }}ms\n </span>\n }\n @if (field.isResetBy.length) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"Reset to its default whenever one of these changes\"\n >\n reset by {{ field.isResetBy.join(', ') }}\n </span>\n }\n @if (!field.countsAsFilter) {\n <span\n class=\"et-query-devtools-chip et-query-devtools-chip--muted\"\n title=\"Not counted by activeFilterCount\"\n >\n not a filter\n </span>\n }\n </div>\n </td>\n <td>\n <button\n [disabled]=\"field.isDefault\"\n (click)=\"form.resetField(field.key)\"\n class=\"et-query-devtools-btn\"\n type=\"button\"\n >\n \u27F2\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <h4 class=\"et-query-devtools-section\">Committed value</h4>\n <et-query-devtools-json [value]=\"form.value()\" />\n }\n </div>\n } @empty {\n <p class=\"et-query-devtools-empty\">\n No query forms registered. A form created with <code>defineQueryForm()</code> registers itself.\n </p>\n }\n </div>\n\n <et-query-devtools-drawer\n [sel]=\"host.formSelectedQuery()\"\n [container]=\"panes\"\n (dismiss)=\"host.formSelectedQueryId.set(null)\"\n />\n</div>\n" }]
49192
49192
  }] });
49193
49193
 
49194
49194
  /* eslint-disable @typescript-eslint/naming-convention -- the `__export_*` keys are Insomnia's file format */
@@ -64803,9 +64803,785 @@ const TAB_IMPORTS = [TabGroupComponent, TabComponent, TabLabelDirective];
64803
64803
 
64804
64804
  const TOOLTIP_IMPORTS = [TooltipDirective, TooltipComponent];
64805
64805
 
64806
+ // codes 4600-4699
64807
+ const TREE_ERROR_CODES = {
64808
+ /** An `[etTree]` was rendered without a `[dataSource]`, so it has nothing to show. */
64809
+ MISSING_DATA_SOURCE: 4600,
64810
+ /** A tree part (`etTreeNode`, `etTreeNodeDef`) was used outside an `[etTree]`. */
64811
+ PART_OUTSIDE_TREE: 4601,
64812
+ };
64813
+
64814
+ /** Whether a node can be expanded - false for explicit leaves and `hasChildren: false`. */
64815
+ const canExpand = (node) => node.isLeaf !== true && node.hasChildren !== false;
64816
+ const defaultCompareWith = (a, b) => a === b;
64817
+ /** Value equality between two nodes via the configured comparator. `null` matches only `null`. */
64818
+ const nodesEqual = (options) => {
64819
+ const { a, b, compareWith } = options;
64820
+ if (a === null || b === null) {
64821
+ return a === b;
64822
+ }
64823
+ return compareWith(a.value, b.value);
64824
+ };
64825
+ /** Normalizes a `loadChildren` result (array | Promise | Observable) into an Observable. */
64826
+ const toChildrenObservable = (result) => {
64827
+ if (Array.isArray(result)) {
64828
+ return of(result);
64829
+ }
64830
+ if (isObservable(result)) {
64831
+ return result;
64832
+ }
64833
+ return from(result);
64834
+ };
64835
+
64836
+ const TREE_SELECTION_MODES = {
64837
+ /** Rows never select. Expansion, focus and `activated` still work - a pure navigation tree. */
64838
+ NONE: 'none',
64839
+ /** At most one selected node; `value` is `T | null`. */
64840
+ SINGLE: 'single',
64841
+ /** Any number of selected nodes; `value` is `T[]`, and activating a row toggles it. */
64842
+ MULTIPLE: 'multiple',
64843
+ };
64844
+ const TREE_LEVEL_STATUSES = {
64845
+ /** Not requested yet - a collapsed branch's children start here. */
64846
+ IDLE: 'idle',
64847
+ LOADING: 'loading',
64848
+ LOADED: 'loaded',
64849
+ ERROR: 'error',
64850
+ };
64851
+
64852
+ /**
64853
+ * An ARIA tree over a lazily loaded hierarchy: owns the expansion state, the selection, roving focus
64854
+ * and the keyboard model, and flattens the whole thing into the list of rows a template renders
64855
+ * ({@link visibleRows}). No visual opinion - bring your own template, or use the default `et-tree`.
64856
+ *
64857
+ * Children are loaded per branch through the {@link TreeDataSource}, the first time that branch is
64858
+ * expanded, so a deep or remote hierarchy costs only what the user actually opens. Every node is
64859
+ * identified by its `value`, which therefore has to be unique across the tree.
64860
+ *
64861
+ * Rows are rendered flat rather than nested, which is why each one carries `level`, `posInSet` and
64862
+ * `setSize` - a flat DOM has to state those for assistive tech.
64863
+ *
64864
+ * @example
64865
+ * <div [dataSource]="source" [(value)]="selected" etTree #tree="etTree">
64866
+ * @for (row of tree.visibleRows(); track row.node) {
64867
+ * <div [row]="row" etTreeNode>{{ row.node.label }}</div>
64868
+ * }
64869
+ * </div>
64870
+ */
64871
+ class TreeDirective {
64872
+ constructor() {
64873
+ this.hostElement = injectHostElement();
64874
+ /** The hierarchical source the tree renders. Required. */
64875
+ this.dataSource = input(null, /* @ts-ignore */
64876
+ ...(ngDevMode ? [{ debugName: "dataSource" }] : /* istanbul ignore next */ []));
64877
+ /** Value equality - override when node values are objects. */
64878
+ this.compareWith = input(defaultCompareWith, /* @ts-ignore */
64879
+ ...(ngDevMode ? [{ debugName: "compareWith" }] : /* istanbul ignore next */ []));
64880
+ /** Whether rows select, and how many at a time. @default 'single' */
64881
+ this.selectionMode = input(TREE_SELECTION_MODES.SINGLE, /* @ts-ignore */
64882
+ ...(ngDevMode ? [{ debugName: "selectionMode" }] : /* istanbul ignore next */ []));
64883
+ /** The selected value: `T | null` in single mode, `T[]` in multiple. Two-way bindable. */
64884
+ this.value = model(null, /* @ts-ignore */
64885
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
64886
+ /**
64887
+ * The values of the expanded branches. Two-way bindable, and the tree's only expansion state - nothing
64888
+ * is inferred from the data, so an expansion set can be persisted and restored as-is.
64889
+ *
64890
+ * Values that match no node are ignored rather than pruned, so a set restored before its branch has
64891
+ * loaded still opens once the node arrives.
64892
+ */
64893
+ this.expandedValues = model([], /* @ts-ignore */
64894
+ ...(ngDevMode ? [{ debugName: "expandedValues" }] : /* istanbul ignore next */ []));
64895
+ /** Refuse to expand, select or move focus. Rows are marked `aria-disabled` and keep their DOM order. */
64896
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
64897
+ /**
64898
+ * Turns a `loadChildren` failure into the message shown on the branch that failed. The default shows an
64899
+ * `Error`'s `message` verbatim and a generic fallback for anything else.
64900
+ */
64901
+ this.toErrorMessage = input((error) => (error instanceof Error && error.message) || 'Something went wrong', /* @ts-ignore */
64902
+ ...(ngDevMode ? [{ debugName: "toErrorMessage" }] : /* istanbul ignore next */ []));
64903
+ /** A row was activated - clicked, or Enter'd. Fires for branches and leaves alike. */
64904
+ this.nodeActivate = output();
64905
+ this.levels = signal([], /* @ts-ignore */
64906
+ ...(ngDevMode ? [{ debugName: "levels" }] : /* istanbul ignore next */ []));
64907
+ this.registeredNodes = signal([], /* @ts-ignore */
64908
+ ...(ngDevMode ? [{ debugName: "registeredNodes" }] : /* istanbul ignore next */ []));
64909
+ /** @internal The `etTreeNodeDef` row template, when one is projected. */
64910
+ this.nodeTemplate = signal(null, /* @ts-ignore */
64911
+ ...(ngDevMode ? [{ debugName: "nodeTemplate" }] : /* istanbul ignore next */ []));
64912
+ /**
64913
+ * The node holding roving focus, once the user has moved it. A row writes it on `focusin`, so the tab
64914
+ * stop stays where the user left it and Shift+Tab re-enters there.
64915
+ */
64916
+ this.focusedNode = signal(null, /* @ts-ignore */
64917
+ ...(ngDevMode ? [{ debugName: "focusedNode" }] : /* istanbul ignore next */ []));
64918
+ /**
64919
+ * The flattened tree: every row that is currently visible, in DOM order - the root's children plus
64920
+ * the loaded children of every expanded branch below them.
64921
+ */
64922
+ this.visibleRows = computed(() => {
64923
+ const compareWith = this.compareWith();
64924
+ const levels = this.levels();
64925
+ const expanded = this.expandedValues();
64926
+ const rows = [];
64927
+ const levelOf = (parent) => levels.find((level) => nodesEqual({ a: level.parent, b: parent, compareWith })) ?? null;
64928
+ // `seen` guards against a malformed source whose branch contains its own value, which would
64929
+ // otherwise recurse until the stack gives out
64930
+ const walk = (options) => {
64931
+ const { parent, level, path, seen } = options;
64932
+ const entry = levelOf(parent);
64933
+ if (!entry)
64934
+ return;
64935
+ entry.nodes.forEach((node, index) => {
64936
+ const isExpandable = canExpand(node);
64937
+ const children = isExpandable ? levelOf(node) : null;
64938
+ const isExpanded = isExpandable && expanded.some((value) => compareWith(value, node.value));
64939
+ const nodePath = [...path, node];
64940
+ rows.push({
64941
+ node,
64942
+ level,
64943
+ path: nodePath,
64944
+ isExpandable,
64945
+ isExpanded,
64946
+ isDisabled: node.disabled === true,
64947
+ childrenStatus: children?.status ?? TREE_LEVEL_STATUSES.IDLE,
64948
+ childrenError: children?.error ?? null,
64949
+ posInSet: index + 1,
64950
+ setSize: entry.nodes.length,
64951
+ });
64952
+ if (isExpanded && !seen.some((value) => compareWith(value, node.value))) {
64953
+ walk({ parent: node, level: level + 1, path: nodePath, seen: [...seen, node.value] });
64954
+ }
64955
+ });
64956
+ };
64957
+ walk({ parent: null, level: 1, path: [], seen: [] });
64958
+ return rows;
64959
+ }, /* @ts-ignore */
64960
+ ...(ngDevMode ? [{ debugName: "visibleRows" }] : /* istanbul ignore next */ []));
64961
+ /** Load state of the root level - what a tree shows a loading or empty state for. */
64962
+ this.rootStatus = computed(() => this.levelOf(null)?.status ?? TREE_LEVEL_STATUSES.IDLE, /* @ts-ignore */
64963
+ ...(ngDevMode ? [{ debugName: "rootStatus" }] : /* istanbul ignore next */ []));
64964
+ /** The message from a failed root load, or `null`. */
64965
+ this.rootError = computed(() => this.levelOf(null)?.error ?? null, /* @ts-ignore */
64966
+ ...(ngDevMode ? [{ debugName: "rootError" }] : /* istanbul ignore next */ []));
64967
+ /** The selected values, normalized to an array (empty for no selection). */
64968
+ this.values = computed(() => {
64969
+ const value = this.value();
64970
+ if (Array.isArray(value)) {
64971
+ return value;
64972
+ }
64973
+ return value === null || value === undefined ? [] : [value];
64974
+ }, /* @ts-ignore */
64975
+ ...(ngDevMode ? [{ debugName: "values" }] : /* istanbul ignore next */ []));
64976
+ /**
64977
+ * The row that owns the tree's single tab stop: the focused node while it is still visible, else the
64978
+ * first row. A tree is one tab stop with the arrow keys moving inside it, so exactly one row is
64979
+ * tabbable at any time.
64980
+ */
64981
+ this.activeNode = computed(() => {
64982
+ const rows = this.visibleRows();
64983
+ const focused = this.focusedNode();
64984
+ const compareWith = this.compareWith();
64985
+ if (focused && rows.some((row) => compareWith(row.node.value, focused.value))) {
64986
+ return focused;
64987
+ }
64988
+ return rows[0]?.node ?? null;
64989
+ }, /* @ts-ignore */
64990
+ ...(ngDevMode ? [{ debugName: "activeNode" }] : /* istanbul ignore next */ []));
64991
+ // type-to-focus by label across the visible rows - a deep tree cannot be navigated by name otherwise
64992
+ this.typeahead = createTypeahead();
64993
+ // Every branch that needs loading right now: the root, plus each expanded branch whose children
64994
+ // have not been requested yet. Expansion is therefore the only trigger a load ever needs - an
64995
+ // `expandedValues` set that was restored from storage loads its branches exactly like a click does.
64996
+ const idleParents = computed(() => {
64997
+ if (!this.dataSource())
64998
+ return [];
64999
+ const parents = [];
65000
+ if (this.rootStatus() === TREE_LEVEL_STATUSES.IDLE) {
65001
+ parents.push(null);
65002
+ }
65003
+ for (const row of this.visibleRows()) {
65004
+ if (row.isExpanded && row.childrenStatus === TREE_LEVEL_STATUSES.IDLE) {
65005
+ parents.push(row.node);
65006
+ }
65007
+ }
65008
+ return parents;
65009
+ }, /* @ts-ignore */
65010
+ ...(ngDevMode ? [{ debugName: "idleParents" }] : /* istanbul ignore next */ []));
65011
+ // created here rather than inside the switchMap below, which is not an injection context
65012
+ const idleParents$ = toObservable(idleParents);
65013
+ toObservable(this.dataSource)
65014
+ .pipe(switchMap((source) => {
65015
+ // a swapped source describes a different tree - drop what was learned from the old one, and
65016
+ // let switchMap cancel its in-flight loads so a late response cannot write into the new tree
65017
+ untracked(() => {
65018
+ this.levels.set([]);
65019
+ this.focusedNode.set(null);
65020
+ });
65021
+ if (!source)
65022
+ return EMPTY;
65023
+ // mergeMap, not switchMap: sibling branches expanded in quick succession all load
65024
+ return idleParents$.pipe(mergeMap((parents) => merge(...parents.map((parent) => this.load(source, parent)))));
65025
+ }), takeUntilDestroyed())
65026
+ .subscribe();
65027
+ inject(DestroyRef).onDestroy(() => this.typeahead.destroy());
65028
+ if (ngDevMode) {
65029
+ afterNextRender(() => {
65030
+ if (!this.dataSource()) {
65031
+ throw new RuntimeError(TREE_ERROR_CODES.MISSING_DATA_SOURCE, '[TreeDirective] A [dataSource] is required - without one the tree has nothing to load. ' +
65032
+ 'Bind an object with a loadChildren(parent) method.', { element: this.hostElement });
65033
+ }
65034
+ });
65035
+ }
65036
+ }
65037
+ /** Whether a node is expanded. */
65038
+ isExpanded(node) {
65039
+ const compareWith = this.compareWith();
65040
+ return this.expandedValues().some((value) => compareWith(value, node.value));
65041
+ }
65042
+ /** Whether a node is selected. */
65043
+ isSelected(node) {
65044
+ const compareWith = this.compareWith();
65045
+ return this.values().some((value) => compareWith(value, node.value));
65046
+ }
65047
+ /** Expand a branch, loading its children if this is the first time. No-op on leaves and disabled nodes. */
65048
+ expand(node) {
65049
+ if (this.disabled() || node.disabled || !canExpand(node) || this.isExpanded(node))
65050
+ return;
65051
+ this.expandedValues.update((values) => [...values, node.value]);
65052
+ }
65053
+ /** Collapse a branch. Its children stay loaded, so re-expanding it is instant. */
65054
+ collapse(node) {
65055
+ if (this.disabled())
65056
+ return;
65057
+ const compareWith = this.compareWith();
65058
+ this.expandedValues.update((values) => values.filter((value) => !compareWith(value, node.value)));
65059
+ }
65060
+ toggleExpansion(node) {
65061
+ if (this.isExpanded(node)) {
65062
+ this.collapse(node);
65063
+ }
65064
+ else {
65065
+ this.expand(node);
65066
+ }
65067
+ }
65068
+ /**
65069
+ * Expand every branch loaded so far. On a lazy source that is one level deeper than what is currently
65070
+ * visible: call it again once the newly loaded branches arrive to keep going.
65071
+ */
65072
+ expandAll() {
65073
+ if (this.disabled())
65074
+ return;
65075
+ const compareWith = this.compareWith();
65076
+ const expandable = this.levels()
65077
+ .flatMap((level) => level.nodes)
65078
+ .filter((node) => canExpand(node) && !node.disabled);
65079
+ this.expandedValues.update((values) => [
65080
+ ...values,
65081
+ ...expandable.filter((node) => !values.some((value) => compareWith(value, node.value))).map((node) => node.value),
65082
+ ]);
65083
+ }
65084
+ collapseAll() {
65085
+ if (this.disabled())
65086
+ return;
65087
+ this.expandedValues.set([]);
65088
+ }
65089
+ /** Reload a branch's children - what a failed load is retried with. Pass `null` for the root. */
65090
+ retry(parent) {
65091
+ this.setLevel(parent, { status: TREE_LEVEL_STATUSES.IDLE, nodes: [], error: null });
65092
+ }
65093
+ /** Select a node. No-op while `selectionMode` is `'none'`. */
65094
+ select(node) {
65095
+ if (this.disabled() || node.disabled || this.selectionMode() === TREE_SELECTION_MODES.NONE)
65096
+ return;
65097
+ if (this.selectionMode() === TREE_SELECTION_MODES.MULTIPLE) {
65098
+ if (this.isSelected(node))
65099
+ return;
65100
+ this.value.set([...this.values(), node.value]);
65101
+ return;
65102
+ }
65103
+ this.value.set(node.value);
65104
+ }
65105
+ deselect(node) {
65106
+ if (this.disabled() || !this.isSelected(node))
65107
+ return;
65108
+ const compareWith = this.compareWith();
65109
+ if (this.selectionMode() === TREE_SELECTION_MODES.MULTIPLE) {
65110
+ this.value.set(this.values().filter((value) => !compareWith(value, node.value)));
65111
+ return;
65112
+ }
65113
+ this.value.set(null);
65114
+ }
65115
+ /** Multiple mode: add the node to the selection, or remove it when already selected. */
65116
+ toggleSelection(node) {
65117
+ if (this.isSelected(node)) {
65118
+ this.deselect(node);
65119
+ }
65120
+ else {
65121
+ this.select(node);
65122
+ }
65123
+ }
65124
+ clearSelection() {
65125
+ this.value.set(this.selectionMode() === TREE_SELECTION_MODES.MULTIPLE ? [] : null);
65126
+ }
65127
+ /**
65128
+ * What a click or Enter on a row does: move roving focus there, retry a branch whose children failed to
65129
+ * load, otherwise expand/collapse it, and apply the selection for the current mode. Always emits
65130
+ * {@link nodeActivate}, so a leaf can be "opened" without being selected.
65131
+ */
65132
+ activate(node) {
65133
+ if (this.disabled() || node.disabled)
65134
+ return;
65135
+ this.focusNode(node);
65136
+ const row = this.rowOf(node);
65137
+ if (row?.childrenError) {
65138
+ this.retry(node);
65139
+ }
65140
+ else if (canExpand(node)) {
65141
+ this.toggleExpansion(node);
65142
+ }
65143
+ if (this.selectionMode() === TREE_SELECTION_MODES.MULTIPLE) {
65144
+ this.toggleSelection(node);
65145
+ }
65146
+ else {
65147
+ this.select(node);
65148
+ }
65149
+ this.nodeActivate.emit(node);
65150
+ }
65151
+ /** Move roving focus - and DOM focus, when the row is rendered - to a node. */
65152
+ focusNode(node) {
65153
+ this.focusedNode.set(node);
65154
+ const compareWith = this.compareWith();
65155
+ const element = this.registeredNodes().find((registered) => compareWith(registered.row().node.value, node.value))
65156
+ ?.elementRef.nativeElement;
65157
+ if (!element)
65158
+ return;
65159
+ element.focus({ preventScroll: true });
65160
+ element.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });
65161
+ }
65162
+ /** Move focus to the tree's first row - where a fresh Tab lands. */
65163
+ focusFirst() {
65164
+ const first = this.visibleRows()[0]?.node;
65165
+ if (first) {
65166
+ this.focusNode(first);
65167
+ }
65168
+ }
65169
+ /** @internal Called from a node's constructor; the registration is undone when the row is destroyed. */
65170
+ registerNode(node) {
65171
+ this.registeredNodes.update((nodes) => [...nodes, node]);
65172
+ inject(DestroyRef).onDestroy(() => this.registeredNodes.update((nodes) => nodes.filter((candidate) => candidate !== node)));
65173
+ }
65174
+ /** @internal Routes a row's keydown through the tree navigation model. */
65175
+ handleNodeKeydown(event, node) {
65176
+ if (event.ctrlKey || event.metaKey || event.altKey || this.disabled())
65177
+ return;
65178
+ const rows = this.visibleRows();
65179
+ const compareWith = this.compareWith();
65180
+ const index = rows.findIndex((row) => compareWith(row.node.value, node.value));
65181
+ const row = rows[index];
65182
+ if (!row)
65183
+ return;
65184
+ // ArrowRight/ArrowLeft expand and collapse, which means they follow the writing direction
65185
+ const rtl = getComputedStyle(this.hostElement).direction === 'rtl';
65186
+ const expandKey = rtl ? 'ArrowLeft' : 'ArrowRight';
65187
+ const collapseKey = rtl ? 'ArrowRight' : 'ArrowLeft';
65188
+ switch (event.key) {
65189
+ case 'ArrowDown':
65190
+ event.preventDefault();
65191
+ this.focusRow(rows, index + 1);
65192
+ return;
65193
+ case 'ArrowUp':
65194
+ event.preventDefault();
65195
+ this.focusRow(rows, index - 1);
65196
+ return;
65197
+ case 'Home':
65198
+ event.preventDefault();
65199
+ this.focusRow(rows, 0);
65200
+ return;
65201
+ case 'End':
65202
+ event.preventDefault();
65203
+ this.focusRow(rows, rows.length - 1);
65204
+ return;
65205
+ case expandKey:
65206
+ event.preventDefault();
65207
+ if (row.isExpandable && !row.isExpanded) {
65208
+ this.expand(node);
65209
+ }
65210
+ else if (row.isExpanded && rows[index + 1]?.level === row.level + 1) {
65211
+ this.focusRow(rows, index + 1);
65212
+ }
65213
+ return;
65214
+ case collapseKey:
65215
+ event.preventDefault();
65216
+ if (row.isExpanded) {
65217
+ this.collapse(node);
65218
+ return;
65219
+ }
65220
+ // to the parent - the closest row above that sits one level up
65221
+ for (let candidate = index - 1; candidate >= 0; candidate--) {
65222
+ if (rows[candidate]?.level === row.level - 1) {
65223
+ this.focusRow(rows, candidate);
65224
+ return;
65225
+ }
65226
+ }
65227
+ return;
65228
+ case 'Enter':
65229
+ event.preventDefault();
65230
+ this.activate(node);
65231
+ return;
65232
+ case ' ':
65233
+ if (this.selectionMode() === TREE_SELECTION_MODES.NONE)
65234
+ return;
65235
+ event.preventDefault();
65236
+ if (this.selectionMode() === TREE_SELECTION_MODES.MULTIPLE) {
65237
+ this.toggleSelection(node);
65238
+ }
65239
+ else {
65240
+ this.select(node);
65241
+ }
65242
+ return;
65243
+ case '*':
65244
+ event.preventDefault();
65245
+ this.expandSiblings(rows, row);
65246
+ return;
65247
+ }
65248
+ if (event.key.length !== 1)
65249
+ return;
65250
+ const query = this.typeahead.append(event.key);
65251
+ // start after the focused row and wrap, so repeating a letter walks through the matches
65252
+ const match = rows
65253
+ .slice(index + 1)
65254
+ .concat(rows.slice(0, index + 1))
65255
+ .find((candidate) => !candidate.isDisabled && candidate.node.label.toLowerCase().startsWith(query));
65256
+ if (match) {
65257
+ event.preventDefault();
65258
+ this.focusNode(match.node);
65259
+ }
65260
+ }
65261
+ levelOf(parent) {
65262
+ const compareWith = this.compareWith();
65263
+ return this.levels().find((level) => nodesEqual({ a: level.parent, b: parent, compareWith })) ?? null;
65264
+ }
65265
+ rowOf(node) {
65266
+ const compareWith = this.compareWith();
65267
+ return this.visibleRows().find((row) => compareWith(row.node.value, node.value)) ?? null;
65268
+ }
65269
+ focusRow(rows, index) {
65270
+ const row = rows[Math.max(0, Math.min(rows.length - 1, index))];
65271
+ if (row) {
65272
+ this.focusNode(row.node);
65273
+ }
65274
+ }
65275
+ /** `*` expands every branch at the focused row's level that shares its parent. */
65276
+ expandSiblings(rows, row) {
65277
+ const compareWith = this.compareWith();
65278
+ const parent = row.path[row.path.length - 2] ?? null;
65279
+ for (const candidate of rows) {
65280
+ if (candidate.level === row.level &&
65281
+ nodesEqual({ a: candidate.path[candidate.path.length - 2] ?? null, b: parent, compareWith })) {
65282
+ this.expand(candidate.node);
65283
+ }
65284
+ }
65285
+ }
65286
+ load(source, parent) {
65287
+ // The request was queued from a state that has since changed - the source was swapped, or the
65288
+ // branch collapsed again while `toObservable` was still holding this list. Reading the current
65289
+ // set is what keeps a re-emission from loading the same branch twice.
65290
+ if (!this.isIdle(parent))
65291
+ return EMPTY;
65292
+ this.setLevel(parent, { status: TREE_LEVEL_STATUSES.LOADING, nodes: [], error: null });
65293
+ // defer, so a `loadChildren` that throws on the spot fails the branch like a rejected load
65294
+ // rather than tearing down the whole pipeline
65295
+ return defer(() => toChildrenObservable(source.loadChildren(parent))).pipe(take(1), tap({
65296
+ next: (nodes) => this.setLevel(parent, { status: TREE_LEVEL_STATUSES.LOADED, nodes, error: null }),
65297
+ error: (error) => this.setLevel(parent, {
65298
+ status: TREE_LEVEL_STATUSES.ERROR,
65299
+ nodes: [],
65300
+ error: this.toErrorMessage()(error),
65301
+ }),
65302
+ }), catchError(() => EMPTY));
65303
+ }
65304
+ isIdle(parent) {
65305
+ const level = this.levelOf(parent);
65306
+ if (level !== null && level.status !== TREE_LEVEL_STATUSES.IDLE) {
65307
+ return false;
65308
+ }
65309
+ return parent === null || this.isExpanded(parent);
65310
+ }
65311
+ setLevel(parent, state) {
65312
+ const compareWith = this.compareWith();
65313
+ this.levels.update((levels) => [
65314
+ ...levels.filter((level) => !nodesEqual({ a: level.parent, b: parent, compareWith })),
65315
+ { parent, ...state },
65316
+ ]);
65317
+ }
65318
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
65319
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: TreeDirective, isStandalone: true, selector: "[etTree]", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, expandedValues: { classPropertyName: "expandedValues", publicName: "expandedValues", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, toErrorMessage: { classPropertyName: "toErrorMessage", publicName: "toErrorMessage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", expandedValues: "expandedValuesChange", nodeActivate: "nodeActivate" }, host: { attributes: { "role": "tree" }, properties: { "attr.aria-multiselectable": "selectionMode() === \"multiple\" ? \"true\" : null", "attr.aria-busy": "rootStatus() === \"loading\" ? \"true\" : null", "attr.data-disabled": "disabled() || null" } }, exportAs: ["etTree"], ngImport: i0 }); }
65320
+ }
65321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeDirective, decorators: [{
65322
+ type: Directive,
65323
+ args: [{
65324
+ selector: '[etTree]',
65325
+ exportAs: 'etTree',
65326
+ host: {
65327
+ role: 'tree',
65328
+ '[attr.aria-multiselectable]': 'selectionMode() === "multiple" ? "true" : null',
65329
+ '[attr.aria-busy]': 'rootStatus() === "loading" ? "true" : null',
65330
+ '[attr.data-disabled]': 'disabled() || null',
65331
+ },
65332
+ }]
65333
+ }], ctorParameters: () => [], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: false }] }], compareWith: [{ type: i0.Input, args: [{ isSignal: true, alias: "compareWith", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], expandedValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandedValues", required: false }] }, { type: i0.Output, args: ["expandedValuesChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], toErrorMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "toErrorMessage", required: false }] }], nodeActivate: [{ type: i0.Output, args: ["nodeActivate"] }] } });
65334
+
65335
+ /**
65336
+ * A single row of a tree. Bind the {@link TreeRow} it represents; the directive wires the ARIA tree
65337
+ * semantics (including the position values a flat DOM has to state), the roving tab stop and the
65338
+ * interaction, and mirrors the row's state as `data-*` attributes for styling.
65339
+ *
65340
+ * @example
65341
+ * @for (row of tree.visibleRows(); track row.node) {
65342
+ * <div [row]="row" etTreeNode>{{ row.node.label }}</div>
65343
+ * }
65344
+ */
65345
+ class TreeNodeDirective {
65346
+ constructor() {
65347
+ this.tree = inject(TreeDirective, { optional: true });
65348
+ /** @internal The element the tree moves DOM focus to when roving focus lands on this row. */
65349
+ this.elementRef = inject(ElementRef);
65350
+ /** The row this element renders - one entry of the tree's `visibleRows()`. */
65351
+ this.row = input.required(/* @ts-ignore */
65352
+ ...(ngDevMode ? [{ debugName: "row" }] : /* istanbul ignore next */ []));
65353
+ this.selectionMode = computed(() => this.tree?.selectionMode() ?? 'none', /* @ts-ignore */
65354
+ ...(ngDevMode ? [{ debugName: "selectionMode" }] : /* istanbul ignore next */ []));
65355
+ this.selected = computed(() => this.tree?.isSelected(this.row().node) ?? false, /* @ts-ignore */
65356
+ ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
65357
+ this.disabled = computed(() => this.row().isDisabled || (this.tree?.disabled() ?? false), /* @ts-ignore */
65358
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
65359
+ this.active = computed(() => {
65360
+ const active = this.tree?.activeNode();
65361
+ if (!active || !this.tree)
65362
+ return false;
65363
+ return this.tree.compareWith()(active.value, this.row().node.value);
65364
+ }, /* @ts-ignore */
65365
+ ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
65366
+ this.tree?.registerNode(this);
65367
+ if (ngDevMode) {
65368
+ afterNextRender(() => {
65369
+ if (!this.tree) {
65370
+ throw new RuntimeError(TREE_ERROR_CODES.PART_OUTSIDE_TREE, '[TreeNodeDirective] etTreeNode must be placed inside an [etTree] element (e.g. <et-tree>).', { element: this.elementRef.nativeElement });
65371
+ }
65372
+ });
65373
+ }
65374
+ }
65375
+ handleClick() {
65376
+ this.tree?.activate(this.row().node);
65377
+ }
65378
+ handleKeydown(event) {
65379
+ this.tree?.handleNodeKeydown(event, this.row().node);
65380
+ }
65381
+ handleFocusIn() {
65382
+ this.tree?.focusedNode.set(this.row().node);
65383
+ }
65384
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeNodeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
65385
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: TreeNodeDirective, isStandalone: true, selector: "[etTreeNode]", inputs: { row: { classPropertyName: "row", publicName: "row", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "treeitem" }, listeners: { "click": "handleClick()", "keydown": "handleKeydown($event)", "focusin": "handleFocusIn()" }, properties: { "attr.aria-level": "row().level", "attr.aria-posinset": "row().posInSet", "attr.aria-setsize": "row().setSize", "attr.aria-expanded": "row().isExpandable ? row().isExpanded : null", "attr.aria-selected": "selectionMode() === \"none\" ? null : selected()", "attr.aria-disabled": "disabled() || null", "attr.aria-busy": "row().childrenStatus === \"loading\" ? \"true\" : null", "attr.tabindex": "active() ? 0 : -1", "attr.data-selected": "selected() || null", "attr.data-expanded": "row().isExpanded || null", "attr.data-branch": "row().isExpandable || null", "attr.data-disabled": "disabled() || null", "attr.data-error": "row().childrenError !== null || null" } }, exportAs: ["etTreeNode"], ngImport: i0 }); }
65386
+ }
65387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeNodeDirective, decorators: [{
65388
+ type: Directive,
65389
+ args: [{
65390
+ selector: '[etTreeNode]',
65391
+ exportAs: 'etTreeNode',
65392
+ host: {
65393
+ role: 'treeitem',
65394
+ '[attr.aria-level]': 'row().level',
65395
+ '[attr.aria-posinset]': 'row().posInSet',
65396
+ '[attr.aria-setsize]': 'row().setSize',
65397
+ '[attr.aria-expanded]': 'row().isExpandable ? row().isExpanded : null',
65398
+ '[attr.aria-selected]': 'selectionMode() === "none" ? null : selected()',
65399
+ '[attr.aria-disabled]': 'disabled() || null',
65400
+ '[attr.aria-busy]': 'row().childrenStatus === "loading" ? "true" : null',
65401
+ '[attr.tabindex]': 'active() ? 0 : -1',
65402
+ '[attr.data-selected]': 'selected() || null',
65403
+ '[attr.data-expanded]': 'row().isExpanded || null',
65404
+ '[attr.data-branch]': 'row().isExpandable || null',
65405
+ '[attr.data-disabled]': 'disabled() || null',
65406
+ '[attr.data-error]': 'row().childrenError !== null || null',
65407
+ '(click)': 'handleClick()',
65408
+ '(keydown)': 'handleKeydown($event)',
65409
+ '(focusin)': 'handleFocusIn()',
65410
+ },
65411
+ }]
65412
+ }], ctorParameters: () => [], propDecorators: { row: [{ type: i0.Input, args: [{ isSignal: true, alias: "row", required: true }] }] } });
65413
+
65414
+ /**
65415
+ * Replaces the default tree's plain-text row label with a template, for rows that need markup - an
65416
+ * icon per node type, a badge, a secondary line. The node is the template's implicit value, and its
65417
+ * full {@link TreeRow} is available as `let-row` for the level, expansion and load state.
65418
+ *
65419
+ * @example
65420
+ * <et-tree [dataSource]="files">
65421
+ * <ng-template etTreeNodeDef let-node let-row="row">
65422
+ * <i [etIcon]="row.isExpandable ? 'folder' : 'file'"></i>
65423
+ * {{ node.label }}
65424
+ * </ng-template>
65425
+ * </et-tree>
65426
+ */
65427
+ class TreeNodeDefDirective {
65428
+ constructor() {
65429
+ this.hostElement = injectHostElement();
65430
+ this.tree = inject(TreeDirective, { optional: true });
65431
+ this.templateRef = inject(TemplateRef);
65432
+ this.tree?.nodeTemplate.set(this);
65433
+ inject(DestroyRef).onDestroy(() => {
65434
+ if (this.tree?.nodeTemplate() === this) {
65435
+ this.tree.nodeTemplate.set(null);
65436
+ }
65437
+ });
65438
+ if (ngDevMode) {
65439
+ afterNextRender(() => {
65440
+ if (!this.tree) {
65441
+ throw new RuntimeError(TREE_ERROR_CODES.PART_OUTSIDE_TREE, '[TreeNodeDefDirective] etTreeNodeDef must be placed inside an [etTree] element (e.g. <et-tree>).', { element: this.hostElement });
65442
+ }
65443
+ });
65444
+ }
65445
+ }
65446
+ // static on purpose (the lint ban excepts it): Angular's template type checker requires the
65447
+ // context guard to be static - it types the `let-` bindings of the host ng-template
65448
+ static ngTemplateContextGuard(_directive, _context) {
65449
+ return true;
65450
+ }
65451
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeNodeDefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
65452
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: TreeNodeDefDirective, isStandalone: true, selector: "ng-template[etTreeNodeDef]", exportAs: ["etTreeNodeDef"], ngImport: i0 }); }
65453
+ }
65454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeNodeDefDirective, decorators: [{
65455
+ type: Directive,
65456
+ args: [{
65457
+ selector: 'ng-template[etTreeNodeDef]',
65458
+ exportAs: 'etTreeNodeDef',
65459
+ }]
65460
+ }], ctorParameters: () => [] });
65461
+
65462
+ /** What the slot in front of a tree row shows. */
65463
+ const TREE_MARKERS = {
65464
+ /** Nothing - a leaf, which keeps the slot so its label lines up with its siblings. */
65465
+ NONE: 'none',
65466
+ /** A collapsed or expanded branch; the rotation follows the row's `data-expanded`. */
65467
+ CHEVRON: 'chevron',
65468
+ /** The branch is loading its children. */
65469
+ SPINNER: 'spinner',
65470
+ /** The branch failed to load. */
65471
+ WARNING: 'warning',
65472
+ };
65473
+ /**
65474
+ * The slot in front of a tree row: its chevron, load spinner or failure mark. Its own component so
65475
+ * that it - and not the tree - is what registers the icons it draws. A `provideIcons()` on the tree
65476
+ * would sit above every projected row template in the injector tree and hide the consumer's own icon
65477
+ * registration from it, since an embedded view resolves DI from where it is inserted.
65478
+ */
65479
+ class TreeMarkerComponent {
65480
+ constructor() {
65481
+ this.marker = input(TREE_MARKERS.NONE, /* @ts-ignore */
65482
+ ...(ngDevMode ? [{ debugName: "marker" }] : /* istanbul ignore next */ []));
65483
+ }
65484
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeMarkerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65485
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: TreeMarkerComponent, isStandalone: true, selector: "et-tree-marker", inputs: { marker: { classPropertyName: "marker", publicName: "marker", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, classAttribute: "et-tree-node-marker" }, providers: [provideIcons(CHEVRON_ICON, TRIANGLE_EXCLAMATION_ICON)], ngImport: i0, template: `
65486
+ @switch (marker()) {
65487
+ @case ('spinner') {
65488
+ <et-spinner [diameter]="12" />
65489
+ }
65490
+ @case ('warning') {
65491
+ <i class="et-tree-node-warning" etIcon="et-triangle-exclamation"></i>
65492
+ }
65493
+ @case ('chevron') {
65494
+ <i class="et-tree-node-chevron" etIcon="et-chevron"></i>
65495
+ }
65496
+ }
65497
+ `, isInline: true, dependencies: [{ kind: "directive", type: IconDirective, selector: "[etIcon]", inputs: ["etIcon", "variant", "allowHardcodedColor", "label"] }, { kind: "component", type: SpinnerComponent, selector: "et-spinner", inputs: ["diameter", "strokeWidth", "track", "value", "determinate"] }], encapsulation: i0.ViewEncapsulation.None }); }
65498
+ }
65499
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeMarkerComponent, decorators: [{
65500
+ type: Component,
65501
+ args: [{
65502
+ selector: 'et-tree-marker',
65503
+ template: `
65504
+ @switch (marker()) {
65505
+ @case ('spinner') {
65506
+ <et-spinner [diameter]="12" />
65507
+ }
65508
+ @case ('warning') {
65509
+ <i class="et-tree-node-warning" etIcon="et-triangle-exclamation"></i>
65510
+ }
65511
+ @case ('chevron') {
65512
+ <i class="et-tree-node-chevron" etIcon="et-chevron"></i>
65513
+ }
65514
+ }
65515
+ `,
65516
+ encapsulation: ViewEncapsulation.None,
65517
+ imports: [IconDirective, SpinnerComponent],
65518
+ providers: [provideIcons(CHEVRON_ICON, TRIANGLE_EXCLAMATION_ICON)],
65519
+ host: {
65520
+ class: 'et-tree-node-marker',
65521
+ 'aria-hidden': 'true',
65522
+ },
65523
+ }]
65524
+ }], propDecorators: { marker: [{ type: i0.Input, args: [{ isSignal: true, alias: "marker", required: false }] }] } });
65525
+
65526
+ const markerFor = (row) => {
65527
+ if (row.childrenStatus === 'loading')
65528
+ return TREE_MARKERS.SPINNER;
65529
+ if (row.childrenError !== null)
65530
+ return TREE_MARKERS.WARNING;
65531
+ return row.isExpandable ? TREE_MARKERS.CHEVRON : TREE_MARKERS.NONE;
65532
+ };
65533
+ /**
65534
+ * The default tree: an indented, themed, keyboard-navigable rendering of a hierarchy, driven by the
65535
+ * headless {@link TreeDirective}. Rows show their label; project an `<ng-template etTreeNodeDef>` to
65536
+ * render them with markup instead.
65537
+ *
65538
+ * Branches load their children the first time they expand, so binding a lazy `[dataSource]` needs no
65539
+ * extra wiring - a branch that is still loading shows a spinner in place of its chevron, and one whose
65540
+ * load failed shows the message and reloads when selected again.
65541
+ *
65542
+ * @example
65543
+ * <et-tree [dataSource]="categories" [(value)]="categoryId" [(expandedValues)]="openBranches" />
65544
+ */
65545
+ class TreeComponent {
65546
+ constructor() {
65547
+ this.tree = inject(TreeDirective);
65548
+ /** Shown while the root level loads. */
65549
+ this.loadingLabel = input('Loading…', /* @ts-ignore */
65550
+ ...(ngDevMode ? [{ debugName: "loadingLabel" }] : /* istanbul ignore next */ []));
65551
+ /** Shown when the root level loaded no nodes at all. */
65552
+ this.emptyLabel = input('Nothing to show', /* @ts-ignore */
65553
+ ...(ngDevMode ? [{ debugName: "emptyLabel" }] : /* istanbul ignore next */ []));
65554
+ /** Appended to a failed level's message, to say that selecting the row loads it again. */
65555
+ this.retryLabel = input('select to retry', /* @ts-ignore */
65556
+ ...(ngDevMode ? [{ debugName: "retryLabel" }] : /* istanbul ignore next */ []));
65557
+ /**
65558
+ * The rows plus their marker and template context, built together so each row's context object
65559
+ * survives change detection instead of being rebuilt on every pass.
65560
+ */
65561
+ this.rows = computed(() => this.tree.visibleRows().map((row) => ({ row, marker: markerFor(row), context: { $implicit: row.node, row } })), /* @ts-ignore */
65562
+ ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
65563
+ }
65564
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65565
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: TreeComponent, isStandalone: true, selector: "et-tree", inputs: { loadingLabel: { classPropertyName: "loadingLabel", publicName: "loadingLabel", isSignal: true, isRequired: false, transformFunction: null }, emptyLabel: { classPropertyName: "emptyLabel", publicName: "emptyLabel", isSignal: true, isRequired: false, transformFunction: null }, retryLabel: { classPropertyName: "retryLabel", publicName: "retryLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "et-tree" }, hostDirectives: [{ directive: TreeDirective, inputs: ["dataSource", "dataSource", "compareWith", "compareWith", "selectionMode", "selectionMode", "value", "value", "expandedValues", "expandedValues", "disabled", "disabled", "toErrorMessage", "toErrorMessage"], outputs: ["valueChange", "valueChange", "expandedValuesChange", "expandedValuesChange", "nodeActivate", "nodeActivate"] }], ngImport: i0, template: "@for (entry of rows(); track entry.row.node) {\n <div [row]=\"entry.row\" [style.--_et-tree-node-depth]=\"entry.row.level - 1\" class=\"et-tree-node\" etTreeNode>\n <et-tree-marker [marker]=\"entry.marker\" />\n\n <span class=\"et-tree-node-label\">\n @if (tree.nodeTemplate(); as nodeTemplate) {\n <ng-container [ngTemplateOutlet]=\"nodeTemplate.templateRef\" [ngTemplateOutletContext]=\"entry.context\" />\n } @else {\n {{ entry.row.node.label }}\n }\n </span>\n\n @if (entry.row.childrenError; as error) {\n <span class=\"et-tree-node-error\">{{ error }} \u00B7 {{ retryLabel() }}</span>\n }\n </div>\n}\n\n<!-- The status lines are `treeitem`s rather than plain text: everything inside a `role=\"tree\"` has to be\n one. The error line is also the retry control - selecting it reloads, the same way activating a\n branch whose children failed does. -->\n@if (tree.rootStatus() === 'loading') {\n <div class=\"et-tree-status\" aria-disabled=\"true\" aria-level=\"1\" aria-selected=\"false\" role=\"treeitem\">\n <et-tree-marker marker=\"spinner\" />\n {{ loadingLabel() }}\n </div>\n} @else if (tree.rootError(); as error) {\n <div\n (click)=\"tree.retry(null)\"\n (keydown.enter)=\"tree.retry(null)\"\n class=\"et-tree-status et-tree-status--error\"\n aria-level=\"1\"\n aria-selected=\"false\"\n role=\"treeitem\"\n tabindex=\"0\"\n >\n <et-tree-marker marker=\"warning\" />\n {{ error }} \u00B7 {{ retryLabel() }}\n </div>\n} @else if (!rows().length) {\n <div class=\"et-tree-status\" aria-disabled=\"true\" aria-level=\"1\" aria-selected=\"false\" role=\"treeitem\">\n {{ emptyLabel() }}\n </div>\n}\n", styles: ["@layer components{@property --et-tree-indent{syntax: \"<length>\"; inherits: true; initial-value: 18px;}@property --et-tree-node-padding-block{syntax: \"<length>\"; inherits: true; initial-value: 5px;}@property --et-tree-node-padding-inline{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-tree-node-gap{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-tree-node-radius{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-tree-marker-size{syntax: \"<length>\"; inherits: true; initial-value: 12px;}@property --et-tree-duration{syntax: \"<time>\"; inherits: true; initial-value: .15s;}@property --_et-tree-node-depth{syntax: \"<number>\"; inherits: false; initial-value: 0;}.et-tree{display:block;color:var(--et-surface-color-solid, CanvasText)}.et-tree-node,.et-tree-status{display:flex;align-items:center;gap:var(--et-tree-node-gap);padding-block:var(--et-tree-node-padding-block);padding-inline:calc(var(--et-tree-node-padding-inline) + var(--_et-tree-node-depth) * var(--et-tree-indent)) var(--et-tree-node-padding-inline);border-radius:var(--et-tree-node-radius);box-sizing:border-box}.et-tree-node-marker{display:flex;flex:none;align-items:center;justify-content:center;inline-size:var(--et-tree-marker-size);block-size:var(--et-tree-marker-size);color:var(--et-surface-color-muted-solid, GrayText)}.et-tree-node-marker .et-tree-node-chevron{inline-size:100%;block-size:100%;rotate:90deg;transition:rotate var(--et-tree-duration) cubic-bezier(.25,0,.1,1)}.et-tree-node{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--et-tree-duration) ease}.et-tree-node .et-tree-node-label{flex:1;min-inline-size:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.et-tree-node .et-tree-node-error{flex:none;color:var(--et-tree-error-color, var(--et-surface-color-muted-solid, GrayText));font-size:.875em}.et-tree-node:where([data-expanded]) .et-tree-node-chevron{rotate:180deg}.et-tree-node:dir(rtl) .et-tree-node-chevron{rotate:-90deg}.et-tree-node:dir(rtl):where([data-expanded]) .et-tree-node-chevron{rotate:180deg}.et-tree-node:where([data-error]) .et-tree-node-marker{color:var(--et-tree-error-color, var(--et-surface-color-muted-solid, GrayText))}.et-tree-node:hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, gray) 7%,transparent)}.et-tree-node:active{background:color-mix(in srgb,var(--et-surface-interaction-solid, gray) 14%,transparent)}.et-tree-node:focus-visible{outline:2px solid var(--et-theme-color-primary-solid, currentColor);outline-offset:-2px}.et-tree-node:where([data-selected]){background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 16%,transparent);color:var(--et-theme-color-ink-solid, inherit)}.et-tree-node:where([data-selected]):hover{background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 24%,transparent)}.et-tree-node:where([data-selected]):active{background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 32%,transparent)}.et-tree-node:where([aria-disabled]){color:var(--et-surface-color-muted-solid, GrayText);cursor:default}.et-tree-node:where([aria-disabled]):hover,.et-tree-node:where([aria-disabled]):active{background:transparent}.et-tree:where([aria-multiselectable]) .et-tree-node:after{content:\"\";flex:none;inline-size:4px;block-size:8px;margin-inline:3px;border:solid var(--et-theme-color-primary-solid, currentColor);border-width:0 2px 2px 0;rotate:45deg;opacity:0;transition:opacity var(--et-tree-duration) ease}.et-tree:where([aria-multiselectable]) .et-tree-node:where([data-selected]){background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 8%,transparent);color:inherit}.et-tree:where([aria-multiselectable]) .et-tree-node:where([data-selected]):after{opacity:1}.et-tree:where([aria-multiselectable]) .et-tree-node:where([data-selected]):hover{background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 14%,transparent)}.et-tree:where([aria-multiselectable]) .et-tree-node:where([data-selected]):active{background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 20%,transparent)}.et-tree-status{color:var(--et-surface-color-muted-solid, GrayText)}.et-tree-status:where(.et-tree-status--error){color:var(--et-tree-error-color, var(--et-surface-color-muted-solid, GrayText));cursor:pointer}.et-tree-status:focus-visible{outline:2px solid var(--et-theme-color-primary-solid, currentColor);outline-offset:-2px}@media(prefers-reduced-motion:reduce){.et-tree-node,.et-tree-node:after,.et-tree-node .et-tree-node-chevron{transition:none}}}\n"], dependencies: [{ kind: "directive", type: TreeNodeDirective, selector: "[etTreeNode]", inputs: ["row"], exportAs: ["etTreeNode"] }, { kind: "component", type: TreeMarkerComponent, selector: "et-tree-marker", inputs: ["marker"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
65566
+ }
65567
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeComponent, decorators: [{
65568
+ type: Component,
65569
+ args: [{ selector: 'et-tree', encapsulation: ViewEncapsulation.None, imports: [TreeNodeDirective, TreeMarkerComponent, NgTemplateOutlet], hostDirectives: [
65570
+ {
65571
+ directive: TreeDirective,
65572
+ inputs: ['dataSource', 'compareWith', 'selectionMode', 'value', 'expandedValues', 'disabled', 'toErrorMessage'],
65573
+ outputs: ['valueChange', 'expandedValuesChange', 'nodeActivate'],
65574
+ },
65575
+ ], host: {
65576
+ class: 'et-tree',
65577
+ }, template: "@for (entry of rows(); track entry.row.node) {\n <div [row]=\"entry.row\" [style.--_et-tree-node-depth]=\"entry.row.level - 1\" class=\"et-tree-node\" etTreeNode>\n <et-tree-marker [marker]=\"entry.marker\" />\n\n <span class=\"et-tree-node-label\">\n @if (tree.nodeTemplate(); as nodeTemplate) {\n <ng-container [ngTemplateOutlet]=\"nodeTemplate.templateRef\" [ngTemplateOutletContext]=\"entry.context\" />\n } @else {\n {{ entry.row.node.label }}\n }\n </span>\n\n @if (entry.row.childrenError; as error) {\n <span class=\"et-tree-node-error\">{{ error }} \u00B7 {{ retryLabel() }}</span>\n }\n </div>\n}\n\n<!-- The status lines are `treeitem`s rather than plain text: everything inside a `role=\"tree\"` has to be\n one. The error line is also the retry control - selecting it reloads, the same way activating a\n branch whose children failed does. -->\n@if (tree.rootStatus() === 'loading') {\n <div class=\"et-tree-status\" aria-disabled=\"true\" aria-level=\"1\" aria-selected=\"false\" role=\"treeitem\">\n <et-tree-marker marker=\"spinner\" />\n {{ loadingLabel() }}\n </div>\n} @else if (tree.rootError(); as error) {\n <div\n (click)=\"tree.retry(null)\"\n (keydown.enter)=\"tree.retry(null)\"\n class=\"et-tree-status et-tree-status--error\"\n aria-level=\"1\"\n aria-selected=\"false\"\n role=\"treeitem\"\n tabindex=\"0\"\n >\n <et-tree-marker marker=\"warning\" />\n {{ error }} \u00B7 {{ retryLabel() }}\n </div>\n} @else if (!rows().length) {\n <div class=\"et-tree-status\" aria-disabled=\"true\" aria-level=\"1\" aria-selected=\"false\" role=\"treeitem\">\n {{ emptyLabel() }}\n </div>\n}\n", styles: ["@layer components{@property --et-tree-indent{syntax: \"<length>\"; inherits: true; initial-value: 18px;}@property --et-tree-node-padding-block{syntax: \"<length>\"; inherits: true; initial-value: 5px;}@property --et-tree-node-padding-inline{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-tree-node-gap{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-tree-node-radius{syntax: \"<length>\"; inherits: true; initial-value: 6px;}@property --et-tree-marker-size{syntax: \"<length>\"; inherits: true; initial-value: 12px;}@property --et-tree-duration{syntax: \"<time>\"; inherits: true; initial-value: .15s;}@property --_et-tree-node-depth{syntax: \"<number>\"; inherits: false; initial-value: 0;}.et-tree{display:block;color:var(--et-surface-color-solid, CanvasText)}.et-tree-node,.et-tree-status{display:flex;align-items:center;gap:var(--et-tree-node-gap);padding-block:var(--et-tree-node-padding-block);padding-inline:calc(var(--et-tree-node-padding-inline) + var(--_et-tree-node-depth) * var(--et-tree-indent)) var(--et-tree-node-padding-inline);border-radius:var(--et-tree-node-radius);box-sizing:border-box}.et-tree-node-marker{display:flex;flex:none;align-items:center;justify-content:center;inline-size:var(--et-tree-marker-size);block-size:var(--et-tree-marker-size);color:var(--et-surface-color-muted-solid, GrayText)}.et-tree-node-marker .et-tree-node-chevron{inline-size:100%;block-size:100%;rotate:90deg;transition:rotate var(--et-tree-duration) cubic-bezier(.25,0,.1,1)}.et-tree-node{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--et-tree-duration) ease}.et-tree-node .et-tree-node-label{flex:1;min-inline-size:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.et-tree-node .et-tree-node-error{flex:none;color:var(--et-tree-error-color, var(--et-surface-color-muted-solid, GrayText));font-size:.875em}.et-tree-node:where([data-expanded]) .et-tree-node-chevron{rotate:180deg}.et-tree-node:dir(rtl) .et-tree-node-chevron{rotate:-90deg}.et-tree-node:dir(rtl):where([data-expanded]) .et-tree-node-chevron{rotate:180deg}.et-tree-node:where([data-error]) .et-tree-node-marker{color:var(--et-tree-error-color, var(--et-surface-color-muted-solid, GrayText))}.et-tree-node:hover{background:color-mix(in srgb,var(--et-surface-interaction-solid, gray) 7%,transparent)}.et-tree-node:active{background:color-mix(in srgb,var(--et-surface-interaction-solid, gray) 14%,transparent)}.et-tree-node:focus-visible{outline:2px solid var(--et-theme-color-primary-solid, currentColor);outline-offset:-2px}.et-tree-node:where([data-selected]){background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 16%,transparent);color:var(--et-theme-color-ink-solid, inherit)}.et-tree-node:where([data-selected]):hover{background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 24%,transparent)}.et-tree-node:where([data-selected]):active{background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 32%,transparent)}.et-tree-node:where([aria-disabled]){color:var(--et-surface-color-muted-solid, GrayText);cursor:default}.et-tree-node:where([aria-disabled]):hover,.et-tree-node:where([aria-disabled]):active{background:transparent}.et-tree:where([aria-multiselectable]) .et-tree-node:after{content:\"\";flex:none;inline-size:4px;block-size:8px;margin-inline:3px;border:solid var(--et-theme-color-primary-solid, currentColor);border-width:0 2px 2px 0;rotate:45deg;opacity:0;transition:opacity var(--et-tree-duration) ease}.et-tree:where([aria-multiselectable]) .et-tree-node:where([data-selected]){background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 8%,transparent);color:inherit}.et-tree:where([aria-multiselectable]) .et-tree-node:where([data-selected]):after{opacity:1}.et-tree:where([aria-multiselectable]) .et-tree-node:where([data-selected]):hover{background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 14%,transparent)}.et-tree:where([aria-multiselectable]) .et-tree-node:where([data-selected]):active{background:color-mix(in srgb,var(--et-theme-color-primary-solid, gray) 20%,transparent)}.et-tree-status{color:var(--et-surface-color-muted-solid, GrayText)}.et-tree-status:where(.et-tree-status--error){color:var(--et-tree-error-color, var(--et-surface-color-muted-solid, GrayText));cursor:pointer}.et-tree-status:focus-visible{outline:2px solid var(--et-theme-color-primary-solid, currentColor);outline-offset:-2px}@media(prefers-reduced-motion:reduce){.et-tree-node,.et-tree-node:after,.et-tree-node .et-tree-node-chevron{transition:none}}}\n"] }]
65578
+ }], propDecorators: { loadingLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingLabel", required: false }] }], emptyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyLabel", required: false }] }], retryLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "retryLabel", required: false }] }] } });
65579
+
65580
+ const TREE_IMPORTS = [TreeComponent, TreeDirective, TreeNodeDirective, TreeNodeDefDirective];
65581
+
64806
65582
  /**
64807
65583
  * Generated bundle index. Do not edit.
64808
65584
  */
64809
65585
 
64810
- 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, DIVIDER_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, DividerComponent, 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_EDIT_SURFACE_HOST, SCHEDULER_EDIT_SURFACE_OVERLAY, 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_BRACKET_ROUND_TYPE, SWITCH_IMPORTS, SchedulerActionAddAppointmentDirective, SchedulerActionAddSubAppointmentDirective, SchedulerActionDeleteDirective, SchedulerAgendaDirective, SchedulerAgendaViewComponent, SchedulerBadgeChainCountComponent, SchedulerBadgeChainCountDirective, SchedulerBadgeColorDotComponent, SchedulerBadgeColorDotDirective, SchedulerBadgeLocationComponent, SchedulerBadgeLocationDirective, SchedulerBadgeTimeRangeComponent, SchedulerBadgeTimeRangeDirective, SchedulerBadgeTitleComponent, SchedulerBadgeTitleDirective, SchedulerComponent, SchedulerDirective, SchedulerEditColorComponent, SchedulerEditColorDirective, SchedulerEditDescriptionComponent, SchedulerEditDescriptionDirective, SchedulerEditLocationComponent, SchedulerEditLocationDirective, SchedulerEditSurfaceComponent, SchedulerEditSurfaceDirective, SchedulerEditTimeRangeComponent, SchedulerEditTimeRangeDirective, SchedulerEditTitleComponent, SchedulerEditTitleDirective, 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, TOOLBAR_IMPORTS, TOOLBAR_ORIENTATIONS, TOOLTIP_ERROR_CODES, TOOLTIP_IMPORTS, TOURNAMENT_MODE, TRASH_ICON, 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, ToolbarComponent, ToolbarDirective, 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, createCardMask, createCurrencyMask, createDefaultDropzoneArgs, createDropzoneUpload, createExistingDropzoneEntry, createFileDropzoneEntry, createFixedLengthRangeStrategy, createGridAdapter, createIbanMask, createNormalizedBracketMatch, createNotificationPromiseFn, createNotificationRef, createOverlayOpener, createOverlayRef, createOverlayStrategyController, createOverlayUnsavedChangesGuard, createPipChromeAnimations, createPipChromeState, createRichTextEditorTrigger, createRichTextEditorTriggerWithQuery, 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, generateRoundTypeFromEthleteRoundType, generateTournamentModeFormEthleteRounds, getClosestOverlay, getOriginCoordinatesAndDimensions, 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, injectSchedulerEditSurfaceHost, 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 };
65586
+ 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, DIVIDER_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, DividerComponent, 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_EDIT_SURFACE_HOST, SCHEDULER_EDIT_SURFACE_OVERLAY, 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_BRACKET_ROUND_TYPE, SWITCH_IMPORTS, SchedulerActionAddAppointmentDirective, SchedulerActionAddSubAppointmentDirective, SchedulerActionDeleteDirective, SchedulerAgendaDirective, SchedulerAgendaViewComponent, SchedulerBadgeChainCountComponent, SchedulerBadgeChainCountDirective, SchedulerBadgeColorDotComponent, SchedulerBadgeColorDotDirective, SchedulerBadgeLocationComponent, SchedulerBadgeLocationDirective, SchedulerBadgeTimeRangeComponent, SchedulerBadgeTimeRangeDirective, SchedulerBadgeTitleComponent, SchedulerBadgeTitleDirective, SchedulerComponent, SchedulerDirective, SchedulerEditColorComponent, SchedulerEditColorDirective, SchedulerEditDescriptionComponent, SchedulerEditDescriptionDirective, SchedulerEditLocationComponent, SchedulerEditLocationDirective, SchedulerEditSurfaceComponent, SchedulerEditSurfaceDirective, SchedulerEditTimeRangeComponent, SchedulerEditTimeRangeDirective, SchedulerEditTitleComponent, SchedulerEditTitleDirective, 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, TOOLBAR_IMPORTS, TOOLBAR_ORIENTATIONS, TOOLTIP_ERROR_CODES, TOOLTIP_IMPORTS, TOURNAMENT_MODE, TRASH_ICON, TREE_ERROR_CODES, TREE_IMPORTS, TREE_LEVEL_STATUSES, TREE_MARKERS, TREE_SELECTION_MODES, 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, ToolbarComponent, ToolbarDirective, TooltipComponent, TooltipDirective, TreeComponent, TreeDirective, TreeMarkerComponent, TreeNodeDefDirective, TreeNodeDirective, 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, createCardMask, createCurrencyMask, createDefaultDropzoneArgs, createDropzoneUpload, createExistingDropzoneEntry, createFileDropzoneEntry, createFixedLengthRangeStrategy, createGridAdapter, createIbanMask, createNormalizedBracketMatch, createNotificationPromiseFn, createNotificationRef, createOverlayOpener, createOverlayRef, createOverlayStrategyController, createOverlayUnsavedChangesGuard, createPipChromeAnimations, createPipChromeState, createRichTextEditorTrigger, createRichTextEditorTriggerWithQuery, createStreamConfig, createStreamPlayerSlot, createTableRowsSource, createTableStateStorage, createV2DropzoneUpload, createWeekRangeStrategy, defaultCompareWith$1 as defaultCompareWith, defaultDropzoneRejectionMessage, defineOverlay, defineQueryParamOverlay, deriveDurationFormatSpec, deserializeGridLayout, deserializeTableState, dialogOverlayStrategy, disposeDropzoneEntry, doubleEliminationBracketLayout, dropzoneFiles, enableDragToDismiss, extractFirstImageUrl, filterOverlayLabelsForLocale, filterOverlayPreviewFromQuery, filterRows, findCollision, findNextRelevantHtmlElement, findScrollableAncestor, formatDuration, formatFileSize, fromGridPosition, fullScreenDialogOverlayStrategy, generateBracketDataForEthlete, generateRoundTypeFromEthleteRoundType, generateTournamentModeFormEthleteRounds, getClosestOverlay, getOriginCoordinatesAndDimensions, 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, injectSchedulerEditSurfaceHost, 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$1 as 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$1 as toChildrenObservable, toGridPosition, toNotificationContent, toPathObservable, toSearchObservable, topSheetOverlayStrategy, transformingBottomSheetToDialogOverlayStrategy, transformingFullScreenDialogToDialogOverlayStrategy, transformingFullScreenDialogToRightSheetOverlayStrategy, wireFormSupport, withPictureBaseUrl };
64811
65587
  //# sourceMappingURL=ethlete-components.mjs.map