@odx/angular 12.8.0 → 12.9.1

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 (53) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/components/data-table/README.md +3 -0
  3. package/components/data-table/index.d.ts +4 -0
  4. package/components/data-table/lib/data-table.component.d.ts +32 -0
  5. package/components/data-table/lib/data-table.module.d.ts +14 -0
  6. package/components/data-table/lib/directives/cell-def.directive.d.ts +7 -0
  7. package/components/data-table/lib/directives/cell.directive.d.ts +5 -0
  8. package/components/data-table/lib/directives/column-def.directive.d.ts +11 -0
  9. package/components/data-table/lib/directives/header-cell-def.directive.d.ts +7 -0
  10. package/components/data-table/lib/directives/header-cell.directive.d.ts +5 -0
  11. package/components/data-table/lib/directives/index.d.ts +6 -0
  12. package/components/data-table/lib/directives/table-empty.directive.d.ts +5 -0
  13. package/components/data-table/lib/models/index.d.ts +3 -0
  14. package/components/data-table/lib/models/sort-direction.d.ts +6 -0
  15. package/components/data-table/lib/models/sort-state.d.ts +5 -0
  16. package/components/data-table/lib/models/table-variant.d.ts +5 -0
  17. package/components/main-menu/lib/main-menu.component.d.ts +1 -0
  18. package/components/table/lib/components/header-title/header-title.component.d.ts +2 -2
  19. package/components/table/lib/models/header-cell.d.ts +1 -2
  20. package/components/table/lib/models/index.d.ts +1 -2
  21. package/components/table/lib/table.component.d.ts +3 -3
  22. package/esm2022/components/data-table/index.mjs +5 -0
  23. package/esm2022/components/data-table/lib/data-table.component.mjs +51 -0
  24. package/esm2022/components/data-table/lib/data-table.module.mjs +19 -0
  25. package/esm2022/components/data-table/lib/directives/cell-def.directive.mjs +17 -0
  26. package/esm2022/components/data-table/lib/directives/cell.directive.mjs +18 -0
  27. package/esm2022/components/data-table/lib/directives/column-def.directive.mjs +27 -0
  28. package/esm2022/components/data-table/lib/directives/header-cell-def.directive.mjs +17 -0
  29. package/esm2022/components/data-table/lib/directives/header-cell.directive.mjs +18 -0
  30. package/esm2022/components/data-table/lib/directives/index.mjs +7 -0
  31. package/esm2022/components/data-table/lib/directives/table-empty.directive.mjs +11 -0
  32. package/esm2022/components/data-table/lib/models/index.mjs +4 -0
  33. package/esm2022/components/data-table/lib/models/sort-direction.mjs +6 -0
  34. package/esm2022/components/data-table/lib/models/sort-state.mjs +2 -0
  35. package/esm2022/components/data-table/lib/models/table-variant.mjs +5 -0
  36. package/esm2022/components/data-table/odx-angular-components-data-table.mjs +5 -0
  37. package/esm2022/components/main-menu/lib/main-menu.component.mjs +7 -3
  38. package/esm2022/components/table/lib/components/header-title/header-title.component.mjs +1 -1
  39. package/esm2022/components/table/lib/models/header-cell.mjs +1 -1
  40. package/esm2022/components/table/lib/models/index.mjs +2 -3
  41. package/esm2022/components/table/lib/models/table-body-cell.mjs +2 -0
  42. package/esm2022/components/table/lib/table.component.mjs +7 -19
  43. package/fesm2022/odx-angular-components-data-table.mjs +176 -0
  44. package/fesm2022/odx-angular-components-data-table.mjs.map +1 -0
  45. package/fesm2022/odx-angular-components-main-menu.mjs +6 -2
  46. package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
  47. package/fesm2022/odx-angular-components-table.mjs +6 -18
  48. package/fesm2022/odx-angular-components-table.mjs.map +1 -1
  49. package/package.json +18 -12
  50. package/components/table/lib/models/column-width.d.ts +0 -5
  51. package/esm2022/components/table/lib/models/body-cell.mjs +0 -2
  52. package/esm2022/components/table/lib/models/column-width.mjs +0 -2
  53. /package/components/table/lib/models/{body-cell.d.ts → table-body-cell.d.ts} +0 -0
@@ -85,9 +85,13 @@ let MainMenuComponent = class MainMenuComponent {
85
85
  }
86
86
  slideMenuInner(isOpen = false) {
87
87
  const nativeElement = this.menuInner?.nativeElement;
88
- if (!nativeElement?.isConnected)
88
+ if (!(nativeElement?.isConnected && this.isPopoverElement(nativeElement)))
89
89
  return;
90
- (isOpen ? nativeElement.showPopover : nativeElement.hidePopover)?.();
90
+ const method = isOpen ? 'showPopover' : 'hidePopover';
91
+ nativeElement[method]();
92
+ }
93
+ isPopoverElement(element) {
94
+ return element.hasAttribute('popover') && 'showPopover' in element && 'hidePopover' in element;
91
95
  }
92
96
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MainMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
97
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MainMenuComponent, isStandalone: true, selector: "odx-main-menu", inputs: { title: "title", subtitle: "subtitle", copyright: "copyright", isOpen: ["isOpen", "isOpen", booleanAttribute] }, outputs: { menuOpen: "menuOpen" }, host: { listeners: { "window:keyup.esc": "close()" }, properties: { "class.is-open": "isOpen" } }, providers: [provideTranslations(mainMenuTranslations)], viewQueries: [{ propertyName: "menuInner", first: true, predicate: ["menuInner"], descendants: true }], ngImport: i0, template: "<aside class=\"odx-main-menu__inner\" [ngClass]=\"(isOpen$ | async) ? 'opened' : 'closed'\" #menuInner popover=\"auto\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\"><odx-icon name=\"close\" iconSet=\"core\" /></button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n @if (subtitle) {\n <odx-area-header-subtitle>\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n }\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content />\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\" />\n @for (link of mainMenuLinks$ | async; track $index) {\n <a odxLink [href]=\"link.url\" target=\"_blank\">\n {{ link.name | odxTranslate | async }}\n </a>\n }\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\" />\n @if (copyright) {\n <p class=\"odx-text odx-text--small\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n }\n </div>\n</aside>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: CoreModule }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i4.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i4.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }, { kind: "directive", type: LinkDirective, selector: "a[odxLink]" }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
@@ -118,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
118
122
  type: HostListener,
119
123
  args: ['window:keyup.esc']
