@recursyve/ngx-material-components 18.0.0-beta.7 → 18.0.0-beta.8

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.
@@ -82,7 +82,7 @@ export class NiceAsyncTypeahead extends NiceTypeaheadBase {
82
82
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NiceAsyncTypeahead, isStandalone: true, selector: "nice-async-typeahead", inputs: { resource: { classPropertyName: "resource", publicName: "resource", isSignal: true, isRequired: true, transformFunction: null }, searchOptions: { classPropertyName: "searchOptions", publicName: "searchOptions", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [
83
83
  { provide: MatFormFieldControl, useExisting: NiceAsyncTypeahead },
84
84
  NiceTypeaheadService
85
- ], viewQueries: [{ propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
85
+ ], viewQueries: [{ propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
86
86
  }
87
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceAsyncTypeahead, decorators: [{
88
88
  type: Component,
@@ -116,6 +116,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
116
116
  "(keydown)": "_handleKeydown($event)",
117
117
  "(focus)": "onFocusChanged(true)",
118
118
  "(blur)": "onFocusChanged(false)"
119
- }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"] }]
119
+ }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"] }]
120
120
  }], ctorParameters: () => [] });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWNvbXBvbmVudHMvdHlwZWFoZWFkL2FzeW5jLXR5cGVhaGVhZC50cyIsIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL3R5cGVhaGVhZC90eXBlYWhlYWQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFFTixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBNENuRCxNQUFNLE9BQU8sa0JBQWlELFNBQVEsaUJBQW9CO0lBQ3RFLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDcEMsYUFB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QyxjQUFjLENBQUMsYUFDckM7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxvQkFBb0IsRUFBRTt3QkFDakUsb0JBQW9CO3FCQUN2QixRQUNLO3dCQUNGLE1BQU0sRUFBRSxVQUFVO3dCQUNsQixlQUFlLEVBQUUsU0FBUzt3QkFDMUIsT0FBTyxFQUFFLGdCQUFnQjt3QkFDekIsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLHNCQUFzQixFQUFFLG9DQUFvQzt3QkFDNUQsc0JBQXNCLEVBQUUsV0FBVzt3QkFDbkMsc0JBQXNCLEVBQUUscUJBQXFCO3dCQUM3QyxzQkFBc0IsRUFBRSxxQkFBcUI7d0JBQzdDLHFCQUFxQixFQUFFLFlBQVk7d0JBQ25DLGlDQUFpQyxFQUFFLFVBQVU7d0JBQzdDLGdDQUFnQyxFQUFFLFlBQVk7d0JBQzlDLGlDQUFpQyxFQUFFLFVBQVU7d0JBQzdDLDhCQUE4QixFQUFFLE9BQU87d0JBQ3ZDLFdBQVcsRUFBRSx3QkFBd0I7d0JBQ3JDLFNBQVMsRUFBRSxzQkFBc0I7d0JBQ2pDLFFBQVEsRUFBRSx1QkFBdUI7cUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBPbkluaXQsXG4gICAgdmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBNYXRJY29uQnV0dG9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xuaW1wb3J0IHsgbWF0U2VsZWN0QW5pbWF0aW9ucyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcbmltcG9ydCB7IE5pY2VUeXBlYWhlYWRCYXNlIH0gZnJvbSBcIi4vdHlwZWFoZWFkLWJhc2VcIjtcbmltcG9ydCB7IE5pY2VUeXBlYWhlYWRTZXJ2aWNlIH0gZnJvbSBcIi4vcHJvdmlkZXJzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtYXN5bmMtdHlwZWFoZWFkXCIsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgICAgIENka0Nvbm5lY3RlZE92ZXJsYXksXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdE9wdGlvbixcbiAgICAgICAgTWF0Rm9ybUZpZWxkLFxuICAgICAgICBNYXRJbnB1dCxcbiAgICAgICAgTWF0SWNvbkJ1dHRvbixcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6IFwiLi90eXBlYWhlYWQuaHRtbFwiLFxuICAgIHN0eWxlVXJsOiBcIi4vdHlwZWFoZWFkLnNjc3NcIixcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGFuaW1hdGlvbnM6IFttYXRTZWxlY3RBbmltYXRpb25zLnRyYW5zZm9ybVBhbmVsXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogTmljZUFzeW5jVHlwZWFoZWFkIH0sXG4gICAgICAgIE5pY2VUeXBlYWhlYWRTZXJ2aWNlXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIFwicm9sZVwiOiBcImNvbWJvYm94XCIsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcImxpc3Rib3hcIixcbiAgICAgICAgXCJjbGFzc1wiOiBcIm5pY2UtdHlwZWFoZWFkXCIsXG4gICAgICAgIFwiW2F0dHIuaWRdXCI6IFwiaWRcIixcbiAgICAgICAgXCJbYXR0ci5hcmlhLWNvbnRyb2xzXVwiOiBcInBhbmVsT3BlbiA/IGlkICsgXFxcIi1wYW5lbFxcXCIgOiBudWxsXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1leHBhbmRlZF1cIjogXCJwYW5lbE9wZW5cIixcbiAgICAgICAgXCJbYXR0ci5hcmlhLXJlcXVpcmVkXVwiOiBcInJlcXVpcmVkLnRvU3RyaW5nKClcIixcbiAgICAgICAgXCJbYXR0ci5hcmlhLWRpc2FibGVkXVwiOiBcImRpc2FibGVkLnRvU3RyaW5nKClcIixcbiAgICAgICAgXCJbYXR0ci5hcmlhLWludmFsaWRdXCI6IFwiZXJyb3JTdGF0ZVwiLFxuICAgICAgICBcIltjbGFzcy5uaWNlLXR5cGVhaGVhZC1kaXNhYmxlZF1cIjogXCJkaXNhYmxlZFwiLFxuICAgICAgICBcIltjbGFzcy5uaWNlLXR5cGVhaGVhZC1pbnZhbGlkXVwiOiBcImVycm9yU3RhdGVcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtcmVxdWlyZWRdXCI6IFwicmVxdWlyZWRcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtZW1wdHldXCI6IFwiZW1wdHlcIixcbiAgICAgICAgXCIoa2V5ZG93bilcIjogXCJfaGFuZGxlS2V5ZG93bigkZXZlbnQpXCIsXG4gICAgICAgIFwiKGZvY3VzKVwiOiBcIm9uRm9jdXNDaGFuZ2VkKHRydWUpXCIsXG4gICAgICAgIFwiKGJsdXIpXCI6IFwib25Gb2N1c0NoYW5nZWQoZmFsc2UpXCJcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE5pY2VBc3luY1R5cGVhaGVhZDxULCBTIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PiBleHRlbmRzIE5pY2VUeXBlYWhlYWRCYXNlPFQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNlYXJjaE9wdGlvbnMgPSBpbnB1dDxTIHwgbnVsbD4obnVsbCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyZWRWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlcnZpY2UuaXRlbXMoKSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9uc0NvbnRhaW5lciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oXCJvcHRpb25zQ29udGFpbmVyXCIpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlID0gaW5qZWN0KE5pY2VUeXBlYWhlYWRTZXJ2aWNlKTtcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfY29tcGFyZVdpdGggPSAobzE6IFQsIG8yOiBUKSA9PiB7XG4gICAgICAgIGlmICghKHR5cGVvZiBvMSA9PT0gXCJvYmplY3RcIiAmJiBvMSAmJiB0eXBlb2YgbzIgPT09IFwib2JqZWN0XCIgJiYgbzIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbzEgPT09IG8yO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEoXCJpZFwiIGluIG8xKSB8fCAhKFwiaWRcIiBpbiBvMikpIHtcbiAgICAgICAgICAgIHJldHVybiBvMSA9PT0gbzI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbzEuaWQgPT09IG8yLmlkO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBJbmZpbml0ZSBzY3JvbGwgaW50ZXJuYWwgc3RhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbFRocmVzaG9sZFBlcmNlbnQgPSAwLjk5O1xuICAgIHByaXZhdGUgbGFzdFNjcm9sbEhlaWdodCA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNldFNlYXJjaE9wdGlvbnModGhpcy5zZWFyY2hPcHRpb25zKCkpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4gdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLl9zZWFyY2hWYWx1ZSgpKSwge1xuICAgICAgICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMub3B0aW9uc0NvbnRhaW5lcigpO1xuICAgICAgICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5vblNjcm9sbC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMuc2VydmljZS5pbml0KHRoaXMucmVzb3VyY2UoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIG9uRm9jdXNDaGFuZ2VkKGlzRm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBzdXBlci5vbkZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChpc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaENvbnRyb2wucGF0Y2hWYWx1ZShcIlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtYXRMYWJlbChpdGVtOiBUKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5mb3JtYXRMYWJlbChpdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQWN0aXZlVmFsdWUoKSB7XG4gICAgICAgIHN1cGVyLnJlbW92ZUFjdGl2ZVZhbHVlKCk7XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNldEFjdGl2ZShudWxsKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25TY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgdGhyZXNob2xkID0gKHRoaXMuc2Nyb2xsVGhyZXNob2xkUGVyY2VudCAqIDEwMCAqIHRhcmdldC5zY3JvbGxIZWlnaHQpIC8gMTAwO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gdGFyZ2V0LnNjcm9sbFRvcCArIHRhcmdldC5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgaWYgKHRoaXMubGFzdFNjcm9sbEhlaWdodCA+IHRhcmdldC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFNjcm9sbEhlaWdodCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3VycmVudCA+IHRocmVzaG9sZCAmJiB0aGlzLmxhc3RTY3JvbGxIZWlnaHQgPCB0YXJnZXQuc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UubG9hZE1vcmUoKTtcbiAgICAgICAgICAgIHRoaXMubGFzdFNjcm9sbEhlaWdodCA9IHRhcmdldC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgI2ZhbGxiYWNrT3ZlcmxheU9yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIlxuICAgIGNsYXNzPVwibmljZS10eXBlYWhlYWRcIlxuICAgIGNkay1vdmVybGF5LW9yaWdpblxuPlxuICAgIDxkaXYgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC12YWx1ZVwiPlxuICAgICAgICBAaWYgKF9lbXB0eSgpKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkLXBsYWNlaG9sZGVyIG1hdC1tZGMtc2VsZWN0LW1pbi1saW5lXCI+e3sgX3BsYWNlaG9sZGVyKCkgfX08L3NwYW4+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC12YWx1ZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtbWRjLXNlbGVjdC1taW4tbGluZVwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKF92YWx1ZSgpOyBhcyBhY3RpdmVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TGFiZWwoYWN0aXZlVmFsdWUpIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1zdWZmaXhcIj5cbiAgICAgICAgQGlmIChfZW1wdHkoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtc2VsZWN0LWFycm93XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZvY3VzYWJsZT1cImZhbHNlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxMGw1IDUgNS01elwiPjwvcGF0aD5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChjYW5SZW1vdmVWYWx1ZSgpKSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmljZS10eXBlYWhlYWQtcmVtb3ZlXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZUFjdGl2ZVZhbHVlKClcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTI5MS0yNDAtNTEtNTEgMTg5LTE4OS0xODktMTg5IDUxLTUxIDE4OSAxODkgMTg5LTE4OSA1MSA1MS0xODkgMTg5IDE4OSAxODktNTEgNTEtMTg5LTE4OS0xODkgMTg5WlwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gICAgY2RrLWNvbm5lY3RlZC1vdmVybGF5XG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvblxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcFxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJwYW5lbE9wZW5cIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwiX292ZXJsYXlXaWR0aFwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwiX3ByZWZlcnJlZE92ZXJsYXlPcmlnaW4gfHwgZmFsbGJhY2tPdmVybGF5T3JpZ2luXCJcbiAgICAoYXR0YWNoKT1cIl9vbkF0dGFjaGVkKClcIlxuICAgIChiYWNrZHJvcENsaWNrKT1cImNsb3NlKClcIlxuICAgIChkZXRhY2gpPVwiY2xvc2UoKVwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjcGFuZWxcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1wYW5lbCBuaWNlLXR5cGVhaGVhZC0tb3BlblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInBhbmVsQ2xhc3MoKVwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkICsgJy1wYW5lbCdcIlxuICAgICAgICBbQHRyYW5zZm9ybVBhbmVsXT1cIidzaG93aW5nJ1wiXG4gICAgICAgIChAdHJhbnNmb3JtUGFuZWwuZG9uZSk9XCJfcGFuZWxEb25lQW5pbWF0aW5nU3RyZWFtLm5leHQoJGV2ZW50LnRvU3RhdGUpXCJcbiAgICAgICAgKGtleWRvd24pPVwiX2hhbmRsZUtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIChzY3JvbGxlbmQpPVwiX2hhbmRsZVNjcm9sbEVuZCgpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1zZWFyY2gtaW5wdXRcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmljZS10eXBlYWhlYWRfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIl9zZWFyY2hDb250cm9sXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICNvcHRpb25zQ29udGFpbmVyIGNsYXNzPVwibmljZS10eXBlYWhlYWQtb3B0aW9uc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRWYWx1ZXMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAob3B0aW9uVGVtcGxhdGUoKTsgYXMgb3B0aW9uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdExhYmVsKGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICB9IEBlbXB0eSB7XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmljZS10eXBlYWhlYWRfX25vLWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub0l0ZW1zRm91bmRMYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWNvbXBvbmVudHMvdHlwZWFoZWFkL2FzeW5jLXR5cGVhaGVhZC50cyIsIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL3R5cGVhaGVhZC90eXBlYWhlYWQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFFTixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBNENuRCxNQUFNLE9BQU8sa0JBQWlELFNBQVEsaUJBQW9CO0lBQ3RFLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDcEMsYUFBYSxHQUFHLEtBQUssQ0FBVyxJQUFJLENBQUMsQ0FBQztJQUV0QyxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUVuRCxnQkFBZ0IsR0FBRyxTQUFTLENBQTBCLGtCQUFrQixDQUFDLENBQUM7SUFFNUUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXJDLFlBQVksR0FBRyxDQUFDLEVBQUssRUFBRSxFQUFLLEVBQUUsRUFBRTtRQUMvQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksRUFBRSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ2Msc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUU3QjtRQUNJLEtBQUssRUFBRSxDQUFDO1FBRVIsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxFQUFFO1lBQ0MsaUJBQWlCLEVBQUUsSUFBSTtTQUMxQixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUU7WUFDbkQsaUJBQWlCLEVBQUUsSUFBSTtTQUMxQixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNiLE9BQU87WUFDWCxDQUFDO1lBRUQsU0FBUyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFZSxRQUFRO1FBQ3BCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRWUsY0FBYyxDQUFDLFNBQWtCO1FBQzdDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFaEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRWUsV0FBVyxDQUFDLElBQU87UUFDL0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRWUsaUJBQWlCO1FBQzdCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFUyxRQUFRLENBQUMsS0FBWTtRQUMzQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUMzQyxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNsRixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFFdkQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDaEQsQ0FBQztJQUNMLENBQUM7d0dBeEZRLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDYrQkF2QmhCO1lBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFO1lBQ2pFLG9CQUFvQjtTQUN2Qix1TEM3Q0wscTZHQTBGQSwycUdEL0RRLGdCQUFnQix1SUFDaEIsbUJBQW1CLDIrQkFDbkIsbUJBQW1CLDBrQkFDbkIsU0FBUyxxSkFDVCxZQUFZLDRMQUNaLFFBQVEsaVVBQ1IsYUFBYSw2RkFDYixPQUFPLG9GQUNQLGdCQUFnQixzSUFNUixDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQzs7NEZBd0J2QyxrQkFBa0I7a0JBMUM5QixTQUFTOytCQUNJLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ0wsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsYUFBYTt3QkFDYixPQUFPO3dCQUNQLGdCQUFnQjtxQkFDbkIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsYUFDckM7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxvQkFBb0IsRUFBRTt3QkFDakUsb0JBQW9CO3FCQUN2QixRQUNLO3dCQUNGLE1BQU0sRUFBRSxVQUFVO3dCQUNsQixlQUFlLEVBQUUsU0FBUzt3QkFDMUIsT0FBTyxFQUFFLGdCQUFnQjt3QkFDekIsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLHNCQUFzQixFQUFFLG9DQUFvQzt3QkFDNUQsc0JBQXNCLEVBQUUsV0FBVzt3QkFDbkMsc0JBQXNCLEVBQUUscUJBQXFCO3dCQUM3QyxzQkFBc0IsRUFBRSxxQkFBcUI7d0JBQzdDLHFCQUFxQixFQUFFLFlBQVk7d0JBQ25DLGlDQUFpQyxFQUFFLFVBQVU7d0JBQzdDLGdDQUFnQyxFQUFFLFlBQVk7d0JBQzlDLGlDQUFpQyxFQUFFLFVBQVU7d0JBQzdDLDhCQUE4QixFQUFFLE9BQU87d0JBQ3ZDLFdBQVcsRUFBRSx3QkFBd0I7d0JBQ3JDLFNBQVMsRUFBRSxzQkFBc0I7d0JBQ2pDLFFBQVEsRUFBRSx1QkFBdUI7cUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBPbkluaXQsXG4gICAgdmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBNYXRJY29uQnV0dG9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xuaW1wb3J0IHsgbWF0U2VsZWN0QW5pbWF0aW9ucyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcbmltcG9ydCB7IE5pY2VUeXBlYWhlYWRCYXNlIH0gZnJvbSBcIi4vdHlwZWFoZWFkLWJhc2VcIjtcbmltcG9ydCB7IE5pY2VUeXBlYWhlYWRTZXJ2aWNlIH0gZnJvbSBcIi4vcHJvdmlkZXJzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtYXN5bmMtdHlwZWFoZWFkXCIsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgICAgIENka0Nvbm5lY3RlZE92ZXJsYXksXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdE9wdGlvbixcbiAgICAgICAgTWF0Rm9ybUZpZWxkLFxuICAgICAgICBNYXRJbnB1dCxcbiAgICAgICAgTWF0SWNvbkJ1dHRvbixcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6IFwiLi90eXBlYWhlYWQuaHRtbFwiLFxuICAgIHN0eWxlVXJsOiBcIi4vdHlwZWFoZWFkLnNjc3NcIixcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGFuaW1hdGlvbnM6IFttYXRTZWxlY3RBbmltYXRpb25zLnRyYW5zZm9ybVBhbmVsXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogTmljZUFzeW5jVHlwZWFoZWFkIH0sXG4gICAgICAgIE5pY2VUeXBlYWhlYWRTZXJ2aWNlXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIFwicm9sZVwiOiBcImNvbWJvYm94XCIsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcImxpc3Rib3hcIixcbiAgICAgICAgXCJjbGFzc1wiOiBcIm5pY2UtdHlwZWFoZWFkXCIsXG4gICAgICAgIFwiW2F0dHIuaWRdXCI6IFwiaWRcIixcbiAgICAgICAgXCJbYXR0ci5hcmlhLWNvbnRyb2xzXVwiOiBcInBhbmVsT3BlbiA/IGlkICsgXFxcIi1wYW5lbFxcXCIgOiBudWxsXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1leHBhbmRlZF1cIjogXCJwYW5lbE9wZW5cIixcbiAgICAgICAgXCJbYXR0ci5hcmlhLXJlcXVpcmVkXVwiOiBcInJlcXVpcmVkLnRvU3RyaW5nKClcIixcbiAgICAgICAgXCJbYXR0ci5hcmlhLWRpc2FibGVkXVwiOiBcImRpc2FibGVkLnRvU3RyaW5nKClcIixcbiAgICAgICAgXCJbYXR0ci5hcmlhLWludmFsaWRdXCI6IFwiZXJyb3JTdGF0ZVwiLFxuICAgICAgICBcIltjbGFzcy5uaWNlLXR5cGVhaGVhZC1kaXNhYmxlZF1cIjogXCJkaXNhYmxlZFwiLFxuICAgICAgICBcIltjbGFzcy5uaWNlLXR5cGVhaGVhZC1pbnZhbGlkXVwiOiBcImVycm9yU3RhdGVcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtcmVxdWlyZWRdXCI6IFwicmVxdWlyZWRcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtZW1wdHldXCI6IFwiZW1wdHlcIixcbiAgICAgICAgXCIoa2V5ZG93bilcIjogXCJfaGFuZGxlS2V5ZG93bigkZXZlbnQpXCIsXG4gICAgICAgIFwiKGZvY3VzKVwiOiBcIm9uRm9jdXNDaGFuZ2VkKHRydWUpXCIsXG4gICAgICAgIFwiKGJsdXIpXCI6IFwib25Gb2N1c0NoYW5nZWQoZmFsc2UpXCJcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE5pY2VBc3luY1R5cGVhaGVhZDxULCBTIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PiBleHRlbmRzIE5pY2VUeXBlYWhlYWRCYXNlPFQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNlYXJjaE9wdGlvbnMgPSBpbnB1dDxTIHwgbnVsbD4obnVsbCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyZWRWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlcnZpY2UuaXRlbXMoKSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9uc0NvbnRhaW5lciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oXCJvcHRpb25zQ29udGFpbmVyXCIpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlID0gaW5qZWN0KE5pY2VUeXBlYWhlYWRTZXJ2aWNlKTtcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfY29tcGFyZVdpdGggPSAobzE6IFQsIG8yOiBUKSA9PiB7XG4gICAgICAgIGlmICghKHR5cGVvZiBvMSA9PT0gXCJvYmplY3RcIiAmJiBvMSAmJiB0eXBlb2YgbzIgPT09IFwib2JqZWN0XCIgJiYgbzIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbzEgPT09IG8yO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEoXCJpZFwiIGluIG8xKSB8fCAhKFwiaWRcIiBpbiBvMikpIHtcbiAgICAgICAgICAgIHJldHVybiBvMSA9PT0gbzI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbzEuaWQgPT09IG8yLmlkO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBJbmZpbml0ZSBzY3JvbGwgaW50ZXJuYWwgc3RhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbFRocmVzaG9sZFBlcmNlbnQgPSAwLjk5O1xuICAgIHByaXZhdGUgbGFzdFNjcm9sbEhlaWdodCA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNldFNlYXJjaE9wdGlvbnModGhpcy5zZWFyY2hPcHRpb25zKCkpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4gdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLl9zZWFyY2hWYWx1ZSgpKSwge1xuICAgICAgICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMub3B0aW9uc0NvbnRhaW5lcigpO1xuICAgICAgICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5vblNjcm9sbC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMuc2VydmljZS5pbml0KHRoaXMucmVzb3VyY2UoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIG9uRm9jdXNDaGFuZ2VkKGlzRm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBzdXBlci5vbkZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChpc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaENvbnRyb2wucGF0Y2hWYWx1ZShcIlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtYXRMYWJlbChpdGVtOiBUKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5mb3JtYXRMYWJlbChpdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQWN0aXZlVmFsdWUoKSB7XG4gICAgICAgIHN1cGVyLnJlbW92ZUFjdGl2ZVZhbHVlKCk7XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNldEFjdGl2ZShudWxsKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25TY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgdGhyZXNob2xkID0gKHRoaXMuc2Nyb2xsVGhyZXNob2xkUGVyY2VudCAqIDEwMCAqIHRhcmdldC5zY3JvbGxIZWlnaHQpIC8gMTAwO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gdGFyZ2V0LnNjcm9sbFRvcCArIHRhcmdldC5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgaWYgKHRoaXMubGFzdFNjcm9sbEhlaWdodCA+IHRhcmdldC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFNjcm9sbEhlaWdodCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3VycmVudCA+IHRocmVzaG9sZCAmJiB0aGlzLmxhc3RTY3JvbGxIZWlnaHQgPCB0YXJnZXQuc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UubG9hZE1vcmUoKTtcbiAgICAgICAgICAgIHRoaXMubGFzdFNjcm9sbEhlaWdodCA9IHRhcmdldC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgI2ZhbGxiYWNrT3ZlcmxheU9yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIlxuICAgIGNsYXNzPVwibmljZS10eXBlYWhlYWRcIlxuICAgIGNkay1vdmVybGF5LW9yaWdpblxuPlxuICAgIDxkaXYgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC12YWx1ZVwiPlxuICAgICAgICBAaWYgKF9lbXB0eSgpKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkLXBsYWNlaG9sZGVyIG1hdC1tZGMtc2VsZWN0LW1pbi1saW5lXCI+e3sgX3BsYWNlaG9sZGVyKCkgfX08L3NwYW4+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC12YWx1ZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtbWRjLXNlbGVjdC1taW4tbGluZVwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKF92YWx1ZSgpOyBhcyBhY3RpdmVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TGFiZWwoYWN0aXZlVmFsdWUpIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1zdWZmaXhcIj5cbiAgICAgICAgQGlmIChfZW1wdHkoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtc2VsZWN0LWFycm93XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZvY3VzYWJsZT1cImZhbHNlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxMGw1IDUgNS01elwiPjwvcGF0aD5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChjYW5SZW1vdmVWYWx1ZSgpKSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmljZS10eXBlYWhlYWQtcmVtb3ZlXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZUFjdGl2ZVZhbHVlKClcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTI5MS0yNDAtNTEtNTEgMTg5LTE4OS0xODktMTg5IDUxLTUxIDE4OSAxODkgMTg5LTE4OSA1MSA1MS0xODkgMTg5IDE4OSAxODktNTEgNTEtMTg5LTE4OS0xODkgMTg5WlwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gICAgY2RrLWNvbm5lY3RlZC1vdmVybGF5XG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvblxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcFxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJwYW5lbE9wZW5cIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwiX292ZXJsYXlXaWR0aFwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwiX3ByZWZlcnJlZE92ZXJsYXlPcmlnaW4gfHwgZmFsbGJhY2tPdmVybGF5T3JpZ2luXCJcbiAgICAoYXR0YWNoKT1cIl9vbkF0dGFjaGVkKClcIlxuICAgIChiYWNrZHJvcENsaWNrKT1cImNsb3NlKClcIlxuICAgIChkZXRhY2gpPVwiY2xvc2UoKVwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjcGFuZWxcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1wYW5lbCBuaWNlLXR5cGVhaGVhZC0tb3BlblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInBhbmVsQ2xhc3MoKVwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkICsgJy1wYW5lbCdcIlxuICAgICAgICBbQHRyYW5zZm9ybVBhbmVsXT1cIidzaG93aW5nJ1wiXG4gICAgICAgIChAdHJhbnNmb3JtUGFuZWwuZG9uZSk9XCJfcGFuZWxEb25lQW5pbWF0aW5nU3RyZWFtLm5leHQoJGV2ZW50LnRvU3RhdGUpXCJcbiAgICAgICAgKGtleWRvd24pPVwiX2hhbmRsZUtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIChzY3JvbGxlbmQpPVwiX2hhbmRsZVNjcm9sbEVuZCgpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1zZWFyY2gtaW5wdXRcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmljZS10eXBlYWhlYWRfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIl9zZWFyY2hDb250cm9sXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICNvcHRpb25zQ29udGFpbmVyIGNsYXNzPVwibmljZS10eXBlYWhlYWQtb3B0aW9uc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRWYWx1ZXMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAob3B0aW9uVGVtcGxhdGUoKTsgYXMgb3B0aW9uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdExhYmVsKGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICB9IEBlbXB0eSB7XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmljZS10eXBlYWhlYWRfX25vLWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub0l0ZW1zRm91bmRMYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -46,7 +46,7 @@ export class NiceTypeahead extends NiceTypeaheadBase {
46
46
  });
