@acorex/components 22.1.0-next.19 → 22.1.0-next.20

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.
@@ -8,7 +8,7 @@ import { AXPlatform } from '@acorex/core/platform';
8
8
  import { AXTranslatorPipe } from '@acorex/core/translation';
9
9
  import { NgTemplateOutlet, AsyncPipe } from '@angular/common';
10
10
  import * as i0 from '@angular/core';
11
- import { input, output, signal, computed, viewChild, viewChildren, inject, NgZone, effect, untracked, Directive, ViewEncapsulation, ChangeDetectionStrategy, Component, ElementRef, DestroyRef, model, linkedSignal, afterRenderEffect, NgModule } from '@angular/core';
11
+ import { input, output, signal, computed, viewChild, viewChildren, inject, NgZone, effect, untracked, afterRenderEffect, Directive, ViewEncapsulation, ChangeDetectionStrategy, Component, ElementRef, DestroyRef, model, linkedSignal, NgModule } from '@angular/core';
12
12
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
13
13
  import * as i2 from '@acorex/cdk/list-navigation';
14
14
  import { AXListNavigationDirective, AXListNavigationItemDirective, AXListNavigationModule } from '@acorex/cdk/list-navigation';
@@ -198,8 +198,15 @@ class AXLookupListViewBase {
198
198
  ...(ngDevMode ? [{ debugName: "totalCount" }] : /* istanbul ignore next */ []));
199
199
  this.isLoading = signal(true, /* @ts-ignore */
200
200
  ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
201
+ this.loadingPlaceholderIndexes = [0, 1, 2];
201
202
  this.isEmpty = computed(() => this.totalCount() === 0 && !this.isLoading(), /* @ts-ignore */
202
203
  ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
204
+ /**
205
+ * Overlay popovers often measure as 0px on first open, so CDK virtual scroll
206
+ * renders no rows. Paint these placeholders outside the viewport until data arrives.
207
+ */
208
+ this.showLoadingPlaceholder = computed(() => this.isLoading() && this.totalCount() === 0, /* @ts-ignore */
209
+ ...(ngDevMode ? [{ debugName: "showLoadingPlaceholder" }] : /* istanbul ignore next */ []));
203
210
  /** Viewport height so the popup grows with the items up to `maxVisibleItems`. */
204
211
  this.viewportHeight = computed(() => {
205
212
  const count = this.totalCount() || (this.isLoading() ? 3 : 1);
@@ -240,13 +247,17 @@ class AXLookupListViewBase {
240
247
  this.listDataSource.set(list);
241
248
  });
242
249
  const loadingSub = source.onLoadingChanged.subscribe((value) => this.isLoading.set(value));
243
- const changedSub = source.onChanged.subscribe((e) => this.totalCount.set(e.totalCount));
244
- // CDK viewChange may emit { start: 0, end: 0 } before the popover has a height, which
245
- // never calls setPage. Kick page 0 when the source is cold; reuse cache on remount.
250
+ const changedSub = source.onChanged.subscribe((e) => {
251
+ this.totalCount.set(e.totalCount);
252
+ this.#checkViewportSize();
253
+ });
254
+ // Overlay first-open often emits viewChange { start: 0, end: 0 }, which never
255
+ // pages. Kick page 0 when the source is cold; reuse real rows on remount.
246
256
  queueMicrotask(() => {
247
257
  if (source.cachedItems.some((item) => item != null)) {
248
258
  this.totalCount.set(source.totalCount);
249
259
  this.isLoading.set(false);
260
+ this.#checkViewportSize();
250
261
  return;
251
262
  }
252
263
  source.setPage(0);
@@ -256,6 +267,19 @@ class AXLookupListViewBase {
256
267
  changedSub.unsubscribe();
257
268
  });
258
269
  });
270
+ afterRenderEffect(() => {
271
+ this.viewportRef();
272
+ this.totalCount();
273
+ this.isLoading();
274
+ this.#checkViewportSize();
275
+ });
276
+ }
277
+ #checkViewportSize() {
278
+ const viewport = this.viewportRef();
279
+ if (!viewport) {
280
+ return;
281
+ }
282
+ this.#ngZone.run(() => viewport.checkViewportSize());
259
283
  }
260
284
  /** Moves keyboard focus to the first rendered list option. */
261
285
  focusFirst() {
@@ -355,7 +379,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
355
379
  class AXLookupDropDownListComponent extends AXLookupListViewBase {
356
380
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXLookupDropDownListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
357
381
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXLookupDropDownListComponent, isStandalone: true, selector: "ax-lookup-drop-down-list", providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupDropDownListComponent }], usesInheritance: true, ngImport: i0, template: `
358
- @if (isEmpty()) {
382
+ @if (showLoadingPlaceholder()) {
383
+ <div class="ax-lookup-viewport" role="listbox">
384
+ @for (index of loadingPlaceholderIndexes; track index) {
385
+ <div class="ax-lookup-option-host ax-lookup-option" [style.height.px]="itemHeight()">
386
+ <ng-container [ngTemplateOutlet]="loadingRow" />
387
+ </div>
388
+ }
389
+ </div>
390
+ } @else if (isEmpty()) {
359
391
  @if (emptyTemplate()) {
360
392
  <ng-container [ngTemplateOutlet]="emptyTemplate()!" />
361
393
  } @else {
@@ -424,7 +456,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
424
456
  imports: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe, AXListNavigationModule],
425
457
  providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupDropDownListComponent }],
426
458
  template: `