120
124
  }] } });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21haW4tbWVudS9zcmMvbGliL21haW4tbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9tYWluLW1lbnUvc3JjL2xpYi9tYWluLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFzQixvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0s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QUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixDQUFDLGFBQzNJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxjQUMxQyxJQUFJLFFBQ1YsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUU7OEJBZ0I5QixLQUFLO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVVsQixRQUFRO3NCQURkLEtBQUs7Z0JBVUMsU0FBUztzQkFEZixLQUFLO2dCQVVLLE1BQU07c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBb0IvQixRQUFRO3NCQURkLE1BQU07Z0JBSUEsU0FBUztzQkFEZixTQUFTO3VCQUFDLFdBQVc7Z0JBZ0JmLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRHluYW1pY1RleHRDb250ZW50LCBEeW5hbWljVmlld0RpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvZHluYW1pYy12aWV3JztcbmltcG9ydCB7IEFyZWFIZWFkZXJNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9hcmVhLWhlYWRlcic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgTGlua0RpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xpbmsnO1xuaW1wb3J0IHsgTG9nb0RpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xvZ28nO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUsIHByb3ZpZGVUcmFuc2xhdGlvbnMgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwvdHJhbnNsYXRlJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQsIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGZyb21FdmVudCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjcmVhdGVNYWluTWVudUxpbmtzJCB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgbWFpbk1lbnVUcmFuc2xhdGlvbnMgZnJvbSAnLi9tYWluLW1lbnUuaTE4bic7XG5pbXBvcnQgeyBNYWluTWVudVNlcnZpY2UgfSBmcm9tICcuL21haW4tbWVudS5zZXJ2aWNlJztcblxuLyoqXG4gKiBUaGUgYE1haW5NZW51Q29tcG9uZW50YCBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgdXNlciBpbnRlcmZhY2UgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGEgbmF2aWdhdGlvbiBtZW51IHdpdGhpbiBhbiBhcHBsaWNhdGlvbi5cbiAqIEl0IHN1cHBvcnRzIGR5bmFtaWMgY29udGVudCBmb3IgdGl0bGVzLCBzdWJ0aXRsZXMsIGFuZCBjb3B5cmlnaHQgdGV4dCwgYW5kIGNhbiBkeW5hbWljYWxseSByZW5kZXIgYWRkaXRpb25hbCBsaW5rcy5cbiAqIFRoZSBtZW51IGluY2x1ZGVzIGFuaW1hdGlvbnMgZm9yIG9wZW5pbmcgYW5kIGNsb3Npbmcgc3RhdGVzLCBhbmQgY2FuIGJlIGNvbnRyb2xsZWQgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgdXNlciBpbnRlcmFjdGlvbi5cbiAqL1xuQENTU0NvbXBvbmVudCgnbWFpbi1tZW51JylcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29keC1tYWluLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFpbi1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtBMTF5TW9kdWxlLCBDb3JlTW9kdWxlLCBBcmVhSGVhZGVyTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIEljb25Db21wb25lbnQsIExvZ29EaXJlY3RpdmUsIFRyYW5zbGF0ZVBpcGUsIExpbmtEaXJlY3RpdmUsIER5bmFtaWNWaWV3RGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZVRyYW5zbGF0aW9ucyhtYWluTWVudVRyYW5zbGF0aW9ucyldLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7ICdbY2xhc3MuaXMtb3Blbl0nOiAnaXNPcGVuJyB9LFxufSlcbmV4cG9ydCBjbGFzcyBNYWluTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtYWluTWVudVNlcnZpY2UgPSBpbmplY3QoTWFpbk1lbnVTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1haW5NZW51TGlua3MkID0gY3JlYXRlTWFpbk1lbnVMaW5rcyQoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzT3BlbiQgPSB0aGlzLm1haW5NZW51U2VydmljZS5pc09wZW4kLnBpcGUodGFwKChpc09wZW46IGJvb2xlYW4pID0+IHRoaXMuc2xpZGVNZW51SW5uZXIoaXNPcGVuKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogSW5wdXQgcHJvcGVydHkgZm9yIHRoZSB0aXRsZSBvZiB0aGUgbWVudS4gVGhlIGNvbnRlbnQgaXMgZHluYW1pYywgYWxsb3dpbmcgY29tcGxleCBjb250ZW50IHN0cnVjdHVyZXNcbiAgICogbGlrZSB0cmFuc2xhdGlvbnMgb3IgY3VzdG9tIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEB0eXBlIHtEeW5hbWljVGV4dENvbnRlbnR9XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgdGl0bGUhOiBEeW5hbWljVGV4dENvbnRlbnQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGlucHV0IHByb3BlcnR5IGZvciB0aGUgc3VidGl0bGUgb2YgdGhlIG1lbnUuXG4gICAqXG4gICAqIEB0eXBlIHtEeW5hbWljVGV4dENvbnRlbnQgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3VidGl0bGU/OiBEeW5hbWljVGV4dENvbnRlbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgaW5wdXQgcHJvcGVydHkgZm9yIHRoZSBjb3B5cmlnaHQgdGV4dCBvZiB0aGUgbWVudS5cbiAgICpcbiAgICogQHR5cGUge0R5bmFtaWNUZXh0Q29udGVudCB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb3B5cmlnaHQ/OiBEeW5hbWljVGV4dENvbnRlbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogSW5wdXQgcHJvcGVydHkgdG8gY29udHJvbCB0aGUgb3BlbiBzdGF0ZSBvZiB0aGUgbWVudS4gVXNlcyBib29sZWFuIHRyYW5zZm9ybWF0aW9uIHRvIGhhbmRsZSB0cnVlL2ZhbHNlIHN0YXRlcy5cbiAgICogQ2hhbmdpbmcgdGhpcyBwcm9wZXJ0eSB3aWxsIHRvZ2dsZSB0aGUgbWVudSdzIG9wZW4gc3RhdGUgdmlhIHRoZSBNYWluTWVudVNlcnZpY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdmFsdWUgLSBUaGUgb3BlbiBzdGF0ZSBvZiB0aGUgbWVudS5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubWFpbk1lbnVTZXJ2aWNlLnRvZ2dsZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBvcGVuIHN0YXRlIG9mIHRoZSBtZW51IGZyb20gdGhlIE1haW5NZW51U2VydmljZS5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgbWVudSBpcyBvcGVuLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1haW5NZW51U2VydmljZS5pc09wZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdXRwdXRzIHRoZSBvYnNlcnZhYmxlIHRoYXQgdHJhY2tzIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBtZW51LlxuICAgKlxuICAgKiBAZW1pdHMge2Jvb2xlYW59IFRoZSBvcGVuIHN0YXRlIG9mIHRoZSBtZW51LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBtZW51T3BlbiA9IHRoaXMubWFpbk1lbnVTZXJ2aWNlLmlzT3BlbiQ7XG5cbiAgQFZpZXdDaGlsZCgnbWVudUlubmVyJylcbiAgcHVibGljIG1lbnVJbm5lciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50PEV2ZW50Pih0aGlzLm1lbnVJbm5lcj8ubmF0aXZlRWxlbWVudCwgJ3RvZ2dsZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChlKSA9PiAnbmV3U3RhdGUnIGluIGUgJiYgdGhpcy5tYWluTWVudVNlcnZpY2UudG9nZ2xlKGUubmV3U3RhdGUgPT09ICdvcGVuJykpLFxuICAgICAgICB0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgbWVudS5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5lc2MnKVxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5tYWluTWVudVNlcnZpY2UuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2xpZGVNZW51SW5uZXIoaXNPcGVuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdGhpcy5tZW51SW5uZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFuYXRpdmVFbGVtZW50Py5pc0Nvbm5lY3RlZCkgcmV0dXJuO1xuXG4gICAgKGlzT3BlbiA/IG5hdGl2ZUVsZW1lbnQuc2hvd1BvcG92ZXIgOiBuYXRpdmVFbGVtZW50LmhpZGVQb3BvdmVyKT8uKCk7XG4gIH1cbn1cbiIsIjxhc2lkZSBjbGFzcz1cIm9keC1tYWluLW1lbnVfX2lubmVyXCIgW25nQ2xhc3NdPVwiKGlzT3BlbiQgfCBhc3luYykgPyAnb3BlbmVkJyA6ICdjbG9zZWQnXCIgI21lbnVJbm5lciBwb3BvdmVyPVwiYXV0b1wiIGNka1RyYXBGb2N1cyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZT5cbiAgPGRpdiBjbGFzcz1cIm9keC1tYWluLW1lbnVfX2FjdGlvbnNcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwib2R4LW1haW4tbWVudV9fY2xvc2VcIiBvZHhCdXR0b24gZGlzYWJsZWQ9XCJmYWxzZVwiIChjbGljayk9XCJjbG9zZSgpXCI+PG9keC1pY29uIG5hbWU9XCJjbG9zZVwiIGljb25TZXQ9XCJjb3JlXCIgLz48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxvZHgtYXJlYS1oZWFkZXIgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19oZWFkZXJcIiBzaXplPVwibGFyZ2VcIj5cbiAgICA8bmctdGVtcGxhdGUgW29keER5bmFtaWNWaWV3XT1cInRpdGxlXCIgLz5cbiAgICBAaWYgKHN1YnRpdGxlKSB7XG4gICAgICA8b2R4LWFyZWEtaGVhZGVyLXN1YnRpdGxlPlxuICAgICAgICA8bmctdGVtcGxhdGUgW29keER5bmFtaWNWaWV3XT1cInN1YnRpdGxlXCIgLz5cbiAgICAgIDwvb2R4LWFyZWEtaGVhZGVyLXN1YnRpdGxlPlxuICAgIH1cbiAgPC9vZHgtYXJlYS1oZWFkZXI+XG4gIDxuYXYgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9uYXY+XG4gIDxkaXYgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19pbmZvXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW29keExpbmtdXCIgLz5cbiAgICBAZm9yIChsaW5rIG9mIG1haW5NZW51TGlua3MkIHwgYXN5bmM7IHRyYWNrICRpbmRleCkge1xuICAgICAgPGEgb2R4TGluayBbaHJlZl09XCJsaW5rLnVybFwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICB7eyBsaW5rLm5hbWUgfCBvZHhUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgPC9hPlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19mb290ZXJcIj5cbiAgICA8b2R4LWxvZ28gdmFyaWFudD1cImludmVyc2VcIiAvPlxuICAgIEBpZiAoY29weXJpZ2h0KSB7XG4gICAgICA8cCBjbGFzcz1cIm9keC10ZXh0IG9keC10ZXh0LS1zbWFsbFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW29keER5bmFtaWNWaWV3XT1cImNvcHlyaWdodFwiIC8+XG4gICAgICA8L3A+XG4gICAgfVxuICA8L2Rpdj5cbjwvYXNpZGU+XG4iXX0=
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21haW4tbWVudS9zcmMvbGliL21haW4tbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9tYWluLW1lbnUvc3JjL2xpYi9tYWluLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFzQixvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0s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WDdCLFlBQVksQ0FBQyxXQUFXLENBQUM7R0FXYixpQkFBaUIsQ0E0RjdCOzs0RkE1RlksaUJBQWlCO2tCQVY3QixTQUFTOytCQUNFLGVBQWUsaUJBRVYsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxhQUMzSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLENBQUMsY0FDMUMsSUFBSSxRQUNWLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFOzhCQWdCOUIsS0FBSztzQkFEWCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFVbEIsUUFBUTtzQkFEZCxLQUFLO2dCQVVDLFNBQVM7c0JBRGYsS0FBSztnQkFVSyxNQUFNO3NCQURoQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQW9CL0IsUUFBUTtzQkFEZCxNQUFNO2dCQUlBLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxXQUFXO2dCQWdCZixLQUFLO3NCQURYLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IER5bmFtaWNUZXh0Q29udGVudCwgRHluYW1pY1ZpZXdEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBBcmVhSGVhZGVyTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYXJlYS1oZWFkZXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IExpbmtEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9saW5rJztcbmltcG9ydCB7IExvZ29EaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9sb2dvJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlLCBwcm92aWRlVHJhbnNsYXRpb25zIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsL3RyYW5zbGF0ZSc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY3JlYXRlTWFpbk1lbnVMaW5rcyQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IG1haW5NZW51VHJhbnNsYXRpb25zIGZyb20gJy4vbWFpbi1tZW51LmkxOG4nO1xuaW1wb3J0IHsgTWFpbk1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9tYWluLW1lbnUuc2VydmljZSc7XG5cbi8qKlxuICogVGhlIGBNYWluTWVudUNvbXBvbmVudGAgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIHVzZXIgaW50ZXJmYWNlIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhIG5hdmlnYXRpb24gbWVudSB3aXRoaW4gYW4gYXBwbGljYXRpb24uXG4gKiBJdCBzdXBwb3J0cyBkeW5hbWljIGNvbnRlbnQgZm9yIHRpdGxlcywgc3VidGl0bGVzLCBhbmQgY29weXJpZ2h0IHRleHQsIGFuZCBjYW4gZHluYW1pY2FsbHkgcmVuZGVyIGFkZGl0aW9uYWwgbGlua3MuXG4gKiBUaGUgbWVudSBpbmNsdWRlcyBhbmltYXRpb25zIGZvciBvcGVuaW5nIGFuZCBjbG9zaW5nIHN0YXRlcywgYW5kIGNhbiBiZSBjb250cm9sbGVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdmlhIHVzZXIgaW50ZXJhY3Rpb24uXG4gKi9cbkBDU1NDb21wb25lbnQoJ21haW4tbWVudScpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZHgtbWFpbi1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21haW4tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQ29yZU1vZHVsZSwgQXJlYUhlYWRlck1vZHVsZSwgQnV0dG9uQ29tcG9uZW50LCBJY29uQ29tcG9uZW50LCBMb2dvRGlyZWN0aXZlLCBUcmFuc2xhdGVQaXBlLCBMaW5rRGlyZWN0aXZlLCBEeW5hbWljVmlld0RpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVUcmFuc2xhdGlvbnMobWFpbk1lbnVUcmFuc2xhdGlvbnMpXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDogeyAnW2NsYXNzLmlzLW9wZW5dJzogJ2lzT3BlbicgfSxcbn0pXG5leHBvcnQgY2xhc3MgTWFpbk1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFpbk1lbnVTZXJ2aWNlID0gaW5qZWN0KE1haW5NZW51U2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtYWluTWVudUxpbmtzJCA9IGNyZWF0ZU1haW5NZW51TGlua3MkKCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc09wZW4kID0gdGhpcy5tYWluTWVudVNlcnZpY2UuaXNPcGVuJC5waXBlKHRhcCgoaXNPcGVuOiBib29sZWFuKSA9PiB0aGlzLnNsaWRlTWVudUlubmVyKGlzT3BlbikpKTtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciB0aGUgdGl0bGUgb2YgdGhlIG1lbnUuIFRoZSBjb250ZW50IGlzIGR5bmFtaWMsIGFsbG93aW5nIGNvbXBsZXggY29udGVudCBzdHJ1Y3R1cmVzXG4gICAqIGxpa2UgdHJhbnNsYXRpb25zIG9yIGN1c3RvbSBjb21wb25lbnRzLlxuICAgKlxuICAgKiBAdHlwZSB7RHluYW1pY1RleHRDb250ZW50fVxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIHRpdGxlITogRHluYW1pY1RleHRDb250ZW50O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBpbnB1dCBwcm9wZXJ0eSBmb3IgdGhlIHN1YnRpdGxlIG9mIHRoZSBtZW51LlxuICAgKlxuICAgKiBAdHlwZSB7RHluYW1pY1RleHRDb250ZW50IHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHN1YnRpdGxlPzogRHluYW1pY1RleHRDb250ZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGlucHV0IHByb3BlcnR5IGZvciB0aGUgY29weXJpZ2h0IHRleHQgb2YgdGhlIG1lbnUuXG4gICAqXG4gICAqIEB0eXBlIHtEeW5hbWljVGV4dENvbnRlbnQgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY29weXJpZ2h0PzogRHluYW1pY1RleHRDb250ZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IHRvIGNvbnRyb2wgdGhlIG9wZW4gc3RhdGUgb2YgdGhlIG1lbnUuIFVzZXMgYm9vbGVhbiB0cmFuc2Zvcm1hdGlvbiB0byBoYW5kbGUgdHJ1ZS9mYWxzZSBzdGF0ZXMuXG4gICAqIENoYW5naW5nIHRoaXMgcHJvcGVydHkgd2lsbCB0b2dnbGUgdGhlIG1lbnUncyBvcGVuIHN0YXRlIHZpYSB0aGUgTWFpbk1lbnVTZXJ2aWNlLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZhbHVlIC0gVGhlIG9wZW4gc3RhdGUgb2YgdGhlIG1lbnUuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1haW5NZW51U2VydmljZS50b2dnbGUodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgb3BlbiBzdGF0ZSBvZiB0aGUgbWVudSBmcm9tIHRoZSBNYWluTWVudVNlcnZpY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIG1lbnUgaXMgb3BlbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tYWluTWVudVNlcnZpY2UuaXNPcGVuKCk7XG4gIH1cblxuICAvKipcbiAgICogT3V0cHV0cyB0aGUgb2JzZXJ2YWJsZSB0aGF0IHRyYWNrcyB0aGUgb3BlbiBzdGF0ZSBvZiB0aGUgbWVudS5cbiAgICpcbiAgICogQGVtaXRzIHtib29sZWFufSBUaGUgb3BlbiBzdGF0ZSBvZiB0aGUgbWVudS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbWVudU9wZW4gPSB0aGlzLm1haW5NZW51U2VydmljZS5pc09wZW4kO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnVJbm5lcicpXG4gIHB1YmxpYyBtZW51SW5uZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGZyb21FdmVudDxFdmVudD4odGhpcy5tZW51SW5uZXI/Lm5hdGl2ZUVsZW1lbnQsICd0b2dnbGUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZSkgPT4gJ25ld1N0YXRlJyBpbiBlICYmIHRoaXMubWFpbk1lbnVTZXJ2aWNlLnRvZ2dsZShlLm5ld1N0YXRlID09PSAnb3BlbicpKSxcbiAgICAgICAgdGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG1lbnUuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAuZXNjJylcbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMubWFpbk1lbnVTZXJ2aWNlLmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHNsaWRlTWVudUlubmVyKGlzT3BlbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IHRoaXMubWVudUlubmVyPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghKG5hdGl2ZUVsZW1lbnQ/LmlzQ29ubmVjdGVkICYmIHRoaXMuaXNQb3BvdmVyRWxlbWVudChuYXRpdmVFbGVtZW50KSkpIHJldHVybjtcbiAgICBjb25zdCBtZXRob2QgPSBpc09wZW4gPyAnc2hvd1BvcG92ZXInIDogJ2hpZGVQb3BvdmVyJztcbiAgICBuYXRpdmVFbGVtZW50W21ldGhvZF0oKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNQb3BvdmVyRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgSFRNTEVsZW1lbnQgJiB7IHNob3dQb3BvdmVyOiAoKSA9PiB2b2lkOyBoaWRlUG9wb3ZlcjogKCkgPT4gdm9pZCB9IHtcbiAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3BvcG92ZXInKSAmJiAnc2hvd1BvcG92ZXInIGluIGVsZW1lbnQgJiYgJ2hpZGVQb3BvdmVyJyBpbiBlbGVtZW50O1xuICB9XG59XG4iLCI8YXNpZGUgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19pbm5lclwiIFtuZ0NsYXNzXT1cIihpc09wZW4kIHwgYXN5bmMpID8gJ29wZW5lZCcgOiAnY2xvc2VkJ1wiICNtZW51SW5uZXIgcG9wb3Zlcj1cImF1dG9cIiBjZGtUcmFwRm9jdXMgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gIDxkaXYgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19hY3Rpb25zXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm9keC1tYWluLW1lbnVfX2Nsb3NlXCIgb2R4QnV0dG9uIGRpc2FibGVkPVwiZmFsc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjxvZHgtaWNvbiBuYW1lPVwiY2xvc2VcIiBpY29uU2V0PVwiY29yZVwiIC8+PC9idXR0b24+XG4gIDwvZGl2PlxuICA8b2R4LWFyZWEtaGVhZGVyIGNsYXNzPVwib2R4LW1haW4tbWVudV9faGVhZGVyXCIgc2l6ZT1cImxhcmdlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJ0aXRsZVwiIC8+XG4gICAgQGlmIChzdWJ0aXRsZSkge1xuICAgICAgPG9keC1hcmVhLWhlYWRlci1zdWJ0aXRsZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJzdWJ0aXRsZVwiIC8+XG4gICAgICA8L29keC1hcmVhLWhlYWRlci1zdWJ0aXRsZT5cbiAgICB9XG4gIDwvb2R4LWFyZWEtaGVhZGVyPlxuICA8bmF2IGNsYXNzPVwib2R4LW1haW4tbWVudV9fY29udGVudFwiPlxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvbmF2PlxuICA8ZGl2IGNsYXNzPVwib2R4LW1haW4tbWVudV9faW5mb1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvZHhMaW5rXVwiIC8+XG4gICAgQGZvciAobGluayBvZiBtYWluTWVudUxpbmtzJCB8IGFzeW5jOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxhIG9keExpbmsgW2hyZWZdPVwibGluay51cmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAge3sgbGluay5uYW1lIHwgb2R4VHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvYT5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwib2R4LW1haW4tbWVudV9fZm9vdGVyXCI+XG4gICAgPG9keC1sb2dvIHZhcmlhbnQ9XCJpbnZlcnNlXCIgLz5cbiAgICBAaWYgKGNvcHlyaWdodCkge1xuICAgICAgPHAgY2xhc3M9XCJvZHgtdGV4dCBvZHgtdGV4dC0tc21hbGxcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJjb3B5cmlnaHRcIiAvPlxuICAgICAgPC9wPlxuICAgIH1cbiAgPC9kaXY+XG48L2FzaWRlPlxuIl19
@@ -123,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
123
123
  type: HostBinding,