47
47
  }
48
48
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceTypeahead, deps: null, target: i0.ɵɵFactoryTarget.Component });
49
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NiceTypeahead, isStandalone: true, selector: "nice-typeahead", inputs: { values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: true, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [{ provide: MatFormFieldControl, useExisting: NiceTypeahead }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NiceTypeahead, isStandalone: true, selector: "nice-typeahead", inputs: { values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: true, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [{ provide: MatFormFieldControl, useExisting: NiceTypeahead }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceTypeahead, decorators: [{
52
52
  type: Component,
@@ -77,6 +77,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
77
77
  "(keydown)": "_handleKeydown($event)",
78
78
  "(focus)": "onFocusChanged(true)",
79
79
  "(blur)": "onFocusChanged(false)"
80
- }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"] }]
80
+ }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"] }]
81
81
  }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWNvbXBvbmVudHMvdHlwZWFoZWFkL3R5cGVhaGVhZC50cyIsIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL3R5cGVhaGVhZC90eXBlYWhlYWQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBMkNyRCxNQUFNLE9BQU8sYUFBaUIsU0FBUSxpQkFBb0I7SUFDdEMsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQU8sQ0FBQztJQUMvQixRQUFRLEdBQUcsS0FBSyxFQUFxQixDQUFDO0lBRXRDLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElB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QXNCLEVBQUUscUJBQXFCO3dCQUM3QyxxQkFBcUIsRUFBRSxZQUFZO3dCQUNuQyxpQ0FBaUMsRUFBRSxVQUFVO3dCQUM3QyxnQ0FBZ0MsRUFBRSxZQUFZO3dCQUM5QyxpQ0FBaUMsRUFBRSxVQUFVO3dCQUM3Qyw4QkFBOEIsRUFBRSxPQUFPO3dCQUN2QyxXQUFXLEVBQUUsd0JBQXdCO3dCQUNyQyxTQUFTLEVBQUUsc0JBQXNCO3dCQUNqQyxRQUFRLEVBQUUsdUJBQXVCO3FCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4gfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5pbXBvcnQgeyBtYXRTZWxlY3RBbmltYXRpb25zIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xuaW1wb3J0IHsgTmljZVR5cGVhaGVhZEJhc2UgfSBmcm9tIFwiLi90eXBlYWhlYWQtYmFzZVwiO1xuXG5leHBvcnQgdHlwZSBTZWFyY2hGdW5jdGlvbjxUPiA9IChzZWFyY2g6IHN0cmluZywgaXRlbTogVCkgPT4gYm9vbGVhbjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibmljZS10eXBlYWhlYWRcIixcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgICAgICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0T3B0aW9uLFxuICAgICAgICBNYXRGb3JtRmllbGQsXG4gICAgICAgIE1hdElucHV0LFxuICAgICAgICBNYXRJY29uQnV0dG9uLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0XG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3R5cGVhaGVhZC5odG1sXCIsXG4gICAgc3R5bGVVcmw6IFwiLi90eXBlYWhlYWQuc2Nzc1wiLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgYW5pbWF0aW9uczogW21hdFNlbGVjdEFuaW1hdGlvbnMudHJhbnNmb3JtUGFuZWxdLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IE5pY2VUeXBlYWhlYWQgfV0sXG4gICAgaG9zdDoge1xuICAgICAgICBcInJvbGVcIjogXCJjb21ib2JveFwiLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJsaXN0Ym94XCIsXG4gICAgICAgIFwiY2xhc3NcIjogXCJuaWNlLXR5cGVhaGVhZFwiLFxuICAgICAgICBcIlthdHRyLmlkXVwiOiBcImlkXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1jb250cm9sc11cIjogXCJwYW5lbE9wZW4gPyBpZCArIFxcXCItcGFuZWxcXFwiIDogbnVsbFwiLFxuICAgICAgICBcIlthdHRyLmFyaWEtZXhwYW5kZWRdXCI6IFwicGFuZWxPcGVuXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1yZXF1aXJlZF1cIjogXCJyZXF1aXJlZC50b1N0cmluZygpXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1kaXNhYmxlZF1cIjogXCJkaXNhYmxlZC50b1N0cmluZygpXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1pbnZhbGlkXVwiOiBcImVycm9yU3RhdGVcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtZGlzYWJsZWRdXCI6IFwiZGlzYWJsZWRcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtaW52YWxpZF1cIjogXCJlcnJvclN0YXRlXCIsXG4gICAgICAgIFwiW2NsYXNzLm5pY2UtdHlwZWFoZWFkLXJlcXVpcmVkXVwiOiBcInJlcXVpcmVkXCIsXG4gICAgICAgIFwiW2NsYXNzLm5pY2UtdHlwZWFoZWFkLWVtcHR5XVwiOiBcImVtcHR5XCIsXG4gICAgICAgIFwiKGtleWRvd24pXCI6IFwiX2hhbmRsZUtleWRvd24oJGV2ZW50KVwiLFxuICAgICAgICBcIihmb2N1cylcIjogXCJvbkZvY3VzQ2hhbmdlZCh0cnVlKVwiLFxuICAgICAgICBcIihibHVyKVwiOiBcIm9uRm9jdXNDaGFuZ2VkKGZhbHNlKVwiXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBOaWNlVHlwZWFoZWFkPFQ+IGV4dGVuZHMgTmljZVR5cGVhaGVhZEJhc2U8VD4ge1xuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZXMgPSBpbnB1dC5yZXF1aXJlZDxUW10+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNlYXJjaEZuID0gaW5wdXQ8U2VhcmNoRnVuY3Rpb248VD4+KCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyZWRWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZpbHRlclZhbHVlc0Zyb21TZWFyY2godGhpcy5fc2VhcmNoVmFsdWUoKSwgdGhpcy52YWx1ZXMoKSkpO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIG9uRm9jdXNDaGFuZ2VkKGlzRm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBzdXBlci5vbkZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChpc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaENvbnRyb2wucGF0Y2hWYWx1ZShcIlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJWYWx1ZXNGcm9tU2VhcmNoKHNlYXJjaFZhbHVlOiBzdHJpbmcsIHZhbHVlczogVFtdKTogVFtdIHtcbiAgICAgICAgaWYgKCFzZWFyY2hWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9zZWFyY2hWYWx1ZSA9IHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGZuID0gdGhpcy5zZWFyY2hGbigpO1xuICAgICAgICBpZiAoZm4pIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKCh2KSA9PiBmbihfc2VhcmNoVmFsdWUsIHYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKF9zZWFyY2hWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5sYWJlbFByb3BlcnR5KCk7XG4gICAgICAgICAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAmJiBwcm9wZXJ0eSBpbiB2KSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICByZXR1cm4gdltwcm9wZXJ0eV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKF9zZWFyY2hWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgICNmYWxsYmFja092ZXJsYXlPcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkXCJcbiAgICBjZGstb3ZlcmxheS1vcmlnaW5cbj5cbiAgICA8ZGl2IGNsYXNzPVwibmljZS10eXBlYWhlYWQtdmFsdWVcIj5cbiAgICAgICAgQGlmIChfZW1wdHkoKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1wbGFjZWhvbGRlciBtYXQtbWRjLXNlbGVjdC1taW4tbGluZVwiPnt7IF9wbGFjZWhvbGRlcigpIH19PC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmljZS10eXBlYWhlYWQtdmFsdWUtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LW1kYy1zZWxlY3QtbWluLWxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChfdmFsdWUoKTsgYXMgYWN0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdExhYmVsKGFjdGl2ZVZhbHVlKSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibmljZS10eXBlYWhlYWQtc3VmZml4XCI+XG4gICAgICAgIEBpZiAoX2VtcHR5KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLXNlbGVjdC1hcnJvd1wiPlxuICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmb2N1c2FibGU9XCJmYWxzZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTBsNSA1IDUtNXpcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAoY2FuUmVtb3ZlVmFsdWUoKSkge1xuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkLXJlbW92ZVwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVBY3RpdmVWYWx1ZSgpXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIm0yOTEtMjQwLTUxLTUxIDE4OS0xODktMTg5LTE4OSA1MS01MSAxODkgMTg5IDE4OS0xODkgNTEgNTEtMTg5IDE4OSAxODkgMTg5LTUxIDUxLTE4OS0xODktMTg5IDE4OVpcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAgIGNkay1jb25uZWN0ZWQtb3ZlcmxheVxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb25cbiAgICBjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BcbiAgICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwicGFuZWxPcGVuXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoXT1cIl9vdmVybGF5V2lkdGhcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cIl9wcmVmZXJyZWRPdmVybGF5T3JpZ2luIHx8IGZhbGxiYWNrT3ZlcmxheU9yaWdpblwiXG4gICAgKGF0dGFjaCk9XCJfb25BdHRhY2hlZCgpXCJcbiAgICAoYmFja2Ryb3BDbGljayk9XCJjbG9zZSgpXCJcbiAgICAoZGV0YWNoKT1cImNsb3NlKClcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgI3BhbmVsXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwibmljZS10eXBlYWhlYWQtcGFuZWwgbmljZS10eXBlYWhlYWQtLW9wZW5cIlxuICAgICAgICBbbmdDbGFzc109XCJwYW5lbENsYXNzKClcIlxuICAgICAgICBbYXR0ci5pZF09XCJpZCArICctcGFuZWwnXCJcbiAgICAgICAgW0B0cmFuc2Zvcm1QYW5lbF09XCInc2hvd2luZydcIlxuICAgICAgICAoQHRyYW5zZm9ybVBhbmVsLmRvbmUpPVwiX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbS5uZXh0KCRldmVudC50b1N0YXRlKVwiXG4gICAgICAgIChrZXlkb3duKT1cIl9oYW5kbGVLZXlkb3duKCRldmVudClcIlxuICAgICAgICAoc2Nyb2xsZW5kKT1cIl9oYW5kbGVTY3JvbGxFbmQoKVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmljZS10eXBlYWhlYWQtc2VhcmNoLWlucHV0XCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJfc2VhcmNoQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAjb3B0aW9uc0NvbnRhaW5lciBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkLW9wdGlvbnNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkVmFsdWVzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG9wdGlvblRlbXBsYXRlKCk7IGFzIG9wdGlvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRMYWJlbChpdGVtKSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfSBAZW1wdHkge1xuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGRpc2FibGVkPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkX19uby1pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9JdGVtc0ZvdW5kTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWNvbXBvbmVudHMvdHlwZWFoZWFkL3R5cGVhaGVhZC50cyIsIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL3R5cGVhaGVhZC90eXBlYWhlYWQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBMkNyRCxNQUFNLE9BQU8sYUFBaUIsU0FBUSxpQkFBb0I7SUFDdEMsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQU8sQ0FBQztJQUMvQixRQUFRLEdBQUcsS0FBSyxFQUFxQixDQUFDO0lBRXRDLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElB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QXNCLEVBQUUscUJBQXFCO3dCQUM3QyxxQkFBcUIsRUFBRSxZQUFZO3dCQUNuQyxpQ0FBaUMsRUFBRSxVQUFVO3dCQUM3QyxnQ0FBZ0MsRUFBRSxZQUFZO3dCQUM5QyxpQ0FBaUMsRUFBRSxVQUFVO3dCQUM3Qyw4QkFBOEIsRUFBRSxPQUFPO3dCQUN2QyxXQUFXLEVBQUUsd0JBQXdCO3dCQUNyQyxTQUFTLEVBQUUsc0JBQXNCO3dCQUNqQyxRQUFRLEVBQUUsdUJBQXVCO3FCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4gfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5pbXBvcnQgeyBtYXRTZWxlY3RBbmltYXRpb25zIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xuaW1wb3J0IHsgTmljZVR5cGVhaGVhZEJhc2UgfSBmcm9tIFwiLi90eXBlYWhlYWQtYmFzZVwiO1xuXG5leHBvcnQgdHlwZSBTZWFyY2hGdW5jdGlvbjxUPiA9IChzZWFyY2g6IHN0cmluZywgaXRlbTogVCkgPT4gYm9vbGVhbjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibmljZS10eXBlYWhlYWRcIixcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgICAgICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0T3B0aW9uLFxuICAgICAgICBNYXRGb3JtRmllbGQsXG4gICAgICAgIE1hdElucHV0LFxuICAgICAgICBNYXRJY29uQnV0dG9uLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0XG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3R5cGVhaGVhZC5odG1sXCIsXG4gICAgc3R5bGVVcmw6IFwiLi90eXBlYWhlYWQuc2Nzc1wiLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgYW5pbWF0aW9uczogW21hdFNlbGVjdEFuaW1hdGlvbnMudHJhbnNmb3JtUGFuZWxdLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IE5pY2VUeXBlYWhlYWQgfV0sXG4gICAgaG9zdDoge1xuICAgICAgICBcInJvbGVcIjogXCJjb21ib2JveFwiLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJsaXN0Ym94XCIsXG4gICAgICAgIFwiY2xhc3NcIjogXCJuaWNlLXR5cGVhaGVhZFwiLFxuICAgICAgICBcIlthdHRyLmlkXVwiOiBcImlkXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1jb250cm9sc11cIjogXCJwYW5lbE9wZW4gPyBpZCArIFxcXCItcGFuZWxcXFwiIDogbnVsbFwiLFxuICAgICAgICBcIlthdHRyLmFyaWEtZXhwYW5kZWRdXCI6IFwicGFuZWxPcGVuXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1yZXF1aXJlZF1cIjogXCJyZXF1aXJlZC50b1N0cmluZygpXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1kaXNhYmxlZF1cIjogXCJkaXNhYmxlZC50b1N0cmluZygpXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1pbnZhbGlkXVwiOiBcImVycm9yU3RhdGVcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtZGlzYWJsZWRdXCI6IFwiZGlzYWJsZWRcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtaW52YWxpZF1cIjogXCJlcnJvclN0YXRlXCIsXG4gICAgICAgIFwiW2NsYXNzLm5pY2UtdHlwZWFoZWFkLXJlcXVpcmVkXVwiOiBcInJlcXVpcmVkXCIsXG4gICAgICAgIFwiW2NsYXNzLm5pY2UtdHlwZWFoZWFkLWVtcHR5XVwiOiBcImVtcHR5XCIsXG4gICAgICAgIFwiKGtleWRvd24pXCI6IFwiX2hhbmRsZUtleWRvd24oJGV2ZW50KVwiLFxuICAgICAgICBcIihmb2N1cylcIjogXCJvbkZvY3VzQ2hhbmdlZCh0cnVlKVwiLFxuICAgICAgICBcIihibHVyKVwiOiBcIm9uRm9jdXNDaGFuZ2VkKGZhbHNlKVwiXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBOaWNlVHlwZWFoZWFkPFQ+IGV4dGVuZHMgTmljZVR5cGVhaGVhZEJhc2U8VD4ge1xuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZXMgPSBpbnB1dC5yZXF1aXJlZDxUW10+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNlYXJjaEZuID0gaW5wdXQ8U2VhcmNoRnVuY3Rpb248VD4+KCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyZWRWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZpbHRlclZhbHVlc0Zyb21TZWFyY2godGhpcy5fc2VhcmNoVmFsdWUoKSwgdGhpcy52YWx1ZXMoKSkpO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIG9uRm9jdXNDaGFuZ2VkKGlzRm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBzdXBlci5vbkZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChpc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaENvbnRyb2wucGF0Y2hWYWx1ZShcIlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJWYWx1ZXNGcm9tU2VhcmNoKHNlYXJjaFZhbHVlOiBzdHJpbmcsIHZhbHVlczogVFtdKTogVFtdIHtcbiAgICAgICAgaWYgKCFzZWFyY2hWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9zZWFyY2hWYWx1ZSA9IHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGZuID0gdGhpcy5zZWFyY2hGbigpO1xuICAgICAgICBpZiAoZm4pIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKCh2KSA9PiBmbihfc2VhcmNoVmFsdWUsIHYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKF9zZWFyY2hWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5sYWJlbFByb3BlcnR5KCk7XG4gICAgICAgICAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAmJiBwcm9wZXJ0eSBpbiB2KSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICByZXR1cm4gdltwcm9wZXJ0eV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKF9zZWFyY2hWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgICNmYWxsYmFja092ZXJsYXlPcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkXCJcbiAgICBjZGstb3ZlcmxheS1vcmlnaW5cbj5cbiAgICA8ZGl2IGNsYXNzPVwibmljZS10eXBlYWhlYWQtdmFsdWVcIj5cbiAgICAgICAgQGlmIChfZW1wdHkoKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1wbGFjZWhvbGRlciBtYXQtbWRjLXNlbGVjdC1taW4tbGluZVwiPnt7IF9wbGFjZWhvbGRlcigpIH19PC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmljZS10eXBlYWhlYWQtdmFsdWUtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LW1kYy1zZWxlY3QtbWluLWxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChfdmFsdWUoKTsgYXMgYWN0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdExhYmVsKGFjdGl2ZVZhbHVlKSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibmljZS10eXBlYWhlYWQtc3VmZml4XCI+XG4gICAgICAgIEBpZiAoX2VtcHR5KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLXNlbGVjdC1hcnJvd1wiPlxuICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmb2N1c2FibGU9XCJmYWxzZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTBsNSA1IDUtNXpcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAoY2FuUmVtb3ZlVmFsdWUoKSkge1xuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkLXJlbW92ZVwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVBY3RpdmVWYWx1ZSgpXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIm0yOTEtMjQwLTUxLTUxIDE4OS0xODktMTg5LTE4OSA1MS01MSAxODkgMTg5IDE4OS0xODkgNTEgNTEtMTg5IDE4OSAxODkgMTg5LTUxIDUxLTE4OS0xODktMTg5IDE4OVpcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAgIGNkay1jb25uZWN0ZWQtb3ZlcmxheVxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb25cbiAgICBjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BcbiAgICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwicGFuZWxPcGVuXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoXT1cIl9vdmVybGF5V2lkdGhcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cIl9wcmVmZXJyZWRPdmVybGF5T3JpZ2luIHx8IGZhbGxiYWNrT3ZlcmxheU9yaWdpblwiXG4gICAgKGF0dGFjaCk9XCJfb25BdHRhY2hlZCgpXCJcbiAgICAoYmFja2Ryb3BDbGljayk9XCJjbG9zZSgpXCJcbiAgICAoZGV0YWNoKT1cImNsb3NlKClcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgI3BhbmVsXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwibmljZS10eXBlYWhlYWQtcGFuZWwgbmljZS10eXBlYWhlYWQtLW9wZW5cIlxuICAgICAgICBbbmdDbGFzc109XCJwYW5lbENsYXNzKClcIlxuICAgICAgICBbYXR0ci5pZF09XCJpZCArICctcGFuZWwnXCJcbiAgICAgICAgW0B0cmFuc2Zvcm1QYW5lbF09XCInc2hvd2luZydcIlxuICAgICAgICAoQHRyYW5zZm9ybVBhbmVsLmRvbmUpPVwiX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbS5uZXh0KCRldmVudC50b1N0YXRlKVwiXG4gICAgICAgIChrZXlkb3duKT1cIl9oYW5kbGVLZXlkb3duKCRldmVudClcIlxuICAgICAgICAoc2Nyb2xsZW5kKT1cIl9oYW5kbGVTY3JvbGxFbmQoKVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmljZS10eXBlYWhlYWQtc2VhcmNoLWlucHV0XCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJfc2VhcmNoQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAjb3B0aW9uc0NvbnRhaW5lciBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkLW9wdGlvbnNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkVmFsdWVzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG9wdGlvblRlbXBsYXRlKCk7IGFzIG9wdGlvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRMYWJlbChpdGVtKSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfSBAZW1wdHkge1xuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGRpc2FibGVkPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkX19uby1pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9JdGVtc0ZvdW5kTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -677,7 +677,7 @@ class NiceAsyncTypeahead extends NiceTypeaheadBase {
677
677
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NiceAsyncTypeahead, isStandalone: true, selector: "nice-async-typeahead", inputs: { resource: { classPropertyName: "resource", publicName: "resource", isSignal: true, isRequired: true, transformFunction: null }, searchOptions: { classPropertyName: "searchOptions", publicName: "searchOptions", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [
678
678
  { provide: MatFormFieldControl, useExisting: NiceAsyncTypeahead },
679
679
  NiceTypeaheadService
680
- ], viewQueries: [{ propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
680
+ ], viewQueries: [{ propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
681
681
  }
682
682
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceAsyncTypeahead, decorators: [{
683
683
  type: Component,
@@ -711,7 +711,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
711
711
  "(keydown)": "_handleKeydown($event)",
712
712
  "(focus)": "onFocusChanged(true)",
713
713
  "(blur)": "onFocusChanged(false)"
714
- }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"] }]
714
+ }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"] }]
715
715
  }], ctorParameters: () => [] });
716
716
 
717
717
  class NiceTypeahead extends NiceTypeaheadBase {
@@ -750,7 +750,7 @@ class NiceTypeahead extends NiceTypeaheadBase {
750
750
  });
751
751
  }
752
752
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceTypeahead, deps: null, target: i0.ɵɵFactoryTarget.Component });
753
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NiceTypeahead, isStandalone: true, selector: "nice-typeahead", inputs: { values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: true, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [{ provide: MatFormFieldControl, useExisting: NiceTypeahead }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
753
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NiceTypeahead, isStandalone: true, selector: "nice-typeahead", inputs: { values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: true, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [{ provide: MatFormFieldControl, useExisting: NiceTypeahead }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
754
754
  }
755
755
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceTypeahead, decorators: [{
756
756
  type: Component,
@@ -781,7 +781,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
781
781
  "(keydown)": "_handleKeydown($event)",
782
782
  "(focus)": "onFocusChanged(true)",
783
783
  "(blur)": "onFocusChanged(false)"
784
- }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"] }]
784
+ }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"] }]
785
785
  }] });
