@ethlete/cdk 4.3.3 → 4.3.4

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ethlete/cdk
2
2
 
3
+ ## 4.3.4
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1261](https://github.com/ethlete-io/ethdk/pull/1261) [`59dff1be`](https://github.com/ethlete-io/ethdk/commit/59dff1befc28e14b7d43afc70dec923b3d244466) Thanks [@Gw3i](https://github.com/Gw3i)! - Add missing `NgFor` import inside combobox body
8
+
3
9
  ## 4.3.3
4
10
 
5
11
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- import { AsyncPipe, NgComponentOutlet, NgIf, NgTemplateOutlet } from '@angular/common';
1
+ import { AsyncPipe, NgComponentOutlet, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, ElementRef, InjectionToken, ViewChild, ViewChildren, ViewEncapsulation, inject, } from '@angular/core';
3
3
  import { toSignal } from '@angular/core/rxjs-interop';
4
4
  import { ANIMATED_LIFECYCLE_TOKEN, AnimatedLifecycleDirective, ClickOutsideDirective, LetDirective, TypedQueryList, createDestroy, signalHostAttributes, signalHostClasses, } from '@ethlete/core';
@@ -51,7 +51,7 @@ export class ComboboxBodyComponent {
51
51
  provide: COMBOBOX_BODY_TOKEN,
52
52
  useExisting: ComboboxBodyComponent,
53
53
  },
54
- ], viewQueries: [{ propertyName: "_containerElementRef", first: true, predicate: ["containerElement"], descendants: true, read: ElementRef, static: true }, { propertyName: "_animatedLifecycle", first: true, predicate: ANIMATED_LIFECYCLE_TOKEN, descendants: true, static: true }, { propertyName: "_options", predicate: ComboboxOptionComponent, descendants: true }], hostDirectives: [{ directive: i1.ClickOutsideDirective }, { directive: i2.ProvideThemeDirective }], ngImport: i0, template: "<!-- TODO(TRB): Use new control flow -->\n<div #containerElement class=\"et-combobox-body-container\" etAnimatedLifecycle>\n <ng-container *etLet=\"combobox.options$ | async as options\">\n <ng-container *ngIf=\"!options?.length && !combobox.error && !combobox.loading\">\n <ng-container *ngIf=\"combobox.customBodyEmptyTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyEmptyComponent$ | async as comp; else default\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyEmptyComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n <ng-template #default>\n <p class=\"et-combobox-body--empty\">{{ combobox._tempEmptyText }}</p>\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"combobox.error && !combobox.loading\">\n <ng-container *ngIf=\"combobox.customBodyErrorTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl; context: { error: combobox.error }\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyErrorComponent$ | async as comp\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (customErrorComponentInputs$ | async) ?? { error: combobox.error }\"\n />\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"combobox.loading$ | async\">\n <ng-container *ngIf=\"combobox.customBodyLoadingTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyLoadingComponent$ | async as comp\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyLoadingComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"!combobox.error\">\n <et-combobox-option *ngFor=\"let option of options; trackBy: trackByFn\" [option]=\"option\" />\n </ng-container>\n\n <ng-container *ngIf=\"options?.length && combobox.showBodyMoreItemsHint\">\n <ng-container *ngIf=\"combobox.customBodyMoreItemsHintTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyMoreItemsHintComponent$ | async as comp; else default\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyMoreItemsHintComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n <ng-template #default>\n <p *ngIf=\"combobox.bodyMoreItemsHintText\" class=\"et-combobox-body--more-items-hint\">\n {{ combobox.bodyMoreItemsHintText }}\n </p>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: ComboboxOptionComponent, selector: "et-combobox-option", inputs: ["option"] }, { kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: AnimatedLifecycleDirective, selector: "[etAnimatedLifecycle]", exportAs: ["etAnimatedLifecycle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
54
+ ], viewQueries: [{ propertyName: "_containerElementRef", first: true, predicate: ["containerElement"], descendants: true, read: ElementRef, static: true }, { propertyName: "_animatedLifecycle", first: true, predicate: ANIMATED_LIFECYCLE_TOKEN, descendants: true, static: true }, { propertyName: "_options", predicate: ComboboxOptionComponent, descendants: true }], hostDirectives: [{ directive: i1.ClickOutsideDirective }, { directive: i2.ProvideThemeDirective }], ngImport: i0, template: "<!-- TODO(TRB): Use new control flow -->\n<div #containerElement class=\"et-combobox-body-container\" etAnimatedLifecycle>\n <ng-container *etLet=\"combobox.options$ | async as options\">\n <ng-container *ngIf=\"!options?.length && !combobox.error && !combobox.loading\">\n <ng-container *ngIf=\"combobox.customBodyEmptyTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyEmptyComponent$ | async as comp; else default\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyEmptyComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n <ng-template #default>\n <p class=\"et-combobox-body--empty\">{{ combobox._tempEmptyText }}</p>\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"combobox.error && !combobox.loading\">\n <ng-container *ngIf=\"combobox.customBodyErrorTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl; context: { error: combobox.error }\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyErrorComponent$ | async as comp\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (customErrorComponentInputs$ | async) ?? { error: combobox.error }\"\n />\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"combobox.loading$ | async\">\n <ng-container *ngIf=\"combobox.customBodyLoadingTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyLoadingComponent$ | async as comp\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyLoadingComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"!combobox.error\">\n <et-combobox-option *ngFor=\"let option of options; trackBy: trackByFn\" [option]=\"option\" />\n </ng-container>\n\n <ng-container *ngIf=\"options?.length && combobox.showBodyMoreItemsHint\">\n <ng-container *ngIf=\"combobox.customBodyMoreItemsHintTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyMoreItemsHintComponent$ | async as comp; else default\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyMoreItemsHintComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n <ng-template #default>\n <p *ngIf=\"combobox.bodyMoreItemsHintText\" class=\"et-combobox-body--more-items-hint\">\n {{ combobox.bodyMoreItemsHintText }}\n </p>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: ComboboxOptionComponent, selector: "et-combobox-option", inputs: ["option"] }, { kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: AnimatedLifecycleDirective, selector: "[etAnimatedLifecycle]", exportAs: ["etAnimatedLifecycle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
55
55
  }