124
124
  args: ['style.width']
125
125
  }] } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXRpdGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3RhYmxlL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXItdGl0bGUvaGVhZGVyLXRpdGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3RhYmxlL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXItdGl0bGUvaGVhZGVyLXRpdGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdJLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFFM0M7Ozs7R0FJRztBQVVILE1BQU0sT0FBTyxvQkFBb0I7SUFUakM7UUFVbUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMs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WUFBWSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDOzhCQWN4RCxJQUFJO3NCQURWLEtBQUs7Z0JBMEdRLFdBQVc7c0JBRHhCLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2NoZWNrYm94JztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29sdW1uV2lkdGgsIFNvcnRTdGF0dXMsIFRhYmxlQm9keUNlbGwsIFRhYmxlSGVhZGVyQ2VsbCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYWJsZVNvcnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NvcnQtdmFyaWFudCc7XG5pbXBvcnQgeyBUQUJMRSB9IGZyb20gJy4uLy4uL3RhYmxlLmNvbmZpZyc7XG5cbi8qKlxuICogSGVhZGVyVGl0bGVDb21wb25lbnQgcHJvdmlkZXMgdGhlIGZ1bmN0aW9uYWxpdHkgZm9yIGEgdGFibGUgaGVhZGVyIGNlbGwsIGluY2x1ZGluZyBzb3J0aW5nIGFuZCBjaGVja2JveFxuICogb3BlcmF0aW9ucyBpZiBhcHBsaWNhYmxlLiBJdCBoYW5kbGVzIGNoYW5nZXMgaW4gc29ydCBzdGF0ZSBhbmQgZW1pdHMgcmVsZXZhbnQgZXZlbnRzIHRvIHRoZSB0YWJsZSBjb21wb25lbnRcbiAqIHRvIG1hbmFnZSBzb3J0aW5nIGFuZCBzZWxlY3Rpb24gc3RhdGUgYWNyb3NzIHRoZSB0YWJsZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndGhbb2R4SGVhZGVyVGl0bGVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci10aXRsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDaGVja2JveENvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlclRpdGxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWJsZSA9IGluamVjdChUQUJMRSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuICBwcml2YXRlIHNvcnRTdGF0dXM6IFNvcnRTdGF0dXMgPSB0aGlzLmdldFNvcnRTdGF0dXM7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkZXIgY2VsbCBpdGVtIGNvbnRhaW5pbmcgbWV0YWRhdGEgbGlrZSBjb2x1bW4gbmFtZSwgc29ydGFiaWxpdHksIGFuZCB3aGV0aGVyIGl0IHNob3VsZCBpbmNsdWRlIGEgY2hlY2tib3guXG4gICAqXG4gICAqIEB0eXBlIHtUYWJsZUhlYWRlckNlbGx9XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXRlbSE6IFRhYmxlSGVhZGVyQ2VsbDtcblxuICAvKipcbiAgICogRm9ybUdyb3VwIHRvIG1hbmFnZSB0aGUgY2hlY2tib3ggc3RhdGUgd2l0aGluIHRoZSBoZWFkZXIuXG4gICAqXG4gICAqIEB0eXBlIHtGb3JtR3JvdXB9XG4gICAqL1xuICBwdWJsaWMgY2hlY2tGb3JtID0gbmV3IEZvcm1Hcm91cCh7IGNoZWNrOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpIH0pO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBzb3J0IHN0YXR1cyBvZiB0aGUgY29sdW1uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGhlYWRlci5cbiAgICpcbiAgICogQHJldHVybnMge1NvcnRTdGF0dXN9XG4gICAqL1xuICBwdWJsaWMgZ2V0IGdldFNvcnRTdGF0dXMoKTogU29ydFN0YXR1cyB7XG4gICAgcmV0dXJuIHsgY29sdW1uOiB0aGlzLml0ZW0/Lm5hbWUsIHNvcnRWYXJpYW50OiBUYWJsZVNvcnRWYXJpYW50LlVOU09SVEVEIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaWNvbiBvciBpbmRpY2F0b3IgZm9yIHRoZSBjdXJyZW50IHNvcnRpbmcgc3RhdHVzIChhc2NlbmRpbmcsIGRlc2NlbmRpbmcsIHVuc29ydGVkKS5cbiAgICpcbiAgICogQHJldHVybnMge1RhYmxlU29ydFZhcmlhbnR9XG4gICAqL1xuICBwdWJsaWMgZ2V0IHNvcnRJY29uKCk6IFRhYmxlU29ydFZhcmlhbnQge1xuICAgIHJldHVybiB0aGlzLnNvcnRTdGF0dXMuc29ydFZhcmlhbnQ7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgc29ydGluZyBzdGF0dXMgb2YgdGhlIGNvbHVtbiBhbmQgaW5mb3JtcyB0aGUgdGFibGUgY29tcG9uZW50IG9mIHRoZSBjaGFuZ2UuXG4gICAqL1xuICBwdWJsaWMgc29ydENvbHVtbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXRlbT8uc29ydGFibGUpIHJldHVybjtcbiAgICBzd2l0Y2ggKHRoaXMuc29ydFN0YXR1cy5zb3J0VmFyaWFudCkge1xuICAgICAgY2FzZSBUYWJsZVNvcnRWYXJpYW50LkRFU0M6XG4gICAgICBjYXNlIFRhYmxlU29ydFZhcmlhbnQuVU5TT1JURUQ6XG4gICAgICAgIHRoaXMudGFibGUuY2xlYXJTb3J0KCk7XG4gICAgICAgIHRoaXMuc29ydFN0YXR1cyA9IHsgLi4udGhpcy5zb3J0U3RhdHVzLCBzb3J0VmFyaWFudDogVGFibGVTb3J0VmFyaWFudC5BU0MgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRhYmxlU29ydFZhcmlhbnQuQVNDOlxuICAgICAgICB0aGlzLnRhYmxlLmNsZWFyU29ydCgpO1xuXG4gICAgICAgIHRoaXMuc29ydFN0YXR1cyA9IHsgLi4udGhpcy5zb3J0U3RhdHVzLCBzb3J0VmFyaWFudDogVGFibGVTb3J0VmFyaWFudC5ERVNDIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMudGFibGUuc29ydGVkLmVtaXQodGhpcy5zb3J0U3RhdHVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIHNvcnQgc3RhdHVzIHRvIHVuc29ydGVkLlxuICAgKi9cbiAgcHVibGljIGNsZWFyU29ydFN0YXR1cygpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRTdGF0dXMgPSB7IGNvbHVtbjogdGhpcy5pdGVtPy5uYW1lLCBzb3J0VmFyaWFudDogVGFibGVTb3J0VmFyaWFudC5VTlNPUlRFRCB9O1xuICAgIHRoaXMuY2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgaW4gdGhlIGNvbHVtbiwgdXNlZCB0byBkZXRlcm1pbmUgY2hlY2tib3ggc3RhdGUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUuZGF0YSgpLmZpbHRlcigoZDogVGFibGVCb2R5Q2VsbCkgPT4gZFt0aGlzLml0ZW0ubmFtZV0pLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb21wb25lbnQgdmlldywgdXN1YWxseSBhZnRlciBhIHN0YXRlIGNoYW5nZS5cbiAgICovXG4gIHB1YmxpYyBjaGVjaygpOiB2b2lkIHtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNoZWNrYm94IHNob3VsZCBiZSBtYXJrZWQgYXMgY2hlY2tlZC5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBwdWJsaWMgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5pdGVtLmNoZWNrICYmIHRoaXMuaXRlbS5uYW1lO1xuICAgIHJldHVybiB0aGlzLnRhYmxlLmRhdGEoKS5ldmVyeSgoaXRlbTogVGFibGVCb2R5Q2VsbCkgPT4gY29sdW1uICYmIGl0ZW1bY29sdW1uXSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0JveExpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQm94TGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLml0ZW0uY2hlY2spIHJldHVybjtcbiAgICB0aGlzLmNoZWNrRm9ybVxuICAgICAgLmdldCgnY2hlY2snKVxuICAgICAgPy52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgdGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgdGFwKChjaGVjaykgPT4gdGhpcy50YWJsZS5jaGVja2VkLmVtaXQoeyBjb2x1bW46IHRoaXMuaXRlbS5uYW1lLCBjaGVjazogISFjaGVjayB9KSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5pdGVtLmNoZWNrICYmIHRoaXMuaXRlbS5uYW1lO1xuICAgIGNvbnN0IHsgbGVuZ3RoIH0gPSB0aGlzLnRhYmxlLmRhdGEoKTtcbiAgICBjb25zdCB1bmNoZWNrZWQgPSBsZW5ndGggLSB0aGlzLnRhYmxlLmRhdGEoKS5maWx0ZXIoKGl0ZW06IFRhYmxlQm9keUNlbGwpID0+IGNvbHVtbiAmJiBpdGVtW2NvbHVtbl0pLmxlbmd0aDtcbiAgICByZXR1cm4gdW5jaGVja2VkID4gMCAmJiB1bmNoZWNrZWQgPCBsZW5ndGg7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoJylcbiAgcHJvdGVjdGVkIGdldCBjb2x1bW5XaWR0aCgpOiBDb2x1bW5XaWR0aCB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbS53aWR0aCA/PyAnYXV0byc7XG4gIH1cbn1cbiIsIkBpZiAoaXRlbS5jaGVjaykge1xuICA8ZGl2IGNsYXNzPVwib2R4LXRhYmxlX19jaGVja1wiPlxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJjaGVja0Zvcm1cIj5cbiAgICAgIDxvZHgtY2hlY2tib3ggW2NoZWNrZWRdPVwiY2hlY2tlZFwiIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJjaGVja1wiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufSBAZWxzZSB7XG4gIDxkaXYgY2xhc3M9XCJvZHgtdGFibGVfX2hlYWRlci1jZWxsLXRpdGxlXCIgKGNsaWNrKT1cInNvcnRDb2x1bW4oKVwiIFtjbGFzcy5zb3J0YWJsZV09XCJpdGVtLnNvcnRhYmxlXCI+XG4gICAge3sgaXRlbS50aXRsZSB9fVxuICAgIEBpZiAoaXRlbS5zb3J0YWJsZSkge1xuICAgICAgQHN3aXRjaCAoc29ydEljb24pIHtcbiAgICAgICAgQGNhc2UgKCd1bnNvcnRlZCcpIHtcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwibTE0LDVIMnYtMmgxMnYyWm0tNCwySDJ2Mmg4di0yWm0tNCw0SDJ2Mmg0di0yWlwiIHN0eWxlPVwiZmlsbDogdmFyKC0tYmx1ZS03MDApXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2Rlc2MnKSB7XG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMTEgNiA4IDMgNSA2IDcgNiA3IDEzIDkgMTMgOSA2IDExIDZcIiBzdHlsZT1cImZpbGw6IHZhcigtLWJsdWUtNzAwKVwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdhc2MnKSB7XG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPVwiNSAxMCA4IDEzIDExIDEwIDkgMTAgOSAzIDcgMyA3IDEwIDUgMTBcIiBzdHlsZT1cImZpbGw6IHZhcigtLWJsdWUtNzAwKVwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJvZHgtZm9ybS1maWVsZFwiIC8+XG59XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXRpdGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3RhYmxlL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXItdGl0bGUvaGVhZGVyLXRpdGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3RhYmxlL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXItdGl0bGUvaGVhZGVyLXRpdGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdJLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFFM0M7Ozs7R0FJRztBQVVILE1BQU0sT0FBTyxvQkFBb0I7SUFUakM7UUFVbUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMs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WUFBWSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDOzhCQWN4RCxJQUFJO3NCQURWLEtBQUs7Z0JBMEdRLFdBQVc7c0JBRHhCLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2NoZWNrYm94JztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU29ydFN0YXR1cywgVGFibGVCb2R5Q2VsbCwgVGFibGVIZWFkZXJDZWxsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlU29ydFZhcmlhbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvc29ydC12YXJpYW50JztcbmltcG9ydCB7IFRBQkxFIH0gZnJvbSAnLi4vLi4vdGFibGUuY29uZmlnJztcblxuLyoqXG4gKiBIZWFkZXJUaXRsZUNvbXBvbmVudCBwcm92aWRlcyB0aGUgZnVuY3Rpb25hbGl0eSBmb3IgYSB0YWJsZSBoZWFkZXIgY2VsbCwgaW5jbHVkaW5nIHNvcnRpbmcgYW5kIGNoZWNrYm94XG4gKiBvcGVyYXRpb25zIGlmIGFwcGxpY2FibGUuIEl0IGhhbmRsZXMgY2hhbmdlcyBpbiBzb3J0IHN0YXRlIGFuZCBlbWl0cyByZWxldmFudCBldmVudHMgdG8gdGhlIHRhYmxlIGNvbXBvbmVudFxuICogdG8gbWFuYWdlIHNvcnRpbmcgYW5kIHNlbGVjdGlvbiBzdGF0ZSBhY3Jvc3MgdGhlIHRhYmxlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd0aFtvZHhIZWFkZXJUaXRsZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLXRpdGxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENoZWNrYm94Q29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyVGl0bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHRhYmxlID0gaW5qZWN0KFRBQkxFKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG4gIHByaXZhdGUgc29ydFN0YXR1czogU29ydFN0YXR1cyA9IHRoaXMuZ2V0U29ydFN0YXR1cztcblxuICAvKipcbiAgICogVGhlIGhlYWRlciBjZWxsIGl0ZW0gY29udGFpbmluZyBtZXRhZGF0YSBsaWtlIGNvbHVtbiBuYW1lLCBzb3J0YWJpbGl0eSwgYW5kIHdoZXRoZXIgaXQgc2hvdWxkIGluY2x1ZGUgYSBjaGVja2JveC5cbiAgICpcbiAgICogQHR5cGUge1RhYmxlSGVhZGVyQ2VsbH1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpdGVtITogVGFibGVIZWFkZXJDZWxsO1xuXG4gIC8qKlxuICAgKiBGb3JtR3JvdXAgdG8gbWFuYWdlIHRoZSBjaGVja2JveCBzdGF0ZSB3aXRoaW4gdGhlIGhlYWRlci5cbiAgICpcbiAgICogQHR5cGUge0Zvcm1Hcm91cH1cbiAgICovXG4gIHB1YmxpYyBjaGVja0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHsgY2hlY2s6IG5ldyBGb3JtQ29udHJvbChmYWxzZSkgfSk7XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHNvcnQgc3RhdHVzIG9mIHRoZSBjb2x1bW4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgaGVhZGVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7U29ydFN0YXR1c31cbiAgICovXG4gIHB1YmxpYyBnZXQgZ2V0U29ydFN0YXR1cygpOiBTb3J0U3RhdHVzIHtcbiAgICByZXR1cm4geyBjb2x1bW46IHRoaXMuaXRlbT8ubmFtZSwgc29ydFZhcmlhbnQ6IFRhYmxlU29ydFZhcmlhbnQuVU5TT1JURUQgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpY29uIG9yIGluZGljYXRvciBmb3IgdGhlIGN1cnJlbnQgc29ydGluZyBzdGF0dXMgKGFzY2VuZGluZywgZGVzY2VuZGluZywgdW5zb3J0ZWQpLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VGFibGVTb3J0VmFyaWFudH1cbiAgICovXG4gIHB1YmxpYyBnZXQgc29ydEljb24oKTogVGFibGVTb3J0VmFyaWFudCB7XG4gICAgcmV0dXJuIHRoaXMuc29ydFN0YXR1cy5zb3J0VmFyaWFudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBzb3J0aW5nIHN0YXR1cyBvZiB0aGUgY29sdW1uIGFuZCBpbmZvcm1zIHRoZSB0YWJsZSBjb21wb25lbnQgb2YgdGhlIGNoYW5nZS5cbiAgICovXG4gIHB1YmxpYyBzb3J0Q29sdW1uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pdGVtPy5zb3J0YWJsZSkgcmV0dXJuO1xuICAgIHN3aXRjaCAodGhpcy5zb3J0U3RhdHVzLnNvcnRWYXJpYW50KSB7XG4gICAgICBjYXNlIFRhYmxlU29ydFZhcmlhbnQuREVTQzpcbiAgICAgIGNhc2UgVGFibGVTb3J0VmFyaWFudC5VTlNPUlRFRDpcbiAgICAgICAgdGhpcy50YWJsZS5jbGVhclNvcnQoKTtcbiAgICAgICAgdGhpcy5zb3J0U3RhdHVzID0geyAuLi50aGlzLnNvcnRTdGF0dXMsIHNvcnRWYXJpYW50OiBUYWJsZVNvcnRWYXJpYW50LkFTQyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVGFibGVTb3J0VmFyaWFudC5BU0M6XG4gICAgICAgIHRoaXMudGFibGUuY2xlYXJTb3J0KCk7XG5cbiAgICAgICAgdGhpcy5zb3J0U3RhdHVzID0geyAuLi50aGlzLnNvcnRTdGF0dXMsIHNvcnRWYXJpYW50OiBUYWJsZVNvcnRWYXJpYW50LkRFU0MgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy50YWJsZS5zb3J0ZWQuZW1pdCh0aGlzLnNvcnRTdGF0dXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgc29ydCBzdGF0dXMgdG8gdW5zb3J0ZWQuXG4gICAqL1xuICBwdWJsaWMgY2xlYXJTb3J0U3RhdHVzKCk6IHZvaWQge1xuICAgIHRoaXMuc29ydFN0YXR1cyA9IHsgY29sdW1uOiB0aGlzLml0ZW0/Lm5hbWUsIHNvcnRWYXJpYW50OiBUYWJsZVNvcnRWYXJpYW50LlVOU09SVEVEIH07XG4gICAgdGhpcy5jaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtcyBpbiB0aGUgY29sdW1uLCB1c2VkIHRvIGRldGVybWluZSBjaGVja2JveCBzdGF0ZS5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5kYXRhKCkuZmlsdGVyKChkOiBUYWJsZUJvZHlDZWxsKSA9PiBkW3RoaXMuaXRlbS5uYW1lXSkubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVudCB2aWV3LCB1c3VhbGx5IGFmdGVyIGEgc3RhdGUgY2hhbmdlLlxuICAgKi9cbiAgcHVibGljIGNoZWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY2hlY2tib3ggc2hvdWxkIGJlIG1hcmtlZCBhcyBjaGVja2VkLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLml0ZW0uY2hlY2sgJiYgdGhpcy5pdGVtLm5hbWU7XG4gICAgcmV0dXJuIHRoaXMudGFibGUuZGF0YSgpLmV2ZXJ5KChpdGVtOiBUYWJsZUJvZHlDZWxsKSA9PiBjb2x1bW4gJiYgaXRlbVtjb2x1bW5dKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrQm94TGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tCb3hMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXRlbS5jaGVjaykgcmV0dXJuO1xuICAgIHRoaXMuY2hlY2tGb3JtXG4gICAgICAuZ2V0KCdjaGVjaycpXG4gICAgICA/LnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICB0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICB0YXAoKGNoZWNrKSA9PiB0aGlzLnRhYmxlLmNoZWNrZWQuZW1pdCh7IGNvbHVtbjogdGhpcy5pdGVtLm5hbWUsIGNoZWNrOiAhIWNoZWNrIH0pKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLml0ZW0uY2hlY2sgJiYgdGhpcy5pdGVtLm5hbWU7XG4gICAgY29uc3QgeyBsZW5ndGggfSA9IHRoaXMudGFibGUuZGF0YSgpO1xuICAgIGNvbnN0IHVuY2hlY2tlZCA9IGxlbmd0aCAtIHRoaXMudGFibGUuZGF0YSgpLmZpbHRlcigoaXRlbTogVGFibGVCb2R5Q2VsbCkgPT4gY29sdW1uICYmIGl0ZW1bY29sdW1uXSkubGVuZ3RoO1xuICAgIHJldHVybiB1bmNoZWNrZWQgPiAwICYmIHVuY2hlY2tlZCA8IGxlbmd0aDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKVxuICBwcm90ZWN0ZWQgZ2V0IGNvbHVtbldpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbS53aWR0aCA/PyAnYXV0byc7XG4gIH1cbn1cbiIsIkBpZiAoaXRlbS5jaGVjaykge1xuICA8ZGl2IGNsYXNzPVwib2R4LXRhYmxlX19jaGVja1wiPlxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJjaGVja0Zvcm1cIj5cbiAgICAgIDxvZHgtY2hlY2tib3ggW2NoZWNrZWRdPVwiY2hlY2tlZFwiIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJjaGVja1wiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufSBAZWxzZSB7XG4gIDxkaXYgY2xhc3M9XCJvZHgtdGFibGVfX2hlYWRlci1jZWxsLXRpdGxlXCIgKGNsaWNrKT1cInNvcnRDb2x1bW4oKVwiIFtjbGFzcy5zb3J0YWJsZV09XCJpdGVtLnNvcnRhYmxlXCI+XG4gICAge3sgaXRlbS50aXRsZSB9fVxuICAgIEBpZiAoaXRlbS5zb3J0YWJsZSkge1xuICAgICAgQHN3aXRjaCAoc29ydEljb24pIHtcbiAgICAgICAgQGNhc2UgKCd1bnNvcnRlZCcpIHtcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwibTE0LDVIMnYtMmgxMnYyWm0tNCwySDJ2Mmg4di0yWm0tNCw0SDJ2Mmg0di0yWlwiIHN0eWxlPVwiZmlsbDogdmFyKC0tYmx1ZS03MDApXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2Rlc2MnKSB7XG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMTEgNiA4IDMgNSA2IDcgNiA3IDEzIDkgMTMgOSA2IDExIDZcIiBzdHlsZT1cImZpbGw6IHZhcigtLWJsdWUtNzAwKVwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdhc2MnKSB7XG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPVwiNSAxMCA4IDEzIDExIDEwIDkgMTAgOSAzIDcgMyA3IDEwIDUgMTBcIiBzdHlsZT1cImZpbGw6IHZhcigtLWJsdWUtNzAwKVwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJvZHgtZm9ybS1maWVsZFwiIC8+XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWNlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90YWJsZS9zcmMvbGliL21vZGVscy9oZWFkZXItY2VsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sdW1uV2lkdGggfSBmcm9tICcuL2NvbHVtbi13aWR0aCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVIZWFkZXJDZWxsIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZmlsdGVyPzogYm9vbGVhbjtcbiAgc29ydGFibGU/OiBib29sZWFuO1xuICBjaGVjaz86IGJvb2xlYW47XG4gIHdpZHRoPzogQ29sdW1uV2lkdGg7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWNlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90YWJsZS9zcmMvbGliL21vZGVscy9oZWFkZXItY2VsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUYWJsZUhlYWRlckNlbGwge1xuICB0aXRsZT86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBmaWx0ZXI/OiBib29sZWFuO1xuICBzb3J0YWJsZT86IGJvb2xlYW47XG4gIGNoZWNrPzogYm9vbGVhbjtcbiAgd2lkdGg/OiBzdHJpbmc7XG59XG4iXX0=
