@hestia-earth/ui-components 0.29.2 → 0.29.3

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.
Files changed (52) hide show
  1. package/common/navigation-menu/navigation-menu.component.d.ts +1 -0
  2. package/common/semver-utils.d.ts +0 -1
  3. package/engine/engine-models-version-link/engine-models-version-link.component.d.ts +1 -1
  4. package/esm2022/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.mjs +3 -3
  5. package/esm2022/chart/chart.component.mjs +3 -3
  6. package/esm2022/common/blank-node-state/blank-node-state.component.mjs +3 -3
  7. package/esm2022/common/clipboard/clipboard.component.mjs +3 -3
  8. package/esm2022/common/collapsible-box/collapsible-box.component.mjs +3 -3
  9. package/esm2022/common/data-table/data-table.component.mjs +3 -3
  10. package/esm2022/common/drawer-container/drawer-container.component.mjs +3 -3
  11. package/esm2022/common/link-key-value/link-key-value.component.mjs +3 -3
  12. package/esm2022/common/maps-drawing-confirm/maps-drawing-confirm.component.mjs +3 -3
  13. package/esm2022/common/mobile-shell/mobile-shell.component.mjs +3 -3
  14. package/esm2022/common/navigation-menu/navigation-menu.component.mjs +7 -3
  15. package/esm2022/common/schema-version-link/schema-version-link.component.mjs +3 -3
  16. package/esm2022/common/search-extend/search-extend.component.mjs +3 -3
  17. package/esm2022/common/semver-utils.mjs +2 -3
  18. package/esm2022/common/shelf-dialog/shelf-dialog.component.mjs +3 -3
  19. package/esm2022/common/shell/shell.component.mjs +3 -3
  20. package/esm2022/common/sort-select/sort-select.component.mjs +3 -3
  21. package/esm2022/cycles/cycles-completeness/cycles-completeness.component.mjs +3 -3
  22. package/esm2022/cycles/cycles-nodes/cycles-nodes.component.mjs +3 -3
  23. package/esm2022/cycles/cycles-nodes-timeline/cycles-nodes-timeline.component.mjs +3 -3
  24. package/esm2022/engine/engine-models-stage-deep/engine-models-stage-deep.component.mjs +3 -3
  25. package/esm2022/engine/engine-models-version-link/engine-models-version-link.component.mjs +3 -3
  26. package/esm2022/engine/engine-requirements-form/engine-requirements-form.component.mjs +3 -3
  27. package/esm2022/files/files-error-summary/files-error-summary-item/files-error-summary-item.component.mjs +3 -3
  28. package/esm2022/files/files-upload-errors/files-upload-errors.component.mjs +3 -3
  29. package/esm2022/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.mjs +3 -3
  30. package/esm2022/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.mjs +3 -3
  31. package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +3 -3
  32. package/esm2022/node/node-csv-export-confirm/node-csv-export-confirm.component.mjs +3 -3
  33. package/esm2022/node/node-csv-select-headers/node-csv-select-headers.component.mjs +3 -3
  34. package/esm2022/node/node-diffs/node-diffs.component.mjs +3 -3
  35. package/esm2022/node/node-link/node-link.component.mjs +3 -3
  36. package/esm2022/node/node-logs-file/node-logs-file.component.mjs +3 -3
  37. package/esm2022/node/node-missing-lookup-factors/node-missing-lookup-factors.component.mjs +3 -3
  38. package/esm2022/node/node-recommendations/node-recommendations.component.mjs +3 -3
  39. package/esm2022/node/node-value-details/node-value-details.component.mjs +5 -3
  40. package/esm2022/schema/schema-info/schema-info.component.mjs +3 -3
  41. package/esm2022/select/select-option/select-option.component.mjs +3 -3
  42. package/esm2022/select/select-option-group/select-option-group.component.mjs +3 -3
  43. package/esm2022/select/select.component.mjs +3 -3
  44. package/esm2022/sites/sites-nodes/sites-nodes.component.mjs +3 -3
  45. package/esm2022/terms/terms-property-content/terms-property-content.component.mjs +3 -3
  46. package/esm2022/terms/terms-sub-class-of-content/terms-sub-class-of-content.component.mjs +3 -3
  47. package/esm2022/terms/terms-units-description/terms-units-description.component.mjs +3 -3
  48. package/fesm2022/hestia-earth-ui-components.mjs +93 -88
  49. package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
  50. package/node/node-logs-models/node-logs-models.component.d.ts +1 -1
  51. package/package.json +1 -1
  52. package/styles.scss +0 -34
@@ -19,10 +19,10 @@ export class ShelfDialogComponent {
19
19
  this.showContent.set(false);
20
20
  }