56
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ComboboxBodyComponent, decorators: [{
57
57
  type: Component,
@@ -68,6 +68,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
68
68
  AsyncPipe,
69
69
  AnimatedLifecycleDirective,
70
70
  NgIf,
71
+ NgFor,
71
72
  ], hostDirectives: [ClickOutsideDirective, ProvideThemeDirective], providers: [
72
73
  {
73
74
  provide: COMBOBOX_BODY_TOKEN,
@@ -84,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
84
85
  type: ViewChildren,
85
86
  args: [ComboboxOptionComponent]
86
87
  }] } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3gtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9jb21ib2JveC9wYXJ0aWFscy9jb21ib2JveC1ib2R5L2NvbWJvYm94LWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvcGFydGlhbHMvY29tYm9ib3gtYm9keS9jb21ib2JveC1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLGNBQWMsRUFJZCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osY0FBYyxFQUNkLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFF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LElBQUk7OzJGQVVLLHFCQUFxQjtrQkE3QmpDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBRWhCLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsNENBQTRDO3dCQUNuRCxRQUFRLEVBQUUsSUFBSTt3QkFDZCxXQUFXLEVBQUUsSUFBSTt3QkFDakIsSUFBSSxFQUFFLFNBQVM7cUJBQ2hCLFdBQ1E7d0JBQ1AsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsWUFBWTt3QkFDWixTQUFTO3dCQUNULDBCQUEwQjt3QkFDMUIsSUFBSTtxQkFDTCxrQkFDZSxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDLGFBQ25EO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsdUJBQXVCO3lCQUNuQztxQkFDRjs4QkFXUSxvQkFBb0I7c0JBRDVCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSXhELGtCQUFrQjtzQkFEMUIsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWpELFFBQVE7c0JBRFgsWUFBWTt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0LCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGlvblRva2VuLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQU5JTUFURURfTElGRUNZQ0xFX1RPS0VOLFxuICBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZSxcbiAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxuICBMZXREaXJlY3RpdmUsXG4gIFR5cGVkUXVlcnlMaXN0LFxuICBjcmVhdGVEZXN0cm95LFxuICBzaWduYWxIb3N0QXR0cmlidXRlcyxcbiAgc2lnbmFsSG9zdENsYXNzZXMsXG59IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlkZVRoZW1lRGlyZWN0aXZlLCBUSEVNRV9QUk9WSURFUiB9IGZyb20gJ0BldGhsZXRlL3RoZW1pbmcnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbWJvYm94Qm9keSwgQWJzdHJhY3RDb21ib2JveE9wdGlvbiwgQ09NQk9CT1hfVE9LRU4gfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IENvbWJvYm94T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tYm9ib3gtb3B0aW9uJztcblxuZXhwb3J0IGNvbnN0IENPTUJPQk9YX0JPRFlfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tYm9ib3hCb2R5Q29tcG9uZW50PignRVRfQ09NQk9CT1hfQk9EWV9UT0tFTicpO1xuXG5sZXQgX3VuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtY29tYm9ib3gtYm9keScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21ib2JveC1ib2R5LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LWNvbWJvYm94LWJvZHkgZXQtd2l0aC1kZWZhdWx0LWFuaW1hdGlvbicsXG4gICAgdGFiaW5kZXg6ICctMScsXG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgcm9sZTogJ2xpc3Rib3gnLFxuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBOZ0NvbXBvbmVudE91dGxldCxcbiAgICBDb21ib2JveE9wdGlvbkNvbXBvbmVudCxcbiAgICBMZXREaXJlY3RpdmUsXG4gICAgQXN5bmNQaXBlLFxuICAgIEFuaW1hdGVkTGlmZWN5Y2xlRGlyZWN0aXZlLFxuICAgIE5nSWYsXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLCBQcm92aWRlVGhlbWVEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDT01CT0JPWF9CT0RZX1RPS0VOLFxuICAgICAgdXNlRXhpc3Rpbmc6IENvbWJvYm94Qm9keUNvbXBvbmVudCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveEJvZHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFic3RyYWN0Q29tYm9ib3hCb2R5IHtcbiAgcmVhZG9ubHkgaWQgPSBgZXQtY29tYm9ib3gtYm9keS0ke191bmlxdWVJZCsrfWA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NsaWNrT3V0c2lkZSA9IGluamVjdChDbGlja091dHNpZGVEaXJlY3RpdmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aGVtZVByb3ZpZGVyID0gaW5qZWN0KFRIRU1FX1BST1ZJREVSKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbWJvYm94ID0gaW5qZWN0KENPTUJPQk9YX1RPS0VOKTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXJFbGVtZW50JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcmVhZG9ubHkgX2NvbnRhaW5lckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoQU5JTUFURURfTElGRUNZQ0xFX1RPS0VOLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICByZWFkb25seSBfYW5pbWF0ZWRMaWZlY3ljbGU/OiBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkcmVuKENvbWJvYm94T3B0aW9uQ29tcG9uZW50KVxuICBzZXQgX29wdGlvbnMob3B0aW9uczogVHlwZWRRdWVyeUxpc3Q8Q29tYm9ib3hPcHRpb25Db21wb25lbnQ+KSB7XG4gICAgdGhpcy5fb3B0aW9ucyQubmV4dChvcHRpb25zKTtcbiAgfVxuICByZWFkb25seSBfb3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFR5cGVkUXVlcnlMaXN0PEFic3RyYWN0Q29tYm9ib3hPcHRpb24+IHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgaG9zdENsYXNzQmluZGluZ3MgPSBzaWduYWxIb3N0Q2xhc3Nlcyh7XG4gICAgJ2V0LWNvbWJvYm94LWJvZHktLWxvYWRpbmcnOiB0b1NpZ25hbCh0aGlzLmNvbWJvYm94LmxvYWRpbmckKSxcbiAgICAnZXQtY29tYm9ib3gtYm9keS0tbXVsdGlwbGUnOiB0b1NpZ25hbCh0aGlzLmNvbWJvYm94Lm11bHRpcGxlJCksXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGhvc3RBdHRyaWJ1dGVCaW5kaW5ncyA9IHNpZ25hbEhvc3RBdHRyaWJ1dGVzKHtcbiAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiB0b1NpZ25hbCh0aGlzLmNvbWJvYm94Lm11bHRpcGxlJCksXG4gICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRvU2lnbmFsKHRoaXMuY29tYm9ib3guX2lucHV0LmxhYmVsSWQkKSxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGN1c3RvbUVycm9yQ29tcG9uZW50SW5wdXRzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuY29tYm9ib3guZXJyb3IkLFxuICAgIHRoaXMuY29tYm9ib3guY3VzdG9tQm9keUVycm9yQ29tcG9uZW50SW5wdXRzJCxcbiAgXSkucGlwZShtYXAoKFtlcnJvciwgaW5wdXRzXSkgPT4gKHsgZXJyb3IsIC4uLmlucHV0cyB9KSkpO1xuXG4gIF9ib2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xpY2tPdXRzaWRlLmV0Q2xpY2tPdXRzaWRlXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuY29tYm9ib3guY2xvc2UoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248dW5rbm93bj4gPSAoaW5kZXgsIGl0ZW0pID0+IHRoaXMuY29tYm9ib3guX3NlbGVjdGlvbk1vZGVsLmdldEtleShpdGVtKTtcblxuICBfc2V0VGhlbWVGcm9tUHJvdmlkZXIocHJvdmlkZXI6IFByb3ZpZGVUaGVtZURpcmVjdGl2ZSkge1xuICAgIHRoaXMuX3RoZW1lUHJvdmlkZXIuc3luY1dpdGhQcm92aWRlcihwcm92aWRlcik7XG4gIH1cbn1cbiIsIjwhLS0gVE9ETyhUUkIpOiBVc2UgbmV3IGNvbnRyb2wgZmxvdyAtLT5cbjxkaXYgI2NvbnRhaW5lckVsZW1lbnQgY2xhc3M9XCJldC1jb21ib2JveC1ib2R5LWNvbnRhaW5lclwiIGV0QW5pbWF0ZWRMaWZlY3ljbGU+XG4gIDxuZy1jb250YWluZXIgKmV0TGV0PVwiY29tYm9ib3gub3B0aW9ucyQgfCBhc3luYyBhcyBvcHRpb25zXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvcHRpb25zPy5sZW5ndGggJiYgIWNvbWJvYm94LmVycm9yICYmICFjb21ib2JveC5sb2FkaW5nXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keUVtcHR5VHBsJCB8IGFzeW5jIGFzIHRwbDsgZWxzZSBjb21wb25lbnRPck5vbmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50T3JOb25lPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keUVtcHR5Q29tcG9uZW50JCB8IGFzeW5jIGFzIGNvbXA7IGVsc2UgZGVmYXVsdFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXA7IGlucHV0czogKGNvbWJvYm94LmN1c3RvbUJvZHlFbXB0eUNvbXBvbmVudElucHV0cyQgfCBhc3luYykgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZXQtY29tYm9ib3gtYm9keS0tZW1wdHlcIj57eyBjb21ib2JveC5fdGVtcEVtcHR5VGV4dCB9fTwvcD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guZXJyb3IgJiYgIWNvbWJvYm94LmxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveC5jdXN0b21Cb2R5RXJyb3JUcGwkIHwgYXN5bmMgYXMgdHBsOyBlbHNlIGNvbXBvbmVudE9yTm9uZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsOyBjb250ZXh0OiB7IGVycm9yOiBjb21ib2JveC5lcnJvciB9XCIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRPck5vbmU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveC5jdXN0b21Cb2R5RXJyb3JDb21wb25lbnQkIHwgYXN5bmMgYXMgY29tcFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXA7IGlucHV0czogKGN1c3RvbUVycm9yQ29tcG9uZW50SW5wdXRzJCB8IGFzeW5jKSA/PyB7IGVycm9yOiBjb21ib2JveC5lcnJvciB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3gubG9hZGluZyQgfCBhc3luY1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94LmN1c3RvbUJvZHlMb2FkaW5nVHBsJCB8IGFzeW5jIGFzIHRwbDsgZWxzZSBjb21wb25lbnRPck5vbmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50T3JOb25lPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keUxvYWRpbmdDb21wb25lbnQkIHwgYXN5bmMgYXMgY29tcFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXA7IGlucHV0czogKGNvbWJvYm94LmN1c3RvbUJvZHlMb2FkaW5nQ29tcG9uZW50SW5wdXRzJCB8IGFzeW5jKSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tYm9ib3guZXJyb3JcIj5cbiAgICAgIDxldC1jb21ib2JveC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIiBbb3B0aW9uXT1cIm9wdGlvblwiIC8+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9ucz8ubGVuZ3RoICYmIGNvbWJvYm94LnNob3dCb2R5TW9yZUl0ZW1zSGludFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94LmN1c3RvbUJvZHlNb3JlSXRlbXNIaW50VHBsJCB8IGFzeW5jIGFzIHRwbDsgZWxzZSBjb21wb25lbnRPck5vbmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50T3JOb25lPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keU1vcmVJdGVtc0hpbnRDb21wb25lbnQkIHwgYXN5bmMgYXMgY29tcDsgZWxzZSBkZWZhdWx0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiY29tcDsgaW5wdXRzOiAoY29tYm9ib3guY3VzdG9tQm9keU1vcmVJdGVtc0hpbnRDb21wb25lbnRJbnB1dHMkIHwgYXN5bmMpID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICAgICAgICA8cCAqbmdJZj1cImNvbWJvYm94LmJvZHlNb3JlSXRlbXNIaW50VGV4dFwiIGNsYXNzPVwiZXQtY29tYm9ib3gtYm9keS0tbW9yZS1pdGVtcy1oaW50XCI+XG4gICAgICAgICAgICB7eyBjb21ib2JveC5ib2R5TW9yZUl0ZW1zSGludFRleHQgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3gtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9jb21ib2JveC9wYXJ0aWFscy9jb21ib2JveC1ib2R5L2NvbWJvYm94LWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvcGFydGlhbHMvY29tYm9ib3gtYm9keS9jb21ib2JveC1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlGLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixjQUFjLEVBSWQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGNBQWMsRUFDZCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFnRCxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUU3RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBd0Isd0JBQXdCLENBQUMsQ0FBQztBQUV2RyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFnQ2xCLE1BQU0sT0FBTyxxQkFBcUI7SUE5QmxDO1FBK0JXLE9BQUUsR0FBRyxvQkFBb0IsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUUvQixjQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM5QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxhQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBWTVDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBZ0QsSUFBSSxDQUFDLENBQUM7UUFFckYsc0JBQWlCLEdBQUcsaUJBQWlCLENBQUM7WUFDN0MsMkJBQTJCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzdELDRCQUE0QixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztTQUNoRSxDQUFDLENBQUM7UUFFTSwwQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQztZQUNwRCxzQkFBc0IsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDekQsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUMzRCxDQUFDLENBQUM7UUFFZ0IsZ0NBQTJCLEdBQUcsYUFBYSxDQUFDO1lBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLCtCQUErQjtTQUM5QyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUQsa0JBQWEsR0FBZ0MsSUFBSSxDQUFDO1FBV3hDLGNBQVMsR0FBNkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7S0FLN0c7SUFyQ0MsSUFDSSxRQUFRLENBQUMsT0FBZ0Q7UUFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQW9CRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjO2FBQzlCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUNqQzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFJRCxxQkFBcUIsQ0FBQyxRQUErQjtRQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7OEdBbERVLHFCQUFxQjtrR0FBckIscUJBQXFCLDZOQVByQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFdBQVcsRUFBRSxxQkFBcUI7YUFDbkM7U0FDRiwrSEFVb0QsVUFBVSxnRkFHcEQsd0JBQXdCLDRFQUdyQix1QkFBdUIsb0pDOUV2Qywyb0dBb0VBLDRDRHJCSSxnQkFBZ0Isb0pBQ2hCLGlCQUFpQixvUEFDakIsdUJBQXVCLG1GQUN2QixZQUFZLGtFQUNaLFNBQVMsOENBQ1QsMEJBQTBCLHFHQUMxQixJQUFJLDZGQUNKLEtBQUs7OzJGQVVJLHFCQUFxQjtrQkE5QmpDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBRWhCLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsNENBQTRDO3dCQUNuRCxRQUFRLEVBQUUsSUFBSTt3QkFDZCxXQUFXLEVBQUUsSUFBSTt3QkFDakIsSUFBSSxFQUFFLFNBQVM7cUJBQ2hCLFdBQ1E7d0JBQ1AsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsWUFBWTt3QkFDWixTQUFTO3dCQUNULDBCQUEwQjt3QkFDMUIsSUFBSTt3QkFDSixLQUFLO3FCQUNOLGtCQUNlLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLENBQUMsYUFDbkQ7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyx1QkFBdUI7eUJBQ25DO3FCQUNGOzhCQVdRLG9CQUFvQjtzQkFENUIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJeEQsa0JBQWtCO3NCQUQxQixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJakQsUUFBUTtzQkFEWCxZQUFZO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDb21wb25lbnRPdXRsZXQsIE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGlvblRva2VuLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQU5JTUFURURfTElGRUNZQ0xFX1RPS0VOLFxuICBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZSxcbiAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxuICBMZXREaXJlY3RpdmUsXG4gIFR5cGVkUXVlcnlMaXN0LFxuICBjcmVhdGVEZXN0cm95LFxuICBzaWduYWxIb3N0QXR0cmlidXRlcyxcbiAgc2lnbmFsSG9zdENsYXNzZXMsXG59IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlkZVRoZW1lRGlyZWN0aXZlLCBUSEVNRV9QUk9WSURFUiB9IGZyb20gJ0BldGhsZXRlL3RoZW1pbmcnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbWJvYm94Qm9keSwgQWJzdHJhY3RDb21ib2JveE9wdGlvbiwgQ09NQk9CT1hfVE9LRU4gfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IENvbWJvYm94T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tYm9ib3gtb3B0aW9uJztcblxuZXhwb3J0IGNvbnN0IENPTUJPQk9YX0JPRFlfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tYm9ib3hCb2R5Q29tcG9uZW50PignRVRfQ09NQk9CT1hfQk9EWV9UT0tFTicpO1xuXG5sZXQgX3VuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtY29tYm9ib3gtYm9keScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21ib2JveC1ib2R5LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LWNvbWJvYm94LWJvZHkgZXQtd2l0aC1kZWZhdWx0LWFuaW1hdGlvbicsXG4gICAgdGFiaW5kZXg6ICctMScsXG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgcm9sZTogJ2xpc3Rib3gnLFxuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBOZ0NvbXBvbmVudE91dGxldCxcbiAgICBDb21ib2JveE9wdGlvbkNvbXBvbmVudCxcbiAgICBMZXREaXJlY3RpdmUsXG4gICAgQXN5bmNQaXBlLFxuICAgIEFuaW1hdGVkTGlmZWN5Y2xlRGlyZWN0aXZlLFxuICAgIE5nSWYsXG4gICAgTmdGb3IsXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLCBQcm92aWRlVGhlbWVEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDT01CT0JPWF9CT0RZX1RPS0VOLFxuICAgICAgdXNlRXhpc3Rpbmc6IENvbWJvYm94Qm9keUNvbXBvbmVudCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveEJvZHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFic3RyYWN0Q29tYm9ib3hCb2R5IHtcbiAgcmVhZG9ubHkgaWQgPSBgZXQtY29tYm9ib3gtYm9keS0ke191bmlxdWVJZCsrfWA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NsaWNrT3V0c2lkZSA9IGluamVjdChDbGlja091dHNpZGVEaXJlY3RpdmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aGVtZVByb3ZpZGVyID0gaW5qZWN0KFRIRU1FX1BST1ZJREVSKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbWJvYm94ID0gaW5qZWN0KENPTUJPQk9YX1RPS0VOKTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXJFbGVtZW50JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcmVhZG9ubHkgX2NvbnRhaW5lckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoQU5JTUFURURfTElGRUNZQ0xFX1RPS0VOLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICByZWFkb25seSBfYW5pbWF0ZWRMaWZlY3ljbGU/OiBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkcmVuKENvbWJvYm94T3B0aW9uQ29tcG9uZW50KVxuICBzZXQgX29wdGlvbnMob3B0aW9uczogVHlwZWRRdWVyeUxpc3Q8Q29tYm9ib3hPcHRpb25Db21wb25lbnQ+KSB7XG4gICAgdGhpcy5fb3B0aW9ucyQubmV4dChvcHRpb25zKTtcbiAgfVxuICByZWFkb25seSBfb3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFR5cGVkUXVlcnlMaXN0PEFic3RyYWN0Q29tYm9ib3hPcHRpb24+IHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgaG9zdENsYXNzQmluZGluZ3MgPSBzaWduYWxIb3N0Q2xhc3Nlcyh7XG4gICAgJ2V0LWNvbWJvYm94LWJvZHktLWxvYWRpbmcnOiB0b1NpZ25hbCh0aGlzLmNvbWJvYm94LmxvYWRpbmckKSxcbiAgICAnZXQtY29tYm9ib3gtYm9keS0tbXVsdGlwbGUnOiB0b1NpZ25hbCh0aGlzLmNvbWJvYm94Lm11bHRpcGxlJCksXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGhvc3RBdHRyaWJ1dGVCaW5kaW5ncyA9IHNpZ25hbEhvc3RBdHRyaWJ1dGVzKHtcbiAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiB0b1NpZ25hbCh0aGlzLmNvbWJvYm94Lm11bHRpcGxlJCksXG4gICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRvU2lnbmFsKHRoaXMuY29tYm9ib3guX2lucHV0LmxhYmVsSWQkKSxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGN1c3RvbUVycm9yQ29tcG9uZW50SW5wdXRzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuY29tYm9ib3guZXJyb3IkLFxuICAgIHRoaXMuY29tYm9ib3guY3VzdG9tQm9keUVycm9yQ29tcG9uZW50SW5wdXRzJCxcbiAgXSkucGlwZShtYXAoKFtlcnJvciwgaW5wdXRzXSkgPT4gKHsgZXJyb3IsIC4uLmlucHV0cyB9KSkpO1xuXG4gIF9ib2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xpY2tPdXRzaWRlLmV0Q2xpY2tPdXRzaWRlXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuY29tYm9ib3guY2xvc2UoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248dW5rbm93bj4gPSAoaW5kZXgsIGl0ZW0pID0+IHRoaXMuY29tYm9ib3guX3NlbGVjdGlvbk1vZGVsLmdldEtleShpdGVtKTtcblxuICBfc2V0VGhlbWVGcm9tUHJvdmlkZXIocHJvdmlkZXI6IFByb3ZpZGVUaGVtZURpcmVjdGl2ZSkge1xuICAgIHRoaXMuX3RoZW1lUHJvdmlkZXIuc3luY1dpdGhQcm92aWRlcihwcm92aWRlcik7XG4gIH1cbn1cbiIsIjwhLS0gVE9ETyhUUkIpOiBVc2UgbmV3IGNvbnRyb2wgZmxvdyAtLT5cbjxkaXYgI2NvbnRhaW5lckVsZW1lbnQgY2xhc3M9XCJldC1jb21ib2JveC1ib2R5LWNvbnRhaW5lclwiIGV0QW5pbWF0ZWRMaWZlY3ljbGU+XG4gIDxuZy1jb250YWluZXIgKmV0TGV0PVwiY29tYm9ib3gub3B0aW9ucyQgfCBhc3luYyBhcyBvcHRpb25zXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvcHRpb25zPy5sZW5ndGggJiYgIWNvbWJvYm94LmVycm9yICYmICFjb21ib2JveC5sb2FkaW5nXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keUVtcHR5VHBsJCB8IGFzeW5jIGFzIHRwbDsgZWxzZSBjb21wb25lbnRPck5vbmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50T3JOb25lPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keUVtcHR5Q29tcG9uZW50JCB8IGFzeW5jIGFzIGNvbXA7IGVsc2UgZGVmYXVsdFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXA7IGlucHV0czogKGNvbWJvYm94LmN1c3RvbUJvZHlFbXB0eUNvbXBvbmVudElucHV0cyQgfCBhc3luYykgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZXQtY29tYm9ib3gtYm9keS0tZW1wdHlcIj57eyBjb21ib2JveC5fdGVtcEVtcHR5VGV4dCB9fTwvcD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guZXJyb3IgJiYgIWNvbWJvYm94LmxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveC5jdXN0b21Cb2R5RXJyb3JUcGwkIHwgYXN5bmMgYXMgdHBsOyBlbHNlIGNvbXBvbmVudE9yTm9uZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsOyBjb250ZXh0OiB7IGVycm9yOiBjb21ib2JveC5lcnJvciB9XCIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRPck5vbmU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveC5jdXN0b21Cb2R5RXJyb3JDb21wb25lbnQkIHwgYXN5bmMgYXMgY29tcFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXA7IGlucHV0czogKGN1c3RvbUVycm9yQ29tcG9uZW50SW5wdXRzJCB8IGFzeW5jKSA/PyB7IGVycm9yOiBjb21ib2JveC5lcnJvciB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3gubG9hZGluZyQgfCBhc3luY1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94LmN1c3RvbUJvZHlMb2FkaW5nVHBsJCB8IGFzeW5jIGFzIHRwbDsgZWxzZSBjb21wb25lbnRPck5vbmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50T3JOb25lPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keUxvYWRpbmdDb21wb25lbnQkIHwgYXN5bmMgYXMgY29tcFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXA7IGlucHV0czogKGNvbWJvYm94LmN1c3RvbUJvZHlMb2FkaW5nQ29tcG9uZW50SW5wdXRzJCB8IGFzeW5jKSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tYm9ib3guZXJyb3JcIj5cbiAgICAgIDxldC1jb21ib2JveC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIiBbb3B0aW9uXT1cIm9wdGlvblwiIC8+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9ucz8ubGVuZ3RoICYmIGNvbWJvYm94LnNob3dCb2R5TW9yZUl0ZW1zSGludFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94LmN1c3RvbUJvZHlNb3JlSXRlbXNIaW50VHBsJCB8IGFzeW5jIGFzIHRwbDsgZWxzZSBjb21wb25lbnRPck5vbmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50T3JOb25lPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keU1vcmVJdGVtc0hpbnRDb21wb25lbnQkIHwgYXN5bmMgYXMgY29tcDsgZWxzZSBkZWZhdWx0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiY29tcDsgaW5wdXRzOiAoY29tYm9ib3guY3VzdG9tQm9keU1vcmVJdGVtc0hpbnRDb21wb25lbnRJbnB1dHMkIHwgYXN5bmMpID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICAgICAgICA8cCAqbmdJZj1cImNvbWJvYm94LmJvZHlNb3JlSXRlbXNIaW50VGV4dFwiIGNsYXNzPVwiZXQtY29tYm9ib3gtYm9keS0tbW9yZS1pdGVtcy1oaW50XCI+XG4gICAgICAgICAgICB7eyBjb21ib2JveC5ib2R5TW9yZUl0ZW1zSGludFRleHQgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