@@ -1,7 +1,6 @@
1
- export * from './body-cell';
2
- export * from './column-width';
3
1
  export * from './header-cell';
4
2
  export * from './sort-status';
5
3
  export * from './sort-variant';
4
+ export * from './table-body-cell';
6
5
  export * from './table-variant';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90YWJsZS9zcmMvbGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYm9keS1jZWxsJztcbmV4cG9ydCAqIGZyb20gJy4vY29sdW1uLXdpZHRoJztcbmV4cG9ydCAqIGZyb20gJy4vaGVhZGVyLWNlbGwnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0LXN0YXR1cyc7XG5leHBvcnQgKiBmcm9tICcuL3NvcnQtdmFyaWFudCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLXZhcmlhbnQnO1xuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90YWJsZS9zcmMvbGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaGVhZGVyLWNlbGwnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0LXN0YXR1cyc7XG5leHBvcnQgKiBmcm9tICcuL3NvcnQtdmFyaWFudCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWJvZHktY2VsbCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLXZhcmlhbnQnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS1jZWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvdGFibGUvc3JjL2xpYi9tb2RlbHMvdGFibGUtYm9keS1jZWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRhYmxlQm9keUNlbGwge1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { CommonModule } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, computed, EventEmitter, input, Input, Output, QueryList, ViewChildren, ViewEncapsulation, } from '@angular/core';
