@acorex/components 22.0.0-next.34 → 22.0.0-next.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-lookup.mjs","sources":["../../../../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.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, AXListDataSource } from '@acorex/cdk/common';\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} 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`, `ax-lookup-multi-column`).\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 * Emitted when the user picks (or toggles) an item.\n */\n itemClick = output<AXLookupItemClickEvent>();\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\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 untracked(() => {\n this.totalCount.set(source.totalCount);\n this.isLoading.set(source.totalCount > 0 ? 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 onCleanup(() => {\n loadingSub.unsubscribe();\n changedSub.unsubscribe();\n });\n });\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 protected trackByIndex = (index: number) => index;\n}\n","import { 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],\n template: `\n @if (isEmpty()) {\n <div class=\"ax-lookup-empty\">\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n }\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (click)=\"handleItemClick(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 <span class=\"ax-lookup-option-check\" 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 { AXTranslatorPipe } from '@acorex/core/translation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport { AXLookupColumn, AXLookupItem } from '../lookup.types';\nimport { AXLookupListViewBase } from './lookup-list-view-base';\n\n/**\n * Internal mini component for the `multi-column` lookup mode:\n * a table-structured, virtualized list with a sticky header row.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-column',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe],\n template: `\n @if (isEmpty()) {\n <div class=\"ax-lookup-empty\">\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n }\n </div>\n } @else {\n <div class=\"ax-lookup-column-header\" role=\"row\" [style.grid-template-columns]=\"gridTemplate()\">\n @for (column of columns(); track column.field) {\n <span class=\"ax-lookup-column-header-cell\" role=\"columnheader\">{{ column.title }}</span>\n }\n </div>\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option ax-lookup-column-row\"\n [style.height.px]=\"itemHeight()\"\n [style.grid-template-columns]=\"gridTemplate()\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (click)=\"handleItemClick(item)\"\n >\n @if (item != null) {\n @if (itemTemplate()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n @for (column of columns(); track column.field) {\n <span class=\"ax-lookup-column-cell\">{{ getCellText(item, column) }}</span>\n }\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 AXLookupMultiColumnComponent extends AXLookupListViewBase {\n /**\n * Column definitions rendered as a sticky header plus one grid cell per row.\n */\n columns = input<AXLookupColumn[]>([]);\n\n /** CSS grid track list built from the column widths. */\n protected gridTemplate = computed(() =>\n this.columns()\n .map((column) => column.width ?? '1fr')\n .join(' '),\n );\n\n protected getCellText(item: AXLookupItem, column: AXLookupColumn): string {\n return String(item?.[column.field] ?? '');\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 { 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],\n template: `\n @if (isEmpty()) {\n <div class=\"ax-lookup-empty\">\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n }\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (click)=\"handleItemClick(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 AXComponent,\n AXDataSource,\n AXEvent,\n AXStyleLookType,\n AXValueChangedEvent,\n NXComponent,\n convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXTreeViewDataSource, AXTreeViewSelectionBehavior } from '@acorex/components/tree-view';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewEncapsulation,\n computed,\n effect,\n input,\n linkedSignal,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\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 { 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 five 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` — a table-structured list with an editable typeahead input.\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 AXPopoverComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n ],\n providers: [{ provide: AXComponent, useExisting: AXLookupComponent }],\n})\nexport class AXLookupComponent extends NXComponent {\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 * 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`):\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` mode.\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Whether typed text filters the datasource. Shows a search box inside the popup for\n * `drop-down-list` / `multi-select`; in `multi-column` mode the trigger input itself filters.\n */\n searchable = input(true);\n\n /**\n * The placeholder of the popup search box.\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 disabled = model(false);\n\n /**\n * Whether the lookup is readonly.\n */\n readonly = model(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 two-way binding.\n */\n value = model<unknown | unknown[] | null>(null);\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 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 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(() => this.mode() === 'drop-down-tree' || this.mode() === 'multi-select-tree');\n\n /** Whether the trigger input is editable (multi-column typeahead). */\n protected isEditableTrigger = computed(() => this.mode() === 'multi-column' && this.searchable() && !this.readonly());\n\n /** Whether the popup shows a search box row. */\n protected showPopupSearch = computed(\n () => this.searchable() && (this.mode() === 'drop-down-list' || this.mode() === 'multi-select'),\n );\n\n /** The datasource for list-based modes; plain arrays are converted. */\n protected resolvedDataSource = computed<AXDataSource<AXLookupItem>>(() => {\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 /** 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 /** The text typed in the editable (multi-column) trigger input. */\n protected searchText = linkedSignal(() => this.displayText());\n\n /** The text typed in the popup search box. */\n protected popupSearchText = signal('');\n\n protected popoverRef = viewChild(AXPopoverComponent);\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\n constructor() {\n super();\n\n effect(() => this.#emitValueChanged(this.value()));\n effect(() => this.#emitOpenedOrClosed(this.expanded()));\n\n // Resolve selected items whenever the value (or the sources) change.\n effect(() => {\n const values = this.selectedValues();\n this.mode();\n this.dataSource();\n this.treeDataSource();\n untracked(() => void this.#resolveSelectedItems(values));\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\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 /**\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 return;\n }\n this.expanded.update((open) => !open);\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.popupSearchText.set('');\n this.searchText.set(this.displayText());\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 * 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 (multi-column) trigger input.\n */\n protected onTriggerSearchInput(text: string) {\n this.searchText.set(text);\n this.expanded.set(true);\n this.#applyFilterDebounced(text);\n }\n\n /**\n * Handles typing in the popup search box.\n */\n protected onPopupSearchInput(text: string) {\n this.popupSearchText.set(text);\n this.#applyFilterDebounced(text);\n }\n\n /**\n * Commits a single pick (drop-down-list, drop-down-tree, multi-column) and closes the popup.\n */\n protected handleSinglePick(e: AXLookupItemClickEvent) {\n this.#itemsCache.set(e.value, e.item);\n if (!this.#valuesEqual(e.value, this.value())) {\n this.#isUserInteraction = true;\n this.value.set(e.value);\n }\n this.close();\n }\n\n /**\n * Toggles an item in the multi-select list; the popup stays open.\n */\n protected handleMultiToggle(e: AXLookupItemClickEvent) {\n this.#itemsCache.set(e.value, e.item);\n const current = this.selectedValues();\n const exists = current.some((v) => v == e.value);\n const next = exists ? current.filter((v) => !(v == e.value)) : [...current, e.value];\n this.#isUserInteraction = true;\n this.value.set(next);\n }\n\n /**\n * Applies the multi-select-tree selection to the value; the popup stays open.\n */\n protected handleTreeSelectionChange(e: AXLookupTreeSelectionEvent) {\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 /**\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 * Clears the whole selection.\n */\n protected clearAll(event: Event) {\n event.stopPropagation();\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.#isUserInteraction = true;\n this.value.set(this.isMultiple() ? [] : null);\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 #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 ax-lookup-trigger\"\n [class.ax-lookup-trigger-multiple]=\"isMultiple()\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n (keydown.escape)=\"close()\"\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 $index) {\n <span class=\"ax-lookup-chip\">\n @if (selectedTemplate()) {\n <ng-container [ngTemplateOutlet]=\"selectedTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"ax-lookup-chip-text\">{{ getItemText(item) }}</span>\n }\n <button\n type=\"button\"\n class=\"ax-lookup-chip-remove\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"removeChip($event, item)\"\n >\n <span class=\"ax-icon ax-icon-close\"></span>\n </button>\n </span>\n } @empty {\n <span class=\"ax-lookup-placeholder\">{{ placeholder() }}</span>\n }\n </div>\n @if (selectedItems().length > 0) {\n <button\n type=\"button\"\n class=\"ax-general-button-icon\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"clearAll($event)\"\n >\n <span class=\"ax-icon ax-icon-close\"></span>\n </button>\n }\n } @else if (isEditableTrigger()) {\n <input\n type=\"text\"\n class=\"ax-input\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"searchText()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n />\n } @else {\n @if (selectedTemplate() && selectedItems().length > 0) {\n <div class=\"ax-lookup-selected-content\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedItems()[0] }\"\n />\n </div>\n } @else {\n <input\n type=\"text\"\n class=\"ax-input ax-lookup-select-input\"\n readonly\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"displayText()\"\n />\n }\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]=\"origin.offsetWidth + 'px'\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" (keydown.escape)=\"close()\">\n @if (showPopupSearch()) {\n <div class=\"ax-lookup-search\">\n <span class=\"ax-icon ax-icon-search\"></span>\n <input\n type=\"text\"\n class=\"ax-lookup-search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"popupSearchText()\"\n (input)=\"onPopupSearchInput($any($event.target).value)\"\n />\n </div>\n }\n\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 (itemClick)=\"handleSinglePick($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 (itemClick)=\"handleMultiToggle($event)\"\n />\n }\n @case ('drop-down-tree') {\n <ax-lookup-drop-down-tree\n [dataSource]=\"treeDataSource()!\"\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]=\"treeDataSource()!\"\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 (itemClick)=\"handleSinglePick($event)\"\n />\n }\n }\n </div>\n</ax-popover>\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 { 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 ],\n exports: [\n AXLookupComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n ],\n})\nexport class AXLookupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAiBA;;;AAGG;MAEmB,oBAAoB,CAAA;AAwExC,IAAA,OAAO;AAEP,IAAA,WAAA,GAAA;AAzEA;;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,MAAM,EAA0B;;QAGlC,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;AAE3D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AA6Dd,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAa,KAAK,KAAK;;;;;;AArD/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;YAC3D,SAAS,CAAC,MAAK;gBACb,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;gBACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACnE,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;YACvF,SAAS,CAAC,MAAK;gBACb,UAAU,CAAC,WAAW,EAAE;gBACxB,UAAU,CAAC,WAAW,EAAE;AAC1B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;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;8GAnIoB,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,ghDAsEN,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAtEtC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADzC;+rCAuEmC,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACtF5D;;;;;AAKG;AAuDG,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,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjD9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAhDS,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,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;;2FAkD7D,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAtDzC,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,CAAC;AACzE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CT,EAAA,CAAA;AACF,iBAAA;;;ACxDD;;;;;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;;;AC7BD;;;;;AAKG;AA8DG,MAAO,4BAA6B,SAAQ,oBAAoB,CAAA;AA7DtE,IAAA,WAAA,GAAA;;AA8DE;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,EAAE;oFAAC;;QAG3B,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,OAAO;aACT,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,KAAK;aACrC,IAAI,CAAC,GAAG,CAAC;yFACb;AAKF,IAAA;IAHW,WAAW,CAAC,IAAkB,EAAE,MAAsB,EAAA;AAC9D,QAAA,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3C;8GAfW,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,MAAA,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,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxD7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAvDS,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,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;;2FAyD7D,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA7DxC,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,CAAC;AACzE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDT,EAAA,CAAA;AACF,iBAAA;;;ACvDD;;;;;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;;;ACvCD;;;;;AAKG;AA8DG,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,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxD7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAvDS,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,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;;2FAyD7D,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA7DxC,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,CAAC;AACzE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDT,EAAA,CAAA;AACF,iBAAA;;;AC7BD;;;;;;;;;;;AAWG;AAkBG,MAAO,iBAAkB,SAAQ,WAAW,CAAA;AAyLhD,IAAA,WAAW;AACX,IAAA,kBAAkB;AAClB,IAAA,UAAU;AACV,IAAA,aAAa;AACb,IAAA,gBAAgB;AAChB,IAAA,qBAAqB;AACrB,IAAA,cAAc;AACd,IAAA,eAAe;AAEf,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAlMT;;AAEG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,gBAAgB;iFAAC;AAE5C;;;AAGG;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;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,EAAE;oFAAC;AAErC;;;AAGG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI;uFAAC;AAExB;;AAEG;QACH,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,WAAW;8FAAC;AAEtC;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,EAAE;wFAAC;AAEvB;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK;qFAAC;AAEvB;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK;qFAAC;AAEvB;;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;;;AAGG;QACH,IAAA,CAAA,KAAK,GAAG,KAAK,CAA6B,IAAI;kFAAC;AAE/C;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,MAAM,EAAmD;AAE1E;;AAEG;QACH,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAAiC;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;;AAGxB,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,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,gBAAgB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,mBAAmB;uFAAC;;QAGpG,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,cAAc,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;8FAAC;;QAG3G,IAAA,CAAA,eAAe,GAAG,QAAQ,CAClC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,gBAAgB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,cAAc,CAAC;4FAChG;;AAGS,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAA6B,MAAK;AACvE,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;;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;;QAGQ,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE;uFAAC;;QAGnD,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,EAAE;4FAAC;QAE5B,IAAA,CAAA,UAAU,GAAG,SAAS,CAAC,kBAAkB;uFAAC;AAEpD,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;AAMpB,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;;QAGvD,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;YACpC,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC1D,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;IACJ;;AAGU,IAAA,WAAW,CAAC,IAAkB,EAAA;AACtC,QAAA,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/C;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;YACvB;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;IACvC;AAEA;;;AAGG;IACO,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,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,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,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;AAEA;;AAEG;AACO,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;IAClC;AAEA;;AAEG;AACO,IAAA,gBAAgB,CAAC,CAAyB,EAAA;AAClD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACzB;QACA,IAAI,CAAC,KAAK,EAAE;IACd;AAEA;;AAEG;AACO,IAAA,iBAAiB,CAAC,CAAyB,EAAA;AACnD,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;AAChD,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;IACtB;AAEA;;AAEG;AACO,IAAA,yBAAyB,CAAC,CAA6B,EAAA;AAC/D,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;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;;AAEG;AACO,IAAA,QAAQ,CAAC,KAAY,EAAA;QAC7B,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC;QACF;AACA,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC/C;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,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;8GA7eW,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,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,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,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,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,KAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAFjB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAyLpC,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/PrD,ooMAyLA,EAAA,MAAA,EAAA,CAAA,wgYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED3HI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,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,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,iOAChC,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAInB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAjB7B,SAAS;+BACE,WAAW,EAAA,aAAA,EAGN,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,gBAAgB;wBAChB,kBAAkB;wBAClB,6BAA6B;wBAC7B,4BAA4B;wBAC5B,6BAA6B;wBAC7B,gCAAgC;wBAChC,4BAA4B;qBAC7B,EAAA,SAAA,EACU,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,iBAAmB,EAAE,CAAC,EAAA,QAAA,EAAA,ooMAAA,EAAA,MAAA,EAAA,CAAA,wgYAAA,CAAA,EAAA;+nFAyLpC,kBAAkB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MErOxC,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,YAhBvB,iBAAiB;YACjB,6BAA6B;YAC7B,4BAA4B;YAC5B,6BAA6B;YAC7B,gCAAgC;AAChC,YAAA,4BAA4B,aAG5B,iBAAiB;YACjB,6BAA6B;YAC7B,4BAA4B;YAC5B,6BAA6B;YAC7B,gCAAgC;YAChC,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAGnB,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,YAhBvB,iBAAiB;YACjB,6BAA6B;YAC7B,4BAA4B;YAC5B,6BAA6B;YAC7B,gCAAgC;YAChC,4BAA4B,CAAA,EAAA,CAAA,CAAA;;2FAWnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,6BAA6B;wBAC7B,4BAA4B;wBAC5B,6BAA6B;wBAC7B,gCAAgC;wBAChC,4BAA4B;AAC7B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,6BAA6B;wBAC7B,4BAA4B;wBAC5B,6BAA6B;wBAC7B,gCAAgC;wBAChC,4BAA4B;AAC7B,qBAAA;AACF,iBAAA;;;ACzBD;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-components-lookup.mjs","sources":["../../../../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.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, AXListDataSource } from '@acorex/cdk/common';\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} 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`, `ax-lookup-multi-column`).\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 * Emitted when the user picks (or toggles) an item.\n */\n itemClick = output<AXLookupItemClickEvent>();\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\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 untracked(() => {\n this.totalCount.set(source.totalCount);\n this.isLoading.set(source.totalCount > 0 ? 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 onCleanup(() => {\n loadingSub.unsubscribe();\n changedSub.unsubscribe();\n });\n });\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 protected trackByIndex = (index: number) => index;\n}\n","import { 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],\n template: `\n @if (isEmpty()) {\n <div class=\"ax-lookup-empty\">\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n }\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (click)=\"handleItemClick(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 <span class=\"ax-lookup-option-check\" 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 { AXTranslatorPipe } from '@acorex/core/translation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport { AXLookupColumn, AXLookupItem } from '../lookup.types';\nimport { AXLookupListViewBase } from './lookup-list-view-base';\n\n/**\n * Internal mini component for the `multi-column` lookup mode:\n * a table-structured, virtualized list with a sticky header row.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-column',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe],\n template: `\n @if (isEmpty()) {\n <div class=\"ax-lookup-empty\">\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n }\n </div>\n } @else {\n <div class=\"ax-lookup-column-header\" role=\"row\" [style.grid-template-columns]=\"gridTemplate()\">\n @for (column of columns(); track column.field) {\n <span class=\"ax-lookup-column-header-cell\" role=\"columnheader\">{{ column.title }}</span>\n }\n </div>\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option ax-lookup-column-row\"\n [style.height.px]=\"itemHeight()\"\n [style.grid-template-columns]=\"gridTemplate()\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (click)=\"handleItemClick(item)\"\n >\n @if (item != null) {\n @if (itemTemplate()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n @for (column of columns(); track column.field) {\n <span class=\"ax-lookup-column-cell\">{{ getCellText(item, column) }}</span>\n }\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 AXLookupMultiColumnComponent extends AXLookupListViewBase {\n /**\n * Column definitions rendered as a sticky header plus one grid cell per row.\n */\n columns = input<AXLookupColumn[]>([]);\n\n /** CSS grid track list built from the column widths. */\n protected gridTemplate = computed(() =>\n this.columns()\n .map((column) => column.width ?? '1fr')\n .join(' '),\n );\n\n protected getCellText(item: AXLookupItem, column: AXLookupColumn): string {\n return String(item?.[column.field] ?? '');\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 { 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],\n template: `\n @if (isEmpty()) {\n <div class=\"ax-lookup-empty\">\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n }\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (click)=\"handleItemClick(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 AXComponent,\n AXDataSource,\n AXEvent,\n AXStyleLookType,\n AXValueChangedEvent,\n NXComponent,\n convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXTreeViewDataSource, AXTreeViewSelectionBehavior } from '@acorex/components/tree-view';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewEncapsulation,\n computed,\n effect,\n input,\n linkedSignal,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\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 { 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 five 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` — a table-structured list with an editable typeahead input.\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 AXPopoverComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n ],\n providers: [{ provide: AXComponent, useExisting: AXLookupComponent }],\n})\nexport class AXLookupComponent extends NXComponent {\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 * 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`):\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` mode.\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Whether typed text filters the datasource. Shows a search box inside the popup for\n * `drop-down-list` / `multi-select`; in `multi-column` mode the trigger input itself filters.\n */\n searchable = input(true);\n\n /**\n * The placeholder of the popup search box.\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 disabled = model(false);\n\n /**\n * Whether the lookup is readonly.\n */\n readonly = model(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 two-way binding.\n */\n value = model<unknown | unknown[] | null>(null);\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 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 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(() => this.mode() === 'drop-down-tree' || this.mode() === 'multi-select-tree');\n\n /** Whether the trigger input is editable (multi-column typeahead). */\n protected isEditableTrigger = computed(() => this.mode() === 'multi-column' && this.searchable() && !this.readonly());\n\n /** Whether the popup shows a search box row. */\n protected showPopupSearch = computed(\n () => this.searchable() && (this.mode() === 'drop-down-list' || this.mode() === 'multi-select'),\n );\n\n /** The datasource for list-based modes; plain arrays are converted. */\n protected resolvedDataSource = computed<AXDataSource<AXLookupItem>>(() => {\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 /** 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 /** The text typed in the editable (multi-column) trigger input. */\n protected searchText = linkedSignal(() => this.displayText());\n\n /** The text typed in the popup search box. */\n protected popupSearchText = signal('');\n\n protected popoverRef = viewChild(AXPopoverComponent);\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\n constructor() {\n super();\n\n effect(() => this.#emitValueChanged(this.value()));\n effect(() => this.#emitOpenedOrClosed(this.expanded()));\n\n // Resolve selected items whenever the value (or the sources) change.\n effect(() => {\n const values = this.selectedValues();\n this.mode();\n this.dataSource();\n this.treeDataSource();\n untracked(() => void this.#resolveSelectedItems(values));\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\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 /**\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 return;\n }\n this.expanded.update((open) => !open);\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.popupSearchText.set('');\n this.searchText.set(this.displayText());\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 * 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 (multi-column) trigger input.\n */\n protected onTriggerSearchInput(text: string) {\n this.searchText.set(text);\n this.expanded.set(true);\n this.#applyFilterDebounced(text);\n }\n\n /**\n * Handles typing in the popup search box.\n */\n protected onPopupSearchInput(text: string) {\n this.popupSearchText.set(text);\n this.#applyFilterDebounced(text);\n }\n\n /**\n * Commits a single pick (drop-down-list, drop-down-tree, multi-column) and closes the popup.\n */\n protected handleSinglePick(e: AXLookupItemClickEvent) {\n this.#itemsCache.set(e.value, e.item);\n if (!this.#valuesEqual(e.value, this.value())) {\n this.#isUserInteraction = true;\n this.value.set(e.value);\n }\n this.close();\n }\n\n /**\n * Toggles an item in the multi-select list; the popup stays open.\n */\n protected handleMultiToggle(e: AXLookupItemClickEvent) {\n this.#itemsCache.set(e.value, e.item);\n const current = this.selectedValues();\n const exists = current.some((v) => v == e.value);\n const next = exists ? current.filter((v) => !(v == e.value)) : [...current, e.value];\n this.#isUserInteraction = true;\n this.value.set(next);\n }\n\n /**\n * Applies the multi-select-tree selection to the value; the popup stays open.\n */\n protected handleTreeSelectionChange(e: AXLookupTreeSelectionEvent) {\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 /**\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 * Clears the whole selection.\n */\n protected clearAll(event: Event) {\n event.stopPropagation();\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.#isUserInteraction = true;\n this.value.set(this.isMultiple() ? [] : null);\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 #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 ax-lookup-trigger\"\n [class.ax-lookup-trigger-multiple]=\"isMultiple()\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n (keydown.escape)=\"close()\"\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 $index) {\n <span class=\"ax-lookup-chip\">\n @if (selectedTemplate()) {\n <ng-container [ngTemplateOutlet]=\"selectedTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"ax-lookup-chip-text\">{{ getItemText(item) }}</span>\n }\n <button\n type=\"button\"\n class=\"ax-lookup-chip-remove\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"removeChip($event, item)\"\n >\n <span class=\"ax-icon ax-icon-close\"></span>\n </button>\n </span>\n } @empty {\n <span class=\"ax-lookup-placeholder\">{{ placeholder() }}</span>\n }\n </div>\n @if (selectedItems().length > 0) {\n <button\n type=\"button\"\n class=\"ax-general-button-icon\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"clearAll($event)\"\n >\n <span class=\"ax-icon ax-icon-close\"></span>\n </button>\n }\n } @else if (isEditableTrigger()) {\n <input\n type=\"text\"\n class=\"ax-input\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"searchText()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n />\n } @else {\n @if (selectedTemplate() && selectedItems().length > 0) {\n <div class=\"ax-lookup-selected-content\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedItems()[0] }\"\n />\n </div>\n } @else {\n <input\n type=\"text\"\n class=\"ax-input ax-lookup-select-input\"\n readonly\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"displayText()\"\n />\n }\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]=\"origin.offsetWidth + 'px'\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" (keydown.escape)=\"close()\">\n @if (showPopupSearch()) {\n <div class=\"ax-lookup-search\">\n <span class=\"ax-icon ax-icon-search\"></span>\n <input\n type=\"text\"\n class=\"ax-lookup-search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"popupSearchText()\"\n (input)=\"onPopupSearchInput($any($event.target).value)\"\n />\n </div>\n }\n\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 (itemClick)=\"handleSinglePick($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 (itemClick)=\"handleMultiToggle($event)\"\n />\n }\n @case ('drop-down-tree') {\n <ax-lookup-drop-down-tree\n [dataSource]=\"treeDataSource()!\"\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]=\"treeDataSource()!\"\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 (itemClick)=\"handleSinglePick($event)\"\n />\n }\n }\n </div>\n</ax-popover>\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 { 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 ],\n exports: [\n AXLookupComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n ],\n})\nexport class AXLookupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}