786
786
 
787
787
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"recursyve-ngx-material-components-typeahead.mjs","sources":["../../../src/material-components/typeahead/providers/async-typeahead.provider.ts","../../../src/material-components/typeahead/constants.ts","../../../src/material-components/typeahead/providers/async-typeahead.service.ts","../../../src/material-components/typeahead/provider.ts","../../../src/material-components/typeahead/typeahead-base.ts","../../../src/material-components/typeahead/async-typeahead.ts","../../../src/material-components/typeahead/typeahead.html","../../../src/material-components/typeahead/typeahead.ts","../../../src/material-components/typeahead/recursyve-ngx-material-components-typeahead.ts"],"sourcesContent":["import { Observable } from \"rxjs\";\n\nexport type NiceAsyncTypeaheadSearchResult<T> = {\n items: T[];\n nextPage: number | null;\n}\n\nexport abstract class NiceAsyncTypeaheadResourceProvider<T, ID = number, Options = object> {\n public abstract resource: string;\n\n public abstract search(\n searchQuery: string,\n page: number,\n options?: Options\n ): Observable<NiceAsyncTypeaheadSearchResult<T>>;\n\n public abstract getById(id: ID, options?: Options): Observable<T>;\n\n public abstract format(item: T): string;\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_ASYNC_TYPEAHEAD_RESOURCES_PROVIDER = new InjectionToken(\"nice_async_typeahead_provider\");\n","import { computed, DestroyRef, inject, Injectable, signal } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { catchError, defer, EMPTY, finalize, map, Observable, Subject, switchMap } from \"rxjs\";\nimport { NICE_ASYNC_TYPEAHEAD_RESOURCES_PROVIDER } from \"../constants\";\nimport { NiceAsyncTypeaheadResourceProvider } from \"./async-typeahead.provider\";\n\nexport type AsyncTypeaheadRequests = {\n page: number;\n searchQuery?: string;\n};\n\nexport type FetchActiveRequest = {\n id: number | string;\n};\n\n@Injectable()\nexport class NiceTypeaheadService<T extends object> {\n private readonly resources = inject<NiceAsyncTypeaheadResourceProvider<unknown>[]>(\n NICE_ASYNC_TYPEAHEAD_RESOURCES_PROVIDER, { optional: true }\n ) ?? [];\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly fetchResources$ = new Subject<AsyncTypeaheadRequests>();\n private readonly fetchActive$ = new Subject<FetchActiveRequest>();\n private resourceProvider: NiceAsyncTypeaheadResourceProvider<T, string | number> | null = null;\n\n private readonly _items = signal<T[]>([]);\n private readonly _active = signal<T | null>(null);\n private readonly _searchOptions = signal<object | null>(null);\n private readonly _request = signal<AsyncTypeaheadRequests | null>(null);\n private readonly _nextRequest = signal<AsyncTypeaheadRequests | null>(null);\n private readonly _loading = signal(true);\n\n public readonly items = this._items.asReadonly();\n public readonly active = this._active.asReadonly();\n public readonly loading = this._loading.asReadonly();\n public readonly isLastPage = computed(() => !this._nextRequest());\n\n public init(resource: string): void {\n this.fetchResources$.pipe(takeUntilDestroyed(this.destroyRef)).pipe(\n switchMap((request) => this.fetchResources(request))\n ).subscribe();\n this.fetchActive$.pipe(takeUntilDestroyed(this.destroyRef)).pipe(\n switchMap((request) => this.fetchActive(request))\n ).subscribe();\n\n const provider = this.resources.find((resources) => resources.resource === resource);\n if (provider) {\n this.resourceProvider = provider as NiceAsyncTypeaheadResourceProvider<T>;\n }\n }\n\n public setSearchOptions(options: object | null): void {\n this._searchOptions.set(options);\n }\n\n public setActive(active: T | null): void {\n this._active.set(active);\n }\n\n public setActiveFromId(id: number | string): void {\n this.fetchActive$.next({ id });\n }\n\n public reloadActive(): void {\n const active = this._active();\n if (!active || !(\"id\" in active)) {\n return;\n }\n\n if (!(typeof active.id === \"number\" || typeof active.id === \"string\")) {\n return;\n }\n\n this.setActiveFromId(active.id);\n }\n\n public setItems(items: T[]): void {\n this._items.set(items);\n }\n\n public search(searchQuery: string): void {\n this.fetchResources$.next({\n searchQuery,\n page: 0\n });\n }\n\n public loadMore(): void {\n const nextRequest = this._nextRequest();\n if (!nextRequest || this._loading()) {\n return;\n }\n\n this.fetchResources$.next(nextRequest);\n }\n\n public fetchActive(request: FetchActiveRequest): Observable<void> {\n return defer(() => {\n if (!this.resourceProvider) {\n return EMPTY;\n }\n\n this._loading.set(true);\n\n const localItem = this._items().find((item) => \"id\" in item && item.id === request.id);\n if (localItem) {\n this._loading.set(false);\n this._items.set([localItem]);\n this._active.set(localItem);\n return EMPTY;\n }\n\n return this.resourceProvider.getById(request.id)\n }).pipe(\n map((item) => {\n this._items.set([item]);\n this._active.set(item);\n }),\n catchError(() => EMPTY),\n finalize(() => {\n this._loading.set(false);\n })\n );\n }\n\n public fetchResources(request: AsyncTypeaheadRequests): Observable<void> {\n return defer(() => {\n if (!this.resourceProvider) {\n return EMPTY;\n }\n\n this._loading.set(true);\n this._request.set(request);\n\n return this.resourceProvider.search(request.searchQuery ?? \"\", request.page, this._searchOptions() ?? {});\n }).pipe(\n map((result) => {\n if (request.page === 0) {\n this._items.set(result.items as T[]);\n } else {\n this._items.set([\n ...this._items(),\n ...(result.items as T[])\n ]);\n }\n\n if (result.nextPage) {\n this._nextRequest.set({\n ...request,\n page: result.nextPage\n });\n } else {\n this._nextRequest.set(null);\n }\n }),\n catchError(() => EMPTY),\n finalize(() => {\n this._loading.set(false);\n })\n );\n }\n\n public formatLabel(item: T): string {\n if (!this.resourceProvider) {\n return \"\";\n }\n\n return this.resourceProvider.format(item);\n }\n}\n","import { Provider, Type } from \"@angular/core\";\nimport { NICE_ASYNC_TYPEAHEAD_RESOURCES_PROVIDER } from \"./constants\";\nimport { NiceAsyncTypeaheadResourceProvider } from \"./providers/async-typeahead.provider\";\n\nexport function provideAsyncTypeaheadResources(\n providers: Type<NiceAsyncTypeaheadResourceProvider<unknown, unknown>>[]\n): Provider[] {\n return providers.map((provider) => ({\n provide: NICE_ASYNC_TYPEAHEAD_RESOURCES_PROVIDER,\n useClass: provider,\n multi: true\n }));\n}\n","import { ActiveDescendantKeyManager } from \"@angular/cdk/a11y\";\nimport { SelectionModel } from \"@angular/cdk/collections\";\nimport { DOWN_ARROW, ENTER, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from \"@angular/cdk/keycodes\";\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from \"@angular/cdk/overlay\";\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n QueryList,\n signal,\n TemplateRef,\n viewChild,\n ViewChildren\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { ControlValueAccessor, FormBuilder, NgControl } from \"@angular/forms\";\nimport { _getOptionScrollPosition, MatOption, MatOptionSelectionChange } from \"@angular/material/core\";\nimport { MAT_FORM_FIELD, MatFormField, MatFormFieldControl } from \"@angular/material/form-field\";\nimport {\n debounceTime,\n defer,\n distinctUntilChanged,\n merge,\n Observable,\n startWith,\n Subject,\n switchMap,\n take,\n takeUntil\n} from \"rxjs\";\n\n/**\n * Implementation of the same panel and overlay logic as the official Angular MatSelect.\n * This used some of the logic from MatSelect to make this component look and feel like a MatSelect.\n */\n@Directive()\nexport class NiceTypeaheadBase<T>\n implements\n MatFormFieldControl<T>,\n ControlValueAccessor,\n OnInit,\n AfterViewInit,\n OnDestroy\n{\n @ViewChildren(MatOption)\n private readonly options!: QueryList<MatOption>;\n\n public readonly noItemsFoundLabel = input<string>(\"No items found\");\n public readonly labelProperty = input<string>();\n public readonly formatLabelFn = input<((value: T) => string)>();\n public readonly optionTemplate = input<TemplateRef<{ $implicit: T }>>();\n public readonly panelClass = input<string | string[]>([]);\n public readonly canRemoveValue = input<boolean>(true);\n\n private static nextId = 0;\n\n protected readonly _input = viewChild<ElementRef<HTMLInputElement>>(\"input\");\n protected readonly _panel = viewChild<ElementRef<HTMLElement>>(\"panel\");\n protected readonly _overlayDir = viewChild(CdkConnectedOverlay);\n\n protected _focused = false;\n protected _required = false;\n protected _disabled = false;\n protected _panelOpen = false;\n protected _compareWith = (o1: T, o2: T) => o1 === o2;\n\n protected readonly _value = signal<T | null>(null);\n protected readonly _empty = computed(() => !this._value());\n protected readonly _placeholder = signal(\"\");\n protected readonly _searchValue = signal(\"\");\n\n protected readonly _elementRef = inject(ElementRef);\n protected readonly _destroyRef = inject(DestroyRef);\n protected readonly _changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly _fb = inject(FormBuilder);\n\n protected readonly _searchControl = this._fb.nonNullable.control(\"\");\n protected readonly _initialized = new Subject<void>();\n\n protected readonly _parentFormField = inject<MatFormField>(MAT_FORM_FIELD, { optional: true });\n\n public readonly id: string = `nice-typeahead-${NiceTypeaheadBase.nextId++}`;\n public readonly controlType: string = \"nice-typeahead\";\n public readonly stateChanges = new Subject<void>();\n public readonly optionSelectionChanges: Observable<MatOptionSelectionChange> = defer(() => {\n const options = this.options;\n\n if (options) {\n return options.changes.pipe(\n startWith(options),\n switchMap(() => merge(...options.map(option => option.onSelectionChange))),\n );\n }\n\n return this._initialized.pipe(switchMap(() => this.optionSelectionChanges));\n });\n\n public readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n public readonly _panelDoneAnimatingStream = new Subject<string>();\n\n public _keyManager!: ActiveDescendantKeyManager<MatOption>;\n public _preferredOverlayOrigin?: CdkOverlayOrigin | ElementRef;\n public _overlayWidth!: string | number;\n public _selectionModel!: SelectionModel<MatOption>;\n public _onChange?: (value: T | null) => void;\n public _onTouch?: () => void;\n\n public get placeholder(): string {\n return this._placeholder();\n }\n\n public set placeholder(placeholder) {\n this._placeholder.set(placeholder);\n this.stateChanges.next();\n }\n\n public get focused(): boolean {\n return this._focused;\n }\n\n public set focused(isFocused: boolean) {\n this._focused = isFocused;\n this.stateChanges.next();\n }\n\n public get required(): boolean {\n return this._required;\n }\n\n public set required(isRequired: boolean) {\n this._required = isRequired;\n this.stateChanges.next();\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(value: boolean) {\n this._disabled = value;\n this.stateChanges.next();\n }\n\n public get value(): T | null {\n return this._value();\n }\n\n public set value(value: T | null) {\n const hasAssigned = this._assignValue(value);\n\n if (hasAssigned) {\n this._onChange?.(value);\n }\n }\n\n public get empty(): boolean {\n return !this._value();\n }\n\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n public get errorState(): boolean {\n return false; // Implement error state logic as needed\n }\n\n public get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n constructor() {\n effect(() => {\n this._input()?.nativeElement.focus();\n });\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n this._selectionModel = new SelectionModel<MatOption>();\n\n this._searchControl.valueChanges.pipe(\n takeUntilDestroyed(this._destroyRef),\n debounceTime(250),\n distinctUntilChanged()\n ).subscribe((value) => this._searchValue.set(value));\n }\n\n public ngAfterViewInit(): void {\n this._initialized.next();\n this._initialized.complete();\n\n this._initKeyManager();\n\n this.options.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n public onContainerClick(event: MouseEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.stateChanges.next();\n if ((event.target as Element).tagName.toLowerCase() !== \"input\") {\n this.onFocusChanged(true);\n }\n }\n\n public setDescribedByIds(ids: string[]): void {\n const controlElement = this._elementRef.nativeElement.querySelector(\".nice-typeahead\");\n if (!controlElement) {\n return;\n }\n\n controlElement.setAttribute(\"aria-describedby\", ids.join(\" \"));\n }\n\n public onFocusChanged(isFocused: boolean): void {\n this.focused = isFocused;\n this.stateChanges.next();\n\n if (isFocused) {\n this.open();\n }\n }\n\n public writeValue(value: T): void {\n this._assignValue(value);\n }\n\n public registerOnChange(fn: (value: T | null) => void) {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouch = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n public formatLabel(item: T): string {\n if (typeof item === \"string\") {\n return item;\n }\n\n const fn = this.formatLabelFn();\n if (fn) {\n return fn(item);\n }\n\n const property = this.labelProperty();\n if (!property) {\n return item?.toString() ?? \"\";\n }\n\n if (!(typeof item === \"object\") || item === null) {\n return item?.toString() ?? \"\";\n }\n\n if (property in item) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return item[property];\n }\n\n return item.toString();\n }\n\n public removeActiveValue(): void {\n this.value = null;\n this._selectionModel.clear();\n this._keyManager.setActiveItem(-1);\n this._changeDetectorRef.markForCheck();\n }\n\n public open(): void {\n if (!this._canOpen()) {\n return;\n }\n\n // It's important that we read this as late as possible, because doing so earlier will\n // return a different element since it's based on queries in the form field which may\n // not have run yet. Also this needs to be assigned before we measure the overlay width.\n if (this._parentFormField) {\n this._preferredOverlayOrigin = this._parentFormField.getConnectedOverlayOrigin();\n }\n\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._changeDetectorRef.markForCheck();\n\n // Required for the MDC form field to pick up when the overlay has been opened.\n this.stateChanges.next();\n }\n\n public close(): void {\n if (!this._panelOpen) {\n return;\n }\n\n this._focused = false;\n this._panelOpen = false;\n this._changeDetectorRef.markForCheck();\n\n this._searchValue.set(\"\");\n\n // Required for the MDC form field to pick up when the overlay has been closed.\n this.stateChanges.next();\n }\n\n public focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n public _handleKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n\n if (this.panelOpen) {\n this._handleOpenKeydown(event);\n } else {\n this._handleClosedKeydown(event);\n }\n }\n\n public _handleScrollEnd(): void {\n console.log(\"scroll end\")\n }\n\n protected _canOpen(): boolean {\n return !this._panelOpen && !this.disabled;\n }\n\n protected _onAttached(): void {\n this._overlayDir()?.positionChange.pipe(take(1)).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n }\n\n protected _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager<MatOption>(this.options)\n .withVerticalOrientation()\n .withHomeAndEnd()\n .withPageUpDown()\n .withAllowedModifierKeys([\"shiftKey\"])\n .skipPredicate(this._skipPredicate);\n\n this._keyManager.tabOut.subscribe(() => {\n if (this.panelOpen) {\n if (this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n\n this.focus();\n this.close();\n }\n });\n\n this._keyManager.change.subscribe(() => {\n if (this._panelOpen && this._panel()) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n } else if (!this._panelOpen && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n\n protected _getOverlayWidth(preferredOrigin?: ElementRef<ElementRef> | CdkOverlayOrigin): string | number {\n const refToMeasure =\n preferredOrigin instanceof CdkOverlayOrigin\n ? preferredOrigin.elementRef\n : preferredOrigin || this._elementRef;\n return refToMeasure.nativeElement.getBoundingClientRect().width;\n }\n\n protected _skipPredicate = (option: MatOption) => {\n if (this.panelOpen) {\n return false;\n }\n\n return option.disabled;\n };\n\n protected _positioningSettled() {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n }\n\n protected _scrollOptionIntoView(index: number): void {\n const option = this.options.toArray()[index];\n if (!option) {\n return;\n }\n\n const panel = this._panel()?.nativeElement;\n if (!panel) {\n return;\n }\n\n const element = option._getHostElement();\n if (index === 0) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n panel.scrollTop = 0;\n } else {\n panel.scrollTop = _getOptionScrollPosition(\n element.offsetTop,\n element.offsetHeight,\n panel.scrollTop,\n panel.offsetHeight,\n );\n }\n }\n\n protected _resetOptions(): void {\n this.optionSelectionChanges.pipe(\n takeUntil(this.options.changes),\n takeUntilDestroyed(this._destroyRef)\n ).subscribe((event) => {\n this._onSelect(event.source);\n\n if (event.isUserInput && this._panelOpen) {\n this.close();\n this.focus();\n }\n });\n }\n\n protected _onSelect(option: MatOption): void {\n this.value = option.value;\n this._setSelectionByValue(option.value);\n this._selectOptionByValue(option.value);\n\n this.stateChanges.next();\n }\n\n protected _initializeSelection(): void {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n if (this.ngControl) {\n this._value.set(this.ngControl.value);\n }\n\n const _value = this.value;\n if (_value) {\n this._selectOptionByValue(_value);\n }\n this._setSelectionByValue(_value);\n\n this._highlightCorrectOption();\n this.stateChanges.next();\n });\n }\n\n protected _setSelectionByValue(value: T | null): void {\n this.options.forEach(option => option.setInactiveStyles());\n this._selectionModel.clear();\n\n const correspondingOption = value ? this._selectOptionByValue(value) : null;\n\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n correspondingOption.select(false);\n this._keyManager.updateActiveItem(correspondingOption);\n } else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.updateActiveItem(-1);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n\n protected _selectOptionByValue(value: T): MatOption | undefined {\n const correspondingOption = this.options.find((option: MatOption) => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n if (this._selectionModel.isSelected(option)) {\n return false;\n }\n\n try {\n // Treat null as a special reset value.\n return option.value != null && this._compareWith(option.value, value);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n return false;\n }\n });\n\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n\n return correspondingOption;\n }\n\n protected _highlightCorrectOption(): void {\n if (!this._keyManager) {\n return;\n }\n\n if (this.empty) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < this.options.length; index++) {\n const option = this.options.get(index)!;\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n\n this._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n\n\n protected _handleClosedKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey =\n keyCode === DOWN_ARROW ||\n keyCode === UP_ARROW ||\n keyCode === LEFT_ARROW ||\n keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this._keyManager;\n\n // Open the select on ALT + arrow key to match the native <select>\n if (\n (!manager.isTyping() && isOpenKey && !hasModifierKey(event)) ||\n (event.altKey && isArrowKey)\n ) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n }\n }\n\n protected _handleOpenKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n const isTyping = manager.isTyping();\n\n if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n } else if (\n !isTyping &&\n (keyCode === ENTER || keyCode === SPACE) &&\n manager.activeItem &&\n !hasModifierKey(event)\n ) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n } else {\n manager.onKeydown(event);\n }\n }\n\n protected _assignValue(newValue: T | null): boolean {\n // Always re-assign an array, because it might have been mutated.\n if (newValue !== this.value) {\n if (this.options) {\n this._setSelectionByValue(newValue);\n }\n\n this._value.set(newValue);\n return true;\n }\n return false;\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from \"@angular/cdk/overlay\";\nimport { NgClass, NgTemplateOutlet } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n OnInit,\n viewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatIconButton } from \"@angular/material/button\";\nimport { MatOption } from \"@angular/material/core\";\nimport { MatFormField, MatFormFieldControl } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { matSelectAnimations } from \"@angular/material/select\";\nimport { NiceTypeaheadBase } from \"./typeahead-base\";\nimport { NiceTypeaheadService } from \"./providers\";\n\n@Component({\n selector: \"nice-async-typeahead\",\n standalone: true,\n imports: [\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n ReactiveFormsModule,\n MatOption,\n MatFormField,\n MatInput,\n MatIconButton,\n NgClass,\n NgTemplateOutlet\n ],\n templateUrl: \"./typeahead.html\",\n styleUrl: \"./typeahead.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [matSelectAnimations.transformPanel],\n providers: [\n { provide: MatFormFieldControl, useExisting: NiceAsyncTypeahead },\n NiceTypeaheadService\n ],\n host: {\n \"role\": \"combobox\",\n \"aria-haspopup\": \"listbox\",\n \"class\": \"nice-typeahead\",\n \"[attr.id]\": \"id\",\n \"[attr.aria-controls]\": \"panelOpen ? id + \\\"-panel\\\" : null\",\n \"[attr.aria-expanded]\": \"panelOpen\",\n \"[attr.aria-required]\": \"required.toString()\",\n \"[attr.aria-disabled]\": \"disabled.toString()\",\n \"[attr.aria-invalid]\": \"errorState\",\n \"[class.nice-typeahead-disabled]\": \"disabled\",\n \"[class.nice-typeahead-invalid]\": \"errorState\",\n \"[class.nice-typeahead-required]\": \"required\",\n \"[class.nice-typeahead-empty]\": \"empty\",\n \"(keydown)\": \"_handleKeydown($event)\",\n \"(focus)\": \"onFocusChanged(true)\",\n \"(blur)\": \"onFocusChanged(false)\"\n }\n})\nexport class NiceAsyncTypeahead<T, S extends object = object> extends NiceTypeaheadBase<T> implements OnInit {\n public readonly resource = input.required<string>();\n public readonly searchOptions = input<S | null>(null);\n\n public readonly filteredValues = computed(() => this.service.items());\n\n protected readonly optionsContainer = viewChild<ElementRef<HTMLElement>>(\"optionsContainer\");\n\n private readonly service = inject(NiceTypeaheadService);\n\n protected override _compareWith = (o1: T, o2: T) => {\n if (!(typeof o1 === \"object\" && o1 && typeof o2 === \"object\" && o2)) {\n return o1 === o2;\n }\n\n if (!(\"id\" in o1) || !(\"id\" in o2)) {\n return o1 === o2;\n }\n\n return o1.id === o2.id;\n };\n\n /**\n * Infinite scroll internal state\n */\n private readonly scrollThresholdPercent = 0.99;\n private lastScrollHeight = 0;\n\n constructor() {\n super();\n\n effect(() => {\n this.service.setSearchOptions(this.searchOptions());\n }, {\n allowSignalWrites: true\n });\n\n effect(() => this.service.search(this._searchValue()), {\n allowSignalWrites: true\n });\n\n effect(() => {\n const container = this.optionsContainer();\n if (!container) {\n return;\n }\n\n container.nativeElement.addEventListener(\"scroll\", this.onScroll.bind(this));\n });\n }\n\n public override ngOnInit(): void {\n super.ngOnInit();\n\n this.service.init(this.resource());\n }\n\n public override onFocusChanged(isFocused: boolean): void {\n super.onFocusChanged(isFocused);\n\n if (isFocused) {\n this._searchControl.patchValue(\"\");\n }\n }\n\n public override formatLabel(item: T): string {\n return this.service.formatLabel(item);\n }\n\n public override removeActiveValue() {\n super.removeActiveValue();\n\n this.service.setActive(null);\n }\n\n protected onScroll(event: Event): void {\n const target = event.target as HTMLElement;\n const threshold = (this.scrollThresholdPercent * 100 * target.scrollHeight) / 100;\n const current = target.scrollTop + target.clientHeight;\n\n if (this.lastScrollHeight > target.scrollHeight) {\n this.lastScrollHeight = 0;\n }\n\n if (current > threshold && this.lastScrollHeight < target.scrollHeight) {\n this.service.loadMore();\n this.lastScrollHeight = target.scrollHeight;\n }\n }\n}\n","<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from \"@angular/cdk/overlay\";\nimport { NgClass, NgTemplateOutlet } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatIconButton } from \"@angular/material/button\";\nimport { MatOption } from \"@angular/material/core\";\nimport { MatFormField, MatFormFieldControl } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { matSelectAnimations } from \"@angular/material/select\";\nimport { NiceTypeaheadBase } from \"./typeahead-base\";\n\nexport type SearchFunction<T> = (search: string, item: T) => boolean;\n\n@Component({\n selector: \"nice-typeahead\",\n standalone: true,\n imports: [\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n ReactiveFormsModule,\n MatOption,\n MatFormField,\n MatInput,\n MatIconButton,\n NgClass,\n NgTemplateOutlet\n ],\n templateUrl: \"./typeahead.html\",\n styleUrl: \"./typeahead.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [matSelectAnimations.transformPanel],\n providers: [{ provide: MatFormFieldControl, useExisting: NiceTypeahead }],\n host: {\n \"role\": \"combobox\",\n \"aria-haspopup\": \"listbox\",\n \"class\": \"nice-typeahead\",\n \"[attr.id]\": \"id\",\n \"[attr.aria-controls]\": \"panelOpen ? id + \\\"-panel\\\" : null\",\n \"[attr.aria-expanded]\": \"panelOpen\",\n \"[attr.aria-required]\": \"required.toString()\",\n \"[attr.aria-disabled]\": \"disabled.toString()\",\n \"[attr.aria-invalid]\": \"errorState\",\n \"[class.nice-typeahead-disabled]\": \"disabled\",\n \"[class.nice-typeahead-invalid]\": \"errorState\",\n \"[class.nice-typeahead-required]\": \"required\",\n \"[class.nice-typeahead-empty]\": \"empty\",\n \"(keydown)\": \"_handleKeydown($event)\",\n \"(focus)\": \"onFocusChanged(true)\",\n \"(blur)\": \"onFocusChanged(false)\"\n }\n})\nexport class NiceTypeahead<T> extends NiceTypeaheadBase<T> {\n public readonly values = input.required<T[]>();\n public readonly searchFn = input<SearchFunction<T>>();\n\n public readonly filteredValues = computed(() => this.filterValuesFromSearch(this._searchValue(), this.values()));\n\n public override onFocusChanged(isFocused: boolean): void {\n super.onFocusChanged(isFocused);\n\n if (isFocused) {\n this._searchControl.patchValue(\"\");\n }\n }\n\n public filterValuesFromSearch(searchValue: string, values: T[]): T[] {\n if (!searchValue) {\n return values;\n }\n\n const _searchValue = searchValue.toLowerCase();\n const fn = this.searchFn();\n if (fn) {\n return values.filter((v) => fn(_searchValue, v));\n }\n\n return values.filter((v) => {\n if (typeof v === \"string\") {\n return v.toLowerCase().includes(_searchValue);\n }\n\n const property = this.labelProperty();\n if (!property) {\n return false;\n }\n\n if (typeof v === \"object\" && v && property in v) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return v[property].toString().toLowerCase().includes(_searchValue);\n }\n\n return false;\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recursyve-ngx-material-components-typeahead.mjs","sources":["../../../src/material-components/typeahead/providers/async-typeahead.provider.ts","../../../src/material-components/typeahead/constants.ts","../../../src/material-components/typeahead/providers/async-typeahead.service.ts","../../../src/material-components/typeahead/provider.ts","../../../src/material-components/typeahead/typeahead-base.ts","../../../src/material-components/typeahead/async-typeahead.ts","../../../src/material-components/typeahead/typeahead.html","../../../src/material-components/typeahead/typeahead.ts","../../../src/material-components/typeahead/recursyve-ngx-material-components-typeahead.ts"],"sourcesContent":["import { Observable } from \"rxjs\";\n\nexport type NiceAsyncTypeaheadSearchResult<T> = {\n items: T[];\n nextPage: number | null;\n}\n\nexport abstract class NiceAsyncTypeaheadResourceProvider<T, ID = number, Options = object> {\n public abstract resource: string;\n\n public abstract search(\n searchQuery: string,\n page: number,\n options?: Options\n ): Observable<NiceAsyncTypeaheadSearchResult<T>>;\n\n public abstract getById(id: ID, options?: Options): Observable<T>;\n\n public abstract format(item: T): string;\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_ASYNC_TYPEAHEAD_RESOURCES_PROVIDER = new InjectionToken(\"nice_async_typeahead_provider\");\n","import { computed, DestroyRef, inject, Injectable, signal } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { catchError, defer, EMPTY, finalize, map, Observable, Subject, switchMap } from \"rxjs\";\nimport { NICE_ASYNC_TYPEAHEAD_RESOURCES_PROVIDER } from \"../constants\";\nimport { NiceAsyncTypeaheadResourceProvider } from \"./async-typeahead.provider\";\n\nexport type AsyncTypeaheadRequests = {\n page: number;\n searchQuery?: string;\n};\n\nexport type FetchActiveRequest = {\n id: number | string;\n};\n\n@Injectable()\nexport class NiceTypeaheadService<T extends object> {\n private readonly resources = inject<NiceAsyncTypeaheadResourceProvider<unknown>[]>(\n NICE_ASYNC_TYPEAHEAD_RESOURCES_PROVIDER, { optional: true }\n ) ?? [];\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly fetchResources$ = new Subject<AsyncTypeaheadRequests>();\n private readonly fetchActive$ = new Subject<FetchActiveRequest>();\n private resourceProvider: NiceAsyncTypeaheadResourceProvider<T, string | number> | null = null;\n\n private readonly _items = signal<T[]>([]);\n private readonly _active = signal<T | null>(null);\n private readonly _searchOptions = signal<object | null>(null);\n private readonly _request = signal<AsyncTypeaheadRequests | null>(null);\n private readonly _nextRequest = signal<AsyncTypeaheadRequests | null>(null);\n private readonly _loading = signal(true);\n\n public readonly items = this._items.asReadonly();\n public readonly active = this._active.asReadonly();\n public readonly loading = this._loading.asReadonly();\n public readonly isLastPage = computed(() => !this._nextRequest());\n\n public init(resource: string): void {\n this.fetchResources$.pipe(takeUntilDestroyed(this.destroyRef)).pipe(\n switchMap((request) => this.fetchResources(request))\n ).subscribe();\n this.fetchActive$.pipe(takeUntilDestroyed(this.destroyRef)).pipe(\n switchMap((request) => this.fetchActive(request))\n ).subscribe();\n\n const provider = this.resources.find((resources) => resources.resource === resource);\n if (provider) {\n this.resourceProvider = provider as NiceAsyncTypeaheadResourceProvider<T>;\n }\n }\n\n public setSearchOptions(options: object | null): void {\n this._searchOptions.set(options);\n }\n\n public setActive(active: T | null): void {\n this._active.set(active);\n }\n\n public setActiveFromId(id: number | string): void {\n this.fetchActive$.next({ id });\n }\n\n public reloadActive(): void {\n const active = this._active();\n if (!active || !(\"id\" in active)) {\n return;\n }\n\n if (!(typeof active.id === \"number\" || typeof active.id === \"string\")) {\n return;\n }\n\n this.setActiveFromId(active.id);\n }\n\n public setItems(items: T[]): void {\n this._items.set(items);\n }\n\n public search(searchQuery: string): void {\n this.fetchResources$.next({\n searchQuery,\n page: 0\n });\n }\n\n public loadMore(): void {\n const nextRequest = this._nextRequest();\n if (!nextRequest || this._loading()) {\n return;\n }\n\n this.fetchResources$.next(nextRequest);\n }\n\n public fetchActive(request: FetchActiveRequest): Observable<void> {\n return defer(() => {\n if (!this.resourceProvider) {\n return EMPTY;\n }\n\n this._loading.set(true);\n\n const localItem = this._items().find((item) => \"id\" in item && item.id === request.id);\n if (localItem) {\n this._loading.set(false);\n this._items.set([localItem]);\n this._active.set(localItem);\n return EMPTY;\n }\n\n return this.resourceProvider.getById(request.id)\n }).pipe(\n map((item) => {\n this._items.set([item]);\n this._active.set(item);\n }),\n catchError(() => EMPTY),\n finalize(() => {\n this._loading.set(false);\n })\n );\n }\n\n public fetchResources(request: AsyncTypeaheadRequests): Observable<void> {\n return defer(() => {\n if (!this.resourceProvider) {\n return EMPTY;\n }\n\n this._loading.set(true);\n this._request.set(request);\n\n return this.resourceProvider.search(request.searchQuery ?? \"\", request.page, this._searchOptions() ?? {});\n }).pipe(\n map((result) => {\n if (request.page === 0) {\n this._items.set(result.items as T[]);\n } else {\n this._items.set([\n ...this._items(),\n ...(result.items as T[])\n ]);\n }\n\n if (result.nextPage) {\n this._nextRequest.set({\n ...request,\n page: result.nextPage\n });\n } else {\n this._nextRequest.set(null);\n }\n }),\n catchError(() => EMPTY),\n finalize(() => {\n this._loading.set(false);\n })\n );\n }\n\n public formatLabel(item: T): string {\n if (!this.resourceProvider) {\n return \"\";\n }\n\n return this.resourceProvider.format(item);\n }\n}\n","import { Provider, Type } from \"@angular/core\";\nimport { NICE_ASYNC_TYPEAHEAD_RESOURCES_PROVIDER } from \"./constants\";\nimport { NiceAsyncTypeaheadResourceProvider } from \"./providers/async-typeahead.provider\";\n\nexport function provideAsyncTypeaheadResources(\n providers: Type<NiceAsyncTypeaheadResourceProvider<unknown, unknown>>[]\n): Provider[] {\n return providers.map((provider) => ({\n provide: NICE_ASYNC_TYPEAHEAD_RESOURCES_PROVIDER,\n useClass: provider,\n multi: true\n }));\n}\n","import { ActiveDescendantKeyManager } from \"@angular/cdk/a11y\";\nimport { SelectionModel } from \"@angular/cdk/collections\";\nimport { DOWN_ARROW, ENTER, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from \"@angular/cdk/keycodes\";\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from \"@angular/cdk/overlay\";\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n QueryList,\n signal,\n TemplateRef,\n viewChild,\n ViewChildren\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { ControlValueAccessor, FormBuilder, NgControl } from \"@angular/forms\";\nimport { _getOptionScrollPosition, MatOption, MatOptionSelectionChange } from \"@angular/material/core\";\nimport { MAT_FORM_FIELD, MatFormField, MatFormFieldControl } from \"@angular/material/form-field\";\nimport {\n debounceTime,\n defer,\n distinctUntilChanged,\n merge,\n Observable,\n startWith,\n Subject,\n switchMap,\n take,\n takeUntil\n} from \"rxjs\";\n\n/**\n * Implementation of the same panel and overlay logic as the official Angular MatSelect.\n * This used some of the logic from MatSelect to make this component look and feel like a MatSelect.\n */\n@Directive()\nexport class NiceTypeaheadBase<T>\n implements\n MatFormFieldControl<T>,\n ControlValueAccessor,\n OnInit,\n AfterViewInit,\n OnDestroy\n{\n @ViewChildren(MatOption)\n private readonly options!: QueryList<MatOption>;\n\n public readonly noItemsFoundLabel = input<string>(\"No items found\");\n public readonly labelProperty = input<string>();\n public readonly formatLabelFn = input<((value: T) => string)>();\n public readonly optionTemplate = input<TemplateRef<{ $implicit: T }>>();\n public readonly panelClass = input<string | string[]>([]);\n public readonly canRemoveValue = input<boolean>(true);\n\n private static nextId = 0;\n\n protected readonly _input = viewChild<ElementRef<HTMLInputElement>>(\"input\");\n protected readonly _panel = viewChild<ElementRef<HTMLElement>>(\"panel\");\n protected readonly _overlayDir = viewChild(CdkConnectedOverlay);\n\n protected _focused = false;\n protected _required = false;\n protected _disabled = false;\n protected _panelOpen = false;\n protected _compareWith = (o1: T, o2: T) => o1 === o2;\n\n protected readonly _value = signal<T | null>(null);\n protected readonly _empty = computed(() => !this._value());\n protected readonly _placeholder = signal(\"\");\n protected readonly _searchValue = signal(\"\");\n\n protected readonly _elementRef = inject(ElementRef);\n protected readonly _destroyRef = inject(DestroyRef);\n protected readonly _changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly _fb = inject(FormBuilder);\n\n protected readonly _searchControl = this._fb.nonNullable.control(\"\");\n protected readonly _initialized = new Subject<void>();\n\n protected readonly _parentFormField = inject<MatFormField>(MAT_FORM_FIELD, { optional: true });\n\n public readonly id: string = `nice-typeahead-${NiceTypeaheadBase.nextId++}`;\n public readonly controlType: string = \"nice-typeahead\";\n public readonly stateChanges = new Subject<void>();\n public readonly optionSelectionChanges: Observable<MatOptionSelectionChange> = defer(() => {\n const options = this.options;\n\n if (options) {\n return options.changes.pipe(\n startWith(options),\n switchMap(() => merge(...options.map(option => option.onSelectionChange))),\n );\n }\n\n return this._initialized.pipe(switchMap(() => this.optionSelectionChanges));\n });\n\n public readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n public readonly _panelDoneAnimatingStream = new Subject<string>();\n\n public _keyManager!: ActiveDescendantKeyManager<MatOption>;\n public _preferredOverlayOrigin?: CdkOverlayOrigin | ElementRef;\n public _overlayWidth!: string | number;\n public _selectionModel!: SelectionModel<MatOption>;\n public _onChange?: (value: T | null) => void;\n public _onTouch?: () => void;\n\n public get placeholder(): string {\n return this._placeholder();\n }\n\n public set placeholder(placeholder) {\n this._placeholder.set(placeholder);\n this.stateChanges.next();\n }\n\n public get focused(): boolean {\n return this._focused;\n }\n\n public set focused(isFocused: boolean) {\n this._focused = isFocused;\n this.stateChanges.next();\n }\n\n public get required(): boolean {\n return this._required;\n }\n\n public set required(isRequired: boolean) {\n this._required = isRequired;\n this.stateChanges.next();\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(value: boolean) {\n this._disabled = value;\n this.stateChanges.next();\n }\n\n public get value(): T | null {\n return this._value();\n }\n\n public set value(value: T | null) {\n const hasAssigned = this._assignValue(value);\n\n if (hasAssigned) {\n this._onChange?.(value);\n }\n }\n\n public get empty(): boolean {\n return !this._value();\n }\n\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n public get errorState(): boolean {\n return false; // Implement error state logic as needed\n }\n\n public get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n constructor() {\n effect(() => {\n this._input()?.nativeElement.focus();\n });\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n this._selectionModel = new SelectionModel<MatOption>();\n\n this._searchControl.valueChanges.pipe(\n takeUntilDestroyed(this._destroyRef),\n debounceTime(250),\n distinctUntilChanged()\n ).subscribe((value) => this._searchValue.set(value));\n }\n\n public ngAfterViewInit(): void {\n this._initialized.next();\n this._initialized.complete();\n\n this._initKeyManager();\n\n this.options.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n public onContainerClick(event: MouseEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.stateChanges.next();\n if ((event.target as Element).tagName.toLowerCase() !== \"input\") {\n this.onFocusChanged(true);\n }\n }\n\n public setDescribedByIds(ids: string[]): void {\n const controlElement = this._elementRef.nativeElement.querySelector(\".nice-typeahead\");\n if (!controlElement) {\n return;\n }\n\n controlElement.setAttribute(\"aria-describedby\", ids.join(\" \"));\n }\n\n public onFocusChanged(isFocused: boolean): void {\n this.focused = isFocused;\n this.stateChanges.next();\n\n if (isFocused) {\n this.open();\n }\n }\n\n public writeValue(value: T): void {\n this._assignValue(value);\n }\n\n public registerOnChange(fn: (value: T | null) => void) {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouch = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n public formatLabel(item: T): string {\n if (typeof item === \"string\") {\n return item;\n }\n\n const fn = this.formatLabelFn();\n if (fn) {\n return fn(item);\n }\n\n const property = this.labelProperty();\n if (!property) {\n return item?.toString() ?? \"\";\n }\n\n if (!(typeof item === \"object\") || item === null) {\n return item?.toString() ?? \"\";\n }\n\n if (property in item) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return item[property];\n }\n\n return item.toString();\n }\n\n public removeActiveValue(): void {\n this.value = null;\n this._selectionModel.clear();\n this._keyManager.setActiveItem(-1);\n this._changeDetectorRef.markForCheck();\n }\n\n public open(): void {\n if (!this._canOpen()) {\n return;\n }\n\n // It's important that we read this as late as possible, because doing so earlier will\n // return a different element since it's based on queries in the form field which may\n // not have run yet. Also this needs to be assigned before we measure the overlay width.\n if (this._parentFormField) {\n this._preferredOverlayOrigin = this._parentFormField.getConnectedOverlayOrigin();\n }\n\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._changeDetectorRef.markForCheck();\n\n // Required for the MDC form field to pick up when the overlay has been opened.\n this.stateChanges.next();\n }\n\n public close(): void {\n if (!this._panelOpen) {\n return;\n }\n\n this._focused = false;\n this._panelOpen = false;\n this._changeDetectorRef.markForCheck();\n\n this._searchValue.set(\"\");\n\n // Required for the MDC form field to pick up when the overlay has been closed.\n this.stateChanges.next();\n }\n\n public focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n public _handleKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n\n if (this.panelOpen) {\n this._handleOpenKeydown(event);\n } else {\n this._handleClosedKeydown(event);\n }\n }\n\n public _handleScrollEnd(): void {\n console.log(\"scroll end\")\n }\n\n protected _canOpen(): boolean {\n return !this._panelOpen && !this.disabled;\n }\n\n protected _onAttached(): void {\n this._overlayDir()?.positionChange.pipe(take(1)).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n }\n\n protected _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager<MatOption>(this.options)\n .withVerticalOrientation()\n .withHomeAndEnd()\n .withPageUpDown()\n .withAllowedModifierKeys([\"shiftKey\"])\n .skipPredicate(this._skipPredicate);\n\n this._keyManager.tabOut.subscribe(() => {\n if (this.panelOpen) {\n if (this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n\n this.focus();\n this.close();\n }\n });\n\n this._keyManager.change.subscribe(() => {\n if (this._panelOpen && this._panel()) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n } else if (!this._panelOpen && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n\n protected _getOverlayWidth(preferredOrigin?: ElementRef<ElementRef> | CdkOverlayOrigin): string | number {\n const refToMeasure =\n preferredOrigin instanceof CdkOverlayOrigin\n ? preferredOrigin.elementRef\n : preferredOrigin || this._elementRef;\n return refToMeasure.nativeElement.getBoundingClientRect().width;\n }\n\n protected _skipPredicate = (option: MatOption) => {\n if (this.panelOpen) {\n return false;\n }\n\n return option.disabled;\n };\n\n protected _positioningSettled() {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n }\n\n protected _scrollOptionIntoView(index: number): void {\n const option = this.options.toArray()[index];\n if (!option) {\n return;\n }\n\n const panel = this._panel()?.nativeElement;\n if (!panel) {\n return;\n }\n\n const element = option._getHostElement();\n if (index === 0) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n panel.scrollTop = 0;\n } else {\n panel.scrollTop = _getOptionScrollPosition(\n element.offsetTop,\n element.offsetHeight,\n panel.scrollTop,\n panel.offsetHeight,\n );\n }\n }\n\n protected _resetOptions(): void {\n this.optionSelectionChanges.pipe(\n takeUntil(this.options.changes),\n takeUntilDestroyed(this._destroyRef)\n ).subscribe((event) => {\n this._onSelect(event.source);\n\n if (event.isUserInput && this._panelOpen) {\n this.close();\n this.focus();\n }\n });\n }\n\n protected _onSelect(option: MatOption): void {\n this.value = option.value;\n this._setSelectionByValue(option.value);\n this._selectOptionByValue(option.value);\n\n this.stateChanges.next();\n }\n\n protected _initializeSelection(): void {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n if (this.ngControl) {\n this._value.set(this.ngControl.value);\n }\n\n const _value = this.value;\n if (_value) {\n this._selectOptionByValue(_value);\n }\n this._setSelectionByValue(_value);\n\n this._highlightCorrectOption();\n this.stateChanges.next();\n });\n }\n\n protected _setSelectionByValue(value: T | null): void {\n this.options.forEach(option => option.setInactiveStyles());\n this._selectionModel.clear();\n\n const correspondingOption = value ? this._selectOptionByValue(value) : null;\n\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n correspondingOption.select(false);\n this._keyManager.updateActiveItem(correspondingOption);\n } else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.updateActiveItem(-1);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n\n protected _selectOptionByValue(value: T): MatOption | undefined {\n const correspondingOption = this.options.find((option: MatOption) => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n if (this._selectionModel.isSelected(option)) {\n return false;\n }\n\n try {\n // Treat null as a special reset value.\n return option.value != null && this._compareWith(option.value, value);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n return false;\n }\n });\n\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n\n return correspondingOption;\n }\n\n protected _highlightCorrectOption(): void {\n if (!this._keyManager) {\n return;\n }\n\n if (this.empty) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < this.options.length; index++) {\n const option = this.options.get(index)!;\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n\n this._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n\n\n protected _handleClosedKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey =\n keyCode === DOWN_ARROW ||\n keyCode === UP_ARROW ||\n keyCode === LEFT_ARROW ||\n keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this._keyManager;\n\n // Open the select on ALT + arrow key to match the native <select>\n if (\n (!manager.isTyping() && isOpenKey && !hasModifierKey(event)) ||\n (event.altKey && isArrowKey)\n ) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n }\n }\n\n protected _handleOpenKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n const isTyping = manager.isTyping();\n\n if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n } else if (\n !isTyping &&\n (keyCode === ENTER || keyCode === SPACE) &&\n manager.activeItem &&\n !hasModifierKey(event)\n ) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n } else {\n manager.onKeydown(event);\n }\n }\n\n protected _assignValue(newValue: T | null): boolean {\n // Always re-assign an array, because it might have been mutated.\n if (newValue !== this.value) {\n if (this.options) {\n this._setSelectionByValue(newValue);\n }\n\n this._value.set(newValue);\n return true;\n }\n return false;\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from \"@angular/cdk/overlay\";\nimport { NgClass, NgTemplateOutlet } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n OnInit,\n viewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatIconButton } from \"@angular/material/button\";\nimport { MatOption } from \"@angular/material/core\";\nimport { MatFormField, MatFormFieldControl } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { matSelectAnimations } from \"@angular/material/select\";\nimport { NiceTypeaheadBase } from \"./typeahead-base\";\nimport { NiceTypeaheadService } from \"./providers\";\n\n@Component({\n selector: \"nice-async-typeahead\",\n standalone: true,\n imports: [\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n ReactiveFormsModule,\n MatOption,\n MatFormField,\n MatInput,\n MatIconButton,\n NgClass,\n NgTemplateOutlet\n ],\n templateUrl: \"./typeahead.html\",\n styleUrl: \"./typeahead.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [matSelectAnimations.transformPanel],\n providers: [\n { provide: MatFormFieldControl, useExisting: NiceAsyncTypeahead },\n NiceTypeaheadService\n ],\n host: {\n \"role\": \"combobox\",\n \"aria-haspopup\": \"listbox\",\n \"class\": \"nice-typeahead\",\n \"[attr.id]\": \"id\",\n \"[attr.aria-controls]\": \"panelOpen ? id + \\\"-panel\\\" : null\",\n \"[attr.aria-expanded]\": \"panelOpen\",\n \"[attr.aria-required]\": \"required.toString()\",\n \"[attr.aria-disabled]\": \"disabled.toString()\",\n \"[attr.aria-invalid]\": \"errorState\",\n \"[class.nice-typeahead-disabled]\": \"disabled\",\n \"[class.nice-typeahead-invalid]\": \"errorState\",\n \"[class.nice-typeahead-required]\": \"required\",\n \"[class.nice-typeahead-empty]\": \"empty\",\n \"(keydown)\": \"_handleKeydown($event)\",\n \"(focus)\": \"onFocusChanged(true)\",\n \"(blur)\": \"onFocusChanged(false)\"\n }\n})\nexport class NiceAsyncTypeahead<T, S extends object = object> extends NiceTypeaheadBase<T> implements OnInit {\n public readonly resource = input.required<string>();\n public readonly searchOptions = input<S | null>(null);\n\n public readonly filteredValues = computed(() => this.service.items());\n\n protected readonly optionsContainer = viewChild<ElementRef<HTMLElement>>(\"optionsContainer\");\n\n private readonly service = inject(NiceTypeaheadService);\n\n protected override _compareWith = (o1: T, o2: T) => {\n if (!(typeof o1 === \"object\" && o1 && typeof o2 === \"object\" && o2)) {\n return o1 === o2;\n }\n\n if (!(\"id\" in o1) || !(\"id\" in o2)) {\n return o1 === o2;\n }\n\n return o1.id === o2.id;\n };\n\n /**\n * Infinite scroll internal state\n */\n private readonly scrollThresholdPercent = 0.99;\n private lastScrollHeight = 0;\n\n constructor() {\n super();\n\n effect(() => {\n this.service.setSearchOptions(this.searchOptions());\n }, {\n allowSignalWrites: true\n });\n\n effect(() => this.service.search(this._searchValue()), {\n allowSignalWrites: true\n });\n\n effect(() => {\n const container = this.optionsContainer();\n if (!container) {\n return;\n }\n\n container.nativeElement.addEventListener(\"scroll\", this.onScroll.bind(this));\n });\n }\n\n public override ngOnInit(): void {\n super.ngOnInit();\n\n this.service.init(this.resource());\n }\n\n public override onFocusChanged(isFocused: boolean): void {\n super.onFocusChanged(isFocused);\n\n if (isFocused) {\n this._searchControl.patchValue(\"\");\n }\n }\n\n public override formatLabel(item: T): string {\n return this.service.formatLabel(item);\n }\n\n public override removeActiveValue() {\n super.removeActiveValue();\n\n this.service.setActive(null);\n }\n\n protected onScroll(event: Event): void {\n const target = event.target as HTMLElement;\n const threshold = (this.scrollThresholdPercent * 100 * target.scrollHeight) / 100;\n const current = target.scrollTop + target.clientHeight;\n\n if (this.lastScrollHeight > target.scrollHeight) {\n this.lastScrollHeight = 0;\n }\n\n if (current > threshold && this.lastScrollHeight < target.scrollHeight) {\n this.service.loadMore();\n this.lastScrollHeight = target.scrollHeight;\n }\n }\n}\n","<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from \"@angular/cdk/overlay\";\nimport { NgClass, NgTemplateOutlet } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatIconButton } from \"@angular/material/button\";\nimport { MatOption } from \"@angular/material/core\";\nimport { MatFormField, MatFormFieldControl } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { matSelectAnimations } from \"@angular/material/select\";\nimport { NiceTypeaheadBase } from \"./typeahead-base\";\n\nexport type SearchFunction<T> = (search: string, item: T) => boolean;\n\n@Component({\n selector: \"nice-typeahead\",\n standalone: true,\n imports: [\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n ReactiveFormsModule,\n MatOption,\n MatFormField,\n MatInput,\n MatIconButton,\n NgClass,\n NgTemplateOutlet\n ],\n templateUrl: \"./typeahead.html\",\n styleUrl: \"./typeahead.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [matSelectAnimations.transformPanel],\n providers: [{ provide: MatFormFieldControl, useExisting: NiceTypeahead }],\n host: {\n \"role\": \"combobox\",\n \"aria-haspopup\": \"listbox\",\n \"class\": \"nice-typeahead\",\n \"[attr.id]\": \"id\",\n \"[attr.aria-controls]\": \"panelOpen ? id + \\\"-panel\\\" : null\",\n \"[attr.aria-expanded]\": \"panelOpen\",\n \"[attr.aria-required]\": \"required.toString()\",\n \"[attr.aria-disabled]\": \"disabled.toString()\",\n \"[attr.aria-invalid]\": \"errorState\",\n \"[class.nice-typeahead-disabled]\": \"disabled\",\n \"[class.nice-typeahead-invalid]\": \"errorState\",\n \"[class.nice-typeahead-required]\": \"required\",\n \"[class.nice-typeahead-empty]\": \"empty\",\n \"(keydown)\": \"_handleKeydown($event)\",\n \"(focus)\": \"onFocusChanged(true)\",\n \"(blur)\": \"onFocusChanged(false)\"\n }\n})\nexport class NiceTypeahead<T> extends NiceTypeaheadBase<T> {\n public readonly values = input.required<T[]>();\n public readonly searchFn = input<SearchFunction<T>>();\n\n public readonly filteredValues = computed(() => this.filterValuesFromSearch(this._searchValue(), this.values()));\n\n public override onFocusChanged(isFocused: boolean): void {\n super.onFocusChanged(isFocused);\n\n if (isFocused) {\n this._searchControl.patchValue(\"\");\n }\n }\n\n public filterValuesFromSearch(searchValue: string, values: T[]): T[] {\n if (!searchValue) {\n return values;\n }\n\n const _searchValue = searchValue.toLowerCase();\n const fn = this.searchFn();\n if (fn) {\n return values.filter((v) => fn(_searchValue, v));\n }\n\n return values.filter((v) => {\n if (typeof v === \"string\") {\n return v.toLowerCase().includes(_searchValue);\n }\n\n const property = this.labelProperty();\n if (!property) {\n return false;\n }\n\n if (typeof v === \"object\" && v && property in v) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return v[property].toString().toLowerCase().includes(_searchValue);\n }\n\n return false;\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@recursyve/ngx-material-components",
3
- "version": "18.0.0-beta.7",
3
+ "version": "18.0.0-beta.8",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"