@acorex/components 20.10.14 → 20.10.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -8,7 +8,7 @@ import { AXTranslatorPipe, AXTranslationModule } from '@acorex/core/translation'
|
|
|
8
8
|
import { AXUnsubscriber } from '@acorex/core/utils';
|
|
9
9
|
import { NgTemplateOutlet, NgClass, AsyncPipe, CommonModule } from '@angular/common';
|
|
10
10
|
import * as i0 from '@angular/core';
|
|
11
|
-
import { input, inject, signal, linkedSignal, afterNextRender, forwardRef, HostListener, ViewChild, ContentChild, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
11
|
+
import { input, inject, signal, linkedSignal, computed, afterNextRender, forwardRef, HostListener, ViewChild, ContentChild, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
12
12
|
import * as i1 from '@angular/forms';
|
|
13
13
|
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
14
14
|
import { isEqual, get, last, findLastIndex, nth } from 'lodash-es';
|
|
@@ -54,6 +54,18 @@ class AXSelectBoxComponent extends classes(MXDropdownBoxBaseComponent, MXSelecti
|
|
|
54
54
|
this._dropdownWidth = linkedSignal(() => this.dropdownWidth(), ...(ngDevMode ? [{ debugName: "_dropdownWidth" }] : []));
|
|
55
55
|
/** @ignore */
|
|
56
56
|
this._dropdownHeight = signal('auto', ...(ngDevMode ? [{ debugName: "_dropdownHeight" }] : []));
|
|
57
|
+
/**
|
|
58
|
+
* CSS min-height for the popover list. Uses the sized height when known,
|
|
59
|
+
* otherwise the standard `maxVisibleItems × itemHeight` viewport.
|
|
60
|
+
* @ignore
|
|
61
|
+
*/
|
|
62
|
+
this._panelMinHeight = computed(() => {
|
|
63
|
+
const current = this._dropdownHeight();
|
|
64
|
+
if (current !== 'auto') {
|
|
65
|
+
return current;
|
|
66
|
+
}
|
|
67
|
+
return `${this._getStandardListHeightPx()}px`;
|
|
68
|
+
}, ...(ngDevMode ? [{ debugName: "_panelMinHeight" }] : []));
|
|
57
69
|
/** @ignore */
|
|
58
70
|
this._listDataSource = convertArrayToDataSource([], {
|
|
59
71
|
key: this.valueField,
|
|
@@ -277,21 +289,29 @@ class AXSelectBoxComponent extends classes(MXDropdownBoxBaseComponent, MXSelecti
|
|
|
277
289
|
if (this.searchBox && this.searchBox?.value)
|
|
278
290
|
this.searchBox.commitValue('', false);
|
|
279
291
|
}
|
|
292
|
+
_getListItemPx() {
|
|
293
|
+
return typeof this.itemHeight() === 'number' ? this.itemHeight() : 40;
|
|
294
|
+
}
|
|
295
|
+
_getMaxVisibleItems() {
|
|
296
|
+
return Math.max(Number(this.maxVisibleItems()) || 5, 1);
|
|
297
|
+
}
|
|
298
|
+
/** Standard popover list height: `maxVisibleItems` rows (default 5). */
|
|
299
|
+
_getStandardListHeightPx() {
|
|
300
|
+
return this._getMaxVisibleItems() * this._getListItemPx();
|
|
301
|
+
}
|
|
280
302
|
/** @ignore */
|
|
281
|
-
setDropdownSize(
|
|
282
|
-
const itemPx =
|
|
303
|
+
setDropdownSize(_count = 0) {
|
|
304
|
+
const itemPx = this._getListItemPx();
|
|
283
305
|
const isActionsheet = this.dropdown.isActionsheetStyle;
|
|
306
|
+
const listHeight = `${this._getStandardListHeightPx()}px`;
|
|
284
307
|
if (isActionsheet) {
|
|
285
308
|
this._dropdownWidth.set('100%');
|
|
286
|
-
|
|
287
|
-
const maxItems = Math.max(Number(this.maxVisibleItems()) || 5, 1);
|
|
288
|
-
this._dropdownHeight.set(`${Math.min(maxItems, Math.max(count, 1)) * itemPx}px`);
|
|
309
|
+
this._dropdownHeight.set(listHeight);
|
|
289
310
|
}
|
|
290
311
|
else {
|
|
291
312
|
const hostWidth = Math.max(this.getHostElement().offsetWidth, Number(this.dropdownWidth()) || 0);
|
|
292
|
-
const maxItems = Number(this.maxVisibleItems());
|
|
293
313
|
this._dropdownWidth.set(`${hostWidth}px`);
|
|
294
|
-
this._dropdownHeight.set(
|
|
314
|
+
this._dropdownHeight.set(listHeight);
|
|
295
315
|
}
|
|
296
316
|
setTimeout(() => {
|
|
297
317
|
this._fitListHeightToAvailableSpace(itemPx);
|
|
@@ -338,7 +358,10 @@ class AXSelectBoxComponent extends classes(MXDropdownBoxBaseComponent, MXSelecti
|
|
|
338
358
|
nextHeight = Math.max(itemPx, nextHeight - overflow);
|
|
339
359
|
}
|
|
340
360
|
// Keep height as whole rows so the last item is never permanently cropped.
|
|
341
|
-
|
|
361
|
+
// Prefer the standard viewport; only go shorter when the overlay/viewport is smaller.
|
|
362
|
+
const standardHeight = this._getStandardListHeightPx();
|
|
363
|
+
const fittedHeight = Math.max(itemPx, Math.floor(nextHeight / itemPx) * itemPx);
|
|
364
|
+
nextHeight = overflow > 1 ? fittedHeight : Math.max(standardHeight, fittedHeight);
|
|
342
365
|
const current = parseFloat(this._dropdownHeight());
|
|
343
366
|
if (!Number.isFinite(current) || nextHeight !== current) {
|
|
344
367
|
this._dropdownHeight.set(`${nextHeight}px`);
|
|
@@ -482,7 +505,7 @@ class AXSelectBoxComponent extends classes(MXDropdownBoxBaseComponent, MXSelecti
|
|
|
482
505
|
useClass: MXSelectionBridgeService,
|
|
483
506
|
},
|
|
484
507
|
AXUnsubscriber,
|
|
485
|
-
], queries: [{ propertyName: "searchBox", first: true, predicate: AXSearchBoxComponent, descendants: true }], viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "list", first: true, predicate: AXListComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: AXDropdownBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-dropdown-box\n [class.ax-state-multiple]=\"multiple\"\n (onOpened)=\"_handleOnOpenedEvent($event)\"\n (onClosed)=\"_handleOnClosedEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n [disabled]=\"disabled\"\n [look]=\"look\"\n [popoverWidth]=\"dropdownWidth()\"\n>\n <ng-container input>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <div\n class=\"ax-editor ax-chips-container ax-content ax-input\"\n [class.ax-state-multiple]=\"multiple\"\n [tabindex]=\"tabIndex\"\n >\n @if (selectedItems.length === 0) {\n <div class=\"ax-placeholder\" role=\"textbox\" area-readonly=\"true\">\n {{ placeholder | translate | async }}\n </div>\n }\n @for (item of selectedItems; track $index) {\n @if (selectedTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"selectedTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { data: item } }\"\n ></ng-template>\n } @else {\n <div class=\"ax-chips\">\n {{ getDisplayText(item) | translate | async }}\n @if (!disabled && !readonly && multiple) {\n <span class=\"ax-icon ax-icon-close\" (click)=\"_handleBadgeRemove($event, item)\"> </span>\n }\n </div>\n }\n }\n </div>\n @if (selectedItems?.length && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <button type=\"button\" [disabled]=\"disabled\" [tabIndex]=\"-1\" class=\"ax-editor-button\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <span\n class=\"ax-icon\"\n [ngClass]=\"{\n 'ax-icon-chevron-down': !isOpen,\n 'ax-icon-chevron-up': isOpen,\n }\"\n ></span>\n }\n </button>\n <ng-content select=\"ax-suffix\"> </ng-content>\n <ng-template #search>\n <ng-content select=\"ax-search-box\"> </ng-content>\n </ng-template>\n </ng-container>\n <ng-container panel>\n <div\n #panel\n class=\"ax-select-box-panel\"\n [class.ax-no-truncate]=\"!isItemTruncated()\"\n [style.min-width]=\"_dropdownWidth()\"\n >\n @if (dropdown.isActionsheetStyle) {\n <ax-header class=\"ax-solid\">\n <ax-title>{{ caption || placeholder || '@acorex:selectbox.popover.title' | translate | async }}</ax-title>\n <ax-close-button [icon]=\"multiple ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\"></ax-close-button>\n </ax-header>\n }\n @if (searchBox && (!minRecordsForSearch || _listDataSource.totalCount >= minRecordsForSearch || searchValue())) {\n <div class=\"ax-search-container\">\n <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n </div>\n }\n @if (renderList()) {\n <ax-list\n [name]=\"name\"\n [ngModel]=\"value\"\n [readonly]=\"readonly\"\n [multiple]=\"multiple\"\n [textField]=\"textField\"\n [selectionMode]=\"'item'\"\n [valueField]=\"valueField\"\n [itemHeight]=\"itemHeight()\"\n [itemTemplate]=\"itemTemplate\"\n [textTemplate]=\"textTemplate\"\n [dataSource]=\"_listDataSource\"\n [style.height]=\"_dropdownHeight()\"\n [loadingTemplate]=\"loadingTemplate\"\n [isItemTruncated]=\"isItemTruncated()\"\n [showItemTooltip]=\"showItemTooltip()\"\n (onItemClick)=\"_handleItemClick($event)\"\n [emptyTemplate]=\"emptyTemplate ?? empty\"\n (onValueChanged)=\"_handleValueChanged($event)\"\n (onItemSelected)=\"_handleItemSelected($event)\"\n >\n </ax-list>\n <ng-template #empty>\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </ng-template>\n }\n\n @if (isLoading()) {\n @if (loadingTemplate) {\n <ng-template [ngTemplateOutlet]=\"loadingTemplate\"></ng-template>\n }\n }\n\n <ng-content select=\"ax-footer\"> </ng-content>\n </div>\n </ng-container>\n</ax-dropdown-box>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: [".ax-editor-container.ax-fill .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surfaceest);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-flat .ax-chips,.ax-editor-container.ax-outline .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-solid .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-light-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-light-surface)}ax-select-box .ax-chips-container{outline:0px solid transparent}.ax-xs ax-select-box,ax-select-box.ax-xs{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .625rem;--ax-comp-editor-placeholder-space-x: .375rem}.ax-sm ax-select-box,ax-select-box.ax-sm{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .75rem;--ax-comp-editor-placeholder-space-x: .5rem}ax-select-box,ax-select-box.ax-md{--ax-comp-select-box-chips-padding-x: .5rem;--ax-comp-select-box-chips-padding-y: .25rem;--ax-comp-select-box-chips-font-size: .875rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-lg ax-select-box,ax-select-box.ax-lg{--ax-comp-select-box-chips-padding-x: .75rem;--ax-comp-select-box-chips-padding-y: .5rem;--ax-comp-select-box-chips-font-size: 1rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-xl ax-select-box,ax-select-box.ax-xl{--ax-comp-select-box-chips-padding-x: .875rem;--ax-comp-select-box-chips-padding-y: .75rem;--ax-comp-select-box-chips-font-size: 1.125rem;--ax-comp-editor-placeholder-space-x: .75rem}ax-select-box{display:block;width:100%;border-radius:var(--ax-sys-border-radius)}ax-select-box.ax-float-label .ax-editor{padding-top:1.75rem!important}ax-select-box .ax-state-disabled{opacity:.5;cursor:not-allowed}ax-select-box .ax-state-disabled .ax-content,ax-select-box .ax-state-disabled .ax-editor-button{cursor:not-allowed}ax-select-box .ax-state-disabled .ax-chips-container{cursor:not-allowed!important}ax-select-box ax-dropdown-box{border-radius:inherit!important}ax-select-box ax-dropdown-box.ax-state-multiple{height:auto;min-height:var(--ax-comp-editor-height);--ax-comp-editor-space-start-size: 0}ax-select-box ax-dropdown-box.ax-state-multiple .ax-placeholder{padding:0 var(--ax-comp-editor-placeholder-space-x)}ax-select-box .ax-chips-container{display:flex;flex:1 1 0%;min-width:0;cursor:pointer!important;-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--ax-comp-select-box-chips-gap, .25rem);min-height:var(--ax-sys-size-base)}ax-select-box .ax-chips-container .ax-chips{display:block;overflow:hidden;text-wrap:nowrap;line-height:normal;text-overflow:ellipsis;padding:0 var(--ax-comp-editor-padding-x, .25rem);color:rgb(var(--ax-comp-select-box-chips-text-color));font-size:var(--ax-comp-select-box-chips-font-size)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips{background-color:rgb(var(--ax-comp-select-box-chips-bg-color));border-radius:var(--ax-comp-select-box-chips-border-radius, 999rem);border-width:var(--ax-comp-select-box-chips-border-width, 0px);padding:var(--ax-comp-select-box-chips-padding-y, .25rem) var(--ax-comp-select-box-chips-padding-x, .5rem)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips .ax-icon-close{cursor:pointer;margin-inline-start:var(--ax-comp-select-box-chips-padding-x)}ax-select-box .ax-chips-container .ax-selectbox-input{width:0px;opacity:0}ax-select-box .ax-chips-container.ax-state-multiple:has(.ax-chips){padding:var(--ax-comp-select-box-chips-container-padding, .25rem)}.ax-select-box-panel{display:flex;flex-direction:column;height:fit-content;max-height:100%;overflow:hidden}.ax-select-box-panel.ax-no-truncate .ax-label-container span:not(.ax-truncated){white-space:nowrap}.ax-select-box-panel .ax-select-box-loading-container{display:flex;align-items:center;justify-content:center;padding:1rem}.ax-select-box-panel ax-list{flex:1 1 auto;min-height:0}.ax-select-box-panel>ax-header .ax-icon-check{color:rgba(var(--ax-sys-color-primary-500))}.ax-select-box-panel>ax-header.ax-solid{border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}.ax-select-box-panel>ax-header.ax-solid ax-title{font-size:1rem;line-height:1.5rem;font-weight:500}@media(max-width:40rem){.ax-select-box-panel .list-item{padding-inline:1rem}}\n"], dependencies: [{ kind: "component", type: AXDropdownBoxComponent, selector: "ax-dropdown-box", inputs: ["disabled", "look", "hasInput", "popoverWidth"], outputs: ["disabledChange", "onBlur", "onFocus", "onClick", "onOpened", "onClosed"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "component", type: AXListComponent, selector: "ax-list", inputs: ["id", "name", "disabled", "readonly", "valueField", "textField", "textTemplate", "disabledField", "multiple", "selectionMode", "isItemTruncated", "showItemTooltip", "dataSource", "itemHeight", "itemTemplate", "emptyTemplate", "loadingTemplate", "checkbox"], outputs: ["onValueChanged", "disabledChange", "readonlyChange", "onBlur", "onFocus", "onItemClick", "onItemSelected", "onScrolledIndexChanged"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
508
|
+
], queries: [{ propertyName: "searchBox", first: true, predicate: AXSearchBoxComponent, descendants: true }], viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "list", first: true, predicate: AXListComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: AXDropdownBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-dropdown-box\n [class.ax-state-multiple]=\"multiple\"\n (onOpened)=\"_handleOnOpenedEvent($event)\"\n (onClosed)=\"_handleOnClosedEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n [disabled]=\"disabled\"\n [look]=\"look\"\n [popoverWidth]=\"dropdownWidth()\"\n>\n <ng-container input>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <div\n class=\"ax-editor ax-chips-container ax-content ax-input\"\n [class.ax-state-multiple]=\"multiple\"\n [tabindex]=\"tabIndex\"\n >\n @if (selectedItems.length === 0) {\n <div class=\"ax-placeholder\" role=\"textbox\" area-readonly=\"true\">\n {{ placeholder | translate | async }}\n </div>\n }\n @for (item of selectedItems; track $index) {\n @if (selectedTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"selectedTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { data: item } }\"\n ></ng-template>\n } @else {\n <div class=\"ax-chips\">\n {{ getDisplayText(item) | translate | async }}\n @if (!disabled && !readonly && multiple) {\n <span class=\"ax-icon ax-icon-close\" (click)=\"_handleBadgeRemove($event, item)\"> </span>\n }\n </div>\n }\n }\n </div>\n @if (selectedItems?.length && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <button type=\"button\" [disabled]=\"disabled\" [tabIndex]=\"-1\" class=\"ax-editor-button\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <span\n class=\"ax-icon\"\n [ngClass]=\"{\n 'ax-icon-chevron-down': !isOpen,\n 'ax-icon-chevron-up': isOpen,\n }\"\n ></span>\n }\n </button>\n <ng-content select=\"ax-suffix\"> </ng-content>\n <ng-template #search>\n <ng-content select=\"ax-search-box\"> </ng-content>\n </ng-template>\n </ng-container>\n <ng-container panel>\n <div\n #panel\n class=\"ax-select-box-panel\"\n [class.ax-no-truncate]=\"!isItemTruncated()\"\n [style.min-width]=\"_dropdownWidth()\"\n [style.--ax-comp-select-box-panel-min-height]=\"_panelMinHeight()\"\n >\n @if (dropdown.isActionsheetStyle) {\n <ax-header class=\"ax-solid\">\n <ax-title>{{ caption || placeholder || '@acorex:selectbox.popover.title' | translate | async }}</ax-title>\n <ax-close-button [icon]=\"multiple ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\"></ax-close-button>\n </ax-header>\n }\n @if (searchBox && (!minRecordsForSearch || _listDataSource.totalCount >= minRecordsForSearch || searchValue())) {\n <div class=\"ax-search-container\">\n <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n </div>\n }\n @if (renderList()) {\n <ax-list\n [name]=\"name\"\n [ngModel]=\"value\"\n [readonly]=\"readonly\"\n [multiple]=\"multiple\"\n [textField]=\"textField\"\n [selectionMode]=\"'item'\"\n [valueField]=\"valueField\"\n [itemHeight]=\"itemHeight()\"\n [itemTemplate]=\"itemTemplate\"\n [textTemplate]=\"textTemplate\"\n [dataSource]=\"_listDataSource\"\n [style.height]=\"_dropdownHeight()\"\n [loadingTemplate]=\"loadingTemplate\"\n [isItemTruncated]=\"isItemTruncated()\"\n [showItemTooltip]=\"showItemTooltip()\"\n (onItemClick)=\"_handleItemClick($event)\"\n [emptyTemplate]=\"emptyTemplate ?? empty\"\n (onValueChanged)=\"_handleValueChanged($event)\"\n (onItemSelected)=\"_handleItemSelected($event)\"\n >\n </ax-list>\n <ng-template #empty>\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </ng-template>\n }\n\n @if (isLoading()) {\n @if (loadingTemplate) {\n <ng-template [ngTemplateOutlet]=\"loadingTemplate\"></ng-template>\n }\n }\n\n <ng-content select=\"ax-footer\"> </ng-content>\n </div>\n </ng-container>\n</ax-dropdown-box>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: [".ax-editor-container.ax-fill .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surfaceest);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-flat .ax-chips,.ax-editor-container.ax-outline .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-solid .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-light-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-light-surface)}ax-select-box .ax-chips-container{outline:0px solid transparent}.ax-select-box-panel{--ax-comp-select-box-panel-min-height: calc(var(--ax-sys-size-base) * 5)}.ax-xs ax-select-box,ax-select-box.ax-xs{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .625rem;--ax-comp-editor-placeholder-space-x: .375rem}.ax-sm ax-select-box,ax-select-box.ax-sm{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .75rem;--ax-comp-editor-placeholder-space-x: .5rem}ax-select-box,ax-select-box.ax-md{--ax-comp-select-box-chips-padding-x: .5rem;--ax-comp-select-box-chips-padding-y: .25rem;--ax-comp-select-box-chips-font-size: .875rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-lg ax-select-box,ax-select-box.ax-lg{--ax-comp-select-box-chips-padding-x: .75rem;--ax-comp-select-box-chips-padding-y: .5rem;--ax-comp-select-box-chips-font-size: 1rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-xl ax-select-box,ax-select-box.ax-xl{--ax-comp-select-box-chips-padding-x: .875rem;--ax-comp-select-box-chips-padding-y: .75rem;--ax-comp-select-box-chips-font-size: 1.125rem;--ax-comp-editor-placeholder-space-x: .75rem}ax-select-box{display:block;width:100%;border-radius:var(--ax-sys-border-radius)}ax-select-box.ax-float-label .ax-editor{padding-top:1.75rem!important}ax-select-box .ax-state-disabled{opacity:.5;cursor:not-allowed}ax-select-box .ax-state-disabled .ax-content,ax-select-box .ax-state-disabled .ax-editor-button{cursor:not-allowed}ax-select-box .ax-state-disabled .ax-chips-container{cursor:not-allowed!important}ax-select-box ax-dropdown-box{border-radius:inherit!important}ax-select-box ax-dropdown-box.ax-state-multiple{height:auto;min-height:var(--ax-comp-editor-height);--ax-comp-editor-space-start-size: 0}ax-select-box ax-dropdown-box.ax-state-multiple .ax-placeholder{padding:0 var(--ax-comp-editor-placeholder-space-x)}ax-select-box .ax-chips-container{display:flex;flex:1 1 0%;min-width:0;cursor:pointer!important;-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--ax-comp-select-box-chips-gap, .25rem);min-height:var(--ax-sys-size-base)}ax-select-box .ax-chips-container .ax-chips{display:block;overflow:hidden;text-wrap:nowrap;line-height:normal;text-overflow:ellipsis;padding:0 var(--ax-comp-editor-padding-x, .25rem);color:rgb(var(--ax-comp-select-box-chips-text-color));font-size:var(--ax-comp-select-box-chips-font-size)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips{background-color:rgb(var(--ax-comp-select-box-chips-bg-color));border-radius:var(--ax-comp-select-box-chips-border-radius, 999rem);border-width:var(--ax-comp-select-box-chips-border-width, 0px);padding:var(--ax-comp-select-box-chips-padding-y, .25rem) var(--ax-comp-select-box-chips-padding-x, .5rem)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips .ax-icon-close{cursor:pointer;margin-inline-start:var(--ax-comp-select-box-chips-padding-x)}ax-select-box .ax-chips-container .ax-selectbox-input{width:0px;opacity:0}ax-select-box .ax-chips-container.ax-state-multiple:has(.ax-chips){padding:var(--ax-comp-select-box-chips-container-padding, .25rem)}.ax-select-box-panel{display:flex;flex-direction:column;height:fit-content;min-height:var(--ax-comp-select-box-panel-min-height);max-height:100%;overflow:hidden}.ax-select-box-panel.ax-no-truncate .ax-label-container span:not(.ax-truncated){white-space:nowrap}.ax-select-box-panel .ax-select-box-loading-container{display:flex;align-items:center;justify-content:center;padding:1rem}.ax-select-box-panel ax-list{flex:1 1 auto;min-height:var(--ax-comp-select-box-panel-min-height)}.ax-select-box-panel ax-list .empty-container{min-height:var(--ax-comp-select-box-panel-min-height)}.ax-select-box-panel>ax-header .ax-icon-check{color:rgba(var(--ax-sys-color-primary-500))}.ax-select-box-panel>ax-header.ax-solid{border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}.ax-select-box-panel>ax-header.ax-solid ax-title{font-size:1rem;line-height:1.5rem;font-weight:500}@media(max-width:40rem){.ax-select-box-panel .list-item{padding-inline:1rem}}\n"], dependencies: [{ kind: "component", type: AXDropdownBoxComponent, selector: "ax-dropdown-box", inputs: ["disabled", "look", "hasInput", "popoverWidth"], outputs: ["disabledChange", "onBlur", "onFocus", "onClick", "onOpened", "onClosed"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "component", type: AXListComponent, selector: "ax-list", inputs: ["id", "name", "disabled", "readonly", "valueField", "textField", "textTemplate", "disabledField", "multiple", "selectionMode", "isItemTruncated", "showItemTooltip", "dataSource", "itemHeight", "itemTemplate", "emptyTemplate", "loadingTemplate", "checkbox"], outputs: ["onValueChanged", "disabledChange", "readonlyChange", "onBlur", "onFocus", "onItemClick", "onItemSelected", "onScrolledIndexChanged"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
486
509
|
}
|
|
487
510
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXSelectBoxComponent, decorators: [{
|
|
488
511
|
type: Component,
|
|
@@ -545,7 +568,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
545
568
|
AXLoadingComponent,
|
|
546
569
|
AsyncPipe,
|
|
547
570
|
AXTranslatorPipe,
|
|
548
|
-
], template: "<ax-dropdown-box\n [class.ax-state-multiple]=\"multiple\"\n (onOpened)=\"_handleOnOpenedEvent($event)\"\n (onClosed)=\"_handleOnClosedEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n [disabled]=\"disabled\"\n [look]=\"look\"\n [popoverWidth]=\"dropdownWidth()\"\n>\n <ng-container input>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <div\n class=\"ax-editor ax-chips-container ax-content ax-input\"\n [class.ax-state-multiple]=\"multiple\"\n [tabindex]=\"tabIndex\"\n >\n @if (selectedItems.length === 0) {\n <div class=\"ax-placeholder\" role=\"textbox\" area-readonly=\"true\">\n {{ placeholder | translate | async }}\n </div>\n }\n @for (item of selectedItems; track $index) {\n @if (selectedTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"selectedTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { data: item } }\"\n ></ng-template>\n } @else {\n <div class=\"ax-chips\">\n {{ getDisplayText(item) | translate | async }}\n @if (!disabled && !readonly && multiple) {\n <span class=\"ax-icon ax-icon-close\" (click)=\"_handleBadgeRemove($event, item)\"> </span>\n }\n </div>\n }\n }\n </div>\n @if (selectedItems?.length && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <button type=\"button\" [disabled]=\"disabled\" [tabIndex]=\"-1\" class=\"ax-editor-button\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <span\n class=\"ax-icon\"\n [ngClass]=\"{\n 'ax-icon-chevron-down': !isOpen,\n 'ax-icon-chevron-up': isOpen,\n }\"\n ></span>\n }\n </button>\n <ng-content select=\"ax-suffix\"> </ng-content>\n <ng-template #search>\n <ng-content select=\"ax-search-box\"> </ng-content>\n </ng-template>\n </ng-container>\n <ng-container panel>\n <div\n #panel\n class=\"ax-select-box-panel\"\n [class.ax-no-truncate]=\"!isItemTruncated()\"\n [style.min-width]=\"_dropdownWidth()\"\n >\n @if (dropdown.isActionsheetStyle) {\n <ax-header class=\"ax-solid\">\n <ax-title>{{ caption || placeholder || '@acorex:selectbox.popover.title' | translate | async }}</ax-title>\n <ax-close-button [icon]=\"multiple ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\"></ax-close-button>\n </ax-header>\n }\n @if (searchBox && (!minRecordsForSearch || _listDataSource.totalCount >= minRecordsForSearch || searchValue())) {\n <div class=\"ax-search-container\">\n <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n </div>\n }\n @if (renderList()) {\n <ax-list\n [name]=\"name\"\n [ngModel]=\"value\"\n [readonly]=\"readonly\"\n [multiple]=\"multiple\"\n [textField]=\"textField\"\n [selectionMode]=\"'item'\"\n [valueField]=\"valueField\"\n [itemHeight]=\"itemHeight()\"\n [itemTemplate]=\"itemTemplate\"\n [textTemplate]=\"textTemplate\"\n [dataSource]=\"_listDataSource\"\n [style.height]=\"_dropdownHeight()\"\n [loadingTemplate]=\"loadingTemplate\"\n [isItemTruncated]=\"isItemTruncated()\"\n [showItemTooltip]=\"showItemTooltip()\"\n (onItemClick)=\"_handleItemClick($event)\"\n [emptyTemplate]=\"emptyTemplate ?? empty\"\n (onValueChanged)=\"_handleValueChanged($event)\"\n (onItemSelected)=\"_handleItemSelected($event)\"\n >\n </ax-list>\n <ng-template #empty>\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </ng-template>\n }\n\n @if (isLoading()) {\n @if (loadingTemplate) {\n <ng-template [ngTemplateOutlet]=\"loadingTemplate\"></ng-template>\n }\n }\n\n <ng-content select=\"ax-footer\"> </ng-content>\n </div>\n </ng-container>\n</ax-dropdown-box>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: [".ax-editor-container.ax-fill .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surfaceest);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-flat .ax-chips,.ax-editor-container.ax-outline .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-solid .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-light-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-light-surface)}ax-select-box .ax-chips-container{outline:0px solid transparent}.ax-xs ax-select-box,ax-select-box.ax-xs{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .625rem;--ax-comp-editor-placeholder-space-x: .375rem}.ax-sm ax-select-box,ax-select-box.ax-sm{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .75rem;--ax-comp-editor-placeholder-space-x: .5rem}ax-select-box,ax-select-box.ax-md{--ax-comp-select-box-chips-padding-x: .5rem;--ax-comp-select-box-chips-padding-y: .25rem;--ax-comp-select-box-chips-font-size: .875rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-lg ax-select-box,ax-select-box.ax-lg{--ax-comp-select-box-chips-padding-x: .75rem;--ax-comp-select-box-chips-padding-y: .5rem;--ax-comp-select-box-chips-font-size: 1rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-xl ax-select-box,ax-select-box.ax-xl{--ax-comp-select-box-chips-padding-x: .875rem;--ax-comp-select-box-chips-padding-y: .75rem;--ax-comp-select-box-chips-font-size: 1.125rem;--ax-comp-editor-placeholder-space-x: .75rem}ax-select-box{display:block;width:100%;border-radius:var(--ax-sys-border-radius)}ax-select-box.ax-float-label .ax-editor{padding-top:1.75rem!important}ax-select-box .ax-state-disabled{opacity:.5;cursor:not-allowed}ax-select-box .ax-state-disabled .ax-content,ax-select-box .ax-state-disabled .ax-editor-button{cursor:not-allowed}ax-select-box .ax-state-disabled .ax-chips-container{cursor:not-allowed!important}ax-select-box ax-dropdown-box{border-radius:inherit!important}ax-select-box ax-dropdown-box.ax-state-multiple{height:auto;min-height:var(--ax-comp-editor-height);--ax-comp-editor-space-start-size: 0}ax-select-box ax-dropdown-box.ax-state-multiple .ax-placeholder{padding:0 var(--ax-comp-editor-placeholder-space-x)}ax-select-box .ax-chips-container{display:flex;flex:1 1 0%;min-width:0;cursor:pointer!important;-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--ax-comp-select-box-chips-gap, .25rem);min-height:var(--ax-sys-size-base)}ax-select-box .ax-chips-container .ax-chips{display:block;overflow:hidden;text-wrap:nowrap;line-height:normal;text-overflow:ellipsis;padding:0 var(--ax-comp-editor-padding-x, .25rem);color:rgb(var(--ax-comp-select-box-chips-text-color));font-size:var(--ax-comp-select-box-chips-font-size)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips{background-color:rgb(var(--ax-comp-select-box-chips-bg-color));border-radius:var(--ax-comp-select-box-chips-border-radius, 999rem);border-width:var(--ax-comp-select-box-chips-border-width, 0px);padding:var(--ax-comp-select-box-chips-padding-y, .25rem) var(--ax-comp-select-box-chips-padding-x, .5rem)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips .ax-icon-close{cursor:pointer;margin-inline-start:var(--ax-comp-select-box-chips-padding-x)}ax-select-box .ax-chips-container .ax-selectbox-input{width:0px;opacity:0}ax-select-box .ax-chips-container.ax-state-multiple:has(.ax-chips){padding:var(--ax-comp-select-box-chips-container-padding, .25rem)}.ax-select-box-panel{display:flex;flex-direction:column;height:fit-content;max-height:100%;overflow:hidden}.ax-select-box-panel.ax-no-truncate .ax-label-container span:not(.ax-truncated){white-space:nowrap}.ax-select-box-panel .ax-select-box-loading-container{display:flex;align-items:center;justify-content:center;padding:1rem}.ax-select-box-panel ax-list{flex:1 1 auto;min-height:
|
|
571
|
+
], template: "<ax-dropdown-box\n [class.ax-state-multiple]=\"multiple\"\n (onOpened)=\"_handleOnOpenedEvent($event)\"\n (onClosed)=\"_handleOnClosedEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n [disabled]=\"disabled\"\n [look]=\"look\"\n [popoverWidth]=\"dropdownWidth()\"\n>\n <ng-container input>\n <ng-content select=\"ax-prefix\"> </ng-content>\n <div\n class=\"ax-editor ax-chips-container ax-content ax-input\"\n [class.ax-state-multiple]=\"multiple\"\n [tabindex]=\"tabIndex\"\n >\n @if (selectedItems.length === 0) {\n <div class=\"ax-placeholder\" role=\"textbox\" area-readonly=\"true\">\n {{ placeholder | translate | async }}\n </div>\n }\n @for (item of selectedItems; track $index) {\n @if (selectedTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"selectedTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { data: item } }\"\n ></ng-template>\n } @else {\n <div class=\"ax-chips\">\n {{ getDisplayText(item) | translate | async }}\n @if (!disabled && !readonly && multiple) {\n <span class=\"ax-icon ax-icon-close\" (click)=\"_handleBadgeRemove($event, item)\"> </span>\n }\n </div>\n }\n }\n </div>\n @if (selectedItems?.length && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n <button type=\"button\" [disabled]=\"disabled\" [tabIndex]=\"-1\" class=\"ax-editor-button\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <span\n class=\"ax-icon\"\n [ngClass]=\"{\n 'ax-icon-chevron-down': !isOpen,\n 'ax-icon-chevron-up': isOpen,\n }\"\n ></span>\n }\n </button>\n <ng-content select=\"ax-suffix\"> </ng-content>\n <ng-template #search>\n <ng-content select=\"ax-search-box\"> </ng-content>\n </ng-template>\n </ng-container>\n <ng-container panel>\n <div\n #panel\n class=\"ax-select-box-panel\"\n [class.ax-no-truncate]=\"!isItemTruncated()\"\n [style.min-width]=\"_dropdownWidth()\"\n [style.--ax-comp-select-box-panel-min-height]=\"_panelMinHeight()\"\n >\n @if (dropdown.isActionsheetStyle) {\n <ax-header class=\"ax-solid\">\n <ax-title>{{ caption || placeholder || '@acorex:selectbox.popover.title' | translate | async }}</ax-title>\n <ax-close-button [icon]=\"multiple ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\"></ax-close-button>\n </ax-header>\n }\n @if (searchBox && (!minRecordsForSearch || _listDataSource.totalCount >= minRecordsForSearch || searchValue())) {\n <div class=\"ax-search-container\">\n <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n </div>\n }\n @if (renderList()) {\n <ax-list\n [name]=\"name\"\n [ngModel]=\"value\"\n [readonly]=\"readonly\"\n [multiple]=\"multiple\"\n [textField]=\"textField\"\n [selectionMode]=\"'item'\"\n [valueField]=\"valueField\"\n [itemHeight]=\"itemHeight()\"\n [itemTemplate]=\"itemTemplate\"\n [textTemplate]=\"textTemplate\"\n [dataSource]=\"_listDataSource\"\n [style.height]=\"_dropdownHeight()\"\n [loadingTemplate]=\"loadingTemplate\"\n [isItemTruncated]=\"isItemTruncated()\"\n [showItemTooltip]=\"showItemTooltip()\"\n (onItemClick)=\"_handleItemClick($event)\"\n [emptyTemplate]=\"emptyTemplate ?? empty\"\n (onValueChanged)=\"_handleValueChanged($event)\"\n (onItemSelected)=\"_handleItemSelected($event)\"\n >\n </ax-list>\n <ng-template #empty>\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </ng-template>\n }\n\n @if (isLoading()) {\n @if (loadingTemplate) {\n <ng-template [ngTemplateOutlet]=\"loadingTemplate\"></ng-template>\n }\n }\n\n <ng-content select=\"ax-footer\"> </ng-content>\n </div>\n </ng-container>\n</ax-dropdown-box>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", styles: [".ax-editor-container.ax-fill .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surfaceest);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-flat .ax-chips,.ax-editor-container.ax-outline .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-solid .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-light-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-light-surface)}ax-select-box .ax-chips-container{outline:0px solid transparent}.ax-select-box-panel{--ax-comp-select-box-panel-min-height: calc(var(--ax-sys-size-base) * 5)}.ax-xs ax-select-box,ax-select-box.ax-xs{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .625rem;--ax-comp-editor-placeholder-space-x: .375rem}.ax-sm ax-select-box,ax-select-box.ax-sm{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .75rem;--ax-comp-editor-placeholder-space-x: .5rem}ax-select-box,ax-select-box.ax-md{--ax-comp-select-box-chips-padding-x: .5rem;--ax-comp-select-box-chips-padding-y: .25rem;--ax-comp-select-box-chips-font-size: .875rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-lg ax-select-box,ax-select-box.ax-lg{--ax-comp-select-box-chips-padding-x: .75rem;--ax-comp-select-box-chips-padding-y: .5rem;--ax-comp-select-box-chips-font-size: 1rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-xl ax-select-box,ax-select-box.ax-xl{--ax-comp-select-box-chips-padding-x: .875rem;--ax-comp-select-box-chips-padding-y: .75rem;--ax-comp-select-box-chips-font-size: 1.125rem;--ax-comp-editor-placeholder-space-x: .75rem}ax-select-box{display:block;width:100%;border-radius:var(--ax-sys-border-radius)}ax-select-box.ax-float-label .ax-editor{padding-top:1.75rem!important}ax-select-box .ax-state-disabled{opacity:.5;cursor:not-allowed}ax-select-box .ax-state-disabled .ax-content,ax-select-box .ax-state-disabled .ax-editor-button{cursor:not-allowed}ax-select-box .ax-state-disabled .ax-chips-container{cursor:not-allowed!important}ax-select-box ax-dropdown-box{border-radius:inherit!important}ax-select-box ax-dropdown-box.ax-state-multiple{height:auto;min-height:var(--ax-comp-editor-height);--ax-comp-editor-space-start-size: 0}ax-select-box ax-dropdown-box.ax-state-multiple .ax-placeholder{padding:0 var(--ax-comp-editor-placeholder-space-x)}ax-select-box .ax-chips-container{display:flex;flex:1 1 0%;min-width:0;cursor:pointer!important;-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--ax-comp-select-box-chips-gap, .25rem);min-height:var(--ax-sys-size-base)}ax-select-box .ax-chips-container .ax-chips{display:block;overflow:hidden;text-wrap:nowrap;line-height:normal;text-overflow:ellipsis;padding:0 var(--ax-comp-editor-padding-x, .25rem);color:rgb(var(--ax-comp-select-box-chips-text-color));font-size:var(--ax-comp-select-box-chips-font-size)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips{background-color:rgb(var(--ax-comp-select-box-chips-bg-color));border-radius:var(--ax-comp-select-box-chips-border-radius, 999rem);border-width:var(--ax-comp-select-box-chips-border-width, 0px);padding:var(--ax-comp-select-box-chips-padding-y, .25rem) var(--ax-comp-select-box-chips-padding-x, .5rem)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips .ax-icon-close{cursor:pointer;margin-inline-start:var(--ax-comp-select-box-chips-padding-x)}ax-select-box .ax-chips-container .ax-selectbox-input{width:0px;opacity:0}ax-select-box .ax-chips-container.ax-state-multiple:has(.ax-chips){padding:var(--ax-comp-select-box-chips-container-padding, .25rem)}.ax-select-box-panel{display:flex;flex-direction:column;height:fit-content;min-height:var(--ax-comp-select-box-panel-min-height);max-height:100%;overflow:hidden}.ax-select-box-panel.ax-no-truncate .ax-label-container span:not(.ax-truncated){white-space:nowrap}.ax-select-box-panel .ax-select-box-loading-container{display:flex;align-items:center;justify-content:center;padding:1rem}.ax-select-box-panel ax-list{flex:1 1 auto;min-height:var(--ax-comp-select-box-panel-min-height)}.ax-select-box-panel ax-list .empty-container{min-height:var(--ax-comp-select-box-panel-min-height)}.ax-select-box-panel>ax-header .ax-icon-check{color:rgba(var(--ax-sys-color-primary-500))}.ax-select-box-panel>ax-header.ax-solid{border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}.ax-select-box-panel>ax-header.ax-solid ax-title{font-size:1rem;line-height:1.5rem;font-weight:500}@media(max-width:40rem){.ax-select-box-panel .list-item{padding-inline:1rem}}\n"] }]
|
|
549
572
|
}], propDecorators: { dataSource: [{
|
|
550
573
|
type: Input
|
|
551
574
|
}], placeholder: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-select-box.mjs","sources":["../tmp-esm2022/select-box/lib/select-box.component.js","../tmp-esm2022/select-box/lib/select-box.module.js","../tmp-esm2022/select-box/acorex-components-select-box.js"],"sourcesContent":["import { AXClearableComponent, AXClosableComponent, AXComponent, AXDataSource, AXFocusableComponent, AXHotkeysService, AXSearchableComponent, AXValuableComponent, AX_SELECTION_DATA_TOKEN, MXLookComponent, MXSelectionBridgeService, MXSelectionValueComponent, convertArrayToDataSource, } from '@acorex/cdk/common';\nimport { AXDecoratorCloseButtonComponent, AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXDropdownBoxComponent, MXDropdownBoxBaseComponent } from '@acorex/components/dropdown';\nimport { AXListComponent } from '@acorex/components/list';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXSearchBoxComponent } from '@acorex/components/search-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, ElementRef, HostListener, Input, TemplateRef, ViewChild, ViewEncapsulation, afterNextRender, forwardRef, inject, input, linkedSignal, signal, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { findLastIndex, get, isEqual, last, nth } from 'lodash-es';\nimport { classes } from 'polytype';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * The Button is a component which detects user interaction and triggers a corresponding event\n * @category\n */\nexport class AXSelectBoxComponent extends classes(MXDropdownBoxBaseComponent, MXSelectionValueComponent, MXLookComponent) {\n constructor() {\n super(...arguments);\n /**\n * Determines if an item is truncated.\n *\n * @defaultValue true\n */\n this.isItemTruncated = input(true, ...(ngDevMode ? [{ debugName: \"isItemTruncated\" }] : []));\n /**\n * Determines if a tooltip is shown for an item.\n *\n * @defaultValue false\n */\n this.showItemTooltip = input(false, ...(ngDevMode ? [{ debugName: \"showItemTooltip\" }] : []));\n /** Height of each list item in pixels, or 'auto' to let list measure. */\n this.itemHeight = input(40, ...(ngDevMode ? [{ debugName: \"itemHeight\" }] : []));\n /** Maximum number of visible items before scrolling. */\n this.maxVisibleItems = input(5, ...(ngDevMode ? [{ debugName: \"maxVisibleItems\" }] : []));\n /** @ignore */\n this.hotKeyService = inject(AXHotkeysService);\n /** @ignore */\n this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /** @ignore */\n this.searchValue = signal('', ...(ngDevMode ? [{ debugName: \"searchValue\" }] : []));\n /** @ignore */\n this.renderList = signal(false, ...(ngDevMode ? [{ debugName: \"renderList\" }] : []));\n /** @ignore */\n this._dropdownWidth = linkedSignal(() => this.dropdownWidth(), ...(ngDevMode ? [{ debugName: \"_dropdownWidth\" }] : []));\n /** @ignore */\n this._dropdownHeight = signal('auto', ...(ngDevMode ? [{ debugName: \"_dropdownHeight\" }] : []));\n /** @ignore */\n this._listDataSource = convertArrayToDataSource([], {\n key: this.valueField,\n pageSize: 10,\n });\n this.#init = afterNextRender(() => {\n const formField = this.getHostElement().closest('ax-form-field');\n if (formField?.classList.contains('ax-state-floating-label')) {\n this.getHostElement().classList.add('ax-float-label');\n }\n });\n /**\n * The width of the dropdown in pixels.\n * @defaultValue null\n */\n this.dropdownWidth = input(null, ...(ngDevMode ? [{ debugName: \"dropdownWidth\" }] : []));\n this.searchBoxAutoFocus = input(true, ...(ngDevMode ? [{ debugName: \"searchBoxAutoFocus\" }] : []));\n /**\n * Service for managing selection data, injected via `AX_SELECTION_DATA_TOKEN`.\n */\n this.selectionService = inject(AX_SELECTION_DATA_TOKEN);\n /** @ignore */\n this._unsubscriber = inject(AXUnsubscriber);\n }\n #init;\n /**\n * Gets the data source for the component, which can be either an `AXDataSource` or an array of items.\n * @returns {AXDataSource<any> | any[]}\n */\n get dataSource() {\n return this._originalDataSource;\n }\n /**\n * Sets the data source, either as an `AXDataSource` or an array.\n * @param {AXDataSource<any> | any[]} v\n */\n set dataSource(v) {\n // check if the data source is the same\n if (Array.isArray(v) && Array.isArray(this._originalDataSource) && isEqual(v, this._originalDataSource)) {\n return;\n }\n if (v instanceof AXDataSource && v == this._originalDataSource) {\n return;\n }\n //\n this._originalDataSource = v;\n if (Array.isArray(v)) {\n this._listDataSource = convertArrayToDataSource(v, {\n key: this.valueField,\n pageSize: v.length || 10,\n });\n }\n else {\n this._listDataSource = this.dataSource;\n }\n //\n this.onChangedSubscription?.unsubscribe();\n this.onChangedSubscription = this._listDataSource.onChanged\n .pipe(this._unsubscriber.takeUntilDestroy)\n .subscribe(() => {\n this.updateDropdownSize();\n // Force refresh of selected items when data source changes\n this.forceRefreshSelectedItems();\n });\n //\n this.onLoadingChangedSubscription?.unsubscribe();\n this.onLoadingChangedSubscription = this._listDataSource.onLoadingChanged\n .pipe(this._unsubscriber.takeUntilDestroy)\n .subscribe((loading) => {\n this.isLoading.set(loading);\n });\n // After setting data source, try to fetch item data if needed\n setTimeout(() => this.fetchItemDataIfNeeded(), 0);\n }\n /** @ignore */\n ngOnInit() {\n super.ngOnInit();\n //\n this.registerValidation();\n // Proactively fetch item data if we have a value but no corresponding item\n this.fetchItemDataIfNeeded();\n }\n /**\n * Proactively fetches item data if the component has a value but no corresponding item data.\n * This prevents showing \"loading...\" when the component has a value.\n */\n async fetchItemDataIfNeeded() {\n const isEmptyValue = this.value == null || (Array.isArray(this.value) && this.value.length === 0);\n if (!isEmptyValue && this._listDataSource && !this.selectedItems?.length) {\n try {\n const item = await this.getItemByKey(this.value);\n if (item) {\n // Force refresh to update the display\n this.forceRefreshSelectedItems();\n }\n }\n catch (error) {\n console.warn('Failed to fetch item data:', error);\n }\n }\n }\n /** @ignore */\n ngOnDestroy() {\n this.searchBox?.onKeyDown.unsubscribe();\n this.onChangedSubscription?.unsubscribe();\n this.onLoadingChangedSubscription?.unsubscribe();\n }\n /**\n * Retrieves an item by its key.\n * @param {any} key\n */\n getItemByKey(key) {\n // Static array data sources resolve synchronously to avoid a false loading state\n // for primitive values (e.g. color format \"hex\" / \"rgba\").\n if (Array.isArray(this._originalDataSource)) {\n for (const candidate of this._originalDataSource) {\n if (candidate != null && typeof candidate === 'object') {\n if (get(candidate, this.valueField) == key || get(candidate, this.textField) == key) {\n return candidate;\n }\n }\n else if (candidate == key) {\n return { [this.valueField]: candidate, [this.textField]: String(candidate ?? '') };\n }\n }\n return null;\n }\n if (this._listDataSource && typeof this._listDataSource.find === 'function') {\n return this._listDataSource.find(key);\n }\n // If neither method is available, return null\n console.warn('No find method available on data source');\n return null;\n }\n /** @ignore */\n _handleOnOpenedEvent(e) {\n if (!this.renderList()) {\n this.renderList.set(true);\n }\n else if (!this._listDataSource.totalCount || this._listDataSource.totalCount == 0) {\n this.list?.refresh(false);\n }\n this._handleFocus();\n //\n this.onOpened.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n this.updateDropdownSize();\n // Force refresh of selected items when opening to show updated text\n this.forceRefreshSelectedItems();\n }\n /** @ignore */\n _handleOnClosedEvent(e) {\n //this.input.focus();\n this.onClosed.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n this._unsubscriber.unsubscribe();\n }\n /** @ignore */\n _handleFocus() {\n setTimeout(() => {\n if (this.searchBox) {\n this.searchBox.look = 'flat';\n if (this.searchBoxAutoFocus()) {\n this.searchBox.focus();\n }\n //TODO: unsubscribe\n this.hotKeyService\n .addShortcut({ keys: 'Control.f', element: this.panel.nativeElement })\n .pipe(this._unsubscriber.takeUntilDestroy)\n .subscribe(() => {\n this.searchBox.focus();\n });\n this.searchBox.onKeyDown.pipe(this._unsubscriber.takeUntilDestroy).subscribe((e) => {\n if (e.nativeEvent.code === 'ArrowDown' || e.nativeEvent.key === 'ArrowDown') {\n this.list?.focus();\n e.nativeEvent.preventDefault();\n }\n });\n }\n else {\n this.list?.focus();\n }\n });\n }\n /** @ignore */\n _handleBadgeRemove(e, item) {\n this.unselectItems(item);\n e.stopPropagation();\n }\n /** @ignore */\n _handleValueChanged(e) {\n if (e.isUserInteraction) {\n if (!this.multiple) {\n this.close();\n }\n this.commitValue(e.component.selectedItems, true);\n }\n }\n /** @ignore */\n _handleItemClick(e) {\n this.onItemClick.emit(e);\n if (!this.multiple) {\n this.close();\n }\n }\n /** @ignore */\n _handleItemSelected(e) {\n this.onItemSelected.emit(e);\n this.resetSearchAfterSelection();\n if (!this.multiple) {\n this.close();\n }\n }\n resetSearchAfterSelection() {\n if (!this.searchBox && !this.searchBox?.value)\n return;\n if (this.searchBox && this.searchBox?.value)\n this.searchBox.commitValue('', false);\n }\n /** @ignore */\n setDropdownSize(count = 0) {\n const itemPx = typeof this.itemHeight() === 'number' ? this.itemHeight() : 40;\n const isActionsheet = this.dropdown.isActionsheetStyle;\n if (isActionsheet) {\n this._dropdownWidth.set('100%');\n // Prefer maxVisibleItems on actionsheet too; still clamp to the pane afterwards.\n const maxItems = Math.max(Number(this.maxVisibleItems()) || 5, 1);\n this._dropdownHeight.set(`${Math.min(maxItems, Math.max(count, 1)) * itemPx}px`);\n }\n else {\n const hostWidth = Math.max(this.getHostElement().offsetWidth, Number(this.dropdownWidth()) || 0);\n const maxItems = Number(this.maxVisibleItems());\n this._dropdownWidth.set(`${hostWidth}px`);\n this._dropdownHeight.set(count == 0 ? 'auto' : `${Math.min(maxItems, count) * itemPx}px`);\n }\n setTimeout(() => {\n this._fitListHeightToAvailableSpace(itemPx);\n this.dropdown.updatePosition();\n this.list?.render();\n // Second pass after the overlay pane applies max-height / overflow constraints.\n requestAnimationFrame(() => {\n setTimeout(() => {\n this._fitListHeightToAvailableSpace(itemPx);\n this.list?.render();\n }, 0);\n });\n });\n }\n /**\n * Shrinks list height to the visible overlay area so virtual scroll ends on fully\n * visible rows instead of inside an overflow:hidden clipped region.\n * @ignore\n */\n _fitListHeightToAvailableSpace(itemPx) {\n if (itemPx <= 0 || this._dropdownHeight() === 'auto') {\n return;\n }\n const panel = this.panel?.nativeElement;\n const listEl = this.list?.getHostElement?.();\n if (!panel || !listEl) {\n return;\n }\n const pane = panel.closest('.ax-overlay-pane');\n if (!pane) {\n return;\n }\n const listRect = listEl.getBoundingClientRect();\n const paneRect = pane.getBoundingClientRect();\n const paneOverflow = listRect.bottom - paneRect.bottom;\n const viewportOverflow = listRect.bottom - window.innerHeight;\n const overflow = Math.max(paneOverflow, viewportOverflow);\n let nextHeight = listEl.clientHeight || parseFloat(this._dropdownHeight());\n if (!Number.isFinite(nextHeight) || nextHeight <= 0) {\n return;\n }\n // When the list extends past the overlay pane or screen, shrink it to the visible area.\n if (overflow > 1) {\n nextHeight = Math.max(itemPx, nextHeight - overflow);\n }\n // Keep height as whole rows so the last item is never permanently cropped.\n nextHeight = Math.max(itemPx, Math.floor(nextHeight / itemPx) * itemPx);\n const current = parseFloat(this._dropdownHeight());\n if (!Number.isFinite(current) || nextHeight !== current) {\n this._dropdownHeight.set(`${nextHeight}px`);\n }\n }\n updateDropdownPosition() {\n setTimeout(() => {\n this.dropdown.updatePosition();\n });\n }\n updateDropdownSize() {\n setTimeout(() => {\n this.setDropdownSize(this._listDataSource.totalCount);\n this.updateDropdownPosition();\n this.list?.render();\n if (!this.isItemTruncated()) {\n setTimeout(() => {\n this._fitDropdownToContent();\n setTimeout(() => this._fitDropdownToContent(), 100);\n });\n }\n });\n }\n _fitDropdownToContent() {\n const panel = this.panel?.nativeElement;\n if (!panel)\n return;\n const hostWidth = Math.max(this.getHostElement().offsetWidth, Number(this.dropdownWidth()) || 0);\n let contentWidth = hostWidth;\n panel.querySelectorAll('li.list-item').forEach((item) => {\n const label = item.querySelector('.ax-label-container span');\n if (label) {\n const labelContainer = label.parentElement;\n const horizontalPadding = labelContainer ? item.offsetWidth - labelContainer.clientWidth : 0;\n contentWidth = Math.max(contentWidth, label.scrollWidth + horizontalPadding);\n }\n else {\n contentWidth = Math.max(contentWidth, item.scrollWidth);\n }\n });\n const nextWidth = `${Math.max(hostWidth, contentWidth)}px`;\n if (this._dropdownWidth() !== nextWidth) {\n this._dropdownWidth.set(nextWidth);\n this.dropdown.updatePosition();\n }\n }\n internalValueChanged(value) {\n super.internalValueChanged(value);\n this.updateDropdownPosition();\n // Try to fetch item data when value changes\n setTimeout(() => this.fetchItemDataIfNeeded(), 0);\n }\n /** @ignore */\n _handleKeydown(e) {\n if (e.code === 'ArrowDown' || e.code === 'ArrowUp') {\n this.selectItemByNav(e.code === 'ArrowDown' ? 1 : -1);\n e.preventDefault();\n }\n else if (e.code === 'Backspace') {\n this.unselectItems(this.selectedItems.pop());\n e.preventDefault();\n }\n // if ((e.code === 'Space' || e.code === 'Enter') && this.hasItems) {\n // if (this.readonly || this.disabled) {\n // e.preventDefault();\n // e.stopPropagation();\n // return;\n // }\n // const id = document.activeElement?.closest('li')?.dataset?.id;\n // this.toggleSelect(id);\n // e.preventDefault();\n // e.stopPropagation()\n // }\n }\n /** @ignore */\n selectItemByNav(sign) {\n if (Array.isArray(this.dataSource) && !this.multiple) {\n const items = this.normalizeItemsList(this.dataSource);\n const _last = last(this.selectedItems);\n let i = -1;\n if (_last) {\n i = findLastIndex(items, [this.valueField, get(_last, this.valueField)]);\n }\n i += sign;\n if (i < 0 || i >= items.length)\n return;\n const next = nth(items, i);\n if (next) {\n this.selectItems(next);\n }\n }\n else {\n this.open();\n }\n }\n /**\n * Filters the data source based on the provided search term.\n * @param {string} term\n */\n search(term) {\n this.searchValue.set(term);\n if (term) {\n this._listDataSource.filter({\n field: this.textField,\n value: term,\n operator: { type: 'contains' },\n });\n }\n else {\n this._listDataSource.clearFilter();\n }\n this._listDataSource.refresh();\n }\n /**\n * Refreshes the component by resetting state, clearing selection cache, refreshing the list, and closing the component.\n */\n refresh() {\n this.reset(false);\n this.clearSelectionCache();\n this.list?.refresh();\n this.close();\n }\n hostClickListener() {\n this.toggle();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXSelectBoxComponent, isStandalone: true, selector: \"ax-select-box\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: false, isRequired: false, transformFunction: null }, minValue: { classPropertyName: \"minValue\", publicName: \"minValue\", isSignal: false, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: \"maxValue\", publicName: \"maxValue\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: \"state\", publicName: \"state\", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: false, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: \"multiple\", publicName: \"multiple\", isSignal: false, isRequired: false, transformFunction: null }, valueField: { classPropertyName: \"valueField\", publicName: \"valueField\", isSignal: false, isRequired: false, transformFunction: null }, textField: { classPropertyName: \"textField\", publicName: \"textField\", isSignal: false, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: \"disabledField\", publicName: \"disabledField\", isSignal: false, isRequired: false, transformFunction: null }, textTemplate: { classPropertyName: \"textTemplate\", publicName: \"textTemplate\", isSignal: false, isRequired: false, transformFunction: null }, selectedItems: { classPropertyName: \"selectedItems\", publicName: \"selectedItems\", isSignal: false, isRequired: false, transformFunction: null }, isItemTruncated: { classPropertyName: \"isItemTruncated\", publicName: \"isItemTruncated\", isSignal: true, isRequired: false, transformFunction: null }, showItemTooltip: { classPropertyName: \"showItemTooltip\", publicName: \"showItemTooltip\", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: \"itemHeight\", publicName: \"itemHeight\", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleItems: { classPropertyName: \"maxVisibleItems\", publicName: \"maxVisibleItems\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: false, isRequired: false, transformFunction: null }, minRecordsForSearch: { classPropertyName: \"minRecordsForSearch\", publicName: \"minRecordsForSearch\", isSignal: false, isRequired: false, transformFunction: null }, caption: { classPropertyName: \"caption\", publicName: \"caption\", isSignal: false, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: false, isRequired: false, transformFunction: null }, selectedTemplate: { classPropertyName: \"selectedTemplate\", publicName: \"selectedTemplate\", isSignal: false, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: false, isRequired: false, transformFunction: null }, loadingTemplate: { classPropertyName: \"loadingTemplate\", publicName: \"loadingTemplate\", isSignal: false, isRequired: false, transformFunction: null }, dropdownWidth: { classPropertyName: \"dropdownWidth\", publicName: \"dropdownWidth\", isSignal: true, isRequired: false, transformFunction: null }, searchBoxAutoFocus: { classPropertyName: \"searchBoxAutoFocus\", publicName: \"searchBoxAutoFocus\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", stateChange: \"stateChange\", onValueChanged: \"onValueChanged\", onBlur: \"onBlur\", onFocus: \"onFocus\", readonlyChange: \"readonlyChange\", disabledChange: \"disabledChange\", onOpened: \"onOpened\", onClosed: \"onClosed\", onItemSelected: \"onItemSelected\", onItemClick: \"onItemClick\" }, host: { attributes: { \"ngSkipHydration\": \"true\" }, listeners: { \"keydown\": \"_handleKeydown($event)\", \"click\": \"hostClickListener()\" } }, providers: [\n { provide: AXComponent, useExisting: AXSelectBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXValuableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXClearableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXClosableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXSearchableComponent, useExisting: AXSelectBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXSelectBoxComponent),\n multi: true,\n },\n {\n provide: AX_SELECTION_DATA_TOKEN,\n useClass: MXSelectionBridgeService,\n },\n AXUnsubscriber,\n ], queries: [{ propertyName: \"searchBox\", first: true, predicate: AXSearchBoxComponent, descendants: true }], viewQueries: [{ propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }, { propertyName: \"list\", first: true, predicate: AXListComponent, descendants: true }, { propertyName: \"dropdown\", first: true, predicate: AXDropdownBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<ax-dropdown-box\\n [class.ax-state-multiple]=\\\"multiple\\\"\\n (onOpened)=\\\"_handleOnOpenedEvent($event)\\\"\\n (onClosed)=\\\"_handleOnClosedEvent($event)\\\"\\n (focus)=\\\"emitOnFocusEvent($event)\\\"\\n (blur)=\\\"emitOnBlurEvent($event)\\\"\\n [disabled]=\\\"disabled\\\"\\n [look]=\\\"look\\\"\\n [popoverWidth]=\\\"dropdownWidth()\\\"\\n>\\n <ng-container input>\\n <ng-content select=\\\"ax-prefix\\\"> </ng-content>\\n <div\\n class=\\\"ax-editor ax-chips-container ax-content ax-input\\\"\\n [class.ax-state-multiple]=\\\"multiple\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n >\\n @if (selectedItems.length === 0) {\\n <div class=\\\"ax-placeholder\\\" role=\\\"textbox\\\" area-readonly=\\\"true\\\">\\n {{ placeholder | translate | async }}\\n </div>\\n }\\n @for (item of selectedItems; track $index) {\\n @if (selectedTemplate) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"selectedTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item } }\\\"\\n ></ng-template>\\n } @else {\\n <div class=\\\"ax-chips\\\">\\n {{ getDisplayText(item) | translate | async }}\\n @if (!disabled && !readonly && multiple) {\\n <span class=\\\"ax-icon ax-icon-close\\\" (click)=\\\"_handleBadgeRemove($event, item)\\\"> </span>\\n }\\n </div>\\n }\\n }\\n </div>\\n @if (selectedItems?.length && !disabled && !readonly) {\\n <ng-content select=\\\"ax-clear-button\\\"></ng-content>\\n }\\n <button type=\\\"button\\\" [disabled]=\\\"disabled\\\" [tabIndex]=\\\"-1\\\" class=\\\"ax-editor-button\\\">\\n @if (isLoading()) {\\n <ax-loading></ax-loading>\\n } @else {\\n <span\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-down': !isOpen,\\n 'ax-icon-chevron-up': isOpen,\\n }\\\"\\n ></span>\\n }\\n </button>\\n <ng-content select=\\\"ax-suffix\\\"> </ng-content>\\n <ng-template #search>\\n <ng-content select=\\\"ax-search-box\\\"> </ng-content>\\n </ng-template>\\n </ng-container>\\n <ng-container panel>\\n <div\\n #panel\\n class=\\\"ax-select-box-panel\\\"\\n [class.ax-no-truncate]=\\\"!isItemTruncated()\\\"\\n [style.min-width]=\\\"_dropdownWidth()\\\"\\n >\\n @if (dropdown.isActionsheetStyle) {\\n <ax-header class=\\\"ax-solid\\\">\\n <ax-title>{{ caption || placeholder || '@acorex:selectbox.popover.title' | translate | async }}</ax-title>\\n <ax-close-button [icon]=\\\"multiple ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\\\"></ax-close-button>\\n </ax-header>\\n }\\n @if (searchBox && (!minRecordsForSearch || _listDataSource.totalCount >= minRecordsForSearch || searchValue())) {\\n <div class=\\\"ax-search-container\\\">\\n <ng-template [ngTemplateOutlet]=\\\"search\\\"></ng-template>\\n </div>\\n }\\n @if (renderList()) {\\n <ax-list\\n [name]=\\\"name\\\"\\n [ngModel]=\\\"value\\\"\\n [readonly]=\\\"readonly\\\"\\n [multiple]=\\\"multiple\\\"\\n [textField]=\\\"textField\\\"\\n [selectionMode]=\\\"'item'\\\"\\n [valueField]=\\\"valueField\\\"\\n [itemHeight]=\\\"itemHeight()\\\"\\n [itemTemplate]=\\\"itemTemplate\\\"\\n [textTemplate]=\\\"textTemplate\\\"\\n [dataSource]=\\\"_listDataSource\\\"\\n [style.height]=\\\"_dropdownHeight()\\\"\\n [loadingTemplate]=\\\"loadingTemplate\\\"\\n [isItemTruncated]=\\\"isItemTruncated()\\\"\\n [showItemTooltip]=\\\"showItemTooltip()\\\"\\n (onItemClick)=\\\"_handleItemClick($event)\\\"\\n [emptyTemplate]=\\\"emptyTemplate ?? empty\\\"\\n (onValueChanged)=\\\"_handleValueChanged($event)\\\"\\n (onItemSelected)=\\\"_handleItemSelected($event)\\\"\\n >\\n </ax-list>\\n <ng-template #empty>\\n {{ '@acorex:common.general.no-result-found' | translate | async }}\\n </ng-template>\\n }\\n\\n @if (isLoading()) {\\n @if (loadingTemplate) {\\n <ng-template [ngTemplateOutlet]=\\\"loadingTemplate\\\"></ng-template>\\n }\\n }\\n\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n </div>\\n </ng-container>\\n</ax-dropdown-box>\\n<ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n\", styles: [\".ax-editor-container.ax-fill .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surfaceest);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-flat .ax-chips,.ax-editor-container.ax-outline .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-solid .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-light-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-light-surface)}ax-select-box .ax-chips-container{outline:0px solid transparent}.ax-xs ax-select-box,ax-select-box.ax-xs{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .625rem;--ax-comp-editor-placeholder-space-x: .375rem}.ax-sm ax-select-box,ax-select-box.ax-sm{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .75rem;--ax-comp-editor-placeholder-space-x: .5rem}ax-select-box,ax-select-box.ax-md{--ax-comp-select-box-chips-padding-x: .5rem;--ax-comp-select-box-chips-padding-y: .25rem;--ax-comp-select-box-chips-font-size: .875rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-lg ax-select-box,ax-select-box.ax-lg{--ax-comp-select-box-chips-padding-x: .75rem;--ax-comp-select-box-chips-padding-y: .5rem;--ax-comp-select-box-chips-font-size: 1rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-xl ax-select-box,ax-select-box.ax-xl{--ax-comp-select-box-chips-padding-x: .875rem;--ax-comp-select-box-chips-padding-y: .75rem;--ax-comp-select-box-chips-font-size: 1.125rem;--ax-comp-editor-placeholder-space-x: .75rem}ax-select-box{display:block;width:100%;border-radius:var(--ax-sys-border-radius)}ax-select-box.ax-float-label .ax-editor{padding-top:1.75rem!important}ax-select-box .ax-state-disabled{opacity:.5;cursor:not-allowed}ax-select-box .ax-state-disabled .ax-content,ax-select-box .ax-state-disabled .ax-editor-button{cursor:not-allowed}ax-select-box .ax-state-disabled .ax-chips-container{cursor:not-allowed!important}ax-select-box ax-dropdown-box{border-radius:inherit!important}ax-select-box ax-dropdown-box.ax-state-multiple{height:auto;min-height:var(--ax-comp-editor-height);--ax-comp-editor-space-start-size: 0}ax-select-box ax-dropdown-box.ax-state-multiple .ax-placeholder{padding:0 var(--ax-comp-editor-placeholder-space-x)}ax-select-box .ax-chips-container{display:flex;flex:1 1 0%;min-width:0;cursor:pointer!important;-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--ax-comp-select-box-chips-gap, .25rem);min-height:var(--ax-sys-size-base)}ax-select-box .ax-chips-container .ax-chips{display:block;overflow:hidden;text-wrap:nowrap;line-height:normal;text-overflow:ellipsis;padding:0 var(--ax-comp-editor-padding-x, .25rem);color:rgb(var(--ax-comp-select-box-chips-text-color));font-size:var(--ax-comp-select-box-chips-font-size)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips{background-color:rgb(var(--ax-comp-select-box-chips-bg-color));border-radius:var(--ax-comp-select-box-chips-border-radius, 999rem);border-width:var(--ax-comp-select-box-chips-border-width, 0px);padding:var(--ax-comp-select-box-chips-padding-y, .25rem) var(--ax-comp-select-box-chips-padding-x, .5rem)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips .ax-icon-close{cursor:pointer;margin-inline-start:var(--ax-comp-select-box-chips-padding-x)}ax-select-box .ax-chips-container .ax-selectbox-input{width:0px;opacity:0}ax-select-box .ax-chips-container.ax-state-multiple:has(.ax-chips){padding:var(--ax-comp-select-box-chips-container-padding, .25rem)}.ax-select-box-panel{display:flex;flex-direction:column;height:fit-content;max-height:100%;overflow:hidden}.ax-select-box-panel.ax-no-truncate .ax-label-container span:not(.ax-truncated){white-space:nowrap}.ax-select-box-panel .ax-select-box-loading-container{display:flex;align-items:center;justify-content:center;padding:1rem}.ax-select-box-panel ax-list{flex:1 1 auto;min-height:0}.ax-select-box-panel>ax-header .ax-icon-check{color:rgba(var(--ax-sys-color-primary-500))}.ax-select-box-panel>ax-header.ax-solid{border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}.ax-select-box-panel>ax-header.ax-solid ax-title{font-size:1rem;line-height:1.5rem;font-weight:500}@media(max-width:40rem){.ax-select-box-panel .list-item{padding-inline:1rem}}\\n\"], dependencies: [{ kind: \"component\", type: AXDropdownBoxComponent, selector: \"ax-dropdown-box\", inputs: [\"disabled\", \"look\", \"hasInput\", \"popoverWidth\"], outputs: [\"disabledChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onOpened\", \"onClosed\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXDecoratorCloseButtonComponent, selector: \"ax-close-button\", inputs: [\"closeAll\", \"icon\"] }, { kind: \"component\", type: AXListComponent, selector: \"ax-list\", inputs: [\"id\", \"name\", \"disabled\", \"readonly\", \"valueField\", \"textField\", \"textTemplate\", \"disabledField\", \"multiple\", \"selectionMode\", \"isItemTruncated\", \"showItemTooltip\", \"dataSource\", \"itemHeight\", \"itemTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"checkbox\"], outputs: [\"onValueChanged\", \"disabledChange\", \"readonlyChange\", \"onBlur\", \"onFocus\", \"onItemClick\", \"onItemSelected\", \"onScrolledIndexChanged\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-select-box', inputs: [\n 'disabled',\n 'readonly',\n 'tabIndex',\n 'placeholder',\n 'minValue',\n 'maxValue',\n 'value',\n 'state',\n 'name',\n 'id',\n 'type',\n 'look',\n 'multiple',\n 'valueField',\n 'textField',\n 'disabledField',\n 'textTemplate',\n 'selectedItems',\n ], outputs: [\n 'valueChange',\n 'stateChange',\n 'onValueChanged',\n 'onBlur',\n 'onFocus',\n 'readonlyChange',\n 'disabledChange',\n 'onOpened',\n 'onClosed',\n 'onItemSelected',\n 'onItemClick',\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n { provide: AXComponent, useExisting: AXSelectBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXValuableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXClearableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXClosableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXSearchableComponent, useExisting: AXSelectBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXSelectBoxComponent),\n multi: true,\n },\n {\n provide: AX_SELECTION_DATA_TOKEN,\n useClass: MXSelectionBridgeService,\n },\n AXUnsubscriber,\n ], host: { ngSkipHydration: 'true' }, imports: [\n AXDropdownBoxComponent,\n NgTemplateOutlet,\n NgClass,\n AXDecoratorGenericComponent,\n AXDecoratorCloseButtonComponent,\n AXListComponent,\n FormsModule,\n AXLoadingComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ], template: \"<ax-dropdown-box\\n [class.ax-state-multiple]=\\\"multiple\\\"\\n (onOpened)=\\\"_handleOnOpenedEvent($event)\\\"\\n (onClosed)=\\\"_handleOnClosedEvent($event)\\\"\\n (focus)=\\\"emitOnFocusEvent($event)\\\"\\n (blur)=\\\"emitOnBlurEvent($event)\\\"\\n [disabled]=\\\"disabled\\\"\\n [look]=\\\"look\\\"\\n [popoverWidth]=\\\"dropdownWidth()\\\"\\n>\\n <ng-container input>\\n <ng-content select=\\\"ax-prefix\\\"> </ng-content>\\n <div\\n class=\\\"ax-editor ax-chips-container ax-content ax-input\\\"\\n [class.ax-state-multiple]=\\\"multiple\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n >\\n @if (selectedItems.length === 0) {\\n <div class=\\\"ax-placeholder\\\" role=\\\"textbox\\\" area-readonly=\\\"true\\\">\\n {{ placeholder | translate | async }}\\n </div>\\n }\\n @for (item of selectedItems; track $index) {\\n @if (selectedTemplate) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"selectedTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item } }\\\"\\n ></ng-template>\\n } @else {\\n <div class=\\\"ax-chips\\\">\\n {{ getDisplayText(item) | translate | async }}\\n @if (!disabled && !readonly && multiple) {\\n <span class=\\\"ax-icon ax-icon-close\\\" (click)=\\\"_handleBadgeRemove($event, item)\\\"> </span>\\n }\\n </div>\\n }\\n }\\n </div>\\n @if (selectedItems?.length && !disabled && !readonly) {\\n <ng-content select=\\\"ax-clear-button\\\"></ng-content>\\n }\\n <button type=\\\"button\\\" [disabled]=\\\"disabled\\\" [tabIndex]=\\\"-1\\\" class=\\\"ax-editor-button\\\">\\n @if (isLoading()) {\\n <ax-loading></ax-loading>\\n } @else {\\n <span\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-down': !isOpen,\\n 'ax-icon-chevron-up': isOpen,\\n }\\\"\\n ></span>\\n }\\n </button>\\n <ng-content select=\\\"ax-suffix\\\"> </ng-content>\\n <ng-template #search>\\n <ng-content select=\\\"ax-search-box\\\"> </ng-content>\\n </ng-template>\\n </ng-container>\\n <ng-container panel>\\n <div\\n #panel\\n class=\\\"ax-select-box-panel\\\"\\n [class.ax-no-truncate]=\\\"!isItemTruncated()\\\"\\n [style.min-width]=\\\"_dropdownWidth()\\\"\\n >\\n @if (dropdown.isActionsheetStyle) {\\n <ax-header class=\\\"ax-solid\\\">\\n <ax-title>{{ caption || placeholder || '@acorex:selectbox.popover.title' | translate | async }}</ax-title>\\n <ax-close-button [icon]=\\\"multiple ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\\\"></ax-close-button>\\n </ax-header>\\n }\\n @if (searchBox && (!minRecordsForSearch || _listDataSource.totalCount >= minRecordsForSearch || searchValue())) {\\n <div class=\\\"ax-search-container\\\">\\n <ng-template [ngTemplateOutlet]=\\\"search\\\"></ng-template>\\n </div>\\n }\\n @if (renderList()) {\\n <ax-list\\n [name]=\\\"name\\\"\\n [ngModel]=\\\"value\\\"\\n [readonly]=\\\"readonly\\\"\\n [multiple]=\\\"multiple\\\"\\n [textField]=\\\"textField\\\"\\n [selectionMode]=\\\"'item'\\\"\\n [valueField]=\\\"valueField\\\"\\n [itemHeight]=\\\"itemHeight()\\\"\\n [itemTemplate]=\\\"itemTemplate\\\"\\n [textTemplate]=\\\"textTemplate\\\"\\n [dataSource]=\\\"_listDataSource\\\"\\n [style.height]=\\\"_dropdownHeight()\\\"\\n [loadingTemplate]=\\\"loadingTemplate\\\"\\n [isItemTruncated]=\\\"isItemTruncated()\\\"\\n [showItemTooltip]=\\\"showItemTooltip()\\\"\\n (onItemClick)=\\\"_handleItemClick($event)\\\"\\n [emptyTemplate]=\\\"emptyTemplate ?? empty\\\"\\n (onValueChanged)=\\\"_handleValueChanged($event)\\\"\\n (onItemSelected)=\\\"_handleItemSelected($event)\\\"\\n >\\n </ax-list>\\n <ng-template #empty>\\n {{ '@acorex:common.general.no-result-found' | translate | async }}\\n </ng-template>\\n }\\n\\n @if (isLoading()) {\\n @if (loadingTemplate) {\\n <ng-template [ngTemplateOutlet]=\\\"loadingTemplate\\\"></ng-template>\\n }\\n }\\n\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n </div>\\n </ng-container>\\n</ax-dropdown-box>\\n<ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n\", styles: [\".ax-editor-container.ax-fill .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surfaceest);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-flat .ax-chips,.ax-editor-container.ax-outline .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-solid .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-light-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-light-surface)}ax-select-box .ax-chips-container{outline:0px solid transparent}.ax-xs ax-select-box,ax-select-box.ax-xs{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .625rem;--ax-comp-editor-placeholder-space-x: .375rem}.ax-sm ax-select-box,ax-select-box.ax-sm{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .75rem;--ax-comp-editor-placeholder-space-x: .5rem}ax-select-box,ax-select-box.ax-md{--ax-comp-select-box-chips-padding-x: .5rem;--ax-comp-select-box-chips-padding-y: .25rem;--ax-comp-select-box-chips-font-size: .875rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-lg ax-select-box,ax-select-box.ax-lg{--ax-comp-select-box-chips-padding-x: .75rem;--ax-comp-select-box-chips-padding-y: .5rem;--ax-comp-select-box-chips-font-size: 1rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-xl ax-select-box,ax-select-box.ax-xl{--ax-comp-select-box-chips-padding-x: .875rem;--ax-comp-select-box-chips-padding-y: .75rem;--ax-comp-select-box-chips-font-size: 1.125rem;--ax-comp-editor-placeholder-space-x: .75rem}ax-select-box{display:block;width:100%;border-radius:var(--ax-sys-border-radius)}ax-select-box.ax-float-label .ax-editor{padding-top:1.75rem!important}ax-select-box .ax-state-disabled{opacity:.5;cursor:not-allowed}ax-select-box .ax-state-disabled .ax-content,ax-select-box .ax-state-disabled .ax-editor-button{cursor:not-allowed}ax-select-box .ax-state-disabled .ax-chips-container{cursor:not-allowed!important}ax-select-box ax-dropdown-box{border-radius:inherit!important}ax-select-box ax-dropdown-box.ax-state-multiple{height:auto;min-height:var(--ax-comp-editor-height);--ax-comp-editor-space-start-size: 0}ax-select-box ax-dropdown-box.ax-state-multiple .ax-placeholder{padding:0 var(--ax-comp-editor-placeholder-space-x)}ax-select-box .ax-chips-container{display:flex;flex:1 1 0%;min-width:0;cursor:pointer!important;-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--ax-comp-select-box-chips-gap, .25rem);min-height:var(--ax-sys-size-base)}ax-select-box .ax-chips-container .ax-chips{display:block;overflow:hidden;text-wrap:nowrap;line-height:normal;text-overflow:ellipsis;padding:0 var(--ax-comp-editor-padding-x, .25rem);color:rgb(var(--ax-comp-select-box-chips-text-color));font-size:var(--ax-comp-select-box-chips-font-size)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips{background-color:rgb(var(--ax-comp-select-box-chips-bg-color));border-radius:var(--ax-comp-select-box-chips-border-radius, 999rem);border-width:var(--ax-comp-select-box-chips-border-width, 0px);padding:var(--ax-comp-select-box-chips-padding-y, .25rem) var(--ax-comp-select-box-chips-padding-x, .5rem)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips .ax-icon-close{cursor:pointer;margin-inline-start:var(--ax-comp-select-box-chips-padding-x)}ax-select-box .ax-chips-container .ax-selectbox-input{width:0px;opacity:0}ax-select-box .ax-chips-container.ax-state-multiple:has(.ax-chips){padding:var(--ax-comp-select-box-chips-container-padding, .25rem)}.ax-select-box-panel{display:flex;flex-direction:column;height:fit-content;max-height:100%;overflow:hidden}.ax-select-box-panel.ax-no-truncate .ax-label-container span:not(.ax-truncated){white-space:nowrap}.ax-select-box-panel .ax-select-box-loading-container{display:flex;align-items:center;justify-content:center;padding:1rem}.ax-select-box-panel ax-list{flex:1 1 auto;min-height:0}.ax-select-box-panel>ax-header .ax-icon-check{color:rgba(var(--ax-sys-color-primary-500))}.ax-select-box-panel>ax-header.ax-solid{border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}.ax-select-box-panel>ax-header.ax-solid ax-title{font-size:1rem;line-height:1.5rem;font-weight:500}@media(max-width:40rem){.ax-select-box-panel .list-item{padding-inline:1rem}}\\n\"] }]\n }], propDecorators: { dataSource: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], minRecordsForSearch: [{\n type: Input\n }], caption: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], selectedTemplate: [{\n type: Input\n }], emptyTemplate: [{\n type: Input\n }], loadingTemplate: [{\n type: Input\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], list: [{\n type: ViewChild,\n args: [AXListComponent]\n }], searchBox: [{\n type: ContentChild,\n args: [AXSearchBoxComponent]\n }], dropdown: [{\n type: ViewChild,\n args: [AXDropdownBoxComponent, { static: true }]\n }], _handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], hostClickListener: [{\n type: HostListener,\n args: ['click']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3NlbGVjdC1ib3gvc3JjL2xpYi9zZWxlY3QtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvc2VsZWN0LWJveC9zcmMvbGliL3NlbGVjdC1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLFlBQVksRUFFWixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBR2hCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFFbkIsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHdCQUF3QixHQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZ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RSxXQUN4Qjt3QkFDUCxzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCwyQkFBMkI7d0JBQzNCLCtCQUErQjt3QkFDL0IsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsU0FBUzt3QkFDVCxnQkFBZ0I7cUJBQ2pCOzhCQStFVSxVQUFVO3NCQURwQixLQUFLO2dCQTZDTixXQUFXO3NCQURWLEtBQUs7Z0JBUU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQVFOLE9BQU87c0JBRE4sS0FBSztnQkFRTixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQVFOLGVBQWU7c0JBRGQsS0FBSztnQkFVYyxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBSWxCLElBQUk7c0JBREgsU0FBUzt1QkFBQyxlQUFlO2dCQUsxQixTQUFTO3NCQURSLFlBQVk7dUJBQUMsb0JBQW9CO2dCQU94QixRQUFRO3NCQURqQixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkErU25ELGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBdUUzQixpQkFBaUI7c0JBRHhCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ2xlYXJhYmxlQ29tcG9uZW50LFxuICBBWENsb3NhYmxlQ29tcG9uZW50LFxuICBBWENvbXBvbmVudCxcbiAgQVhEYXRhU291cmNlLFxuICBBWEV2ZW50LFxuICBBWEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgQVhIb3RrZXlzU2VydmljZSxcbiAgQVhJdGVtQ2xpY2tFdmVudCxcbiAgQVhJdGVtU2VsZWN0ZWRFdmVudCxcbiAgQVhTZWFyY2hhYmxlQ29tcG9uZW50LFxuICBBWFZhbHVhYmxlQ29tcG9uZW50LFxuICBBWFZhbHVlQ2hhbmdlZEV2ZW50LFxuICBBWF9TRUxFQ1RJT05fREFUQV9UT0tFTixcbiAgTVhMb29rQ29tcG9uZW50LFxuICBNWFNlbGVjdGlvbkJyaWRnZVNlcnZpY2UsXG4gIE1YU2VsZWN0aW9uVmFsdWVDb21wb25lbnQsXG4gIGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZSxcbn0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yQ2xvc2VCdXR0b25Db21wb25lbnQsIEFYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25Cb3hDb21wb25lbnQsIE1YRHJvcGRvd25Cb3hCYXNlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYTGlzdENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9saXN0JztcbmltcG9ydCB7IEFYTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYU2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIGxpbmtlZFNpZ25hbCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpbmRMYXN0SW5kZXgsIGdldCwgaXNFcXVhbCwgbGFzdCwgbnRoIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBUaGUgQnV0dG9uIGlzIGEgY29tcG9uZW50IHdoaWNoIGRldGVjdHMgdXNlciBpbnRlcmFjdGlvbiBhbmQgdHJpZ2dlcnMgYSBjb3JyZXNwb25kaW5nIGV2ZW50XG4gKiBAY2F0ZWdvcnlcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtc2VsZWN0LWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3N0eWxlcy9pbmRleC5zY3NzJyxcbiAgaW5wdXRzOiBbXG4gICAgJ2Rpc2FibGVkJyxcbiAgICAncmVhZG9ubHknLFxuICAgICd0YWJJbmRleCcsXG4gICAgJ3BsYWNlaG9sZGVyJyxcbiAgICAnbWluVmFsdWUnLFxuICAgICdtYXhWYWx1ZScsXG4gICAgJ3ZhbHVlJyxcbiAgICAnc3RhdGUnLFxuICAgICduYW1lJyxcbiAgICAnaWQnLFxuICAgICd0eXBlJyxcbiAgICAnbG9vaycsXG4gICAgJ211bHRpcGxlJyxcbiAgICAndmFsdWVGaWVsZCcsXG4gICAgJ3RleHRGaWVsZCcsXG4gICAgJ2Rpc2FibGVkRmllbGQnLFxuICAgICd0ZXh0VGVtcGxhdGUnLFxuICAgICdzZWxlY3RlZEl0ZW1zJyxcbiAgXSxcbiAgb3V0cHV0czogW1xuICAgICd2YWx1ZUNoYW5nZScsXG4gICAgJ3N0YXRlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkZvY3VzJyxcbiAgICAncmVhZG9ubHlDaGFuZ2UnLFxuICAgICdkaXNhYmxlZENoYW5nZScsXG4gICAgJ29uT3BlbmVkJyxcbiAgICAnb25DbG9zZWQnLFxuICAgICdvbkl0ZW1TZWxlY3RlZCcsXG4gICAgJ29uSXRlbUNsaWNrJyxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFNlbGVjdEJveENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhGb2N1c2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFNlbGVjdEJveENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYU2VsZWN0Qm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWENsZWFyYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYU2VsZWN0Qm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWENsb3NhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhTZWxlY3RCb3hDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYU2VhcmNoYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYU2VsZWN0Qm94Q29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWFNlbGVjdEJveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYX1NFTEVDVElPTl9EQVRBX1RPS0VOLFxuICAgICAgdXNlQ2xhc3M6IE1YU2VsZWN0aW9uQnJpZGdlU2VydmljZSxcbiAgICB9LFxuICAgIEFYVW5zdWJzY3JpYmVyLFxuICBdLFxuICBob3N0OiB7IG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnIH0sXG4gIGltcG9ydHM6IFtcbiAgICBBWERyb3Bkb3duQm94Q29tcG9uZW50LFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTmdDbGFzcyxcbiAgICBBWERlY29yYXRvckdlbmVyaWNDb21wb25lbnQsXG4gICAgQVhEZWNvcmF0b3JDbG9zZUJ1dHRvbkNvbXBvbmVudCxcbiAgICBBWExpc3RDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQVhMb2FkaW5nQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWFRyYW5zbGF0b3JQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFNlbGVjdEJveENvbXBvbmVudFxuICBleHRlbmRzIGNsYXNzZXMoTVhEcm9wZG93bkJveEJhc2VDb21wb25lbnQsIE1YU2VsZWN0aW9uVmFsdWVDb21wb25lbnQsIE1YTG9va0NvbXBvbmVudClcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYW4gaXRlbSBpcyB0cnVuY2F0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNJdGVtVHJ1bmNhdGVkID0gaW5wdXQodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSB0b29sdGlwIGlzIHNob3duIGZvciBhbiBpdGVtLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzaG93SXRlbVRvb2x0aXAgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqIEhlaWdodCBvZiBlYWNoIGxpc3QgaXRlbSBpbiBwaXhlbHMsIG9yICdhdXRvJyB0byBsZXQgbGlzdCBtZWFzdXJlLiAqL1xuICBpdGVtSGVpZ2h0ID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPig0MCk7XG5cbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIHZpc2libGUgaXRlbXMgYmVmb3JlIHNjcm9sbGluZy4gKi9cbiAgbWF4VmlzaWJsZUl0ZW1zID0gaW5wdXQoNSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBob3RLZXlTZXJ2aWNlOiBBWEhvdGtleXNTZXJ2aWNlID0gaW5qZWN0KEFYSG90a2V5c1NlcnZpY2UpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBzZWFyY2hWYWx1ZSA9IHNpZ25hbCgnJyk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHJlbmRlckxpc3QgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfZHJvcGRvd25XaWR0aCA9IGxpbmtlZFNpZ25hbDxzdHJpbmc+KCgpID0+IHRoaXMuZHJvcGRvd25XaWR0aCgpKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2Ryb3Bkb3duSGVpZ2h0ID0gc2lnbmFsPHN0cmluZz4oJ2F1dG8nKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2xpc3REYXRhU291cmNlOiBBWERhdGFTb3VyY2U8YW55PiA9IGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZShbXSwge1xuICAgIGtleTogdGhpcy52YWx1ZUZpZWxkLFxuICAgIHBhZ2VTaXplOiAxMCxcbiAgfSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfb3JpZ2luYWxEYXRhU291cmNlOiBBWERhdGFTb3VyY2U8YW55PiB8IGFueVtdO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgb25DaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBvbkxvYWRpbmdDaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgI2luaXQgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jbG9zZXN0KCdheC1mb3JtLWZpZWxkJyk7XG4gICAgaWYgKGZvcm1GaWVsZD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdheC1zdGF0ZS1mbG9hdGluZy1sYWJlbCcpKSB7XG4gICAgICB0aGlzLmdldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgnYXgtZmxvYXQtbGFiZWwnKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIGNvbXBvbmVudCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhbiBgQVhEYXRhU291cmNlYCBvciBhbiBhcnJheSBvZiBpdGVtcy5cbiAgICogQHJldHVybnMge0FYRGF0YVNvdXJjZTxhbnk+IHwgYW55W119XG4gICAqL1xuICBwdWJsaWMgZ2V0IGRhdGFTb3VyY2UoKTogQVhEYXRhU291cmNlPGFueT4gfCBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29yaWdpbmFsRGF0YVNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkYXRhIHNvdXJjZSwgZWl0aGVyIGFzIGFuIGBBWERhdGFTb3VyY2VgIG9yIGFuIGFycmF5LlxuICAgKiBAcGFyYW0ge0FYRGF0YVNvdXJjZTxhbnk+IHwgYW55W119IHZcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YVNvdXJjZSh2OiBBWERhdGFTb3VyY2U8YW55PiB8IGFueVtdKSB7XG4gICAgLy8gY2hlY2sgaWYgdGhlIGRhdGEgc291cmNlIGlzIHRoZSBzYW1lXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgQXJyYXkuaXNBcnJheSh0aGlzLl9vcmlnaW5hbERhdGFTb3VyY2UpICYmIGlzRXF1YWwodiwgdGhpcy5fb3JpZ2luYWxEYXRhU291cmNlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodiBpbnN0YW5jZW9mIEFYRGF0YVNvdXJjZSAmJiB2ID09IHRoaXMuX29yaWdpbmFsRGF0YVNvdXJjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvL1xuICAgIHRoaXMuX29yaWdpbmFsRGF0YVNvdXJjZSA9IHY7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgIHRoaXMuX2xpc3REYXRhU291cmNlID0gY29udmVydEFycmF5VG9EYXRhU291cmNlKHYsIHtcbiAgICAgICAga2V5OiB0aGlzLnZhbHVlRmllbGQsXG4gICAgICAgIHBhZ2VTaXplOiB2Lmxlbmd0aCB8fCAxMCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXN0RGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZSBhcyBBWERhdGFTb3VyY2U8YW55PjtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLm9uQ2hhbmdlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uQ2hhbmdlZFN1YnNjcmlwdGlvbiA9IHRoaXMuX2xpc3REYXRhU291cmNlLm9uQ2hhbmdlZFxuICAgICAgLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVEcm9wZG93blNpemUoKTtcbiAgICAgICAgLy8gRm9yY2UgcmVmcmVzaCBvZiBzZWxlY3RlZCBpdGVtcyB3aGVuIGRhdGEgc291cmNlIGNoYW5nZXNcbiAgICAgICAgdGhpcy5mb3JjZVJlZnJlc2hTZWxlY3RlZEl0ZW1zKCk7XG4gICAgICB9KTtcbiAgICAvL1xuICAgIHRoaXMub25Mb2FkaW5nQ2hhbmdlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uTG9hZGluZ0NoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLl9saXN0RGF0YVNvdXJjZS5vbkxvYWRpbmdDaGFuZ2VkXG4gICAgICAucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSlcbiAgICAgIC5zdWJzY3JpYmUoKGxvYWRpbmcpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGxvYWRpbmcpO1xuICAgICAgfSk7XG5cbiAgICAvLyBBZnRlciBzZXR0aW5nIGRhdGEgc291cmNlLCB0cnkgdG8gZmV0Y2ggaXRlbSBkYXRhIGlmIG5lZWRlZFxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mZXRjaEl0ZW1EYXRhSWZOZWVkZWQoKSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBsYWNlaG9sZGVyIHRleHQgZGlzcGxheWVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBlbXB0eS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBsYWNlaG9sZGVyXG4gICAqL1xuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluUmVjb3Jkc0ZvclNlYXJjaCBkZWZpbmVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiByZWNvcmRzIHJlcXVpcmVkIHRvIGRpc3BsYXkgdGhlIHNlYXJjaCBib3guXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5SZWNvcmRzRm9yU2VhcmNoXG4gICAqL1xuICBASW5wdXQoKVxuICBtaW5SZWNvcmRzRm9yU2VhcmNoOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjYXB0aW9uIHRleHQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYXB0aW9uXG4gICAqL1xuICBASW5wdXQoKVxuICBjYXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSB1c2VkIHRvIGN1c3RvbWl6ZSB0aGUgcmVuZGVyaW5nIG9mIGl0ZW1zLlxuICAgKiBAcGFyYW0ge1RlbXBsYXRlUmVmPGFueT59IGl0ZW1UZW1wbGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgdXNlZCB0byBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBvZiBzZWxlY3RlZCBpdGVtcy5cbiAgICogQHBhcmFtIHtUZW1wbGF0ZVJlZjxhbnk+fSBzZWxlY3RlZFRlbXBsYXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZWxlY3RlZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgdXNlZCB0byBkaXNwbGF5IHdoZW4gdGhlcmUgYXJlIG5vIGl0ZW1zLlxuICAgKiBAcGFyYW0ge1RlbXBsYXRlUmVmPGFueT59IGVtcHR5VGVtcGxhdGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSB1c2VkIHRvIGRpc3BsYXkgd2hpbGUgbG9hZGluZy5cbiAgICogQHBhcmFtIHtUZW1wbGF0ZVJlZjxhbnk+fSBsb2FkaW5nVGVtcGxhdGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGxvYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogVGhlIHdpZHRoIG9mIHRoZSBkcm9wZG93biBpbiBwaXhlbHMuXG4gICAqIEBkZWZhdWx0VmFsdWUgbnVsbFxuICAgKi9cbiAgZHJvcGRvd25XaWR0aCA9IGlucHV0PHN0cmluZz4obnVsbCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQFZpZXdDaGlsZCgncGFuZWwnKSBwYW5lbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIEBWaWV3Q2hpbGQoQVhMaXN0Q29tcG9uZW50KVxuICBsaXN0OiBBWExpc3RDb21wb25lbnQ7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQENvbnRlbnRDaGlsZChBWFNlYXJjaEJveENvbXBvbmVudClcbiAgc2VhcmNoQm94OiBBWFNlYXJjaEJveENvbXBvbmVudDtcblxuICBzZWFyY2hCb3hBdXRvRm9jdXMgPSBpbnB1dCh0cnVlKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKEFYRHJvcGRvd25Cb3hDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByb3RlY3RlZCBkcm9wZG93bjogQVhEcm9wZG93bkJveENvbXBvbmVudDtcblxuICAvKipcbiAgICogU2VydmljZSBmb3IgbWFuYWdpbmcgc2VsZWN0aW9uIGRhdGEsIGluamVjdGVkIHZpYSBgQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU5gLlxuICAgKi9cbiAgcHVibGljIHNlbGVjdGlvblNlcnZpY2UgPSBpbmplY3QoQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU4pO1xuXG4gIHNlYXJjaEV2ZW50OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvL1xuICAgIHRoaXMucmVnaXN0ZXJWYWxpZGF0aW9uKCk7XG4gICAgLy8gUHJvYWN0aXZlbHkgZmV0Y2ggaXRlbSBkYXRhIGlmIHdlIGhhdmUgYSB2YWx1ZSBidXQgbm8gY29ycmVzcG9uZGluZyBpdGVtXG4gICAgdGhpcy5mZXRjaEl0ZW1EYXRhSWZOZWVkZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9hY3RpdmVseSBmZXRjaGVzIGl0ZW0gZGF0YSBpZiB0aGUgY29tcG9uZW50IGhhcyBhIHZhbHVlIGJ1dCBubyBjb3JyZXNwb25kaW5nIGl0ZW0gZGF0YS5cbiAgICogVGhpcyBwcmV2ZW50cyBzaG93aW5nIFwibG9hZGluZy4uLlwiIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYSB2YWx1ZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hJdGVtRGF0YUlmTmVlZGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlzRW1wdHlWYWx1ZSA9IHRoaXMudmFsdWUgPT0gbnVsbCB8fCAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCk7XG5cbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSAmJiB0aGlzLl9saXN0RGF0YVNvdXJjZSAmJiAhdGhpcy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCB0aGlzLmdldEl0ZW1CeUtleSh0aGlzLnZhbHVlKTtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAvLyBGb3JjZSByZWZyZXNoIHRvIHVwZGF0ZSB0aGUgZGlzcGxheVxuICAgICAgICAgIHRoaXMuZm9yY2VSZWZyZXNoU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBmZXRjaCBpdGVtIGRhdGE6JywgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoQm94Py5vbktleURvd24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uQ2hhbmdlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uTG9hZGluZ0NoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuIGl0ZW0gYnkgaXRzIGtleS5cbiAgICogQHBhcmFtIHthbnl9IGtleVxuICAgKi9cbiAgZ2V0SXRlbUJ5S2V5KGtleTogYW55KTogUHJvbWlzZTxhbnk+IHwgYW55IHtcbiAgICAvLyBTdGF0aWMgYXJyYXkgZGF0YSBzb3VyY2VzIHJlc29sdmUgc3luY2hyb25vdXNseSB0byBhdm9pZCBhIGZhbHNlIGxvYWRpbmcgc3RhdGVcbiAgICAvLyBmb3IgcHJpbWl0aXZlIHZhbHVlcyAoZS5nLiBjb2xvciBmb3JtYXQgXCJoZXhcIiAvIFwicmdiYVwiKS5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl9vcmlnaW5hbERhdGFTb3VyY2UpKSB7XG4gICAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiB0aGlzLl9vcmlnaW5hbERhdGFTb3VyY2UpIHtcbiAgICAgICAgaWYgKGNhbmRpZGF0ZSAhPSBudWxsICYmIHR5cGVvZiBjYW5kaWRhdGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKGdldChjYW5kaWRhdGUsIHRoaXMudmFsdWVGaWVsZCkgPT0ga2V5IHx8IGdldChjYW5kaWRhdGUsIHRoaXMudGV4dEZpZWxkKSA9PSBrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZSA9PSBrZXkpIHtcbiAgICAgICAgICByZXR1cm4geyBbdGhpcy52YWx1ZUZpZWxkXTogY2FuZGlkYXRlLCBbdGhpcy50ZXh0RmllbGRdOiBTdHJpbmcoY2FuZGlkYXRlID8/ICcnKSB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbGlzdERhdGFTb3VyY2UgJiYgdHlwZW9mIHRoaXMuX2xpc3REYXRhU291cmNlLmZpbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9saXN0RGF0YVNvdXJjZS5maW5kKGtleSk7XG4gICAgfVxuXG4gICAgLy8gSWYgbmVpdGhlciBtZXRob2QgaXMgYXZhaWxhYmxlLCByZXR1cm4gbnVsbFxuICAgIGNvbnNvbGUud2FybignTm8gZmluZCBtZXRob2QgYXZhaWxhYmxlIG9uIGRhdGEgc291cmNlJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU9uT3BlbmVkRXZlbnQoZTogQVhFdmVudCkge1xuICAgIGlmICghdGhpcy5yZW5kZXJMaXN0KCkpIHtcbiAgICAgIHRoaXMucmVuZGVyTGlzdC5zZXQodHJ1ZSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5fbGlzdERhdGFTb3VyY2UudG90YWxDb3VudCB8fCB0aGlzLl9saXN0RGF0YVNvdXJjZS50b3RhbENvdW50ID09IDApIHtcbiAgICAgIHRoaXMubGlzdD8ucmVmcmVzaChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2hhbmRsZUZvY3VzKCk7XG4gICAgLy9cbiAgICB0aGlzLm9uT3BlbmVkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IGUuaXNVc2VySW50ZXJhY3Rpb24sXG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVEcm9wZG93blNpemUoKTtcblxuICAgIC8vIEZvcmNlIHJlZnJlc2ggb2Ygc2VsZWN0ZWQgaXRlbXMgd2hlbiBvcGVuaW5nIHRvIHNob3cgdXBkYXRlZCB0ZXh0XG4gICAgdGhpcy5mb3JjZVJlZnJlc2hTZWxlY3RlZEl0ZW1zKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU9uQ2xvc2VkRXZlbnQoZTogQVhFdmVudCkge1xuICAgIC8vdGhpcy5pbnB1dC5mb2N1cygpO1xuICAgIHRoaXMub25DbG9zZWQuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogZS5pc1VzZXJJbnRlcmFjdGlvbixcbiAgICB9KTtcbiAgICB0aGlzLl91bnN1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfaGFuZGxlRm9jdXMoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWFyY2hCb3gpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hCb3gubG9vayA9ICdmbGF0JztcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQm94QXV0b0ZvY3VzKCkpIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaEJveC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIC8vVE9ETzogdW5zdWJzY3JpYmVcbiAgICAgICAgdGhpcy5ob3RLZXlTZXJ2aWNlXG4gICAgICAgICAgLmFkZFNob3J0Y3V0KHsga2V5czogJ0NvbnRyb2wuZicsIGVsZW1lbnQ6IHRoaXMucGFuZWwubmF0aXZlRWxlbWVudCB9KVxuICAgICAgICAgIC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hCb3guZm9jdXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWFyY2hCb3gub25LZXlEb3duLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgIGlmIChlLm5hdGl2ZUV2ZW50LmNvZGUgPT09ICdBcnJvd0Rvd24nIHx8IGUubmF0aXZlRXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgdGhpcy5saXN0Py5mb2N1cygpO1xuICAgICAgICAgICAgZS5uYXRpdmVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxpc3Q/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUJhZGdlUmVtb3ZlKGU6IE1vdXNlRXZlbnQsIGl0ZW0pIHtcbiAgICB0aGlzLnVuc2VsZWN0SXRlbXMoaXRlbSk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfaGFuZGxlVmFsdWVDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29tbWl0VmFsdWUoZS5jb21wb25lbnQuc2VsZWN0ZWRJdGVtcywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVJdGVtQ2xpY2soZTogQVhJdGVtQ2xpY2tFdmVudCkge1xuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdChlKTtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUl0ZW1TZWxlY3RlZChlOiBBWEl0ZW1TZWxlY3RlZEV2ZW50KSB7XG4gICAgdGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KGUpO1xuICAgIHRoaXMucmVzZXRTZWFyY2hBZnRlclNlbGVjdGlvbigpO1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTZWFyY2hBZnRlclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoQm94ICYmICF0aGlzLnNlYXJjaEJveD8udmFsdWUpIHJldHVybjtcbiAgICBpZiAodGhpcy5zZWFyY2hCb3ggJiYgdGhpcy5zZWFyY2hCb3g/LnZhbHVlKSB0aGlzLnNlYXJjaEJveC5jb21taXRWYWx1ZSgnJywgZmFsc2UpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBzZXREcm9wZG93blNpemUoY291bnQgPSAwKSB7XG4gICAgY29uc3QgaXRlbVB4ID0gdHlwZW9mIHRoaXMuaXRlbUhlaWdodCgpID09PSAnbnVtYmVyJyA/ICh0aGlzLml0ZW1IZWlnaHQoKSBhcyBudW1iZXIpIDogNDA7XG4gICAgY29uc3QgaXNBY3Rpb25zaGVldCA9IHRoaXMuZHJvcGRvd24uaXNBY3Rpb25zaGVldFN0eWxlO1xuXG4gICAgaWYgKGlzQWN0aW9uc2hlZXQpIHtcbiAgICAgIHRoaXMuX2Ryb3Bkb3duV2lkdGguc2V0KCcxMDAlJyk7XG4gICAgICAvLyBQcmVmZXIgbWF4VmlzaWJsZUl0ZW1zIG9uIGFjdGlvbnNoZWV0IHRvbzsgc3RpbGwgY2xhbXAgdG8gdGhlIHBhbmUgYWZ0ZXJ3YXJkcy5cbiAgICAgIGNvbnN0IG1heEl0ZW1zID0gTWF0aC5tYXgoTnVtYmVyKHRoaXMubWF4VmlzaWJsZUl0ZW1zKCkpIHx8IDUsIDEpO1xuICAgICAgdGhpcy5fZHJvcGRvd25IZWlnaHQuc2V0KGAke01hdGgubWluKG1heEl0ZW1zLCBNYXRoLm1heChjb3VudCwgMSkpICogaXRlbVB4fXB4YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGhvc3RXaWR0aCA9IE1hdGgubWF4KHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5vZmZzZXRXaWR0aCwgTnVtYmVyKHRoaXMuZHJvcGRvd25XaWR0aCgpKSB8fCAwKTtcbiAgICAgIGNvbnN0IG1heEl0ZW1zID0gTnVtYmVyKHRoaXMubWF4VmlzaWJsZUl0ZW1zKCkpO1xuICAgICAgdGhpcy5fZHJvcGRvd25XaWR0aC5zZXQoYCR7aG9zdFdpZHRofXB4YCk7XG4gICAgICB0aGlzLl9kcm9wZG93bkhlaWdodC5zZXQoY291bnQgPT0gMCA/ICdhdXRvJyA6IGAke01hdGgubWluKG1heEl0ZW1zLCBjb3VudCkgKiBpdGVtUHh9cHhgKTtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2ZpdExpc3RIZWlnaHRUb0F2YWlsYWJsZVNwYWNlKGl0ZW1QeCk7XG4gICAgICB0aGlzLmRyb3Bkb3duLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICB0aGlzLmxpc3Q/LnJlbmRlcigpO1xuICAgICAgLy8gU2Vjb25kIHBhc3MgYWZ0ZXIgdGhlIG92ZXJsYXkgcGFuZSBhcHBsaWVzIG1heC1oZWlnaHQgLyBvdmVyZmxvdyBjb25zdHJhaW50cy5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2ZpdExpc3RIZWlnaHRUb0F2YWlsYWJsZVNwYWNlKGl0ZW1QeCk7XG4gICAgICAgICAgdGhpcy5saXN0Py5yZW5kZXIoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaHJpbmtzIGxpc3QgaGVpZ2h0IHRvIHRoZSB2aXNpYmxlIG92ZXJsYXkgYXJlYSBzbyB2aXJ0dWFsIHNjcm9sbCBlbmRzIG9uIGZ1bGx5XG4gICAqIHZpc2libGUgcm93cyBpbnN0ZWFkIG9mIGluc2lkZSBhbiBvdmVyZmxvdzpoaWRkZW4gY2xpcHBlZCByZWdpb24uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2ZpdExpc3RIZWlnaHRUb0F2YWlsYWJsZVNwYWNlKGl0ZW1QeDogbnVtYmVyKSB7XG4gICAgaWYgKGl0ZW1QeCA8PSAwIHx8IHRoaXMuX2Ryb3Bkb3duSGVpZ2h0KCkgPT09ICdhdXRvJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5wYW5lbD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsaXN0RWwgPSB0aGlzLmxpc3Q/LmdldEhvc3RFbGVtZW50Py4oKSBhcyBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIXBhbmVsIHx8ICFsaXN0RWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYW5lID0gcGFuZWwuY2xvc2VzdCgnLmF4LW92ZXJsYXktcGFuZScpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAoIXBhbmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0UmVjdCA9IGxpc3RFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBwYW5lUmVjdCA9IHBhbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcGFuZU92ZXJmbG93ID0gbGlzdFJlY3QuYm90dG9tIC0gcGFuZVJlY3QuYm90dG9tO1xuICAgIGNvbnN0IHZpZXdwb3J0T3ZlcmZsb3cgPSBsaXN0UmVjdC5ib3R0b20gLSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgY29uc3Qgb3ZlcmZsb3cgPSBNYXRoLm1heChwYW5lT3ZlcmZsb3csIHZpZXdwb3J0T3ZlcmZsb3cpO1xuXG4gICAgbGV0IG5leHRIZWlnaHQgPSBsaXN0RWwuY2xpZW50SGVpZ2h0IHx8IHBhcnNlRmxvYXQodGhpcy5fZHJvcGRvd25IZWlnaHQoKSk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobmV4dEhlaWdodCkgfHwgbmV4dEhlaWdodCA8PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gV2hlbiB0aGUgbGlzdCBleHRlbmRzIHBhc3QgdGhlIG92ZXJsYXkgcGFuZSBvciBzY3JlZW4sIHNocmluayBpdCB0byB0aGUgdmlzaWJsZSBhcmVhLlxuICAgIGlmIChvdmVyZmxvdyA+IDEpIHtcbiAgICAgIG5leHRIZWlnaHQgPSBNYXRoLm1heChpdGVtUHgsIG5leHRIZWlnaHQgLSBvdmVyZmxvdyk7XG4gICAgfVxuXG4gICAgLy8gS2VlcCBoZWlnaHQgYXMgd2hvbGUgcm93cyBzbyB0aGUgbGFzdCBpdGVtIGlzIG5ldmVyIHBlcm1hbmVudGx5IGNyb3BwZWQuXG4gICAgbmV4dEhlaWdodCA9IE1hdGgubWF4KGl0ZW1QeCwgTWF0aC5mbG9vcihuZXh0SGVpZ2h0IC8gaXRlbVB4KSAqIGl0ZW1QeCk7XG5cbiAgICBjb25zdCBjdXJyZW50ID0gcGFyc2VGbG9hdCh0aGlzLl9kcm9wZG93bkhlaWdodCgpKTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShjdXJyZW50KSB8fCBuZXh0SGVpZ2h0ICE9PSBjdXJyZW50KSB7XG4gICAgICB0aGlzLl9kcm9wZG93bkhlaWdodC5zZXQoYCR7bmV4dEhlaWdodH1weGApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZHJvcGRvd24udXBkYXRlUG9zaXRpb24oKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRHJvcGRvd25TaXplKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXREcm9wZG93blNpemUodGhpcy5fbGlzdERhdGFTb3VyY2UudG90YWxDb3VudCk7XG4gICAgICB0aGlzLnVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKTtcbiAgICAgIHRoaXMubGlzdD8ucmVuZGVyKCk7XG4gICAgICBpZiAoIXRoaXMuaXNJdGVtVHJ1bmNhdGVkKCkpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZml0RHJvcGRvd25Ub0NvbnRlbnQoKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX2ZpdERyb3Bkb3duVG9Db250ZW50KCksIDEwMCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZml0RHJvcGRvd25Ub0NvbnRlbnQoKSB7XG4gICAgY29uc3QgcGFuZWwgPSB0aGlzLnBhbmVsPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghcGFuZWwpIHJldHVybjtcblxuICAgIGNvbnN0IGhvc3RXaWR0aCA9IE1hdGgubWF4KHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5vZmZzZXRXaWR0aCwgTnVtYmVyKHRoaXMuZHJvcGRvd25XaWR0aCgpKSB8fCAwKTtcbiAgICBsZXQgY29udGVudFdpZHRoID0gaG9zdFdpZHRoO1xuXG4gICAgcGFuZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ2xpLmxpc3QtaXRlbScpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsID0gaXRlbS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLmF4LWxhYmVsLWNvbnRhaW5lciBzcGFuJyk7XG4gICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgY29uc3QgbGFiZWxDb250YWluZXIgPSBsYWJlbC5wYXJlbnRFbGVtZW50O1xuICAgICAgICBjb25zdCBob3Jpem9udGFsUGFkZGluZyA9IGxhYmVsQ29udGFpbmVyID8gaXRlbS5vZmZzZXRXaWR0aCAtIGxhYmVsQ29udGFpbmVyLmNsaWVudFdpZHRoIDogMDtcbiAgICAgICAgY29udGVudFdpZHRoID0gTWF0aC5tYXgoY29udGVudFdpZHRoLCBsYWJlbC5zY3JvbGxXaWR0aCArIGhvcml6b250YWxQYWRkaW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRlbnRXaWR0aCA9IE1hdGgubWF4KGNvbnRlbnRXaWR0aCwgaXRlbS5zY3JvbGxXaWR0aCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBuZXh0V2lkdGggPSBgJHtNYXRoLm1heChob3N0V2lkdGgsIGNvbnRlbnRXaWR0aCl9cHhgO1xuICAgIGlmICh0aGlzLl9kcm9wZG93bldpZHRoKCkgIT09IG5leHRXaWR0aCkge1xuICAgICAgdGhpcy5fZHJvcGRvd25XaWR0aC5zZXQobmV4dFdpZHRoKTtcbiAgICAgIHRoaXMuZHJvcGRvd24udXBkYXRlUG9zaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBpbnRlcm5hbFZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55KSB7XG4gICAgc3VwZXIuaW50ZXJuYWxWYWx1ZUNoYW5nZWQodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICAgIC8vIFRyeSB0byBmZXRjaCBpdGVtIGRhdGEgd2hlbiB2YWx1ZSBjaGFuZ2VzXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmZldGNoSXRlbURhdGFJZk5lZWRlZCgpLCAwKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBfaGFuZGxlS2V5ZG93bihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGUuY29kZSA9PT0gJ0Fycm93RG93bicgfHwgZS5jb2RlID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIHRoaXMuc2VsZWN0SXRlbUJ5TmF2KGUuY29kZSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSBpZiAoZS5jb2RlID09PSAnQmFja3NwYWNlJykge1xuICAgICAgdGhpcy51bnNlbGVjdEl0ZW1zKHRoaXMuc2VsZWN0ZWRJdGVtcy5wb3AoKSk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIC8vIGlmICgoZS5jb2RlID09PSAnU3BhY2UnIHx8IGUuY29kZSA9PT0gJ0VudGVyJykgJiYgdGhpcy5oYXNJdGVtcykge1xuICAgIC8vICAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgLy8gICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgLy8gICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIC8vICAgICAgICAgcmV0dXJuO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGNvbnN0IGlkID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8uY2xvc2VzdCgnbGknKT8uZGF0YXNldD8uaWQ7XG4gICAgLy8gICAgIHRoaXMudG9nZ2xlU2VsZWN0KGlkKTtcbiAgICAvLyAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIC8vICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgLy8gfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBzZWxlY3RJdGVtQnlOYXYoc2lnbjogMSB8IC0xKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhU291cmNlKSAmJiAhdGhpcy5tdWx0aXBsZSkge1xuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLm5vcm1hbGl6ZUl0ZW1zTGlzdCh0aGlzLmRhdGFTb3VyY2UpO1xuICAgICAgY29uc3QgX2xhc3Q6IGFueSA9IGxhc3QodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIGxldCBpID0gLTE7XG4gICAgICBpZiAoX2xhc3QpIHtcbiAgICAgICAgaSA9IGZpbmRMYXN0SW5kZXgoaXRlbXMsIFt0aGlzLnZhbHVlRmllbGQsIGdldChfbGFzdCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKV0pO1xuICAgICAgfVxuICAgICAgaSArPSBzaWduO1xuICAgICAgaWYgKGkgPCAwIHx8IGkgPj0gaXRlbXMubGVuZ3RoKSByZXR1cm47XG4gICAgICBjb25zdCBuZXh0ID0gbnRoPGFueT4oaXRlbXMsIGkpO1xuICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtcyhuZXh0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgdGhlIGRhdGEgc291cmNlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzZWFyY2ggdGVybS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm1cbiAgICovXG4gIHNlYXJjaCh0ZXJtOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCh0ZXJtKTtcbiAgICBpZiAodGVybSkge1xuICAgICAgdGhpcy5fbGlzdERhdGFTb3VyY2UuZmlsdGVyKHtcbiAgICAgICAgZmllbGQ6IHRoaXMudGV4dEZpZWxkLFxuICAgICAgICB2YWx1ZTogdGVybSxcbiAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2NvbnRhaW5zJyB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpc3REYXRhU291cmNlLmNsZWFyRmlsdGVyKCk7XG4gICAgfVxuICAgIHRoaXMuX2xpc3REYXRhU291cmNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoZXMgdGhlIGNvbXBvbmVudCBieSByZXNldHRpbmcgc3RhdGUsIGNsZWFyaW5nIHNlbGVjdGlvbiBjYWNoZSwgcmVmcmVzaGluZyB0aGUgbGlzdCwgYW5kIGNsb3NpbmcgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5yZXNldChmYWxzZSk7XG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbkNhY2hlKCk7XG4gICAgdGhpcy5saXN0Py5yZWZyZXNoKCk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBwcml2YXRlIGhvc3RDbGlja0xpc3RlbmVyKCkge1xuICAgIHRoaXMudG9nZ2xlKCk7XG4gIH1cbn1cbiIsIjxheC1kcm9wZG93bi1ib3hcbiAgW2NsYXNzLmF4LXN0YXRlLW11bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgKG9uT3BlbmVkKT1cIl9oYW5kbGVPbk9wZW5lZEV2ZW50KCRldmVudClcIlxuICAob25DbG9zZWQpPVwiX2hhbmRsZU9uQ2xvc2VkRXZlbnQoJGV2ZW50KVwiXG4gIChmb2N1cyk9XCJlbWl0T25Gb2N1c0V2ZW50KCRldmVudClcIlxuICAoYmx1cik9XCJlbWl0T25CbHVyRXZlbnQoJGV2ZW50KVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtsb29rXT1cImxvb2tcIlxuICBbcG9wb3ZlcldpZHRoXT1cImRyb3Bkb3duV2lkdGgoKVwiXG4+XG4gIDxuZy1jb250YWluZXIgaW5wdXQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtcHJlZml4XCI+IDwvbmctY29udGVudD5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LWVkaXRvciBheC1jaGlwcy1jb250YWluZXIgYXgtY29udGVudCBheC1pbnB1dFwiXG4gICAgICBbY2xhc3MuYXgtc3RhdGUtbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgW3RhYmluZGV4XT1cInRhYkluZGV4XCJcbiAgICA+XG4gICAgICBAaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1wbGFjZWhvbGRlclwiIHJvbGU9XCJ0ZXh0Ym94XCIgYXJlYS1yZWFkb25seT1cInRydWVcIj5cbiAgICAgICAgICB7eyBwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGZvciAoaXRlbSBvZiBzZWxlY3RlZEl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgQGlmIChzZWxlY3RlZFRlbXBsYXRlKSB7XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RlZFRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBpdGVtIH0gfVwiXG4gICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jaGlwc1wiPlxuICAgICAgICAgICAge3sgZ2V0RGlzcGxheVRleHQoaXRlbSkgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgQGlmICghZGlzYWJsZWQgJiYgIXJlYWRvbmx5ICYmIG11bHRpcGxlKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNsb3NlXCIgKGNsaWNrKT1cIl9oYW5kbGVCYWRnZVJlbW92ZSgkZXZlbnQsIGl0ZW0pXCI+IDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmICFkaXNhYmxlZCAmJiAhcmVhZG9ubHkpIHtcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWNsZWFyLWJ1dHRvblwiPjwvbmctY29udGVudD5cbiAgICB9XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3RhYkluZGV4XT1cIi0xXCIgY2xhc3M9XCJheC1lZGl0b3ItYnV0dG9uXCI+XG4gICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYXgtaWNvblwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1kb3duJzogIWlzT3BlbixcbiAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tdXAnOiBpc09wZW4sXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICB9XG4gICAgPC9idXR0b24+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc3VmZml4XCI+IDwvbmctY29udGVudD5cbiAgICA8bmctdGVtcGxhdGUgI3NlYXJjaD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXNlYXJjaC1ib3hcIj4gPC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyIHBhbmVsPlxuICAgIDxkaXZcbiAgICAgICNwYW5lbFxuICAgICAgY2xhc3M9XCJheC1zZWxlY3QtYm94LXBhbmVsXCJcbiAgICAgIFtjbGFzcy5heC1uby10cnVuY2F0ZV09XCIhaXNJdGVtVHJ1bmNhdGVkKClcIlxuICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJfZHJvcGRvd25XaWR0aCgpXCJcbiAgICA+XG4gICAgICBAaWYgKGRyb3Bkb3duLmlzQWN0aW9uc2hlZXRTdHlsZSkge1xuICAgICAgICA8YXgtaGVhZGVyIGNsYXNzPVwiYXgtc29saWRcIj5cbiAgICAgICAgICA8YXgtdGl0bGU+e3sgY2FwdGlvbiB8fCBwbGFjZWhvbGRlciB8fCAnQGFjb3JleDpzZWxlY3Rib3gucG9wb3Zlci50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvYXgtdGl0bGU+XG4gICAgICAgICAgPGF4LWNsb3NlLWJ1dHRvbiBbaWNvbl09XCJtdWx0aXBsZSA/ICdheC1pY29uIGF4LWljb24tY2hlY2snIDogJ2F4LWljb24gYXgtaWNvbi1jbG9zZSdcIj48L2F4LWNsb3NlLWJ1dHRvbj5cbiAgICAgICAgPC9heC1oZWFkZXI+XG4gICAgICB9XG4gICAgICBAaWYgKHNlYXJjaEJveCAmJiAoIW1pblJlY29yZHNGb3JTZWFyY2ggfHwgX2xpc3REYXRhU291cmNlLnRvdGFsQ291bnQgPj0gbWluUmVjb3Jkc0ZvclNlYXJjaCB8fCBzZWFyY2hWYWx1ZSgpKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtc2VhcmNoLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWFyY2hcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAocmVuZGVyTGlzdCgpKSB7XG4gICAgICAgIDxheC1saXN0XG4gICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICBbdGV4dEZpZWxkXT1cInRleHRGaWVsZFwiXG4gICAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiJ2l0ZW0nXCJcbiAgICAgICAgICBbdmFsdWVGaWVsZF09XCJ2YWx1ZUZpZWxkXCJcbiAgICAgICAgICBbaXRlbUhlaWdodF09XCJpdGVtSGVpZ2h0KClcIlxuICAgICAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICBbdGV4dFRlbXBsYXRlXT1cInRleHRUZW1wbGF0ZVwiXG4gICAgICAgICAgW2RhdGFTb3VyY2VdPVwiX2xpc3REYXRhU291cmNlXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIl9kcm9wZG93bkhlaWdodCgpXCJcbiAgICAgICAgICBbbG9hZGluZ1RlbXBsYXRlXT1cImxvYWRpbmdUZW1wbGF0ZVwiXG4gICAgICAgICAgW2lzSXRlbVRydW5jYXRlZF09XCJpc0l0ZW1UcnVuY2F0ZWQoKVwiXG4gICAgICAgICAgW3Nob3dJdGVtVG9vbHRpcF09XCJzaG93SXRlbVRvb2x0aXAoKVwiXG4gICAgICAgICAgKG9uSXRlbUNsaWNrKT1cIl9oYW5kbGVJdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgW2VtcHR5VGVtcGxhdGVdPVwiZW1wdHlUZW1wbGF0ZSA/PyBlbXB0eVwiXG4gICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIl9oYW5kbGVWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uSXRlbVNlbGVjdGVkKT1cIl9oYW5kbGVJdGVtU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9heC1saXN0PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgICAgICAgIHt7ICdAYWNvcmV4OmNvbW1vbi5nZW5lcmFsLm5vLXJlc3VsdC1mb3VuZCcgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgIEBpZiAobG9hZGluZ1RlbXBsYXRlKSB7XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvYWRpbmdUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+IDwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2F4LWRyb3Bkb3duLWJveD5cbjxuZy1jb250ZW50IHNlbGVjdD1cImF4LXZhbGlkYXRpb24tcnVsZVwiPiA8L25nLWNvbnRlbnQ+XG4iXX0=","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXCommonModule } from '@acorex/cdk/common';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXListModule } from '@acorex/components/list';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXSelectBoxComponent } from './select-box.component';\nimport * as i0 from \"@angular/core\";\nexport class AXSelectBoxModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxModule, imports: [CommonModule,\n AXCommonModule,\n FormsModule,\n AXCheckBoxModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPopoverModule,\n AXLoadingModule,\n A11yModule,\n AXTextBoxModule,\n AXDropdownModule,\n AXListModule,\n AXSelectBoxComponent], exports: [AXSelectBoxComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxModule, imports: [CommonModule,\n AXCommonModule,\n FormsModule,\n AXCheckBoxModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPopoverModule,\n AXLoadingModule,\n A11yModule,\n AXTextBoxModule,\n AXDropdownModule,\n AXListModule,\n AXSelectBoxComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n AXCommonModule,\n FormsModule,\n AXCheckBoxModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPopoverModule,\n AXLoadingModule,\n A11yModule,\n AXTextBoxModule,\n AXDropdownModule,\n AXListModule,\n AXSelectBoxComponent,\n ],\n exports: [AXSelectBoxComponent],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJveC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3NlbGVjdC1ib3gvc3JjL2xpYi9zZWxlY3QtYm94Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQXNCOUQsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsWUFsQjFCLFlBQVk7WUFDWixjQUFjO1lBQ2QsV0FBVztZQUNYLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsZUFBZTtZQUNmLFVBQVU7WUFDVixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixvQkFBb0IsYUFFWixvQkFBb0I7K0dBR25CLGlCQUFpQixZQWxCMUIsWUFBWTtZQUNaLGNBQWM7WUFDZCxXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixlQUFlO1lBQ2YsVUFBVTtZQUNWLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLG9CQUFvQjs7MkZBS1gsaUJBQWlCO2tCQXBCN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUMvQixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhDaGVja0JveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jaGVjay1ib3gnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBWENvbW1vbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYTGlzdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9saXN0JztcbmltcG9ydCB7IEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveENvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0LWJveC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYQ2hlY2tCb3hNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBBWFRleHRCb3hNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWExpc3RNb2R1bGUsXG4gICAgQVhTZWxlY3RCb3hDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtBWFNlbGVjdEJveENvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYU2VsZWN0Qm94TW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtc2VsZWN0LWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvc2VsZWN0LWJveC9zcmMvYWNvcmV4LWNvbXBvbmVudHMtc2VsZWN0LWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAeA;AACA;AACA;AACA;AACO,MAAM,oBAAoB,SAAS,OAAO,CAAC,0BAA0B,EAAE,yBAAyB,EAAE,eAAe,CAAC,CAAC;AAC1H,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpG;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrG;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxF;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjG;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrD;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5F;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/H;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvG;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC,EAAE,EAAE;AAC5D,YAAY,GAAG,EAAE,IAAI,CAAC,UAAU;AAChC,YAAY,QAAQ,EAAE,EAAE;AACxB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,MAAM;AAC3C,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;AAC5E,YAAY,IAAI,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE;AAC1E,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACrE,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1G;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC/D;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AACnD,IAAI;AACJ,IAAI,KAAK;AACT;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,mBAAmB;AACvC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,CAAC,CAAC,EAAE;AACtB;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE;AACjH,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACxE,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC;AACpC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC9B,YAAY,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC,CAAC,EAAE;AAC/D,gBAAgB,GAAG,EAAE,IAAI,CAAC,UAAU;AACpC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;AACxC,aAAa,CAAC;AACd,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU;AAClD,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE;AACjD,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC;AAC1D,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB;AACrD,aAAa,SAAS,CAAC,MAAM;AAC7B,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC;AACA,YAAY,IAAI,CAAC,yBAAyB,EAAE;AAC5C,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,4BAA4B,EAAE,WAAW,EAAE;AACxD,QAAQ,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,eAAe,CAAC;AACjE,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB;AACrD,aAAa,SAAS,CAAC,CAAC,OAAO,KAAK;AACpC,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AACvC,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,UAAU,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;AACzD,IAAI;AACJ;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,KAAK,CAAC,QAAQ,EAAE;AACxB;AACA,QAAQ,IAAI,CAAC,kBAAkB,EAAE;AACjC;AACA,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AACzG,QAAQ,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;AAClF,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAChE,gBAAgB,IAAI,IAAI,EAAE;AAC1B;AACA,oBAAoB,IAAI,CAAC,yBAAyB,EAAE;AACpD,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC;AACjE,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;AAC/C,QAAQ,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE;AACjD,QAAQ,IAAI,CAAC,4BAA4B,EAAE,WAAW,EAAE;AACxD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,GAAG,EAAE;AACtB;AACA;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;AACrD,YAAY,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC9D,gBAAgB,IAAI,SAAS,IAAI,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACxE,oBAAoB,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE;AACzG,wBAAwB,OAAO,SAAS;AACxC,oBAAoB;AACpB,gBAAgB;AAChB,qBAAqB,IAAI,SAAS,IAAI,GAAG,EAAE;AAC3C,oBAAoB,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE;AACtG,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE;AACrF,YAAY,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AACjD,QAAQ;AACR;AACA,QAAQ,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC;AAC/D,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,oBAAoB,CAAC,CAAC,EAAE;AAC5B,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AAChC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACrC,QAAQ;AACR,aAAa,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,CAAC,EAAE;AAC3F,YAAY,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;AAClD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,kBAAkB,EAAE;AACjC;AACA,QAAQ,IAAI,CAAC,yBAAyB,EAAE;AACxC,IAAI;AACJ;AACA,IAAI,oBAAoB,CAAC,CAAC,EAAE;AAC5B;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;AAClD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AACxC,IAAI;AACJ;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;AAChC,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,MAAM;AAC5C,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC/C,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAC1C,gBAAgB;AAChB;AACA,gBAAgB,IAAI,CAAC;AACrB,qBAAqB,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AACzF,qBAAqB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB;AAC7D,qBAAqB,SAAS,CAAC,MAAM;AACrC,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAC1C,gBAAgB,CAAC,CAAC;AAClB,gBAAgB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;AACpG,oBAAoB,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,WAAW,EAAE;AACjG,wBAAwB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1C,wBAAwB,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE;AACtD,oBAAoB;AACpB,gBAAgB,CAAC,CAAC;AAClB,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAClC,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE;AAChC,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAChC,QAAQ,CAAC,CAAC,eAAe,EAAE;AAC3B,IAAI;AACJ;AACA,IAAI,mBAAmB,CAAC,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,CAAC,iBAAiB,EAAE;AACjC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChC,gBAAgB,IAAI,CAAC,KAAK,EAAE;AAC5B,YAAY;AACZ,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC;AAC7D,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,gBAAgB,CAAC,CAAC,EAAE;AACxB,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,IAAI,CAAC,KAAK,EAAE;AACxB,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,mBAAmB,CAAC,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,yBAAyB,EAAE;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,IAAI,CAAC,KAAK,EAAE;AACxB,QAAQ;AACR,IAAI;AACJ,IAAI,yBAAyB,GAAG;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK;AACrD,YAAY;AACZ,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK;AACnD,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC;AACjD,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,KAAK,GAAG,CAAC,EAAE;AAC/B,QAAQ,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;AACrF,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB;AAC9D,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3C;AACA,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7E,YAAY,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5F,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5G,YAAY,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3D,YAAY,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACrD,YAAY,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AACrG,QAAQ;AACR,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;AACvD,YAAY,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC1C,YAAY,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AAC/B;AACA,YAAY,qBAAqB,CAAC,MAAM;AACxC,gBAAgB,UAAU,CAAC,MAAM;AACjC,oBAAoB,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;AAC/D,oBAAoB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AACvC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACrB,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,8BAA8B,CAAC,MAAM,EAAE;AAC3C,QAAQ,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,MAAM,EAAE;AAC9D,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa;AAC/C,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,IAAI;AACpD,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AAC/B,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACtD,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,qBAAqB,EAAE;AACvD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACrD,QAAQ,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;AAC9D,QAAQ,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW;AACrE,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC;AACjE,QAAQ,IAAI,UAAU,GAAG,MAAM,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAClF,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE;AAC7D,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE;AAC1B,YAAY,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;AAChE,QAAQ;AACR;AACA,QAAQ,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC/E,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1D,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,KAAK,OAAO,EAAE;AACjE,YAAY,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;AACvD,QAAQ;AACR,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC1C,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACjE,YAAY,IAAI,CAAC,sBAAsB,EAAE;AACzC,YAAY,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AAC/B,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;AACzC,gBAAgB,UAAU,CAAC,MAAM;AACjC,oBAAoB,IAAI,CAAC,qBAAqB,EAAE;AAChD,oBAAoB,UAAU,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,CAAC;AACvE,gBAAgB,CAAC,CAAC;AAClB,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa;AAC/C,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY;AACZ,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;AACxG,QAAQ,IAAI,YAAY,GAAG,SAAS;AACpC,QAAQ,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACjE,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC;AACxE,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa;AAC1D,gBAAgB,MAAM,iBAAiB,GAAG,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,GAAG,CAAC;AAC5G,gBAAgB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAC5F,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;AACvE,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;AAClE,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,SAAS,EAAE;AACjD,YAAY,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9C,YAAY,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC1C,QAAQ;AACR,IAAI;AACJ,IAAI,oBAAoB,CAAC,KAAK,EAAE;AAChC,QAAQ,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,sBAAsB,EAAE;AACrC;AACA,QAAQ,UAAU,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;AACzD,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,CAAC,EAAE;AACtB,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5D,YAAY,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,YAAY,CAAC,CAAC,cAAc,EAAE;AAC9B,QAAQ;AACR,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE;AACzC,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;AACxD,YAAY,CAAC,CAAC,cAAc,EAAE;AAC9B,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,IAAI,EAAE;AAC1B,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC9D,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAClE,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAClD,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACxF,YAAY;AACZ,YAAY,CAAC,IAAI,IAAI;AACrB,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM;AAC1C,gBAAgB;AAChB,YAAY,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AACtC,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACtC,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AACxC,gBAAgB,KAAK,EAAE,IAAI,CAAC,SAAS;AACrC,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;AAC9C,aAAa,CAAC;AACd,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AAC9C,QAAQ;AACR,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;AACtC,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,QAAQ,IAAI,CAAC,mBAAmB,EAAE;AAClC,QAAQ,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AAC5B,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACxL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,mBAAmB,EAAE,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,UAAU,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,kBAAkB,EAAE,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,wBAAwB,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,EAAE,SAAS,EAAE;AAC5wJ,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE;AACvE,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAChF,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC/E,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAChF,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC/E,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AACjF,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnE,gBAAgB,KAAK,EAAE,IAAI;AAC3B,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,uBAAuB;AAChD,gBAAgB,QAAQ,EAAE,wBAAwB;AAClD,aAAa;AACb,YAAY,cAAc;AAC1B,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,qpIAAqpI,EAAE,MAAM,EAAE,CAAC,68IAA68I,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,+BAA+B,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,wBAAwB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,qDAAqD,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3hW;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE;AACxD,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,aAAa;AACrC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,OAAO;AAC/B,wBAAwB,OAAO;AAC/B,wBAAwB,MAAM;AAC9B,wBAAwB,IAAI;AAC5B,wBAAwB,MAAM;AAC9B,wBAAwB,MAAM;AAC9B,wBAAwB,UAAU;AAClC,wBAAwB,YAAY;AACpC,wBAAwB,WAAW;AACnC,wBAAwB,eAAe;AACvC,wBAAwB,cAAc;AACtC,wBAAwB,eAAe;AACvC,qBAAqB,EAAE,OAAO,EAAE;AAChC,wBAAwB,aAAa;AACrC,wBAAwB,aAAa;AACrC,wBAAwB,gBAAgB;AACxC,wBAAwB,QAAQ;AAChC,wBAAwB,SAAS;AACjC,wBAAwB,gBAAgB;AACxC,wBAAwB,gBAAgB;AACxC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,gBAAgB;AACxC,wBAAwB,aAAa;AACrC,qBAAqB,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;AAC1H,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE;AACnF,wBAAwB,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC5F,wBAAwB,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC3F,wBAAwB,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC5F,wBAAwB,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC3F,wBAAwB,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC7F,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AAC/E,4BAA4B,KAAK,EAAE,IAAI;AACvC,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,uBAAuB;AAC5D,4BAA4B,QAAQ,EAAE,wBAAwB;AAC9D,yBAAyB;AACzB,wBAAwB,cAAc;AACtC,qBAAqB,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;AACnE,wBAAwB,sBAAsB;AAC9C,wBAAwB,gBAAgB;AACxC,wBAAwB,OAAO;AAC/B,wBAAwB,2BAA2B;AACnD,wBAAwB,+BAA+B;AACvD,wBAAwB,eAAe;AACvC,wBAAwB,WAAW;AACnC,wBAAwB,kBAAkB;AAC1C,wBAAwB,SAAS;AACjC,wBAAwB,gBAAgB;AACxC,qBAAqB,EAAE,QAAQ,EAAE,qpIAAqpI,EAAE,MAAM,EAAE,CAAC,68IAA68I,CAAC,EAAE;AACjpR,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC;AAC3C,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;AACtC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;AACnC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;AAClC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,OAAO;AAC9B,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;AACvB,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,eAAe;AACtC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAE,YAAY;AAClC,gBAAgB,IAAI,EAAE,CAAC,oBAAoB;AAC3C,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;AAC/D,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE,YAAY;AAClC,gBAAgB,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;AAC5C,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;AACpC,gBAAgB,IAAI,EAAE,YAAY;AAClC,gBAAgB,IAAI,EAAE,CAAC,OAAO;AAC9B,aAAa,CAAC,EAAE,EAAE,CAAC;;AChjBZ,MAAM,iBAAiB,CAAC;AAC/B,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,YAAY;AACxJ,YAAY,cAAc;AAC1B,YAAY,WAAW;AACvB,YAAY,gBAAgB;AAC5B,YAAY,aAAa;AACzB,YAAY,iBAAiB;AAC7B,YAAY,mBAAmB;AAC/B,YAAY,eAAe;AAC3B,YAAY,eAAe;AAC3B,YAAY,UAAU;AACtB,YAAY,eAAe;AAC3B,YAAY,gBAAgB;AAC5B,YAAY,YAAY;AACxB,YAAY,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;AACtE,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,YAAY;AACxJ,YAAY,cAAc;AAC1B,YAAY,WAAW;AACvB,YAAY,gBAAgB;AAC5B,YAAY,aAAa;AACzB,YAAY,iBAAiB;AAC7B,YAAY,mBAAmB;AAC/B,YAAY,eAAe;AAC3B,YAAY,eAAe;AAC3B,YAAY,UAAU;AACtB,YAAY,eAAe;AAC3B,YAAY,gBAAgB;AAC5B,YAAY,YAAY;AACxB,YAAY,oBAAoB,CAAC,EAAE,CAAC,CAAC;AACrC;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,YAAY;AACpC,wBAAwB,cAAc;AACtC,wBAAwB,WAAW;AACnC,wBAAwB,gBAAgB;AACxC,wBAAwB,aAAa;AACrC,wBAAwB,iBAAiB;AACzC,wBAAwB,mBAAmB;AAC3C,wBAAwB,eAAe;AACvC,wBAAwB,eAAe;AACvC,wBAAwB,UAAU;AAClC,wBAAwB,eAAe;AACvC,wBAAwB,gBAAgB;AACxC,wBAAwB,YAAY;AACpC,wBAAwB,oBAAoB;AAC5C,qBAAqB;AACrB,oBAAoB,OAAO,EAAE,CAAC,oBAAoB,CAAC;AACnD,oBAAoB,SAAS,EAAE,EAAE;AACjC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACrEb;AACA;AACA;;;;"}
|
|
1
|
+
{"version":3,"file":"acorex-components-select-box.mjs","sources":["../tmp-esm2022/select-box/lib/select-box.component.js","../tmp-esm2022/select-box/lib/select-box.module.js","../tmp-esm2022/select-box/acorex-components-select-box.js"],"sourcesContent":["import { AXClearableComponent, AXClosableComponent, AXComponent, AXDataSource, AXFocusableComponent, AXHotkeysService, AXSearchableComponent, AXValuableComponent, AX_SELECTION_DATA_TOKEN, MXLookComponent, MXSelectionBridgeService, MXSelectionValueComponent, convertArrayToDataSource, } from '@acorex/cdk/common';\nimport { AXDecoratorCloseButtonComponent, AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXDropdownBoxComponent, MXDropdownBoxBaseComponent } from '@acorex/components/dropdown';\nimport { AXListComponent } from '@acorex/components/list';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXSearchBoxComponent } from '@acorex/components/search-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, ElementRef, HostListener, Input, TemplateRef, ViewChild, ViewEncapsulation, afterNextRender, computed, forwardRef, inject, input, linkedSignal, signal, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { findLastIndex, get, isEqual, last, nth } from 'lodash-es';\nimport { classes } from 'polytype';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * The Button is a component which detects user interaction and triggers a corresponding event\n * @category\n */\nexport class AXSelectBoxComponent extends classes(MXDropdownBoxBaseComponent, MXSelectionValueComponent, MXLookComponent) {\n constructor() {\n super(...arguments);\n /**\n * Determines if an item is truncated.\n *\n * @defaultValue true\n */\n this.isItemTruncated = input(true, ...(ngDevMode ? [{ debugName: \"isItemTruncated\" }] : []));\n /**\n * Determines if a tooltip is shown for an item.\n *\n * @defaultValue false\n */\n this.showItemTooltip = input(false, ...(ngDevMode ? [{ debugName: \"showItemTooltip\" }] : []));\n /** Height of each list item in pixels, or 'auto' to let list measure. */\n this.itemHeight = input(40, ...(ngDevMode ? [{ debugName: \"itemHeight\" }] : []));\n /** Maximum number of visible items before scrolling. */\n this.maxVisibleItems = input(5, ...(ngDevMode ? [{ debugName: \"maxVisibleItems\" }] : []));\n /** @ignore */\n this.hotKeyService = inject(AXHotkeysService);\n /** @ignore */\n this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /** @ignore */\n this.searchValue = signal('', ...(ngDevMode ? [{ debugName: \"searchValue\" }] : []));\n /** @ignore */\n this.renderList = signal(false, ...(ngDevMode ? [{ debugName: \"renderList\" }] : []));\n /** @ignore */\n this._dropdownWidth = linkedSignal(() => this.dropdownWidth(), ...(ngDevMode ? [{ debugName: \"_dropdownWidth\" }] : []));\n /** @ignore */\n this._dropdownHeight = signal('auto', ...(ngDevMode ? [{ debugName: \"_dropdownHeight\" }] : []));\n /**\n * CSS min-height for the popover list. Uses the sized height when known,\n * otherwise the standard `maxVisibleItems × itemHeight` viewport.\n * @ignore\n */\n this._panelMinHeight = computed(() => {\n const current = this._dropdownHeight();\n if (current !== 'auto') {\n return current;\n }\n return `${this._getStandardListHeightPx()}px`;\n }, ...(ngDevMode ? [{ debugName: \"_panelMinHeight\" }] : []));\n /** @ignore */\n this._listDataSource = convertArrayToDataSource([], {\n key: this.valueField,\n pageSize: 10,\n });\n this.#init = afterNextRender(() => {\n const formField = this.getHostElement().closest('ax-form-field');\n if (formField?.classList.contains('ax-state-floating-label')) {\n this.getHostElement().classList.add('ax-float-label');\n }\n });\n /**\n * The width of the dropdown in pixels.\n * @defaultValue null\n */\n this.dropdownWidth = input(null, ...(ngDevMode ? [{ debugName: \"dropdownWidth\" }] : []));\n this.searchBoxAutoFocus = input(true, ...(ngDevMode ? [{ debugName: \"searchBoxAutoFocus\" }] : []));\n /**\n * Service for managing selection data, injected via `AX_SELECTION_DATA_TOKEN`.\n */\n this.selectionService = inject(AX_SELECTION_DATA_TOKEN);\n /** @ignore */\n this._unsubscriber = inject(AXUnsubscriber);\n }\n #init;\n /**\n * Gets the data source for the component, which can be either an `AXDataSource` or an array of items.\n * @returns {AXDataSource<any> | any[]}\n */\n get dataSource() {\n return this._originalDataSource;\n }\n /**\n * Sets the data source, either as an `AXDataSource` or an array.\n * @param {AXDataSource<any> | any[]} v\n */\n set dataSource(v) {\n // check if the data source is the same\n if (Array.isArray(v) && Array.isArray(this._originalDataSource) && isEqual(v, this._originalDataSource)) {\n return;\n }\n if (v instanceof AXDataSource && v == this._originalDataSource) {\n return;\n }\n //\n this._originalDataSource = v;\n if (Array.isArray(v)) {\n this._listDataSource = convertArrayToDataSource(v, {\n key: this.valueField,\n pageSize: v.length || 10,\n });\n }\n else {\n this._listDataSource = this.dataSource;\n }\n //\n this.onChangedSubscription?.unsubscribe();\n this.onChangedSubscription = this._listDataSource.onChanged\n .pipe(this._unsubscriber.takeUntilDestroy)\n .subscribe(() => {\n this.updateDropdownSize();\n // Force refresh of selected items when data source changes\n this.forceRefreshSelectedItems();\n });\n //\n this.onLoadingChangedSubscription?.unsubscribe();\n this.onLoadingChangedSubscription = this._listDataSource.onLoadingChanged\n .pipe(this._unsubscriber.takeUntilDestroy)\n .subscribe((loading) => {\n this.isLoading.set(loading);\n });\n // After setting data source, try to fetch item data if needed\n setTimeout(() => this.fetchItemDataIfNeeded(), 0);\n }\n /** @ignore */\n ngOnInit() {\n super.ngOnInit();\n //\n this.registerValidation();\n // Proactively fetch item data if we have a value but no corresponding item\n this.fetchItemDataIfNeeded();\n }\n /**\n * Proactively fetches item data if the component has a value but no corresponding item data.\n * This prevents showing \"loading...\" when the component has a value.\n */\n async fetchItemDataIfNeeded() {\n const isEmptyValue = this.value == null || (Array.isArray(this.value) && this.value.length === 0);\n if (!isEmptyValue && this._listDataSource && !this.selectedItems?.length) {\n try {\n const item = await this.getItemByKey(this.value);\n if (item) {\n // Force refresh to update the display\n this.forceRefreshSelectedItems();\n }\n }\n catch (error) {\n console.warn('Failed to fetch item data:', error);\n }\n }\n }\n /** @ignore */\n ngOnDestroy() {\n this.searchBox?.onKeyDown.unsubscribe();\n this.onChangedSubscription?.unsubscribe();\n this.onLoadingChangedSubscription?.unsubscribe();\n }\n /**\n * Retrieves an item by its key.\n * @param {any} key\n */\n getItemByKey(key) {\n // Static array data sources resolve synchronously to avoid a false loading state\n // for primitive values (e.g. color format \"hex\" / \"rgba\").\n if (Array.isArray(this._originalDataSource)) {\n for (const candidate of this._originalDataSource) {\n if (candidate != null && typeof candidate === 'object') {\n if (get(candidate, this.valueField) == key || get(candidate, this.textField) == key) {\n return candidate;\n }\n }\n else if (candidate == key) {\n return { [this.valueField]: candidate, [this.textField]: String(candidate ?? '') };\n }\n }\n return null;\n }\n if (this._listDataSource && typeof this._listDataSource.find === 'function') {\n return this._listDataSource.find(key);\n }\n // If neither method is available, return null\n console.warn('No find method available on data source');\n return null;\n }\n /** @ignore */\n _handleOnOpenedEvent(e) {\n if (!this.renderList()) {\n this.renderList.set(true);\n }\n else if (!this._listDataSource.totalCount || this._listDataSource.totalCount == 0) {\n this.list?.refresh(false);\n }\n this._handleFocus();\n //\n this.onOpened.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n this.updateDropdownSize();\n // Force refresh of selected items when opening to show updated text\n this.forceRefreshSelectedItems();\n }\n /** @ignore */\n _handleOnClosedEvent(e) {\n //this.input.focus();\n this.onClosed.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n this._unsubscriber.unsubscribe();\n }\n /** @ignore */\n _handleFocus() {\n setTimeout(() => {\n if (this.searchBox) {\n this.searchBox.look = 'flat';\n if (this.searchBoxAutoFocus()) {\n this.searchBox.focus();\n }\n //TODO: unsubscribe\n this.hotKeyService\n .addShortcut({ keys: 'Control.f', element: this.panel.nativeElement })\n .pipe(this._unsubscriber.takeUntilDestroy)\n .subscribe(() => {\n this.searchBox.focus();\n });\n this.searchBox.onKeyDown.pipe(this._unsubscriber.takeUntilDestroy).subscribe((e) => {\n if (e.nativeEvent.code === 'ArrowDown' || e.nativeEvent.key === 'ArrowDown') {\n this.list?.focus();\n e.nativeEvent.preventDefault();\n }\n });\n }\n else {\n this.list?.focus();\n }\n });\n }\n /** @ignore */\n _handleBadgeRemove(e, item) {\n this.unselectItems(item);\n e.stopPropagation();\n }\n /** @ignore */\n _handleValueChanged(e) {\n if (e.isUserInteraction) {\n if (!this.multiple) {\n this.close();\n }\n this.commitValue(e.component.selectedItems, true);\n }\n }\n /** @ignore */\n _handleItemClick(e) {\n this.onItemClick.emit(e);\n if (!this.multiple) {\n this.close();\n }\n }\n /** @ignore */\n _handleItemSelected(e) {\n this.onItemSelected.emit(e);\n this.resetSearchAfterSelection();\n if (!this.multiple) {\n this.close();\n }\n }\n resetSearchAfterSelection() {\n if (!this.searchBox && !this.searchBox?.value)\n return;\n if (this.searchBox && this.searchBox?.value)\n this.searchBox.commitValue('', false);\n }\n _getListItemPx() {\n return typeof this.itemHeight() === 'number' ? this.itemHeight() : 40;\n }\n _getMaxVisibleItems() {\n return Math.max(Number(this.maxVisibleItems()) || 5, 1);\n }\n /** Standard popover list height: `maxVisibleItems` rows (default 5). */\n _getStandardListHeightPx() {\n return this._getMaxVisibleItems() * this._getListItemPx();\n }\n /** @ignore */\n setDropdownSize(_count = 0) {\n const itemPx = this._getListItemPx();\n const isActionsheet = this.dropdown.isActionsheetStyle;\n const listHeight = `${this._getStandardListHeightPx()}px`;\n if (isActionsheet) {\n this._dropdownWidth.set('100%');\n this._dropdownHeight.set(listHeight);\n }\n else {\n const hostWidth = Math.max(this.getHostElement().offsetWidth, Number(this.dropdownWidth()) || 0);\n this._dropdownWidth.set(`${hostWidth}px`);\n this._dropdownHeight.set(listHeight);\n }\n setTimeout(() => {\n this._fitListHeightToAvailableSpace(itemPx);\n this.dropdown.updatePosition();\n this.list?.render();\n // Second pass after the overlay pane applies max-height / overflow constraints.\n requestAnimationFrame(() => {\n setTimeout(() => {\n this._fitListHeightToAvailableSpace(itemPx);\n this.list?.render();\n }, 0);\n });\n });\n }\n /**\n * Shrinks list height to the visible overlay area so virtual scroll ends on fully\n * visible rows instead of inside an overflow:hidden clipped region.\n * @ignore\n */\n _fitListHeightToAvailableSpace(itemPx) {\n if (itemPx <= 0 || this._dropdownHeight() === 'auto') {\n return;\n }\n const panel = this.panel?.nativeElement;\n const listEl = this.list?.getHostElement?.();\n if (!panel || !listEl) {\n return;\n }\n const pane = panel.closest('.ax-overlay-pane');\n if (!pane) {\n return;\n }\n const listRect = listEl.getBoundingClientRect();\n const paneRect = pane.getBoundingClientRect();\n const paneOverflow = listRect.bottom - paneRect.bottom;\n const viewportOverflow = listRect.bottom - window.innerHeight;\n const overflow = Math.max(paneOverflow, viewportOverflow);\n let nextHeight = listEl.clientHeight || parseFloat(this._dropdownHeight());\n if (!Number.isFinite(nextHeight) || nextHeight <= 0) {\n return;\n }\n // When the list extends past the overlay pane or screen, shrink it to the visible area.\n if (overflow > 1) {\n nextHeight = Math.max(itemPx, nextHeight - overflow);\n }\n // Keep height as whole rows so the last item is never permanently cropped.\n // Prefer the standard viewport; only go shorter when the overlay/viewport is smaller.\n const standardHeight = this._getStandardListHeightPx();\n const fittedHeight = Math.max(itemPx, Math.floor(nextHeight / itemPx) * itemPx);\n nextHeight = overflow > 1 ? fittedHeight : Math.max(standardHeight, fittedHeight);\n const current = parseFloat(this._dropdownHeight());\n if (!Number.isFinite(current) || nextHeight !== current) {\n this._dropdownHeight.set(`${nextHeight}px`);\n }\n }\n updateDropdownPosition() {\n setTimeout(() => {\n this.dropdown.updatePosition();\n });\n }\n updateDropdownSize() {\n setTimeout(() => {\n this.setDropdownSize(this._listDataSource.totalCount);\n this.updateDropdownPosition();\n this.list?.render();\n if (!this.isItemTruncated()) {\n setTimeout(() => {\n this._fitDropdownToContent();\n setTimeout(() => this._fitDropdownToContent(), 100);\n });\n }\n });\n }\n _fitDropdownToContent() {\n const panel = this.panel?.nativeElement;\n if (!panel)\n return;\n const hostWidth = Math.max(this.getHostElement().offsetWidth, Number(this.dropdownWidth()) || 0);\n let contentWidth = hostWidth;\n panel.querySelectorAll('li.list-item').forEach((item) => {\n const label = item.querySelector('.ax-label-container span');\n if (label) {\n const labelContainer = label.parentElement;\n const horizontalPadding = labelContainer ? item.offsetWidth - labelContainer.clientWidth : 0;\n contentWidth = Math.max(contentWidth, label.scrollWidth + horizontalPadding);\n }\n else {\n contentWidth = Math.max(contentWidth, item.scrollWidth);\n }\n });\n const nextWidth = `${Math.max(hostWidth, contentWidth)}px`;\n if (this._dropdownWidth() !== nextWidth) {\n this._dropdownWidth.set(nextWidth);\n this.dropdown.updatePosition();\n }\n }\n internalValueChanged(value) {\n super.internalValueChanged(value);\n this.updateDropdownPosition();\n // Try to fetch item data when value changes\n setTimeout(() => this.fetchItemDataIfNeeded(), 0);\n }\n /** @ignore */\n _handleKeydown(e) {\n if (e.code === 'ArrowDown' || e.code === 'ArrowUp') {\n this.selectItemByNav(e.code === 'ArrowDown' ? 1 : -1);\n e.preventDefault();\n }\n else if (e.code === 'Backspace') {\n this.unselectItems(this.selectedItems.pop());\n e.preventDefault();\n }\n // if ((e.code === 'Space' || e.code === 'Enter') && this.hasItems) {\n // if (this.readonly || this.disabled) {\n // e.preventDefault();\n // e.stopPropagation();\n // return;\n // }\n // const id = document.activeElement?.closest('li')?.dataset?.id;\n // this.toggleSelect(id);\n // e.preventDefault();\n // e.stopPropagation()\n // }\n }\n /** @ignore */\n selectItemByNav(sign) {\n if (Array.isArray(this.dataSource) && !this.multiple) {\n const items = this.normalizeItemsList(this.dataSource);\n const _last = last(this.selectedItems);\n let i = -1;\n if (_last) {\n i = findLastIndex(items, [this.valueField, get(_last, this.valueField)]);\n }\n i += sign;\n if (i < 0 || i >= items.length)\n return;\n const next = nth(items, i);\n if (next) {\n this.selectItems(next);\n }\n }\n else {\n this.open();\n }\n }\n /**\n * Filters the data source based on the provided search term.\n * @param {string} term\n */\n search(term) {\n this.searchValue.set(term);\n if (term) {\n this._listDataSource.filter({\n field: this.textField,\n value: term,\n operator: { type: 'contains' },\n });\n }\n else {\n this._listDataSource.clearFilter();\n }\n this._listDataSource.refresh();\n }\n /**\n * Refreshes the component by resetting state, clearing selection cache, refreshing the list, and closing the component.\n */\n refresh() {\n this.reset(false);\n this.clearSelectionCache();\n this.list?.refresh();\n this.close();\n }\n hostClickListener() {\n this.toggle();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXSelectBoxComponent, isStandalone: true, selector: \"ax-select-box\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: false, isRequired: false, transformFunction: null }, minValue: { classPropertyName: \"minValue\", publicName: \"minValue\", isSignal: false, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: \"maxValue\", publicName: \"maxValue\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: \"state\", publicName: \"state\", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: false, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: \"multiple\", publicName: \"multiple\", isSignal: false, isRequired: false, transformFunction: null }, valueField: { classPropertyName: \"valueField\", publicName: \"valueField\", isSignal: false, isRequired: false, transformFunction: null }, textField: { classPropertyName: \"textField\", publicName: \"textField\", isSignal: false, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: \"disabledField\", publicName: \"disabledField\", isSignal: false, isRequired: false, transformFunction: null }, textTemplate: { classPropertyName: \"textTemplate\", publicName: \"textTemplate\", isSignal: false, isRequired: false, transformFunction: null }, selectedItems: { classPropertyName: \"selectedItems\", publicName: \"selectedItems\", isSignal: false, isRequired: false, transformFunction: null }, isItemTruncated: { classPropertyName: \"isItemTruncated\", publicName: \"isItemTruncated\", isSignal: true, isRequired: false, transformFunction: null }, showItemTooltip: { classPropertyName: \"showItemTooltip\", publicName: \"showItemTooltip\", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: \"itemHeight\", publicName: \"itemHeight\", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleItems: { classPropertyName: \"maxVisibleItems\", publicName: \"maxVisibleItems\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: false, isRequired: false, transformFunction: null }, minRecordsForSearch: { classPropertyName: \"minRecordsForSearch\", publicName: \"minRecordsForSearch\", isSignal: false, isRequired: false, transformFunction: null }, caption: { classPropertyName: \"caption\", publicName: \"caption\", isSignal: false, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: false, isRequired: false, transformFunction: null }, selectedTemplate: { classPropertyName: \"selectedTemplate\", publicName: \"selectedTemplate\", isSignal: false, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: false, isRequired: false, transformFunction: null }, loadingTemplate: { classPropertyName: \"loadingTemplate\", publicName: \"loadingTemplate\", isSignal: false, isRequired: false, transformFunction: null }, dropdownWidth: { classPropertyName: \"dropdownWidth\", publicName: \"dropdownWidth\", isSignal: true, isRequired: false, transformFunction: null }, searchBoxAutoFocus: { classPropertyName: \"searchBoxAutoFocus\", publicName: \"searchBoxAutoFocus\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", stateChange: \"stateChange\", onValueChanged: \"onValueChanged\", onBlur: \"onBlur\", onFocus: \"onFocus\", readonlyChange: \"readonlyChange\", disabledChange: \"disabledChange\", onOpened: \"onOpened\", onClosed: \"onClosed\", onItemSelected: \"onItemSelected\", onItemClick: \"onItemClick\" }, host: { attributes: { \"ngSkipHydration\": \"true\" }, listeners: { \"keydown\": \"_handleKeydown($event)\", \"click\": \"hostClickListener()\" } }, providers: [\n { provide: AXComponent, useExisting: AXSelectBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXValuableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXClearableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXClosableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXSearchableComponent, useExisting: AXSelectBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXSelectBoxComponent),\n multi: true,\n },\n {\n provide: AX_SELECTION_DATA_TOKEN,\n useClass: MXSelectionBridgeService,\n },\n AXUnsubscriber,\n ], queries: [{ propertyName: \"searchBox\", first: true, predicate: AXSearchBoxComponent, descendants: true }], viewQueries: [{ propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }, { propertyName: \"list\", first: true, predicate: AXListComponent, descendants: true }, { propertyName: \"dropdown\", first: true, predicate: AXDropdownBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<ax-dropdown-box\\n [class.ax-state-multiple]=\\\"multiple\\\"\\n (onOpened)=\\\"_handleOnOpenedEvent($event)\\\"\\n (onClosed)=\\\"_handleOnClosedEvent($event)\\\"\\n (focus)=\\\"emitOnFocusEvent($event)\\\"\\n (blur)=\\\"emitOnBlurEvent($event)\\\"\\n [disabled]=\\\"disabled\\\"\\n [look]=\\\"look\\\"\\n [popoverWidth]=\\\"dropdownWidth()\\\"\\n>\\n <ng-container input>\\n <ng-content select=\\\"ax-prefix\\\"> </ng-content>\\n <div\\n class=\\\"ax-editor ax-chips-container ax-content ax-input\\\"\\n [class.ax-state-multiple]=\\\"multiple\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n >\\n @if (selectedItems.length === 0) {\\n <div class=\\\"ax-placeholder\\\" role=\\\"textbox\\\" area-readonly=\\\"true\\\">\\n {{ placeholder | translate | async }}\\n </div>\\n }\\n @for (item of selectedItems; track $index) {\\n @if (selectedTemplate) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"selectedTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item } }\\\"\\n ></ng-template>\\n } @else {\\n <div class=\\\"ax-chips\\\">\\n {{ getDisplayText(item) | translate | async }}\\n @if (!disabled && !readonly && multiple) {\\n <span class=\\\"ax-icon ax-icon-close\\\" (click)=\\\"_handleBadgeRemove($event, item)\\\"> </span>\\n }\\n </div>\\n }\\n }\\n </div>\\n @if (selectedItems?.length && !disabled && !readonly) {\\n <ng-content select=\\\"ax-clear-button\\\"></ng-content>\\n }\\n <button type=\\\"button\\\" [disabled]=\\\"disabled\\\" [tabIndex]=\\\"-1\\\" class=\\\"ax-editor-button\\\">\\n @if (isLoading()) {\\n <ax-loading></ax-loading>\\n } @else {\\n <span\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-down': !isOpen,\\n 'ax-icon-chevron-up': isOpen,\\n }\\\"\\n ></span>\\n }\\n </button>\\n <ng-content select=\\\"ax-suffix\\\"> </ng-content>\\n <ng-template #search>\\n <ng-content select=\\\"ax-search-box\\\"> </ng-content>\\n </ng-template>\\n </ng-container>\\n <ng-container panel>\\n <div\\n #panel\\n class=\\\"ax-select-box-panel\\\"\\n [class.ax-no-truncate]=\\\"!isItemTruncated()\\\"\\n [style.min-width]=\\\"_dropdownWidth()\\\"\\n [style.--ax-comp-select-box-panel-min-height]=\\\"_panelMinHeight()\\\"\\n >\\n @if (dropdown.isActionsheetStyle) {\\n <ax-header class=\\\"ax-solid\\\">\\n <ax-title>{{ caption || placeholder || '@acorex:selectbox.popover.title' | translate | async }}</ax-title>\\n <ax-close-button [icon]=\\\"multiple ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\\\"></ax-close-button>\\n </ax-header>\\n }\\n @if (searchBox && (!minRecordsForSearch || _listDataSource.totalCount >= minRecordsForSearch || searchValue())) {\\n <div class=\\\"ax-search-container\\\">\\n <ng-template [ngTemplateOutlet]=\\\"search\\\"></ng-template>\\n </div>\\n }\\n @if (renderList()) {\\n <ax-list\\n [name]=\\\"name\\\"\\n [ngModel]=\\\"value\\\"\\n [readonly]=\\\"readonly\\\"\\n [multiple]=\\\"multiple\\\"\\n [textField]=\\\"textField\\\"\\n [selectionMode]=\\\"'item'\\\"\\n [valueField]=\\\"valueField\\\"\\n [itemHeight]=\\\"itemHeight()\\\"\\n [itemTemplate]=\\\"itemTemplate\\\"\\n [textTemplate]=\\\"textTemplate\\\"\\n [dataSource]=\\\"_listDataSource\\\"\\n [style.height]=\\\"_dropdownHeight()\\\"\\n [loadingTemplate]=\\\"loadingTemplate\\\"\\n [isItemTruncated]=\\\"isItemTruncated()\\\"\\n [showItemTooltip]=\\\"showItemTooltip()\\\"\\n (onItemClick)=\\\"_handleItemClick($event)\\\"\\n [emptyTemplate]=\\\"emptyTemplate ?? empty\\\"\\n (onValueChanged)=\\\"_handleValueChanged($event)\\\"\\n (onItemSelected)=\\\"_handleItemSelected($event)\\\"\\n >\\n </ax-list>\\n <ng-template #empty>\\n {{ '@acorex:common.general.no-result-found' | translate | async }}\\n </ng-template>\\n }\\n\\n @if (isLoading()) {\\n @if (loadingTemplate) {\\n <ng-template [ngTemplateOutlet]=\\\"loadingTemplate\\\"></ng-template>\\n }\\n }\\n\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n </div>\\n </ng-container>\\n</ax-dropdown-box>\\n<ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n\", styles: [\".ax-editor-container.ax-fill .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surfaceest);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-flat .ax-chips,.ax-editor-container.ax-outline .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-solid .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-light-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-light-surface)}ax-select-box .ax-chips-container{outline:0px solid transparent}.ax-select-box-panel{--ax-comp-select-box-panel-min-height: calc(var(--ax-sys-size-base) * 5)}.ax-xs ax-select-box,ax-select-box.ax-xs{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .625rem;--ax-comp-editor-placeholder-space-x: .375rem}.ax-sm ax-select-box,ax-select-box.ax-sm{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .75rem;--ax-comp-editor-placeholder-space-x: .5rem}ax-select-box,ax-select-box.ax-md{--ax-comp-select-box-chips-padding-x: .5rem;--ax-comp-select-box-chips-padding-y: .25rem;--ax-comp-select-box-chips-font-size: .875rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-lg ax-select-box,ax-select-box.ax-lg{--ax-comp-select-box-chips-padding-x: .75rem;--ax-comp-select-box-chips-padding-y: .5rem;--ax-comp-select-box-chips-font-size: 1rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-xl ax-select-box,ax-select-box.ax-xl{--ax-comp-select-box-chips-padding-x: .875rem;--ax-comp-select-box-chips-padding-y: .75rem;--ax-comp-select-box-chips-font-size: 1.125rem;--ax-comp-editor-placeholder-space-x: .75rem}ax-select-box{display:block;width:100%;border-radius:var(--ax-sys-border-radius)}ax-select-box.ax-float-label .ax-editor{padding-top:1.75rem!important}ax-select-box .ax-state-disabled{opacity:.5;cursor:not-allowed}ax-select-box .ax-state-disabled .ax-content,ax-select-box .ax-state-disabled .ax-editor-button{cursor:not-allowed}ax-select-box .ax-state-disabled .ax-chips-container{cursor:not-allowed!important}ax-select-box ax-dropdown-box{border-radius:inherit!important}ax-select-box ax-dropdown-box.ax-state-multiple{height:auto;min-height:var(--ax-comp-editor-height);--ax-comp-editor-space-start-size: 0}ax-select-box ax-dropdown-box.ax-state-multiple .ax-placeholder{padding:0 var(--ax-comp-editor-placeholder-space-x)}ax-select-box .ax-chips-container{display:flex;flex:1 1 0%;min-width:0;cursor:pointer!important;-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--ax-comp-select-box-chips-gap, .25rem);min-height:var(--ax-sys-size-base)}ax-select-box .ax-chips-container .ax-chips{display:block;overflow:hidden;text-wrap:nowrap;line-height:normal;text-overflow:ellipsis;padding:0 var(--ax-comp-editor-padding-x, .25rem);color:rgb(var(--ax-comp-select-box-chips-text-color));font-size:var(--ax-comp-select-box-chips-font-size)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips{background-color:rgb(var(--ax-comp-select-box-chips-bg-color));border-radius:var(--ax-comp-select-box-chips-border-radius, 999rem);border-width:var(--ax-comp-select-box-chips-border-width, 0px);padding:var(--ax-comp-select-box-chips-padding-y, .25rem) var(--ax-comp-select-box-chips-padding-x, .5rem)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips .ax-icon-close{cursor:pointer;margin-inline-start:var(--ax-comp-select-box-chips-padding-x)}ax-select-box .ax-chips-container .ax-selectbox-input{width:0px;opacity:0}ax-select-box .ax-chips-container.ax-state-multiple:has(.ax-chips){padding:var(--ax-comp-select-box-chips-container-padding, .25rem)}.ax-select-box-panel{display:flex;flex-direction:column;height:fit-content;min-height:var(--ax-comp-select-box-panel-min-height);max-height:100%;overflow:hidden}.ax-select-box-panel.ax-no-truncate .ax-label-container span:not(.ax-truncated){white-space:nowrap}.ax-select-box-panel .ax-select-box-loading-container{display:flex;align-items:center;justify-content:center;padding:1rem}.ax-select-box-panel ax-list{flex:1 1 auto;min-height:var(--ax-comp-select-box-panel-min-height)}.ax-select-box-panel ax-list .empty-container{min-height:var(--ax-comp-select-box-panel-min-height)}.ax-select-box-panel>ax-header .ax-icon-check{color:rgba(var(--ax-sys-color-primary-500))}.ax-select-box-panel>ax-header.ax-solid{border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}.ax-select-box-panel>ax-header.ax-solid ax-title{font-size:1rem;line-height:1.5rem;font-weight:500}@media(max-width:40rem){.ax-select-box-panel .list-item{padding-inline:1rem}}\\n\"], dependencies: [{ kind: \"component\", type: AXDropdownBoxComponent, selector: \"ax-dropdown-box\", inputs: [\"disabled\", \"look\", \"hasInput\", \"popoverWidth\"], outputs: [\"disabledChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onOpened\", \"onClosed\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXDecoratorCloseButtonComponent, selector: \"ax-close-button\", inputs: [\"closeAll\", \"icon\"] }, { kind: \"component\", type: AXListComponent, selector: \"ax-list\", inputs: [\"id\", \"name\", \"disabled\", \"readonly\", \"valueField\", \"textField\", \"textTemplate\", \"disabledField\", \"multiple\", \"selectionMode\", \"isItemTruncated\", \"showItemTooltip\", \"dataSource\", \"itemHeight\", \"itemTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"checkbox\"], outputs: [\"onValueChanged\", \"disabledChange\", \"readonlyChange\", \"onBlur\", \"onFocus\", \"onItemClick\", \"onItemSelected\", \"onScrolledIndexChanged\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-select-box', inputs: [\n 'disabled',\n 'readonly',\n 'tabIndex',\n 'placeholder',\n 'minValue',\n 'maxValue',\n 'value',\n 'state',\n 'name',\n 'id',\n 'type',\n 'look',\n 'multiple',\n 'valueField',\n 'textField',\n 'disabledField',\n 'textTemplate',\n 'selectedItems',\n ], outputs: [\n 'valueChange',\n 'stateChange',\n 'onValueChanged',\n 'onBlur',\n 'onFocus',\n 'readonlyChange',\n 'disabledChange',\n 'onOpened',\n 'onClosed',\n 'onItemSelected',\n 'onItemClick',\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n { provide: AXComponent, useExisting: AXSelectBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXValuableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXClearableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXClosableComponent, useExisting: AXSelectBoxComponent },\n { provide: AXSearchableComponent, useExisting: AXSelectBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXSelectBoxComponent),\n multi: true,\n },\n {\n provide: AX_SELECTION_DATA_TOKEN,\n useClass: MXSelectionBridgeService,\n },\n AXUnsubscriber,\n ], host: { ngSkipHydration: 'true' }, imports: [\n AXDropdownBoxComponent,\n NgTemplateOutlet,\n NgClass,\n AXDecoratorGenericComponent,\n AXDecoratorCloseButtonComponent,\n AXListComponent,\n FormsModule,\n AXLoadingComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ], template: \"<ax-dropdown-box\\n [class.ax-state-multiple]=\\\"multiple\\\"\\n (onOpened)=\\\"_handleOnOpenedEvent($event)\\\"\\n (onClosed)=\\\"_handleOnClosedEvent($event)\\\"\\n (focus)=\\\"emitOnFocusEvent($event)\\\"\\n (blur)=\\\"emitOnBlurEvent($event)\\\"\\n [disabled]=\\\"disabled\\\"\\n [look]=\\\"look\\\"\\n [popoverWidth]=\\\"dropdownWidth()\\\"\\n>\\n <ng-container input>\\n <ng-content select=\\\"ax-prefix\\\"> </ng-content>\\n <div\\n class=\\\"ax-editor ax-chips-container ax-content ax-input\\\"\\n [class.ax-state-multiple]=\\\"multiple\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n >\\n @if (selectedItems.length === 0) {\\n <div class=\\\"ax-placeholder\\\" role=\\\"textbox\\\" area-readonly=\\\"true\\\">\\n {{ placeholder | translate | async }}\\n </div>\\n }\\n @for (item of selectedItems; track $index) {\\n @if (selectedTemplate) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"selectedTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item } }\\\"\\n ></ng-template>\\n } @else {\\n <div class=\\\"ax-chips\\\">\\n {{ getDisplayText(item) | translate | async }}\\n @if (!disabled && !readonly && multiple) {\\n <span class=\\\"ax-icon ax-icon-close\\\" (click)=\\\"_handleBadgeRemove($event, item)\\\"> </span>\\n }\\n </div>\\n }\\n }\\n </div>\\n @if (selectedItems?.length && !disabled && !readonly) {\\n <ng-content select=\\\"ax-clear-button\\\"></ng-content>\\n }\\n <button type=\\\"button\\\" [disabled]=\\\"disabled\\\" [tabIndex]=\\\"-1\\\" class=\\\"ax-editor-button\\\">\\n @if (isLoading()) {\\n <ax-loading></ax-loading>\\n } @else {\\n <span\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-down': !isOpen,\\n 'ax-icon-chevron-up': isOpen,\\n }\\\"\\n ></span>\\n }\\n </button>\\n <ng-content select=\\\"ax-suffix\\\"> </ng-content>\\n <ng-template #search>\\n <ng-content select=\\\"ax-search-box\\\"> </ng-content>\\n </ng-template>\\n </ng-container>\\n <ng-container panel>\\n <div\\n #panel\\n class=\\\"ax-select-box-panel\\\"\\n [class.ax-no-truncate]=\\\"!isItemTruncated()\\\"\\n [style.min-width]=\\\"_dropdownWidth()\\\"\\n [style.--ax-comp-select-box-panel-min-height]=\\\"_panelMinHeight()\\\"\\n >\\n @if (dropdown.isActionsheetStyle) {\\n <ax-header class=\\\"ax-solid\\\">\\n <ax-title>{{ caption || placeholder || '@acorex:selectbox.popover.title' | translate | async }}</ax-title>\\n <ax-close-button [icon]=\\\"multiple ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\\\"></ax-close-button>\\n </ax-header>\\n }\\n @if (searchBox && (!minRecordsForSearch || _listDataSource.totalCount >= minRecordsForSearch || searchValue())) {\\n <div class=\\\"ax-search-container\\\">\\n <ng-template [ngTemplateOutlet]=\\\"search\\\"></ng-template>\\n </div>\\n }\\n @if (renderList()) {\\n <ax-list\\n [name]=\\\"name\\\"\\n [ngModel]=\\\"value\\\"\\n [readonly]=\\\"readonly\\\"\\n [multiple]=\\\"multiple\\\"\\n [textField]=\\\"textField\\\"\\n [selectionMode]=\\\"'item'\\\"\\n [valueField]=\\\"valueField\\\"\\n [itemHeight]=\\\"itemHeight()\\\"\\n [itemTemplate]=\\\"itemTemplate\\\"\\n [textTemplate]=\\\"textTemplate\\\"\\n [dataSource]=\\\"_listDataSource\\\"\\n [style.height]=\\\"_dropdownHeight()\\\"\\n [loadingTemplate]=\\\"loadingTemplate\\\"\\n [isItemTruncated]=\\\"isItemTruncated()\\\"\\n [showItemTooltip]=\\\"showItemTooltip()\\\"\\n (onItemClick)=\\\"_handleItemClick($event)\\\"\\n [emptyTemplate]=\\\"emptyTemplate ?? empty\\\"\\n (onValueChanged)=\\\"_handleValueChanged($event)\\\"\\n (onItemSelected)=\\\"_handleItemSelected($event)\\\"\\n >\\n </ax-list>\\n <ng-template #empty>\\n {{ '@acorex:common.general.no-result-found' | translate | async }}\\n </ng-template>\\n }\\n\\n @if (isLoading()) {\\n @if (loadingTemplate) {\\n <ng-template [ngTemplateOutlet]=\\\"loadingTemplate\\\"></ng-template>\\n }\\n }\\n\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n </div>\\n </ng-container>\\n</ax-dropdown-box>\\n<ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n\", styles: [\".ax-editor-container.ax-fill .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surfaceest);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-flat .ax-chips,.ax-editor-container.ax-outline .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-surface-high)}.ax-editor-container.ax-solid .ax-chips{--ax-comp-select-box-chips-bg-color: var(--ax-sys-color-light-surface);--ax-comp-select-box-chips-text-color: var(--ax-sys-color-on-light-surface)}ax-select-box .ax-chips-container{outline:0px solid transparent}.ax-select-box-panel{--ax-comp-select-box-panel-min-height: calc(var(--ax-sys-size-base) * 5)}.ax-xs ax-select-box,ax-select-box.ax-xs{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .625rem;--ax-comp-editor-placeholder-space-x: .375rem}.ax-sm ax-select-box,ax-select-box.ax-sm{--ax-comp-select-box-chips-padding-x: .25rem;--ax-comp-select-box-chips-padding-y: .125rem;--ax-comp-select-box-chips-font-size: .75rem;--ax-comp-editor-placeholder-space-x: .5rem}ax-select-box,ax-select-box.ax-md{--ax-comp-select-box-chips-padding-x: .5rem;--ax-comp-select-box-chips-padding-y: .25rem;--ax-comp-select-box-chips-font-size: .875rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-lg ax-select-box,ax-select-box.ax-lg{--ax-comp-select-box-chips-padding-x: .75rem;--ax-comp-select-box-chips-padding-y: .5rem;--ax-comp-select-box-chips-font-size: 1rem;--ax-comp-editor-placeholder-space-x: .75rem}.ax-xl ax-select-box,ax-select-box.ax-xl{--ax-comp-select-box-chips-padding-x: .875rem;--ax-comp-select-box-chips-padding-y: .75rem;--ax-comp-select-box-chips-font-size: 1.125rem;--ax-comp-editor-placeholder-space-x: .75rem}ax-select-box{display:block;width:100%;border-radius:var(--ax-sys-border-radius)}ax-select-box.ax-float-label .ax-editor{padding-top:1.75rem!important}ax-select-box .ax-state-disabled{opacity:.5;cursor:not-allowed}ax-select-box .ax-state-disabled .ax-content,ax-select-box .ax-state-disabled .ax-editor-button{cursor:not-allowed}ax-select-box .ax-state-disabled .ax-chips-container{cursor:not-allowed!important}ax-select-box ax-dropdown-box{border-radius:inherit!important}ax-select-box ax-dropdown-box.ax-state-multiple{height:auto;min-height:var(--ax-comp-editor-height);--ax-comp-editor-space-start-size: 0}ax-select-box ax-dropdown-box.ax-state-multiple .ax-placeholder{padding:0 var(--ax-comp-editor-placeholder-space-x)}ax-select-box .ax-chips-container{display:flex;flex:1 1 0%;min-width:0;cursor:pointer!important;-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--ax-comp-select-box-chips-gap, .25rem);min-height:var(--ax-sys-size-base)}ax-select-box .ax-chips-container .ax-chips{display:block;overflow:hidden;text-wrap:nowrap;line-height:normal;text-overflow:ellipsis;padding:0 var(--ax-comp-editor-padding-x, .25rem);color:rgb(var(--ax-comp-select-box-chips-text-color));font-size:var(--ax-comp-select-box-chips-font-size)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips{background-color:rgb(var(--ax-comp-select-box-chips-bg-color));border-radius:var(--ax-comp-select-box-chips-border-radius, 999rem);border-width:var(--ax-comp-select-box-chips-border-width, 0px);padding:var(--ax-comp-select-box-chips-padding-y, .25rem) var(--ax-comp-select-box-chips-padding-x, .5rem)}ax-select-box .ax-chips-container.ax-state-multiple .ax-chips .ax-icon-close{cursor:pointer;margin-inline-start:var(--ax-comp-select-box-chips-padding-x)}ax-select-box .ax-chips-container .ax-selectbox-input{width:0px;opacity:0}ax-select-box .ax-chips-container.ax-state-multiple:has(.ax-chips){padding:var(--ax-comp-select-box-chips-container-padding, .25rem)}.ax-select-box-panel{display:flex;flex-direction:column;height:fit-content;min-height:var(--ax-comp-select-box-panel-min-height);max-height:100%;overflow:hidden}.ax-select-box-panel.ax-no-truncate .ax-label-container span:not(.ax-truncated){white-space:nowrap}.ax-select-box-panel .ax-select-box-loading-container{display:flex;align-items:center;justify-content:center;padding:1rem}.ax-select-box-panel ax-list{flex:1 1 auto;min-height:var(--ax-comp-select-box-panel-min-height)}.ax-select-box-panel ax-list .empty-container{min-height:var(--ax-comp-select-box-panel-min-height)}.ax-select-box-panel>ax-header .ax-icon-check{color:rgba(var(--ax-sys-color-primary-500))}.ax-select-box-panel>ax-header.ax-solid{border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}.ax-select-box-panel>ax-header.ax-solid ax-title{font-size:1rem;line-height:1.5rem;font-weight:500}@media(max-width:40rem){.ax-select-box-panel .list-item{padding-inline:1rem}}\\n\"] }]\n }], propDecorators: { dataSource: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], minRecordsForSearch: [{\n type: Input\n }], caption: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], selectedTemplate: [{\n type: Input\n }], emptyTemplate: [{\n type: Input\n }], loadingTemplate: [{\n type: Input\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], list: [{\n type: ViewChild,\n args: [AXListComponent]\n }], searchBox: [{\n type: ContentChild,\n args: [AXSearchBoxComponent]\n }], dropdown: [{\n type: ViewChild,\n args: [AXDropdownBoxComponent, { static: true }]\n }], _handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], hostClickListener: [{\n type: HostListener,\n args: ['click']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3NlbGVjdC1ib3gvc3JjL2xpYi9zZWxlY3QtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvc2VsZWN0LWJveC9zcmMvbGliL3NlbGVjdC1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLFlBQVksRUFFWixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBR2hCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFFbkIsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHdCQUF3QixHQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZ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dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXVFM0IsaUJBQWlCO3NCQUR4QixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENsZWFyYWJsZUNvbXBvbmVudCxcbiAgQVhDbG9zYWJsZUNvbXBvbmVudCxcbiAgQVhDb21wb25lbnQsXG4gIEFYRGF0YVNvdXJjZSxcbiAgQVhFdmVudCxcbiAgQVhGb2N1c2FibGVDb21wb25lbnQsXG4gIEFYSG90a2V5c1NlcnZpY2UsXG4gIEFYSXRlbUNsaWNrRXZlbnQsXG4gIEFYSXRlbVNlbGVjdGVkRXZlbnQsXG4gIEFYU2VhcmNoYWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1ZUNoYW5nZWRFdmVudCxcbiAgQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU4sXG4gIE1YTG9va0NvbXBvbmVudCxcbiAgTVhTZWxlY3Rpb25CcmlkZ2VTZXJ2aWNlLFxuICBNWFNlbGVjdGlvblZhbHVlQ29tcG9uZW50LFxuICBjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckNsb3NlQnV0dG9uQ29tcG9uZW50LCBBWERlY29yYXRvckdlbmVyaWNDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duQm94Q29tcG9uZW50LCBNWERyb3Bkb3duQm94QmFzZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWExpc3RDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGlzdCc7XG5pbXBvcnQgeyBBWExvYWRpbmdDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFNlYXJjaEJveENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWFyY2gtYm94JztcbmltcG9ydCB7IEFYVHJhbnNsYXRvclBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBjb21wdXRlZCxcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbGlua2VkU2lnbmFsLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmluZExhc3RJbmRleCwgZ2V0LCBpc0VxdWFsLCBsYXN0LCBudGggfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFRoZSBCdXR0b24gaXMgYSBjb21wb25lbnQgd2hpY2ggZGV0ZWN0cyB1c2VyIGludGVyYWN0aW9uIGFuZCB0cmlnZ2VycyBhIGNvcnJlc3BvbmRpbmcgZXZlbnRcbiAqIEBjYXRlZ29yeVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1zZWxlY3QtYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc3R5bGVzL2luZGV4LnNjc3MnLFxuICBpbnB1dHM6IFtcbiAgICAnZGlzYWJsZWQnLFxuICAgICdyZWFkb25seScsXG4gICAgJ3RhYkluZGV4JyxcbiAgICAncGxhY2Vob2xkZXInLFxuICAgICdtaW5WYWx1ZScsXG4gICAgJ21heFZhbHVlJyxcbiAgICAndmFsdWUnLFxuICAgICdzdGF0ZScsXG4gICAgJ25hbWUnLFxuICAgICdpZCcsXG4gICAgJ3R5cGUnLFxuICAgICdsb29rJyxcbiAgICAnbXVsdGlwbGUnLFxuICAgICd2YWx1ZUZpZWxkJyxcbiAgICAndGV4dEZpZWxkJyxcbiAgICAnZGlzYWJsZWRGaWVsZCcsXG4gICAgJ3RleHRUZW1wbGF0ZScsXG4gICAgJ3NlbGVjdGVkSXRlbXMnLFxuICBdLFxuICBvdXRwdXRzOiBbXG4gICAgJ3ZhbHVlQ2hhbmdlJyxcbiAgICAnc3RhdGVDaGFuZ2UnLFxuICAgICdvblZhbHVlQ2hhbmdlZCcsXG4gICAgJ29uQmx1cicsXG4gICAgJ29uRm9jdXMnLFxuICAgICdyZWFkb25seUNoYW5nZScsXG4gICAgJ2Rpc2FibGVkQ2hhbmdlJyxcbiAgICAnb25PcGVuZWQnLFxuICAgICdvbkNsb3NlZCcsXG4gICAgJ29uSXRlbVNlbGVjdGVkJyxcbiAgICAnb25JdGVtQ2xpY2snLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYU2VsZWN0Qm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWEZvY3VzYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYU2VsZWN0Qm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhTZWxlY3RCb3hDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYQ2xlYXJhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhTZWxlY3RCb3hDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYQ2xvc2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFNlbGVjdEJveENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhTZWFyY2hhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhTZWxlY3RCb3hDb21wb25lbnQgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFYU2VsZWN0Qm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU4sXG4gICAgICB1c2VDbGFzczogTVhTZWxlY3Rpb25CcmlkZ2VTZXJ2aWNlLFxuICAgIH0sXG4gICAgQVhVbnN1YnNjcmliZXIsXG4gIF0sXG4gIGhvc3Q6IHsgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScgfSxcbiAgaW1wb3J0czogW1xuICAgIEFYRHJvcGRvd25Cb3hDb21wb25lbnQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBOZ0NsYXNzLFxuICAgIEFYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCxcbiAgICBBWERlY29yYXRvckNsb3NlQnV0dG9uQ29tcG9uZW50LFxuICAgIEFYTGlzdENvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWExvYWRpbmdDb21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIEFYVHJhbnNsYXRvclBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYU2VsZWN0Qm94Q29tcG9uZW50XG4gIGV4dGVuZHMgY2xhc3NlcyhNWERyb3Bkb3duQm94QmFzZUNvbXBvbmVudCwgTVhTZWxlY3Rpb25WYWx1ZUNvbXBvbmVudCwgTVhMb29rQ29tcG9uZW50KVxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhbiBpdGVtIGlzIHRydW5jYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSB0cnVlXG4gICAqL1xuICByZWFkb25seSBpc0l0ZW1UcnVuY2F0ZWQgPSBpbnB1dCh0cnVlKTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIHRvb2x0aXAgaXMgc2hvd24gZm9yIGFuIGl0ZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNob3dJdGVtVG9vbHRpcCA9IGlucHV0KGZhbHNlKTtcblxuICAvKiogSGVpZ2h0IG9mIGVhY2ggbGlzdCBpdGVtIGluIHBpeGVscywgb3IgJ2F1dG8nIHRvIGxldCBsaXN0IG1lYXN1cmUuICovXG4gIGl0ZW1IZWlnaHQgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KDQwKTtcblxuICAvKiogTWF4aW11bSBudW1iZXIgb2YgdmlzaWJsZSBpdGVtcyBiZWZvcmUgc2Nyb2xsaW5nLiAqL1xuICBtYXhWaXNpYmxlSXRlbXMgPSBpbnB1dCg1KTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGhvdEtleVNlcnZpY2U6IEFYSG90a2V5c1NlcnZpY2UgPSBpbmplY3QoQVhIb3RrZXlzU2VydmljZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHNlYXJjaFZhbHVlID0gc2lnbmFsKCcnKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyTGlzdCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIF9kcm9wZG93bldpZHRoID0gbGlua2VkU2lnbmFsPHN0cmluZz4oKCkgPT4gdGhpcy5kcm9wZG93bldpZHRoKCkpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfZHJvcGRvd25IZWlnaHQgPSBzaWduYWw8c3RyaW5nPignYXV0bycpO1xuXG4gIC8qKlxuICAgKiBDU1MgbWluLWhlaWdodCBmb3IgdGhlIHBvcG92ZXIgbGlzdC4gVXNlcyB0aGUgc2l6ZWQgaGVpZ2h0IHdoZW4ga25vd24sXG4gICAqIG90aGVyd2lzZSB0aGUgc3RhbmRhcmQgYG1heFZpc2libGVJdGVtcyDDlyBpdGVtSGVpZ2h0YCB2aWV3cG9ydC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9wYW5lbE1pbkhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fZHJvcGRvd25IZWlnaHQoKTtcbiAgICBpZiAoY3VycmVudCAhPT0gJ2F1dG8nKSB7XG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuX2dldFN0YW5kYXJkTGlzdEhlaWdodFB4KCl9cHhgO1xuICB9KTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2xpc3REYXRhU291cmNlOiBBWERhdGFTb3VyY2U8YW55PiA9IGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZShbXSwge1xuICAgIGtleTogdGhpcy52YWx1ZUZpZWxkLFxuICAgIHBhZ2VTaXplOiAxMCxcbiAgfSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfb3JpZ2luYWxEYXRhU291cmNlOiBBWERhdGFTb3VyY2U8YW55PiB8IGFueVtdO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgb25DaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBvbkxvYWRpbmdDaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgI2luaXQgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jbG9zZXN0KCdheC1mb3JtLWZpZWxkJyk7XG4gICAgaWYgKGZvcm1GaWVsZD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdheC1zdGF0ZS1mbG9hdGluZy1sYWJlbCcpKSB7XG4gICAgICB0aGlzLmdldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgnYXgtZmxvYXQtbGFiZWwnKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIGNvbXBvbmVudCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhbiBgQVhEYXRhU291cmNlYCBvciBhbiBhcnJheSBvZiBpdGVtcy5cbiAgICogQHJldHVybnMge0FYRGF0YVNvdXJjZTxhbnk+IHwgYW55W119XG4gICAqL1xuICBwdWJsaWMgZ2V0IGRhdGFTb3VyY2UoKTogQVhEYXRhU291cmNlPGFueT4gfCBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29yaWdpbmFsRGF0YVNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkYXRhIHNvdXJjZSwgZWl0aGVyIGFzIGFuIGBBWERhdGFTb3VyY2VgIG9yIGFuIGFycmF5LlxuICAgKiBAcGFyYW0ge0FYRGF0YVNvdXJjZTxhbnk+IHwgYW55W119IHZcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YVNvdXJjZSh2OiBBWERhdGFTb3VyY2U8YW55PiB8IGFueVtdKSB7XG4gICAgLy8gY2hlY2sgaWYgdGhlIGRhdGEgc291cmNlIGlzIHRoZSBzYW1lXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgQXJyYXkuaXNBcnJheSh0aGlzLl9vcmlnaW5hbERhdGFTb3VyY2UpICYmIGlzRXF1YWwodiwgdGhpcy5fb3JpZ2luYWxEYXRhU291cmNlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodiBpbnN0YW5jZW9mIEFYRGF0YVNvdXJjZSAmJiB2ID09IHRoaXMuX29yaWdpbmFsRGF0YVNvdXJjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvL1xuICAgIHRoaXMuX29yaWdpbmFsRGF0YVNvdXJjZSA9IHY7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgIHRoaXMuX2xpc3REYXRhU291cmNlID0gY29udmVydEFycmF5VG9EYXRhU291cmNlKHYsIHtcbiAgICAgICAga2V5OiB0aGlzLnZhbHVlRmllbGQsXG4gICAgICAgIHBhZ2VTaXplOiB2Lmxlbmd0aCB8fCAxMCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXN0RGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZSBhcyBBWERhdGFTb3VyY2U8YW55PjtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLm9uQ2hhbmdlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uQ2hhbmdlZFN1YnNjcmlwdGlvbiA9IHRoaXMuX2xpc3REYXRhU291cmNlLm9uQ2hhbmdlZFxuICAgICAgLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVEcm9wZG93blNpemUoKTtcbiAgICAgICAgLy8gRm9yY2UgcmVmcmVzaCBvZiBzZWxlY3RlZCBpdGVtcyB3aGVuIGRhdGEgc291cmNlIGNoYW5nZXNcbiAgICAgICAgdGhpcy5mb3JjZVJlZnJlc2hTZWxlY3RlZEl0ZW1zKCk7XG4gICAgICB9KTtcbiAgICAvL1xuICAgIHRoaXMub25Mb2FkaW5nQ2hhbmdlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uTG9hZGluZ0NoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLl9saXN0RGF0YVNvdXJjZS5vbkxvYWRpbmdDaGFuZ2VkXG4gICAgICAucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSlcbiAgICAgIC5zdWJzY3JpYmUoKGxvYWRpbmcpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGxvYWRpbmcpO1xuICAgICAgfSk7XG5cbiAgICAvLyBBZnRlciBzZXR0aW5nIGRhdGEgc291cmNlLCB0cnkgdG8gZmV0Y2ggaXRlbSBkYXRhIGlmIG5lZWRlZFxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mZXRjaEl0ZW1EYXRhSWZOZWVkZWQoKSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBsYWNlaG9sZGVyIHRleHQgZGlzcGxheWVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBlbXB0eS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBsYWNlaG9sZGVyXG4gICAqL1xuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluUmVjb3Jkc0ZvclNlYXJjaCBkZWZpbmVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiByZWNvcmRzIHJlcXVpcmVkIHRvIGRpc3BsYXkgdGhlIHNlYXJjaCBib3guXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5SZWNvcmRzRm9yU2VhcmNoXG4gICAqL1xuICBASW5wdXQoKVxuICBtaW5SZWNvcmRzRm9yU2VhcmNoOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjYXB0aW9uIHRleHQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYXB0aW9uXG4gICAqL1xuICBASW5wdXQoKVxuICBjYXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSB1c2VkIHRvIGN1c3RvbWl6ZSB0aGUgcmVuZGVyaW5nIG9mIGl0ZW1zLlxuICAgKiBAcGFyYW0ge1RlbXBsYXRlUmVmPGFueT59IGl0ZW1UZW1wbGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgdXNlZCB0byBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBvZiBzZWxlY3RlZCBpdGVtcy5cbiAgICogQHBhcmFtIHtUZW1wbGF0ZVJlZjxhbnk+fSBzZWxlY3RlZFRlbXBsYXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZWxlY3RlZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgdXNlZCB0byBkaXNwbGF5IHdoZW4gdGhlcmUgYXJlIG5vIGl0ZW1zLlxuICAgKiBAcGFyYW0ge1RlbXBsYXRlUmVmPGFueT59IGVtcHR5VGVtcGxhdGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSB1c2VkIHRvIGRpc3BsYXkgd2hpbGUgbG9hZGluZy5cbiAgICogQHBhcmFtIHtUZW1wbGF0ZVJlZjxhbnk+fSBsb2FkaW5nVGVtcGxhdGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGxvYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogVGhlIHdpZHRoIG9mIHRoZSBkcm9wZG93biBpbiBwaXhlbHMuXG4gICAqIEBkZWZhdWx0VmFsdWUgbnVsbFxuICAgKi9cbiAgZHJvcGRvd25XaWR0aCA9IGlucHV0PHN0cmluZz4obnVsbCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQFZpZXdDaGlsZCgncGFuZWwnKSBwYW5lbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIEBWaWV3Q2hpbGQoQVhMaXN0Q29tcG9uZW50KVxuICBsaXN0OiBBWExpc3RDb21wb25lbnQ7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQENvbnRlbnRDaGlsZChBWFNlYXJjaEJveENvbXBvbmVudClcbiAgc2VhcmNoQm94OiBBWFNlYXJjaEJveENvbXBvbmVudDtcblxuICBzZWFyY2hCb3hBdXRvRm9jdXMgPSBpbnB1dCh0cnVlKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKEFYRHJvcGRvd25Cb3hDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByb3RlY3RlZCBkcm9wZG93bjogQVhEcm9wZG93bkJveENvbXBvbmVudDtcblxuICAvKipcbiAgICogU2VydmljZSBmb3IgbWFuYWdpbmcgc2VsZWN0aW9uIGRhdGEsIGluamVjdGVkIHZpYSBgQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU5gLlxuICAgKi9cbiAgcHVibGljIHNlbGVjdGlvblNlcnZpY2UgPSBpbmplY3QoQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU4pO1xuXG4gIHNlYXJjaEV2ZW50OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvL1xuICAgIHRoaXMucmVnaXN0ZXJWYWxpZGF0aW9uKCk7XG4gICAgLy8gUHJvYWN0aXZlbHkgZmV0Y2ggaXRlbSBkYXRhIGlmIHdlIGhhdmUgYSB2YWx1ZSBidXQgbm8gY29ycmVzcG9uZGluZyBpdGVtXG4gICAgdGhpcy5mZXRjaEl0ZW1EYXRhSWZOZWVkZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9hY3RpdmVseSBmZXRjaGVzIGl0ZW0gZGF0YSBpZiB0aGUgY29tcG9uZW50IGhhcyBhIHZhbHVlIGJ1dCBubyBjb3JyZXNwb25kaW5nIGl0ZW0gZGF0YS5cbiAgICogVGhpcyBwcmV2ZW50cyBzaG93aW5nIFwibG9hZGluZy4uLlwiIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYSB2YWx1ZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hJdGVtRGF0YUlmTmVlZGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlzRW1wdHlWYWx1ZSA9IHRoaXMudmFsdWUgPT0gbnVsbCB8fCAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCk7XG5cbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSAmJiB0aGlzLl9saXN0RGF0YVNvdXJjZSAmJiAhdGhpcy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCB0aGlzLmdldEl0ZW1CeUtleSh0aGlzLnZhbHVlKTtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAvLyBGb3JjZSByZWZyZXNoIHRvIHVwZGF0ZSB0aGUgZGlzcGxheVxuICAgICAgICAgIHRoaXMuZm9yY2VSZWZyZXNoU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBmZXRjaCBpdGVtIGRhdGE6JywgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoQm94Py5vbktleURvd24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uQ2hhbmdlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uTG9hZGluZ0NoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuIGl0ZW0gYnkgaXRzIGtleS5cbiAgICogQHBhcmFtIHthbnl9IGtleVxuICAgKi9cbiAgZ2V0SXRlbUJ5S2V5KGtleTogYW55KTogUHJvbWlzZTxhbnk+IHwgYW55IHtcbiAgICAvLyBTdGF0aWMgYXJyYXkgZGF0YSBzb3VyY2VzIHJlc29sdmUgc3luY2hyb25vdXNseSB0byBhdm9pZCBhIGZhbHNlIGxvYWRpbmcgc3RhdGVcbiAgICAvLyBmb3IgcHJpbWl0aXZlIHZhbHVlcyAoZS5nLiBjb2xvciBmb3JtYXQgXCJoZXhcIiAvIFwicmdiYVwiKS5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl9vcmlnaW5hbERhdGFTb3VyY2UpKSB7XG4gICAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiB0aGlzLl9vcmlnaW5hbERhdGFTb3VyY2UpIHtcbiAgICAgICAgaWYgKGNhbmRpZGF0ZSAhPSBudWxsICYmIHR5cGVvZiBjYW5kaWRhdGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKGdldChjYW5kaWRhdGUsIHRoaXMudmFsdWVGaWVsZCkgPT0ga2V5IHx8IGdldChjYW5kaWRhdGUsIHRoaXMudGV4dEZpZWxkKSA9PSBrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZSA9PSBrZXkpIHtcbiAgICAgICAgICByZXR1cm4geyBbdGhpcy52YWx1ZUZpZWxkXTogY2FuZGlkYXRlLCBbdGhpcy50ZXh0RmllbGRdOiBTdHJpbmcoY2FuZGlkYXRlID8/ICcnKSB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbGlzdERhdGFTb3VyY2UgJiYgdHlwZW9mIHRoaXMuX2xpc3REYXRhU291cmNlLmZpbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9saXN0RGF0YVNvdXJjZS5maW5kKGtleSk7XG4gICAgfVxuXG4gICAgLy8gSWYgbmVpdGhlciBtZXRob2QgaXMgYXZhaWxhYmxlLCByZXR1cm4gbnVsbFxuICAgIGNvbnNvbGUud2FybignTm8gZmluZCBtZXRob2QgYXZhaWxhYmxlIG9uIGRhdGEgc291cmNlJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU9uT3BlbmVkRXZlbnQoZTogQVhFdmVudCkge1xuICAgIGlmICghdGhpcy5yZW5kZXJMaXN0KCkpIHtcbiAgICAgIHRoaXMucmVuZGVyTGlzdC5zZXQodHJ1ZSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5fbGlzdERhdGFTb3VyY2UudG90YWxDb3VudCB8fCB0aGlzLl9saXN0RGF0YVNvdXJjZS50b3RhbENvdW50ID09IDApIHtcbiAgICAgIHRoaXMubGlzdD8ucmVmcmVzaChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2hhbmRsZUZvY3VzKCk7XG4gICAgLy9cbiAgICB0aGlzLm9uT3BlbmVkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IGUuaXNVc2VySW50ZXJhY3Rpb24sXG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVEcm9wZG93blNpemUoKTtcblxuICAgIC8vIEZvcmNlIHJlZnJlc2ggb2Ygc2VsZWN0ZWQgaXRlbXMgd2hlbiBvcGVuaW5nIHRvIHNob3cgdXBkYXRlZCB0ZXh0XG4gICAgdGhpcy5mb3JjZVJlZnJlc2hTZWxlY3RlZEl0ZW1zKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU9uQ2xvc2VkRXZlbnQoZTogQVhFdmVudCkge1xuICAgIC8vdGhpcy5pbnB1dC5mb2N1cygpO1xuICAgIHRoaXMub25DbG9zZWQuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogZS5pc1VzZXJJbnRlcmFjdGlvbixcbiAgICB9KTtcbiAgICB0aGlzLl91bnN1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfaGFuZGxlRm9jdXMoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWFyY2hCb3gpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hCb3gubG9vayA9ICdmbGF0JztcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQm94QXV0b0ZvY3VzKCkpIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaEJveC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIC8vVE9ETzogdW5zdWJzY3JpYmVcbiAgICAgICAgdGhpcy5ob3RLZXlTZXJ2aWNlXG4gICAgICAgICAgLmFkZFNob3J0Y3V0KHsga2V5czogJ0NvbnRyb2wuZicsIGVsZW1lbnQ6IHRoaXMucGFuZWwubmF0aXZlRWxlbWVudCB9KVxuICAgICAgICAgIC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hCb3guZm9jdXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWFyY2hCb3gub25LZXlEb3duLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgIGlmIChlLm5hdGl2ZUV2ZW50LmNvZGUgPT09ICdBcnJvd0Rvd24nIHx8IGUubmF0aXZlRXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgdGhpcy5saXN0Py5mb2N1cygpO1xuICAgICAgICAgICAgZS5uYXRpdmVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxpc3Q/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUJhZGdlUmVtb3ZlKGU6IE1vdXNlRXZlbnQsIGl0ZW0pIHtcbiAgICB0aGlzLnVuc2VsZWN0SXRlbXMoaXRlbSk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfaGFuZGxlVmFsdWVDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29tbWl0VmFsdWUoZS5jb21wb25lbnQuc2VsZWN0ZWRJdGVtcywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVJdGVtQ2xpY2soZTogQVhJdGVtQ2xpY2tFdmVudCkge1xuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdChlKTtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUl0ZW1TZWxlY3RlZChlOiBBWEl0ZW1TZWxlY3RlZEV2ZW50KSB7XG4gICAgdGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KGUpO1xuICAgIHRoaXMucmVzZXRTZWFyY2hBZnRlclNlbGVjdGlvbigpO1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTZWFyY2hBZnRlclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoQm94ICYmICF0aGlzLnNlYXJjaEJveD8udmFsdWUpIHJldHVybjtcbiAgICBpZiAodGhpcy5zZWFyY2hCb3ggJiYgdGhpcy5zZWFyY2hCb3g/LnZhbHVlKSB0aGlzLnNlYXJjaEJveC5jb21taXRWYWx1ZSgnJywgZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TGlzdEl0ZW1QeCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5pdGVtSGVpZ2h0KCkgPT09ICdudW1iZXInID8gKHRoaXMuaXRlbUhlaWdodCgpIGFzIG51bWJlcikgOiA0MDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE1heFZpc2libGVJdGVtcygpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1heChOdW1iZXIodGhpcy5tYXhWaXNpYmxlSXRlbXMoKSkgfHwgNSwgMSk7XG4gIH1cblxuICAvKiogU3RhbmRhcmQgcG9wb3ZlciBsaXN0IGhlaWdodDogYG1heFZpc2libGVJdGVtc2Agcm93cyAoZGVmYXVsdCA1KS4gKi9cbiAgcHJpdmF0ZSBfZ2V0U3RhbmRhcmRMaXN0SGVpZ2h0UHgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0TWF4VmlzaWJsZUl0ZW1zKCkgKiB0aGlzLl9nZXRMaXN0SXRlbVB4KCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIHNldERyb3Bkb3duU2l6ZShfY291bnQgPSAwKSB7XG4gICAgY29uc3QgaXRlbVB4ID0gdGhpcy5fZ2V0TGlzdEl0ZW1QeCgpO1xuICAgIGNvbnN0IGlzQWN0aW9uc2hlZXQgPSB0aGlzLmRyb3Bkb3duLmlzQWN0aW9uc2hlZXRTdHlsZTtcbiAgICBjb25zdCBsaXN0SGVpZ2h0ID0gYCR7dGhpcy5fZ2V0U3RhbmRhcmRMaXN0SGVpZ2h0UHgoKX1weGA7XG5cbiAgICBpZiAoaXNBY3Rpb25zaGVldCkge1xuICAgICAgdGhpcy5fZHJvcGRvd25XaWR0aC5zZXQoJzEwMCUnKTtcbiAgICAgIHRoaXMuX2Ryb3Bkb3duSGVpZ2h0LnNldChsaXN0SGVpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaG9zdFdpZHRoID0gTWF0aC5tYXgodGhpcy5nZXRIb3N0RWxlbWVudCgpLm9mZnNldFdpZHRoLCBOdW1iZXIodGhpcy5kcm9wZG93bldpZHRoKCkpIHx8IDApO1xuICAgICAgdGhpcy5fZHJvcGRvd25XaWR0aC5zZXQoYCR7aG9zdFdpZHRofXB4YCk7XG4gICAgICB0aGlzLl9kcm9wZG93bkhlaWdodC5zZXQobGlzdEhlaWdodCk7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9maXRMaXN0SGVpZ2h0VG9BdmFpbGFibGVTcGFjZShpdGVtUHgpO1xuICAgICAgdGhpcy5kcm9wZG93bi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgdGhpcy5saXN0Py5yZW5kZXIoKTtcbiAgICAgIC8vIFNlY29uZCBwYXNzIGFmdGVyIHRoZSBvdmVybGF5IHBhbmUgYXBwbGllcyBtYXgtaGVpZ2h0IC8gb3ZlcmZsb3cgY29uc3RyYWludHMuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9maXRMaXN0SGVpZ2h0VG9BdmFpbGFibGVTcGFjZShpdGVtUHgpO1xuICAgICAgICAgIHRoaXMubGlzdD8ucmVuZGVyKCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2hyaW5rcyBsaXN0IGhlaWdodCB0byB0aGUgdmlzaWJsZSBvdmVybGF5IGFyZWEgc28gdmlydHVhbCBzY3JvbGwgZW5kcyBvbiBmdWxseVxuICAgKiB2aXNpYmxlIHJvd3MgaW5zdGVhZCBvZiBpbnNpZGUgYW4gb3ZlcmZsb3c6aGlkZGVuIGNsaXBwZWQgcmVnaW9uLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9maXRMaXN0SGVpZ2h0VG9BdmFpbGFibGVTcGFjZShpdGVtUHg6IG51bWJlcikge1xuICAgIGlmIChpdGVtUHggPD0gMCB8fCB0aGlzLl9kcm9wZG93bkhlaWdodCgpID09PSAnYXV0bycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYW5lbCA9IHRoaXMucGFuZWw/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbGlzdEVsID0gdGhpcy5saXN0Py5nZXRIb3N0RWxlbWVudD8uKCkgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFwYW5lbCB8fCAhbGlzdEVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFuZSA9IHBhbmVsLmNsb3Nlc3QoJy5heC1vdmVybGF5LXBhbmUnKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgaWYgKCFwYW5lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdFJlY3QgPSBsaXN0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcGFuZVJlY3QgPSBwYW5lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBhbmVPdmVyZmxvdyA9IGxpc3RSZWN0LmJvdHRvbSAtIHBhbmVSZWN0LmJvdHRvbTtcbiAgICBjb25zdCB2aWV3cG9ydE92ZXJmbG93ID0gbGlzdFJlY3QuYm90dG9tIC0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIGNvbnN0IG92ZXJmbG93ID0gTWF0aC5tYXgocGFuZU92ZXJmbG93LCB2aWV3cG9ydE92ZXJmbG93KTtcblxuICAgIGxldCBuZXh0SGVpZ2h0ID0gbGlzdEVsLmNsaWVudEhlaWdodCB8fCBwYXJzZUZsb2F0KHRoaXMuX2Ryb3Bkb3duSGVpZ2h0KCkpO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG5leHRIZWlnaHQpIHx8IG5leHRIZWlnaHQgPD0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdoZW4gdGhlIGxpc3QgZXh0ZW5kcyBwYXN0IHRoZSBvdmVybGF5IHBhbmUgb3Igc2NyZWVuLCBzaHJpbmsgaXQgdG8gdGhlIHZpc2libGUgYXJlYS5cbiAgICBpZiAob3ZlcmZsb3cgPiAxKSB7XG4gICAgICBuZXh0SGVpZ2h0ID0gTWF0aC5tYXgoaXRlbVB4LCBuZXh0SGVpZ2h0IC0gb3ZlcmZsb3cpO1xuICAgIH1cblxuICAgIC8vIEtlZXAgaGVpZ2h0IGFzIHdob2xlIHJvd3Mgc28gdGhlIGxhc3QgaXRlbSBpcyBuZXZlciBwZXJtYW5lbnRseSBjcm9wcGVkLlxuICAgIC8vIFByZWZlciB0aGUgc3RhbmRhcmQgdmlld3BvcnQ7IG9ubHkgZ28gc2hvcnRlciB3aGVuIHRoZSBvdmVybGF5L3ZpZXdwb3J0IGlzIHNtYWxsZXIuXG4gICAgY29uc3Qgc3RhbmRhcmRIZWlnaHQgPSB0aGlzLl9nZXRTdGFuZGFyZExpc3RIZWlnaHRQeCgpO1xuICAgIGNvbnN0IGZpdHRlZEhlaWdodCA9IE1hdGgubWF4KGl0ZW1QeCwgTWF0aC5mbG9vcihuZXh0SGVpZ2h0IC8gaXRlbVB4KSAqIGl0ZW1QeCk7XG4gICAgbmV4dEhlaWdodCA9IG92ZXJmbG93ID4gMSA/IGZpdHRlZEhlaWdodCA6IE1hdGgubWF4KHN0YW5kYXJkSGVpZ2h0LCBmaXR0ZWRIZWlnaHQpO1xuXG4gICAgY29uc3QgY3VycmVudCA9IHBhcnNlRmxvYXQodGhpcy5fZHJvcGRvd25IZWlnaHQoKSk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoY3VycmVudCkgfHwgbmV4dEhlaWdodCAhPT0gY3VycmVudCkge1xuICAgICAgdGhpcy5fZHJvcGRvd25IZWlnaHQuc2V0KGAke25leHRIZWlnaHR9cHhgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRyb3Bkb3duLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURyb3Bkb3duU2l6ZSgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0RHJvcGRvd25TaXplKHRoaXMuX2xpc3REYXRhU291cmNlLnRvdGFsQ291bnQpO1xuICAgICAgdGhpcy51cGRhdGVEcm9wZG93blBvc2l0aW9uKCk7XG4gICAgICB0aGlzLmxpc3Q/LnJlbmRlcigpO1xuICAgICAgaWYgKCF0aGlzLmlzSXRlbVRydW5jYXRlZCgpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2ZpdERyb3Bkb3duVG9Db250ZW50KCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9maXREcm9wZG93blRvQ29udGVudCgpLCAxMDApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpdERyb3Bkb3duVG9Db250ZW50KCkge1xuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5wYW5lbD8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIXBhbmVsKSByZXR1cm47XG5cbiAgICBjb25zdCBob3N0V2lkdGggPSBNYXRoLm1heCh0aGlzLmdldEhvc3RFbGVtZW50KCkub2Zmc2V0V2lkdGgsIE51bWJlcih0aGlzLmRyb3Bkb3duV2lkdGgoKSkgfHwgMCk7XG4gICAgbGV0IGNvbnRlbnRXaWR0aCA9IGhvc3RXaWR0aDtcblxuICAgIHBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdsaS5saXN0LWl0ZW0nKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IGl0ZW0ucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5heC1sYWJlbC1jb250YWluZXIgc3BhbicpO1xuICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgIGNvbnN0IGxhYmVsQ29udGFpbmVyID0gbGFiZWwucGFyZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFBhZGRpbmcgPSBsYWJlbENvbnRhaW5lciA/IGl0ZW0ub2Zmc2V0V2lkdGggLSBsYWJlbENvbnRhaW5lci5jbGllbnRXaWR0aCA6IDA7XG4gICAgICAgIGNvbnRlbnRXaWR0aCA9IE1hdGgubWF4KGNvbnRlbnRXaWR0aCwgbGFiZWwuc2Nyb2xsV2lkdGggKyBob3Jpem9udGFsUGFkZGluZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZW50V2lkdGggPSBNYXRoLm1heChjb250ZW50V2lkdGgsIGl0ZW0uc2Nyb2xsV2lkdGgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgbmV4dFdpZHRoID0gYCR7TWF0aC5tYXgoaG9zdFdpZHRoLCBjb250ZW50V2lkdGgpfXB4YDtcbiAgICBpZiAodGhpcy5fZHJvcGRvd25XaWR0aCgpICE9PSBuZXh0V2lkdGgpIHtcbiAgICAgIHRoaXMuX2Ryb3Bkb3duV2lkdGguc2V0KG5leHRXaWR0aCk7XG4gICAgICB0aGlzLmRyb3Bkb3duLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgaW50ZXJuYWxWYWx1ZUNoYW5nZWQodmFsdWU6IGFueSkge1xuICAgIHN1cGVyLmludGVybmFsVmFsdWVDaGFuZ2VkKHZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKTtcbiAgICAvLyBUcnkgdG8gZmV0Y2ggaXRlbSBkYXRhIHdoZW4gdmFsdWUgY2hhbmdlc1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mZXRjaEl0ZW1EYXRhSWZOZWVkZWQoKSwgMCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgX2hhbmRsZUtleWRvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChlLmNvZGUgPT09ICdBcnJvd0Rvd24nIHx8IGUuY29kZSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW1CeU5hdihlLmNvZGUgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGVsc2UgaWYgKGUuY29kZSA9PT0gJ0JhY2tzcGFjZScpIHtcbiAgICAgIHRoaXMudW5zZWxlY3RJdGVtcyh0aGlzLnNlbGVjdGVkSXRlbXMucG9wKCkpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICAvLyBpZiAoKGUuY29kZSA9PT0gJ1NwYWNlJyB8fCBlLmNvZGUgPT09ICdFbnRlcicpICYmIHRoaXMuaGFzSXRlbXMpIHtcbiAgICAvLyAgICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgIC8vICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIC8vICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAvLyAgICAgICAgIHJldHVybjtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBjb25zdCBpZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmNsb3Nlc3QoJ2xpJyk/LmRhdGFzZXQ/LmlkO1xuICAgIC8vICAgICB0aGlzLnRvZ2dsZVNlbGVjdChpZCk7XG4gICAgLy8gICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIC8vIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgc2VsZWN0SXRlbUJ5TmF2KHNpZ246IDEgfCAtMSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGF0YVNvdXJjZSkgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5ub3JtYWxpemVJdGVtc0xpc3QodGhpcy5kYXRhU291cmNlKTtcbiAgICAgIGNvbnN0IF9sYXN0OiBhbnkgPSBsYXN0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICBsZXQgaSA9IC0xO1xuICAgICAgaWYgKF9sYXN0KSB7XG4gICAgICAgIGkgPSBmaW5kTGFzdEluZGV4KGl0ZW1zLCBbdGhpcy52YWx1ZUZpZWxkLCBnZXQoX2xhc3QgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudmFsdWVGaWVsZCldKTtcbiAgICAgIH1cbiAgICAgIGkgKz0gc2lnbjtcbiAgICAgIGlmIChpIDwgMCB8fCBpID49IGl0ZW1zLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgY29uc3QgbmV4dCA9IG50aDxhbnk+KGl0ZW1zLCBpKTtcbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbXMobmV4dCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRoZSBkYXRhIHNvdXJjZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgc2VhcmNoIHRlcm0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXJtXG4gICAqL1xuICBzZWFyY2godGVybTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZS5zZXQodGVybSk7XG4gICAgaWYgKHRlcm0pIHtcbiAgICAgIHRoaXMuX2xpc3REYXRhU291cmNlLmZpbHRlcih7XG4gICAgICAgIGZpZWxkOiB0aGlzLnRleHRGaWVsZCxcbiAgICAgICAgdmFsdWU6IHRlcm0sXG4gICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdjb250YWlucycgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXN0RGF0YVNvdXJjZS5jbGVhckZpbHRlcigpO1xuICAgIH1cbiAgICB0aGlzLl9saXN0RGF0YVNvdXJjZS5yZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBjb21wb25lbnQgYnkgcmVzZXR0aW5nIHN0YXRlLCBjbGVhcmluZyBzZWxlY3Rpb24gY2FjaGUsIHJlZnJlc2hpbmcgdGhlIGxpc3QsIGFuZCBjbG9zaW5nIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICByZWZyZXNoKCkge1xuICAgIHRoaXMucmVzZXQoZmFsc2UpO1xuICAgIHRoaXMuY2xlYXJTZWxlY3Rpb25DYWNoZSgpO1xuICAgIHRoaXMubGlzdD8ucmVmcmVzaCgpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgcHJpdmF0ZSBob3N0Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICB9XG59XG4iLCI8YXgtZHJvcGRvd24tYm94XG4gIFtjbGFzcy5heC1zdGF0ZS1tdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gIChvbk9wZW5lZCk9XCJfaGFuZGxlT25PcGVuZWRFdmVudCgkZXZlbnQpXCJcbiAgKG9uQ2xvc2VkKT1cIl9oYW5kbGVPbkNsb3NlZEV2ZW50KCRldmVudClcIlxuICAoZm9jdXMpPVwiZW1pdE9uRm9jdXNFdmVudCgkZXZlbnQpXCJcbiAgKGJsdXIpPVwiZW1pdE9uQmx1ckV2ZW50KCRldmVudClcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbbG9va109XCJsb29rXCJcbiAgW3BvcG92ZXJXaWR0aF09XCJkcm9wZG93bldpZHRoKClcIlxuPlxuICA8bmctY29udGFpbmVyIGlucHV0PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXByZWZpeFwiPiA8L25nLWNvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1lZGl0b3IgYXgtY2hpcHMtY29udGFpbmVyIGF4LWNvbnRlbnQgYXgtaW5wdXRcIlxuICAgICAgW2NsYXNzLmF4LXN0YXRlLW11bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXG4gICAgPlxuICAgICAgQGlmIChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcGxhY2Vob2xkZXJcIiByb2xlPVwidGV4dGJveFwiIGFyZWEtcmVhZG9ubHk9XCJ0cnVlXCI+XG4gICAgICAgICAge3sgcGxhY2Vob2xkZXIgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBmb3IgKGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIEBpZiAoc2VsZWN0ZWRUZW1wbGF0ZSkge1xuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0ZWRUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogaXRlbSB9IH1cIlxuICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2hpcHNcIj5cbiAgICAgICAgICAgIHt7IGdldERpc3BsYXlUZXh0KGl0ZW0pIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgIEBpZiAoIWRpc2FibGVkICYmICFyZWFkb25seSAmJiBtdWx0aXBsZSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jbG9zZVwiIChjbGljayk9XCJfaGFuZGxlQmFkZ2VSZW1vdmUoJGV2ZW50LCBpdGVtKVwiPiA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAmJiAhZGlzYWJsZWQgJiYgIXJlYWRvbmx5KSB7XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jbGVhci1idXR0b25cIj48L25nLWNvbnRlbnQ+XG4gICAgfVxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFt0YWJJbmRleF09XCItMVwiIGNsYXNzPVwiYXgtZWRpdG9yLWJ1dHRvblwiPlxuICAgICAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImF4LWljb25cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tZG93bic6ICFpc09wZW4sXG4gICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLXVwJzogaXNPcGVuLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgfVxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXN1ZmZpeFwiPiA8L25nLWNvbnRlbnQ+XG4gICAgPG5nLXRlbXBsYXRlICNzZWFyY2g+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1zZWFyY2gtYm94XCI+IDwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBwYW5lbD5cbiAgICA8ZGl2XG4gICAgICAjcGFuZWxcbiAgICAgIGNsYXNzPVwiYXgtc2VsZWN0LWJveC1wYW5lbFwiXG4gICAgICBbY2xhc3MuYXgtbm8tdHJ1bmNhdGVdPVwiIWlzSXRlbVRydW5jYXRlZCgpXCJcbiAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiX2Ryb3Bkb3duV2lkdGgoKVwiXG4gICAgICBbc3R5bGUuLS1heC1jb21wLXNlbGVjdC1ib3gtcGFuZWwtbWluLWhlaWdodF09XCJfcGFuZWxNaW5IZWlnaHQoKVwiXG4gICAgPlxuICAgICAgQGlmIChkcm9wZG93bi5pc0FjdGlvbnNoZWV0U3R5bGUpIHtcbiAgICAgICAgPGF4LWhlYWRlciBjbGFzcz1cImF4LXNvbGlkXCI+XG4gICAgICAgICAgPGF4LXRpdGxlPnt7IGNhcHRpb24gfHwgcGxhY2Vob2xkZXIgfHwgJ0BhY29yZXg6c2VsZWN0Ym94LnBvcG92ZXIudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L2F4LXRpdGxlPlxuICAgICAgICAgIDxheC1jbG9zZS1idXR0b24gW2ljb25dPVwibXVsdGlwbGUgPyAnYXgtaWNvbiBheC1pY29uLWNoZWNrJyA6ICdheC1pY29uIGF4LWljb24tY2xvc2UnXCI+PC9heC1jbG9zZS1idXR0b24+XG4gICAgICAgIDwvYXgtaGVhZGVyPlxuICAgICAgfVxuICAgICAgQGlmIChzZWFyY2hCb3ggJiYgKCFtaW5SZWNvcmRzRm9yU2VhcmNoIHx8IF9saXN0RGF0YVNvdXJjZS50b3RhbENvdW50ID49IG1pblJlY29yZHNGb3JTZWFyY2ggfHwgc2VhcmNoVmFsdWUoKSkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LXNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKHJlbmRlckxpc3QoKSkge1xuICAgICAgICA8YXgtbGlzdFxuICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgW3RleHRGaWVsZF09XCJ0ZXh0RmllbGRcIlxuICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIidpdGVtJ1wiXG4gICAgICAgICAgW3ZhbHVlRmllbGRdPVwidmFsdWVGaWVsZFwiXG4gICAgICAgICAgW2l0ZW1IZWlnaHRdPVwiaXRlbUhlaWdodCgpXCJcbiAgICAgICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgW3RleHRUZW1wbGF0ZV09XCJ0ZXh0VGVtcGxhdGVcIlxuICAgICAgICAgIFtkYXRhU291cmNlXT1cIl9saXN0RGF0YVNvdXJjZVwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJfZHJvcGRvd25IZWlnaHQoKVwiXG4gICAgICAgICAgW2xvYWRpbmdUZW1wbGF0ZV09XCJsb2FkaW5nVGVtcGxhdGVcIlxuICAgICAgICAgIFtpc0l0ZW1UcnVuY2F0ZWRdPVwiaXNJdGVtVHJ1bmNhdGVkKClcIlxuICAgICAgICAgIFtzaG93SXRlbVRvb2x0aXBdPVwic2hvd0l0ZW1Ub29sdGlwKClcIlxuICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJfaGFuZGxlSXRlbUNsaWNrKCRldmVudClcIlxuICAgICAgICAgIFtlbXB0eVRlbXBsYXRlXT1cImVtcHR5VGVtcGxhdGUgPz8gZW1wdHlcIlxuICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJfaGFuZGxlVmFsdWVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChvbkl0ZW1TZWxlY3RlZCk9XCJfaGFuZGxlSXRlbVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXgtbGlzdD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICAgICAgICB7eyAnQGFjb3JleDpjb21tb24uZ2VuZXJhbC5uby1yZXN1bHQtZm91bmQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIH1cblxuICAgICAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgICAgICBAaWYgKGxvYWRpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsb2FkaW5nVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZvb3RlclwiPiA8L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9heC1kcm9wZG93bi1ib3g+XG48bmctY29udGVudCBzZWxlY3Q9XCJheC12YWxpZGF0aW9uLXJ1bGVcIj4gPC9uZy1jb250ZW50PlxuIl19","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXCommonModule } from '@acorex/cdk/common';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXListModule } from '@acorex/components/list';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXSelectBoxComponent } from './select-box.component';\nimport * as i0 from \"@angular/core\";\nexport class AXSelectBoxModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxModule, imports: [CommonModule,\n AXCommonModule,\n FormsModule,\n AXCheckBoxModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPopoverModule,\n AXLoadingModule,\n A11yModule,\n AXTextBoxModule,\n AXDropdownModule,\n AXListModule,\n AXSelectBoxComponent], exports: [AXSelectBoxComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxModule, imports: [CommonModule,\n AXCommonModule,\n FormsModule,\n AXCheckBoxModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPopoverModule,\n AXLoadingModule,\n A11yModule,\n AXTextBoxModule,\n AXDropdownModule,\n AXListModule,\n AXSelectBoxComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSelectBoxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n AXCommonModule,\n FormsModule,\n AXCheckBoxModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPopoverModule,\n AXLoadingModule,\n A11yModule,\n AXTextBoxModule,\n AXDropdownModule,\n AXListModule,\n AXSelectBoxComponent,\n ],\n exports: [AXSelectBoxComponent],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJveC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3NlbGVjdC1ib3gvc3JjL2xpYi9zZWxlY3QtYm94Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQXNCOUQsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsWUFsQjFCLFlBQVk7WUFDWixjQUFjO1lBQ2QsV0FBVztZQUNYLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsZUFBZTtZQUNmLFVBQVU7WUFDVixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixvQkFBb0IsYUFFWixvQkFBb0I7K0dBR25CLGlCQUFpQixZQWxCMUIsWUFBWTtZQUNaLGNBQWM7WUFDZCxXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixlQUFlO1lBQ2YsVUFBVTtZQUNWLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLG9CQUFvQjs7MkZBS1gsaUJBQWlCO2tCQXBCN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUMvQixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhDaGVja0JveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jaGVjay1ib3gnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBWENvbW1vbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYTGlzdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9saXN0JztcbmltcG9ydCB7IEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveENvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0LWJveC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYQ2hlY2tCb3hNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBBWFRleHRCb3hNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWExpc3RNb2R1bGUsXG4gICAgQVhTZWxlY3RCb3hDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtBWFNlbGVjdEJveENvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYU2VsZWN0Qm94TW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtc2VsZWN0LWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvc2VsZWN0LWJveC9zcmMvYWNvcmV4LWNvbXBvbmVudHMtc2VsZWN0LWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/components",
|
|
3
|
-
"version": "20.10.
|
|
3
|
+
"version": "20.10.15",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@acorex/core": "20.10.
|
|
6
|
-
"@acorex/cdk": "20.10.
|
|
5
|
+
"@acorex/core": "20.10.15",
|
|
6
|
+
"@acorex/cdk": "20.10.15",
|
|
7
7
|
"polytype": ">=0.17.0",
|
|
8
8
|
"angular-imask": ">=7.6.1",
|
|
9
9
|
"imask": ">=7.6.1",
|
|
@@ -61,10 +61,6 @@
|
|
|
61
61
|
"types": "./accordion/index.d.ts",
|
|
62
62
|
"default": "./fesm2022/acorex-components-accordion.mjs"
|
|
63
63
|
},
|
|
64
|
-
"./action-sheet": {
|
|
65
|
-
"types": "./action-sheet/index.d.ts",
|
|
66
|
-
"default": "./fesm2022/acorex-components-action-sheet.mjs"
|
|
67
|
-
},
|
|
68
64
|
"./alert": {
|
|
69
65
|
"types": "./alert/index.d.ts",
|
|
70
66
|
"default": "./fesm2022/acorex-components-alert.mjs"
|
|
@@ -77,6 +73,10 @@
|
|
|
77
73
|
"types": "./audio-wave/index.d.ts",
|
|
78
74
|
"default": "./fesm2022/acorex-components-audio-wave.mjs"
|
|
79
75
|
},
|
|
76
|
+
"./action-sheet": {
|
|
77
|
+
"types": "./action-sheet/index.d.ts",
|
|
78
|
+
"default": "./fesm2022/acorex-components-action-sheet.mjs"
|
|
79
|
+
},
|
|
80
80
|
"./autocomplete": {
|
|
81
81
|
"types": "./autocomplete/index.d.ts",
|
|
82
82
|
"default": "./fesm2022/acorex-components-autocomplete.mjs"
|
|
@@ -85,14 +85,14 @@
|
|
|
85
85
|
"types": "./avatar/index.d.ts",
|
|
86
86
|
"default": "./fesm2022/acorex-components-avatar.mjs"
|
|
87
87
|
},
|
|
88
|
-
"./bottom-navigation": {
|
|
89
|
-
"types": "./bottom-navigation/index.d.ts",
|
|
90
|
-
"default": "./fesm2022/acorex-components-bottom-navigation.mjs"
|
|
91
|
-
},
|
|
92
88
|
"./badge": {
|
|
93
89
|
"types": "./badge/index.d.ts",
|
|
94
90
|
"default": "./fesm2022/acorex-components-badge.mjs"
|
|
95
91
|
},
|
|
92
|
+
"./bottom-navigation": {
|
|
93
|
+
"types": "./bottom-navigation/index.d.ts",
|
|
94
|
+
"default": "./fesm2022/acorex-components-bottom-navigation.mjs"
|
|
95
|
+
},
|
|
96
96
|
"./breadcrumbs": {
|
|
97
97
|
"types": "./breadcrumbs/index.d.ts",
|
|
98
98
|
"default": "./fesm2022/acorex-components-breadcrumbs.mjs"
|
|
@@ -293,14 +293,14 @@
|
|
|
293
293
|
"types": "./number-box/index.d.ts",
|
|
294
294
|
"default": "./fesm2022/acorex-components-number-box.mjs"
|
|
295
295
|
},
|
|
296
|
-
"./otp": {
|
|
297
|
-
"types": "./otp/index.d.ts",
|
|
298
|
-
"default": "./fesm2022/acorex-components-otp.mjs"
|
|
299
|
-
},
|
|
300
296
|
"./number-box-legacy": {
|
|
301
297
|
"types": "./number-box-legacy/index.d.ts",
|
|
302
298
|
"default": "./fesm2022/acorex-components-number-box-legacy.mjs"
|
|
303
299
|
},
|
|
300
|
+
"./otp": {
|
|
301
|
+
"types": "./otp/index.d.ts",
|
|
302
|
+
"default": "./fesm2022/acorex-components-otp.mjs"
|
|
303
|
+
},
|
|
304
304
|
"./page": {
|
|
305
305
|
"types": "./page/index.d.ts",
|
|
306
306
|
"default": "./fesm2022/acorex-components-page.mjs"
|
|
@@ -317,14 +317,14 @@
|
|
|
317
317
|
"types": "./pdf-reader/index.d.ts",
|
|
318
318
|
"default": "./fesm2022/acorex-components-pdf-reader.mjs"
|
|
319
319
|
},
|
|
320
|
-
"./picker": {
|
|
321
|
-
"types": "./picker/index.d.ts",
|
|
322
|
-
"default": "./fesm2022/acorex-components-picker.mjs"
|
|
323
|
-
},
|
|
324
320
|
"./phone-box": {
|
|
325
321
|
"types": "./phone-box/index.d.ts",
|
|
326
322
|
"default": "./fesm2022/acorex-components-phone-box.mjs"
|
|
327
323
|
},
|
|
324
|
+
"./picker": {
|
|
325
|
+
"types": "./picker/index.d.ts",
|
|
326
|
+
"default": "./fesm2022/acorex-components-picker.mjs"
|
|
327
|
+
},
|
|
328
328
|
"./popover": {
|
|
329
329
|
"types": "./popover/index.d.ts",
|
|
330
330
|
"default": "./fesm2022/acorex-components-popover.mjs"
|
|
@@ -345,14 +345,14 @@
|
|
|
345
345
|
"types": "./query-builder/index.d.ts",
|
|
346
346
|
"default": "./fesm2022/acorex-components-query-builder.mjs"
|
|
347
347
|
},
|
|
348
|
-
"./rail-navigation": {
|
|
349
|
-
"types": "./rail-navigation/index.d.ts",
|
|
350
|
-
"default": "./fesm2022/acorex-components-rail-navigation.mjs"
|
|
351
|
-
},
|
|
352
348
|
"./radio": {
|
|
353
349
|
"types": "./radio/index.d.ts",
|
|
354
350
|
"default": "./fesm2022/acorex-components-radio.mjs"
|
|
355
351
|
},
|
|
352
|
+
"./rail-navigation": {
|
|
353
|
+
"types": "./rail-navigation/index.d.ts",
|
|
354
|
+
"default": "./fesm2022/acorex-components-rail-navigation.mjs"
|
|
355
|
+
},
|
|
356
356
|
"./range-slider": {
|
|
357
357
|
"types": "./range-slider/index.d.ts",
|
|
358
358
|
"default": "./fesm2022/acorex-components-range-slider.mjs"
|
|
@@ -381,22 +381,22 @@
|
|
|
381
381
|
"types": "./scheduler/index.d.ts",
|
|
382
382
|
"default": "./fesm2022/acorex-components-scheduler.mjs"
|
|
383
383
|
},
|
|
384
|
-
"./scheduler-picker": {
|
|
385
|
-
"types": "./scheduler-picker/index.d.ts",
|
|
386
|
-
"default": "./fesm2022/acorex-components-scheduler-picker.mjs"
|
|
387
|
-
},
|
|
388
|
-
"./scss": {
|
|
389
|
-
"types": "./scss/index.d.ts",
|
|
390
|
-
"default": "./fesm2022/acorex-components-scss.mjs"
|
|
391
|
-
},
|
|
392
384
|
"./search-box": {
|
|
393
385
|
"types": "./search-box/index.d.ts",
|
|
394
386
|
"default": "./fesm2022/acorex-components-search-box.mjs"
|
|
395
387
|
},
|
|
388
|
+
"./scheduler-picker": {
|
|
389
|
+
"types": "./scheduler-picker/index.d.ts",
|
|
390
|
+
"default": "./fesm2022/acorex-components-scheduler-picker.mjs"
|
|
391
|
+
},
|
|
396
392
|
"./select-box": {
|
|
397
393
|
"types": "./select-box/index.d.ts",
|
|
398
394
|
"default": "./fesm2022/acorex-components-select-box.mjs"
|
|
399
395
|
},
|
|
396
|
+
"./scss": {
|
|
397
|
+
"types": "./scss/index.d.ts",
|
|
398
|
+
"default": "./fesm2022/acorex-components-scss.mjs"
|
|
399
|
+
},
|
|
400
400
|
"./selection-list": {
|
|
401
401
|
"types": "./selection-list/index.d.ts",
|
|
402
402
|
"default": "./fesm2022/acorex-components-selection-list.mjs"
|
|
@@ -441,14 +441,14 @@
|
|
|
441
441
|
"types": "./tag-box/index.d.ts",
|
|
442
442
|
"default": "./fesm2022/acorex-components-tag-box.mjs"
|
|
443
443
|
},
|
|
444
|
-
"./text-area": {
|
|
445
|
-
"types": "./text-area/index.d.ts",
|
|
446
|
-
"default": "./fesm2022/acorex-components-text-area.mjs"
|
|
447
|
-
},
|
|
448
444
|
"./text-box": {
|
|
449
445
|
"types": "./text-box/index.d.ts",
|
|
450
446
|
"default": "./fesm2022/acorex-components-text-box.mjs"
|
|
451
447
|
},
|
|
448
|
+
"./text-area": {
|
|
449
|
+
"types": "./text-area/index.d.ts",
|
|
450
|
+
"default": "./fesm2022/acorex-components-text-area.mjs"
|
|
451
|
+
},
|
|
452
452
|
"./time-duration": {
|
|
453
453
|
"types": "./time-duration/index.d.ts",
|
|
454
454
|
"default": "./fesm2022/acorex-components-time-duration.mjs"
|
package/select-box/index.d.ts
CHANGED
|
@@ -55,6 +55,12 @@ declare class AXSelectBoxComponent extends AXSelectBoxComponent_base implements
|
|
|
55
55
|
protected _dropdownWidth: _angular_core.WritableSignal<string>;
|
|
56
56
|
/** @ignore */
|
|
57
57
|
protected _dropdownHeight: _angular_core.WritableSignal<string>;
|
|
58
|
+
/**
|
|
59
|
+
* CSS min-height for the popover list. Uses the sized height when known,
|
|
60
|
+
* otherwise the standard `maxVisibleItems × itemHeight` viewport.
|
|
61
|
+
* @ignore
|
|
62
|
+
*/
|
|
63
|
+
protected _panelMinHeight: _angular_core.Signal<string>;
|
|
58
64
|
/** @ignore */
|
|
59
65
|
protected _listDataSource: AXDataSource<any>;
|
|
60
66
|
/** @ignore */
|
|
@@ -158,6 +164,10 @@ declare class AXSelectBoxComponent extends AXSelectBoxComponent_base implements
|
|
|
158
164
|
/** @ignore */
|
|
159
165
|
protected _handleItemSelected(e: AXItemSelectedEvent): void;
|
|
160
166
|
private resetSearchAfterSelection;
|
|
167
|
+
private _getListItemPx;
|
|
168
|
+
private _getMaxVisibleItems;
|
|
169
|
+
/** Standard popover list height: `maxVisibleItems` rows (default 5). */
|
|
170
|
+
private _getStandardListHeightPx;
|
|
161
171
|
/** @ignore */
|
|
162
172
|
private setDropdownSize;
|
|
163
173
|
/**
|