3
+ import { ChangeDetectionStrategy, Component, EventEmitter, input, Input, Output, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';
4
4
  import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
5
5
  import { FormFieldModule } from '@odx/angular/components/form-field';
6
6
  import { CSSComponent, CSSModifier } from '@odx/angular/internal';
@@ -25,19 +25,6 @@ import * as i2 from "@odx/angular/components/form-field";
25
25
  let TableComponent = class TableComponent {
26
26
  constructor() {
27
27
  this.takeUntilDestroyed = untilDestroyed();
28
- this.headerColumns = computed(() => {
29
- const [firstRow] = this.data() ?? [];
30
- const headerColumns = this.headerData();
31
- if (!(headerColumns && firstRow))
32
- return headerColumns;
33
- return Object.keys(firstRow).map((key) => headerColumns.find((item) => item.name === key) ?? {
34
- name: key,
35
- title: key.charAt(0).toUpperCase() + key.slice(1),
36
- sortable: false,
37
- filter: false,
38
- check: key === 'selected',
39
- });
40
- });
41
28
  this.element = injectElement();
42
29
  /**
43
30
  * Data array of type T that the table displays.
@@ -52,11 +39,12 @@ let TableComponent = class TableComponent {
52
39
  */
53
40
  this.noDataMessage = input('No data available');
54
41
  /**
55
- * Configuration for table header data which controls sorting, filtering, and additional metadata.
42
+ * Configuration for table headers that controls behavior such as sorting, filtering, checkbox display, and width.
43
+ * Should be in the same order as the columns in the template.
56
44
  *
57
45
  * @type {Signal<TableHeaderCell[]>}
58
46
  */
59
- this.headerData = input([]);
47
+ this.headerData = input.required();
60
48
  /**
61
49
  * FormGroup to handle the dynamic filtering controls, each tied to a header cell that has filtering enabled.
62
50
  */
@@ -101,7 +89,7 @@ let TableComponent = class TableComponent {
101
89
  .subscribe();
102
90
  }
103
91
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TableComponent, isStandalone: true, selector: "table[odxTable]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, noDataMessage: { classPropertyName: "noDataMessage", publicName: "noDataMessage", isSignal: true, isRequired: false, transformFunction: null }, headerData: { classPropertyName: "headerData", publicName: "headerData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sorted: "sorted", filtered: "filtered", checked: "checked" }, host: { properties: { "attr.role": "\"table\"" } }, providers: [{ provide: TABLE, useExisting: TableComponent }], viewQueries: [{ propertyName: "headers", predicate: HeaderTitleComponent, descendants: true }], ngImport: i0, template: "<thead class=\"odx-table__head\" role=\"rowgroup\" [formGroup]=\"form\">\n <tr class=\"odx-table__header-row\" role=\"row\">\n @for (item of headerColumns(); track $index) {\n <th class=\"odx-table__header-cell\" role=\"columnheader\" odxHeaderTitle [item]=\"item\">\n @if (item.filter) {\n <odx-form-field>\n <input placeholder=\"Filter\" [formControlName]=\"item.name\" type=\"text\" odxFormFieldControl />\n </odx-form-field>\n }\n </th>\n }\n </tr>\n</thead>\n<tbody class=\"odx-table__body\" role=\"rowgroup\">\n @if (data() && !!data().length) {\n <ng-content select=\"tr\" />\n } @else {\n <tr odx-table-row class=\"odx-table__no-data-row\">\n <td odx-table-cell [attr.colspan]=\"headerColumns().length\">{{ noDataMessage() }}</td>\n </tr>\n }\n</tbody>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormFieldModule }, { kind: "component", type: i2.FormFieldComponent, selector: "odx-form-field", inputs: ["label", "hasWarning", "variant"] }, { kind: "directive", type: i2.FormFieldControlDirective, selector: "[odxFormFieldControl]", exportAs: ["odxFormFieldControl"] }, { kind: "component", type: HeaderTitleComponent, selector: "th[odxHeaderTitle]", inputs: ["item"] }, { kind: "directive", type: TableRowDirective, selector: "tr[odx-table-row]" }, { kind: "directive", type: TableCellDirective, selector: "td[odx-table-cell]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TableComponent, isStandalone: true, selector: "table[odxTable]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, noDataMessage: { classPropertyName: "noDataMessage", publicName: "noDataMessage", isSignal: true, isRequired: false, transformFunction: null }, headerData: { classPropertyName: "headerData", publicName: "headerData", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { sorted: "sorted", filtered: "filtered", checked: "checked" }, host: { properties: { "attr.role": "\"table\"" } }, providers: [{ provide: TABLE, useExisting: TableComponent }], viewQueries: [{ propertyName: "headers", predicate: HeaderTitleComponent, descendants: true }], ngImport: i0, template: "<thead class=\"odx-table__head\" role=\"rowgroup\" [formGroup]=\"form\">\n <tr class=\"odx-table__header-row\" role=\"row\">\n @for (item of headerData(); track $index) {\n <th class=\"odx-table__header-cell\" role=\"columnheader\" odxHeaderTitle [item]=\"item\">\n @if (item.filter) {\n <odx-form-field>\n <input placeholder=\"Filter\" [formControlName]=\"item.name\" type=\"text\" odxFormFieldControl />\n </odx-form-field>\n }\n </th>\n }\n </tr>\n</thead>\n<tbody class=\"odx-table__body\" role=\"rowgroup\">\n @if (data() && !!data().length) {\n <ng-content select=\"tr\" />\n } @else {\n <tr odx-table-row class=\"odx-table__no-data-row\">\n <td odx-table-cell [attr.colspan]=\"headerData().length\">{{ noDataMessage() }}</td>\n </tr>\n }\n</tbody>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormFieldModule }, { kind: "component", type: i2.FormFieldComponent, selector: "odx-form-field", inputs: ["label", "hasWarning", "variant"] }, { kind: "directive", type: i2.FormFieldControlDirective, selector: "[odxFormFieldControl]", exportAs: ["odxFormFieldControl"] }, { kind: "component", type: HeaderTitleComponent, selector: "th[odxHeaderTitle]", inputs: ["item"] }, { kind: "directive", type: TableRowDirective, selector: "tr[odx-table-row]" }, { kind: "directive", type: TableCellDirective, selector: "td[odx-table-cell]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
105
93
  };