@@ -1,6 +1,6 @@
1
1
  import * as i1 from '@angular/cdk/portal';
2
2
  import { CdkPortal, PortalModule, ComponentPortal, TemplatePortal, CdkPortalOutlet } from '@angular/cdk/portal';
3
- import { AsyncPipe, NgClass, NgTemplateOutlet, NgComponentOutlet, DOCUMENT, JsonPipe, formatDate, NgIf } from '@angular/common';
3
+ import { AsyncPipe, NgClass, NgTemplateOutlet, NgComponentOutlet, DOCUMENT, JsonPipe, formatDate, NgIf, NgFor } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
5
  import { Component, ViewEncapsulation, ChangeDetectionStrategy, Directive, InjectionToken, booleanAttribute, Input, ContentChild, ContentChildren, inject, ElementRef, Injector, HostBinding, computed, signal, Optional, Inject, Injectable, SkipSelf, HostListener, ViewContainerRef, EventEmitter, NgZone, isDevMode, Output, NgModule, ChangeDetectorRef, ViewChild, assertInInjectionContext, runInInjectionContext, TemplateRef, forwardRef, LOCALE_ID, numberAttribute, ViewChildren, Pipe, effect, Attribute } from '@angular/core';
6
6
  import * as i1$2 from '@ethlete/core';