427
- @if (isEmpty()) {
459
+ @if (showLoadingPlaceholder()) {
460
+ <div class="ax-lookup-viewport" role="listbox">
461
+ @for (index of loadingPlaceholderIndexes; track index) {
462
+ <div class="ax-lookup-option-host ax-lookup-option" [style.height.px]="itemHeight()">
463
+ <ng-container [ngTemplateOutlet]="loadingRow" />
464
+ </div>
465
+ }
466
+ </div>
467
+ } @else if (isEmpty()) {
428
468
  @if (emptyTemplate()) {
429
469
  <ng-container [ngTemplateOutlet]="emptyTemplate()!" />
430
470
  } @else {
@@ -1312,7 +1352,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1312
1352
  class AXLookupMultiSelectComponent extends AXLookupListViewBase {
1313
1353
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXLookupMultiSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1314
1354
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXLookupMultiSelectComponent, isStandalone: true, selector: "ax-lookup-multi-select", providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupMultiSelectComponent }], usesInheritance: true, ngImport: i0, template: `
1315
- @if (isEmpty()) {
1355
+ @if (showLoadingPlaceholder()) {
1356
+ <div class="ax-lookup-viewport" role="listbox" aria-multiselectable="true">
1357
+ @for (index of loadingPlaceholderIndexes; track index) {
1358
+ <div class="ax-lookup-option-host ax-lookup-option" [style.height.px]="itemHeight()">
1359
+ <ng-container [ngTemplateOutlet]="loadingRow" />
1360
+ </div>
1361
+ }
1362
+ </div>
1363
+ } @else if (isEmpty()) {
1316
1364
  @if (emptyTemplate()) {
1317
1365
  <ng-container [ngTemplateOutlet]="emptyTemplate()!" />
1318
1366
  } @else {
@@ -1386,7 +1434,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1386
1434
  imports: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe, AXListNavigationModule],
1387
1435
  providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupMultiSelectComponent }],
1388
1436
  template: `
1389
- @if (isEmpty()) {
1437
+ @if (showLoadingPlaceholder()) {
1438
+ <div class="ax-lookup-viewport" role="listbox" aria-multiselectable="true">
1439
+ @for (index of loadingPlaceholderIndexes; track index) {
1440
+ <div class="ax-lookup-option-host ax-lookup-option" [style.height.px]="itemHeight()">
1441
+ <ng-container [ngTemplateOutlet]="loadingRow" />
1442
+ </div>
1443
+ }
1444
+ </div>
1445
+ } @else if (isEmpty()) {
1390
1446
  @if (emptyTemplate()) {
1391
1447
  <ng-container [ngTemplateOutlet]="emptyTemplate()!" />
1392
1448
  } @else {
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-lookup.mjs","sources":["../../../../packages/components/lookup/src/lib/lookup-tree-table-data-source.ts","../../../../packages/components/lookup/src/lib/views/lookup-list-view-base.ts","../../../../packages/components/lookup/src/lib/views/lookup-drop-down-list.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-drop-down-tree.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-column-tree.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-column.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-select-tree.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-select.component.ts","../../../../packages/components/lookup/src/lib/lookup.component.ts","../../../../packages/components/lookup/src/lib/lookup.component.html","../../../../packages/components/lookup/src/lib/lookup.module.ts","../../../../packages/components/lookup/src/acorex-components-lookup.ts"],"sourcesContent":["import { AXDataSource, AXDataSourceQuery } from '@acorex/cdk/common';\nimport { AXTreeViewDataSource, AXTreeViewNode } from '@acorex/components/tree-view';\nimport { AXLookupItem } from './lookup.types';\n\n/**\n * Options used when adapting a lookup `treeDataSource` into an `AXDataSource`\n * that `ax-data-table` can expand via `parentField`.\n */\nexport interface AXLookupTreeTableDataSourceOptions {\n valueField: string;\n textField: string;\n parentField: string;\n hasChildrenField: string;\n}\n\n/**\n * Converts a drop-down-tree datasource (nested array or lazy callback) into an\n * `AXDataSource` that a multi-column data table can load and expand.\n */\nexport function createLookupTreeTableDataSource(\n source: AXTreeViewDataSource,\n options: AXLookupTreeTableDataSourceOptions,\n): AXDataSource<AXLookupItem> {\n const isCallback = typeof source === 'function';\n\n return new AXDataSource<AXLookupItem>({\n pageSize: 8,\n key: options.valueField,\n load: (query) => loadTreeTableRows(source, options, query, isCallback),\n byKey: (key) => findTreeTableItem(source, options.valueField, key),\n });\n}\n\nasync function loadTreeTableRows(\n source: AXTreeViewDataSource,\n options: AXLookupTreeTableDataSourceOptions,\n query: AXDataSourceQuery,\n isCallback: boolean,\n): Promise<{ items: AXLookupItem[]; total: number }> {\n const parentFilter = query.filter?.field === options.parentField ? query.filter : undefined;\n const textFilter = query.filter && query.filter.field !== options.parentField ? query.filter : undefined;\n\n if (parentFilter) {\n const children = await loadChildren(source, options, parentFilter.value, isCallback);\n return { items: children, total: children.length };\n }\n\n const roots = mapTreeNodes(await loadRoots(source, isCallback), options);\n const items = textFilter ? filterTreeNodes(roots, options.textField, String(textFilter.value ?? '')) : roots;\n return { items, total: items.length };\n}\n\nasync function loadRoots(source: AXTreeViewDataSource, isCallback: boolean): Promise<AXTreeViewNode[]> {\n if (!isCallback) {\n return (source as AXTreeViewNode[]) ?? [];\n }\n return (await (source as (nodeId?: string) => AXTreeViewNode[] | Promise<AXTreeViewNode[]>)()) ?? [];\n}\n\nasync function loadChildren(\n source: AXTreeViewDataSource,\n options: AXLookupTreeTableDataSourceOptions,\n parentId: unknown,\n isCallback: boolean,\n): Promise<AXLookupItem[]> {\n if (isCallback) {\n const nodes =\n (await (source as (nodeId?: string) => AXTreeViewNode[] | Promise<AXTreeViewNode[]>)(String(parentId))) ?? [];\n return mapTreeNodes(nodes, options);\n }\n\n const parent = findTreeNode(source as AXTreeViewNode[], options.valueField, parentId);\n const children = Array.isArray(parent?.['children']) ? (parent['children'] as AXTreeViewNode[]) : [];\n return mapTreeNodes(children, options);\n}\n\nfunction mapTreeNodes(nodes: AXTreeViewNode[], options: AXLookupTreeTableDataSourceOptions): AXLookupItem[] {\n return nodes.map((node) => mapTreeNode(node, options));\n}\n\nfunction mapTreeNode(node: AXTreeViewNode, options: AXLookupTreeTableDataSourceOptions): AXLookupItem {\n const rawChildren = node['children'];\n const children = Array.isArray(rawChildren) ? mapTreeNodes(rawChildren as AXTreeViewNode[], options) : undefined;\n const childrenCount = node['childrenCount'];\n const hasChildren =\n (children?.length ?? 0) > 0 ||\n (typeof childrenCount === 'number' && childrenCount > 0) ||\n node['hasChild'] === true ||\n node['hasChildren'] === true;\n\n return {\n ...node,\n [options.hasChildrenField]: hasChildren,\n ...(children && children.length > 0 ? { children } : {}),\n };\n}\n\nfunction filterTreeNodes(nodes: AXLookupItem[], textField: string, query: string): AXLookupItem[] {\n const needle = query.trim().toLowerCase();\n if (!needle) {\n return nodes;\n }\n\n const result: AXLookupItem[] = [];\n for (const node of nodes) {\n const rawChildren = node['children'];\n const children = Array.isArray(rawChildren) ? filterTreeNodes(rawChildren as AXLookupItem[], textField, needle) : undefined;\n const selfMatch = String(node[textField] ?? '')\n .toLowerCase()\n .includes(needle);\n if (selfMatch) {\n result.push(node);\n } else if (children && children.length > 0) {\n result.push({\n ...node,\n children,\n });\n }\n }\n return result;\n}\n\nfunction findTreeTableItem(\n source: AXTreeViewDataSource,\n valueField: string,\n key: unknown,\n): AXLookupItem | undefined {\n if (typeof source === 'function' || !Array.isArray(source)) {\n return undefined;\n }\n return findTreeNode(source, valueField, key) ?? undefined;\n}\n\nfunction findTreeNode(nodes: AXTreeViewNode[], valueField: string, key: unknown): AXTreeViewNode | null {\n for (const node of nodes) {\n if (String(node[valueField]) === String(key)) {\n return node;\n }\n const children = node['children'];\n if (Array.isArray(children)) {\n const found = findTreeNode(children as AXTreeViewNode[], valueField, key);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n","import { AXDataSource, AXHtmlEvent, AXListDataSource } from '@acorex/cdk/common';\nimport {\n AXListNavigationDirective,\n AXListNavigationItemDirective,\n} from '@acorex/cdk/list-navigation';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n Directive,\n NgZone,\n TemplateRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Shared `AXDataSource` + CDK virtual scroll plumbing for the list-based lookup views\n * (`ax-lookup-drop-down-list`, `ax-lookup-multi-select`).\n */\n@Directive()\nexport abstract class AXLookupListViewBase {\n /**\n * The datasource providing the items (paged, remote-capable).\n */\n dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n /**\n * The item property used as the selection value.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text.\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (always an array, even for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * The fixed row height in pixels used by the virtual scroll viewport.\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of rows visible before the popup scrolls.\n */\n maxVisibleItems = input(8);\n\n /**\n * Custom template rendered for each item. Context: `$implicit` is the item.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for rows whose page is still loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * When `true`, list rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * Emitted when the user picks (or toggles) an item.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n /**\n * Emitted when keyboard navigation should leave the list (e.g. ArrowUp on the first\n * item, or a printable key that should return focus to the trigger search input).\n */\n navigateOut = output<'up' | 'typeahead'>();\n\n /** CDK virtual scroll adapter over the datasource. */\n protected listDataSource = signal<AXListDataSource<AXLookupItem> | null>(null);\n\n protected totalCount = signal(0);\n protected isLoading = signal(true);\n\n protected isEmpty = computed(() => this.totalCount() === 0 && !this.isLoading());\n\n /** Viewport height so the popup grows with the items up to `maxVisibleItems`. */\n protected viewportHeight = computed(() => {\n const count = this.totalCount() || (this.isLoading() ? 3 : 1);\n return Math.min(count, this.maxVisibleItems()) * this.itemHeight();\n });\n\n protected viewportRef = viewChild(CdkVirtualScrollViewport);\n protected listNavigation = viewChild(AXListNavigationDirective);\n protected navItems = viewChildren(AXListNavigationItemDirective);\n\n #ngZone = inject(NgZone);\n\n constructor() {\n // CDK measures the viewport size only once, when it initializes. Inside the popover the\n // panel is still animating/positioning at that moment (and the height also changes when\n // the loading placeholder is replaced by the real item count), so the measurement is stale\n // and CDK renders too few rows, leaving empty space. A ResizeObserver on the viewport\n // element re-measures on every actual size change, covering all of these cases.\n effect((onCleanup) => {\n const viewport = this.viewportRef();\n if (!viewport || typeof ResizeObserver === 'undefined') {\n return;\n }\n const observer = new ResizeObserver(() => {\n this.#ngZone.run(() => viewport.checkViewportSize());\n });\n observer.observe(viewport.elementRef.nativeElement);\n onCleanup(() => observer.disconnect());\n });\n\n effect((onCleanup) => {\n const source = this.dataSource();\n const list = new AXListDataSource<AXLookupItem>({ source });\n const hasRows = source.cachedItems.some((item) => item != null);\n untracked(() => {\n this.totalCount.set(source.totalCount);\n this.isLoading.set(hasRows ? source.isLoading : true);\n this.listDataSource.set(list);\n });\n const loadingSub = source.onLoadingChanged.subscribe((value) => this.isLoading.set(value));\n const changedSub = source.onChanged.subscribe((e) => this.totalCount.set(e.totalCount));\n\n // CDK viewChange may emit { start: 0, end: 0 } before the popover has a height, which\n // never calls setPage. Kick page 0 when the source is cold; reuse cache on remount.\n queueMicrotask(() => {\n if (source.cachedItems.some((item) => item != null)) {\n this.totalCount.set(source.totalCount);\n this.isLoading.set(false);\n return;\n }\n source.setPage(0);\n });\n\n onCleanup(() => {\n loadingSub.unsubscribe();\n changedSub.unsubscribe();\n });\n });\n }\n\n /** Moves keyboard focus to the first rendered list option. */\n focusFirst() {\n this.listNavigation()?.focusOnIndex(0);\n }\n\n protected getValue(item: AXLookupItem): unknown {\n return item?.[this.valueField()];\n }\n\n protected getText(item: AXLookupItem): string {\n return String(item?.[this.textField()] ?? '');\n }\n\n protected isSelected(item: AXLookupItem): boolean {\n const value = this.getValue(item);\n return this.selectedValues().some((v) => v == value);\n }\n\n protected isDisabled(item: AXLookupItem): boolean {\n return Boolean(item?.[this.disabledField()]);\n }\n\n protected handleItemClick(item: AXLookupItem | null | undefined) {\n if (!item || this.isDisabled(item)) {\n return;\n }\n this.itemClick.emit({ item, value: this.getValue(item) });\n }\n\n /**\n * Commit on mousedown (not click) so a searchable trigger blur cannot destroy the\n * list before the pick is applied.\n */\n protected handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined) {\n event.preventDefault();\n event.stopPropagation();\n this.handleItemClick(item);\n }\n\n protected handleItemKeypress(e: AXHtmlEvent<KeyboardEvent>, item: AXLookupItem | null | undefined) {\n if (e.nativeEvent.key === 'Enter' || e.nativeEvent.code === 'Space') {\n e.nativeEvent.stopPropagation();\n e.nativeEvent.preventDefault();\n this.handleItemClick(item);\n }\n }\n\n protected handleListKeypress(e: AXHtmlEvent<KeyboardEvent>) {\n const key = e.nativeEvent.key;\n const nav = this.listNavigation();\n const viewport = this.viewportRef();\n\n if (key === 'ArrowUp' && nav && nav.activeIndex() === 0) {\n const offset = viewport?.measureScrollOffset() ?? 0;\n if (offset > 0) {\n e.nativeEvent.preventDefault();\n viewport!.scrollToOffset(Math.max(0, offset - this.itemHeight()));\n queueMicrotask(() => nav.focusOnIndex(0));\n return;\n }\n e.nativeEvent.preventDefault();\n this.navigateOut.emit('up');\n return;\n }\n\n if (key === 'ArrowDown' && nav && viewport) {\n const items = this.navItems();\n if (items.length > 0 && nav.activeIndex() >= items.length - 1) {\n const maxOffset = Math.max(0, this.totalCount() * this.itemHeight() - viewport.getViewportSize());\n const nextOffset = Math.min(maxOffset, viewport.measureScrollOffset() + this.itemHeight());\n if (nextOffset > viewport.measureScrollOffset()) {\n e.nativeEvent.preventDefault();\n viewport.scrollToOffset(nextOffset);\n queueMicrotask(() => nav.focusOnIndex(this.navItems().length - 1));\n }\n return;\n }\n }\n\n if (\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Tab' ||\n key === 'Shift' ||\n key === 'Enter' ||\n key === 'Escape' ||\n key === ' '\n ) {\n return;\n }\n\n this.navigateOut.emit('typeahead');\n }\n\n protected activateNavItem(nav: AXListNavigationDirective, item: AXListNavigationItemDirective) {\n nav?.navigateTo(item);\n }\n\n protected trackByIndex = (index: number) => index;\n}\n","import { AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXLookupListViewBase } from './lookup-list-view-base';\n\n/**\n * Internal mini component for the `drop-down-list` lookup mode:\n * a predefined, virtualized list of options for picking single values.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-drop-down-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe, AXListNavigationModule],\n providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupDropDownListComponent }],\n template: `\n @if (isEmpty()) {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n <div class=\"ax-lookup-empty\">\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </div>\n }\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n axListNavigation\n #nav=\"axListNavigation\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n (onKeypress)=\"handleListKeypress($event)\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); let i = index; trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option-host ax-lookup-option\"\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-state-alternate]=\"alternate() && i % 2 === 1\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [class.ax-state-active]=\"navItem.isActive()\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (mouseenter)=\"activateNavItem(nav, navItem)\"\n (mousedown)=\"handleItemMouseDown($event, item)\"\n (onKeypress)=\"handleItemKeypress($event, item)\"\n >\n @if (item != null) {\n @if (itemTemplate()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"ax-lookup-option-text\">{{ getText(item) }}</span>\n }\n <!-- Keep check outside itemTemplate so custom rows (platform widgets) still show selection. -->\n @if (isSelected(item)) {\n <span class=\"ax-lookup-option-check ax-icon ax-icon-check text-primary\" aria-hidden=\"true\"></span>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingRow\" />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n\n <ng-template #loadingRow>\n @if (loadingTemplate()) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate()!\" />\n } @else {\n <span class=\"ax-lookup-option-loading\">{{ '@acorex:common.status.loading' | translate | async }}</span>\n }\n </ng-template>\n `,\n})\nexport class AXLookupDropDownListComponent extends AXLookupListViewBase {}\n","import {\n AXTreeViewComponent,\n AXTreeViewDataSource,\n AXTreeViewItemTemplateContext,\n AXTreeViewSelectionChangeEvent,\n} from '@acorex/components/tree-view';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, computed, input, output } from '@angular/core';\nimport { AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `drop-down-tree` lookup mode:\n * a predefined list rendered in a tree-like structure for single item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-drop-down-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTreeViewComponent],\n template: `\n <div class=\"ax-lookup-tree\">\n <ax-tree-view\n [datasource]=\"dataSource()\"\n selectMode=\"single\"\n selectionBehavior=\"all\"\n [controlledSelection]=\"true\"\n [selectedIds]=\"selectedIds()\"\n [idField]=\"valueField()\"\n [titleField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [nodeTemplate]=\"nodeTemplate()\"\n (onSelectionChange)=\"handleSelectionChange($event)\"\n />\n </div>\n `,\n})\nexport class AXLookupDropDownTreeComponent {\n /**\n * The tree datasource: an array of nodes or a lazy children callback.\n */\n dataSource = input.required<AXTreeViewDataSource>();\n\n /**\n * The node property used as the selection value (tree `idField`).\n */\n valueField = input('id');\n\n /**\n * The node property used as the display text (tree `titleField`).\n */\n textField = input('title');\n\n /**\n * The node property marking a node as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (at most one for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * Custom template rendered for each tree node.\n */\n nodeTemplate = input<TemplateRef<AXTreeViewItemTemplateContext> | undefined>(undefined);\n\n /**\n * Emitted when the user selects a node.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n protected selectedIds = computed(() => this.selectedValues().map((v) => String(v)));\n\n protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent) {\n if (e.source !== 'user') {\n return;\n }\n const node = e.selectedNodes[0];\n if (!node) {\n return;\n }\n this.itemClick.emit({ item: node, value: node[this.valueField()] });\n }\n}\n","import { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXDataTableComponent,\n AXDataTableRowClick,\n AXDataTableTextColumnComponent,\n} from '@acorex/components/data-table';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { AXLookupColumn, AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `multi-column-tree` lookup mode:\n * a multi-column `ax-data-table` with a drop-down tree inside it.\n * Rows expand/collapse via the data-table hierarchy (`parentField` / nested `children`).\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-column-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, AXDataTableComponent, AXDataTableTextColumnComponent],\n host: {\n class: 'ax-lookup-multi-column ax-lookup-multi-column-tree',\n '[style.height.px]': 'tableHeight()',\n },\n template: `\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"dataSource()\"\n [parentField]=\"parentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowTemplate]=\"itemTemplate() ? customRowTemplate : undefined\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n @for (column of columns(); track trackColumnKey($index, column)) {\n <ax-text-column\n [dataField]=\"column.field\"\n [caption]=\"column.title\"\n [width]=\"resolveColumnWidth(column)\"\n [expandHandler]=\"isExpandColumn($index, column)\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n />\n }\n </ax-data-table>\n\n <ng-template #customRowTemplate let-ctx>\n <tr\n [class.ax-state-selected]=\"ctx.data != null && isSelected(ctx.data)\"\n [class.ax-state-disabled]=\"ctx.data != null && isDisabled(ctx.data)\"\n [style.height.px]=\"itemHeight()\"\n [style.max-height.px]=\"itemHeight()\"\n (mousedown)=\"handleItemMouseDown($event, ctx.data)\"\n >\n <td [attr.colspan]=\"columns().length || 1\">\n @if (ctx.data != null && itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: ctx.data }\"\n />\n }\n </td>\n </tr>\n </ng-template>\n `,\n})\nexport class AXLookupMultiColumnTreeComponent {\n /**\n * The datasource providing hierarchical rows (roots on load, children via `parentField`).\n */\n dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n /**\n * The item property used as the selection value (also the data-table row key).\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text. The matching column shows the expand control\n * unless another column sets `expandHandler`.\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Field used by the data table to fetch children (`AXDataSource` filter on expand).\n */\n parentField = input('parentId');\n\n /**\n * Field used by the data table to decide whether a row can expand.\n */\n hasChildrenField = input('hasChild');\n\n /**\n * Currently selected values (always an array, even for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * The fixed row height in pixels passed to the data table.\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of body rows visible before the table scrolls.\n */\n maxVisibleItems = input(8);\n\n /**\n * Column definitions rendered as `ax-text-column` instances.\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Optional custom row content. Context: `$implicit` is the row item.\n * When set, replaces the default multi-column cell layout.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered while the table is loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * When `true`, table rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * Emitted when the user picks a row (not when expanding/collapsing).\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n /**\n * Header (~40px) + up to `maxVisibleItems` body rows. Expanded children scroll inside.\n */\n protected tableHeight = computed(() => 40 + this.maxVisibleItems() * this.itemHeight());\n\n protected loadingConfig = computed(() => ({\n enabled: true,\n animation: true,\n loadingTemplate: this.loadingTemplate(),\n }));\n\n /** Stable unique key for `@for` — avoids NG0955 when `field` is missing or duplicated. */\n protected trackColumnKey(index: number, column: AXLookupColumn): string {\n return `${column?.field ?? ''}::${index}`;\n }\n\n protected resolveColumnWidth(column: AXLookupColumn): string | number | 'auto' {\n const width = column.width?.trim();\n if (!width || width.includes('fr')) {\n return 'auto';\n }\n return width;\n }\n\n protected isExpandColumn(index: number, column: AXLookupColumn): boolean {\n if (column.expandHandler === true) {\n return true;\n }\n if (this.columns().some((item) => item.expandHandler === true)) {\n return false;\n }\n const textIndex = this.columns().findIndex((item) => item.field === this.textField());\n return (textIndex === -1 ? 0 : textIndex) === index;\n }\n\n protected resolveRowCssClass = (row: unknown): string => {\n const item = row as AXLookupItem | null | undefined;\n if (!item) {\n return '';\n }\n const classes: string[] = [];\n if (this.isSelected(item)) {\n classes.push('ax-state-selected');\n }\n if (this.isDisabled(item)) {\n classes.push('ax-state-disabled');\n }\n return classes.join(' ');\n };\n\n protected handleRowClick(event: AXDataTableRowClick) {\n this.handleItemClick(event.data as AXLookupItem | null | undefined);\n }\n\n protected handleItemClick(item: AXLookupItem | null | undefined) {\n if (!item || this.isDisabled(item)) {\n return;\n }\n this.itemClick.emit({ item, value: this.getValue(item) });\n }\n\n protected handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined) {\n event.preventDefault();\n event.stopPropagation();\n this.handleItemClick(item);\n }\n\n protected isSelected(item: AXLookupItem): boolean {\n const value = this.getValue(item);\n return this.selectedValues().some((v) => v == value);\n }\n\n protected isDisabled(item: AXLookupItem): boolean {\n return Boolean(item?.[this.disabledField()]);\n }\n\n private getValue(item: AXLookupItem): unknown {\n return item?.[this.valueField()];\n }\n}\n","import { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXDataTableComponent,\n AXDataTableRowClick,\n AXDataTableTextColumnComponent,\n} from '@acorex/components/data-table';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { Subscription, auditTime, fromEvent } from 'rxjs';\nimport { AXLookupColumn, AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `multi-column` lookup mode:\n * renders selectable rows in an `ax-data-table` grid and loads further\n * pages as the user scrolls (no pager UI).\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-column',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, AXDataTableComponent, AXDataTableTextColumnComponent],\n host: {\n class: 'ax-lookup-multi-column',\n '[style.height.px]': 'tableHeight()',\n },\n template: `\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"tableDataSource\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowTemplate]=\"itemTemplate() ? customRowTemplate : undefined\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n @for (column of columns(); track trackColumnKey($index, column)) {\n <ax-text-column\n [dataField]=\"column.field\"\n [caption]=\"column.title\"\n [width]=\"resolveColumnWidth(column)\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n />\n }\n </ax-data-table>\n\n <ng-template #customRowTemplate let-ctx>\n <tr\n [class.ax-state-selected]=\"ctx.data != null && isSelected(ctx.data)\"\n [class.ax-state-disabled]=\"ctx.data != null && isDisabled(ctx.data)\"\n [style.height.px]=\"itemHeight()\"\n [style.max-height.px]=\"itemHeight()\"\n (mousedown)=\"handleItemMouseDown($event, ctx.data)\"\n >\n <td [attr.colspan]=\"columns().length || 1\">\n @if (ctx.data != null && itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: ctx.data }\"\n />\n }\n </td>\n </tr>\n </ng-template>\n `,\n})\nexport class AXLookupMultiColumnComponent {\n /**\n * The datasource providing the grid rows (paged, remote-capable).\n * Pages are fetched on demand as the user scrolls the table body.\n */\n dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n /**\n * The item property used as the selection value.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text.\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (always an array, even for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * The fixed row height in pixels passed to the data table.\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of body rows visible before the table scrolls.\n */\n maxVisibleItems = input(8);\n\n /**\n * Column definitions rendered as `ax-text-column` instances.\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Optional custom row content. Context: `$implicit` is the row item.\n * When set, replaces the default multi-column cell layout.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered while the table is loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * When `true`, table rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * Emitted when the user picks a row.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n protected tableRef = viewChild(AXDataTableComponent);\n\n /** Accumulated rows fed to the table (grows as pages are scrolled in). */\n #loadedItems: AXLookupItem[] = [];\n\n /** Total matching rows from the source (used to size the popup). */\n readonly #totalCount = signal(0);\n\n /**\n * Local table source: one page of whatever has been scrolled in so far.\n * Kept as a stable instance so the table host is not recreated on each page load.\n * `pageSize` grows with `#loadedItems` — never seed with a huge empty array (data-table\n * initializes `displayedRows` as `new Array(pageSize)`, which caused NG0955-level jank).\n */\n protected readonly tableDataSource = new AXDataSource<AXLookupItem>({\n pageSize: 1,\n key: 'id',\n load: async () => ({\n items: this.#loadedItems,\n total: this.#loadedItems.length,\n }),\n });\n\n /**\n * Header (~40px) + body rows. Grows with results up to `maxVisibleItems`,\n * then the table body scrolls for the rest.\n */\n protected tableHeight = computed(() => {\n const header = 40;\n const total = this.#totalCount();\n const rows = total > 0 ? total : Math.min(3, this.maxVisibleItems());\n return header + Math.min(rows, this.maxVisibleItems()) * this.itemHeight();\n });\n\n protected loadingConfig = computed(() => ({\n enabled: true,\n animation: true,\n loadingTemplate: this.loadingTemplate(),\n }));\n\n readonly #host = inject(ElementRef<HTMLElement>);\n\n constructor() {\n effect((onCleanup) => {\n const source = this.dataSource();\n this.tableDataSource.config.key = source.config.key || this.valueField();\n\n untracked(() => {\n this.#applyLoadedItems(source.cachedItems, source.totalCount);\n });\n\n const changedSub = source.onChanged.subscribe((event) => {\n this.#applyLoadedItems(event.cachedItems, event.totalCount);\n });\n\n // Fetch page 0 only when the source has never loaded. Reopen remounts this\n // view; setPage(0) is a no-op on a warm source and must not force a new API call.\n queueMicrotask(() => {\n if (!source.cachedItems.some((item) => item != null)) {\n source.setPage(0);\n }\n });\n\n onCleanup(() => changedSub.unsubscribe());\n });\n\n effect((onCleanup) => {\n // Rebind when the table instance appears / source changes.\n this.tableRef();\n this.dataSource();\n\n let scrollSub: Subscription | undefined;\n const timer = setTimeout(() => {\n const wrapper =\n this.tableRef()?.getHostElement()?.querySelector('.ax-data-table-wrapper') ??\n this.#host.nativeElement.querySelector('.ax-data-table-wrapper');\n if (!wrapper) {\n return;\n }\n scrollSub = fromEvent(wrapper, 'scroll')\n .pipe(auditTime(80))\n .subscribe(() => this.#tryLoadMore(wrapper as HTMLElement));\n }, 0);\n\n onCleanup(() => {\n clearTimeout(timer);\n scrollSub?.unsubscribe();\n });\n });\n }\n\n /** Stable unique key for `@for` — avoids NG0955 when `field` is missing or duplicated. */\n protected trackColumnKey(index: number, column: AXLookupColumn): string {\n return `${column?.field ?? ''}::${index}`;\n }\n\n protected resolveColumnWidth(column: AXLookupColumn): string | number | 'auto' {\n const width = column.width?.trim();\n if (!width || width.includes('fr')) {\n return 'auto';\n }\n return width;\n }\n\n #applyLoadedItems(cachedItems: Array<AXLookupItem | null | undefined>, totalCount: number) {\n this.#loadedItems = cachedItems.filter((item): item is AXLookupItem => item != null);\n this.#totalCount.set(totalCount);\n this.#syncTablePageSize();\n this.tableDataSource.refresh({ reset: true });\n }\n\n #syncTablePageSize() {\n this.tableDataSource.config.pageSize = Math.max(this.#loadedItems.length, 1);\n }\n\n protected resolveRowCssClass = (row: unknown): string => {\n const item = row as AXLookupItem | null | undefined;\n if (!item) {\n return '';\n }\n const classes: string[] = [];\n if (this.isSelected(item)) {\n classes.push('ax-state-selected');\n }\n if (this.isDisabled(item)) {\n classes.push('ax-state-disabled');\n }\n return classes.join(' ');\n };\n\n protected handleRowClick(event: AXDataTableRowClick) {\n this.handleItemClick(event.data as AXLookupItem | null | undefined);\n }\n\n protected handleItemClick(item: AXLookupItem | null | undefined) {\n if (!item || this.isDisabled(item)) {\n return;\n }\n this.itemClick.emit({ item, value: this.getValue(item) });\n }\n\n protected handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined) {\n event.preventDefault();\n event.stopPropagation();\n this.handleItemClick(item);\n }\n\n protected isSelected(item: AXLookupItem): boolean {\n const value = this.getValue(item);\n return this.selectedValues().some((v) => v == value);\n }\n\n protected isDisabled(item: AXLookupItem): boolean {\n return Boolean(item?.[this.disabledField()]);\n }\n\n #tryLoadMore(wrapper: HTMLElement) {\n const nearBottom = wrapper.scrollTop + wrapper.clientHeight >= wrapper.scrollHeight - 48;\n if (!nearBottom) {\n return;\n }\n\n const source = this.dataSource();\n if (source.isLoading || source.totalCount === 0) {\n return;\n }\n\n const loadedCount = source.cachedItems.filter((item) => item != null).length;\n if (loadedCount >= source.totalCount) {\n return;\n }\n\n const nextPage = Math.floor(loadedCount / source.pageSize);\n source.setPage(nextPage);\n }\n\n private getValue(item: AXLookupItem): unknown {\n return item?.[this.valueField()];\n }\n}\n","import {\n AXTreeViewComponent,\n AXTreeViewDataSource,\n AXTreeViewItemTemplateContext,\n AXTreeViewNode,\n AXTreeViewSelectionBehavior,\n AXTreeViewSelectionChangeEvent,\n} from '@acorex/components/tree-view';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, computed, input, output } from '@angular/core';\n\n/**\n * Selection payload of the multi-select tree view.\n */\nexport interface AXLookupTreeSelectionEvent {\n ids: string[];\n nodes: AXTreeViewNode[];\n}\n\n/**\n * Internal mini component for the `multi-select-tree` lookup mode:\n * a predefined list rendered in a tree-like structure for multiple item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-select-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTreeViewComponent],\n template: `\n <div class=\"ax-lookup-tree\">\n <ax-tree-view\n [datasource]=\"dataSource()\"\n selectMode=\"multiple\"\n [selectionBehavior]=\"selectionBehavior()\"\n [controlledSelection]=\"true\"\n [selectedIds]=\"selectedIds()\"\n [idField]=\"valueField()\"\n [titleField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [nodeTemplate]=\"nodeTemplate()\"\n (onSelectionChange)=\"handleSelectionChange($event)\"\n />\n </div>\n `,\n})\nexport class AXLookupMultiSelectTreeComponent {\n /**\n * The tree datasource: an array of nodes or a lazy children callback.\n */\n dataSource = input.required<AXTreeViewDataSource>();\n\n /**\n * The node property used as the selection value (tree `idField`).\n */\n valueField = input('id');\n\n /**\n * The node property used as the display text (tree `titleField`).\n */\n textField = input('title');\n\n /**\n * The node property marking a node as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values.\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * How selecting parent/child nodes affects each other. Passed through to the tree-view.\n */\n selectionBehavior = input<AXTreeViewSelectionBehavior>('all');\n\n /**\n * Custom template rendered for each tree node.\n */\n nodeTemplate = input<TemplateRef<AXTreeViewItemTemplateContext> | undefined>(undefined);\n\n /**\n * Emitted when the user changes the tree selection.\n */\n selectionChange = output<AXLookupTreeSelectionEvent>();\n\n protected selectedIds = computed(() => this.selectedValues().map((v) => String(v)));\n\n protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent) {\n if (e.source !== 'user') {\n return;\n }\n this.selectionChange.emit({ ids: e.selectedIds, nodes: e.selectedNodes });\n }\n}\n","import { AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXLookupListViewBase } from './lookup-list-view-base';\n\n/**\n * Internal mini component for the `multi-select` lookup mode:\n * a predefined, virtualized list of options with checkboxes for multiple item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe, AXListNavigationModule],\n providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupMultiSelectComponent }],\n template: `\n @if (isEmpty()) {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n <div class=\"ax-lookup-empty\">\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </div>\n }\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n axListNavigation\n #nav=\"axListNavigation\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n (onKeypress)=\"handleListKeypress($event)\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); let i = index; trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option-host ax-lookup-option\"\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-lookup-option-host--check]=\"!!itemTemplate()\"\n [class.ax-state-alternate]=\"alternate() && i % 2 === 1\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [class.ax-state-active]=\"navItem.isActive()\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (mouseenter)=\"activateNavItem(nav, navItem)\"\n (mousedown)=\"handleItemMouseDown($event, item)\"\n (onKeypress)=\"handleItemKeypress($event, item)\"\n >\n @if (item != null) {\n <input\n type=\"checkbox\"\n class=\"ax-lookup-checkbox\"\n tabindex=\"-1\"\n [checked]=\"isSelected(item)\"\n [disabled]=\"isDisabled(item)\"\n />\n @if (itemTemplate()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"ax-lookup-option-text\">{{ getText(item) }}</span>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingRow\" />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n\n <ng-template #loadingRow>\n @if (loadingTemplate()) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate()!\" />\n } @else {\n <span class=\"ax-lookup-option-loading\">{{ '@acorex:common.status.loading' | translate | async }}</span>\n }\n </ng-template>\n `,\n})\nexport class AXLookupMultiSelectComponent extends AXLookupListViewBase {}\n","import {\n AXClearableComponent,\n AXClosableComponent,\n AXComponent,\n AXDataSource,\n AXEvent,\n AXFocusEvent,\n AXItemClickEvent,\n AXItemSelectedEvent,\n AXStyleLookType,\n AXValuableComponent,\n AXValueChangedEvent,\n NXValueComponent,\n convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { AXChipsComponent } from '@acorex/components/chips';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXSearchBoxComponent } from '@acorex/components/search-box';\nimport {\n AXTreeViewCallback,\n AXTreeViewDataSource,\n AXTreeViewNode,\n AXTreeViewSelectionBehavior,\n} from '@acorex/components/tree-view';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n afterRenderEffect,\n computed,\n effect,\n inject,\n input,\n linkedSignal,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { createLookupTreeTableDataSource } from './lookup-tree-table-data-source';\nimport {\n AXLookupColumn,\n AXLookupItem,\n AXLookupItemClickEvent,\n AXLookupMode,\n AXLookupSelectionChangedEvent,\n} from './lookup.types';\nimport { AXLookupDropDownListComponent } from './views/lookup-drop-down-list.component';\nimport { AXLookupDropDownTreeComponent } from './views/lookup-drop-down-tree.component';\nimport { AXLookupListViewBase } from './views/lookup-list-view-base';\nimport { AXLookupMultiColumnTreeComponent } from './views/lookup-multi-column-tree.component';\nimport { AXLookupMultiColumnComponent } from './views/lookup-multi-column.component';\nimport {\n AXLookupMultiSelectTreeComponent,\n AXLookupTreeSelectionEvent,\n} from './views/lookup-multi-select-tree.component';\nimport { AXLookupMultiSelectComponent } from './views/lookup-multi-select.component';\n\n/**\n * An advanced drop-down (lookup) editor with six modes, `AXDataSource` support, and virtual scrolling.\n *\n * Modes (each rendered by its own internal mini component):\n * - `drop-down-list` — a predefined list of options for picking single values.\n * - `multi-select` — a predefined list of options for multiple item selection (chips in the trigger).\n * - `drop-down-tree` — a predefined list rendered in a tree-like structure for single item selection.\n * - `multi-select-tree` — a tree-like structure for multiple item selection.\n * - `multi-column` — an `ax-data-table` grid; when searchable, the trigger input filters as you type\n * (on small screens the search field is inside the actionsheet).\n * - `multi-column-tree` — a multi-column `ax-data-table` with a drop-down tree inside it\n * (expandable hierarchical rows). Uses `treeDataSource` + `columns`, or a hierarchical `dataSource`.\n *\n * With `adaptivityEnabled` (default `true`), the list opens as a bottom actionsheet on small\n * screens instead of an anchored dropdown — the same alternate presentation as `ax-select-box`.\n *\n * Implements {@link FormValueControl} so `[(ngModel)]` / signal forms work via the `value` model\n * (no `ControlValueAccessor`).\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup',\n templateUrl: './lookup.component.html',\n styleUrls: ['./lookup.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n AsyncPipe,\n AXTranslatorPipe,\n AXChipsComponent,\n AXDecoratorModule,\n AXPopoverComponent,\n AXSearchBoxComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n AXLookupMultiColumnTreeComponent,\n ],\n providers: [\n { provide: AXComponent, useExisting: AXLookupComponent },\n { provide: AXClearableComponent, useExisting: AXLookupComponent },\n { provide: AXClosableComponent, useExisting: AXLookupComponent },\n { provide: AXValuableComponent, useExisting: AXLookupComponent },\n ],\n})\nexport class AXLookupComponent extends NXValueComponent implements FormValueControl<unknown | unknown[] | null> {\n readonly #platform = inject(AXPlatform);\n readonly #destroyRef = inject(DestroyRef);\n\n /**\n * The name of the form field, used by validation rules and `ax-form.validate(names)`.\n */\n name = input('');\n\n /**\n * The lookup rendering mode. Selects which mini component renders in the popup.\n */\n mode = input<AXLookupMode>('drop-down-list');\n\n /**\n * The items source for list-based modes (`drop-down-list`, `multi-select`, `multi-column`)\n * and for `multi-column-tree` when `treeDataSource` is not set.\n * Accepts an `AXDataSource` (remote paging, `byKey`, server-side filter) or a plain array.\n */\n dataSource = input<AXDataSource<AXLookupItem> | AXLookupItem[] | undefined>(undefined);\n\n /**\n * The nodes source for tree modes (`drop-down-tree`, `multi-select-tree`, `multi-column-tree`):\n * an array of nodes or a lazy children callback.\n */\n treeDataSource = input<AXTreeViewDataSource | undefined>(undefined);\n\n /**\n * The item property used as the selection value. Maps to the tree `idField` in tree modes.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text. Maps to the tree `titleField` in tree modes\n * (set it to `title` when your nodes use the default tree shape).\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Column definitions for the `multi-column` and `multi-column-tree` modes\n * (rendered as `ax-text-column` in `ax-data-table`).\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Field used by `multi-column-tree` to fetch children when a row is expanded\n * (`AXDataSource` filter). Defaults to `parentId`. Nested `children` arrays are also supported.\n */\n treeParentField = input('parentId');\n\n /**\n * Field used by `multi-column-tree` to decide whether a row shows an expand control.\n * Defaults to `hasChild`. Nodes with `children` / `childrenCount` are mapped automatically\n * when using `treeDataSource`.\n */\n hasChildrenField = input('hasChild');\n\n /**\n * Whether the trigger accepts typing and filters the datasource (`true`),\n * or is select-only with no writable input (`false`).\n * Applies to `drop-down-list`, `multi-select`, `multi-column`, and `multi-column-tree`.\n * Tree-only modes (`drop-down-tree`, `multi-select-tree`) ignore this.\n * On small screens with `adaptivityEnabled`, search is typed in the actionsheet instead of the trigger.\n */\n searchable = input(true);\n\n /**\n * When `true` (default), the popup list uses the alternate actionsheet presentation on small\n * screens (`SM`). Searchable list modes then show a search field inside the sheet. When `false`,\n * the list always opens as an anchored dropdown.\n */\n adaptivityEnabled = input(true);\n\n /**\n * Title shown in the actionsheet header on small screens. Falls back to `placeholder`.\n */\n caption = input('');\n\n /**\n * When `true`, list rows use alternating background colors for easier scanning\n * (`drop-down-list`, `multi-select`, `multi-column`, and `multi-column-tree` modes).\n */\n alternate = input(false);\n\n /**\n * Placeholder for the trigger search input when items are already selected\n * (mainly useful in `multi-select`), and for the in-sheet search field on small screens.\n * Falls back to `placeholder` when the selection is empty on desktop.\n */\n searchPlaceholder = input('Search...');\n\n /**\n * The placeholder text shown when no value is selected.\n */\n placeholder = input('');\n\n /**\n * Whether the lookup is disabled.\n */\n readonly disabled = input(false);\n\n /**\n * Whether the lookup is readonly.\n */\n readonly readonly = input(false);\n\n /**\n * Predefined look scheme of the editor container. Same looks as other editor components like ax-text-box.\n */\n look = model<AXStyleLookType>('solid');\n\n /**\n * The fixed row height in pixels used by the virtual scroll viewport (list-based modes).\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of rows visible before the popup scrolls (list-based modes).\n */\n maxVisibleItems = input(8);\n\n /**\n * How selecting parent/child nodes affects each other in `multi-select-tree` mode.\n */\n treeSelectionBehavior = input<AXTreeViewSelectionBehavior>('all');\n\n /**\n * Custom template rendered for each item/node. Context: `$implicit` is the item.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template for the selected item display (trigger text / chips). Context: `$implicit` is the item.\n */\n selectedTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for rows whose page is still loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * The selected value(s): a scalar in single modes, an array in\n * `multi-select` / `multi-select-tree`. Supports `[(value)]`, `[(ngModel)]`, and signal forms\n * via {@link FormValueControl}.\n */\n readonly value = model<unknown | unknown[] | null>(null);\n\n /**\n * Full items that resolve the current `value` key(s) without calling datasource `byKey`.\n * Use when the parent already has the selected entity (e.g. edit forms). Seeds the internal\n * item cache; missing keys still fall through to `find` / `byKey`.\n */\n valueItems = input<AXLookupItem[]>([]);\n\n /**\n * Emitted when the selected value changes.\n */\n onValueChanged = output<AXValueChangedEvent<unknown | unknown[] | null>>();\n\n /**\n * Emitted when the selection changes, carrying the resolved selected items.\n */\n onSelectionChanged = output<AXLookupSelectionChangedEvent>();\n\n /**\n * Emitted when the trigger receives focus.\n */\n onFocus = output<AXFocusEvent>();\n\n /**\n * Emitted when the trigger loses focus.\n */\n onBlur = output<AXFocusEvent>();\n\n /**\n * Emitted when a list/tree item is clicked.\n */\n onItemClick = output<AXItemClickEvent<AXLookupItem>>();\n\n /**\n * Emitted when an item is selected (click or keyboard).\n */\n onItemSelected = output<AXItemSelectedEvent<AXLookupItem>>();\n\n /**\n * Emitted when the popup opens.\n */\n onOpened = output<AXEvent>();\n\n /**\n * Emitted when the popup closes.\n */\n onClosed = output<AXEvent>();\n\n /** Whether the popup is expanded. */\n protected expanded = signal(false);\n\n /** Whether the list is currently shown as a bottom actionsheet (small screens + adaptivity). */\n protected isActionsheetStyle = signal(false);\n\n /** Whether the current mode selects multiple values. */\n protected isMultiple = computed(() => this.mode() === 'multi-select' || this.mode() === 'multi-select-tree');\n\n /** Whether the current mode renders a tree. */\n protected isTreeMode = computed(() => {\n const mode = this.mode();\n return (\n mode === 'drop-down-tree' ||\n mode === 'multi-select-tree' ||\n (mode === 'multi-column-tree' && this.treeDataSource() != null)\n );\n });\n\n /** Whether the current mode can filter a list/table as you type. */\n protected isListSearchMode = computed(() => {\n const mode = this.mode();\n return (\n mode === 'drop-down-list' || mode === 'multi-select' || mode === 'multi-column' || mode === 'multi-column-tree'\n );\n });\n\n /** Whether the trigger input is writable and filters as you type (desktop only). */\n protected isEditableTrigger = computed(\n () => this.searchable() && !this.readonly() && !this.isActionsheetStyle() && this.isListSearchMode(),\n );\n\n /** Whether search is typed in the actionsheet instead of the trigger. */\n protected isSheetSearchEnabled = computed(\n () => this.searchable() && !this.readonly() && this.isActionsheetStyle() && this.isListSearchMode(),\n );\n\n /** Query typed in the actionsheet search field (independent of the trigger display text). */\n protected sheetSearchText = signal('');\n\n /** Reused so closing/reopening the popup does not create a new AXDataSource (which would miss cache). */\n #multiColumnTreeTableSource?: AXDataSource<AXLookupItem>;\n #multiColumnTreeTableKey?: string;\n #multiColumnTreeInput?: AXTreeViewDataSource;\n\n /** The datasource for list-based modes; plain arrays are converted. */\n protected resolvedDataSource = computed<AXDataSource<AXLookupItem>>(() => {\n const tree = this.treeDataSource();\n if (this.mode() === 'multi-column-tree' && tree) {\n const key = `${this.valueField()}|${this.textField()}|${this.treeParentField()}|${this.hasChildrenField()}`;\n if (\n this.#multiColumnTreeTableSource &&\n this.#multiColumnTreeInput === tree &&\n this.#multiColumnTreeTableKey === key\n ) {\n return this.#multiColumnTreeTableSource;\n }\n\n const cachedTree: AXTreeViewDataSource = Array.isArray(tree)\n ? tree\n : (nodeId?: string) => this.#loadCachedTreeNodes(tree, nodeId);\n this.#multiColumnTreeInput = tree;\n this.#multiColumnTreeTableKey = key;\n this.#multiColumnTreeTableSource = createLookupTreeTableDataSource(cachedTree, {\n valueField: this.valueField(),\n textField: this.textField(),\n parentField: this.treeParentField(),\n hasChildrenField: this.hasChildrenField(),\n });\n return this.#multiColumnTreeTableSource;\n }\n\n const source = this.dataSource();\n if (!source) {\n return convertArrayToDataSource<AXLookupItem>([], { key: this.valueField(), pageSize: 20 });\n }\n return Array.isArray(source)\n ? convertArrayToDataSource<AXLookupItem>(source, { key: this.valueField(), pageSize: 20 })\n : source;\n });\n\n /**\n * Tree callback results keyed by parent id. Survives popup remount so\n * drop-down-tree / multi-select-tree do not refetch on every open.\n */\n readonly #treeChildrenCache = new WeakMap<AXTreeViewCallback, Map<string, Promise<AXTreeViewNode[]>>>();\n\n protected resolvedTreeDataSource = computed<AXTreeViewDataSource>(() => {\n const source = this.treeDataSource();\n if (!source) {\n return [];\n }\n if (Array.isArray(source)) {\n return source;\n }\n return (nodeId?: string) => this.#loadCachedTreeNodes(source, nodeId);\n });\n\n /** The current selection normalized to an array. */\n protected selectedValues = computed<unknown[]>(() => {\n const value = this.value();\n if (value == null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n });\n\n /** The resolved selected items (via cache, datasource `find`/`byKey`, or tree node lookup). */\n protected selectedItems = signal<AXLookupItem[]>([]);\n\n /** Display text shown in the trigger for single modes. */\n protected displayText = computed(() => {\n const item = this.selectedItems()[0];\n return item ? this.getItemText(item) : '';\n });\n\n /**\n * Text typed in the editable trigger input.\n * Multi-select starts empty; single modes sync from the selected display text.\n */\n protected searchText = linkedSignal(() => (this.isMultiple() ? '' : this.displayText()));\n\n /**\n * Whether the trigger should render `selectedTemplate` instead of the plain input text.\n * Searchable mode shows the template while the popup is closed and the input still matches\n * the selected display text (same pattern as combo-box).\n */\n protected showSelectedTemplate = computed(() => {\n if (this.isMultiple() || !this.selectedTemplate() || this.selectedItems().length === 0) {\n return false;\n }\n if (!this.isEditableTrigger()) {\n return true;\n }\n return !this.expanded() && this.searchText() === this.displayText();\n });\n\n /** Placeholder for the editable trigger search input. */\n protected triggerSearchPlaceholder = computed(() => {\n if (this.isActionsheetStyle()) {\n return this.mode() === 'multi-select' && this.selectedItems().length > 0 ? '' : this.placeholder();\n }\n if (this.mode() === 'multi-select' && this.selectedItems().length > 0) {\n return this.searchPlaceholder();\n }\n return this.placeholder();\n });\n\n protected popoverRef = viewChild(AXPopoverComponent);\n protected triggerSearchInput = viewChild<ElementRef<HTMLInputElement>>('triggerSearchInput');\n protected listView = viewChild(AXLookupListViewBase);\n protected sheetSearchRef = viewChild<AXSearchBoxComponent>('sheetSearch');\n\n #itemsCache = new Map<unknown, AXLookupItem>();\n #isUserInteraction = false;\n #lastValue: unknown | unknown[] | null | undefined = undefined;\n #lastExpanded: boolean | undefined = undefined;\n #resolveRevision = 0;\n #selectionInitialized = false;\n #filterApplied = false;\n #searchDebounce?: ReturnType<typeof setTimeout>;\n #sheetSearchFocused = false;\n\n constructor() {\n super();\n\n effect(() => this.#emitValueChanged(this.value()));\n effect(() => this.#emitOpenedOrClosed(this.expanded()));\n effect(() => {\n this.adaptivityEnabled();\n untracked(() => this.#syncActionsheetStyle());\n });\n\n this.#platform.resize.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n this.#syncActionsheetStyle();\n // Match dropdown-box: close anchored dropdowns on resize; keep actionsheet open.\n if (this.expanded() && !this.isActionsheetStyle()) {\n this.close();\n }\n });\n\n // Seed the actionsheet flag once.\n this.#syncActionsheetStyle();\n\n // Seed the item cache from valueItems, then resolve selection.\n effect(() => {\n const seeded = this.valueItems();\n const values = this.selectedValues();\n this.valueField();\n this.mode();\n this.dataSource();\n this.treeDataSource();\n untracked(() => {\n this.#seedItemsCache(seeded);\n void this.#resolveSelectedItems(values);\n });\n });\n\n // Keep the popover in sync with the expanded state.\n effect(() => {\n const expanded = this.expanded();\n const popover = this.popoverRef();\n if (!popover) {\n return;\n }\n untracked(() => {\n if (expanded && !popover.isOpen) {\n void popover.open();\n } else if (!expanded && popover.isOpen) {\n popover.close();\n }\n });\n });\n\n afterRenderEffect(() => {\n if (!this.expanded()) {\n this.#sheetSearchFocused = false;\n return;\n }\n this.#tryFocusSheetSearch();\n });\n }\n\n #syncActionsheetStyle() {\n this.isActionsheetStyle.set(this.adaptivityEnabled() && this.#platform.is('SM'));\n }\n\n /** Returns the display text of an item using the `textField` mapping. */\n protected getItemText(item: AXLookupItem): string {\n return String(item?.[this.textField()] ?? '');\n }\n\n /** Stable unique key for selected chips — avoids NG0955 and remounts on reorder/remove. */\n protected trackSelectedKey(item: AXLookupItem): unknown {\n const key = item?.[this.valueField()];\n return key != null ? key : item;\n }\n\n /**\n * Opens (editable trigger) or toggles the popup on trigger click.\n */\n protected onTriggerClick() {\n if (this.disabled() || this.readonly()) {\n return;\n }\n if (this.isEditableTrigger()) {\n this.expanded.set(true);\n queueMicrotask(() => this.triggerSearchInput()?.nativeElement.focus());\n return;\n }\n this.expanded.update((open) => !open);\n if (!this.expanded()) {\n return;\n }\n queueMicrotask(() => this.#focusPopupSearchOrList());\n }\n\n /**\n * Focuses the lookup trigger input.\n */\n focus(options?: FocusOptions): void {\n if (this.disabled()) {\n return;\n }\n this.triggerSearchInput()?.nativeElement.focus(options);\n }\n\n /**\n * Handles keyboard interaction on the trigger input.\n */\n protected onTriggerKeydown(e: KeyboardEvent) {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n if (e.key === 'Escape') {\n this.close();\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this.expanded.set(true);\n queueMicrotask(() => this.#focusPopupSearchOrList());\n return;\n }\n\n if (!this.isEditableTrigger() && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n this.expanded.update((open) => !open);\n if (this.expanded()) {\n queueMicrotask(() => this.#focusPopupSearchOrList());\n }\n }\n }\n\n /** Blocks typing when the trigger is not editable (keeps Tab / keyboard open working). */\n protected onBeforeInput(event: Event) {\n if (!this.isEditableTrigger() || this.readonly()) {\n event.preventDefault();\n }\n }\n\n /**\n * Returns focus to the search field when list navigation requests it.\n */\n protected onListNavigateOut(_reason: 'up' | 'typeahead') {\n if (this.isSheetSearchEnabled()) {\n this.sheetSearchRef()?.focus();\n return;\n }\n this.triggerSearchInput()?.nativeElement.focus();\n }\n\n protected focusListFirst() {\n const tryFocus = (attempt = 0) => {\n const list = this.listView();\n if (list) {\n list.focusFirst();\n return;\n }\n if (attempt < 5) {\n setTimeout(() => tryFocus(attempt + 1), 16);\n }\n };\n tryFocus();\n }\n\n /**\n * Keeps the expanded state in sync when the popover closes (e.g. click outside),\n * and clears any applied search filter.\n */\n protected onPopoverClosed() {\n this.expanded.set(false);\n this.searchText.set(this.isMultiple() ? '' : this.displayText());\n this.sheetSearchText.set('');\n if (this.#filterApplied) {\n this.#filterApplied = false;\n const source = this.resolvedDataSource();\n source.clearFilter();\n source.refresh();\n }\n }\n\n /**\n * Closes the popup.\n */\n close() {\n this.expanded.set(false);\n }\n\n /**\n * Closes the popup (alias for {@link close}, required by `AXClosableComponent`).\n */\n closeAll() {\n this.close();\n }\n\n /**\n * Opens the popup.\n */\n open() {\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.expanded.set(true);\n }\n\n /**\n * Handles typing in the editable trigger input.\n */\n protected onTriggerSearchInput(text: string) {\n if (!this.isEditableTrigger()) {\n return;\n }\n this.searchText.set(text);\n this.expanded.set(true);\n this.#applyFilterDebounced(text);\n }\n\n /** Filters the datasource from the actionsheet search field (reads the input so delayed ngModel cannot block typing). */\n protected onSheetSearchInput() {\n const query = this.#sheetSearchInputValue();\n this.sheetSearchText.set(query);\n this.#applyFilterDebounced(query);\n }\n\n /**\n * Commits a single pick (drop-down-list, drop-down-tree, multi-column, multi-column-tree) and closes the popup.\n */\n protected handleSinglePick(e: AXLookupItemClickEvent) {\n this.#emitItemClick(e.item);\n this.#emitItemSelected(e.item);\n this.#itemsCache.set(e.value, e.item);\n this.selectedItems.set([e.item]);\n this.searchText.set(this.getItemText(e.item));\n this.#isUserInteraction = true;\n this.value.set(e.value);\n this.close();\n }\n\n /**\n * Toggles an item in the multi-select list; the popup stays open.\n * Clears the trigger search so the full list returns (select-box-like).\n */\n protected handleMultiToggle(e: AXLookupItemClickEvent) {\n this.#emitItemClick(e.item);\n this.#itemsCache.set(e.value, e.item);\n const current = this.selectedValues();\n const exists = current.some((v) => v == e.value);\n if (!exists) {\n this.#emitItemSelected(e.item);\n }\n const next = exists ? current.filter((v) => !(v == e.value)) : [...current, e.value];\n this.#isUserInteraction = true;\n this.value.set(next);\n if (this.isSheetSearchEnabled() && this.sheetSearchText()) {\n this.#clearSheetSearch();\n } else if (this.isEditableTrigger() && this.searchText()) {\n this.searchText.set('');\n this.#applyFilterDebounced('');\n }\n }\n\n /**\n * Applies the multi-select-tree selection to the value; the popup stays open.\n */\n protected handleTreeSelectionChange(e: AXLookupTreeSelectionEvent) {\n const prev = new Set(this.selectedValues().map((v) => String(v)));\n const newlySelected = e.nodes.filter((node) => !prev.has(String(node[this.valueField()])));\n if (newlySelected.length > 0) {\n this.#emitItemSelected(newlySelected[0]);\n }\n for (const node of e.nodes) {\n this.#itemsCache.set(String(node[this.valueField()]), node);\n }\n this.#isUserInteraction = true;\n this.value.set([...e.ids]);\n }\n\n /** Forwards native focus from the trigger input. */\n protected emitOnFocus(e: FocusEvent) {\n this.onFocus.emit({\n component: this,\n htmlElement: this.nativeElement,\n nativeEvent: e,\n });\n }\n\n /** Forwards native blur from the trigger input. */\n protected emitOnBlur(e: FocusEvent) {\n this.onBlur.emit({\n component: this,\n htmlElement: this.nativeElement,\n nativeEvent: e,\n });\n }\n\n #emitItemClick(item: AXLookupItem) {\n this.onItemClick.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n }\n\n #emitItemSelected(item: AXLookupItem) {\n this.onItemSelected.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n }\n\n /**\n * Removes a single chip from the multi selection.\n */\n protected removeChip(event: Event, item: AXLookupItem) {\n event.stopPropagation();\n if (this.disabled() || this.readonly()) {\n return;\n }\n const value = item?.[this.valueField()];\n this.#isUserInteraction = true;\n this.value.set(this.selectedValues().filter((v) => !(v == value)));\n }\n\n /**\n * Seeds the item cache with known items so matching `value` keys resolve without `byKey`.\n * Useful after an async parent-entity load when `valueItems` is not bound.\n *\n * @param items - Full items that include `valueField` (and ideally `textField`) properties.\n */\n seedItems(items: AXLookupItem[]): void {\n this.#seedItemsCache(items);\n void this.#resolveSelectedItems(this.selectedValues());\n }\n\n /**\n * Clears the whole selection.\n * Sets `null` in single modes and `[]` in multi modes. Used by projected `ax-clear-button`.\n *\n * @param isUserInteraction - Whether the clear was triggered by the user.\n */\n reset(isUserInteraction = false): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n const next = this.isMultiple() ? [] : null;\n const current = this.value();\n if (this.isMultiple()) {\n if (Array.isArray(current) && current.length === 0) {\n return;\n }\n } else if (current == null) {\n return;\n }\n this.#isUserInteraction = isUserInteraction;\n this.value.set(next);\n if (this.isSheetSearchEnabled() && this.sheetSearchText()) {\n this.#clearSheetSearch();\n } else if (this.isEditableTrigger() && this.searchText()) {\n this.searchText.set('');\n this.#applyFilterDebounced('');\n }\n }\n\n #clearSheetSearch() {\n this.sheetSearchText.set('');\n this.sheetSearchRef()?.commitValue('', false);\n this.#applyFilterDebounced('');\n }\n\n #sheetSearchInputValue(): string {\n return this.sheetSearchRef()?.getHostElement()?.querySelector('input')?.value ?? '';\n }\n\n #tryFocusSheetSearch() {\n if (!this.isSheetSearchEnabled() || this.#sheetSearchFocused) {\n return;\n }\n const search = this.sheetSearchRef();\n if (!search) {\n return;\n }\n this.#sheetSearchFocused = true;\n search.focus();\n }\n\n #focusPopupSearchOrList() {\n if (this.isSheetSearchEnabled()) {\n this.#tryFocusSheetSearch();\n return;\n }\n this.focusListFirst();\n }\n\n #loadCachedTreeNodes(source: AXTreeViewCallback, nodeId?: string): Promise<AXTreeViewNode[]> {\n let byParent = this.#treeChildrenCache.get(source);\n if (!byParent) {\n byParent = new Map();\n this.#treeChildrenCache.set(source, byParent);\n }\n\n const key = nodeId ?? '';\n const cached = byParent.get(key);\n if (cached) {\n return cached;\n }\n\n const request = Promise.resolve(source(nodeId)).then(\n (nodes) => nodes ?? [],\n (error: unknown) => {\n byParent.delete(key);\n throw error;\n },\n );\n byParent.set(key, request);\n return request;\n }\n\n #applyFilterDebounced(text: string) {\n if (this.#searchDebounce) {\n clearTimeout(this.#searchDebounce);\n }\n this.#searchDebounce = setTimeout(() => {\n const source = this.resolvedDataSource();\n const query = text?.trim() ?? '';\n if (query) {\n source.filter({ field: this.textField(), value: query, operator: { type: 'contains' } });\n this.#filterApplied = true;\n } else {\n source.clearFilter();\n }\n source.refresh();\n }, 300);\n }\n\n async #resolveSelectedItems(values: unknown[]) {\n const revision = ++this.#resolveRevision;\n const resolved = await Promise.all(values.map((value) => Promise.resolve(this.#resolveItem(value))));\n if (revision !== this.#resolveRevision) {\n return;\n }\n const items = resolved.filter((item): item is AXLookupItem => item != null);\n this.selectedItems.set(items);\n if (this.#selectionInitialized) {\n this.onSelectionChanged.emit({\n component: this,\n htmlElement: this.nativeElement,\n isUserInteraction: this.#isUserInteraction,\n items,\n value: this.value(),\n });\n }\n this.#selectionInitialized = true;\n }\n\n #seedItemsCache(items: AXLookupItem[]) {\n if (!items?.length) {\n return;\n }\n const field = this.valueField();\n for (const item of items) {\n const key = item?.[field];\n if (key == null) {\n continue;\n }\n this.#itemsCache.set(key, item);\n this.#itemsCache.set(String(key), item);\n }\n }\n\n #resolveItem(value: unknown): AXLookupItem | Promise<AXLookupItem | null> | null {\n const cached = this.#itemsCache.get(value) ?? this.#itemsCache.get(String(value));\n if (cached) {\n return cached;\n }\n\n if (this.isTreeMode()) {\n const nodes = this.treeDataSource();\n if (Array.isArray(nodes)) {\n const found = this.#findTreeNode(nodes, value);\n if (found) {\n this.#itemsCache.set(value, found);\n return found;\n }\n }\n return this.#fallbackItem(value);\n }\n\n const source = this.resolvedDataSource();\n const result = source.find(value);\n if (result == null) {\n return this.#fallbackItem(value);\n }\n if (result instanceof Promise) {\n return result.then((item) => {\n if (item) {\n this.#itemsCache.set(value, item);\n return item;\n }\n return this.#fallbackItem(value);\n });\n }\n this.#itemsCache.set(value, result);\n return result;\n }\n\n #fallbackItem(value: unknown): AXLookupItem {\n return { [this.valueField()]: value, [this.textField()]: String(value) };\n }\n\n #findTreeNode(nodes: AXLookupItem[], value: unknown): AXLookupItem | null {\n for (const node of nodes) {\n if (String(node[this.valueField()]) === String(value)) {\n return node;\n }\n const children = node['children'];\n if (Array.isArray(children)) {\n const found = this.#findTreeNode(children as AXLookupItem[], value);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n #valuesEqual(a: unknown, b: unknown): boolean {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((item, index) => item == b[index]);\n }\n return false;\n }\n\n /** Emits onValueChanged when the value actually changes (skips the initial value). */\n #emitValueChanged(value: unknown | unknown[] | null) {\n const previous = this.#lastValue;\n this.#lastValue = value;\n\n if (previous === undefined || this.#valuesEqual(previous, value)) {\n return;\n }\n\n this.onValueChanged.emit({\n component: this,\n htmlElement: this.nativeElement,\n name: 'value',\n value,\n oldValue: previous,\n isUserInteraction: this.#isUserInteraction,\n });\n this.#isUserInteraction = false;\n }\n\n /** Emits onOpened/onClosed when the expanded state actually changes (skips the initial state). */\n #emitOpenedOrClosed(expanded: boolean) {\n const previous = this.#lastExpanded;\n this.#lastExpanded = expanded;\n\n if (previous === undefined || previous === expanded) {\n return;\n }\n\n const event: AXEvent = {\n component: this,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n };\n expanded ? this.onOpened.emit(event) : this.onClosed.emit(event);\n }\n}\n","<div\n #origin\n class=\"ax-editor-container ax-{{ look() }} ax-default\"\n [class.ax-lookup-trigger]=\"!isEditableTrigger()\"\n [class.ax-lookup-trigger-multiple]=\"isMultiple()\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <ng-content select=\"ax-prefix\"></ng-content>\n\n @if (isMultiple()) {\n <div class=\"ax-lookup-chips\">\n @for (item of selectedItems(); track trackSelectedKey(item)) {\n <ax-chips class=\"ax-sm\" color=\"primary\" look=\"twotone\" [text]=\"selectedTemplate() ? '' : getItemText(item)\">\n @if (selectedTemplate()) {\n <ax-prefix>\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </ax-prefix>\n }\n @if (!disabled() && !readonly()) {\n <ax-suffix>\n <button type=\"button\" tabindex=\"-1\" (click)=\"removeChip($event, item)\">\n <span class=\"ax-icon ax-icon-close\"></span>\n </button>\n </ax-suffix>\n }\n </ax-chips>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input ax-lookup-trigger-search\"\n [class.ax-lookup-select-input]=\"!isEditableTrigger()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !isEditableTrigger()\"\n [attr.inputmode]=\"isEditableTrigger() ? null : 'none'\"\n [value]=\"searchText()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (beforeinput)=\"onBeforeInput($event)\"\n (focus)=\"emitOnFocus($event)\"\n (blur)=\"emitOnBlur($event)\"\n />\n </div>\n } @else {\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!isEditableTrigger()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !isEditableTrigger()\"\n [attr.inputmode]=\"isEditableTrigger() ? null : 'none'\"\n [value]=\"searchText()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (beforeinput)=\"onBeforeInput($event)\"\n (focus)=\"emitOnFocus($event)\"\n (blur)=\"emitOnBlur($event)\"\n />\n </div>\n }\n\n @if (selectedValues().length > 0 && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <button\n type=\"button\"\n class=\"ax-general-button-icon\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || readonly()\"\n >\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></span>\n </button>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"isActionsheetStyle() ? '100%' : origin.offsetWidth + 'px'\"\n [adaptivityEnabled]=\"isActionsheetStyle()\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" [class.ax-is-actionsheet]=\"isActionsheetStyle()\" [class.ax-is-alternate]=\"alternate()\" (keydown.escape)=\"close()\">\n @if (isActionsheetStyle()) {\n <ax-header class=\"ax-solid\">\n <ax-title>{{ caption() || placeholder() || ('@acorex:selectbox.popover.title' | translate | async) }}</ax-title>\n <ax-close-button [icon]=\"isMultiple() ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\"></ax-close-button>\n </ax-header>\n }\n @if (isSheetSearchEnabled()) {\n <div class=\"ax-lookup-sheet-search\">\n <ax-search-box\n #sheetSearch\n class=\"ax-sm\"\n look=\"fill\"\n [autoSearch]=\"false\"\n [delayTime]=\"0\"\n [placeholder]=\"searchPlaceholder()\"\n (onValueChanged)=\"onSheetSearchInput()\"\n (onKeyUp)=\"onSheetSearchInput()\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n }\n <ng-content select=\"ax-header\"></ng-content>\n @if (expanded()) {\n @switch (mode()) {\n @case ('drop-down-list') {\n <ax-lookup-drop-down-list\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleSinglePick($event)\"\n (navigateOut)=\"onListNavigateOut($event)\"\n />\n }\n @case ('multi-select') {\n <ax-lookup-multi-select\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleMultiToggle($event)\"\n (navigateOut)=\"onListNavigateOut($event)\"\n />\n }\n @case ('drop-down-tree') {\n <ax-lookup-drop-down-tree\n [dataSource]=\"resolvedTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [nodeTemplate]=\"$any(itemTemplate())\"\n (itemClick)=\"handleSinglePick($event)\"\n />\n }\n @case ('multi-select-tree') {\n <ax-lookup-multi-select-tree\n [dataSource]=\"resolvedTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [selectionBehavior]=\"treeSelectionBehavior()\"\n [nodeTemplate]=\"$any(itemTemplate())\"\n (selectionChange)=\"handleTreeSelectionChange($event)\"\n />\n }\n @case ('multi-column') {\n <ax-lookup-multi-column\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [columns]=\"columns()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleSinglePick($event)\"\n />\n }\n @case ('multi-column-tree') {\n <ax-lookup-multi-column-tree\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [parentField]=\"treeParentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [columns]=\"columns()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleSinglePick($event)\"\n />\n }\n }\n }\n <ng-content select=\"ax-footer\"></ng-content>\n </div>\n</ax-popover>\n<ng-content select=\"ax-validation-rule\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { AXLookupComponent } from './lookup.component';\nimport { AXLookupDropDownListComponent } from './views/lookup-drop-down-list.component';\nimport { AXLookupDropDownTreeComponent } from './views/lookup-drop-down-tree.component';\nimport { AXLookupMultiColumnComponent } from './views/lookup-multi-column.component';\nimport { AXLookupMultiColumnTreeComponent } from './views/lookup-multi-column-tree.component';\nimport { AXLookupMultiSelectTreeComponent } from './views/lookup-multi-select-tree.component';\nimport { AXLookupMultiSelectComponent } from './views/lookup-multi-select.component';\n\n@NgModule({\n imports: [\n AXLookupComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n AXLookupMultiColumnTreeComponent,\n ],\n exports: [\n AXLookupComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n AXLookupMultiColumnTreeComponent,\n ],\n})\nexport class AXLookupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;;AAeA;;;AAGG;AACG,SAAU,+BAA+B,CAC7C,MAA4B,EAC5B,OAA2C,EAAA;AAE3C,IAAA,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,UAAU;IAE/C,OAAO,IAAI,YAAY,CAAe;AACpC,QAAA,QAAQ,EAAE,CAAC;QACX,GAAG,EAAE,OAAO,CAAC,UAAU;AACvB,QAAA,IAAI,EAAE,CAAC,KAAK,KAAK,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC;AACtE,QAAA,KAAK,EAAE,CAAC,GAAG,KAAK,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;AACnE,KAAA,CAAC;AACJ;AAEA,eAAe,iBAAiB,CAC9B,MAA4B,EAC5B,OAA2C,EAC3C,KAAwB,EACxB,UAAmB,EAAA;IAEnB,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,KAAK,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS;IAC3F,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS;IAExG,IAAI,YAAY,EAAE;AAChB,QAAA,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC;QACpF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE;IACpD;AAEA,IAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IACxE,MAAM,KAAK,GAAG,UAAU,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,KAAK;IAC5G,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;AACvC;AAEA,eAAe,SAAS,CAAC,MAA4B,EAAE,UAAmB,EAAA;IACxE,IAAI,CAAC,UAAU,EAAE;QACf,OAAQ,MAA2B,IAAI,EAAE;IAC3C;AACA,IAAA,OAAO,CAAC,MAAO,MAA4E,EAAE,KAAK,EAAE;AACtG;AAEA,eAAe,YAAY,CACzB,MAA4B,EAC5B,OAA2C,EAC3C,QAAiB,EACjB,UAAmB,EAAA;IAEnB,IAAI,UAAU,EAAE;AACd,QAAA,MAAM,KAAK,GACT,CAAC,MAAO,MAA4E,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;AAC/G,QAAA,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;IACrC;AAEA,IAAA,MAAM,MAAM,GAAG,YAAY,CAAC,MAA0B,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;IACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,GAAI,MAAM,CAAC,UAAU,CAAsB,GAAG,EAAE;AACpG,IAAA,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;AACxC;AAEA,SAAS,YAAY,CAAC,KAAuB,EAAE,OAA2C,EAAA;AACxF,IAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxD;AAEA,SAAS,WAAW,CAAC,IAAoB,EAAE,OAA2C,EAAA;AACpF,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAA+B,EAAE,OAAO,CAAC,GAAG,SAAS;AAChH,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;IAC3C,MAAM,WAAW,GACf,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;SAC1B,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,GAAG,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI;IAE9B,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,CAAC,OAAO,CAAC,gBAAgB,GAAG,WAAW;AACvC,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;KACzD;AACH;AAEA,SAAS,eAAe,CAAC,KAAqB,EAAE,SAAiB,EAAE,KAAa,EAAA;IAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;IACzC,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,KAAK;IACd;IAEA,MAAM,MAAM,GAAmB,EAAE;AACjC,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,WAA6B,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,SAAS;QAC3H,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC3C,aAAA,WAAW;aACX,QAAQ,CAAC,MAAM,CAAC;QACnB,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB;aAAO,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC;AACV,gBAAA,GAAG,IAAI;gBACP,QAAQ;AACT,aAAA,CAAC;QACJ;IACF;AACA,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,iBAAiB,CACxB,MAA4B,EAC5B,UAAkB,EAClB,GAAY,EAAA;AAEZ,IAAA,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC1D,QAAA,OAAO,SAAS;IAClB;IACA,OAAO,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,SAAS;AAC3D;AAEA,SAAS,YAAY,CAAC,KAAuB,EAAE,UAAkB,EAAE,GAAY,EAAA;AAC7E,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE;AAC5C,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,KAAK,GAAG,YAAY,CAAC,QAA4B,EAAE,UAAU,EAAE,GAAG,CAAC;YACzE,IAAI,KAAK,EAAE;AACT,gBAAA,OAAO,KAAK;YACd;QACF;IACF;AACA,IAAA,OAAO,IAAI;AACb;;AC7HA;;;AAGG;MAEmB,oBAAoB,CAAA;AAqFxC,IAAA,OAAO;AAEP,IAAA,WAAA,GAAA;AAtFA;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ;uFAA8B;AAEzD;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI;uFAAC;AAExB;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM;sFAAC;AAEzB;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,UAAU;0FAAC;AAEjC;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK,CAAY,EAAE;2FAAC;AAErC;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE;uFAAC;AAEtB;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,CAAC;4FAAC;AAE1B;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmC,SAAS;yFAAC;AAEjE;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAmC,SAAS;0FAAC;AAElE;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAmC,SAAS;4FAAC;AAEpE;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK;sFAAC;AAExB;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,EAA0B;AAE5C;;;AAGG;QACH,IAAA,CAAA,WAAW,GAAG,MAAM,EAAsB;;QAGhC,IAAA,CAAA,cAAc,GAAG,MAAM,CAAwC,IAAI;2FAAC;QAEpE,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,CAAC;uFAAC;QACtB,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,IAAI;sFAAC;AAExB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oFAAC;;AAGtE,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7D,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;QACpE,CAAC;2FAAC;QAEQ,IAAA,CAAA,WAAW,GAAG,SAAS,CAAC,wBAAwB;wFAAC;QACjD,IAAA,CAAA,cAAc,GAAG,SAAS,CAAC,yBAAyB;2FAAC;QACrD,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,6BAA6B;qFAAC;AAEhE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAoJd,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAa,KAAK,KAAK;;;;;;AA5I/C,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;YACnC,IAAI,CAAC,QAAQ,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;gBACtD;YACF;AACA,YAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAK;AACvC,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;AACtD,YAAA,CAAC,CAAC;YACF,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;YACnD,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AACxC,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;YAChC,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAAe,EAAE,MAAM,EAAE,CAAC;AAC3D,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC;YAC/D,SAAS,CAAC,MAAK;gBACb,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACtC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACrD,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,YAAA,CAAC,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1F,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;;;YAIvF,cAAc,CAAC,MAAK;AAClB,gBAAA,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE;oBACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACtC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;oBACzB;gBACF;AACA,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACnB,YAAA,CAAC,CAAC;YAEF,SAAS,CAAC,MAAK;gBACb,UAAU,CAAC,WAAW,EAAE;gBACxB,UAAU,CAAC,WAAW,EAAE;AAC1B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;IAGA,UAAU,GAAA;QACR,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;IACxC;AAEU,IAAA,QAAQ,CAAC,IAAkB,EAAA;QACnC,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAClC;AAEU,IAAA,OAAO,CAAC,IAAkB,EAAA;AAClC,QAAA,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/C;AAEU,IAAA,UAAU,CAAC,IAAkB,EAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACtD;AAEU,IAAA,UAAU,CAAC,IAAkB,EAAA;QACrC,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC9C;AAEU,IAAA,eAAe,CAAC,IAAqC,EAAA;QAC7D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAClC;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3D;AAEA;;;AAGG;IACO,mBAAmB,CAAC,KAAY,EAAE,IAAqC,EAAA;QAC/E,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5B;IAEU,kBAAkB,CAAC,CAA6B,EAAE,IAAqC,EAAA;AAC/F,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE;AACnE,YAAA,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE;AAC/B,YAAA,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE;AAC9B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAC5B;IACF;AAEU,IAAA,kBAAkB,CAAC,CAA6B,EAAA;AACxD,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAEnC,QAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;YACvD,MAAM,MAAM,GAAG,QAAQ,EAAE,mBAAmB,EAAE,IAAI,CAAC;AACnD,YAAA,IAAI,MAAM,GAAG,CAAC,EAAE;AACd,gBAAA,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE;AAC9B,gBAAA,QAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBACjE,cAAc,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACzC;YACF;AACA,YAAA,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B;QACF;QAEA,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,IAAI,QAAQ,EAAE;AAC1C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;AACjG,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1F,gBAAA,IAAI,UAAU,GAAG,QAAQ,CAAC,mBAAmB,EAAE,EAAE;AAC/C,oBAAA,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE;AAC9B,oBAAA,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;AACnC,oBAAA,cAAc,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpE;gBACA;YACF;QACF;QAEA,IACE,GAAG,KAAK,SAAS;AACjB,YAAA,GAAG,KAAK,WAAW;AACnB,YAAA,GAAG,KAAK,KAAK;AACb,YAAA,GAAG,KAAK,OAAO;AACf,YAAA,GAAG,KAAK,OAAO;AACf,YAAA,GAAG,KAAK,QAAQ;YAChB,GAAG,KAAK,GAAG,EACX;YACA;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;IACpC;IAEU,eAAe,CAAC,GAA8B,EAAE,IAAmC,EAAA;AAC3F,QAAA,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;IACvB;8GAvOoB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiFN,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACrB,yBAAyB,8EAC5B,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAnF3C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADzC;41CAkFmC,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACrB,yBAAyB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAC5B,6BAA6B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACvGjE;;;;;AAKG;AAoEG,MAAO,6BAA8B,SAAQ,oBAAoB,CAAA;8GAA1D,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,SAAA,EA9D7B,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAChF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA7DS,eAAe,4jBAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAA+B,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAnD,gBAAgB,6CAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FA+D7D,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAnEzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;oBACpC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,OAAO,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,CAAC;oBACjG,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAA,6BAA+B,EAAE,CAAC;AAC1F,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DT,EAAA,CAAA;AACF,iBAAA;;;ACtED;;;;;AAKG;MAuBU,6BAA6B,CAAA;AAtB1C,IAAA,WAAA,GAAA;AAuBE;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ;uFAAwB;AAEnD;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI;uFAAC;AAExB;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,OAAO;sFAAC;AAE1B;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,UAAU;0FAAC;AAEjC;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK,CAAY,EAAE;2FAAC;AAErC;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAyD,SAAS;yFAAC;AAEvF;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,EAA0B;QAElC,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;wFAAC;AAYpF,IAAA;AAVW,IAAA,qBAAqB,CAAC,CAAiC,EAAA;AAC/D,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE;YACvB;QACF;QACA,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE;YACT;QACF;QACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;IACrE;8GA/CW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjB9B;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAhBS,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAkBlB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAtBzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;oBACpC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC9B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;AAeT,EAAA,CAAA;AACF,iBAAA;;;AClBD;;;;;;AAMG;MA8DU,gCAAgC,CAAA;AA7D7C,IAAA,WAAA,GAAA;AA8DE;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ;uFAA8B;AAEzD;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI;uFAAC;AAExB;;;AAGG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM;sFAAC;AAEzB;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,UAAU;0FAAC;AAEjC;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,UAAU;wFAAC;AAE/B;;AAEG;QACH,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,UAAU;6FAAC;AAEpC;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK,CAAY,EAAE;2FAAC;AAErC;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE;uFAAC;AAEtB;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,CAAC;4FAAC;AAE1B;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,EAAE;oFAAC;AAErC;;;AAGG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmC,SAAS;yFAAC;AAEjE;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAmC,SAAS;0FAAC;AAElE;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAmC,SAAS;4FAAC;AAEpE;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK;sFAAC;AAExB;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,EAA0B;AAE5C;;AAEG;AACO,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;wFAAC;AAE7E,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,OAAO;AACxC,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;SACxC,CAAC;0FAAC;AA0BO,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,GAAY,KAAY;YACtD,MAAM,IAAI,GAAG,GAAsC;YACnD,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,EAAE;YACX;YACA,MAAM,OAAO,GAAa,EAAE;AAC5B,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACzB,gBAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;YACnC;AACA,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACzB,gBAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;YACnC;AACA,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC;AA+BF,IAAA;;IAnEW,cAAc,CAAC,KAAa,EAAE,MAAsB,EAAA;QAC5D,OAAO,CAAA,EAAG,MAAM,EAAE,KAAK,IAAI,EAAE,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE;IAC3C;AAEU,IAAA,kBAAkB,CAAC,MAAsB,EAAA;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;QAClC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClC,YAAA,OAAO,MAAM;QACf;AACA,QAAA,OAAO,KAAK;IACd;IAEU,cAAc,CAAC,KAAa,EAAE,MAAsB,EAAA;AAC5D,QAAA,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE;AACjC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,EAAE;AAC9D,YAAA,OAAO,KAAK;QACd;QACA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;AACrF,QAAA,OAAO,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,MAAM,KAAK;IACrD;AAiBU,IAAA,cAAc,CAAC,KAA0B,EAAA;AACjD,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAuC,CAAC;IACrE;AAEU,IAAA,eAAe,CAAC,IAAqC,EAAA;QAC7D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAClC;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3D;IAEU,mBAAmB,CAAC,KAAY,EAAE,IAAqC,EAAA;QAC/E,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5B;AAEU,IAAA,UAAU,CAAC,IAAkB,EAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACtD;AAEU,IAAA,UAAU,CAAC,IAAkB,EAAA;QACrC,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC9C;AAEQ,IAAA,QAAQ,CAAC,IAAkB,EAAA;QACjC,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAClC;8GA5JW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,oDAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApDjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAvDS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,8BAA8B,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAyDrE,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBA7D5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;oBACvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,8BAA8B,CAAC;AACjF,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oDAAoD;AAC3D,wBAAA,mBAAmB,EAAE,eAAe;AACrC,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDT,EAAA,CAAA;AACF,iBAAA;;;AC5DD;;;;;;AAMG;MA2DU,4BAA4B,CAAA;;AAuEvC,IAAA,YAAY;;AAGH,IAAA,WAAW;AAkCX,IAAA,KAAK;AAEd,IAAA,WAAA,GAAA;AA7GA;;;AAGG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ;uFAA8B;AAEzD;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI;uFAAC;AAExB;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM;sFAAC;AAEzB;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,UAAU;0FAAC;AAEjC;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK,CAAY,EAAE;2FAAC;AAErC;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE;uFAAC;AAEtB;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,CAAC;4FAAC;AAE1B;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,EAAE;oFAAC;AAErC;;;AAGG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmC,SAAS;yFAAC;AAEjE;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAmC,SAAS;0FAAC;AAElE;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAmC,SAAS;4FAAC;AAEpE;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK;sFAAC;AAExB;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,EAA0B;QAElC,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAC,oBAAoB;qFAAC;;QAGpD,IAAA,CAAA,YAAY,GAAmB,EAAE;;QAGxB,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,CAAC;wFAAC;AAEhC;;;;;AAKG;QACgB,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,CAAe;AAClE,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,IAAI,EAAE,aAAa;gBACjB,KAAK,EAAE,IAAI,CAAC,YAAY;AACxB,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;aAChC,CAAC;AACH,SAAA,CAAC;AAEF;;;AAGG;AACO,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;YACpC,MAAM,MAAM,GAAG,EAAE;AACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;YAChC,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACpE,YAAA,OAAO,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;QAC5E,CAAC;wFAAC;AAEQ,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,OAAO;AACxC,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;SACxC,CAAC;0FAAC;AAEM,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,EAAC,UAAuB,EAAC;AA2EtC,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,GAAY,KAAY;YACtD,MAAM,IAAI,GAAG,GAAsC;YACnD,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,EAAE;YACX;YACA,MAAM,OAAO,GAAa,EAAE;AAC5B,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACzB,gBAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;YACnC;AACA,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACzB,gBAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;YACnC;AACA,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC;AArFC,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;YAExE,SAAS,CAAC,MAAK;gBACb,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;AAC/D,YAAA,CAAC,CAAC;YAEF,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;gBACtD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC;AAC7D,YAAA,CAAC,CAAC;;;YAIF,cAAc,CAAC,MAAK;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE;AACpD,oBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnB;AACF,YAAA,CAAC,CAAC;YAEF,SAAS,CAAC,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;AAC3C,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;;YAEnB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,UAAU,EAAE;AAEjB,YAAA,IAAI,SAAmC;AACvC,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAK;AAC5B,gBAAA,MAAM,OAAO,GACX,IAAI,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,EAAE,aAAa,CAAC,wBAAwB,CAAC;oBAC1E,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC;gBAClE,IAAI,CAAC,OAAO,EAAE;oBACZ;gBACF;AACA,gBAAA,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ;AACpC,qBAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;qBAClB,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAsB,CAAC,CAAC;YAC/D,CAAC,EAAE,CAAC,CAAC;YAEL,SAAS,CAAC,MAAK;gBACb,YAAY,CAAC,KAAK,CAAC;gBACnB,SAAS,EAAE,WAAW,EAAE;AAC1B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;IAGU,cAAc,CAAC,KAAa,EAAE,MAAsB,EAAA;QAC5D,OAAO,CAAA,EAAG,MAAM,EAAE,KAAK,IAAI,EAAE,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE;IAC3C;AAEU,IAAA,kBAAkB,CAAC,MAAsB,EAAA;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;QAClC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClC,YAAA,OAAO,MAAM;QACf;AACA,QAAA,OAAO,KAAK;IACd;IAEA,iBAAiB,CAAC,WAAmD,EAAE,UAAkB,EAAA;AACvF,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,KAA2B,IAAI,IAAI,IAAI,CAAC;AACpF,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/C;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E;AAiBU,IAAA,cAAc,CAAC,KAA0B,EAAA;AACjD,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAuC,CAAC;IACrE;AAEU,IAAA,eAAe,CAAC,IAAqC,EAAA;QAC7D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAClC;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3D;IAEU,mBAAmB,CAAC,KAAY,EAAE,IAAqC,EAAA;QAC/E,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5B;AAEU,IAAA,UAAU,CAAC,IAAkB,EAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACtD;AAEU,IAAA,UAAU,CAAC,IAAkB,EAAA;QACrC,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC9C;AAEA,IAAA,YAAY,CAAC,OAAoB,EAAA;AAC/B,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,GAAG,EAAE;QACxF,IAAI,CAAC,UAAU,EAAE;YACf;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAChC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE;YAC/C;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM;AAC5E,QAAA,IAAI,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE;YACpC;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1D,QAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC1B;AAEQ,IAAA,QAAQ,CAAC,IAAkB,EAAA;QACjC,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAClC;8GAtPW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAoER,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArHzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApDS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,8BAA8B,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAsDrE,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA1DxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,8BAA8B,CAAC;AACjF,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,mBAAmB,EAAE,eAAe;AACrC,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CT,EAAA,CAAA;AACF,iBAAA;43CAqEgC,oBAAoB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC5IrD;;;;;AAKG;MAuBU,gCAAgC,CAAA;AAtB7C,IAAA,WAAA,GAAA;AAuBE;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ;uFAAwB;AAEnD;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI;uFAAC;AAExB;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,OAAO;sFAAC;AAE1B;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,UAAU;0FAAC;AAEjC;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK,CAAY,EAAE;2FAAC;AAErC;;AAEG;QACH,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAA8B,KAAK;8FAAC;AAE7D;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAyD,SAAS;yFAAC;AAEvF;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,MAAM,EAA8B;QAE5C,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;wFAAC;AAQpF,IAAA;AANW,IAAA,qBAAqB,CAAC,CAAiC,EAAA;AAC/D,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE;YACvB;QACF;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3E;8GAhDW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBjC;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAhBS,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAkBlB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAtB5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;oBACvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC9B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;AAeT,EAAA,CAAA;AACF,iBAAA;;;ACtCD;;;;;AAKG;AAyEG,MAAO,4BAA6B,SAAQ,oBAAoB,CAAA;8GAAzD,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,SAAA,EAnE5B,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAC/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgET,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAlES,eAAe,4jBAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAA+B,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAnD,gBAAgB,6CAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAoE7D,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAxExC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,OAAO,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,CAAC;oBACjG,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAA,4BAA8B,EAAE,CAAC;AACzF,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgET,EAAA,CAAA;AACF,iBAAA;;;AChBD;;;;;;;;;;;;;;;;;;;;AAoBG;AA6BG,MAAO,iBAAkB,SAAQ,gBAAgB,CAAA;AAC5C,IAAA,SAAS;AACT,IAAA,WAAW;;AAoPpB,IAAA,2BAA2B;AAC3B,IAAA,wBAAwB;AACxB,IAAA,qBAAqB;AAsCrB;;;AAGG;AACM,IAAA,kBAAkB;AAoE3B,IAAA,WAAW;AACX,IAAA,kBAAkB;AAClB,IAAA,UAAU;AACV,IAAA,aAAa;AACb,IAAA,gBAAgB;AAChB,IAAA,qBAAqB;AACrB,IAAA,cAAc;AACd,IAAA,eAAe;AACf,IAAA,mBAAmB;AAEnB,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAhXA,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEzC;;AAEG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE;iFAAC;AAEhB;;AAEG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,gBAAgB;iFAAC;AAE5C;;;;AAIG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAA0D,SAAS;uFAAC;AAEtF;;;AAGG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK,CAAmC,SAAS;2FAAC;AAEnE;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI;uFAAC;AAExB;;;AAGG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM;sFAAC;AAEzB;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,UAAU;0FAAC;AAEjC;;;AAGG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,EAAE;oFAAC;AAErC;;;AAGG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,UAAU;4FAAC;AAEnC;;;;AAIG;QACH,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,UAAU;6FAAC;AAEpC;;;;;;AAMG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI;uFAAC;AAExB;;;;AAIG;QACH,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,IAAI;8FAAC;AAE/B;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE;oFAAC;AAEnB;;;AAGG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK;sFAAC;AAExB;;;;AAIG;QACH,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,WAAW;8FAAC;AAEtC;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,EAAE;wFAAC;AAEvB;;AAEG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK;qFAAC;AAEhC;;AAEG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK;qFAAC;AAEhC;;AAEG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,OAAO;iFAAC;AAEtC;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE;uFAAC;AAEtB;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,CAAC;4FAAC;AAE1B;;AAEG;QACH,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAA8B,KAAK;kGAAC;AAEjE;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmC,SAAS;yFAAC;AAEjE;;AAEG;QACH,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAmC,SAAS;6FAAC;AAErE;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAmC,SAAS;0FAAC;AAElE;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAmC,SAAS;4FAAC;AAEpE;;;;AAIG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK,CAA6B,IAAI;kFAAC;AAExD;;;;AAIG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAiB,EAAE;uFAAC;AAEtC;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,MAAM,EAAmD;AAE1E;;AAEG;QACH,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAiC;AAE5D;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,MAAM,EAAgB;AAEhC;;AAEG;QACH,IAAA,CAAA,MAAM,GAAG,MAAM,EAAgB;AAE/B;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,MAAM,EAAkC;AAEtD;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,MAAM,EAAqC;AAE5D;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAW;AAE5B;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAW;;QAGlB,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK;qFAAC;;QAGxB,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK;+FAAC;;AAGlC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,cAAc,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,mBAAmB;uFAAC;;AAGlG,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,QACE,IAAI,KAAK,gBAAgB;AACzB,gBAAA,IAAI,KAAK,mBAAmB;AAC5B,iBAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC;QAEnE,CAAC;uFAAC;;AAGQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,QACE,IAAI,KAAK,gBAAgB,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,mBAAmB;QAEnH,CAAC;6FAAC;;QAGQ,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CACpC,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;8FACrG;;QAGS,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CACvC,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;iGACpG;;QAGS,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,EAAE;4FAAC;;AAQ5B,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAA6B,MAAK;AACvE,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;YAClC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,mBAAmB,IAAI,IAAI,EAAE;gBAC/C,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,EAAE,CAAA,CAAE;gBAC3G,IACE,IAAI,CAAC,2BAA2B;oBAChC,IAAI,CAAC,qBAAqB,KAAK,IAAI;AACnC,oBAAA,IAAI,CAAC,wBAAwB,KAAK,GAAG,EACrC;oBACA,OAAO,IAAI,CAAC,2BAA2B;gBACzC;AAEA,gBAAA,MAAM,UAAU,GAAyB,KAAK,CAAC,OAAO,CAAC,IAAI;AACzD,sBAAE;AACF,sBAAE,CAAC,MAAe,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC;AAChE,gBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACjC,gBAAA,IAAI,CAAC,wBAAwB,GAAG,GAAG;AACnC,gBAAA,IAAI,CAAC,2BAA2B,GAAG,+BAA+B,CAAC,UAAU,EAAE;AAC7E,oBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,oBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,oBAAA,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE;AACnC,oBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAC1C,iBAAA,CAAC;gBACF,OAAO,IAAI,CAAC,2BAA2B;YACzC;AAEA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;YAChC,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,wBAAwB,CAAe,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC7F;AACA,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM;AACzB,kBAAE,wBAAwB,CAAe,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;kBACvF,MAAM;QACZ,CAAC;+FAAC;AAEF;;;AAGG;AACM,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAA8D;AAE7F,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAuB,MAAK;AACrE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;YACpC,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,EAAE;YACX;AACA,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,gBAAA,OAAO,MAAM;YACf;AACA,YAAA,OAAO,CAAC,MAAe,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC;QACvE,CAAC;mGAAC;;AAGQ,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAY,MAAK;AAClD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,gBAAA,OAAO,EAAE;YACX;AACA,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;QAC/C,CAAC;2FAAC;;QAGQ,IAAA,CAAA,aAAa,GAAG,MAAM,CAAiB,EAAE;0FAAC;;AAG1C,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACpC,YAAA,OAAO,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE;QAC3C,CAAC;wFAAC;AAEF;;;AAGG;QACO,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;uFAAC;AAExF;;;;AAIG;AACO,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;YAC7C,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AACtF,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC7B,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;QACrE,CAAC;iGAAC;;AAGQ,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAC,MAAK;AACjD,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBAC7B,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,cAAc,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;YACpG;AACA,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,cAAc,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACrE,gBAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE;YACjC;AACA,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;QAC3B,CAAC;qGAAC;QAEQ,IAAA,CAAA,UAAU,GAAG,SAAS,CAAC,kBAAkB;uFAAC;QAC1C,IAAA,CAAA,kBAAkB,GAAG,SAAS,CAA+B,oBAAoB;+FAAC;QAClF,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAC,oBAAoB;qFAAC;QAC1C,IAAA,CAAA,cAAc,GAAG,SAAS,CAAuB,aAAa;2FAAC;AAEzE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAyB;QAC9C,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAC1B,IAAA,CAAA,UAAU,GAA2C,SAAS;QAC9D,IAAA,CAAA,aAAa,GAAwB,SAAS;QAC9C,IAAA,CAAA,gBAAgB,GAAG,CAAC;QACpB,IAAA,CAAA,qBAAqB,GAAG,KAAK;QAC7B,IAAA,CAAA,cAAc,GAAG,KAAK;QAEtB,IAAA,CAAA,mBAAmB,GAAG,KAAK;AAKzB,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,iBAAiB,EAAE;YACxB,SAAS,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC/C,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC9E,IAAI,CAAC,qBAAqB,EAAE;;YAE5B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBACjD,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,qBAAqB,EAAE;;QAG5B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;YACpC,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,cAAc,EAAE;YACrB,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC5B,gBAAA,KAAK,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACzC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;YACjC,IAAI,CAAC,OAAO,EAAE;gBACZ;YACF;YACA,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC/B,oBAAA,KAAK,OAAO,CAAC,IAAI,EAAE;gBACrB;AAAO,qBAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;oBACtC,OAAO,CAAC,KAAK,EAAE;gBACjB;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,iBAAiB,CAAC,MAAK;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;gBAChC;YACF;YACA,IAAI,CAAC,oBAAoB,EAAE;AAC7B,QAAA,CAAC,CAAC;IACJ;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClF;;AAGU,IAAA,WAAW,CAAC,IAAkB,EAAA;AACtC,QAAA,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/C;;AAGU,IAAA,gBAAgB,CAAC,IAAkB,EAAA;QAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI;IACjC;AAEA;;AAEG;IACO,cAAc,GAAA;QACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC;QACF;AACA,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,cAAc,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;YACtE;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB;QACF;QACA,cAAc,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACtD;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,OAAsB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;QACA,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;IACzD;AAEA;;AAEG;AACO,IAAA,gBAAgB,CAAC,CAAgB,EAAA;QACzC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC;QACF;AAEA,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE;YACzB,CAAC,CAAC,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB,cAAc,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACpD;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;YACrE,CAAC,CAAC,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB,cAAc,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACtD;QACF;IACF;;AAGU,IAAA,aAAa,CAAC,KAAY,EAAA;QAClC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YAChD,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;AAEA;;AAEG;AACO,IAAA,iBAAiB,CAAC,OAA2B,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;YAC9B;QACF;QACA,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IAClD;IAEU,cAAc,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,CAAC,OAAO,GAAG,CAAC,KAAI;AAC/B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC5B,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,UAAU,EAAE;gBACjB;YACF;AACA,YAAA,IAAI,OAAO,GAAG,CAAC,EAAE;AACf,gBAAA,UAAU,CAAC,MAAM,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7C;AACF,QAAA,CAAC;AACD,QAAA,QAAQ,EAAE;IACZ;AAEA;;;AAGG;IACO,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAChE,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE;YACxC,MAAM,CAAC,WAAW,EAAE;YACpB,MAAM,CAAC,OAAO,EAAE;QAClB;IACF;AAEA;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;AAEA;;AAEG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,EAAE;IACd;AAEA;;AAEG;IACH,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;AAEA;;AAEG;AACO,IAAA,oBAAoB,CAAC,IAAY,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC7B;QACF;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;IAClC;;IAGU,kBAAkB,GAAA;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC3C,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;IACnC;AAEA;;AAEG;AACO,IAAA,gBAAgB,CAAC,CAAyB,EAAA;AAClD,QAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE;IACd;AAEA;;;AAGG;AACO,IAAA,iBAAiB,CAAC,CAAyB,EAAA;AACnD,QAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;AACrC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;QAChC;AACA,QAAA,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC;AACpF,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YACzD,IAAI,CAAC,iBAAiB,EAAE;QAC1B;aAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACxD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAChC;IACF;AAEA;;AAEG;AACO,IAAA,yBAAyB,CAAC,CAA6B,EAAA;QAC/D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,QAAA,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1F,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1C;AACA,QAAA,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;QAC7D;AACA,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5B;;AAGU,IAAA,WAAW,CAAC,CAAa,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,YAAA,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,aAAa;AAC/B,YAAA,WAAW,EAAE,CAAC;AACf,SAAA,CAAC;IACJ;;AAGU,IAAA,UAAU,CAAC,CAAa,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,aAAa;AAC/B,YAAA,WAAW,EAAE,CAAC;AACf,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,IAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,SAAS,EAAE,IAAI;YACf,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,aAAa;AAC/B,YAAA,iBAAiB,EAAE,IAAI;AACxB,SAAA,CAAC;IACJ;AAEA,IAAA,iBAAiB,CAAC,IAAkB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvB,YAAA,SAAS,EAAE,IAAI;YACf,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,aAAa;AAC/B,YAAA,iBAAiB,EAAE,IAAI;AACxB,SAAA,CAAC;IACJ;AAEA;;AAEG;IACO,UAAU,CAAC,KAAY,EAAE,IAAkB,EAAA;QACnD,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC;QACF;QACA,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;IACpE;AAEA;;;;;AAKG;AACH,IAAA,SAAS,CAAC,KAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IACxD;AAEA;;;;;AAKG;IACH,KAAK,CAAC,iBAAiB,GAAG,KAAK,EAAA;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC;QACF;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClD;YACF;QACF;AAAO,aAAA,IAAI,OAAO,IAAI,IAAI,EAAE;YAC1B;QACF;AACA,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YACzD,IAAI,CAAC,iBAAiB,EAAE;QAC1B;aAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACxD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAChC;IACF;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAChC;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,cAAc,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE;IACrF;IAEA,oBAAoB,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5D;QACF;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;QACpC,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AACA,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAC/B,MAAM,CAAC,KAAK,EAAE;IAChB;IAEA,uBAAuB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC/B,IAAI,CAAC,oBAAoB,EAAE;YAC3B;QACF;QACA,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,oBAAoB,CAAC,MAA0B,EAAE,MAAe,EAAA;QAC9D,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,QAAQ,GAAG,IAAI,GAAG,EAAE;YACpB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC/C;AAEA,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE;QACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAChC,IAAI,MAAM,EAAE;AACV,YAAA,OAAO,MAAM;QACf;QAEA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAClD,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,EACtB,CAAC,KAAc,KAAI;AACjB,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;AACpB,YAAA,MAAM,KAAK;AACb,QAAA,CAAC,CACF;AACD,QAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;AAC1B,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,qBAAqB,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;QACpC;AACA,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,MAAK;AACrC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YAChC,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC;AACxF,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;YAC5B;iBAAO;gBACL,MAAM,CAAC,WAAW,EAAE;YACtB;YACA,MAAM,CAAC,OAAO,EAAE;QAClB,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,MAAM,qBAAqB,CAAC,MAAiB,EAAA;AAC3C,QAAA,MAAM,QAAQ,GAAG,EAAE,IAAI,CAAC,gBAAgB;AACxC,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpG,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,gBAAgB,EAAE;YACtC;QACF;AACA,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAA2B,IAAI,IAAI,IAAI,CAAC;AAC3E,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC3B,gBAAA,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,aAAa;gBAC/B,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;gBAC1C,KAAK;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;IACnC;AAEA,IAAA,eAAe,CAAC,KAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;YAClB;QACF;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,GAAG,IAAI,IAAI,EAAE;gBACf;YACF;YACA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACzC;IACF;AAEA,IAAA,YAAY,CAAC,KAAc,EAAA;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjF,IAAI,MAAM,EAAE;AACV,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AACnC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC9C,IAAI,KAAK,EAAE;oBACT,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;AAClC,oBAAA,OAAO,KAAK;gBACd;YACF;AACA,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAClC;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAClC;AACA,QAAA,IAAI,MAAM,YAAY,OAAO,EAAE;AAC7B,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;gBAC1B,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;AACjC,oBAAA,OAAO,IAAI;gBACb;AACA,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAClC,YAAA,CAAC,CAAC;QACJ;QACA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AACnC,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,aAAa,CAAC,KAAc,EAAA;QAC1B,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE;IAC1E;IAEA,aAAa,CAAC,KAAqB,EAAE,KAAc,EAAA;AACjD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;AACrD,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAA0B,EAAE,KAAK,CAAC;gBACnE,IAAI,KAAK,EAAE;AACT,oBAAA,OAAO,KAAK;gBACd;YACF;QACF;AACA,QAAA,OAAO,IAAI;IACb;IAEA,YAAY,CAAC,CAAU,EAAE,CAAU,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE;AACX,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACxC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5E;AACA,QAAA,OAAO,KAAK;IACd;;AAGA,IAAA,iBAAiB,CAAC,KAAiC,EAAA;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU;AAChC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AAEvB,QAAA,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;YAChE;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvB,YAAA,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,aAAa;AAC/B,YAAA,IAAI,EAAE,OAAO;YACb,KAAK;AACL,YAAA,QAAQ,EAAE,QAAQ;YAClB,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;AAC3C,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;IACjC;;AAGA,IAAA,mBAAmB,CAAC,QAAiB,EAAA;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ;QAE7B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACnD;QACF;AAEA,QAAA,MAAM,KAAK,GAAY;AACrB,YAAA,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,aAAa;AAC/B,YAAA,iBAAiB,EAAE,IAAI;SACxB;QACD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAClE;8GA76BW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,KAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAPjB;AACT,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE;AACxD,YAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE;AACjE,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,EAAE;AAChE,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,EAAE;AACjE,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmWgC,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEpB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxdrD,60RAyOA,EAAA,MAAA,EAAA,CAAA,o7aAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzII,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGhB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,6BAA6B,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,6BAA6B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,gCAAgC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChC,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,gCAAgC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAXhC,SAAS,yCACT,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAmBP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA5B7B,SAAS;+BACE,WAAW,EAAA,aAAA,EAGN,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,gBAAgB;wBAChB,SAAS;wBACT,gBAAgB;wBAChB,gBAAgB;wBAChB,iBAAiB;wBACjB,kBAAkB;wBAClB,oBAAoB;wBACpB,6BAA6B;wBAC7B,4BAA4B;wBAC5B,6BAA6B;wBAC7B,gCAAgC;wBAChC,4BAA4B;wBAC5B,gCAAgC;qBACjC,EAAA,SAAA,EACU;AACT,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,mBAAmB,EAAE;AACxD,wBAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,mBAAmB,EAAE;AACjE,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,mBAAmB,EAAE;AAChE,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,mBAAmB,EAAE;AACjE,qBAAA,EAAA,QAAA,EAAA,60RAAA,EAAA,MAAA,EAAA,CAAA,o7aAAA,CAAA,EAAA;AAmWgC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,kBAAkB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACoB,oBAAoB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAC5D,oBAAoB,yEACQ,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME5b7D,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAlBvB,iBAAiB;YACjB,6BAA6B;YAC7B,4BAA4B;YAC5B,6BAA6B;YAC7B,gCAAgC;YAChC,4BAA4B;AAC5B,YAAA,gCAAgC,aAGhC,iBAAiB;YACjB,6BAA6B;YAC7B,4BAA4B;YAC5B,6BAA6B;YAC7B,gCAAgC;YAChC,4BAA4B;YAC5B,gCAAgC,CAAA,EAAA,CAAA,CAAA;AAGvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAlBvB,iBAAiB;YACjB,6BAA6B;YAC7B,4BAA4B;YAC5B,6BAA6B;YAC7B,gCAAgC;YAChC,4BAA4B;YAC5B,gCAAgC,CAAA,EAAA,CAAA,CAAA;;2FAYvB,cAAc,EAAA,UAAA,EAAA,CAAA;kBApB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,6BAA6B;wBAC7B,4BAA4B;wBAC5B,6BAA6B;wBAC7B,gCAAgC;wBAChC,4BAA4B;wBAC5B,gCAAgC;AACjC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,6BAA6B;wBAC7B,4BAA4B;wBAC5B,6BAA6B;wBAC7B,gCAAgC;wBAChC,4BAA4B;wBAC5B,gCAAgC;AACjC,qBAAA;AACF,iBAAA;;;AC5BD;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-components-lookup.mjs","sources":["../../../../packages/components/lookup/src/lib/lookup-tree-table-data-source.ts","../../../../packages/components/lookup/src/lib/views/lookup-list-view-base.ts","../../../../packages/components/lookup/src/lib/views/lookup-drop-down-list.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-drop-down-tree.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-column-tree.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-column.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-select-tree.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-select.component.ts","../../../../packages/components/lookup/src/lib/lookup.component.ts","../../../../packages/components/lookup/src/lib/lookup.component.html","../../../../packages/components/lookup/src/lib/lookup.module.ts","../../../../packages/components/lookup/src/acorex-components-lookup.ts"],"sourcesContent":["import { AXDataSource, AXDataSourceQuery } from '@acorex/cdk/common';\nimport { AXTreeViewDataSource, AXTreeViewNode } from '@acorex/components/tree-view';\nimport { AXLookupItem } from './lookup.types';\n\n/**\n * Options used when adapting a lookup `treeDataSource` into an `AXDataSource`\n * that `ax-data-table` can expand via `parentField`.\n */\nexport interface AXLookupTreeTableDataSourceOptions {\n valueField: string;\n textField: string;\n parentField: string;\n hasChildrenField: string;\n}\n\n/**\n * Converts a drop-down-tree datasource (nested array or lazy callback) into an\n * `AXDataSource` that a multi-column data table can load and expand.\n */\nexport function createLookupTreeTableDataSource(\n source: AXTreeViewDataSource,\n options: AXLookupTreeTableDataSourceOptions,\n): AXDataSource<AXLookupItem> {\n const isCallback = typeof source === 'function';\n\n return new AXDataSource<AXLookupItem>({\n pageSize: 8,\n key: options.valueField,\n load: (query) => loadTreeTableRows(source, options, query, isCallback),\n byKey: (key) => findTreeTableItem(source, options.valueField, key),\n });\n}\n\nasync function loadTreeTableRows(\n source: AXTreeViewDataSource,\n options: AXLookupTreeTableDataSourceOptions,\n query: AXDataSourceQuery,\n isCallback: boolean,\n): Promise<{ items: AXLookupItem[]; total: number }> {\n const parentFilter = query.filter?.field === options.parentField ? query.filter : undefined;\n const textFilter = query.filter && query.filter.field !== options.parentField ? query.filter : undefined;\n\n if (parentFilter) {\n const children = await loadChildren(source, options, parentFilter.value, isCallback);\n return { items: children, total: children.length };\n }\n\n const roots = mapTreeNodes(await loadRoots(source, isCallback), options);\n const items = textFilter ? filterTreeNodes(roots, options.textField, String(textFilter.value ?? '')) : roots;\n return { items, total: items.length };\n}\n\nasync function loadRoots(source: AXTreeViewDataSource, isCallback: boolean): Promise<AXTreeViewNode[]> {\n if (!isCallback) {\n return (source as AXTreeViewNode[]) ?? [];\n }\n return (await (source as (nodeId?: string) => AXTreeViewNode[] | Promise<AXTreeViewNode[]>)()) ?? [];\n}\n\nasync function loadChildren(\n source: AXTreeViewDataSource,\n options: AXLookupTreeTableDataSourceOptions,\n parentId: unknown,\n isCallback: boolean,\n): Promise<AXLookupItem[]> {\n if (isCallback) {\n const nodes =\n (await (source as (nodeId?: string) => AXTreeViewNode[] | Promise<AXTreeViewNode[]>)(String(parentId))) ?? [];\n return mapTreeNodes(nodes, options);\n }\n\n const parent = findTreeNode(source as AXTreeViewNode[], options.valueField, parentId);\n const children = Array.isArray(parent?.['children']) ? (parent['children'] as AXTreeViewNode[]) : [];\n return mapTreeNodes(children, options);\n}\n\nfunction mapTreeNodes(nodes: AXTreeViewNode[], options: AXLookupTreeTableDataSourceOptions): AXLookupItem[] {\n return nodes.map((node) => mapTreeNode(node, options));\n}\n\nfunction mapTreeNode(node: AXTreeViewNode, options: AXLookupTreeTableDataSourceOptions): AXLookupItem {\n const rawChildren = node['children'];\n const children = Array.isArray(rawChildren) ? mapTreeNodes(rawChildren as AXTreeViewNode[], options) : undefined;\n const childrenCount = node['childrenCount'];\n const hasChildren =\n (children?.length ?? 0) > 0 ||\n (typeof childrenCount === 'number' && childrenCount > 0) ||\n node['hasChild'] === true ||\n node['hasChildren'] === true;\n\n return {\n ...node,\n [options.hasChildrenField]: hasChildren,\n ...(children && children.length > 0 ? { children } : {}),\n };\n}\n\nfunction filterTreeNodes(nodes: AXLookupItem[], textField: string, query: string): AXLookupItem[] {\n const needle = query.trim().toLowerCase();\n if (!needle) {\n return nodes;\n }\n\n const result: AXLookupItem[] = [];\n for (const node of nodes) {\n const rawChildren = node['children'];\n const children = Array.isArray(rawChildren) ? filterTreeNodes(rawChildren as AXLookupItem[], textField, needle) : undefined;\n const selfMatch = String(node[textField] ?? '')\n .toLowerCase()\n .includes(needle);\n if (selfMatch) {\n result.push(node);\n } else if (children && children.length > 0) {\n result.push({\n ...node,\n children,\n });\n }\n }\n return result;\n}\n\nfunction findTreeTableItem(\n source: AXTreeViewDataSource,\n valueField: string,\n key: unknown,\n): AXLookupItem | undefined {\n if (typeof source === 'function' || !Array.isArray(source)) {\n return undefined;\n }\n return findTreeNode(source, valueField, key) ?? undefined;\n}\n\nfunction findTreeNode(nodes: AXTreeViewNode[], valueField: string, key: unknown): AXTreeViewNode | null {\n for (const node of nodes) {\n if (String(node[valueField]) === String(key)) {\n return node;\n }\n const children = node['children'];\n if (Array.isArray(children)) {\n const found = findTreeNode(children as AXTreeViewNode[], valueField, key);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n","import { AXDataSource, AXHtmlEvent, AXListDataSource } from '@acorex/cdk/common';\nimport {\n AXListNavigationDirective,\n AXListNavigationItemDirective,\n} from '@acorex/cdk/list-navigation';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n Directive,\n NgZone,\n TemplateRef,\n afterRenderEffect,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Shared `AXDataSource` + CDK virtual scroll plumbing for the list-based lookup views\n * (`ax-lookup-drop-down-list`, `ax-lookup-multi-select`).\n */\n@Directive()\nexport abstract class AXLookupListViewBase {\n /**\n * The datasource providing the items (paged, remote-capable).\n */\n dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n /**\n * The item property used as the selection value.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text.\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (always an array, even for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * The fixed row height in pixels used by the virtual scroll viewport.\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of rows visible before the popup scrolls.\n */\n maxVisibleItems = input(8);\n\n /**\n * Custom template rendered for each item. Context: `$implicit` is the item.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for rows whose page is still loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * When `true`, list rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * Emitted when the user picks (or toggles) an item.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n /**\n * Emitted when keyboard navigation should leave the list (e.g. ArrowUp on the first\n * item, or a printable key that should return focus to the trigger search input).\n */\n navigateOut = output<'up' | 'typeahead'>();\n\n /** CDK virtual scroll adapter over the datasource. */\n protected listDataSource = signal<AXListDataSource<AXLookupItem> | null>(null);\n\n protected totalCount = signal(0);\n protected isLoading = signal(true);\n protected readonly loadingPlaceholderIndexes = [0, 1, 2];\n\n protected isEmpty = computed(() => this.totalCount() === 0 && !this.isLoading());\n\n /**\n * Overlay popovers often measure as 0px on first open, so CDK virtual scroll\n * renders no rows. Paint these placeholders outside the viewport until data arrives.\n */\n protected showLoadingPlaceholder = computed(() => this.isLoading() && this.totalCount() === 0);\n\n /** Viewport height so the popup grows with the items up to `maxVisibleItems`. */\n protected viewportHeight = computed(() => {\n const count = this.totalCount() || (this.isLoading() ? 3 : 1);\n return Math.min(count, this.maxVisibleItems()) * this.itemHeight();\n });\n\n protected viewportRef = viewChild(CdkVirtualScrollViewport);\n protected listNavigation = viewChild(AXListNavigationDirective);\n protected navItems = viewChildren(AXListNavigationItemDirective);\n\n #ngZone = inject(NgZone);\n\n constructor() {\n // CDK measures the viewport size only once, when it initializes. Inside the popover the\n // panel is still animating/positioning at that moment (and the height also changes when\n // the loading placeholder is replaced by the real item count), so the measurement is stale\n // and CDK renders too few rows, leaving empty space. A ResizeObserver on the viewport\n // element re-measures on every actual size change, covering all of these cases.\n effect((onCleanup) => {\n const viewport = this.viewportRef();\n if (!viewport || typeof ResizeObserver === 'undefined') {\n return;\n }\n const observer = new ResizeObserver(() => {\n this.#ngZone.run(() => viewport.checkViewportSize());\n });\n observer.observe(viewport.elementRef.nativeElement);\n onCleanup(() => observer.disconnect());\n });\n\n effect((onCleanup) => {\n const source = this.dataSource();\n const list = new AXListDataSource<AXLookupItem>({ source });\n const hasRows = source.cachedItems.some((item) => item != null);\n untracked(() => {\n this.totalCount.set(source.totalCount);\n this.isLoading.set(hasRows ? source.isLoading : true);\n this.listDataSource.set(list);\n });\n const loadingSub = source.onLoadingChanged.subscribe((value) => this.isLoading.set(value));\n const changedSub = source.onChanged.subscribe((e) => {\n this.totalCount.set(e.totalCount);\n this.#checkViewportSize();\n });\n\n // Overlay first-open often emits viewChange { start: 0, end: 0 }, which never\n // pages. Kick page 0 when the source is cold; reuse real rows on remount.\n queueMicrotask(() => {\n if (source.cachedItems.some((item) => item != null)) {\n this.totalCount.set(source.totalCount);\n this.isLoading.set(false);\n this.#checkViewportSize();\n return;\n }\n source.setPage(0);\n });\n\n onCleanup(() => {\n loadingSub.unsubscribe();\n changedSub.unsubscribe();\n });\n });\n\n afterRenderEffect(() => {\n this.viewportRef();\n this.totalCount();\n this.isLoading();\n this.#checkViewportSize();\n });\n }\n\n #checkViewportSize() {\n const viewport = this.viewportRef();\n if (!viewport) {\n return;\n }\n this.#ngZone.run(() => viewport.checkViewportSize());\n }\n\n /** Moves keyboard focus to the first rendered list option. */\n focusFirst() {\n this.listNavigation()?.focusOnIndex(0);\n }\n\n protected getValue(item: AXLookupItem): unknown {\n return item?.[this.valueField()];\n }\n\n protected getText(item: AXLookupItem): string {\n return String(item?.[this.textField()] ?? '');\n }\n\n protected isSelected(item: AXLookupItem): boolean {\n const value = this.getValue(item);\n return this.selectedValues().some((v) => v == value);\n }\n\n protected isDisabled(item: AXLookupItem): boolean {\n return Boolean(item?.[this.disabledField()]);\n }\n\n protected handleItemClick(item: AXLookupItem | null | undefined) {\n if (!item || this.isDisabled(item)) {\n return;\n }\n this.itemClick.emit({ item, value: this.getValue(item) });\n }\n\n /**\n * Commit on mousedown (not click) so a searchable trigger blur cannot destroy the\n * list before the pick is applied.\n */\n protected handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined) {\n event.preventDefault();\n event.stopPropagation();\n this.handleItemClick(item);\n }\n\n protected handleItemKeypress(e: AXHtmlEvent<KeyboardEvent>, item: AXLookupItem | null | undefined) {\n if (e.nativeEvent.key === 'Enter' || e.nativeEvent.code === 'Space') {\n e.nativeEvent.stopPropagation();\n e.nativeEvent.preventDefault();\n this.handleItemClick(item);\n }\n }\n\n protected handleListKeypress(e: AXHtmlEvent<KeyboardEvent>) {\n const key = e.nativeEvent.key;\n const nav = this.listNavigation();\n const viewport = this.viewportRef();\n\n if (key === 'ArrowUp' && nav && nav.activeIndex() === 0) {\n const offset = viewport?.measureScrollOffset() ?? 0;\n if (offset > 0) {\n e.nativeEvent.preventDefault();\n viewport!.scrollToOffset(Math.max(0, offset - this.itemHeight()));\n queueMicrotask(() => nav.focusOnIndex(0));\n return;\n }\n e.nativeEvent.preventDefault();\n this.navigateOut.emit('up');\n return;\n }\n\n if (key === 'ArrowDown' && nav && viewport) {\n const items = this.navItems();\n if (items.length > 0 && nav.activeIndex() >= items.length - 1) {\n const maxOffset = Math.max(0, this.totalCount() * this.itemHeight() - viewport.getViewportSize());\n const nextOffset = Math.min(maxOffset, viewport.measureScrollOffset() + this.itemHeight());\n if (nextOffset > viewport.measureScrollOffset()) {\n e.nativeEvent.preventDefault();\n viewport.scrollToOffset(nextOffset);\n queueMicrotask(() => nav.focusOnIndex(this.navItems().length - 1));\n }\n return;\n }\n }\n\n if (\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Tab' ||\n key === 'Shift' ||\n key === 'Enter' ||\n key === 'Escape' ||\n key === ' '\n ) {\n return;\n }\n\n this.navigateOut.emit('typeahead');\n }\n\n protected activateNavItem(nav: AXListNavigationDirective, item: AXListNavigationItemDirective) {\n nav?.navigateTo(item);\n }\n\n protected trackByIndex = (index: number) => index;\n}\n","import { AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXLookupListViewBase } from './lookup-list-view-base';\n\n/**\n * Internal mini component for the `drop-down-list` lookup mode:\n * a predefined, virtualized list of options for picking single values.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-drop-down-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe, AXListNavigationModule],\n providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupDropDownListComponent }],\n template: `\n @if (showLoadingPlaceholder()) {\n <div class=\"ax-lookup-viewport\" role=\"listbox\">\n @for (index of loadingPlaceholderIndexes; track index) {\n <div class=\"ax-lookup-option-host ax-lookup-option\" [style.height.px]=\"itemHeight()\">\n <ng-container [ngTemplateOutlet]=\"loadingRow\" />\n </div>\n }\n </div>\n } @else if (isEmpty()) {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n <div class=\"ax-lookup-empty\">\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </div>\n }\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n axListNavigation\n #nav=\"axListNavigation\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n (onKeypress)=\"handleListKeypress($event)\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); let i = index; trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option-host ax-lookup-option\"\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-state-alternate]=\"alternate() && i % 2 === 1\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [class.ax-state-active]=\"navItem.isActive()\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (mouseenter)=\"activateNavItem(nav, navItem)\"\n (mousedown)=\"handleItemMouseDown($event, item)\"\n (onKeypress)=\"handleItemKeypress($event, item)\"\n >\n @if (item != null) {\n @if (itemTemplate()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"ax-lookup-option-text\">{{ getText(item) }}</span>\n }\n <!-- Keep check outside itemTemplate so custom rows (platform widgets) still show selection. -->\n @if (isSelected(item)) {\n <span class=\"ax-lookup-option-check ax-icon ax-icon-check text-primary\" aria-hidden=\"true\"></span>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingRow\" />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n\n <ng-template #loadingRow>\n @if (loadingTemplate()) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate()!\" />\n } @else {\n <span class=\"ax-lookup-option-loading\">{{ '@acorex:common.status.loading' | translate | async }}</span>\n }\n </ng-template>\n `,\n})\nexport class AXLookupDropDownListComponent extends AXLookupListViewBase {}\n","import {\n AXTreeViewComponent,\n AXTreeViewDataSource,\n AXTreeViewItemTemplateContext,\n AXTreeViewSelectionChangeEvent,\n} from '@acorex/components/tree-view';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, computed, input, output } from '@angular/core';\nimport { AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `drop-down-tree` lookup mode:\n * a predefined list rendered in a tree-like structure for single item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-drop-down-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTreeViewComponent],\n template: `\n <div class=\"ax-lookup-tree\">\n <ax-tree-view\n [datasource]=\"dataSource()\"\n selectMode=\"single\"\n selectionBehavior=\"all\"\n [controlledSelection]=\"true\"\n [selectedIds]=\"selectedIds()\"\n [idField]=\"valueField()\"\n [titleField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [nodeTemplate]=\"nodeTemplate()\"\n (onSelectionChange)=\"handleSelectionChange($event)\"\n />\n </div>\n `,\n})\nexport class AXLookupDropDownTreeComponent {\n /**\n * The tree datasource: an array of nodes or a lazy children callback.\n */\n dataSource = input.required<AXTreeViewDataSource>();\n\n /**\n * The node property used as the selection value (tree `idField`).\n */\n valueField = input('id');\n\n /**\n * The node property used as the display text (tree `titleField`).\n */\n textField = input('title');\n\n /**\n * The node property marking a node as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (at most one for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * Custom template rendered for each tree node.\n */\n nodeTemplate = input<TemplateRef<AXTreeViewItemTemplateContext> | undefined>(undefined);\n\n /**\n * Emitted when the user selects a node.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n protected selectedIds = computed(() => this.selectedValues().map((v) => String(v)));\n\n protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent) {\n if (e.source !== 'user') {\n return;\n }\n const node = e.selectedNodes[0];\n if (!node) {\n return;\n }\n this.itemClick.emit({ item: node, value: node[this.valueField()] });\n }\n}\n","import { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXDataTableComponent,\n AXDataTableRowClick,\n AXDataTableTextColumnComponent,\n} from '@acorex/components/data-table';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { AXLookupColumn, AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `multi-column-tree` lookup mode:\n * a multi-column `ax-data-table` with a drop-down tree inside it.\n * Rows expand/collapse via the data-table hierarchy (`parentField` / nested `children`).\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-column-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, AXDataTableComponent, AXDataTableTextColumnComponent],\n host: {\n class: 'ax-lookup-multi-column ax-lookup-multi-column-tree',\n '[style.height.px]': 'tableHeight()',\n },\n template: `\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"dataSource()\"\n [parentField]=\"parentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowTemplate]=\"itemTemplate() ? customRowTemplate : undefined\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n @for (column of columns(); track trackColumnKey($index, column)) {\n <ax-text-column\n [dataField]=\"column.field\"\n [caption]=\"column.title\"\n [width]=\"resolveColumnWidth(column)\"\n [expandHandler]=\"isExpandColumn($index, column)\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n />\n }\n </ax-data-table>\n\n <ng-template #customRowTemplate let-ctx>\n <tr\n [class.ax-state-selected]=\"ctx.data != null && isSelected(ctx.data)\"\n [class.ax-state-disabled]=\"ctx.data != null && isDisabled(ctx.data)\"\n [style.height.px]=\"itemHeight()\"\n [style.max-height.px]=\"itemHeight()\"\n (mousedown)=\"handleItemMouseDown($event, ctx.data)\"\n >\n <td [attr.colspan]=\"columns().length || 1\">\n @if (ctx.data != null && itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: ctx.data }\"\n />\n }\n </td>\n </tr>\n </ng-template>\n `,\n})\nexport class AXLookupMultiColumnTreeComponent {\n /**\n * The datasource providing hierarchical rows (roots on load, children via `parentField`).\n */\n dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n /**\n * The item property used as the selection value (also the data-table row key).\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text. The matching column shows the expand control\n * unless another column sets `expandHandler`.\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Field used by the data table to fetch children (`AXDataSource` filter on expand).\n */\n parentField = input('parentId');\n\n /**\n * Field used by the data table to decide whether a row can expand.\n */\n hasChildrenField = input('hasChild');\n\n /**\n * Currently selected values (always an array, even for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * The fixed row height in pixels passed to the data table.\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of body rows visible before the table scrolls.\n */\n maxVisibleItems = input(8);\n\n /**\n * Column definitions rendered as `ax-text-column` instances.\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Optional custom row content. Context: `$implicit` is the row item.\n * When set, replaces the default multi-column cell layout.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered while the table is loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * When `true`, table rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * Emitted when the user picks a row (not when expanding/collapsing).\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n /**\n * Header (~40px) + up to `maxVisibleItems` body rows. Expanded children scroll inside.\n */\n protected tableHeight = computed(() => 40 + this.maxVisibleItems() * this.itemHeight());\n\n protected loadingConfig = computed(() => ({\n enabled: true,\n animation: true,\n loadingTemplate: this.loadingTemplate(),\n }));\n\n /** Stable unique key for `@for` — avoids NG0955 when `field` is missing or duplicated. */\n protected trackColumnKey(index: number, column: AXLookupColumn): string {\n return `${column?.field ?? ''}::${index}`;\n }\n\n protected resolveColumnWidth(column: AXLookupColumn): string | number | 'auto' {\n const width = column.width?.trim();\n if (!width || width.includes('fr')) {\n return 'auto';\n }\n return width;\n }\n\n protected isExpandColumn(index: number, column: AXLookupColumn): boolean {\n if (column.expandHandler === true) {\n return true;\n }\n if (this.columns().some((item) => item.expandHandler === true)) {\n return false;\n }\n const textIndex = this.columns().findIndex((item) => item.field === this.textField());\n return (textIndex === -1 ? 0 : textIndex) === index;\n }\n\n protected resolveRowCssClass = (row: unknown): string => {\n const item = row as AXLookupItem | null | undefined;\n if (!item) {\n return '';\n }\n const classes: string[] = [];\n if (this.isSelected(item)) {\n classes.push('ax-state-selected');\n }\n if (this.isDisabled(item)) {\n classes.push('ax-state-disabled');\n }\n return classes.join(' ');\n };\n\n protected handleRowClick(event: AXDataTableRowClick) {\n this.handleItemClick(event.data as AXLookupItem | null | undefined);\n }\n\n protected handleItemClick(item: AXLookupItem | null | undefined) {\n if (!item || this.isDisabled(item)) {\n return;\n }\n this.itemClick.emit({ item, value: this.getValue(item) });\n }\n\n protected handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined) {\n event.preventDefault();\n event.stopPropagation();\n this.handleItemClick(item);\n }\n\n protected isSelected(item: AXLookupItem): boolean {\n const value = this.getValue(item);\n return this.selectedValues().some((v) => v == value);\n }\n\n protected isDisabled(item: AXLookupItem): boolean {\n return Boolean(item?.[this.disabledField()]);\n }\n\n private getValue(item: AXLookupItem): unknown {\n return item?.[this.valueField()];\n }\n}\n","import { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXDataTableComponent,\n AXDataTableRowClick,\n AXDataTableTextColumnComponent,\n} from '@acorex/components/data-table';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { Subscription, auditTime, fromEvent } from 'rxjs';\nimport { AXLookupColumn, AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `multi-column` lookup mode:\n * renders selectable rows in an `ax-data-table` grid and loads further\n * pages as the user scrolls (no pager UI).\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-column',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, AXDataTableComponent, AXDataTableTextColumnComponent],\n host: {\n class: 'ax-lookup-multi-column',\n '[style.height.px]': 'tableHeight()',\n },\n template: `\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"tableDataSource\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowTemplate]=\"itemTemplate() ? customRowTemplate : undefined\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n @for (column of columns(); track trackColumnKey($index, column)) {\n <ax-text-column\n [dataField]=\"column.field\"\n [caption]=\"column.title\"\n [width]=\"resolveColumnWidth(column)\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n />\n }\n </ax-data-table>\n\n <ng-template #customRowTemplate let-ctx>\n <tr\n [class.ax-state-selected]=\"ctx.data != null && isSelected(ctx.data)\"\n [class.ax-state-disabled]=\"ctx.data != null && isDisabled(ctx.data)\"\n [style.height.px]=\"itemHeight()\"\n [style.max-height.px]=\"itemHeight()\"\n (mousedown)=\"handleItemMouseDown($event, ctx.data)\"\n >\n <td [attr.colspan]=\"columns().length || 1\">\n @if (ctx.data != null && itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: ctx.data }\"\n />\n }\n </td>\n </tr>\n </ng-template>\n `,\n})\nexport class AXLookupMultiColumnComponent {\n /**\n * The datasource providing the grid rows (paged, remote-capable).\n * Pages are fetched on demand as the user scrolls the table body.\n */\n dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n /**\n * The item property used as the selection value.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text.\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (always an array, even for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * The fixed row height in pixels passed to the data table.\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of body rows visible before the table scrolls.\n */\n maxVisibleItems = input(8);\n\n /**\n * Column definitions rendered as `ax-text-column` instances.\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Optional custom row content. Context: `$implicit` is the row item.\n * When set, replaces the default multi-column cell layout.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered while the table is loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * When `true`, table rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * Emitted when the user picks a row.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n protected tableRef = viewChild(AXDataTableComponent);\n\n /** Accumulated rows fed to the table (grows as pages are scrolled in). */\n #loadedItems: AXLookupItem[] = [];\n\n /** Total matching rows from the source (used to size the popup). */\n readonly #totalCount = signal(0);\n\n /**\n * Local table source: one page of whatever has been scrolled in so far.\n * Kept as a stable instance so the table host is not recreated on each page load.\n * `pageSize` grows with `#loadedItems` — never seed with a huge empty array (data-table\n * initializes `displayedRows` as `new Array(pageSize)`, which caused NG0955-level jank).\n */\n protected readonly tableDataSource = new AXDataSource<AXLookupItem>({\n pageSize: 1,\n key: 'id',\n load: async () => ({\n items: this.#loadedItems,\n total: this.#loadedItems.length,\n }),\n });\n\n /**\n * Header (~40px) + body rows. Grows with results up to `maxVisibleItems`,\n * then the table body scrolls for the rest.\n */\n protected tableHeight = computed(() => {\n const header = 40;\n const total = this.#totalCount();\n const rows = total > 0 ? total : Math.min(3, this.maxVisibleItems());\n return header + Math.min(rows, this.maxVisibleItems()) * this.itemHeight();\n });\n\n protected loadingConfig = computed(() => ({\n enabled: true,\n animation: true,\n loadingTemplate: this.loadingTemplate(),\n }));\n\n readonly #host = inject(ElementRef<HTMLElement>);\n\n constructor() {\n effect((onCleanup) => {\n const source = this.dataSource();\n this.tableDataSource.config.key = source.config.key || this.valueField();\n\n untracked(() => {\n this.#applyLoadedItems(source.cachedItems, source.totalCount);\n });\n\n const changedSub = source.onChanged.subscribe((event) => {\n this.#applyLoadedItems(event.cachedItems, event.totalCount);\n });\n\n // Fetch page 0 only when the source has never loaded. Reopen remounts this\n // view; setPage(0) is a no-op on a warm source and must not force a new API call.\n queueMicrotask(() => {\n if (!source.cachedItems.some((item) => item != null)) {\n source.setPage(0);\n }\n });\n\n onCleanup(() => changedSub.unsubscribe());\n });\n\n effect((onCleanup) => {\n // Rebind when the table instance appears / source changes.\n this.tableRef();\n this.dataSource();\n\n let scrollSub: Subscription | undefined;\n const timer = setTimeout(() => {\n const wrapper =\n this.tableRef()?.getHostElement()?.querySelector('.ax-data-table-wrapper') ??\n this.#host.nativeElement.querySelector('.ax-data-table-wrapper');\n if (!wrapper) {\n return;\n }\n scrollSub = fromEvent(wrapper, 'scroll')\n .pipe(auditTime(80))\n .subscribe(() => this.#tryLoadMore(wrapper as HTMLElement));\n }, 0);\n\n onCleanup(() => {\n clearTimeout(timer);\n scrollSub?.unsubscribe();\n });\n });\n }\n\n /** Stable unique key for `@for` — avoids NG0955 when `field` is missing or duplicated. */\n protected trackColumnKey(index: number, column: AXLookupColumn): string {\n return `${column?.field ?? ''}::${index}`;\n }\n\n protected resolveColumnWidth(column: AXLookupColumn): string | number | 'auto' {\n const width = column.width?.trim();\n if (!width || width.includes('fr')) {\n return 'auto';\n }\n return width;\n }\n\n #applyLoadedItems(cachedItems: Array<AXLookupItem | null | undefined>, totalCount: number) {\n this.#loadedItems = cachedItems.filter((item): item is AXLookupItem => item != null);\n this.#totalCount.set(totalCount);\n this.#syncTablePageSize();\n this.tableDataSource.refresh({ reset: true });\n }\n\n #syncTablePageSize() {\n this.tableDataSource.config.pageSize = Math.max(this.#loadedItems.length, 1);\n }\n\n protected resolveRowCssClass = (row: unknown): string => {\n const item = row as AXLookupItem | null | undefined;\n if (!item) {\n return '';\n }\n const classes: string[] = [];\n if (this.isSelected(item)) {\n classes.push('ax-state-selected');\n }\n if (this.isDisabled(item)) {\n classes.push('ax-state-disabled');\n }\n return classes.join(' ');\n };\n\n protected handleRowClick(event: AXDataTableRowClick) {\n this.handleItemClick(event.data as AXLookupItem | null | undefined);\n }\n\n protected handleItemClick(item: AXLookupItem | null | undefined) {\n if (!item || this.isDisabled(item)) {\n return;\n }\n this.itemClick.emit({ item, value: this.getValue(item) });\n }\n\n protected handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined) {\n event.preventDefault();\n event.stopPropagation();\n this.handleItemClick(item);\n }\n\n protected isSelected(item: AXLookupItem): boolean {\n const value = this.getValue(item);\n return this.selectedValues().some((v) => v == value);\n }\n\n protected isDisabled(item: AXLookupItem): boolean {\n return Boolean(item?.[this.disabledField()]);\n }\n\n #tryLoadMore(wrapper: HTMLElement) {\n const nearBottom = wrapper.scrollTop + wrapper.clientHeight >= wrapper.scrollHeight - 48;\n if (!nearBottom) {\n return;\n }\n\n const source = this.dataSource();\n if (source.isLoading || source.totalCount === 0) {\n return;\n }\n\n const loadedCount = source.cachedItems.filter((item) => item != null).length;\n if (loadedCount >= source.totalCount) {\n return;\n }\n\n const nextPage = Math.floor(loadedCount / source.pageSize);\n source.setPage(nextPage);\n }\n\n private getValue(item: AXLookupItem): unknown {\n return item?.[this.valueField()];\n }\n}\n","import {\n AXTreeViewComponent,\n AXTreeViewDataSource,\n AXTreeViewItemTemplateContext,\n AXTreeViewNode,\n AXTreeViewSelectionBehavior,\n AXTreeViewSelectionChangeEvent,\n} from '@acorex/components/tree-view';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, computed, input, output } from '@angular/core';\n\n/**\n * Selection payload of the multi-select tree view.\n */\nexport interface AXLookupTreeSelectionEvent {\n ids: string[];\n nodes: AXTreeViewNode[];\n}\n\n/**\n * Internal mini component for the `multi-select-tree` lookup mode:\n * a predefined list rendered in a tree-like structure for multiple item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-select-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTreeViewComponent],\n template: `\n <div class=\"ax-lookup-tree\">\n <ax-tree-view\n [datasource]=\"dataSource()\"\n selectMode=\"multiple\"\n [selectionBehavior]=\"selectionBehavior()\"\n [controlledSelection]=\"true\"\n [selectedIds]=\"selectedIds()\"\n [idField]=\"valueField()\"\n [titleField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [nodeTemplate]=\"nodeTemplate()\"\n (onSelectionChange)=\"handleSelectionChange($event)\"\n />\n </div>\n `,\n})\nexport class AXLookupMultiSelectTreeComponent {\n /**\n * The tree datasource: an array of nodes or a lazy children callback.\n */\n dataSource = input.required<AXTreeViewDataSource>();\n\n /**\n * The node property used as the selection value (tree `idField`).\n */\n valueField = input('id');\n\n /**\n * The node property used as the display text (tree `titleField`).\n */\n textField = input('title');\n\n /**\n * The node property marking a node as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values.\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * How selecting parent/child nodes affects each other. Passed through to the tree-view.\n */\n selectionBehavior = input<AXTreeViewSelectionBehavior>('all');\n\n /**\n * Custom template rendered for each tree node.\n */\n nodeTemplate = input<TemplateRef<AXTreeViewItemTemplateContext> | undefined>(undefined);\n\n /**\n * Emitted when the user changes the tree selection.\n */\n selectionChange = output<AXLookupTreeSelectionEvent>();\n\n protected selectedIds = computed(() => this.selectedValues().map((v) => String(v)));\n\n protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent) {\n if (e.source !== 'user') {\n return;\n }\n this.selectionChange.emit({ ids: e.selectedIds, nodes: e.selectedNodes });\n }\n}\n","import { AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXLookupListViewBase } from './lookup-list-view-base';\n\n/**\n * Internal mini component for the `multi-select` lookup mode:\n * a predefined, virtualized list of options with checkboxes for multiple item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe, AXListNavigationModule],\n providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupMultiSelectComponent }],\n template: `\n @if (showLoadingPlaceholder()) {\n <div class=\"ax-lookup-viewport\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (index of loadingPlaceholderIndexes; track index) {\n <div class=\"ax-lookup-option-host ax-lookup-option\" [style.height.px]=\"itemHeight()\">\n <ng-container [ngTemplateOutlet]=\"loadingRow\" />\n </div>\n }\n </div>\n } @else if (isEmpty()) {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n <div class=\"ax-lookup-empty\">\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </div>\n }\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n axListNavigation\n #nav=\"axListNavigation\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n (onKeypress)=\"handleListKeypress($event)\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); let i = index; trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option-host ax-lookup-option\"\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-lookup-option-host--check]=\"!!itemTemplate()\"\n [class.ax-state-alternate]=\"alternate() && i % 2 === 1\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [class.ax-state-active]=\"navItem.isActive()\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (mouseenter)=\"activateNavItem(nav, navItem)\"\n (mousedown)=\"handleItemMouseDown($event, item)\"\n (onKeypress)=\"handleItemKeypress($event, item)\"\n >\n @if (item != null) {\n <input\n type=\"checkbox\"\n class=\"ax-lookup-checkbox\"\n tabindex=\"-1\"\n [checked]=\"isSelected(item)\"\n [disabled]=\"isDisabled(item)\"\n />\n @if (itemTemplate()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"ax-lookup-option-text\">{{ getText(item) }}</span>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingRow\" />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n\n <ng-template #loadingRow>\n @if (loadingTemplate()) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate()!\" />\n } @else {\n <span class=\"ax-lookup-option-loading\">{{ '@acorex:common.status.loading' | translate | async }}</span>\n }\n </ng-template>\n `,\n})\nexport class AXLookupMultiSelectComponent extends AXLookupListViewBase {}\n","import {\n AXClearableComponent,\n AXClosableComponent,\n AXComponent,\n AXDataSource,\n AXEvent,\n AXFocusEvent,\n AXItemClickEvent,\n AXItemSelectedEvent,\n AXStyleLookType,\n AXValuableComponent,\n AXValueChangedEvent,\n NXValueComponent,\n convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { AXChipsComponent } from '@acorex/components/chips';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXSearchBoxComponent } from '@acorex/components/search-box';\nimport {\n AXTreeViewCallback,\n AXTreeViewDataSource,\n AXTreeViewNode,\n AXTreeViewSelectionBehavior,\n} from '@acorex/components/tree-view';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n afterRenderEffect,\n computed,\n effect,\n inject,\n input,\n linkedSignal,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { createLookupTreeTableDataSource } from './lookup-tree-table-data-source';\nimport {\n AXLookupColumn,\n AXLookupItem,\n AXLookupItemClickEvent,\n AXLookupMode,\n AXLookupSelectionChangedEvent,\n} from './lookup.types';\nimport { AXLookupDropDownListComponent } from './views/lookup-drop-down-list.component';\nimport { AXLookupDropDownTreeComponent } from './views/lookup-drop-down-tree.component';\nimport { AXLookupListViewBase } from './views/lookup-list-view-base';\nimport { AXLookupMultiColumnTreeComponent } from './views/lookup-multi-column-tree.component';\nimport { AXLookupMultiColumnComponent } from './views/lookup-multi-column.component';\nimport {\n AXLookupMultiSelectTreeComponent,\n AXLookupTreeSelectionEvent,\n} from './views/lookup-multi-select-tree.component';\nimport { AXLookupMultiSelectComponent } from './views/lookup-multi-select.component';\n\n/**\n * An advanced drop-down (lookup) editor with six modes, `AXDataSource` support, and virtual scrolling.\n *\n * Modes (each rendered by its own internal mini component):\n * - `drop-down-list` — a predefined list of options for picking single values.\n * - `multi-select` — a predefined list of options for multiple item selection (chips in the trigger).\n * - `drop-down-tree` — a predefined list rendered in a tree-like structure for single item selection.\n * - `multi-select-tree` — a tree-like structure for multiple item selection.\n * - `multi-column` — an `ax-data-table` grid; when searchable, the trigger input filters as you type\n * (on small screens the search field is inside the actionsheet).\n * - `multi-column-tree` — a multi-column `ax-data-table` with a drop-down tree inside it\n * (expandable hierarchical rows). Uses `treeDataSource` + `columns`, or a hierarchical `dataSource`.\n *\n * With `adaptivityEnabled` (default `true`), the list opens as a bottom actionsheet on small\n * screens instead of an anchored dropdown — the same alternate presentation as `ax-select-box`.\n *\n * Implements {@link FormValueControl} so `[(ngModel)]` / signal forms work via the `value` model\n * (no `ControlValueAccessor`).\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup',\n templateUrl: './lookup.component.html',\n styleUrls: ['./lookup.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n AsyncPipe,\n AXTranslatorPipe,\n AXChipsComponent,\n AXDecoratorModule,\n AXPopoverComponent,\n AXSearchBoxComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n AXLookupMultiColumnTreeComponent,\n ],\n providers: [\n { provide: AXComponent, useExisting: AXLookupComponent },\n { provide: AXClearableComponent, useExisting: AXLookupComponent },\n { provide: AXClosableComponent, useExisting: AXLookupComponent },\n { provide: AXValuableComponent, useExisting: AXLookupComponent },\n ],\n})\nexport class AXLookupComponent extends NXValueComponent implements FormValueControl<unknown | unknown[] | null> {\n readonly #platform = inject(AXPlatform);\n readonly #destroyRef = inject(DestroyRef);\n\n /**\n * The name of the form field, used by validation rules and `ax-form.validate(names)`.\n */\n name = input('');\n\n /**\n * The lookup rendering mode. Selects which mini component renders in the popup.\n */\n mode = input<AXLookupMode>('drop-down-list');\n\n /**\n * The items source for list-based modes (`drop-down-list`, `multi-select`, `multi-column`)\n * and for `multi-column-tree` when `treeDataSource` is not set.\n * Accepts an `AXDataSource` (remote paging, `byKey`, server-side filter) or a plain array.\n */\n dataSource = input<AXDataSource<AXLookupItem> | AXLookupItem[] | undefined>(undefined);\n\n /**\n * The nodes source for tree modes (`drop-down-tree`, `multi-select-tree`, `multi-column-tree`):\n * an array of nodes or a lazy children callback.\n */\n treeDataSource = input<AXTreeViewDataSource | undefined>(undefined);\n\n /**\n * The item property used as the selection value. Maps to the tree `idField` in tree modes.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text. Maps to the tree `titleField` in tree modes\n * (set it to `title` when your nodes use the default tree shape).\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Column definitions for the `multi-column` and `multi-column-tree` modes\n * (rendered as `ax-text-column` in `ax-data-table`).\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Field used by `multi-column-tree` to fetch children when a row is expanded\n * (`AXDataSource` filter). Defaults to `parentId`. Nested `children` arrays are also supported.\n */\n treeParentField = input('parentId');\n\n /**\n * Field used by `multi-column-tree` to decide whether a row shows an expand control.\n * Defaults to `hasChild`. Nodes with `children` / `childrenCount` are mapped automatically\n * when using `treeDataSource`.\n */\n hasChildrenField = input('hasChild');\n\n /**\n * Whether the trigger accepts typing and filters the datasource (`true`),\n * or is select-only with no writable input (`false`).\n * Applies to `drop-down-list`, `multi-select`, `multi-column`, and `multi-column-tree`.\n * Tree-only modes (`drop-down-tree`, `multi-select-tree`) ignore this.\n * On small screens with `adaptivityEnabled`, search is typed in the actionsheet instead of the trigger.\n */\n searchable = input(true);\n\n /**\n * When `true` (default), the popup list uses the alternate actionsheet presentation on small\n * screens (`SM`). Searchable list modes then show a search field inside the sheet. When `false`,\n * the list always opens as an anchored dropdown.\n */\n adaptivityEnabled = input(true);\n\n /**\n * Title shown in the actionsheet header on small screens. Falls back to `placeholder`.\n */\n caption = input('');\n\n /**\n * When `true`, list rows use alternating background colors for easier scanning\n * (`drop-down-list`, `multi-select`, `multi-column`, and `multi-column-tree` modes).\n */\n alternate = input(false);\n\n /**\n * Placeholder for the trigger search input when items are already selected\n * (mainly useful in `multi-select`), and for the in-sheet search field on small screens.\n * Falls back to `placeholder` when the selection is empty on desktop.\n */\n searchPlaceholder = input('Search...');\n\n /**\n * The placeholder text shown when no value is selected.\n */\n placeholder = input('');\n\n /**\n * Whether the lookup is disabled.\n */\n readonly disabled = input(false);\n\n /**\n * Whether the lookup is readonly.\n */\n readonly readonly = input(false);\n\n /**\n * Predefined look scheme of the editor container. Same looks as other editor components like ax-text-box.\n */\n look = model<AXStyleLookType>('solid');\n\n /**\n * The fixed row height in pixels used by the virtual scroll viewport (list-based modes).\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of rows visible before the popup scrolls (list-based modes).\n */\n maxVisibleItems = input(8);\n\n /**\n * How selecting parent/child nodes affects each other in `multi-select-tree` mode.\n */\n treeSelectionBehavior = input<AXTreeViewSelectionBehavior>('all');\n\n /**\n * Custom template rendered for each item/node. Context: `$implicit` is the item.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template for the selected item display (trigger text / chips). Context: `$implicit` is the item.\n */\n selectedTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for rows whose page is still loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * The selected value(s): a scalar in single modes, an array in\n * `multi-select` / `multi-select-tree`. Supports `[(value)]`, `[(ngModel)]`, and signal forms\n * via {@link FormValueControl}.\n */\n readonly value = model<unknown | unknown[] | null>(null);\n\n /**\n * Full items that resolve the current `value` key(s) without calling datasource `byKey`.\n * Use when the parent already has the selected entity (e.g. edit forms). Seeds the internal\n * item cache; missing keys still fall through to `find` / `byKey`.\n */\n valueItems = input<AXLookupItem[]>([]);\n\n /**\n * Emitted when the selected value changes.\n */\n onValueChanged = output<AXValueChangedEvent<unknown | unknown[] | null>>();\n\n /**\n * Emitted when the selection changes, carrying the resolved selected items.\n */\n onSelectionChanged = output<AXLookupSelectionChangedEvent>();\n\n /**\n * Emitted when the trigger receives focus.\n */\n onFocus = output<AXFocusEvent>();\n\n /**\n * Emitted when the trigger loses focus.\n */\n onBlur = output<AXFocusEvent>();\n\n /**\n * Emitted when a list/tree item is clicked.\n */\n onItemClick = output<AXItemClickEvent<AXLookupItem>>();\n\n /**\n * Emitted when an item is selected (click or keyboard).\n */\n onItemSelected = output<AXItemSelectedEvent<AXLookupItem>>();\n\n /**\n * Emitted when the popup opens.\n */\n onOpened = output<AXEvent>();\n\n /**\n * Emitted when the popup closes.\n */\n onClosed = output<AXEvent>();\n\n /** Whether the popup is expanded. */\n protected expanded = signal(false);\n\n /** Whether the list is currently shown as a bottom actionsheet (small screens + adaptivity). */\n protected isActionsheetStyle = signal(false);\n\n /** Whether the current mode selects multiple values. */\n protected isMultiple = computed(() => this.mode() === 'multi-select' || this.mode() === 'multi-select-tree');\n\n /** Whether the current mode renders a tree. */\n protected isTreeMode = computed(() => {\n const mode = this.mode();\n return (\n mode === 'drop-down-tree' ||\n mode === 'multi-select-tree' ||\n (mode === 'multi-column-tree' && this.treeDataSource() != null)\n );\n });\n\n /** Whether the current mode can filter a list/table as you type. */\n protected isListSearchMode = computed(() => {\n const mode = this.mode();\n return (\n mode === 'drop-down-list' || mode === 'multi-select' || mode === 'multi-column' || mode === 'multi-column-tree'\n );\n });\n\n /** Whether the trigger input is writable and filters as you type (desktop only). */\n protected isEditableTrigger = computed(\n () => this.searchable() && !this.readonly() && !this.isActionsheetStyle() && this.isListSearchMode(),\n );\n\n /** Whether search is typed in the actionsheet instead of the trigger. */\n protected isSheetSearchEnabled = computed(\n () => this.searchable() && !this.readonly() && this.isActionsheetStyle() && this.isListSearchMode(),\n );\n\n /** Query typed in the actionsheet search field (independent of the trigger display text). */\n protected sheetSearchText = signal('');\n\n /** Reused so closing/reopening the popup does not create a new AXDataSource (which would miss cache). */\n #multiColumnTreeTableSource?: AXDataSource<AXLookupItem>;\n #multiColumnTreeTableKey?: string;\n #multiColumnTreeInput?: AXTreeViewDataSource;\n\n /** The datasource for list-based modes; plain arrays are converted. */\n protected resolvedDataSource = computed<AXDataSource<AXLookupItem>>(() => {\n const tree = this.treeDataSource();\n if (this.mode() === 'multi-column-tree' && tree) {\n const key = `${this.valueField()}|${this.textField()}|${this.treeParentField()}|${this.hasChildrenField()}`;\n if (\n this.#multiColumnTreeTableSource &&\n this.#multiColumnTreeInput === tree &&\n this.#multiColumnTreeTableKey === key\n ) {\n return this.#multiColumnTreeTableSource;\n }\n\n const cachedTree: AXTreeViewDataSource = Array.isArray(tree)\n ? tree\n : (nodeId?: string) => this.#loadCachedTreeNodes(tree, nodeId);\n this.#multiColumnTreeInput = tree;\n this.#multiColumnTreeTableKey = key;\n this.#multiColumnTreeTableSource = createLookupTreeTableDataSource(cachedTree, {\n valueField: this.valueField(),\n textField: this.textField(),\n parentField: this.treeParentField(),\n hasChildrenField: this.hasChildrenField(),\n });\n return this.#multiColumnTreeTableSource;\n }\n\n const source = this.dataSource();\n if (!source) {\n return convertArrayToDataSource<AXLookupItem>([], { key: this.valueField(), pageSize: 20 });\n }\n return Array.isArray(source)\n ? convertArrayToDataSource<AXLookupItem>(source, { key: this.valueField(), pageSize: 20 })\n : source;\n });\n\n /**\n * Tree callback results keyed by parent id. Survives popup remount so\n * drop-down-tree / multi-select-tree do not refetch on every open.\n */\n readonly #treeChildrenCache = new WeakMap<AXTreeViewCallback, Map<string, Promise<AXTreeViewNode[]>>>();\n\n protected resolvedTreeDataSource = computed<AXTreeViewDataSource>(() => {\n const source = this.treeDataSource();\n if (!source) {\n return [];\n }\n if (Array.isArray(source)) {\n return source;\n }\n return (nodeId?: string) => this.#loadCachedTreeNodes(source, nodeId);\n });\n\n /** The current selection normalized to an array. */\n protected selectedValues = computed<unknown[]>(() => {\n const value = this.value();\n if (value == null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n });\n\n /** The resolved selected items (via cache, datasource `find`/`byKey`, or tree node lookup). */\n protected selectedItems = signal<AXLookupItem[]>([]);\n\n /** Display text shown in the trigger for single modes. */\n protected displayText = computed(() => {\n const item = this.selectedItems()[0];\n return item ? this.getItemText(item) : '';\n });\n\n /**\n * Text typed in the editable trigger input.\n * Multi-select starts empty; single modes sync from the selected display text.\n */\n protected searchText = linkedSignal(() => (this.isMultiple() ? '' : this.displayText()));\n\n /**\n * Whether the trigger should render `selectedTemplate` instead of the plain input text.\n * Searchable mode shows the template while the popup is closed and the input still matches\n * the selected display text (same pattern as combo-box).\n */\n protected showSelectedTemplate = computed(() => {\n if (this.isMultiple() || !this.selectedTemplate() || this.selectedItems().length === 0) {\n return false;\n }\n if (!this.isEditableTrigger()) {\n return true;\n }\n return !this.expanded() && this.searchText() === this.displayText();\n });\n\n /** Placeholder for the editable trigger search input. */\n protected triggerSearchPlaceholder = computed(() => {\n if (this.isActionsheetStyle()) {\n return this.mode() === 'multi-select' && this.selectedItems().length > 0 ? '' : this.placeholder();\n }\n if (this.mode() === 'multi-select' && this.selectedItems().length > 0) {\n return this.searchPlaceholder();\n }\n return this.placeholder();\n });\n\n protected popoverRef = viewChild(AXPopoverComponent);\n protected triggerSearchInput = viewChild<ElementRef<HTMLInputElement>>('triggerSearchInput');\n protected listView = viewChild(AXLookupListViewBase);\n protected sheetSearchRef = viewChild<AXSearchBoxComponent>('sheetSearch');\n\n #itemsCache = new Map<unknown, AXLookupItem>();\n #isUserInteraction = false;\n #lastValue: unknown | unknown[] | null | undefined = undefined;\n #lastExpanded: boolean | undefined = undefined;\n #resolveRevision = 0;\n #selectionInitialized = false;\n #filterApplied = false;\n #searchDebounce?: ReturnType<typeof setTimeout>;\n #sheetSearchFocused = false;\n\n constructor() {\n super();\n\n effect(() => this.#emitValueChanged(this.value()));\n effect(() => this.#emitOpenedOrClosed(this.expanded()));\n effect(() => {\n this.adaptivityEnabled();\n untracked(() => this.#syncActionsheetStyle());\n });\n\n this.#platform.resize.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n this.#syncActionsheetStyle();\n // Match dropdown-box: close anchored dropdowns on resize; keep actionsheet open.\n if (this.expanded() && !this.isActionsheetStyle()) {\n this.close();\n }\n });\n\n // Seed the actionsheet flag once.\n this.#syncActionsheetStyle();\n\n // Seed the item cache from valueItems, then resolve selection.\n effect(() => {\n const seeded = this.valueItems();\n const values = this.selectedValues();\n this.valueField();\n this.mode();\n this.dataSource();\n this.treeDataSource();\n untracked(() => {\n this.#seedItemsCache(seeded);\n void this.#resolveSelectedItems(values);\n });\n });\n\n // Keep the popover in sync with the expanded state.\n effect(() => {\n const expanded = this.expanded();\n const popover = this.popoverRef();\n if (!popover) {\n return;\n }\n untracked(() => {\n if (expanded && !popover.isOpen) {\n void popover.open();\n } else if (!expanded && popover.isOpen) {\n popover.close();\n }\n });\n });\n\n afterRenderEffect(() => {\n if (!this.expanded()) {\n this.#sheetSearchFocused = false;\n return;\n }\n this.#tryFocusSheetSearch();\n });\n }\n\n #syncActionsheetStyle() {\n this.isActionsheetStyle.set(this.adaptivityEnabled() && this.#platform.is('SM'));\n }\n\n /** Returns the display text of an item using the `textField` mapping. */\n protected getItemText(item: AXLookupItem): string {\n return String(item?.[this.textField()] ?? '');\n }\n\n /** Stable unique key for selected chips — avoids NG0955 and remounts on reorder/remove. */\n protected trackSelectedKey(item: AXLookupItem): unknown {\n const key = item?.[this.valueField()];\n return key != null ? key : item;\n }\n\n /**\n * Opens (editable trigger) or toggles the popup on trigger click.\n */\n protected onTriggerClick() {\n if (this.disabled() || this.readonly()) {\n return;\n }\n if (this.isEditableTrigger()) {\n this.expanded.set(true);\n queueMicrotask(() => this.triggerSearchInput()?.nativeElement.focus());\n return;\n }\n this.expanded.update((open) => !open);\n if (!this.expanded()) {\n return;\n }\n queueMicrotask(() => this.#focusPopupSearchOrList());\n }\n\n /**\n * Focuses the lookup trigger input.\n */\n focus(options?: FocusOptions): void {\n if (this.disabled()) {\n return;\n }\n this.triggerSearchInput()?.nativeElement.focus(options);\n }\n\n /**\n * Handles keyboard interaction on the trigger input.\n */\n protected onTriggerKeydown(e: KeyboardEvent) {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n if (e.key === 'Escape') {\n this.close();\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this.expanded.set(true);\n queueMicrotask(() => this.#focusPopupSearchOrList());\n return;\n }\n\n if (!this.isEditableTrigger() && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n this.expanded.update((open) => !open);\n if (this.expanded()) {\n queueMicrotask(() => this.#focusPopupSearchOrList());\n }\n }\n }\n\n /** Blocks typing when the trigger is not editable (keeps Tab / keyboard open working). */\n protected onBeforeInput(event: Event) {\n if (!this.isEditableTrigger() || this.readonly()) {\n event.preventDefault();\n }\n }\n\n /**\n * Returns focus to the search field when list navigation requests it.\n */\n protected onListNavigateOut(_reason: 'up' | 'typeahead') {\n if (this.isSheetSearchEnabled()) {\n this.sheetSearchRef()?.focus();\n return;\n }\n this.triggerSearchInput()?.nativeElement.focus();\n }\n\n protected focusListFirst() {\n const tryFocus = (attempt = 0) => {\n const list = this.listView();\n if (list) {\n list.focusFirst();\n return;\n }\n if (attempt < 5) {\n setTimeout(() => tryFocus(attempt + 1), 16);\n }\n };\n tryFocus();\n }\n\n /**\n * Keeps the expanded state in sync when the popover closes (e.g. click outside),\n * and clears any applied search filter.\n */\n protected onPopoverClosed() {\n this.expanded.set(false);\n this.searchText.set(this.isMultiple() ? '' : this.displayText());\n this.sheetSearchText.set('');\n if (this.#filterApplied) {\n this.#filterApplied = false;\n const source = this.resolvedDataSource();\n source.clearFilter();\n source.refresh();\n }\n }\n\n /**\n * Closes the popup.\n */\n close() {\n this.expanded.set(false);\n }\n\n /**\n * Closes the popup (alias for {@link close}, required by `AXClosableComponent`).\n */\n closeAll() {\n this.close();\n }\n\n /**\n * Opens the popup.\n */\n open() {\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.expanded.set(true);\n }\n\n /**\n * Handles typing in the editable trigger input.\n */\n protected onTriggerSearchInput(text: string) {\n if (!this.isEditableTrigger()) {\n return;\n }\n this.searchText.set(text);\n this.expanded.set(true);\n this.#applyFilterDebounced(text);\n }\n\n /** Filters the datasource from the actionsheet search field (reads the input so delayed ngModel cannot block typing). */\n protected onSheetSearchInput() {\n const query = this.#sheetSearchInputValue();\n this.sheetSearchText.set(query);\n this.#applyFilterDebounced(query);\n }\n\n /**\n * Commits a single pick (drop-down-list, drop-down-tree, multi-column, multi-column-tree) and closes the popup.\n */\n protected handleSinglePick(e: AXLookupItemClickEvent) {\n this.#emitItemClick(e.item);\n this.#emitItemSelected(e.item);\n this.#itemsCache.set(e.value, e.item);\n this.selectedItems.set([e.item]);\n this.searchText.set(this.getItemText(e.item));\n this.#isUserInteraction = true;\n this.value.set(e.value);\n this.close();\n }\n\n /**\n * Toggles an item in the multi-select list; the popup stays open.\n * Clears the trigger search so the full list returns (select-box-like).\n */\n protected handleMultiToggle(e: AXLookupItemClickEvent) {\n this.#emitItemClick(e.item);\n this.#itemsCache.set(e.value, e.item);\n const current = this.selectedValues();\n const exists = current.some((v) => v == e.value);\n if (!exists) {\n this.#emitItemSelected(e.item);\n }\n const next = exists ? current.filter((v) => !(v == e.value)) : [...current, e.value];\n this.#isUserInteraction = true;\n this.value.set(next);\n if (this.isSheetSearchEnabled() && this.sheetSearchText()) {\n this.#clearSheetSearch();\n } else if (this.isEditableTrigger() && this.searchText()) {\n this.searchText.set('');\n this.#applyFilterDebounced('');\n }\n }\n\n /**\n * Applies the multi-select-tree selection to the value; the popup stays open.\n */\n protected handleTreeSelectionChange(e: AXLookupTreeSelectionEvent) {\n const prev = new Set(this.selectedValues().map((v) => String(v)));\n const newlySelected = e.nodes.filter((node) => !prev.has(String(node[this.valueField()])));\n if (newlySelected.length > 0) {\n this.#emitItemSelected(newlySelected[0]);\n }\n for (const node of e.nodes) {\n this.#itemsCache.set(String(node[this.valueField()]), node);\n }\n this.#isUserInteraction = true;\n this.value.set([...e.ids]);\n }\n\n /** Forwards native focus from the trigger input. */\n protected emitOnFocus(e: FocusEvent) {\n this.onFocus.emit({\n component: this,\n htmlElement: this.nativeElement,\n nativeEvent: e,\n });\n }\n\n /** Forwards native blur from the trigger input. */\n protected emitOnBlur(e: FocusEvent) {\n this.onBlur.emit({\n component: this,\n htmlElement: this.nativeElement,\n nativeEvent: e,\n });\n }\n\n #emitItemClick(item: AXLookupItem) {\n this.onItemClick.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n }\n\n #emitItemSelected(item: AXLookupItem) {\n this.onItemSelected.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n }\n\n /**\n * Removes a single chip from the multi selection.\n */\n protected removeChip(event: Event, item: AXLookupItem) {\n event.stopPropagation();\n if (this.disabled() || this.readonly()) {\n return;\n }\n const value = item?.[this.valueField()];\n this.#isUserInteraction = true;\n this.value.set(this.selectedValues().filter((v) => !(v == value)));\n }\n\n /**\n * Seeds the item cache with known items so matching `value` keys resolve without `byKey`.\n * Useful after an async parent-entity load when `valueItems` is not bound.\n *\n * @param items - Full items that include `valueField` (and ideally `textField`) properties.\n */\n seedItems(items: AXLookupItem[]): void {\n this.#seedItemsCache(items);\n void this.#resolveSelectedItems(this.selectedValues());\n }\n\n /**\n * Clears the whole selection.\n * Sets `null` in single modes and `[]` in multi modes. Used by projected `ax-clear-button`.\n *\n * @param isUserInteraction - Whether the clear was triggered by the user.\n */\n reset(isUserInteraction = false): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n const next = this.isMultiple() ? [] : null;\n const current = this.value();\n if (this.isMultiple()) {\n if (Array.isArray(current) && current.length === 0) {\n return;\n }\n } else if (current == null) {\n return;\n }\n this.#isUserInteraction = isUserInteraction;\n this.value.set(next);\n if (this.isSheetSearchEnabled() && this.sheetSearchText()) {\n this.#clearSheetSearch();\n } else if (this.isEditableTrigger() && this.searchText()) {\n this.searchText.set('');\n this.#applyFilterDebounced('');\n }\n }\n\n #clearSheetSearch() {\n this.sheetSearchText.set('');\n this.sheetSearchRef()?.commitValue('', false);\n this.#applyFilterDebounced('');\n }\n\n #sheetSearchInputValue(): string {\n return this.sheetSearchRef()?.getHostElement()?.querySelector('input')?.value ?? '';\n }\n\n #tryFocusSheetSearch() {\n if (!this.isSheetSearchEnabled() || this.#sheetSearchFocused) {\n return;\n }\n const search = this.sheetSearchRef();\n if (!search) {\n return;\n }\n this.#sheetSearchFocused = true;\n search.focus();\n }\n\n #focusPopupSearchOrList() {\n if (this.isSheetSearchEnabled()) {\n this.#tryFocusSheetSearch();\n return;\n }\n this.focusListFirst();\n }\n\n #loadCachedTreeNodes(source: AXTreeViewCallback, nodeId?: string): Promise<AXTreeViewNode[]> {\n let byParent = this.#treeChildrenCache.get(source);\n if (!byParent) {\n byParent = new Map();\n this.#treeChildrenCache.set(source, byParent);\n }\n\n const key = nodeId ?? '';\n const cached = byParent.get(key);\n if (cached) {\n return cached;\n }\n\n const request = Promise.resolve(source(nodeId)).then(\n (nodes) => nodes ?? [],\n (error: unknown) => {\n byParent.delete(key);\n throw error;\n },\n );\n byParent.set(key, request);\n return request;\n }\n\n #applyFilterDebounced(text: string) {\n if (this.#searchDebounce) {\n clearTimeout(this.#searchDebounce);\n }\n this.#searchDebounce = setTimeout(() => {\n const source = this.resolvedDataSource();\n const query = text?.trim() ?? '';\n if (query) {\n source.filter({ field: this.textField(), value: query, operator: { type: 'contains' } });\n this.#filterApplied = true;\n } else {\n source.clearFilter();\n }\n source.refresh();\n }, 300);\n }\n\n async #resolveSelectedItems(values: unknown[]) {\n const revision = ++this.#resolveRevision;\n const resolved = await Promise.all(values.map((value) => Promise.resolve(this.#resolveItem(value))));\n if (revision !== this.#resolveRevision) {\n return;\n }\n const items = resolved.filter((item): item is AXLookupItem => item != null);\n this.selectedItems.set(items);\n if (this.#selectionInitialized) {\n this.onSelectionChanged.emit({\n component: this,\n htmlElement: this.nativeElement,\n isUserInteraction: this.#isUserInteraction,\n items,\n value: this.value(),\n });\n }\n this.#selectionInitialized = true;\n }\n\n #seedItemsCache(items: AXLookupItem[]) {\n if (!items?.length) {\n return;\n }\n const field = this.valueField();\n for (const item of items) {\n const key = item?.[field];\n if (key == null) {\n continue;\n }\n this.#itemsCache.set(key, item);\n this.#itemsCache.set(String(key), item);\n }\n }\n\n #resolveItem(value: unknown): AXLookupItem | Promise<AXLookupItem | null> | null {\n const cached = this.#itemsCache.get(value) ?? this.#itemsCache.get(String(value));\n if (cached) {\n return cached;\n }\n\n if (this.isTreeMode()) {\n const nodes = this.treeDataSource();\n if (Array.isArray(nodes)) {\n const found = this.#findTreeNode(nodes, value);\n if (found) {\n this.#itemsCache.set(value, found);\n return found;\n }\n }\n return this.#fallbackItem(value);\n }\n\n const source = this.resolvedDataSource();\n const result = source.find(value);\n if (result == null) {\n return this.#fallbackItem(value);\n }\n if (result instanceof Promise) {\n return result.then((item) => {\n if (item) {\n this.#itemsCache.set(value, item);\n return item;\n }\n return this.#fallbackItem(value);\n });\n }\n this.#itemsCache.set(value, result);\n return result;\n }\n\n #fallbackItem(value: unknown): AXLookupItem {\n return { [this.valueField()]: value, [this.textField()]: String(value) };\n }\n\n #findTreeNode(nodes: AXLookupItem[], value: unknown): AXLookupItem | null {\n for (const node of nodes) {\n if (String(node[this.valueField()]) === String(value)) {\n return node;\n }\n const children = node['children'];\n if (Array.isArray(children)) {\n const found = this.#findTreeNode(children as AXLookupItem[], value);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n #valuesEqual(a: unknown, b: unknown): boolean {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((item, index) => item == b[index]);\n }\n return false;\n }\n\n /** Emits onValueChanged when the value actually changes (skips the initial value). */\n #emitValueChanged(value: unknown | unknown[] | null) {\n const previous = this.#lastValue;\n this.#lastValue = value;\n\n if (previous === undefined || this.#valuesEqual(previous, value)) {\n return;\n }\n\n this.onValueChanged.emit({\n component: this,\n htmlElement: this.nativeElement,\n name: 'value',\n value,\n oldValue: previous,\n isUserInteraction: this.#isUserInteraction,\n });\n this.#isUserInteraction = false;\n }\n\n /** Emits onOpened/onClosed when the expanded state actually changes (skips the initial state). */\n #emitOpenedOrClosed(expanded: boolean) {\n const previous = this.#lastExpanded;\n this.#lastExpanded = expanded;\n\n if (previous === undefined || previous === expanded) {\n return;\n }\n\n const event: AXEvent = {\n component: this,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n };\n expanded ? this.onOpened.emit(event) : this.onClosed.emit(event);\n }\n}\n","<div\n #origin\n class=\"ax-editor-container ax-{{ look() }} ax-default\"\n [class.ax-lookup-trigger]=\"!isEditableTrigger()\"\n [class.ax-lookup-trigger-multiple]=\"isMultiple()\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <ng-content select=\"ax-prefix\"></ng-content>\n\n @if (isMultiple()) {\n <div class=\"ax-lookup-chips\">\n @for (item of selectedItems(); track trackSelectedKey(item)) {\n <ax-chips class=\"ax-sm\" color=\"primary\" look=\"twotone\" [text]=\"selectedTemplate() ? '' : getItemText(item)\">\n @if (selectedTemplate()) {\n <ax-prefix>\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </ax-prefix>\n }\n @if (!disabled() && !readonly()) {\n <ax-suffix>\n <button type=\"button\" tabindex=\"-1\" (click)=\"removeChip($event, item)\">\n <span class=\"ax-icon ax-icon-close\"></span>\n </button>\n </ax-suffix>\n }\n </ax-chips>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input ax-lookup-trigger-search\"\n [class.ax-lookup-select-input]=\"!isEditableTrigger()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !isEditableTrigger()\"\n [attr.inputmode]=\"isEditableTrigger() ? null : 'none'\"\n [value]=\"searchText()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (beforeinput)=\"onBeforeInput($event)\"\n (focus)=\"emitOnFocus($event)\"\n (blur)=\"emitOnBlur($event)\"\n />\n </div>\n } @else {\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!isEditableTrigger()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !isEditableTrigger()\"\n [attr.inputmode]=\"isEditableTrigger() ? null : 'none'\"\n [value]=\"searchText()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (beforeinput)=\"onBeforeInput($event)\"\n (focus)=\"emitOnFocus($event)\"\n (blur)=\"emitOnBlur($event)\"\n />\n </div>\n }\n\n @if (selectedValues().length > 0 && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <button\n type=\"button\"\n class=\"ax-general-button-icon\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || readonly()\"\n >\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></span>\n </button>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"isActionsheetStyle() ? '100%' : origin.offsetWidth + 'px'\"\n [adaptivityEnabled]=\"isActionsheetStyle()\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" [class.ax-is-actionsheet]=\"isActionsheetStyle()\" [class.ax-is-alternate]=\"alternate()\" (keydown.escape)=\"close()\">\n @if (isActionsheetStyle()) {\n <ax-header class=\"ax-solid\">\n <ax-title>{{ caption() || placeholder() || ('@acorex:selectbox.popover.title' | translate | async) }}</ax-title>\n <ax-close-button [icon]=\"isMultiple() ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\"></ax-close-button>\n </ax-header>\n }\n @if (isSheetSearchEnabled()) {\n <div class=\"ax-lookup-sheet-search\">\n <ax-search-box\n #sheetSearch\n class=\"ax-sm\"\n look=\"fill\"\n [autoSearch]=\"false\"\n [delayTime]=\"0\"\n [placeholder]=\"searchPlaceholder()\"\n (onValueChanged)=\"onSheetSearchInput()\"\n (onKeyUp)=\"onSheetSearchInput()\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n }\n <ng-content select=\"ax-header\"></ng-content>\n @if (expanded()) {\n @switch (mode()) {\n @case ('drop-down-list') {\n <ax-lookup-drop-down-list\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleSinglePick($event)\"\n (navigateOut)=\"onListNavigateOut($event)\"\n />\n }\n @case ('multi-select') {\n <ax-lookup-multi-select\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleMultiToggle($event)\"\n (navigateOut)=\"onListNavigateOut($event)\"\n />\n }\n @case ('drop-down-tree') {\n <ax-lookup-drop-down-tree\n [dataSource]=\"resolvedTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [nodeTemplate]=\"$any(itemTemplate())\"\n (itemClick)=\"handleSinglePick($event)\"\n />\n }\n @case ('multi-select-tree') {\n <ax-lookup-multi-select-tree\n [dataSource]=\"resolvedTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [selectionBehavior]=\"treeSelectionBehavior()\"\n [nodeTemplate]=\"$any(itemTemplate())\"\n (selectionChange)=\"handleTreeSelectionChange($event)\"\n />\n }\n @case ('multi-column') {\n <ax-lookup-multi-column\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [columns]=\"columns()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleSinglePick($event)\"\n />\n }\n @case ('multi-column-tree') {\n <ax-lookup-multi-column-tree\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [parentField]=\"treeParentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [columns]=\"columns()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleSinglePick($event)\"\n />\n }\n }\n }\n <ng-content select=\"ax-footer\"></ng-content>\n </div>\n</ax-popover>\n<ng-content select=\"ax-validation-rule\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { AXLookupComponent } from './lookup.component';\nimport { AXLookupDropDownListComponent } from './views/lookup-drop-down-list.component';\nimport { AXLookupDropDownTreeComponent } from './views/lookup-drop-down-tree.component';\nimport { AXLookupMultiColumnComponent } from './views/lookup-multi-column.component';\nimport { AXLookupMultiColumnTreeComponent } from './views/lookup-multi-column-tree.component';\nimport { AXLookupMultiSelectTreeComponent } from './views/lookup-multi-select-tree.component';\nimport { AXLookupMultiSelectComponent } from './views/lookup-multi-select.component';\n\n@NgModule({\n imports: [\n AXLookupComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n AXLookupMultiColumnTreeComponent,\n ],\n exports: [\n AXLookupComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n AXLookupMultiColumnTreeComponent,\n ],\n})\nexport class AXLookupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex/components",
3
- "version": "22.1.0-next.19",
3
+ "version": "22.1.0-next.20",
4
4
  "peerDependencies": {
5
- "@acorex/core": "22.1.0-next.19",
6
- "@acorex/cdk": "22.1.0-next.19",
5
+ "@acorex/core": "22.1.0-next.20",
6
+ "@acorex/cdk": "22.1.0-next.20",
7
7
  "@angular/aria": ">=22.1.0",
8
8
  "polytype": ">=0.17.0",
9
9
  "angular-imask": ">=7.6.1",
@@ -120,7 +120,13 @@ declare abstract class AXLookupListViewBase {
120
120
  protected listDataSource: _angular_core.WritableSignal<AXListDataSource<AXLookupItem>>;
121
121
  protected totalCount: _angular_core.WritableSignal<number>;
122
122
  protected isLoading: _angular_core.WritableSignal<boolean>;
123
+ protected readonly loadingPlaceholderIndexes: number[];
123
124
  protected isEmpty: _angular_core.Signal<boolean>;
125
+ /**
126
+ * Overlay popovers often measure as 0px on first open, so CDK virtual scroll
127
+ * renders no rows. Paint these placeholders outside the viewport until data arrives.
128
+ */
129
+ protected showLoadingPlaceholder: _angular_core.Signal<boolean>;
124
130
  /** Viewport height so the popup grows with the items up to `maxVisibleItems`. */
125
131
  protected viewportHeight: _angular_core.Signal<number>;
126
132
  protected viewportRef: _angular_core.Signal<CdkVirtualScrollViewport>;