106
94
  __decorate([
107
95
  CSSModifier(),
@@ -115,7 +103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
115
103
  type: Component,
116
104
  args: [{ selector: 'table[odxTable]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
117
105
  '[attr.role]': '"table"',
118
- }, imports: [CommonModule, ReactiveFormsModule, FormFieldModule, HeaderTitleComponent, TableRowDirective, TableCellDirective], providers: [{ provide: TABLE, useExisting: TableComponent }], template: "<thead class=\"odx-table__head\" role=\"rowgroup\" [formGroup]=\"form\">\n <tr class=\"odx-table__header-row\" role=\"row\">\n @for (item of headerColumns(); track $index) {\n <th class=\"odx-table__header-cell\" role=\"columnheader\" odxHeaderTitle [item]=\"item\">\n @if (item.filter) {\n <odx-form-field>\n <input placeholder=\"Filter\" [formControlName]=\"item.name\" type=\"text\" odxFormFieldControl />\n </odx-form-field>\n }\n </th>\n }\n </tr>\n</thead>\n<tbody class=\"odx-table__body\" role=\"rowgroup\">\n @if (data() && !!data().length) {\n <ng-content select=\"tr\" />\n } @else {\n <tr odx-table-row class=\"odx-table__no-data-row\">\n <td odx-table-cell [attr.colspan]=\"headerColumns().length\">{{ noDataMessage() }}</td>\n </tr>\n }\n</tbody>\n" }]
106
+ }, imports: [CommonModule, ReactiveFormsModule, FormFieldModule, HeaderTitleComponent, TableRowDirective, TableCellDirective], providers: [{ provide: TABLE, useExisting: TableComponent }], template: "<thead class=\"odx-table__head\" role=\"rowgroup\" [formGroup]=\"form\">\n <tr class=\"odx-table__header-row\" role=\"row\">\n @for (item of headerData(); track $index) {\n <th class=\"odx-table__header-cell\" role=\"columnheader\" odxHeaderTitle [item]=\"item\">\n @if (item.filter) {\n <odx-form-field>\n <input placeholder=\"Filter\" [formControlName]=\"item.name\" type=\"text\" odxFormFieldControl />\n </odx-form-field>\n }\n </th>\n }\n </tr>\n</thead>\n<tbody class=\"odx-table__body\" role=\"rowgroup\">\n @if (data() && !!data().length) {\n <ng-content select=\"tr\" />\n } @else {\n <tr odx-table-row class=\"odx-table__no-data-row\">\n <td odx-table-cell [attr.colspan]=\"headerData().length\">{{ noDataMessage() }}</td>\n </tr>\n }\n</tbody>\n" }]
119
107
  }], propDecorators: { variant: [{
120
108
  type: Input
121
109
  }], sorted: [{
@@ -128,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
128
116
  type: ViewChildren,
129
117
  args: [HeaderTitleComponent]
130
118
  }] } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvdGFibGUvc3JjL2xpYi90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90YWJsZS9zcmMvbGliL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUV2Qzs7Ozs7Ozs7O0dBU0c7QUFlSSxJQUFNLGNBQWMsR0FBcEIsTUFBTSxjQUFjO0lBQXBC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QyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUYsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOytHQS9HVSxjQUFjO21HQUFkLGNBQWMsaXRCQUZkLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQyxzREFzRjlDLG9CQUFvQixnRENwSXBDLDAwQkFzQkEsMkNEdUJZLFlBQVksOEJBQUUsbUJBQW1CLG0yQkFBRSxlQUFlLDRSQUFFLG9CQUFvQixpRkFBRSxpQkFBaUIsOERBQUUsa0JBQWtCOztBQThCbEg7SUFGTixXQUFXLEVBQUU7OytDQUV1QjtBQTNCMUIsY0FBYztJQWQxQixZQUFZLENBQUMsT0FBTyxDQUFDO0dBY1QsY0FBYyxDQWdIMUI7OzRGQWhIWSxjQUFjO2tCQWIxQixTQUFTOytCQUVFLGlCQUFpQixjQUNmLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixhQUFhLEVBQUUsU0FBUztxQkFDekIsV0FFUSxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsYUFDL0csQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxnQkFBZ0IsRUFBRSxDQUFDOzhCQTZCckQsT0FBTztzQkFEYixLQUFLO2dCQW1DVSxNQUFNO3NCQURyQixNQUFNO2dCQVNTLFFBQVE7c0JBRHZCLE1BQU07Z0JBU1MsT0FBTztzQkFEdEIsTUFBTTtnQkFTQSxPQUFPO3NCQURiLFlBQVk7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBFdmVudEVtaXR0ZXIsXG4gIGlucHV0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQsIENTU01vZGlmaWVyIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQsIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIZWFkZXJUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9oZWFkZXItdGl0bGUvaGVhZGVyLXRpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUNlbGxEaXJlY3RpdmUsIFRhYmxlUm93RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFNvcnRTdGF0dXMsIFRhYmxlSGVhZGVyQ2VsbCwgVGFibGVWYXJpYW50IH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgVEFCTEUgfSBmcm9tICcuL3RhYmxlLmNvbmZpZyc7XG5cbi8qKlxuICogVGFibGVDb21wb25lbnQgaXMgYSBkeW5hbWljIHRhYmxlIHN0cnVjdHVyZSBidWlsdCBmb3IgZGlzcGxheWluZyBjb21wbGV4IGRhdGEgc2V0cyB3aXRoIHNvcnRpbmcsIGZpbHRlcmluZyxcbiAqIGFuZCBjaGVja2FibGUgZnVuY3Rpb25hbGl0eS4gSXQgcHJvdmlkZXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRocm91Z2ggdmFyaW91cyBpbnB1dHMgdGhhdCBhbGxvdyB0aGVcbiAqIGN1c3RvbWl6YXRpb24gb2YgdGFibGUgYmVoYXZpb3IgYW5kIHByZXNlbnRhdGlvbi5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBoaWdobHkgbW9kdWxhciwgaW50ZWdyYXRpbmcgd2l0aCBvdGhlciBjb21wb25lbnRzIHN1Y2ggYXMgYEhlYWRlclRpdGxlQ29tcG9uZW50YCBmb3IgaGVhZGVyXG4gKiBtYW5hZ2VtZW50LCBhbmQgdXNpbmcgQW5ndWxhciBmb3JtcyBmb3IgZHluYW1pYyBkYXRhIGZpbHRlcmluZy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIGRhdGEgdGhhdCB0aGUgdGFibGUgZGlzcGxheXMuXG4gKi9cbkBDU1NDb21wb25lbnQoJ3RhYmxlJylcbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3RhYmxlW29keFRhYmxlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLnJvbGVdJzogJ1widGFibGVcIicsXG4gIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1GaWVsZE1vZHVsZSwgSGVhZGVyVGl0bGVDb21wb25lbnQsIFRhYmxlUm93RGlyZWN0aXZlLCBUYWJsZUNlbGxEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRBQkxFLCB1c2VFeGlzdGluZzogVGFibGVDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuICBwcm90ZWN0ZWQgaGVhZGVyQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBbZmlyc3RSb3ddID0gdGhpcy5kYXRhKCkgPz8gW107XG4gICAgY29uc3QgaGVhZGVyQ29sdW1ucyA9IHRoaXMuaGVhZGVyRGF0YSgpO1xuXG4gICAgaWYgKCEoaGVhZGVyQ29sdW1ucyAmJiBmaXJzdFJvdykpIHJldHVybiBoZWFkZXJDb2x1bW5zO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhmaXJzdFJvdykubWFwKFxuICAgICAgKGtleSkgPT5cbiAgICAgICAgaGVhZGVyQ29sdW1ucy5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IGtleSkgPz8ge1xuICAgICAgICAgIG5hbWU6IGtleSxcbiAgICAgICAgICB0aXRsZToga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpLFxuICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICBmaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgIGNoZWNrOiBrZXkgPT09ICdzZWxlY3RlZCcsXG4gICAgICAgIH0sXG4gICAgKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHRhYmxlIHZhcmlhbnQgZm9yIENTUyBzdHlsaW5nLlxuICAgKlxuICAgKiBAdHlwZSB7VGFibGVWYXJpYW50IHwgbnVsbH1cbiAgICovXG4gIEBDU1NNb2RpZmllcigpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2YXJpYW50PzogVGFibGVWYXJpYW50IHwgbnVsbDtcblxuICAvKipcbiAgICogRGF0YSBhcnJheSBvZiB0eXBlIFQgdGhhdCB0aGUgdGFibGUgZGlzcGxheXMuXG4gICAqXG4gICAqIEB0eXBlIHtTaWduYWw8VFtdPn1cbiAgICovXG4gIHB1YmxpYyBkYXRhID0gaW5wdXQucmVxdWlyZWQ8VFtdPigpO1xuXG4gIC8qKlxuICAgKiBNZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiBubyBkYXRhIGlzIGF2YWlsYWJsZS5cbiAgICpcbiAgICogQHR5cGUge1NpZ25hbDxzdHJpbmc+fVxuICAgKi9cbiAgcHVibGljIG5vRGF0YU1lc3NhZ2UgPSBpbnB1dDxzdHJpbmc+KCdObyBkYXRhIGF2YWlsYWJsZScpO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0YWJsZSBoZWFkZXIgZGF0YSB3aGljaCBjb250cm9scyBzb3J0aW5nLCBmaWx0ZXJpbmcsIGFuZCBhZGRpdGlvbmFsIG1ldGFkYXRhLlxuICAgKlxuICAgKiBAdHlwZSB7U2lnbmFsPFRhYmxlSGVhZGVyQ2VsbFtdPn1cbiAgICovXG4gIHB1YmxpYyBoZWFkZXJEYXRhID0gaW5wdXQ8VGFibGVIZWFkZXJDZWxsW10+KFtdKTtcblxuICAvKipcbiAgICogRm9ybUdyb3VwIHRvIGhhbmRsZSB0aGUgZHluYW1pYyBmaWx0ZXJpbmcgY29udHJvbHMsIGVhY2ggdGllZCB0byBhIGhlYWRlciBjZWxsIHRoYXQgaGFzIGZpbHRlcmluZyBlbmFibGVkLlxuICAgKi9cbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVyIGZvciB3aGVuIGEgY29sdW1uJ3Mgc29ydGluZyBzdGF0dXMgY2hhbmdlcy5cbiAgICpcbiAgICogQGVtaXRzIHtTb3J0U3RhdHVzfVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBzb3J0ZWQ6IEV2ZW50RW1pdHRlcjxTb3J0U3RhdHVzPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlciBmb3Igd2hlbiB0aGUgdGFibGUncyBmaWx0ZXJpbmcgY29uZGl0aW9ucyBjaGFuZ2UuXG4gICAqXG4gICAqIEBlbWl0cyB7eyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfX1cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyZWQ6IEV2ZW50RW1pdHRlcjx7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlciBmb3Igd2hlbiBhIGNoZWNrYm94IGNvbHVtbidzIGNoZWNrZWQgc3RhdGUgY2hhbmdlcy5cbiAgICpcbiAgICogQGVtaXRzIHt7IGNvbHVtbjogc3RyaW5nOyBjaGVjazogYm9vbGVhbiB9fVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBjaGVja2VkOiBFdmVudEVtaXR0ZXI8eyBjb2x1bW46IHN0cmluZzsgY2hlY2s6IGJvb2xlYW4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEEgUXVlcnlMaXN0IG9mIEhlYWRlclRpdGxlQ29tcG9uZW50IGluc3RhbmNlcywgZWFjaCBjb3JyZXNwb25kaW5nIHRvIGEgaGVhZGVyIGNlbGwgaW4gdGhlIHRhYmxlLlxuICAgKlxuICAgKiBAdHlwZSB7UXVlcnlMaXN0PEhlYWRlclRpdGxlQ29tcG9uZW50Pn1cbiAgICovXG4gIEBWaWV3Q2hpbGRyZW4oSGVhZGVyVGl0bGVDb21wb25lbnQpXG4gIHB1YmxpYyBoZWFkZXJzITogUXVlcnlMaXN0PEhlYWRlclRpdGxlQ29tcG9uZW50PjtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oZWFkZXJEYXRhKCkuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5maWx0ZXIgJiYgdGhpcy5mb3JtLmFkZENvbnRyb2woaXRlbS5uYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKSk7XG4gICAgdGhpcy5mb3JtTGlzdGVuZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIHNvcnRpbmcgc3RhdHVzIG9mIGFsbCBoZWFkZXJzLlxuICAgKi9cbiAgcHVibGljIGNsZWFyU29ydCgpOiB2b2lkIHtcbiAgICB0aGlzLmhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyKSA9PiBoZWFkZXIuY2xlYXJTb3J0U3RhdHVzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSg2MDApLFxuICAgICAgICB0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWQuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICAgICAgICAgIHRoaXMuaGVhZGVycz8uZmlsdGVyKChoZWFkZXIpID0+ICEhaGVhZGVyLml0ZW0uY2hlY2spLmZvckVhY2goKGhlYWRlcikgPT4gaGVhZGVyLmNoZWNrKCkpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPHRoZWFkIGNsYXNzPVwib2R4LXRhYmxlX19oZWFkXCIgcm9sZT1cInJvd2dyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDx0ciBjbGFzcz1cIm9keC10YWJsZV9faGVhZGVyLXJvd1wiIHJvbGU9XCJyb3dcIj5cbiAgICBAZm9yIChpdGVtIG9mIGhlYWRlckNvbHVtbnMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8dGggY2xhc3M9XCJvZHgtdGFibGVfX2hlYWRlci1jZWxsXCIgcm9sZT1cImNvbHVtbmhlYWRlclwiIG9keEhlYWRlclRpdGxlIFtpdGVtXT1cIml0ZW1cIj5cbiAgICAgICAgQGlmIChpdGVtLmZpbHRlcikge1xuICAgICAgICAgIDxvZHgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBwbGFjZWhvbGRlcj1cIkZpbHRlclwiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5uYW1lXCIgdHlwZT1cInRleHRcIiBvZHhGb3JtRmllbGRDb250cm9sIC8+XG4gICAgICAgICAgPC9vZHgtZm9ybS1maWVsZD5cbiAgICAgICAgfVxuICAgICAgPC90aD5cbiAgICB9XG4gIDwvdHI+XG48L3RoZWFkPlxuPHRib2R5IGNsYXNzPVwib2R4LXRhYmxlX19ib2R5XCIgcm9sZT1cInJvd2dyb3VwXCI+XG4gIEBpZiAoZGF0YSgpICYmICEhZGF0YSgpLmxlbmd0aCkge1xuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInRyXCIgLz5cbiAgfSBAZWxzZSB7XG4gICAgPHRyIG9keC10YWJsZS1yb3cgY2xhc3M9XCJvZHgtdGFibGVfX25vLWRhdGEtcm93XCI+XG4gICAgICA8dGQgb2R4LXRhYmxlLWNlbGwgW2F0dHIuY29sc3Bhbl09XCJoZWFkZXJDb2x1bW5zKCkubGVuZ3RoXCI+e3sgbm9EYXRhTWVzc2FnZSgpIH19PC90ZD5cbiAgICA8L3RyPlxuICB9XG48L3Rib2R5PlxuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvdGFibGUvc3JjL2xpYi90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90YWJsZS9zcmMvbGliL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUV2Qzs7Ozs7Ozs7O0dBU0c7QUFlSSxJQUFNLGNBQWMsR0FBcEIsTUFBTSxjQUFjO0lBQXBCO1FBQ1ksdUJBQWtC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LEVBQUUsS0FBSyxFQUFFLFdBQVcsZ0JBQWdCLEVBQUUsQ0FBQzs4QkFhckQsT0FBTztzQkFEYixLQUFLO2dCQW9DVSxNQUFNO3NCQURyQixNQUFNO2dCQVNTLFFBQVE7c0JBRHZCLE1BQU07Z0JBU1MsT0FBTztzQkFEdEIsTUFBTTtnQkFTQSxPQUFPO3NCQURiLFlBQVk7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5wdXQsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4sIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQsIENTU01vZGlmaWVyIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQsIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIZWFkZXJUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9oZWFkZXItdGl0bGUvaGVhZGVyLXRpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUNlbGxEaXJlY3RpdmUsIFRhYmxlUm93RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFNvcnRTdGF0dXMsIFRhYmxlSGVhZGVyQ2VsbCwgVGFibGVWYXJpYW50IH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgVEFCTEUgfSBmcm9tICcuL3RhYmxlLmNvbmZpZyc7XG5cbi8qKlxuICogVGFibGVDb21wb25lbnQgaXMgYSBkeW5hbWljIHRhYmxlIHN0cnVjdHVyZSBidWlsdCBmb3IgZGlzcGxheWluZyBjb21wbGV4IGRhdGEgc2V0cyB3aXRoIHNvcnRpbmcsIGZpbHRlcmluZyxcbiAqIGFuZCBjaGVja2FibGUgZnVuY3Rpb25hbGl0eS4gSXQgcHJvdmlkZXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRocm91Z2ggdmFyaW91cyBpbnB1dHMgdGhhdCBhbGxvdyB0aGVcbiAqIGN1c3RvbWl6YXRpb24gb2YgdGFibGUgYmVoYXZpb3IgYW5kIHByZXNlbnRhdGlvbi5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBoaWdobHkgbW9kdWxhciwgaW50ZWdyYXRpbmcgd2l0aCBvdGhlciBjb21wb25lbnRzIHN1Y2ggYXMgYEhlYWRlclRpdGxlQ29tcG9uZW50YCBmb3IgaGVhZGVyXG4gKiBtYW5hZ2VtZW50LCBhbmQgdXNpbmcgQW5ndWxhciBmb3JtcyBmb3IgZHluYW1pYyBkYXRhIGZpbHRlcmluZy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIGRhdGEgdGhhdCB0aGUgdGFibGUgZGlzcGxheXMuXG4gKi9cbkBDU1NDb21wb25lbnQoJ3RhYmxlJylcbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3RhYmxlW29keFRhYmxlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLnJvbGVdJzogJ1widGFibGVcIicsXG4gIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1GaWVsZE1vZHVsZSwgSGVhZGVyVGl0bGVDb21wb25lbnQsIFRhYmxlUm93RGlyZWN0aXZlLCBUYWJsZUNlbGxEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRBQkxFLCB1c2VFeGlzdGluZzogVGFibGVDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0YWJsZSB2YXJpYW50IGZvciBDU1Mgc3R5bGluZy5cbiAgICpcbiAgICogQHR5cGUge1RhYmxlVmFyaWFudCB8IG51bGx9XG4gICAqL1xuICBAQ1NTTW9kaWZpZXIoKVxuICBASW5wdXQoKVxuICBwdWJsaWMgdmFyaWFudD86IFRhYmxlVmFyaWFudCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIERhdGEgYXJyYXkgb2YgdHlwZSBUIHRoYXQgdGhlIHRhYmxlIGRpc3BsYXlzLlxuICAgKlxuICAgKiBAdHlwZSB7U2lnbmFsPFRbXT59XG4gICAqL1xuICBwdWJsaWMgZGF0YSA9IGlucHV0LnJlcXVpcmVkPFRbXT4oKTtcblxuICAvKipcbiAgICogTWVzc2FnZSB0byBkaXNwbGF5IHdoZW4gbm8gZGF0YSBpcyBhdmFpbGFibGUuXG4gICAqXG4gICAqIEB0eXBlIHtTaWduYWw8c3RyaW5nPn1cbiAgICovXG4gIHB1YmxpYyBub0RhdGFNZXNzYWdlID0gaW5wdXQ8c3RyaW5nPignTm8gZGF0YSBhdmFpbGFibGUnKTtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGFibGUgaGVhZGVycyB0aGF0IGNvbnRyb2xzIGJlaGF2aW9yIHN1Y2ggYXMgc29ydGluZywgZmlsdGVyaW5nLCBjaGVja2JveCBkaXNwbGF5LCBhbmQgd2lkdGguXG4gICAqIFNob3VsZCBiZSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgY29sdW1ucyBpbiB0aGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtTaWduYWw8VGFibGVIZWFkZXJDZWxsW10+fVxuICAgKi9cbiAgcHVibGljIGhlYWRlckRhdGEgPSBpbnB1dC5yZXF1aXJlZDxUYWJsZUhlYWRlckNlbGxbXT4oKTtcblxuICAvKipcbiAgICogRm9ybUdyb3VwIHRvIGhhbmRsZSB0aGUgZHluYW1pYyBmaWx0ZXJpbmcgY29udHJvbHMsIGVhY2ggdGllZCB0byBhIGhlYWRlciBjZWxsIHRoYXQgaGFzIGZpbHRlcmluZyBlbmFibGVkLlxuICAgKi9cbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVyIGZvciB3aGVuIGEgY29sdW1uJ3Mgc29ydGluZyBzdGF0dXMgY2hhbmdlcy5cbiAgICpcbiAgICogQGVtaXRzIHtTb3J0U3RhdHVzfVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBzb3J0ZWQ6IEV2ZW50RW1pdHRlcjxTb3J0U3RhdHVzPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlciBmb3Igd2hlbiB0aGUgdGFibGUncyBmaWx0ZXJpbmcgY29uZGl0aW9ucyBjaGFuZ2UuXG4gICAqXG4gICAqIEBlbWl0cyB7eyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfX1cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyZWQ6IEV2ZW50RW1pdHRlcjx7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlciBmb3Igd2hlbiBhIGNoZWNrYm94IGNvbHVtbidzIGNoZWNrZWQgc3RhdGUgY2hhbmdlcy5cbiAgICpcbiAgICogQGVtaXRzIHt7IGNvbHVtbjogc3RyaW5nOyBjaGVjazogYm9vbGVhbiB9fVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBjaGVja2VkOiBFdmVudEVtaXR0ZXI8eyBjb2x1bW46IHN0cmluZzsgY2hlY2s6IGJvb2xlYW4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEEgUXVlcnlMaXN0IG9mIEhlYWRlclRpdGxlQ29tcG9uZW50IGluc3RhbmNlcywgZWFjaCBjb3JyZXNwb25kaW5nIHRvIGEgaGVhZGVyIGNlbGwgaW4gdGhlIHRhYmxlLlxuICAgKlxuICAgKiBAdHlwZSB7UXVlcnlMaXN0PEhlYWRlclRpdGxlQ29tcG9uZW50Pn1cbiAgICovXG4gIEBWaWV3Q2hpbGRyZW4oSGVhZGVyVGl0bGVDb21wb25lbnQpXG4gIHB1YmxpYyBoZWFkZXJzITogUXVlcnlMaXN0PEhlYWRlclRpdGxlQ29tcG9uZW50PjtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oZWFkZXJEYXRhKCkuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5maWx0ZXIgJiYgdGhpcy5mb3JtLmFkZENvbnRyb2woaXRlbS5uYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKSk7XG4gICAgdGhpcy5mb3JtTGlzdGVuZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIHNvcnRpbmcgc3RhdHVzIG9mIGFsbCBoZWFkZXJzLlxuICAgKi9cbiAgcHVibGljIGNsZWFyU29ydCgpOiB2b2lkIHtcbiAgICB0aGlzLmhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyKSA9PiBoZWFkZXIuY2xlYXJTb3J0U3RhdHVzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSg2MDApLFxuICAgICAgICB0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWQuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICAgICAgICAgIHRoaXMuaGVhZGVycz8uZmlsdGVyKChoZWFkZXIpID0+ICEhaGVhZGVyLml0ZW0uY2hlY2spLmZvckVhY2goKGhlYWRlcikgPT4gaGVhZGVyLmNoZWNrKCkpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPHRoZWFkIGNsYXNzPVwib2R4LXRhYmxlX19oZWFkXCIgcm9sZT1cInJvd2dyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDx0ciBjbGFzcz1cIm9keC10YWJsZV9faGVhZGVyLXJvd1wiIHJvbGU9XCJyb3dcIj5cbiAgICBAZm9yIChpdGVtIG9mIGhlYWRlckRhdGEoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8dGggY2xhc3M9XCJvZHgtdGFibGVfX2hlYWRlci1jZWxsXCIgcm9sZT1cImNvbHVtbmhlYWRlclwiIG9keEhlYWRlclRpdGxlIFtpdGVtXT1cIml0ZW1cIj5cbiAgICAgICAgQGlmIChpdGVtLmZpbHRlcikge1xuICAgICAgICAgIDxvZHgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBwbGFjZWhvbGRlcj1cIkZpbHRlclwiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5uYW1lXCIgdHlwZT1cInRleHRcIiBvZHhGb3JtRmllbGRDb250cm9sIC8+XG4gICAgICAgICAgPC9vZHgtZm9ybS1maWVsZD5cbiAgICAgICAgfVxuICAgICAgPC90aD5cbiAgICB9XG4gIDwvdHI+XG48L3RoZWFkPlxuPHRib2R5IGNsYXNzPVwib2R4LXRhYmxlX19ib2R5XCIgcm9sZT1cInJvd2dyb3VwXCI+XG4gIEBpZiAoZGF0YSgpICYmICEhZGF0YSgpLmxlbmd0aCkge1xuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInRyXCIgLz5cbiAgfSBAZWxzZSB7XG4gICAgPHRyIG9keC10YWJsZS1yb3cgY2xhc3M9XCJvZHgtdGFibGVfX25vLWRhdGEtcm93XCI+XG4gICAgICA8dGQgb2R4LXRhYmxlLWNlbGwgW2F0dHIuY29sc3Bhbl09XCJoZWFkZXJEYXRhKCkubGVuZ3RoXCI+e3sgbm9EYXRhTWVzc2FnZSgpIH19PC90ZD5cbiAgICA8L3RyPlxuICB9XG48L3Rib2R5PlxuIl19