@@ -9514,7 +9514,7 @@ class ComboboxBodyComponent {
9514
9514
  provide: COMBOBOX_BODY_TOKEN,
9515
9515
  useExisting: ComboboxBodyComponent,
9516
9516
  },
9517
- ], viewQueries: [{ propertyName: "_containerElementRef", first: true, predicate: ["containerElement"], descendants: true, read: ElementRef, static: true }, { propertyName: "_animatedLifecycle", first: true, predicate: ANIMATED_LIFECYCLE_TOKEN, descendants: true, static: true }, { propertyName: "_options", predicate: ComboboxOptionComponent, descendants: true }], hostDirectives: [{ directive: i1$2.ClickOutsideDirective }, { directive: i2$1.ProvideThemeDirective }], ngImport: i0, template: "<!-- TODO(TRB): Use new control flow -->\n<div #containerElement class=\"et-combobox-body-container\" etAnimatedLifecycle>\n <ng-container *etLet=\"combobox.options$ | async as options\">\n <ng-container *ngIf=\"!options?.length && !combobox.error && !combobox.loading\">\n <ng-container *ngIf=\"combobox.customBodyEmptyTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyEmptyComponent$ | async as comp; else default\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyEmptyComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n <ng-template #default>\n <p class=\"et-combobox-body--empty\">{{ combobox._tempEmptyText }}</p>\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"combobox.error && !combobox.loading\">\n <ng-container *ngIf=\"combobox.customBodyErrorTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl; context: { error: combobox.error }\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyErrorComponent$ | async as comp\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (customErrorComponentInputs$ | async) ?? { error: combobox.error }\"\n />\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"combobox.loading$ | async\">\n <ng-container *ngIf=\"combobox.customBodyLoadingTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyLoadingComponent$ | async as comp\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyLoadingComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"!combobox.error\">\n <et-combobox-option *ngFor=\"let option of options; trackBy: trackByFn\" [option]=\"option\" />\n </ng-container>\n\n <ng-container *ngIf=\"options?.length && combobox.showBodyMoreItemsHint\">\n <ng-container *ngIf=\"combobox.customBodyMoreItemsHintTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyMoreItemsHintComponent$ | async as comp; else default\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyMoreItemsHintComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n <ng-template #default>\n <p *ngIf=\"combobox.bodyMoreItemsHintText\" class=\"et-combobox-body--more-items-hint\">\n {{ combobox.bodyMoreItemsHintText }}\n </p>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: ComboboxOptionComponent, selector: "et-combobox-option", inputs: ["option"] }, { kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: AnimatedLifecycleDirective, selector: "[etAnimatedLifecycle]", exportAs: ["etAnimatedLifecycle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9517
+ ], viewQueries: [{ propertyName: "_containerElementRef", first: true, predicate: ["containerElement"], descendants: true, read: ElementRef, static: true }, { propertyName: "_animatedLifecycle", first: true, predicate: ANIMATED_LIFECYCLE_TOKEN, descendants: true, static: true }, { propertyName: "_options", predicate: ComboboxOptionComponent, descendants: true }], hostDirectives: [{ directive: i1$2.ClickOutsideDirective }, { directive: i2$1.ProvideThemeDirective }], ngImport: i0, template: "<!-- TODO(TRB): Use new control flow -->\n<div #containerElement class=\"et-combobox-body-container\" etAnimatedLifecycle>\n <ng-container *etLet=\"combobox.options$ | async as options\">\n <ng-container *ngIf=\"!options?.length && !combobox.error && !combobox.loading\">\n <ng-container *ngIf=\"combobox.customBodyEmptyTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyEmptyComponent$ | async as comp; else default\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyEmptyComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n <ng-template #default>\n <p class=\"et-combobox-body--empty\">{{ combobox._tempEmptyText }}</p>\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"combobox.error && !combobox.loading\">\n <ng-container *ngIf=\"combobox.customBodyErrorTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl; context: { error: combobox.error }\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyErrorComponent$ | async as comp\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (customErrorComponentInputs$ | async) ?? { error: combobox.error }\"\n />\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"combobox.loading$ | async\">\n <ng-container *ngIf=\"combobox.customBodyLoadingTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyLoadingComponent$ | async as comp\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyLoadingComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"!combobox.error\">\n <et-combobox-option *ngFor=\"let option of options; trackBy: trackByFn\" [option]=\"option\" />\n </ng-container>\n\n <ng-container *ngIf=\"options?.length && combobox.showBodyMoreItemsHint\">\n <ng-container *ngIf=\"combobox.customBodyMoreItemsHintTpl$ | async as tpl; else componentOrNone\">\n <ng-container *ngTemplateOutlet=\"tpl\" />\n </ng-container>\n <ng-template #componentOrNone>\n <ng-container *ngIf=\"combobox.customBodyMoreItemsHintComponent$ | async as comp; else default\">\n <ng-container\n *ngComponentOutlet=\"comp; inputs: (combobox.customBodyMoreItemsHintComponentInputs$ | async) ?? undefined\"\n />\n </ng-container>\n <ng-template #default>\n <p *ngIf=\"combobox.bodyMoreItemsHintText\" class=\"et-combobox-body--more-items-hint\">\n {{ combobox.bodyMoreItemsHintText }}\n </p>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: ComboboxOptionComponent, selector: "et-combobox-option", inputs: ["option"] }, { kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: AnimatedLifecycleDirective, selector: "[etAnimatedLifecycle]", exportAs: ["etAnimatedLifecycle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9518
9518
  }
9519
9519
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ComboboxBodyComponent, decorators: [{
9520
9520
  type: Component,
@@ -9531,6 +9531,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
9531
9531
  AsyncPipe,
9532
9532
  AnimatedLifecycleDirective,
9533
9533
  NgIf,
9534
+ NgFor,
9534
9535
  ], hostDirectives: [ClickOutsideDirective, ProvideThemeDirective], providers: [
9535
9536
  {
9536
9537
  provide: COMBOBOX_BODY_TOKEN,