21
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ShelfDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: ShelfDialogComponent, isStandalone: true, selector: "he-shelf-dialog", inputs: { headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, bottom: { classPropertyName: "bottom", publicName: "bottom", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "<div [style.bottom]=\"bottom()\" class=\"shelf-dialog | is-fixed\">\n <header class=\"shelf-dialog__header | px-4 py-2 is-flex is-rounded has-text-white is-align-items-center\">\n <div class=\"is-flex-grow-1\">\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? defaultTemplate\" />\n </div>\n <button (click)=\"showContent.set(!showContent())\" class=\"ml-3 dialog-btn has-text-white\">\n <svg-icon class=\"is-size-4\" [name]=\"toggleIcon()\" />\n </button>\n <button (click)=\"closed.emit()\" class=\"ml-3 dialog-btn has-text-white\">\n <svg-icon class=\"is-size-4\" name=\"far-close\" />\n </button>\n </header>\n <div [class.max-h-0]=\"!showContent()\" class=\"shelf-dialog__content | has-background-white\">\n <div>\n <div class=\"p-4\">\n <ng-content />\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #defaultTemplate>\n {{ title() }}\n</ng-template>\n", styles: [".shelf-dialog{min-width:360px;right:10%;border-radius:.5em .5em 0 0;overflow:hidden;box-shadow:0 8px 8px #00000026;z-index:99}.shelf-dialog__header{background:#4c7194}.shelf-dialog__content{overflow:hidden;display:grid;grid-template-rows:1fr;transition:grid-template-rows 125ms}.shelf-dialog__content>*{overflow:hidden}.shelf-dialog .dialog-btn{background:transparent;border:none;cursor:pointer;width:1.5rem;height:1.5rem}.shelf-dialog .dialog-btn fa-icon{font-size:1.5rem}.max-h-0{grid-template-rows:0fr}@media screen and (max-width: 767px){.shelf-dialog{width:100dvw;right:0;border-radius:0}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: HeSvgIconsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: ShelfDialogComponent, isStandalone: true, selector: "he-shelf-dialog", inputs: { headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, bottom: { classPropertyName: "bottom", publicName: "bottom", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "<div [style.bottom]=\"bottom()\" class=\"shelf-dialog | is-fixed is-overflow-hidden\">\n <header class=\"shelf-dialog__header | px-4 py-2 is-flex is-rounded has-text-white is-align-items-center\">\n <div class=\"is-flex-grow-1\">\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? defaultTemplate\" />\n </div>\n <button (click)=\"showContent.set(!showContent())\" class=\"ml-3 has-text-white | dialog-btn\">\n <svg-icon class=\"is-size-4\" [name]=\"toggleIcon()\" />\n </button>\n <button (click)=\"closed.emit()\" class=\"ml-3 has-text-white | dialog-btn\">\n <svg-icon class=\"is-size-4\" name=\"far-close\" />\n </button>\n </header>\n <div [class.max-h-0]=\"!showContent()\" class=\"shelf-dialog__content | has-background-white is-overflow-hidden\">\n <div>\n <div class=\"p-4\">\n <ng-content />\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #defaultTemplate>\n {{ title() }}\n</ng-template>\n", styles: [".shelf-dialog{min-width:360px;right:10%;border-radius:.5em .5em 0 0;box-shadow:0 8px 8px #00000026;z-index:99}.shelf-dialog__header{background:#4c7194}.shelf-dialog__content{display:grid;grid-template-rows:1fr;transition:grid-template-rows 125ms}.shelf-dialog__content>*{overflow:hidden}.shelf-dialog .dialog-btn{background:transparent;border:none;width:1.5rem;height:1.5rem}.shelf-dialog .dialog-btn fa-icon{font-size:1.5rem}.max-h-0{grid-template-rows:0fr}@media screen and (max-width: 767px){.shelf-dialog{width:100dvw;right:0;border-radius:0}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: HeSvgIconsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
23
  }
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ShelfDialogComponent, decorators: [{
25
25
  type: Component,
26
- args: [{ selector: 'he-shelf-dialog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgTemplateOutlet, SvgIconComponent, HeSvgIconsModule], template: "<div [style.bottom]=\"bottom()\" class=\"shelf-dialog | is-fixed\">\n <header class=\"shelf-dialog__header | px-4 py-2 is-flex is-rounded has-text-white is-align-items-center\">\n <div class=\"is-flex-grow-1\">\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? defaultTemplate\" />\n </div>\n <button (click)=\"showContent.set(!showContent())\" class=\"ml-3 dialog-btn has-text-white\">\n <svg-icon class=\"is-size-4\" [name]=\"toggleIcon()\" />\n </button>\n <button (click)=\"closed.emit()\" class=\"ml-3 dialog-btn has-text-white\">\n <svg-icon class=\"is-size-4\" name=\"far-close\" />\n </button>\n </header>\n <div [class.max-h-0]=\"!showContent()\" class=\"shelf-dialog__content | has-background-white\">\n <div>\n <div class=\"p-4\">\n <ng-content />\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #defaultTemplate>\n {{ title() }}\n</ng-template>\n", styles: [".shelf-dialog{min-width:360px;right:10%;border-radius:.5em .5em 0 0;overflow:hidden;box-shadow:0 8px 8px #00000026;z-index:99}.shelf-dialog__header{background:#4c7194}.shelf-dialog__content{overflow:hidden;display:grid;grid-template-rows:1fr;transition:grid-template-rows 125ms}.shelf-dialog__content>*{overflow:hidden}.shelf-dialog .dialog-btn{background:transparent;border:none;cursor:pointer;width:1.5rem;height:1.5rem}.shelf-dialog .dialog-btn fa-icon{font-size:1.5rem}.max-h-0{grid-template-rows:0fr}@media screen and (max-width: 767px){.shelf-dialog{width:100dvw;right:0;border-radius:0}}\n"] }]
26
+ args: [{ selector: 'he-shelf-dialog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgTemplateOutlet, SvgIconComponent, HeSvgIconsModule], template: "<div [style.bottom]=\"bottom()\" class=\"shelf-dialog | is-fixed is-overflow-hidden\">\n <header class=\"shelf-dialog__header | px-4 py-2 is-flex is-rounded has-text-white is-align-items-center\">\n <div class=\"is-flex-grow-1\">\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? defaultTemplate\" />\n </div>\n <button (click)=\"showContent.set(!showContent())\" class=\"ml-3 has-text-white | dialog-btn\">\n <svg-icon class=\"is-size-4\" [name]=\"toggleIcon()\" />\n </button>\n <button (click)=\"closed.emit()\" class=\"ml-3 has-text-white | dialog-btn\">\n <svg-icon class=\"is-size-4\" name=\"far-close\" />\n </button>\n </header>\n <div [class.max-h-0]=\"!showContent()\" class=\"shelf-dialog__content | has-background-white is-overflow-hidden\">\n <div>\n <div class=\"p-4\">\n <ng-content />\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #defaultTemplate>\n {{ title() }}\n</ng-template>\n", styles: [".shelf-dialog{min-width:360px;right:10%;border-radius:.5em .5em 0 0;box-shadow:0 8px 8px #00000026;z-index:99}.shelf-dialog__header{background:#4c7194}.shelf-dialog__content{display:grid;grid-template-rows:1fr;transition:grid-template-rows 125ms}.shelf-dialog__content>*{overflow:hidden}.shelf-dialog .dialog-btn{background:transparent;border:none;width:1.5rem;height:1.5rem}.shelf-dialog .dialog-btn fa-icon{font-size:1.5rem}.max-h-0{grid-template-rows:0fr}@media screen and (max-width: 767px){.shelf-dialog{width:100dvw;right:0;border-radius:0}}\n"] }]
27
27
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGYtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vc2hlbGYtZGlhbG9nL3NoZWxmLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3NoZWxmLWRpYWxvZy9zaGVsZi1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBVW5ELE1BQU0sT0FBTyxvQkFBb0I7SUFSakM7UUFTcUIsbUJBQWMsR0FBRyxLQUFLLEVBQW9CLENBQUM7UUFFM0MsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBRXhCLFdBQU0sR0FBRyxLQUFLLENBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLFdBQU0sR0FBRyxNQUFNLEVBQVEsQ0FBQztRQUV4QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQixlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0tBUzlHO0lBUFEsTUFBTTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzsrR0FuQlUsb0JBQW9CO21HQUFwQixvQkFBb0IsNGZDYmpDLG02QkF3QkEsOG9CRGJZLGdCQUFnQixvSkFBRSxnQkFBZ0Isa0tBQUUsZ0JBQWdCOzs0RkFFbkQsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgSGVTdmdJY29uc01vZHVsZSB9IGZyb20gJy4uLy4uL3N2Zy1pY29ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLXNoZWxmLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaGVsZi1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaGVsZi1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBTdmdJY29uQ29tcG9uZW50LCBIZVN2Z0ljb25zTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBTaGVsZkRpYWxvZ0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBoZWFkZXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBib3R0b20gPSBpbnB1dDxzdHJpbmcgfCBudW1iZXI+KCcwJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsb3NlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93Q29udGVudCA9IHNpZ25hbCh0cnVlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG9nZ2xlSWNvbiA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnNob3dDb250ZW50KCkgPyAnZmFyLWNoZXZyb24tZG93bicgOiAnZmFyLWNoZXZyb24tdXAnKSk7XG5cbiAgcHVibGljIGV4cGFuZCgpIHtcbiAgICB0aGlzLnNob3dDb250ZW50LnNldCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjb2xsYXBzZSgpIHtcbiAgICB0aGlzLnNob3dDb250ZW50LnNldChmYWxzZSk7XG4gIH1cbn1cbiIsIjxkaXYgW3N0eWxlLmJvdHRvbV09XCJib3R0b20oKVwiIGNsYXNzPVwic2hlbGYtZGlhbG9nIHwgaXMtZml4ZWRcIj5cbiAgPGhlYWRlciBjbGFzcz1cInNoZWxmLWRpYWxvZ19faGVhZGVyIHwgcHgtNCBweS0yIGlzLWZsZXggaXMtcm91bmRlZCBoYXMtdGV4dC13aGl0ZSBpcy1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaXMtZmxleC1ncm93LTFcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyVGVtcGxhdGUoKSA/PyBkZWZhdWx0VGVtcGxhdGVcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b24gKGNsaWNrKT1cInNob3dDb250ZW50LnNldCghc2hvd0NvbnRlbnQoKSlcIiBjbGFzcz1cIm1sLTMgZGlhbG9nLWJ0biBoYXMtdGV4dC13aGl0ZVwiPlxuICAgICAgPHN2Zy1pY29uIGNsYXNzPVwiaXMtc2l6ZS00XCIgW25hbWVdPVwidG9nZ2xlSWNvbigpXCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZWQuZW1pdCgpXCIgY2xhc3M9XCJtbC0zIGRpYWxvZy1idG4gaGFzLXRleHQtd2hpdGVcIj5cbiAgICAgIDxzdmctaWNvbiBjbGFzcz1cImlzLXNpemUtNFwiIG5hbWU9XCJmYXItY2xvc2VcIiAvPlxuICAgIDwvYnV0dG9uPlxuICA8L2hlYWRlcj5cbiAgPGRpdiBbY2xhc3MubWF4LWgtMF09XCIhc2hvd0NvbnRlbnQoKVwiIGNsYXNzPVwic2hlbGYtZGlhbG9nX19jb250ZW50IHwgaGFzLWJhY2tncm91bmQtd2hpdGVcIj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInAtNFwiPlxuICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlPlxuICB7eyB0aXRsZSgpIH19XG48L25nLXRlbXBsYXRlPlxuIl19
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGYtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vc2hlbGYtZGlhbG9nL3NoZWxmLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3NoZWxmLWRpYWxvZy9zaGVsZi1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBVW5ELE1BQU0sT0FBTyxvQkFBb0I7SUFSakM7UUFTcUIsbUJBQWMsR0FBRyxLQUFLLEVBQW9CLENBQUM7UUFFM0MsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBRXhCLFdBQU0sR0FBRyxLQUFLLENBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLFdBQU0sR0FBRyxNQUFNLEVBQVEsQ0FBQztRQUV4QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQixlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0tBUzlHO0lBUFEsTUFBTTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzsrR0FuQlUsb0JBQW9CO21HQUFwQixvQkFBb0IsNGZDYmpDLDY4QkF3QkEsK2xCRGJZLGdCQUFnQixvSkFBRSxnQkFBZ0Isa0tBQUUsZ0JBQWdCOzs0RkFFbkQsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgSGVTdmdJY29uc01vZHVsZSB9IGZyb20gJy4uLy4uL3N2Zy1pY29ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLXNoZWxmLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaGVsZi1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaGVsZi1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBTdmdJY29uQ29tcG9uZW50LCBIZVN2Z0ljb25zTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBTaGVsZkRpYWxvZ0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBoZWFkZXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBib3R0b20gPSBpbnB1dDxzdHJpbmcgfCBudW1iZXI+KCcwJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsb3NlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93Q29udGVudCA9IHNpZ25hbCh0cnVlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG9nZ2xlSWNvbiA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnNob3dDb250ZW50KCkgPyAnZmFyLWNoZXZyb24tZG93bicgOiAnZmFyLWNoZXZyb24tdXAnKSk7XG5cbiAgcHVibGljIGV4cGFuZCgpIHtcbiAgICB0aGlzLnNob3dDb250ZW50LnNldCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjb2xsYXBzZSgpIHtcbiAgICB0aGlzLnNob3dDb250ZW50LnNldChmYWxzZSk7XG4gIH1cbn1cbiIsIjxkaXYgW3N0eWxlLmJvdHRvbV09XCJib3R0b20oKVwiIGNsYXNzPVwic2hlbGYtZGlhbG9nIHwgaXMtZml4ZWQgaXMtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDxoZWFkZXIgY2xhc3M9XCJzaGVsZi1kaWFsb2dfX2hlYWRlciB8IHB4LTQgcHktMiBpcy1mbGV4IGlzLXJvdW5kZWQgaGFzLXRleHQtd2hpdGUgaXMtYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImlzLWZsZXgtZ3Jvdy0xXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRlbXBsYXRlKCkgPz8gZGVmYXVsdFRlbXBsYXRlXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJzaG93Q29udGVudC5zZXQoIXNob3dDb250ZW50KCkpXCIgY2xhc3M9XCJtbC0zIGhhcy10ZXh0LXdoaXRlIHwgZGlhbG9nLWJ0blwiPlxuICAgICAgPHN2Zy1pY29uIGNsYXNzPVwiaXMtc2l6ZS00XCIgW25hbWVdPVwidG9nZ2xlSWNvbigpXCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZWQuZW1pdCgpXCIgY2xhc3M9XCJtbC0zIGhhcy10ZXh0LXdoaXRlIHwgZGlhbG9nLWJ0blwiPlxuICAgICAgPHN2Zy1pY29uIGNsYXNzPVwiaXMtc2l6ZS00XCIgbmFtZT1cImZhci1jbG9zZVwiIC8+XG4gICAgPC9idXR0b24+XG4gIDwvaGVhZGVyPlxuICA8ZGl2IFtjbGFzcy5tYXgtaC0wXT1cIiFzaG93Q29udGVudCgpXCIgY2xhc3M9XCJzaGVsZi1kaWFsb2dfX2NvbnRlbnQgfCBoYXMtYmFja2dyb3VuZC13aGl0ZSBpcy1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInAtNFwiPlxuICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlPlxuICB7eyB0aXRsZSgpIH19XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -77,11 +77,11 @@ export class ShellComponent {
77
77
  button.onClick?.();
78
78
  }
79
79
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: ShellComponent, isStandalone: true, selector: "he-shell", inputs: { shelfButtons: "shelfButtons", menuOverlap: "menuOverlap", closeMenuOnOutsideClick: "closeMenuOnOutsideClick", defaultActiveButtonId: "defaultActiveButtonId" }, outputs: { menuShown: "menuShown" }, queries: [{ propertyName: "iconTemplate", first: true, predicate: ["iconTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"shell | h-100\">\n <aside>\n <div class=\"shell__menu | is-relative h-100 is-flex is-flex-direction-column is-justify-content-space-between\">\n <div class=\"shell__menu--section | is-flex is-flex-direction-column\">\n @for (button of topMenuButtons(); track trackByFn($index, button)) {\n <ng-container\n [ngTemplateOutlet]=\"buttonTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"></ng-container>\n }\n </div>\n\n <div class=\"shell__menu--section | is-flex is-flex-direction-column\">\n @for (button of bottomMenuButtons(); track trackByFn($index, button)) {\n <ng-container\n [ngTemplateOutlet]=\"buttonTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"></ng-container>\n }\n </div>\n </div>\n <div class=\"shell__menuContent | h-100 is-absolute\" [class.expanded]=\"expanded()\">\n <div class=\"h-100\" [class.is-hidden]=\"!expanded()\">\n <ng-template [ngTemplateOutlet]=\"menuRef()\"></ng-template>\n </div>\n </div>\n </aside>\n\n <div class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n class=\"shell__content--body | w-100\"\n [class.menu-expanded]=\"!menuOverlap && expanded()\"\n (click)=\"closeMenuOnOutsideClick ? hideMenu() : null\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-template #buttonTemplate let-button>\n <button\n (click)=\"onMenuButtonClick(button)\"\n class=\"menu-button button is-secondary\"\n [ngClass]=\"button.isActive ? button.activeClassName : ''\"\n [class.is-active]=\"button.isActive\">\n <ng-container\n *ngTemplateOutlet=\"\n iconTemplate ?? defaultIconTemplate;\n context: { $implicit: button, isActive: button !== clickedButton }\n \"></ng-container>\n </button>\n</ng-template>\n\n<ng-template #defaultIconTemplate let-button>\n <fa-icon [icon]=\"button.icon\"></fa-icon>\n</ng-template>\n", styles: ["::ng-deep :root{--menu-width: 200px;--menu-transition-time: .15s}.shell{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"menu content\";overflow:hidden}.shell>aside{position:relative;grid-area:menu}.shell>aside .shell__menu{background:#193957;padding:1.5em 0;z-index:10;min-width:2.875em}.shell>aside .shell__menuContent{background-color:#fefaef;width:var(--menu-width);top:0;right:1px;transform:translate(0);transition:transform var(--menu-transition-time) ease-out}.shell>aside .shell__menuContent.expanded{transform:translate(100%)}.shell__content{grid-area:content;overflow:hidden}.shell__content--body{transition:width var(--menu-transition-time) ease-out}.shell__content .menu-expanded{width:calc(100% - var(--menu-width))}.menu-button{border-radius:0;padding:1.25em .6em;box-shadow:none!important;border-width:0}.menu-button.is-active{background-color:#fff;color:#0a0a0a}.menu-button:hover:not(.is-active){background-color:initial}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: ShellComponent, isStandalone: true, selector: "he-shell", inputs: { shelfButtons: "shelfButtons", menuOverlap: "menuOverlap", closeMenuOnOutsideClick: "closeMenuOnOutsideClick", defaultActiveButtonId: "defaultActiveButtonId" }, outputs: { menuShown: "menuShown" }, queries: [{ propertyName: "iconTemplate", first: true, predicate: ["iconTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"shell | h-100 is-overflow-hidden\">\n <aside>\n <div class=\"shell__menu | is-relative h-100 is-flex is-flex-direction-column is-justify-content-space-between\">\n <div class=\"shell__menu--section | is-flex is-flex-direction-column\">\n @for (button of topMenuButtons(); track trackByFn($index, button)) {\n <ng-container\n [ngTemplateOutlet]=\"buttonTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"></ng-container>\n }\n </div>\n\n <div class=\"shell__menu--section | is-flex is-flex-direction-column\">\n @for (button of bottomMenuButtons(); track trackByFn($index, button)) {\n <ng-container\n [ngTemplateOutlet]=\"buttonTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"></ng-container>\n }\n </div>\n </div>\n <div class=\"shell__menuContent | h-100 is-absolute\" [class.expanded]=\"expanded()\">\n <div class=\"h-100\" [class.is-hidden]=\"!expanded()\">\n <ng-template [ngTemplateOutlet]=\"menuRef()\"></ng-template>\n </div>\n </div>\n </aside>\n\n <div class=\"shell__content | h-100 w-100 is-overflow-hidden is-flex is-justify-content-flex-end\">\n <div\n class=\"shell__content--body | w-100\"\n [class.menu-expanded]=\"!menuOverlap && expanded()\"\n (click)=\"closeMenuOnOutsideClick ? hideMenu() : null\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-template #buttonTemplate let-button>\n <button\n (click)=\"onMenuButtonClick(button)\"\n class=\"menu-button button is-secondary\"\n [ngClass]=\"button.isActive ? button.activeClassName : ''\"\n [class.is-active]=\"button.isActive\">\n <ng-container\n *ngTemplateOutlet=\"\n iconTemplate ?? defaultIconTemplate;\n context: { $implicit: button, isActive: button !== clickedButton }\n \"></ng-container>\n </button>\n</ng-template>\n\n<ng-template #defaultIconTemplate let-button>\n <fa-icon [icon]=\"button.icon\" />\n</ng-template>\n", styles: ["::ng-deep :root{--menu-width: 200px;--menu-transition-time: .15s}.shell{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"menu content\"}.shell>aside{position:relative;grid-area:menu}.shell>aside .shell__menu{background:#193957;padding:1.5em 0;z-index:10;min-width:2.875em}.shell>aside .shell__menuContent{background-color:#fefaef;width:var(--menu-width);top:0;right:1px;transform:translate(0);transition:transform var(--menu-transition-time) ease-out}.shell>aside .shell__menuContent.expanded{transform:translate(100%)}.shell__content{grid-area:content}.shell__content--body{transition:width var(--menu-transition-time) ease-out}.shell__content .menu-expanded{width:calc(100% - var(--menu-width))}.menu-button{border-radius:0;padding:1.25em .6em;box-shadow:none!important;border-width:0}.menu-button.is-active{background-color:#fff;color:#0a0a0a}.menu-button:hover:not(.is-active){background-color:initial}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] }); }
81
81
  }
82
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ShellComponent, decorators: [{
83
83
  type: Component,
84
- args: [{ selector: 'he-shell', standalone: true, imports: [NgTemplateOutlet, NgClass, FaIconComponent], template: "<div class=\"shell | h-100\">\n <aside>\n <div class=\"shell__menu | is-relative h-100 is-flex is-flex-direction-column is-justify-content-space-between\">\n <div class=\"shell__menu--section | is-flex is-flex-direction-column\">\n @for (button of topMenuButtons(); track trackByFn($index, button)) {\n <ng-container\n [ngTemplateOutlet]=\"buttonTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"></ng-container>\n }\n </div>\n\n <div class=\"shell__menu--section | is-flex is-flex-direction-column\">\n @for (button of bottomMenuButtons(); track trackByFn($index, button)) {\n <ng-container\n [ngTemplateOutlet]=\"buttonTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"></ng-container>\n }\n </div>\n </div>\n <div class=\"shell__menuContent | h-100 is-absolute\" [class.expanded]=\"expanded()\">\n <div class=\"h-100\" [class.is-hidden]=\"!expanded()\">\n <ng-template [ngTemplateOutlet]=\"menuRef()\"></ng-template>\n </div>\n </div>\n </aside>\n\n <div class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n class=\"shell__content--body | w-100\"\n [class.menu-expanded]=\"!menuOverlap && expanded()\"\n (click)=\"closeMenuOnOutsideClick ? hideMenu() : null\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-template #buttonTemplate let-button>\n <button\n (click)=\"onMenuButtonClick(button)\"\n class=\"menu-button button is-secondary\"\n [ngClass]=\"button.isActive ? button.activeClassName : ''\"\n [class.is-active]=\"button.isActive\">\n <ng-container\n *ngTemplateOutlet=\"\n iconTemplate ?? defaultIconTemplate;\n context: { $implicit: button, isActive: button !== clickedButton }\n \"></ng-container>\n </button>\n</ng-template>\n\n<ng-template #defaultIconTemplate let-button>\n <fa-icon [icon]=\"button.icon\"></fa-icon>\n</ng-template>\n", styles: ["::ng-deep :root{--menu-width: 200px;--menu-transition-time: .15s}.shell{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"menu content\";overflow:hidden}.shell>aside{position:relative;grid-area:menu}.shell>aside .shell__menu{background:#193957;padding:1.5em 0;z-index:10;min-width:2.875em}.shell>aside .shell__menuContent{background-color:#fefaef;width:var(--menu-width);top:0;right:1px;transform:translate(0);transition:transform var(--menu-transition-time) ease-out}.shell>aside .shell__menuContent.expanded{transform:translate(100%)}.shell__content{grid-area:content;overflow:hidden}.shell__content--body{transition:width var(--menu-transition-time) ease-out}.shell__content .menu-expanded{width:calc(100% - var(--menu-width))}.menu-button{border-radius:0;padding:1.25em .6em;box-shadow:none!important;border-width:0}.menu-button.is-active{background-color:#fff;color:#0a0a0a}.menu-button:hover:not(.is-active){background-color:initial}\n"] }]
84
+ args: [{ selector: 'he-shell', standalone: true, imports: [NgTemplateOutlet, NgClass, FaIconComponent], template: "<div class=\"shell | h-100 is-overflow-hidden\">\n <aside>\n <div class=\"shell__menu | is-relative h-100 is-flex is-flex-direction-column is-justify-content-space-between\">\n <div class=\"shell__menu--section | is-flex is-flex-direction-column\">\n @for (button of topMenuButtons(); track trackByFn($index, button)) {\n <ng-container\n [ngTemplateOutlet]=\"buttonTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"></ng-container>\n }\n </div>\n\n <div class=\"shell__menu--section | is-flex is-flex-direction-column\">\n @for (button of bottomMenuButtons(); track trackByFn($index, button)) {\n <ng-container\n [ngTemplateOutlet]=\"buttonTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"></ng-container>\n }\n </div>\n </div>\n <div class=\"shell__menuContent | h-100 is-absolute\" [class.expanded]=\"expanded()\">\n <div class=\"h-100\" [class.is-hidden]=\"!expanded()\">\n <ng-template [ngTemplateOutlet]=\"menuRef()\"></ng-template>\n </div>\n </div>\n </aside>\n\n <div class=\"shell__content | h-100 w-100 is-overflow-hidden is-flex is-justify-content-flex-end\">\n <div\n class=\"shell__content--body | w-100\"\n [class.menu-expanded]=\"!menuOverlap && expanded()\"\n (click)=\"closeMenuOnOutsideClick ? hideMenu() : null\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-template #buttonTemplate let-button>\n <button\n (click)=\"onMenuButtonClick(button)\"\n class=\"menu-button button is-secondary\"\n [ngClass]=\"button.isActive ? button.activeClassName : ''\"\n [class.is-active]=\"button.isActive\">\n <ng-container\n *ngTemplateOutlet=\"\n iconTemplate ?? defaultIconTemplate;\n context: { $implicit: button, isActive: button !== clickedButton }\n \"></ng-container>\n </button>\n</ng-template>\n\n<ng-template #defaultIconTemplate let-button>\n <fa-icon [icon]=\"button.icon\" />\n</ng-template>\n", styles: ["::ng-deep :root{--menu-width: 200px;--menu-transition-time: .15s}.shell{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"menu content\"}.shell>aside{position:relative;grid-area:menu}.shell>aside .shell__menu{background:#193957;padding:1.5em 0;z-index:10;min-width:2.875em}.shell>aside .shell__menuContent{background-color:#fefaef;width:var(--menu-width);top:0;right:1px;transform:translate(0);transition:transform var(--menu-transition-time) ease-out}.shell>aside .shell__menuContent.expanded{transform:translate(100%)}.shell__content{grid-area:content}.shell__content--body{transition:width var(--menu-transition-time) ease-out}.shell__content .menu-expanded{width:calc(100% - var(--menu-width))}.menu-button{border-radius:0;padding:1.25em .6em;box-shadow:none!important;border-width:0}.menu-button.is-active{background-color:#fff;color:#0a0a0a}.menu-button:hover:not(.is-active){background-color:initial}\n"] }]
85
85
  }], propDecorators: { iconTemplate: [{
86
86
  type: ContentChild,
87
87
  args: ['iconTemplate']
@@ -96,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
96
96
  }], menuShown: [{
97
97
  type: Output
98
98
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9zaGVsbC9zaGVsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3NoZWxsL3NoZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFxQjVELE1BQU0sT0FBTyxjQUFjO0lBUDNCO1FBUWdDLGlCQUFZLEdBQTRCLElBQUksQ0FBQztRQUVuRSxrQkFBYSxHQUF1QyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0QsMkJBQXNCLEdBQWtDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQU1wRSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQiw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFNL0IsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFekMsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDdEIsSUFBSSxDQUFDLGFBQWEsRUFBRTthQUNqQixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLEdBQUcsTUFBTTtZQUNULEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7U0FDbEMsQ0FBQyxDQUFDO2FBQ0YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1osTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFB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RyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNyQixDQUFDOytHQTVGVSxjQUFjO21HQUFkLGNBQWMsNlhDakMzQix1L0RBcURBLHUvQkR0QlksZ0JBQWdCLG9KQUFFLE9BQU8sb0ZBQUUsZUFBZTs7NEZBRXpDLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0UsVUFBVSxjQUdSLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUM7OEJBR3ZCLFlBQVk7c0JBQXpDLFlBQVk7dUJBQUMsY0FBYztnQkFLZixZQUFZO3NCQUF4QixLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsdUJBQXVCO3NCQUEvQixLQUFLO2dCQUVPLHFCQUFxQjtzQkFBakMsS0FBSztnQkFJSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgQ29udGVudENoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFdyaXRhYmxlU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNoZWxsTWVudUJ1dHRvbiB7XG4gIGljb24/OiBhbnk7XG4gIGljb25QYXRoPzogc3RyaW5nO1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xuICBtZW51UmVmPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgcG9zaXRpb24/OiAndG9wJyB8ICdib3R0b20nO1xuICBhY3RpdmVEaXNhYmxlZD86IGJvb2xlYW47XG4gIGlkPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGFjdGl2ZUNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtc2hlbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2hlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaGVsbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgTmdDbGFzcywgRmFJY29uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBTaGVsbENvbXBvbmVudCB7XG4gIEBDb250ZW50Q2hpbGQoJ2ljb25UZW1wbGF0ZScpIGljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX3NoZWxmQnV0dG9uczogV3JpdGFibGVTaWduYWw8SVNoZWxsTWVudUJ1dHRvbltdPiA9IHNpZ25hbChbXSk7XG4gIHByaXZhdGUgX2RlZmF1bHRBY3RpdmVCdXR0b25JZDogV3JpdGFibGVTaWduYWw8c3RyaW5nIHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG5cbiAgQElucHV0KCkgc2V0IHNoZWxmQnV0dG9ucyh2YWx1ZTogSVNoZWxsTWVudUJ1dHRvbltdKSB7XG4gICAgdGhpcy5fc2hlbGZCdXR0b25zLnNldCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKSBtZW51T3ZlcmxhcCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGNsb3NlTWVudU9uT3V0c2lkZUNsaWNrID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGRlZmF1bHRBY3RpdmVCdXR0b25JZCh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX2RlZmF1bHRBY3RpdmVCdXR0b25JZC5zZXQodmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIG1lbnVTaG93biA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBidXR0b25zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLl9zaGVsZkJ1dHRvbnMoKVxuICAgICAgLm1hcCgoYnV0dG9uLCBpbmRleCkgPT4gKHtcbiAgICAgICAgLi4uYnV0dG9uLFxuICAgICAgICBpZDogYnV0dG9uLmlkIHx8IGluZGV4LnRvU3RyaW5nKClcbiAgICAgIH0pKVxuICAgICAgLm1hcChidXR0b24gPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVNZW51SWQgPSB0aGlzLmFjdGl2ZU1lbnVJZCgpO1xuICAgICAgICByZXR1cm4geyAuLi5idXR0b24sIGlzQWN0aXZlOiBidXR0b24uaWQgPT09IChhY3RpdmVNZW51SWQgfHwgdGhpcy5hY3RpdmVCdXR0b25JZCgpKSB9O1xuICAgICAgfSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgY2xpY2tlZEJ1dHRvbjogV3JpdGFibGVTaWduYWw8c3RyaW5nIHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG4gIHByb3RlY3RlZCBleHBhbmRlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIG1lbnVSZWYgPSBzaWduYWwobnVsbCBhcyBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCk7XG5cbiAgYWN0aXZlQnV0dG9uSWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY2xpY2tlZEJ1dHRvbigpIHx8IHRoaXMuX2RlZmF1bHRBY3RpdmVCdXR0b25JZCgpO1xuICB9KTtcblxuICBhY3RpdmVNZW51SWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWQoKSAmJiB0aGlzLm1lbnVSZWYoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NoZWxmQnV0dG9ucygpXG4gICAgICAgIC5maW5kSW5kZXgoYnV0dG9uID0+IGJ1dHRvbi5tZW51UmVmID09PSB0aGlzLm1lbnVSZWYoKSlcbiAgICAgICAgPy50b1N0cmluZygpO1xuICAgIH1cbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHRvcE1lbnVCdXR0b25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvbnMoKS5maWx0ZXIoYnV0dG9uID0+ICFidXR0b24ucG9zaXRpb24gfHwgYnV0dG9uLnBvc2l0aW9uID09PSAndG9wJyk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogSVNoZWxsTWVudUJ1dHRvbikge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJvdHRvbU1lbnVCdXR0b25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvbnMoKS5maWx0ZXIoYnV0dG9uID0+IGJ1dHRvbi5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpO1xuICB9KTtcblxuICBoaWRlTWVudSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5jbGlja2VkQnV0dG9uLnNldChudWxsKTtcbiAgfVxuXG4gIHNob3dNZW51KHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICh0ZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5tZW51UmVmLnNldCh0ZW1wbGF0ZVJlZik7XG4gICAgfVxuICAgIHRoaXMuZXhwYW5kZWQuc2V0KHRydWUpO1xuICAgIHRoaXMubWVudVNob3duLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbk1lbnVCdXR0b25DbGljayhidXR0b246IElTaGVsbE1lbnVCdXR0b24pIHtcbiAgICBpZiAoYnV0dG9uLmlkID09PSB0aGlzLmNsaWNrZWRCdXR0b24oKSkge1xuICAgICAgdGhpcy5oaWRlTWVudSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChidXR0b24ubWVudVJlZikge1xuICAgICAgdGhpcy5tZW51UmVmLnNldChidXR0b24ubWVudVJlZik7XG4gICAgICB0aGlzLnNob3dNZW51KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZU1lbnUoKTtcbiAgICB9XG5cbiAgICBpZiAoIWJ1dHRvbi5hY3RpdmVEaXNhYmxlZCkge1xuICAgICAgdGhpcy5jbGlja2VkQnV0dG9uLnNldChidXR0b24uaWQpO1xuICAgIH1cblxuICAgIGJ1dHRvbi5vbkNsaWNrPy4oKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNoZWxsIHwgaC0xMDBcIj5cbiAgPGFzaWRlPlxuICAgIDxkaXYgY2xhc3M9XCJzaGVsbF9fbWVudSB8IGlzLXJlbGF0aXZlIGgtMTAwIGlzLWZsZXggaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uIGlzLWp1c3RpZnktY29udGVudC1zcGFjZS1iZXR3ZWVuXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2hlbGxfX21lbnUtLXNlY3Rpb24gfCBpcy1mbGV4IGlzLWZsZXgtZGlyZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICBAZm9yIChidXR0b24gb2YgdG9wTWVudUJ1dHRvbnMoKTsgdHJhY2sgdHJhY2tCeUZuKCRpbmRleCwgYnV0dG9uKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogYnV0dG9uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaGVsbF9fbWVudS0tc2VjdGlvbiB8IGlzLWZsZXggaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uXCI+XG4gICAgICAgIEBmb3IgKGJ1dHRvbiBvZiBib3R0b21NZW51QnV0dG9ucygpOyB0cmFjayB0cmFja0J5Rm4oJGluZGV4LCBidXR0b24pKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBidXR0b24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2hlbGxfX21lbnVDb250ZW50IHwgaC0xMDAgaXMtYWJzb2x1dGVcIiBbY2xhc3MuZXhwYW5kZWRdPVwiZXhwYW5kZWQoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhZXhwYW5kZWQoKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVudVJlZigpXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2FzaWRlPlxuXG4gIDxkaXYgY2xhc3M9XCJzaGVsbF9fY29udGVudCB8IGgtMTAwIHctMTAwIGlzLWZsZXggaXMtanVzdGlmeS1jb250ZW50LWZsZXgtZW5kXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzaGVsbF9fY29udGVudC0tYm9keSB8IHctMTAwXCJcbiAgICAgIFtjbGFzcy5tZW51LWV4cGFuZGVkXT1cIiFtZW51T3ZlcmxhcCAmJiBleHBhbmRlZCgpXCJcbiAgICAgIChjbGljayk9XCJjbG9zZU1lbnVPbk91dHNpZGVDbGljayA/IGhpZGVNZW51KCkgOiBudWxsXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uVGVtcGxhdGUgbGV0LWJ1dHRvbj5cbiAgPGJ1dHRvblxuICAgIChjbGljayk9XCJvbk1lbnVCdXR0b25DbGljayhidXR0b24pXCJcbiAgICBjbGFzcz1cIm1lbnUtYnV0dG9uIGJ1dHRvbiBpcy1zZWNvbmRhcnlcIlxuICAgIFtuZ0NsYXNzXT1cImJ1dHRvbi5pc0FjdGl2ZSA/IGJ1dHRvbi5hY3RpdmVDbGFzc05hbWUgOiAnJ1wiXG4gICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJidXR0b24uaXNBY3RpdmVcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICBpY29uVGVtcGxhdGUgPz8gZGVmYXVsdEljb25UZW1wbGF0ZTtcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGJ1dHRvbiwgaXNBY3RpdmU6IGJ1dHRvbiAhPT0gY2xpY2tlZEJ1dHRvbiB9XG4gICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJY29uVGVtcGxhdGUgbGV0LWJ1dHRvbj5cbiAgPGZhLWljb24gW2ljb25dPVwiYnV0dG9uLmljb25cIj48L2ZhLWljb24+XG48L25nLXRlbXBsYXRlPlxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9zaGVsbC9zaGVsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3NoZWxsL3NoZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFxQjVELE1BQU0sT0FBTyxjQUFjO0lBUDNCO1FBUWdDLGlCQUFZLEdBQTRCLElBQUksQ0FBQztRQUVuRSxrQkFBYSxHQUF1QyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0QsMkJBQXNCLEdBQWtDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQU1wRSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQiw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFNL0IsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFekMsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDdEIsSUFBSSxDQUFDLGFBQWEsRUFBRTthQUNqQixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLEdBQUcsTUFBTTtZQUNULEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7U0FDbEMsQ0FBQyxDQUFDO2FBQ0YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1osTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFB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RyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNyQixDQUFDOytHQTVGVSxjQUFjO21HQUFkLGNBQWMsNlhDakMzQixxaEVBcURBLHU5QkR0QlksZ0JBQWdCLG9KQUFFLE9BQU8sb0ZBQUUsZUFBZTs7NEZBRXpDLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0UsVUFBVSxjQUdSLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUM7OEJBR3ZCLFlBQVk7c0JBQXpDLFlBQVk7dUJBQUMsY0FBYztnQkFLZixZQUFZO3NCQUF4QixLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsdUJBQXVCO3NCQUEvQixLQUFLO2dCQUVPLHFCQUFxQjtzQkFBakMsS0FBSztnQkFJSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgQ29udGVudENoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFdyaXRhYmxlU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNoZWxsTWVudUJ1dHRvbiB7XG4gIGljb24/OiBhbnk7XG4gIGljb25QYXRoPzogc3RyaW5nO1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xuICBtZW51UmVmPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgcG9zaXRpb24/OiAndG9wJyB8ICdib3R0b20nO1xuICBhY3RpdmVEaXNhYmxlZD86IGJvb2xlYW47XG4gIGlkPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGFjdGl2ZUNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtc2hlbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2hlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaGVsbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgTmdDbGFzcywgRmFJY29uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBTaGVsbENvbXBvbmVudCB7XG4gIEBDb250ZW50Q2hpbGQoJ2ljb25UZW1wbGF0ZScpIGljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX3NoZWxmQnV0dG9uczogV3JpdGFibGVTaWduYWw8SVNoZWxsTWVudUJ1dHRvbltdPiA9IHNpZ25hbChbXSk7XG4gIHByaXZhdGUgX2RlZmF1bHRBY3RpdmVCdXR0b25JZDogV3JpdGFibGVTaWduYWw8c3RyaW5nIHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG5cbiAgQElucHV0KCkgc2V0IHNoZWxmQnV0dG9ucyh2YWx1ZTogSVNoZWxsTWVudUJ1dHRvbltdKSB7XG4gICAgdGhpcy5fc2hlbGZCdXR0b25zLnNldCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKSBtZW51T3ZlcmxhcCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGNsb3NlTWVudU9uT3V0c2lkZUNsaWNrID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGRlZmF1bHRBY3RpdmVCdXR0b25JZCh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX2RlZmF1bHRBY3RpdmVCdXR0b25JZC5zZXQodmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIG1lbnVTaG93biA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBidXR0b25zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLl9zaGVsZkJ1dHRvbnMoKVxuICAgICAgLm1hcCgoYnV0dG9uLCBpbmRleCkgPT4gKHtcbiAgICAgICAgLi4uYnV0dG9uLFxuICAgICAgICBpZDogYnV0dG9uLmlkIHx8IGluZGV4LnRvU3RyaW5nKClcbiAgICAgIH0pKVxuICAgICAgLm1hcChidXR0b24gPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVNZW51SWQgPSB0aGlzLmFjdGl2ZU1lbnVJZCgpO1xuICAgICAgICByZXR1cm4geyAuLi5idXR0b24sIGlzQWN0aXZlOiBidXR0b24uaWQgPT09IChhY3RpdmVNZW51SWQgfHwgdGhpcy5hY3RpdmVCdXR0b25JZCgpKSB9O1xuICAgICAgfSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgY2xpY2tlZEJ1dHRvbjogV3JpdGFibGVTaWduYWw8c3RyaW5nIHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG4gIHByb3RlY3RlZCBleHBhbmRlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIG1lbnVSZWYgPSBzaWduYWwobnVsbCBhcyBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCk7XG5cbiAgYWN0aXZlQnV0dG9uSWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY2xpY2tlZEJ1dHRvbigpIHx8IHRoaXMuX2RlZmF1bHRBY3RpdmVCdXR0b25JZCgpO1xuICB9KTtcblxuICBhY3RpdmVNZW51SWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWQoKSAmJiB0aGlzLm1lbnVSZWYoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NoZWxmQnV0dG9ucygpXG4gICAgICAgIC5maW5kSW5kZXgoYnV0dG9uID0+IGJ1dHRvbi5tZW51UmVmID09PSB0aGlzLm1lbnVSZWYoKSlcbiAgICAgICAgPy50b1N0cmluZygpO1xuICAgIH1cbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHRvcE1lbnVCdXR0b25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvbnMoKS5maWx0ZXIoYnV0dG9uID0+ICFidXR0b24ucG9zaXRpb24gfHwgYnV0dG9uLnBvc2l0aW9uID09PSAndG9wJyk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogSVNoZWxsTWVudUJ1dHRvbikge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJvdHRvbU1lbnVCdXR0b25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvbnMoKS5maWx0ZXIoYnV0dG9uID0+IGJ1dHRvbi5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpO1xuICB9KTtcblxuICBoaWRlTWVudSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5jbGlja2VkQnV0dG9uLnNldChudWxsKTtcbiAgfVxuXG4gIHNob3dNZW51KHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICh0ZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5tZW51UmVmLnNldCh0ZW1wbGF0ZVJlZik7XG4gICAgfVxuICAgIHRoaXMuZXhwYW5kZWQuc2V0KHRydWUpO1xuICAgIHRoaXMubWVudVNob3duLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbk1lbnVCdXR0b25DbGljayhidXR0b246IElTaGVsbE1lbnVCdXR0b24pIHtcbiAgICBpZiAoYnV0dG9uLmlkID09PSB0aGlzLmNsaWNrZWRCdXR0b24oKSkge1xuICAgICAgdGhpcy5oaWRlTWVudSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChidXR0b24ubWVudVJlZikge1xuICAgICAgdGhpcy5tZW51UmVmLnNldChidXR0b24ubWVudVJlZik7XG4gICAgICB0aGlzLnNob3dNZW51KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZU1lbnUoKTtcbiAgICB9XG5cbiAgICBpZiAoIWJ1dHRvbi5hY3RpdmVEaXNhYmxlZCkge1xuICAgICAgdGhpcy5jbGlja2VkQnV0dG9uLnNldChidXR0b24uaWQpO1xuICAgIH1cblxuICAgIGJ1dHRvbi5vbkNsaWNrPy4oKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNoZWxsIHwgaC0xMDAgaXMtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDxhc2lkZT5cbiAgICA8ZGl2IGNsYXNzPVwic2hlbGxfX21lbnUgfCBpcy1yZWxhdGl2ZSBoLTEwMCBpcy1mbGV4IGlzLWZsZXgtZGlyZWN0aW9uLWNvbHVtbiBpcy1qdXN0aWZ5LWNvbnRlbnQtc3BhY2UtYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNoZWxsX19tZW51LS1zZWN0aW9uIHwgaXMtZmxleCBpcy1mbGV4LWRpcmVjdGlvbi1jb2x1bW5cIj5cbiAgICAgICAgQGZvciAoYnV0dG9uIG9mIHRvcE1lbnVCdXR0b25zKCk7IHRyYWNrIHRyYWNrQnlGbigkaW5kZXgsIGJ1dHRvbikpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGJ1dHRvbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2hlbGxfX21lbnUtLXNlY3Rpb24gfCBpcy1mbGV4IGlzLWZsZXgtZGlyZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICBAZm9yIChidXR0b24gb2YgYm90dG9tTWVudUJ1dHRvbnMoKTsgdHJhY2sgdHJhY2tCeUZuKCRpbmRleCwgYnV0dG9uKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogYnV0dG9uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNoZWxsX19tZW51Q29udGVudCB8IGgtMTAwIGlzLWFic29sdXRlXCIgW2NsYXNzLmV4cGFuZGVkXT1cImV4cGFuZGVkKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMFwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIWV4cGFuZGVkKClcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lbnVSZWYoKVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9hc2lkZT5cblxuICA8ZGl2IGNsYXNzPVwic2hlbGxfX2NvbnRlbnQgfCBoLTEwMCB3LTEwMCBpcy1vdmVyZmxvdy1oaWRkZW4gaXMtZmxleCBpcy1qdXN0aWZ5LWNvbnRlbnQtZmxleC1lbmRcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNoZWxsX19jb250ZW50LS1ib2R5IHwgdy0xMDBcIlxuICAgICAgW2NsYXNzLm1lbnUtZXhwYW5kZWRdPVwiIW1lbnVPdmVybGFwICYmIGV4cGFuZGVkKClcIlxuICAgICAgKGNsaWNrKT1cImNsb3NlTWVudU9uT3V0c2lkZUNsaWNrID8gaGlkZU1lbnUoKSA6IG51bGxcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNidXR0b25UZW1wbGF0ZSBsZXQtYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgKGNsaWNrKT1cIm9uTWVudUJ1dHRvbkNsaWNrKGJ1dHRvbilcIlxuICAgIGNsYXNzPVwibWVudS1idXR0b24gYnV0dG9uIGlzLXNlY29uZGFyeVwiXG4gICAgW25nQ2xhc3NdPVwiYnV0dG9uLmlzQWN0aXZlID8gYnV0dG9uLmFjdGl2ZUNsYXNzTmFtZSA6ICcnXCJcbiAgICBbY2xhc3MuaXMtYWN0aXZlXT1cImJ1dHRvbi5pc0FjdGl2ZVwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIGljb25UZW1wbGF0ZSA/PyBkZWZhdWx0SWNvblRlbXBsYXRlO1xuICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogYnV0dG9uLCBpc0FjdGl2ZTogYnV0dG9uICE9PSBjbGlja2VkQnV0dG9uIH1cbiAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEljb25UZW1wbGF0ZSBsZXQtYnV0dG9uPlxuICA8ZmEtaWNvbiBbaWNvbl09XCJidXR0b24uaWNvblwiIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -41,11 +41,11 @@ export class SortSelectComponent {
41
41
  });
42
42
  }
43
43
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: SortSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: SortSelectComponent, isStandalone: true, selector: "he-sort-select", inputs: { sortOptions: "sortOptions", alignment: "alignment", sortBy: "sortBy", sortOrder: "sortOrder" }, outputs: { sortChange: "sortChange" }, ngImport: i0, template: "<div (clickOutside)=\"showSortBy = false\" [class.is-active]=\"showSortBy\" [ngClass]=\"'is-' + alignment\" class=\"dropdown\">\n <div (click)=\"showSortBy = !showSortBy\" class=\"dropdown-trigger\">\n <button\n [class.is-active]=\"showSortBy\"\n [disableTooltip]=\"showSortBy\"\n aria-controls=\"sort-menu\"\n aria-haspopup=\"true\"\n class=\"button is-ghost\"\n container=\"body\"\n ngbTooltip=\"Sort options\"\n placement=\"bottom\">\n <fa-icon aria-hidden=\"true\" [icon]=\"faSortAmountUpAlt\"></fa-icon>\n </button>\n </div>\n <div class=\"dropdown-menu\" id=\"sort-menu\" role=\"menu\">\n <div (click)=\"showSortBy = false\" class=\"dropdown-content\">\n @for (option of sortOptions; track option) {\n <a (click)=\"sort(option)\" [class.is-selected]=\"sortBySignal() === option.id\" class=\"dropdown-item\">\n <fa-icon\n [icon]=\"arrowIcon()\"\n [style.visibility]=\"sortBySignal() === option.id ? 'visible' : 'hidden'\"\n class=\"is-pr-2\"></fa-icon>\n <span [style.border-color]=\"option.color ?? 'transparent'\" class=\"is-pl-2 is-inline-block is-capitalized\">\n {{ option.label }}\n </span>\n </a>\n }\n </div>\n </div>\n</div>\n", styles: [".dropdown-item>span{border-left:2px solid transparent}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideListenAfter"], outputs: ["clickOutside"] }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: SortSelectComponent, isStandalone: true, selector: "he-sort-select", inputs: { sortOptions: "sortOptions", alignment: "alignment", sortBy: "sortBy", sortOrder: "sortOrder" }, outputs: { sortChange: "sortChange" }, ngImport: i0, template: "<div (clickOutside)=\"showSortBy = false\" [class.is-active]=\"showSortBy\" [ngClass]=\"'is-' + alignment\" class=\"dropdown\">\n <div (click)=\"showSortBy = !showSortBy\" class=\"dropdown-trigger\">\n <button\n [class.is-active]=\"showSortBy\"\n [disableTooltip]=\"showSortBy\"\n aria-controls=\"sort-menu\"\n aria-haspopup=\"true\"\n class=\"button is-ghost\"\n container=\"body\"\n ngbTooltip=\"Sort options\"\n placement=\"bottom\">\n <fa-icon aria-hidden=\"true\" [icon]=\"faSortAmountUpAlt\" />\n </button>\n </div>\n <div class=\"dropdown-menu\" id=\"sort-menu\" role=\"menu\">\n <div (click)=\"showSortBy = false\" class=\"dropdown-content\">\n @for (option of sortOptions; track option) {\n <a (click)=\"sort(option)\" [class.is-selected]=\"sortBySignal() === option.id\" class=\"dropdown-item\">\n <fa-icon\n [icon]=\"arrowIcon()\"\n [style.visibility]=\"sortBySignal() === option.id ? 'visible' : 'hidden'\"\n class=\"is-pr-2\" />\n <span [style.border-color]=\"option.color ?? 'transparent'\" class=\"is-pl-2 is-inline-block is-capitalized\">\n {{ option.label }}\n </span>\n </a>\n }\n </div>\n </div>\n</div>\n", styles: [".dropdown-item>span{border-left:2px solid transparent}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideListenAfter"], outputs: ["clickOutside"] }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
45
45
  }
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: SortSelectComponent, decorators: [{
47
47
  type: Component,
48
- args: [{ selector: 'he-sort-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass, ClickOutsideDirective, NgbTooltip, FaIconComponent], template: "<div (clickOutside)=\"showSortBy = false\" [class.is-active]=\"showSortBy\" [ngClass]=\"'is-' + alignment\" class=\"dropdown\">\n <div (click)=\"showSortBy = !showSortBy\" class=\"dropdown-trigger\">\n <button\n [class.is-active]=\"showSortBy\"\n [disableTooltip]=\"showSortBy\"\n aria-controls=\"sort-menu\"\n aria-haspopup=\"true\"\n class=\"button is-ghost\"\n container=\"body\"\n ngbTooltip=\"Sort options\"\n placement=\"bottom\">\n <fa-icon aria-hidden=\"true\" [icon]=\"faSortAmountUpAlt\"></fa-icon>\n </button>\n </div>\n <div class=\"dropdown-menu\" id=\"sort-menu\" role=\"menu\">\n <div (click)=\"showSortBy = false\" class=\"dropdown-content\">\n @for (option of sortOptions; track option) {\n <a (click)=\"sort(option)\" [class.is-selected]=\"sortBySignal() === option.id\" class=\"dropdown-item\">\n <fa-icon\n [icon]=\"arrowIcon()\"\n [style.visibility]=\"sortBySignal() === option.id ? 'visible' : 'hidden'\"\n class=\"is-pr-2\"></fa-icon>\n <span [style.border-color]=\"option.color ?? 'transparent'\" class=\"is-pl-2 is-inline-block is-capitalized\">\n {{ option.label }}\n </span>\n </a>\n }\n </div>\n </div>\n</div>\n", styles: [".dropdown-item>span{border-left:2px solid transparent}\n"] }]
48
+ args: [{ selector: 'he-sort-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass, ClickOutsideDirective, NgbTooltip, FaIconComponent], template: "<div (clickOutside)=\"showSortBy = false\" [class.is-active]=\"showSortBy\" [ngClass]=\"'is-' + alignment\" class=\"dropdown\">\n <div (click)=\"showSortBy = !showSortBy\" class=\"dropdown-trigger\">\n <button\n [class.is-active]=\"showSortBy\"\n [disableTooltip]=\"showSortBy\"\n aria-controls=\"sort-menu\"\n aria-haspopup=\"true\"\n class=\"button is-ghost\"\n container=\"body\"\n ngbTooltip=\"Sort options\"\n placement=\"bottom\">\n <fa-icon aria-hidden=\"true\" [icon]=\"faSortAmountUpAlt\" />\n </button>\n </div>\n <div class=\"dropdown-menu\" id=\"sort-menu\" role=\"menu\">\n <div (click)=\"showSortBy = false\" class=\"dropdown-content\">\n @for (option of sortOptions; track option) {\n <a (click)=\"sort(option)\" [class.is-selected]=\"sortBySignal() === option.id\" class=\"dropdown-item\">\n <fa-icon\n [icon]=\"arrowIcon()\"\n [style.visibility]=\"sortBySignal() === option.id ? 'visible' : 'hidden'\"\n class=\"is-pr-2\" />\n <span [style.border-color]=\"option.color ?? 'transparent'\" class=\"is-pl-2 is-inline-block is-capitalized\">\n {{ option.label }}\n </span>\n </a>\n }\n </div>\n </div>\n</div>\n", styles: [".dropdown-item>span{border-left:2px solid transparent}\n"] }]
49
49
  }], propDecorators: { sortOptions: [{
50
50
  type: Input
51
51
  }], alignment: [{
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
55
55
  }], sortOrder: [{
56
56
  type: Input
57
57
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9zb3J0LXNlbGVjdC9zb3J0LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3NvcnQtc2VsZWN0L3NvcnQtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTVHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQXVCbkUsTUFBTSxPQUFPLG1CQUFtQjtJQVJoQztRQVNxQixzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUtoRCxjQUFTLEdBQXFCLE9BQU8sQ0FBQztRQUVyQyxlQUFVLEdBQUcsTUFBTSxFQUFtQixDQUFDO1FBRXZDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTFCLG9CQUFlLEdBQUcsTUFBTSxDQUFrQixNQUFNLENBQUMsQ0FBQztRQUVsRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBVW5CLGNBQVMsR0FBRyxRQUFRLENBQzVCLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFhLENBQzlGLENBQUM7S0FzQkg7SUFoQ0MsSUFBYSxNQUFNLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBYSxTQUFTLENBQUMsS0FBc0I7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQU1TLElBQUksQ0FBQyxNQUFrQjtRQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQS9DVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwyTkM5QmhDLGt4Q0E4QkEsa0hERlksT0FBTyxvRkFBRSxxQkFBcUIsMkhBQUUsVUFBVSwyVEFBRSxlQUFlOzs0RkFFMUQsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDOzhCQU0vRCxXQUFXO3NCQURqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBVU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvblByb3AgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgTmdiVG9vbHRpcCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgZmFMb25nQXJyb3dBbHREb3duLCBmYUxvbmdBcnJvd0FsdFVwLCBmYVNvcnRBbW91bnRVcEFsdCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5cbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4uL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGludGVyZmFjZSBTb3J0T3B0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydFNlbGVjdEV2ZW50IHtcbiAgc29ydEJ5OiBzdHJpbmc7XG4gIHNvcnRPcmRlcjogU29ydFNlbGVjdE9yZGVyO1xufVxuXG5leHBvcnQgdHlwZSBTb3J0U2VsZWN0T3JkZXIgPSAnYXNjJyB8ICdkZXNjJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtc29ydC1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc29ydC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zb3J0LXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3MsIENsaWNrT3V0c2lkZURpcmVjdGl2ZSwgTmdiVG9vbHRpcCwgRmFJY29uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBTb3J0U2VsZWN0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhU29ydEFtb3VudFVwQWx0ID0gZmFTb3J0QW1vdW50VXBBbHQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNvcnRPcHRpb25zOiBTb3J0T3B0aW9uW107XG5cbiAgQElucHV0KCkgYWxpZ25tZW50OiAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0JztcblxuICBwcm90ZWN0ZWQgc29ydENoYW5nZSA9IG91dHB1dDxTb3J0U2VsZWN0RXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIHNvcnRCeVNpZ25hbCA9IHNpZ25hbCgnJyk7XG5cbiAgcHJvdGVjdGVkIHNvcnRPcmRlclNpZ25hbCA9IHNpZ25hbCg8U29ydFNlbGVjdE9yZGVyPidkZXNjJyk7XG5cbiAgcHJvdGVjdGVkIHNob3dTb3J0QnkgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgc29ydEJ5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNvcnRCeVNpZ25hbC5zZXQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHNvcnRPcmRlcih2YWx1ZTogU29ydFNlbGVjdE9yZGVyKSB7XG4gICAgdGhpcy5zb3J0T3JkZXJTaWduYWwuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhcnJvd0ljb24gPSBjb21wdXRlZChcbiAgICAoKSA9PiAodGhpcy5zb3J0T3JkZXJTaWduYWwoKSA9PT0gJ2Rlc2MnID8gZmFMb25nQXJyb3dBbHREb3duIDogZmFMb25nQXJyb3dBbHRVcCkgYXMgSWNvblByb3BcbiAgKTtcblxuICBwcm90ZWN0ZWQgc29ydChvcHRpb246IFNvcnRPcHRpb24pIHtcbiAgICBpZiAodGhpcy5zb3J0QnlTaWduYWwoKSA9PT0gb3B0aW9uLmlkKSB7XG4gICAgICB0aGlzLl90b2dnbGVTb3J0QnkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0QnlTaWduYWwuc2V0KG9wdGlvbi5pZCk7XG4gICAgICB0aGlzLnNvcnRPcmRlclNpZ25hbC5zZXQoJ2Rlc2MnKTtcbiAgICB9XG4gICAgdGhpcy5fZW1pdFNvcnRDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZVNvcnRCeSgpIHtcbiAgICB0aGlzLnNvcnRPcmRlclNpZ25hbC51cGRhdGUodmFsdWUgPT4gKHZhbHVlID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnKSk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0U29ydENoYW5nZSgpIHtcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdCh7XG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydEJ5U2lnbmFsKCksXG4gICAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyU2lnbmFsKClcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiAoY2xpY2tPdXRzaWRlKT1cInNob3dTb3J0QnkgPSBmYWxzZVwiIFtjbGFzcy5pcy1hY3RpdmVdPVwic2hvd1NvcnRCeVwiIFtuZ0NsYXNzXT1cIidpcy0nICsgYWxpZ25tZW50XCIgY2xhc3M9XCJkcm9wZG93blwiPlxuICA8ZGl2IChjbGljayk9XCJzaG93U29ydEJ5ID0gIXNob3dTb3J0QnlcIiBjbGFzcz1cImRyb3Bkb3duLXRyaWdnZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cInNob3dTb3J0QnlcIlxuICAgICAgW2Rpc2FibGVUb29sdGlwXT1cInNob3dTb3J0QnlcIlxuICAgICAgYXJpYS1jb250cm9scz1cInNvcnQtbWVudVwiXG4gICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdFwiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIG5nYlRvb2x0aXA9XCJTb3J0IG9wdGlvbnNcIlxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCI+XG4gICAgICA8ZmEtaWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBbaWNvbl09XCJmYVNvcnRBbW91bnRVcEFsdFwiPjwvZmEtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgaWQ9XCJzb3J0LW1lbnVcIiByb2xlPVwibWVudVwiPlxuICAgIDxkaXYgKGNsaWNrKT1cInNob3dTb3J0QnkgPSBmYWxzZVwiIGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiPlxuICAgICAgQGZvciAob3B0aW9uIG9mIHNvcnRPcHRpb25zOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgPGEgKGNsaWNrKT1cInNvcnQob3B0aW9uKVwiIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzb3J0QnlTaWduYWwoKSA9PT0gb3B0aW9uLmlkXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XG4gICAgICAgICAgPGZhLWljb25cbiAgICAgICAgICAgIFtpY29uXT1cImFycm93SWNvbigpXCJcbiAgICAgICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cInNvcnRCeVNpZ25hbCgpID09PSBvcHRpb24uaWQgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImlzLXByLTJcIj48L2ZhLWljb24+XG4gICAgICAgICAgPHNwYW4gW3N0eWxlLmJvcmRlci1jb2xvcl09XCJvcHRpb24uY29sb3IgPz8gJ3RyYW5zcGFyZW50J1wiIGNsYXNzPVwiaXMtcGwtMiBpcy1pbmxpbmUtYmxvY2sgaXMtY2FwaXRhbGl6ZWRcIj5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9zb3J0LXNlbGVjdC9zb3J0LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3NvcnQtc2VsZWN0L3NvcnQtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTVHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQXVCbkUsTUFBTSxPQUFPLG1CQUFtQjtJQVJoQztRQVNxQixzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUtoRCxjQUFTLEdBQXFCLE9BQU8sQ0FBQztRQUVyQyxlQUFVLEdBQUcsTUFBTSxFQUFtQixDQUFDO1FBRXZDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTFCLG9CQUFlLEdBQUcsTUFBTSxDQUFrQixNQUFNLENBQUMsQ0FBQztRQUVsRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBVW5CLGNBQVMsR0FBRyxRQUFRLENBQzVCLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFhLENBQzlGLENBQUM7S0FzQkg7SUFoQ0MsSUFBYSxNQUFNLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBYSxTQUFTLENBQUMsS0FBc0I7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQU1TLElBQUksQ0FBQyxNQUFrQjtRQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQS9DVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwyTkM5QmhDLGt3Q0E4QkEsa0hERlksT0FBTyxvRkFBRSxxQkFBcUIsMkhBQUUsVUFBVSwyVEFBRSxlQUFlOzs0RkFFMUQsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDOzhCQU0vRCxXQUFXO3NCQURqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBVU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvblByb3AgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgTmdiVG9vbHRpcCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgZmFMb25nQXJyb3dBbHREb3duLCBmYUxvbmdBcnJvd0FsdFVwLCBmYVNvcnRBbW91bnRVcEFsdCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5cbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4uL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGludGVyZmFjZSBTb3J0T3B0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydFNlbGVjdEV2ZW50IHtcbiAgc29ydEJ5OiBzdHJpbmc7XG4gIHNvcnRPcmRlcjogU29ydFNlbGVjdE9yZGVyO1xufVxuXG5leHBvcnQgdHlwZSBTb3J0U2VsZWN0T3JkZXIgPSAnYXNjJyB8ICdkZXNjJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtc29ydC1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc29ydC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zb3J0LXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3MsIENsaWNrT3V0c2lkZURpcmVjdGl2ZSwgTmdiVG9vbHRpcCwgRmFJY29uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBTb3J0U2VsZWN0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhU29ydEFtb3VudFVwQWx0ID0gZmFTb3J0QW1vdW50VXBBbHQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNvcnRPcHRpb25zOiBTb3J0T3B0aW9uW107XG5cbiAgQElucHV0KCkgYWxpZ25tZW50OiAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0JztcblxuICBwcm90ZWN0ZWQgc29ydENoYW5nZSA9IG91dHB1dDxTb3J0U2VsZWN0RXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIHNvcnRCeVNpZ25hbCA9IHNpZ25hbCgnJyk7XG5cbiAgcHJvdGVjdGVkIHNvcnRPcmRlclNpZ25hbCA9IHNpZ25hbCg8U29ydFNlbGVjdE9yZGVyPidkZXNjJyk7XG5cbiAgcHJvdGVjdGVkIHNob3dTb3J0QnkgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgc29ydEJ5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNvcnRCeVNpZ25hbC5zZXQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHNvcnRPcmRlcih2YWx1ZTogU29ydFNlbGVjdE9yZGVyKSB7XG4gICAgdGhpcy5zb3J0T3JkZXJTaWduYWwuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhcnJvd0ljb24gPSBjb21wdXRlZChcbiAgICAoKSA9PiAodGhpcy5zb3J0T3JkZXJTaWduYWwoKSA9PT0gJ2Rlc2MnID8gZmFMb25nQXJyb3dBbHREb3duIDogZmFMb25nQXJyb3dBbHRVcCkgYXMgSWNvblByb3BcbiAgKTtcblxuICBwcm90ZWN0ZWQgc29ydChvcHRpb246IFNvcnRPcHRpb24pIHtcbiAgICBpZiAodGhpcy5zb3J0QnlTaWduYWwoKSA9PT0gb3B0aW9uLmlkKSB7XG4gICAgICB0aGlzLl90b2dnbGVTb3J0QnkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0QnlTaWduYWwuc2V0KG9wdGlvbi5pZCk7XG4gICAgICB0aGlzLnNvcnRPcmRlclNpZ25hbC5zZXQoJ2Rlc2MnKTtcbiAgICB9XG4gICAgdGhpcy5fZW1pdFNvcnRDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZVNvcnRCeSgpIHtcbiAgICB0aGlzLnNvcnRPcmRlclNpZ25hbC51cGRhdGUodmFsdWUgPT4gKHZhbHVlID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnKSk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0U29ydENoYW5nZSgpIHtcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdCh7XG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydEJ5U2lnbmFsKCksXG4gICAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyU2lnbmFsKClcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiAoY2xpY2tPdXRzaWRlKT1cInNob3dTb3J0QnkgPSBmYWxzZVwiIFtjbGFzcy5pcy1hY3RpdmVdPVwic2hvd1NvcnRCeVwiIFtuZ0NsYXNzXT1cIidpcy0nICsgYWxpZ25tZW50XCIgY2xhc3M9XCJkcm9wZG93blwiPlxuICA8ZGl2IChjbGljayk9XCJzaG93U29ydEJ5ID0gIXNob3dTb3J0QnlcIiBjbGFzcz1cImRyb3Bkb3duLXRyaWdnZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cInNob3dTb3J0QnlcIlxuICAgICAgW2Rpc2FibGVUb29sdGlwXT1cInNob3dTb3J0QnlcIlxuICAgICAgYXJpYS1jb250cm9scz1cInNvcnQtbWVudVwiXG4gICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdFwiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIG5nYlRvb2x0aXA9XCJTb3J0IG9wdGlvbnNcIlxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCI+XG4gICAgICA8ZmEtaWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBbaWNvbl09XCJmYVNvcnRBbW91bnRVcEFsdFwiIC8+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGlkPVwic29ydC1tZW51XCIgcm9sZT1cIm1lbnVcIj5cbiAgICA8ZGl2IChjbGljayk9XCJzaG93U29ydEJ5ID0gZmFsc2VcIiBjbGFzcz1cImRyb3Bkb3duLWNvbnRlbnRcIj5cbiAgICAgIEBmb3IgKG9wdGlvbiBvZiBzb3J0T3B0aW9uczsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgIDxhIChjbGljayk9XCJzb3J0KG9wdGlvbilcIiBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic29ydEJ5U2lnbmFsKCkgPT09IG9wdGlvbi5pZFwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxuICAgICAgICAgIDxmYS1pY29uXG4gICAgICAgICAgICBbaWNvbl09XCJhcnJvd0ljb24oKVwiXG4gICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJzb3J0QnlTaWduYWwoKSA9PT0gb3B0aW9uLmlkID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIlxuICAgICAgICAgICAgY2xhc3M9XCJpcy1wci0yXCIgLz5cbiAgICAgICAgICA8c3BhbiBbc3R5bGUuYm9yZGVyLWNvbG9yXT1cIm9wdGlvbi5jb2xvciA/PyAndHJhbnNwYXJlbnQnXCIgY2xhc3M9XCJpcy1wbC0yIGlzLWlubGluZS1ibG9jayBpcy1jYXBpdGFsaXplZFwiPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -92,7 +92,7 @@ export class CyclesCompletenessComponent {
92
92
  component.headerKeys.set(headerKeys);
93
93
  }
94
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: CyclesCompletenessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: CyclesCompletenessComponent, isStandalone: true, selector: "he-cycles-completeness", inputs: { dataState: { classPropertyName: "dataState", publicName: "dataState", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n @if (selectedView() === View.table) {\n <button class=\"button is-small is-ghost\" (click)=\"showDownload()\">\n <fa-icon [icon]=\"faDownload\" size=\"lg\"></fa-icon>\n </button>\n }\n </div>\n @if (views()?.length > 1) {\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n @for (view of views(); track view) {\n <div class=\"control\">\n <button\n class=\"button is-small\"\n [class.is-selected]=\"selectedView() === view\"\n (click)=\"selectedView.set(view)\">\n <span class=\"icon is-small\">\n <fa-icon [icon]=\"viewIcon[view]\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span class=\"is-hidden-mobile\">{{ view }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n }\n</div>\n\n@switch (selectedView()) {\n @case (View.table) {\n <div class=\"px-3 pb-3\">\n @if (hasData()) {\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n @for (completeness of completenessKeys(); track completeness) {\n <th [attr.title]=\"completeness\">\n <a [href]=\"schemaBaseUrl + '/Completeness#' + completeness\" target=\"_blank\">\n {{ keyToLabel(completeness) }}\n </a>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (cycle of cycles(); track trackById(i, cycle); let i = $index) {\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span>{{ i + 1 }}. {{ defaultLabel(cycle) }}</span>\n </he-node-link>\n </td>\n @for (key of completenessKeys(); track key) {\n <td class=\"is-nowrap\">\n <span>{{ getCompleteness(cycle)[key] ? 'Complete' : 'Incomplete' }}</span>\n <he-blank-node-state\n class=\"ml-1\"\n [dataState]=\"dataState()\"\n [node]=\"getCompleteness(cycle)\"\n [key]=\"key\"></he-blank-node-state>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </he-data-table>\n <he-blank-node-state-notice [dataState]=\"dataState()\"></he-blank-node-state-notice>\n } @else {\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n }\n </div>\n }\n @case (View.logs) {\n @if (cycles().length > 1) {\n <div class=\"field has-addons pt-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n @for (value of cycles(); track value; let i = $index) {\n <option [value]=\"i\">{{ i + 1 }}. {{ defaultLabel(value) }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n }\n @if (selectedNode()) {\n <he-node-logs-models\n [node]=\"selectedNode()\"\n [nodeKey]=\"nodeKey\"\n [logsKey]=\"selectedLogsKey()\"\n [originalValues]=\"selectedOriginalValues()\"\n [recalculatedValues]=\"selectedRecalculatedValues()\"></he-node-logs-models>\n }\n }\n}\n", styles: [""], dependencies: [{ kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "component", type: DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "small"] }, { kind: "component", type: NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink", "linkClass"] }, { kind: "component", type: BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "component", type: BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showDeleted"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: NodeLogsModelsComponent, selector: "he-node-logs-models", inputs: ["node", "nodeKey", "originalValues", "recalculatedValues", "terms", "filterTermTypes", "filterTermTypesLabel", "logsKey", "noDataMessage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: CyclesCompletenessComponent, isStandalone: true, selector: "he-cycles-completeness", inputs: { dataState: { classPropertyName: "dataState", publicName: "dataState", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n @if (selectedView() === View.table) {\n <button class=\"button is-small is-ghost\" (click)=\"showDownload()\">\n <fa-icon [icon]=\"faDownload\" size=\"lg\" />\n </button>\n }\n </div>\n @if (views()?.length > 1) {\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n @for (view of views(); track view) {\n <div class=\"control\">\n <button\n class=\"button is-small\"\n [class.is-selected]=\"selectedView() === view\"\n (click)=\"selectedView.set(view)\">\n <span class=\"icon is-small\">\n <fa-icon [icon]=\"viewIcon[view]\" aria-hidden=\"true\" />\n </span>\n <span class=\"is-hidden-mobile\">{{ view }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n }\n</div>\n\n@switch (selectedView()) {\n @case (View.table) {\n <div class=\"px-3 pb-3\">\n @if (hasData()) {\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n @for (completeness of completenessKeys(); track completeness) {\n <th [attr.title]=\"completeness\">\n <a [href]=\"schemaBaseUrl + '/Completeness#' + completeness\" target=\"_blank\">\n {{ keyToLabel(completeness) }}\n </a>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (cycle of cycles(); track trackById(i, cycle); let i = $index) {\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span>{{ i + 1 }}. {{ defaultLabel(cycle) }}</span>\n </he-node-link>\n </td>\n @for (key of completenessKeys(); track key) {\n <td class=\"is-nowrap\">\n <span>{{ getCompleteness(cycle)[key] ? 'Complete' : 'Incomplete' }}</span>\n <he-blank-node-state\n class=\"ml-1\"\n [dataState]=\"dataState()\"\n [node]=\"getCompleteness(cycle)\"\n [key]=\"key\"></he-blank-node-state>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </he-data-table>\n <he-blank-node-state-notice [dataState]=\"dataState()\"></he-blank-node-state-notice>\n } @else {\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n }\n </div>\n }\n @case (View.logs) {\n @if (cycles().length > 1) {\n <div class=\"field has-addons pt-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n @for (value of cycles(); track value; let i = $index) {\n <option [value]=\"i\">{{ i + 1 }}. {{ defaultLabel(value) }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n }\n @if (selectedNode()) {\n <he-node-logs-models\n [node]=\"selectedNode()\"\n [nodeKey]=\"nodeKey\"\n [logsKey]=\"selectedLogsKey()\"\n [originalValues]=\"selectedOriginalValues()\"\n [recalculatedValues]=\"selectedRecalculatedValues()\"></he-node-logs-models>\n }\n }\n}\n", styles: [""], dependencies: [{ kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "component", type: DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "small"] }, { kind: "component", type: NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink", "linkClass"] }, { kind: "component", type: BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "component", type: BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showDeleted"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: NodeLogsModelsComponent, selector: "he-node-logs-models", inputs: ["node", "nodeKey", "originalValues", "recalculatedValues", "terms", "filterTermTypes", "filterTermTypesLabel", "logsKey", "noDataMessage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
96
96
  }
97
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: CyclesCompletenessComponent, decorators: [{
98
98
  type: Component,
@@ -105,6 +105,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
105
105
  BlankNodeStateNoticeComponent,
106
106
  FormsModule,
107
107
  NodeLogsModelsComponent
108
- ], template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n @if (selectedView() === View.table) {\n <button class=\"button is-small is-ghost\" (click)=\"showDownload()\">\n <fa-icon [icon]=\"faDownload\" size=\"lg\"></fa-icon>\n </button>\n }\n </div>\n @if (views()?.length > 1) {\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n @for (view of views(); track view) {\n <div class=\"control\">\n <button\n class=\"button is-small\"\n [class.is-selected]=\"selectedView() === view\"\n (click)=\"selectedView.set(view)\">\n <span class=\"icon is-small\">\n <fa-icon [icon]=\"viewIcon[view]\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span class=\"is-hidden-mobile\">{{ view }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n }\n</div>\n\n@switch (selectedView()) {\n @case (View.table) {\n <div class=\"px-3 pb-3\">\n @if (hasData()) {\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n @for (completeness of completenessKeys(); track completeness) {\n <th [attr.title]=\"completeness\">\n <a [href]=\"schemaBaseUrl + '/Completeness#' + completeness\" target=\"_blank\">\n {{ keyToLabel(completeness) }}\n </a>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (cycle of cycles(); track trackById(i, cycle); let i = $index) {\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span>{{ i + 1 }}. {{ defaultLabel(cycle) }}</span>\n </he-node-link>\n </td>\n @for (key of completenessKeys(); track key) {\n <td class=\"is-nowrap\">\n <span>{{ getCompleteness(cycle)[key] ? 'Complete' : 'Incomplete' }}</span>\n <he-blank-node-state\n class=\"ml-1\"\n [dataState]=\"dataState()\"\n [node]=\"getCompleteness(cycle)\"\n [key]=\"key\"></he-blank-node-state>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </he-data-table>\n <he-blank-node-state-notice [dataState]=\"dataState()\"></he-blank-node-state-notice>\n } @else {\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n }\n </div>\n }\n @case (View.logs) {\n @if (cycles().length > 1) {\n <div class=\"field has-addons pt-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n @for (value of cycles(); track value; let i = $index) {\n <option [value]=\"i\">{{ i + 1 }}. {{ defaultLabel(value) }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n }\n @if (selectedNode()) {\n <he-node-logs-models\n [node]=\"selectedNode()\"\n [nodeKey]=\"nodeKey\"\n [logsKey]=\"selectedLogsKey()\"\n [originalValues]=\"selectedOriginalValues()\"\n [recalculatedValues]=\"selectedRecalculatedValues()\"></he-node-logs-models>\n }\n }\n}\n" }]
108
+ ], template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n @if (selectedView() === View.table) {\n <button class=\"button is-small is-ghost\" (click)=\"showDownload()\">\n <fa-icon [icon]=\"faDownload\" size=\"lg\" />\n </button>\n }\n </div>\n @if (views()?.length > 1) {\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n @for (view of views(); track view) {\n <div class=\"control\">\n <button\n class=\"button is-small\"\n [class.is-selected]=\"selectedView() === view\"\n (click)=\"selectedView.set(view)\">\n <span class=\"icon is-small\">\n <fa-icon [icon]=\"viewIcon[view]\" aria-hidden=\"true\" />\n </span>\n <span class=\"is-hidden-mobile\">{{ view }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n }\n</div>\n\n@switch (selectedView()) {\n @case (View.table) {\n <div class=\"px-3 pb-3\">\n @if (hasData()) {\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n @for (completeness of completenessKeys(); track completeness) {\n <th [attr.title]=\"completeness\">\n <a [href]=\"schemaBaseUrl + '/Completeness#' + completeness\" target=\"_blank\">\n {{ keyToLabel(completeness) }}\n </a>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (cycle of cycles(); track trackById(i, cycle); let i = $index) {\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span>{{ i + 1 }}. {{ defaultLabel(cycle) }}</span>\n </he-node-link>\n </td>\n @for (key of completenessKeys(); track key) {\n <td class=\"is-nowrap\">\n <span>{{ getCompleteness(cycle)[key] ? 'Complete' : 'Incomplete' }}</span>\n <he-blank-node-state\n class=\"ml-1\"\n [dataState]=\"dataState()\"\n [node]=\"getCompleteness(cycle)\"\n [key]=\"key\"></he-blank-node-state>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </he-data-table>\n <he-blank-node-state-notice [dataState]=\"dataState()\"></he-blank-node-state-notice>\n } @else {\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n }\n </div>\n }\n @case (View.logs) {\n @if (cycles().length > 1) {\n <div class=\"field has-addons pt-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n @for (value of cycles(); track value; let i = $index) {\n <option [value]=\"i\">{{ i + 1 }}. {{ defaultLabel(value) }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n }\n @if (selectedNode()) {\n <he-node-logs-models\n [node]=\"selectedNode()\"\n [nodeKey]=\"nodeKey\"\n [logsKey]=\"selectedLogsKey()\"\n [originalValues]=\"selectedOriginalValues()\"\n [recalculatedValues]=\"selectedRecalculatedValues()\"></he-node-logs-models>\n }\n }\n}\n" }]
109
109
  }], ctorParameters: () => [] });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1jb21wbGV0ZW5lc3MvY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1jb21wbGV0ZW5lc3MvY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFrQixZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBZ0IsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pF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Q0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBaEZVLDJCQUEyQjttR0FBM0IsMkJBQTJCLGtPQ3ZEeEMsNjhIQXlHQSwwREQzREksZUFBZSw0TUFDZixrQkFBa0IsdUdBQ2xCLGlCQUFpQiw0R0FDakIsdUJBQXVCLG1KQUN2Qiw2QkFBNkIsNEdBQzdCLFdBQVcsNE9BQ1gsdUJBQXVCOzs0RkFHZCwyQkFBMkI7a0JBakJ2QyxTQUFTOytCQUNFLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLDZCQUE2Qjt3QkFDN0IsV0FBVzt3QkFDWCx1QkFBdUI7cUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgSWNvbkRlZmluaXRpb24sIGZhQ2FsY3VsYXRvciwgZmFEb3dubG9hZCwgZmFMaXN0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBOb2RlVHlwZSwgTm9uQmxhbmtOb2Rlc0tleSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGtleVRvTGFiZWwgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgSGVOb2RlU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNWYWxpZEtleSB9IGZyb20gJy4uLy4uL2NvbW1vbi9ub2RlLXV0aWxzJztcbmltcG9ydCB7IGRlZmF1bHRMYWJlbCwgc2NoZW1hQmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBsb2dzS2V5IH0gZnJvbSAnLi4vY3ljbGVzLm1vZGVsJztcbmltcG9ydCB7IE5vZGVDc3ZFeHBvcnRDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLWNzdi1leHBvcnQtY29uZmlybS9ub2RlLWNzdi1leHBvcnQtY29uZmlybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUxvZ3NNb2RlbHNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtbG9ncy1tb2RlbHMvbm9kZS1sb2dzLW1vZGVscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmxhbmtOb2RlU3RhdGVOb3RpY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UvYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UuY29tcG9uZW50JztcbmltcG9ydCB7IEJsYW5rTm9kZVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2JsYW5rLW5vZGUtc3RhdGUvYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUxpbmtDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtbGluay9ub2RlLWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcblxuZW51bSBWaWV3IHtcbiAgdGFibGUgPSAnVGFibGUgdmlldycsXG4gIGxvZ3MgPSAnUmVjYWxjdWxhdGlvbnMgbG9ncydcbn1cblxuY29uc3Qgdmlld0ljb246IHtcbiAgW3ZpZXcgaW4gVmlld106IEljb25EZWZpbml0aW9uO1xufSA9IHtcbiAgW1ZpZXcubG9nc106IGZhQ2FsY3VsYXRvcixcbiAgW1ZpZXcudGFibGVdOiBmYUxpc3Rcbn07XG5cbmNvbnN0IGhlYWRlcktleXMgPSBbJ2N5Y2xlLmlkJywgJ2N5Y2xlLkBpZCcsICdjeWNsZS5jb21wbGV0ZW5lc3MuJ107XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBzY2hlbWEgdmVyc2lvbiA8IDE0XG5jb25zdCBnZXRDb21wbGV0ZW5lc3MgPSAoY3ljbGU6IGFueSkgPT4gY3ljbGU/LmNvbXBsZXRlbmVzcyB8fCBjeWNsZT8uZGF0YUNvbXBsZXRlbmVzcyB8fCB7fTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtY3ljbGVzLWNvbXBsZXRlbmVzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtY29tcGxldGVuZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nYlRvb2x0aXAsXG4gICAgRmFJY29uQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBOb2RlTGlua0NvbXBvbmVudCxcbiAgICBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCxcbiAgICBCbGFua05vZGVTdGF0ZU5vdGljZUNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOb2RlTG9nc01vZGVsc0NvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEN5Y2xlc0NvbXBsZXRlbmVzc0NvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlID0gaW5qZWN0KE5nYk1vZGFsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBub2RlU3RvcmVTZXJ2aWNlID0gaW5qZWN0KEhlTm9kZVN0b3JlU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhRG93bmxvYWQgPSBmYURvd25sb2FkO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhU3RhdGUgPSBpbnB1dChEYXRhU3RhdGUub3JpZ2luYWwpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzY2hlbWFCYXNlVXJsID0gc2NoZW1hQmFzZVVybCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdExhYmVsID0gZGVmYXVsdExhYmVsO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5VG9MYWJlbCA9IGtleVRvTGFiZWw7XG4gIHByb3RlY3RlZCByZWFkb25seSBnZXRDb21wbGV0ZW5lc3MgPSBnZXRDb21wbGV0ZW5lc3M7XG4gIHByb3RlY3RlZCByZWFkb25seSBub2RlS2V5ID0gTm9uQmxhbmtOb2Rlc0tleS5jb21wbGV0ZW5lc3M7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IFZpZXcgPSBWaWV3O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld0ljb24gPSB2aWV3SWNvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG93VmlldyA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICAoe1xuICAgICAgICBbVmlldy5sb2dzXTogIXRoaXMuaXNPcmlnaW5hbCgpLFxuICAgICAgICBbVmlldy50YWJsZV06IHRydWVcbiAgICAgIH0pIGFzIHsgW3ZpZXcgaW4gVmlld106IGJvb2xlYW4gfVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld3MgPSBjb21wdXRlZCgoKSA9PiBPYmplY3QudmFsdWVzKFZpZXcpLmZpbHRlcih2aWV3ID0+IHRoaXMuc2hvd1ZpZXcoKVt2aWV3XSkgPz8gW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRWaWV3ID0gc2lnbmFsKFZpZXcudGFibGUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3JpZ2luYWxDeWNsZXMgPSB0b1NpZ25hbChcbiAgICB0aGlzLm5vZGVTdG9yZVNlcnZpY2UuZmluZEJ5U3RhdGUkPElDeWNsZUpTT05MRD4oTm9kZVR5cGUuQ3ljbGUsIERhdGFTdGF0ZS5vcmlnaW5hbClcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWxsQ3ljbGVzID0gdG9TaWduYWwodGhpcy5ub2RlU3RvcmVTZXJ2aWNlLmZpbmQkPElDeWNsZUpTT05MRD4oTm9kZVR5cGUuQ3ljbGUpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGN5Y2xlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2FsbEN5Y2xlcygpPy5tYXAoZGF0YSA9PiBkYXRhW3RoaXMuZGF0YVN0YXRlKCldKSB8fCBbXSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZEluZGV4ID0gc2lnbmFsKDApO1xuICBwcml2YXRlIHJlYWRvbmx5IG9naXJpbmFsU2VsZWN0ZWRDeWNsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3JpZ2luYWxDeWNsZXMoKT8uW3RoaXMuc2VsZWN0ZWRJbmRleCgpXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRDeWNsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3ljbGVzKCk/Llt0aGlzLnNlbGVjdGVkSW5kZXgoKV0pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRMb2dzS2V5ID0gY29tcHV0ZWQoKCkgPT4gbG9nc0tleSh0aGlzLnNlbGVjdGVkQ3ljbGUoKSkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRPcmlnaW5hbFZhbHVlcyA9IGNvbXB1dGVkKCgpID0+IGdldENvbXBsZXRlbmVzcyh0aGlzLm9naXJpbmFsU2VsZWN0ZWRDeWNsZSgpKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFJlY2FsY3VsYXRlZFZhbHVlcyA9IGNvbXB1dGVkKCgpID0+IGdldENvbXBsZXRlbmVzcyh0aGlzLnNlbGVjdGVkQ3ljbGUoKSkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWROb2RlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGUoKVxuICAgICAgPyB7XG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZEN5Y2xlKCksXG4gICAgICAgICAgJ0B0eXBlJzogTm9kZVR5cGUuQ3ljbGUsXG4gICAgICAgICAgdHlwZTogTm9kZVR5cGUuQ3ljbGUsXG4gICAgICAgICAgZGF0YVN0YXRlOiBEYXRhU3RhdGUucmVjYWxjdWxhdGVkXG4gICAgICAgIH1cbiAgICAgIDogbnVsbFxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBoYXNEYXRhID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jeWNsZXMoKS5sZW5ndGgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNPcmlnaW5hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF0YVN0YXRlKCkgPT09IERhdGFTdGF0ZS5vcmlnaW5hbCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbXBsZXRlbmVzc0tleXMgPSBjb21wdXRlZCgoKSA9PlxuICAgIE9iamVjdC5rZXlzKGdldENvbXBsZXRlbmVzcyh0aGlzLnNlbGVjdGVkQ3ljbGUoKSkpLmZpbHRlcihpc1ZhbGlkS2V5KS5zb3J0KClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgLy8gbWFrZSBzdXJlIGxvZ3MgZG9lcyBub3QgcmVtYWluIGRpc3BsYXllZCB3aGVuIHN3aXRjaGluZyBiYWNrIHRvIG9yaWdpbmFsIHZpZXdcbiAgICAgIGlmICh0aGlzLmlzT3JpZ2luYWwoKSAmJiB0aGlzLnNlbGVjdGVkVmlldygpID09PSBWaWV3LmxvZ3MpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZpZXcuc2V0KFZpZXcudGFibGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrQnlJZChfaW5kZXg6IG51bWJlciwgaXRlbTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdEluZGV4KHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoK3ZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG93RG93bmxvYWQoKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE5vZGVDc3ZFeHBvcnRDb25maXJtQ29tcG9uZW50KTtcbiAgICBjb25zdCBjb21wb25lbnQgPSBpbnN0YW5jZS5jb21wb25lbnRJbnN0YW5jZSBhcyBOb2RlQ3N2RXhwb3J0Q29uZmlybUNvbXBvbmVudDtcbiAgICBjb21wb25lbnQubm9kZXMuc2V0KHRoaXMuY3ljbGVzKCkpO1xuICAgIGNvbXBvbmVudC5maWxlbmFtZS5zZXQoJ2NvbXBsZXRlbmVzcy5jc3YnKTtcbiAgICBjb21wb25lbnQuaXNVcGxvYWQuc2V0KGZhbHNlKTtcbiAgICBjb21wb25lbnQuaGVhZGVyS2V5cy5zZXQoaGVhZGVyS2V5cyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLXZhcmlhYmxlIGlzLWFsaWduLWl0ZW1zLWNlbnRlciBpcy0yIG0tMFwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgQGlmIChzZWxlY3RlZFZpZXcoKSA9PT0gVmlldy50YWJsZSkge1xuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1naG9zdFwiIChjbGljayk9XCJzaG93RG93bmxvYWQoKVwiPlxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYURvd25sb2FkXCIgc2l6ZT1cImxnXCI+PC9mYS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cbiAgQGlmICh2aWV3cygpPy5sZW5ndGggPiAxKSB7XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICAgIEBmb3IgKHZpZXcgb2Ygdmlld3MoKTsgdHJhY2sgdmlldykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkVmlldygpID09PSB2aWV3XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkVmlldy5zZXQodmlldylcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwidmlld0ljb25bdmlld11cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1oaWRkZW4tbW9iaWxlXCI+e3sgdmlldyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbkBzd2l0Y2ggKHNlbGVjdGVkVmlldygpKSB7XG4gIEBjYXNlIChWaWV3LnRhYmxlKSB7XG4gICAgPGRpdiBjbGFzcz1cInB4LTMgcGItM1wiPlxuICAgICAgQGlmIChoYXNEYXRhKCkpIHtcbiAgICAgICAgPGhlLWRhdGEtdGFibGUgY2xhc3M9XCJtYi0xIGlzLXNtYWxsXCIgW3NtYWxsXT1cInRydWVcIiBtYXhIZWlnaHQ9XCIzMjBcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBpcy1uYXJyb3cgaXMtc3RyaXBlZFwiPlxuICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJoYXMtdGV4dC13ZWlnaHQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvIGhhcy1ib3JkZXItcmlnaHRcIj48L3RoPlxuICAgICAgICAgICAgICAgIEBmb3IgKGNvbXBsZXRlbmVzcyBvZiBjb21wbGV0ZW5lc3NLZXlzKCk7IHRyYWNrIGNvbXBsZXRlbmVzcykge1xuICAgICAgICAgICAgICAgICAgPHRoIFthdHRyLnRpdGxlXT1cImNvbXBsZXRlbmVzc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJzY2hlbWFCYXNlVXJsICsgJy9Db21wbGV0ZW5lc3MjJyArIGNvbXBsZXRlbmVzc1wiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGtleVRvTGFiZWwoY29tcGxldGVuZXNzKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgIEBmb3IgKGN5Y2xlIG9mIGN5Y2xlcygpOyB0cmFjayB0cmFja0J5SWQoaSwgY3ljbGUpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndpZHRoLWF1dG8gaGFzLWJvcmRlci1yaWdodFwiIFthdHRyLnRpdGxlXT1cImRlZmF1bHRMYWJlbChjeWNsZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJjeWNsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGkgKyAxIH19LiB7eyBkZWZhdWx0TGFiZWwoY3ljbGUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICBAZm9yIChrZXkgb2YgY29tcGxldGVuZXNzS2V5cygpOyB0cmFjayBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0Q29tcGxldGVuZXNzKGN5Y2xlKVtrZXldID8gJ0NvbXBsZXRlJyA6ICdJbmNvbXBsZXRlJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwiZ2V0Q29tcGxldGVuZXNzKGN5Y2xlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBba2V5XT1cImtleVwiPjwvaGUtYmxhbmstbm9kZS1zdGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvaGUtZGF0YS10YWJsZT5cbiAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlKClcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ibG9ja1wiPlxuICAgICAgICAgIDxzcGFuPk5vIGNvbXBsZXRlbmVzcyBkYXRhPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuICBAY2FzZSAoVmlldy5sb2dzKSB7XG4gICAgQGlmIChjeWNsZXMoKS5sZW5ndGggPiAxKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBwdC0yIHB4LTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGEgQ3ljbGU8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGwgaXMtZnVsbHdpZHRoIGlzLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInNlbGVjdEluZGV4KCRldmVudClcIj5cbiAgICAgICAgICAgICAgQGZvciAodmFsdWUgb2YgY3ljbGVzKCk7IHRyYWNrIHZhbHVlOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cImlcIj57eyBpICsgMSB9fS4ge3sgZGVmYXVsdExhYmVsKHZhbHVlKSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChzZWxlY3RlZE5vZGUoKSkge1xuICAgICAgPGhlLW5vZGUtbG9ncy1tb2RlbHNcbiAgICAgICAgW25vZGVdPVwic2VsZWN0ZWROb2RlKClcIlxuICAgICAgICBbbm9kZUtleV09XCJub2RlS2V5XCJcbiAgICAgICAgW2xvZ3NLZXldPVwic2VsZWN0ZWRMb2dzS2V5KClcIlxuICAgICAgICBbb3JpZ2luYWxWYWx1ZXNdPVwic2VsZWN0ZWRPcmlnaW5hbFZhbHVlcygpXCJcbiAgICAgICAgW3JlY2FsY3VsYXRlZFZhbHVlc109XCJzZWxlY3RlZFJlY2FsY3VsYXRlZFZhbHVlcygpXCI+PC9oZS1ub2RlLWxvZ3MtbW9kZWxzPlxuICAgIH1cbiAgfVxufVxuIl19
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1jb21wbGV0ZW5lc3MvY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1jb21wbGV0ZW5lc3MvY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFrQixZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBZ0IsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pF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Q0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBaEZVLDJCQUEyQjttR0FBM0IsMkJBQTJCLGtPQ3ZEeEMsNjdIQXlHQSwwREQzREksZUFBZSw0TUFDZixrQkFBa0IsdUdBQ2xCLGlCQUFpQiw0R0FDakIsdUJBQXVCLG1KQUN2Qiw2QkFBNkIsNEdBQzdCLFdBQVcsNE9BQ1gsdUJBQXVCOzs0RkFHZCwyQkFBMkI7a0JBakJ2QyxTQUFTOytCQUNFLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLDZCQUE2Qjt3QkFDN0IsV0FBVzt3QkFDWCx1QkFBdUI7cUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgSWNvbkRlZmluaXRpb24sIGZhQ2FsY3VsYXRvciwgZmFEb3dubG9hZCwgZmFMaXN0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBOb2RlVHlwZSwgTm9uQmxhbmtOb2Rlc0tleSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGtleVRvTGFiZWwgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgSGVOb2RlU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNWYWxpZEtleSB9IGZyb20gJy4uLy4uL2NvbW1vbi9ub2RlLXV0aWxzJztcbmltcG9ydCB7IGRlZmF1bHRMYWJlbCwgc2NoZW1hQmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBsb2dzS2V5IH0gZnJvbSAnLi4vY3ljbGVzLm1vZGVsJztcbmltcG9ydCB7IE5vZGVDc3ZFeHBvcnRDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLWNzdi1leHBvcnQtY29uZmlybS9ub2RlLWNzdi1leHBvcnQtY29uZmlybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUxvZ3NNb2RlbHNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtbG9ncy1tb2RlbHMvbm9kZS1sb2dzLW1vZGVscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmxhbmtOb2RlU3RhdGVOb3RpY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UvYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UuY29tcG9uZW50JztcbmltcG9ydCB7IEJsYW5rTm9kZVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2JsYW5rLW5vZGUtc3RhdGUvYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUxpbmtDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtbGluay9ub2RlLWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcblxuZW51bSBWaWV3IHtcbiAgdGFibGUgPSAnVGFibGUgdmlldycsXG4gIGxvZ3MgPSAnUmVjYWxjdWxhdGlvbnMgbG9ncydcbn1cblxuY29uc3Qgdmlld0ljb246IHtcbiAgW3ZpZXcgaW4gVmlld106IEljb25EZWZpbml0aW9uO1xufSA9IHtcbiAgW1ZpZXcubG9nc106IGZhQ2FsY3VsYXRvcixcbiAgW1ZpZXcudGFibGVdOiBmYUxpc3Rcbn07XG5cbmNvbnN0IGhlYWRlcktleXMgPSBbJ2N5Y2xlLmlkJywgJ2N5Y2xlLkBpZCcsICdjeWNsZS5jb21wbGV0ZW5lc3MuJ107XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBzY2hlbWEgdmVyc2lvbiA8IDE0XG5jb25zdCBnZXRDb21wbGV0ZW5lc3MgPSAoY3ljbGU6IGFueSkgPT4gY3ljbGU/LmNvbXBsZXRlbmVzcyB8fCBjeWNsZT8uZGF0YUNvbXBsZXRlbmVzcyB8fCB7fTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtY3ljbGVzLWNvbXBsZXRlbmVzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtY29tcGxldGVuZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nYlRvb2x0aXAsXG4gICAgRmFJY29uQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBOb2RlTGlua0NvbXBvbmVudCxcbiAgICBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCxcbiAgICBCbGFua05vZGVTdGF0ZU5vdGljZUNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOb2RlTG9nc01vZGVsc0NvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEN5Y2xlc0NvbXBsZXRlbmVzc0NvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlID0gaW5qZWN0KE5nYk1vZGFsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBub2RlU3RvcmVTZXJ2aWNlID0gaW5qZWN0KEhlTm9kZVN0b3JlU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhRG93bmxvYWQgPSBmYURvd25sb2FkO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhU3RhdGUgPSBpbnB1dChEYXRhU3RhdGUub3JpZ2luYWwpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzY2hlbWFCYXNlVXJsID0gc2NoZW1hQmFzZVVybCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdExhYmVsID0gZGVmYXVsdExhYmVsO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5VG9MYWJlbCA9IGtleVRvTGFiZWw7XG4gIHByb3RlY3RlZCByZWFkb25seSBnZXRDb21wbGV0ZW5lc3MgPSBnZXRDb21wbGV0ZW5lc3M7XG4gIHByb3RlY3RlZCByZWFkb25seSBub2RlS2V5ID0gTm9uQmxhbmtOb2Rlc0tleS5jb21wbGV0ZW5lc3M7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IFZpZXcgPSBWaWV3O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld0ljb24gPSB2aWV3SWNvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG93VmlldyA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICAoe1xuICAgICAgICBbVmlldy5sb2dzXTogIXRoaXMuaXNPcmlnaW5hbCgpLFxuICAgICAgICBbVmlldy50YWJsZV06IHRydWVcbiAgICAgIH0pIGFzIHsgW3ZpZXcgaW4gVmlld106IGJvb2xlYW4gfVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld3MgPSBjb21wdXRlZCgoKSA9PiBPYmplY3QudmFsdWVzKFZpZXcpLmZpbHRlcih2aWV3ID0+IHRoaXMuc2hvd1ZpZXcoKVt2aWV3XSkgPz8gW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRWaWV3ID0gc2lnbmFsKFZpZXcudGFibGUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3JpZ2luYWxDeWNsZXMgPSB0b1NpZ25hbChcbiAgICB0aGlzLm5vZGVTdG9yZVNlcnZpY2UuZmluZEJ5U3RhdGUkPElDeWNsZUpTT05MRD4oTm9kZVR5cGUuQ3ljbGUsIERhdGFTdGF0ZS5vcmlnaW5hbClcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWxsQ3ljbGVzID0gdG9TaWduYWwodGhpcy5ub2RlU3RvcmVTZXJ2aWNlLmZpbmQkPElDeWNsZUpTT05MRD4oTm9kZVR5cGUuQ3ljbGUpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGN5Y2xlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2FsbEN5Y2xlcygpPy5tYXAoZGF0YSA9PiBkYXRhW3RoaXMuZGF0YVN0YXRlKCldKSB8fCBbXSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZEluZGV4ID0gc2lnbmFsKDApO1xuICBwcml2YXRlIHJlYWRvbmx5IG9naXJpbmFsU2VsZWN0ZWRDeWNsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3JpZ2luYWxDeWNsZXMoKT8uW3RoaXMuc2VsZWN0ZWRJbmRleCgpXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRDeWNsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3ljbGVzKCk/Llt0aGlzLnNlbGVjdGVkSW5kZXgoKV0pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRMb2dzS2V5ID0gY29tcHV0ZWQoKCkgPT4gbG9nc0tleSh0aGlzLnNlbGVjdGVkQ3ljbGUoKSkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRPcmlnaW5hbFZhbHVlcyA9IGNvbXB1dGVkKCgpID0+IGdldENvbXBsZXRlbmVzcyh0aGlzLm9naXJpbmFsU2VsZWN0ZWRDeWNsZSgpKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFJlY2FsY3VsYXRlZFZhbHVlcyA9IGNvbXB1dGVkKCgpID0+IGdldENvbXBsZXRlbmVzcyh0aGlzLnNlbGVjdGVkQ3ljbGUoKSkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWROb2RlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGUoKVxuICAgICAgPyB7XG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZEN5Y2xlKCksXG4gICAgICAgICAgJ0B0eXBlJzogTm9kZVR5cGUuQ3ljbGUsXG4gICAgICAgICAgdHlwZTogTm9kZVR5cGUuQ3ljbGUsXG4gICAgICAgICAgZGF0YVN0YXRlOiBEYXRhU3RhdGUucmVjYWxjdWxhdGVkXG4gICAgICAgIH1cbiAgICAgIDogbnVsbFxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBoYXNEYXRhID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jeWNsZXMoKS5sZW5ndGgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNPcmlnaW5hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF0YVN0YXRlKCkgPT09IERhdGFTdGF0ZS5vcmlnaW5hbCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbXBsZXRlbmVzc0tleXMgPSBjb21wdXRlZCgoKSA9PlxuICAgIE9iamVjdC5rZXlzKGdldENvbXBsZXRlbmVzcyh0aGlzLnNlbGVjdGVkQ3ljbGUoKSkpLmZpbHRlcihpc1ZhbGlkS2V5KS5zb3J0KClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgLy8gbWFrZSBzdXJlIGxvZ3MgZG9lcyBub3QgcmVtYWluIGRpc3BsYXllZCB3aGVuIHN3aXRjaGluZyBiYWNrIHRvIG9yaWdpbmFsIHZpZXdcbiAgICAgIGlmICh0aGlzLmlzT3JpZ2luYWwoKSAmJiB0aGlzLnNlbGVjdGVkVmlldygpID09PSBWaWV3LmxvZ3MpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZpZXcuc2V0KFZpZXcudGFibGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrQnlJZChfaW5kZXg6IG51bWJlciwgaXRlbTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdEluZGV4KHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoK3ZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG93RG93bmxvYWQoKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE5vZGVDc3ZFeHBvcnRDb25maXJtQ29tcG9uZW50KTtcbiAgICBjb25zdCBjb21wb25lbnQgPSBpbnN0YW5jZS5jb21wb25lbnRJbnN0YW5jZSBhcyBOb2RlQ3N2RXhwb3J0Q29uZmlybUNvbXBvbmVudDtcbiAgICBjb21wb25lbnQubm9kZXMuc2V0KHRoaXMuY3ljbGVzKCkpO1xuICAgIGNvbXBvbmVudC5maWxlbmFtZS5zZXQoJ2NvbXBsZXRlbmVzcy5jc3YnKTtcbiAgICBjb21wb25lbnQuaXNVcGxvYWQuc2V0KGZhbHNlKTtcbiAgICBjb21wb25lbnQuaGVhZGVyS2V5cy5zZXQoaGVhZGVyS2V5cyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLXZhcmlhYmxlIGlzLWFsaWduLWl0ZW1zLWNlbnRlciBpcy0yIG0tMFwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgQGlmIChzZWxlY3RlZFZpZXcoKSA9PT0gVmlldy50YWJsZSkge1xuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1naG9zdFwiIChjbGljayk9XCJzaG93RG93bmxvYWQoKVwiPlxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYURvd25sb2FkXCIgc2l6ZT1cImxnXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgPC9kaXY+XG4gIEBpZiAodmlld3MoKT8ubGVuZ3RoID4gMSkge1xuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgICBAZm9yICh2aWV3IG9mIHZpZXdzKCk7IHRyYWNrIHZpZXcpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZFZpZXcoKSA9PT0gdmlld1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZFZpZXcuc2V0KHZpZXcpXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cInZpZXdJY29uW3ZpZXddXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLWhpZGRlbi1tb2JpbGVcIj57eyB2aWV3IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cblxuQHN3aXRjaCAoc2VsZWN0ZWRWaWV3KCkpIHtcbiAgQGNhc2UgKFZpZXcudGFibGUpIHtcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBwYi0zXCI+XG4gICAgICBAaWYgKGhhc0RhdGEoKSkge1xuICAgICAgICA8aGUtZGF0YS10YWJsZSBjbGFzcz1cIm1iLTEgaXMtc21hbGxcIiBbc21hbGxdPVwidHJ1ZVwiIG1heEhlaWdodD1cIjMyMFwiPlxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGlzLW5hcnJvdyBpcy1zdHJpcGVkXCI+XG4gICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cImhhcy10ZXh0LXdlaWdodC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG8gaGFzLWJvcmRlci1yaWdodFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgQGZvciAoY29tcGxldGVuZXNzIG9mIGNvbXBsZXRlbmVzc0tleXMoKTsgdHJhY2sgY29tcGxldGVuZXNzKSB7XG4gICAgICAgICAgICAgICAgICA8dGggW2F0dHIudGl0bGVdPVwiY29tcGxldGVuZXNzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cInNjaGVtYUJhc2VVcmwgKyAnL0NvbXBsZXRlbmVzcyMnICsgY29tcGxldGVuZXNzXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sga2V5VG9MYWJlbChjb21wbGV0ZW5lc3MpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgQGZvciAoY3ljbGUgb2YgY3ljbGVzKCk7IHRyYWNrIHRyYWNrQnlJZChpLCBjeWNsZSk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwid2lkdGgtYXV0byBoYXMtYm9yZGVyLXJpZ2h0XCIgW2F0dHIudGl0bGVdPVwiZGVmYXVsdExhYmVsKGN5Y2xlKVwiPlxuICAgICAgICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImN5Y2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaSArIDEgfX0uIHt7IGRlZmF1bHRMYWJlbChjeWNsZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGtleSBvZiBjb21wbGV0ZW5lc3NLZXlzKCk7IHRyYWNrIGtleSkge1xuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJpcy1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRDb21wbGV0ZW5lc3MoY3ljbGUpW2tleV0gPyAnQ29tcGxldGUnIDogJ0luY29tcGxldGUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbm9kZV09XCJnZXRDb21wbGV0ZW5lc3MoY3ljbGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtrZXldPVwia2V5XCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9oZS1kYXRhLXRhYmxlPlxuICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGUoKVwiPjwvaGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2U+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJsb2NrXCI+XG4gICAgICAgICAgPHNwYW4+Tm8gY29tcGxldGVuZXNzIGRhdGE8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG4gIEBjYXNlIChWaWV3LmxvZ3MpIHtcbiAgICBAaWYgKGN5Y2xlcygpLmxlbmd0aCA+IDEpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIHB0LTIgcHgtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpYyBpcy1zZWNvbmRhcnlcIj5TZWxlY3QgYSBDeWNsZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbCBpcy1mdWxsd2lkdGggaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0SW5kZXgoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICBAZm9yICh2YWx1ZSBvZiBjeWNsZXMoKTsgdHJhY2sgdmFsdWU7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaVwiPnt7IGkgKyAxIH19LiB7eyBkZWZhdWx0TGFiZWwodmFsdWUpIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKHNlbGVjdGVkTm9kZSgpKSB7XG4gICAgICA8aGUtbm9kZS1sb2dzLW1vZGVsc1xuICAgICAgICBbbm9kZV09XCJzZWxlY3RlZE5vZGUoKVwiXG4gICAgICAgIFtub2RlS2V5XT1cIm5vZGVLZXlcIlxuICAgICAgICBbbG9nc0tleV09XCJzZWxlY3RlZExvZ3NLZXkoKVwiXG4gICAgICAgIFtvcmlnaW5hbFZhbHVlc109XCJzZWxlY3RlZE9yaWdpbmFsVmFsdWVzKClcIlxuICAgICAgICBbcmVjYWxjdWxhdGVkVmFsdWVzXT1cInNlbGVjdGVkUmVjYWxjdWxhdGVkVmFsdWVzKClcIj48L2hlLW5vZGUtbG9ncy1tb2RlbHM+XG4gICAgfVxuICB9XG59XG4iXX0=