@@ -0,0 +1,176 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { inject, TemplateRef, Directive, contentChild, input, contentChildren, computed, Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
4
+ import { CoreModule } from '@odx/angular';
5
+
6
+ class CellDef {
7
+ constructor() {
8
+ this.template = inject(TemplateRef);
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellDef, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CellDef, isStandalone: true, selector: "[odxCellDef]", ngImport: i0 }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellDef, decorators: [{
14
+ type: Directive,
15
+ args: [{
16
+ selector: '[odxCellDef]',
17
+ standalone: true,
18
+ }]
19
+ }] });
20
+
21
+ class CellDirective {
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
23
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CellDirective, isStandalone: true, selector: "td[odxCell]", host: { attributes: { "role": "cell" }, classAttribute: "odx-table__cell" }, ngImport: i0 }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellDirective, decorators: [{
26
+ type: Directive,
27
+ args: [{
28
+ selector: 'td[odxCell]',
29
+ standalone: true,
30
+ host: {
31
+ role: 'cell',
32
+ class: 'odx-table__cell',
33
+ },
34
+ }]
35
+ }] });
36
+
37
+ class HeaderCellDef {
38
+ constructor() {
39
+ this.template = inject(TemplateRef);
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderCellDef, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
42
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: HeaderCellDef, isStandalone: true, selector: "[odxHeaderCellDef]", ngImport: i0 }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderCellDef, decorators: [{
45
+ type: Directive,
46
+ args: [{
47
+ selector: '[odxHeaderCellDef]',
48
+ standalone: true,
49
+ }]
50
+ }] });
51
+
52
+ class ColumnDef {
53
+ constructor() {
54
+ this.headerCellDef = contentChild.required(HeaderCellDef);
55
+ this.cellDef = contentChild.required(CellDef);
56
+ this.name = input.required({ alias: 'odxColumnDef' });
57
+ }
58
+ getHeaderTemplate() {
59
+ return this.headerCellDef().template ?? null;
60
+ }
61
+ getCellTemplate() {
62
+ return this.cellDef().template ?? null;
63
+ }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnDef, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
65
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: ColumnDef, isStandalone: true, selector: "[odxColumnDef]", inputs: { name: { classPropertyName: "name", publicName: "odxColumnDef", isSignal: true, isRequired: true, transformFunction: null } }, queries: [{ propertyName: "headerCellDef", first: true, predicate: HeaderCellDef, descendants: true, isSignal: true }, { propertyName: "cellDef", first: true, predicate: CellDef, descendants: true, isSignal: true }], ngImport: i0 }); }
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColumnDef, decorators: [{
68
+ type: Directive,
69
+ args: [{
70
+ selector: '[odxColumnDef]',
71
+ standalone: true,
72
+ }]
73
+ }] });
74
+
75
+ class HeaderCellDirective {
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderCellDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
77
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: HeaderCellDirective, isStandalone: true, selector: "th[odxHeaderCell]", host: { attributes: { "role": "columnheader" }, classAttribute: "odx-table__header-cell odx-data-table__header-cell" }, ngImport: i0 }); }
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderCellDirective, decorators: [{
80
+ type: Directive,
81
+ args: [{
82
+ selector: 'th[odxHeaderCell]',
83
+ standalone: true,
84
+ host: {
85
+ role: 'columnheader',
86
+ class: 'odx-table__header-cell odx-data-table__header-cell',
87
+ },
88
+ }]
89
+ }] });
90
+
91
+ class TableEmptyDirective {
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableEmptyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
93
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TableEmptyDirective, isStandalone: true, selector: "odx-table-empty", ngImport: i0 }); }
94
+ }
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableEmptyDirective, decorators: [{
96
+ type: Directive,
97
+ args: [{ selector: 'odx-table-empty', standalone: true }]
98
+ }] });
99
+
100
+ const SortDirection = {
101
+ UNSORTED: 'unsorted',
102
+ ASC: 'asc',
103
+ DESC: 'desc',
104
+ };
105
+
106
+ const TableVariant = {
107
+ DEFAULT: 'default',
108
+ STRIPED: 'striped',
109
+ };
110
+
111
+ /**
112
+ * DataTableComponent is a dynamic table structure built for displaying content.
113
+ */
114
+ class DataTableComponent {
115
+ constructor() {
116
+ this.columnDefs = contentChildren(ColumnDef, { descendants: true });
117
+ this.orderedColumns = computed(() => {
118
+ const cols = this.columnDefs() ?? [];
119
+ const displayedCols = this.displayedColumns() ?? [];
120
+ return displayedCols.length > 0
121
+ ? displayedCols.map((colName) => cols.find((colDef) => colDef.name() === colName)).filter((colDef) => !!colDef)
122
+ : cols;
123
+ });
124
+ /**
125
+ * The data to be displayed in the table.
126
+ * @required
127
+ * @type {T[]}
128
+ */
129
+ this.dataSource = input.required();
130
+ /**
131
+ * The columns to be displayed in the table.
132
+ * @required
133
+ * @type {string[]}
134
+ */
135
+ this.displayedColumns = input.required();
136
+ /**
137
+ * The variant of the table.
138
+ * @default TableVariant.DEFAULT
139
+ * @type {TableVariant}
140
+ */
141
+ this.variant = input(TableVariant.DEFAULT);
142
+ }
143
+ get classList() {
144
+ return computed(() => `odx-table odx-data-table odx-table--${this.variant()}`);
145
+ }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
147
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DataTableComponent, isStandalone: true, selector: "table[odxDataTable]", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, displayedColumns: { classPropertyName: "displayedColumns", publicName: "displayedColumns", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "table" }, properties: { "class": "classList()" } }, queries: [{ propertyName: "columnDefs", predicate: ColumnDef, descendants: true, isSignal: true }], ngImport: i0, template: "<thead role=\"rowgroup\" class=\"odx-table__head\">\n <tr role=\"row\" class=\"odx-table__header-row\">\n @for (col of orderedColumns(); track col.name) {\n <ng-container *ngTemplateOutlet=\"col.getHeaderTemplate()\" />\n }\n </tr>\n</thead>\n<tbody role=\"rowgroup\" class=\"odx-table__body\">\n @for (item of dataSource(); track item) {\n <tr class=\"odx-table__row\" role=\"row\">\n @for (col of orderedColumns(); track col.name) {\n <ng-container *ngTemplateOutlet=\"col.getCellTemplate(); context: { $implicit: item }\" />\n }\n </tr>\n } @empty {\n <tr class=\"odx-table__row\" role=\"row\">\n <td class=\"odx-table__cell\" role=\"cell\" [attr.colspan]=\"orderedColumns().length\">\n <ng-content select=\"odx-table-empty\" />\n </td>\n </tr>\n }\n</tbody>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
148
+ }
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
150
+ type: Component,
151
+ args: [{ selector: 'table[odxDataTable]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
152
+ role: 'table',
153
+ '[class]': 'classList()',
154
+ }, imports: [NgTemplateOutlet], template: "<thead role=\"rowgroup\" class=\"odx-table__head\">\n <tr role=\"row\" class=\"odx-table__header-row\">\n @for (col of orderedColumns(); track col.name) {\n <ng-container *ngTemplateOutlet=\"col.getHeaderTemplate()\" />\n }\n </tr>\n</thead>\n<tbody role=\"rowgroup\" class=\"odx-table__body\">\n @for (item of dataSource(); track item) {\n <tr class=\"odx-table__row\" role=\"row\">\n @for (col of orderedColumns(); track col.name) {\n <ng-container *ngTemplateOutlet=\"col.getCellTemplate(); context: { $implicit: item }\" />\n }\n </tr>\n } @empty {\n <tr class=\"odx-table__row\" role=\"row\">\n <td class=\"odx-table__cell\" role=\"cell\" [attr.colspan]=\"orderedColumns().length\">\n <ng-content select=\"odx-table-empty\" />\n </td>\n </tr>\n }\n</tbody>\n" }]
155
+ }] });
156
+
157
+ const modules = [DataTableComponent, CellDef, ColumnDef, HeaderCellDef, TableEmptyDirective, CellDirective, HeaderCellDirective];
158
+ class DataTableModule {
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
160
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DataTableModule, imports: [DataTableComponent, CellDef, ColumnDef, HeaderCellDef, TableEmptyDirective, CellDirective, HeaderCellDirective], exports: [CoreModule, DataTableComponent, CellDef, ColumnDef, HeaderCellDef, TableEmptyDirective, CellDirective, HeaderCellDirective] }); }
161
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableModule, imports: [CoreModule] }); }
162
+ }
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableModule, decorators: [{
164
+ type: NgModule,
165
+ args: [{
166
+ imports: modules,
167
+ exports: [CoreModule, ...modules],
168
+ }]
169
+ }] });
170
+
171
+ /**
172
+ * Generated bundle index. Do not edit.
173
+ */
174
+
175
+ export { CellDef, CellDirective, ColumnDef, DataTableComponent, DataTableModule, HeaderCellDef, HeaderCellDirective, SortDirection, TableEmptyDirective, TableVariant };
176
+ //# sourceMappingURL=odx-angular-components-data-table.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odx-angular-components-data-table.mjs","sources":["../../../../libs/angular/components/data-table/src/lib/directives/cell-def.directive.ts","../../../../libs/angular/components/data-table/src/lib/directives/cell.directive.ts","../../../../libs/angular/components/data-table/src/lib/directives/header-cell-def.directive.ts","../../../../libs/angular/components/data-table/src/lib/directives/column-def.directive.ts","../../../../libs/angular/components/data-table/src/lib/directives/header-cell.directive.ts","../../../../libs/angular/components/data-table/src/lib/directives/table-empty.directive.ts","../../../../libs/angular/components/data-table/src/lib/models/sort-direction.ts","../../../../libs/angular/components/data-table/src/lib/models/table-variant.ts","../../../../libs/angular/components/data-table/src/lib/data-table.component.ts","../../../../libs/angular/components/data-table/src/lib/data-table.component.html","../../../../libs/angular/components/data-table/src/lib/data-table.module.ts","../../../../libs/angular/components/data-table/src/odx-angular-components-data-table.ts"],"sourcesContent":["import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[odxCellDef]',\n standalone: true,\n})\nexport class CellDef {\n public template = inject(TemplateRef);\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'td[odxCell]',\n standalone: true,\n host: {\n role: 'cell',\n class: 'odx-table__cell',\n },\n})\nexport class CellDirective {}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[odxHeaderCellDef]',\n standalone: true,\n})\nexport class HeaderCellDef {\n public template = inject(TemplateRef);\n}\n","import { contentChild, Directive, input, TemplateRef } from '@angular/core';\nimport { CellDef } from './cell-def.directive';\nimport { HeaderCellDef } from './header-cell-def.directive';\n\n@Directive({\n selector: '[odxColumnDef]',\n standalone: true,\n})\nexport class ColumnDef {\n private readonly headerCellDef = contentChild.required(HeaderCellDef);\n private readonly cellDef = contentChild.required(CellDef);\n\n public name = input.required<string>({ alias: 'odxColumnDef' });\n\n public getHeaderTemplate(): TemplateRef<unknown> | null {\n return this.headerCellDef().template ?? null;\n }\n\n public getCellTemplate(): TemplateRef<unknown> | null {\n return this.cellDef().template ?? null;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'th[odxHeaderCell]',\n standalone: true,\n host: {\n role: 'columnheader',\n class: 'odx-table__header-cell odx-data-table__header-cell',\n },\n})\nexport class HeaderCellDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: 'odx-table-empty', standalone: true })\nexport class TableEmptyDirective {}\n","export type SortDirection = (typeof SortDirection)[keyof typeof SortDirection];\n\nexport const SortDirection = {\n UNSORTED: 'unsorted',\n ASC: 'asc',\n DESC: 'desc',\n} as const;\n","export type TableVariant = typeof TableVariant[keyof typeof TableVariant];\n\nexport const TableVariant = {\n DEFAULT: 'default',\n STRIPED: 'striped',\n} as const;\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input, Signal, ViewEncapsulation } from '@angular/core';\nimport { ColumnDef } from './directives';\nimport { TableVariant } from './models';\n\n/**\n * DataTableComponent is a dynamic table structure built for displaying content.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'table[odxDataTable]',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n role: 'table',\n '[class]': 'classList()',\n },\n templateUrl: './data-table.component.html',\n imports: [NgTemplateOutlet],\n})\nexport class DataTableComponent<T = unknown> {\n protected columnDefs = contentChildren(ColumnDef, { descendants: true });\n\n protected orderedColumns = computed(() => {\n const cols = this.columnDefs() ?? [];\n const displayedCols = this.displayedColumns() ?? [];\n\n return displayedCols.length > 0\n ? displayedCols.map((colName) => cols.find((colDef) => colDef.name() === colName)).filter((colDef): colDef is ColumnDef => !!colDef)\n : cols;\n });\n\n /**\n * The data to be displayed in the table.\n * @required\n * @type {T[]}\n */\n public dataSource = input.required<T[]>();\n\n /**\n * The columns to be displayed in the table.\n * @required\n * @type {string[]}\n */\n public displayedColumns = input.required<string[]>();\n\n /**\n * The variant of the table.\n * @default TableVariant.DEFAULT\n * @type {TableVariant}\n */\n public variant = input<TableVariant>(TableVariant.DEFAULT);\n\n protected get classList(): Signal<string> {\n return computed(() => `odx-table odx-data-table odx-table--${this.variant()}`);\n }\n}\n","<thead role=\"rowgroup\" class=\"odx-table__head\">\n <tr role=\"row\" class=\"odx-table__header-row\">\n @for (col of orderedColumns(); track col.name) {\n <ng-container *ngTemplateOutlet=\"col.getHeaderTemplate()\" />\n }\n </tr>\n</thead>\n<tbody role=\"rowgroup\" class=\"odx-table__body\">\n @for (item of dataSource(); track item) {\n <tr class=\"odx-table__row\" role=\"row\">\n @for (col of orderedColumns(); track col.name) {\n <ng-container *ngTemplateOutlet=\"col.getCellTemplate(); context: { $implicit: item }\" />\n }\n </tr>\n } @empty {\n <tr class=\"odx-table__row\" role=\"row\">\n <td class=\"odx-table__cell\" role=\"cell\" [attr.colspan]=\"orderedColumns().length\">\n <ng-content select=\"odx-table-empty\" />\n </td>\n </tr>\n }\n</tbody>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DataTableComponent } from './data-table.component';\nimport { CellDef, CellDirective, ColumnDef, HeaderCellDef, HeaderCellDirective, TableEmptyDirective } from './directives';\n\nconst modules = [DataTableComponent, CellDef, ColumnDef, HeaderCellDef, TableEmptyDirective, CellDirective, HeaderCellDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class DataTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -236,9 +236,13 @@ let MainMenuComponent = class MainMenuComponent {
236
236
  }
237
237
  slideMenuInner(isOpen = false) {
238
238
  const nativeElement = this.menuInner?.nativeElement;
239
- if (!nativeElement?.isConnected)
239
+ if (!(nativeElement?.isConnected && this.isPopoverElement(nativeElement)))
240
240
  return;
241
- (isOpen ? nativeElement.showPopover : nativeElement.hidePopover)?.();
241
+ const method = isOpen ? 'showPopover' : 'hidePopover';
242
+ nativeElement[method]();
243
+ }
244
+ isPopoverElement(element) {
245
+ return element.hasAttribute('popover') && 'showPopover' in element && 'hidePopover' in element;
242
246
  }
243
247
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MainMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
244
248
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MainMenuComponent, isStandalone: true, selector: "odx-main-menu", inputs: { title: "title", subtitle: "subtitle", copyright: "copyright", isOpen: ["isOpen", "isOpen", booleanAttribute] }, outputs: { menuOpen: "menuOpen" }, host: { listeners: { "window:keyup.esc": "close()" }, properties: { "class.is-open": "isOpen" } }, providers: [provideTranslations(mainMenuTranslations)], viewQueries: [{ propertyName: "menuInner", first: true, predicate: ["menuInner"], descendants: true }], ngImport: i0, template: "<aside class=\"odx-main-menu__inner\" [ngClass]=\"(isOpen$ | async) ? 'opened' : 'closed'\" #menuInner popover=\"auto\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\"><odx-icon name=\"close\" iconSet=\"core\" /></button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n @if (subtitle) {\n <odx-area-header-subtitle>\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n }\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content />\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\" />\n @for (link of mainMenuLinks$ | async; track $index) {\n <a odxLink [href]=\"link.url\" target=\"_blank\">\n {{ link.name | odxTranslate | async }}\n </a>\n }\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\" />\n @if (copyright) {\n <p class=\"odx-text odx-text--small\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n }\n </div>\n</aside>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i1$1.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: CoreModule }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i4.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i4.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }, { kind: "directive", type: LinkDirective, selector: "a[odxLink]" }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }