@annalib/anna-core 33.0.2 → 33.1.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 (76) hide show
  1. package/esm2022/annalib-anna-core.mjs +5 -0
  2. package/esm2022/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +12 -0
  3. package/esm2022/lib/anna-core-shared-lib/components/anna-circular-progress/anna-circular-progress.component.mjs +52 -0
  4. package/esm2022/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.mjs +11 -0
  5. package/esm2022/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.mjs +11 -0
  6. package/esm2022/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +49 -0
  7. package/esm2022/lib/anna-core-shared-lib/components/anna-licensing-table/anna-licensing-table.component.mjs +45 -0
  8. package/esm2022/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +12 -0
  9. package/esm2022/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
  10. package/esm2022/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +11 -0
  11. package/esm2022/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +20 -0
  12. package/esm2022/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +12 -0
  13. package/esm2022/lib/anna-core-shared-lib/components/anna-spinner-loader/anna-spinner-loader.component.mjs +26 -0
  14. package/esm2022/lib/anna-core-shared-lib/constants/anna-application.constants.mjs +5 -0
  15. package/esm2022/lib/anna-core-shared-lib/constants/shared.constant.mjs +49 -0
  16. package/esm2022/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +271 -0
  17. package/esm2022/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.mjs +46 -0
  18. package/esm2022/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +41 -0
  19. package/esm2022/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
  20. package/esm2022/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
  21. package/esm2022/lib/anna-core-shared-lib/models/anna-licensing-table.model.mjs +26 -0
  22. package/esm2022/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +67 -0
  23. package/esm2022/lib/anna-core-shared-lib/models/anna-sort.model.mjs +7 -0
  24. package/esm2022/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +32 -0
  25. package/esm2022/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.mjs +39 -0
  26. package/esm2022/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +27 -0
  27. package/esm2022/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.mjs +21 -0
  28. package/esm2022/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +53 -0
  29. package/esm2022/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +27 -0
  30. package/esm2022/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +17 -0
  31. package/esm2022/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +240 -0
  32. package/esm2022/lib/anna-core-shared-lib/services/anna-filter.service.mjs +1522 -0
  33. package/esm2022/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +149 -0
  34. package/esm2022/lib/anna-core-shared-lib/services/anna-generic-tooltip-html.services.mjs +60 -0
  35. package/esm2022/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +94 -0
  36. package/esm2022/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +80 -0
  37. package/esm2022/lib/anna-core-shared-lib/services/anna-persisting-filter.service.mjs +68 -0
  38. package/esm2022/lib/anna-core-shared-lib/services/anna-regex-patterns.service.mjs +20 -0
  39. package/esm2022/lib/anna-core-shared-lib/services/anna-sort.service.mjs +177 -0
  40. package/esm2022/lib/anna-core-shared-lib/services/anna-spinner-loader.service.mjs +24 -0
  41. package/esm2022/lib/anna-core-shared-lib/services/update-station-id.service.mjs +16 -0
  42. package/esm2022/lib/anna-core.module.mjs +221 -0
  43. package/esm2022/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +160 -0
  44. package/esm2022/lib/anna-dropdown-lib/components/anna-single-select/anna-single-select.component.mjs +155 -0
  45. package/esm2022/lib/anna-dropdown-lib/components/anna-single-select/models/anna-single-select.model.mjs +12 -0
  46. package/esm2022/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +359 -0
  47. package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.mjs +264 -0
  48. package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.mjs +189 -0
  49. package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.mjs +319 -0
  50. package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.mjs +302 -0
  51. package/esm2022/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +1103 -0
  52. package/esm2022/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +69 -0
  53. package/esm2022/lib/anna-generic-table-lib/services/gt-table-related-common-functions.service.mjs +99 -0
  54. package/esm2022/public-api.mjs +65 -0
  55. package/fesm2022/annalib-anna-core.mjs +419 -208
  56. package/fesm2022/annalib-anna-core.mjs.map +1 -1
  57. package/lib/anna-core-shared-lib/components/anna-licensing-table/anna-licensing-table.component.d.ts +15 -0
  58. package/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +1 -0
  59. package/lib/anna-core-shared-lib/models/anna-licensing-table.model.d.ts +18 -0
  60. package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +2 -2
  61. package/lib/anna-core-shared-lib/services/anna-number-format.service.d.ts +1 -0
  62. package/lib/anna-core-shared-lib/services/update-station-id.service.d.ts +6 -0
  63. package/lib/anna-core.module.d.ts +2 -1
  64. package/lib/anna-generic-table-lib/services/gt-table-related-common-functions.service.d.ts +11 -0
  65. package/package.json +9 -7
  66. package/public-api.d.ts +4 -0
  67. package/src/lib/anna-common-scss/_bootstrap-tooltip.scss +0 -2
  68. package/src/lib/anna-common-scss/_button.scss +1 -1
  69. package/src/lib/anna-common-scss/_customDropdown.scss +1 -2
  70. package/src/lib/anna-common-scss/_date-picker-form.scss +1 -1
  71. package/src/lib/anna-common-scss/_filters.scss +1 -2
  72. package/src/lib/anna-common-scss/_gt-table.scss +3 -2
  73. package/src/lib/anna-common-scss/_mat-button-toggle.scss +1 -1
  74. package/src/lib/anna-common-scss/_popup-filter-toggle-button.scss +1 -1
  75. package/src/lib/anna-common-scss/_sort.scss +1 -1
  76. package/src/lib/anna-common-scss/style.scss +1 -7
@@ -0,0 +1,12 @@
1
+ import { NgTemplateOutlet } from "@angular/common";
2
+ import { ChangeDetectionStrategy, Component } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ export class AnnaRejectedIconTemplateComponent {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnnaRejectedIconTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AnnaRejectedIconTemplateComponent, isStandalone: true, selector: "anna-core-rejected-icon-template", ngImport: i0, template: "<ng-container [ngTemplateOutlet]=\"rejectedIcon\"></ng-container>\r\n\r\n<ng-template #rejectedIcon>\r\n <svg\r\n width=\"15px\"\r\n height=\"15px\"\r\n viewBox=\"0 0 20 20\"\r\n >\r\n <g\r\n id=\"Buyer-rejected-icon\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\n d=\"M15.7822266,4.21777344 C14.3671875,2.80276367 12.4951465,2 10.5,2 C6.37918945,2 3,5.37253906 3,9.5 C3,13.6296289 6.37133789,17 10.5,17 C14.6105273,17 18,13.6429004 18,9.5 C18,7.50485352 17.1972656,5.6327832 15.7822266,4.21777344 Z M10.5,15.2128906 C7.34220703,15.2128906 4.78710938,12.664502 4.78710938,9.5 C4.78710938,8.26950195 5.17382812,7.10055664 5.88574219,6.13375977 L13.8662402,14.1054395 C12.8993848,14.8261719 11.730498,15.2128906 10.5,15.2128906 Z M15.1054688,12.8661816 L7.13375977,4.88574219 C8.10061523,4.17382813 9.26950195,3.78710938 10.5,3.78710938 C13.6578809,3.78710938 16.2128906,6.33549805 16.2128906,9.5 C16.2128906,10.7304395 15.8261719,11.8993848 15.1054688,12.8661816 Z\"\r\n id=\"Shape\"\r\n fill=\"#4A4A4A\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnnaRejectedIconTemplateComponent, decorators: [{
9
+ type: Component,
10
+ args: [{ selector: "anna-core-rejected-icon-template", changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgTemplateOutlet], template: "<ng-container [ngTemplateOutlet]=\"rejectedIcon\"></ng-container>\r\n\r\n<ng-template #rejectedIcon>\r\n <svg\r\n width=\"15px\"\r\n height=\"15px\"\r\n viewBox=\"0 0 20 20\"\r\n >\r\n <g\r\n id=\"Buyer-rejected-icon\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\n d=\"M15.7822266,4.21777344 C14.3671875,2.80276367 12.4951465,2 10.5,2 C6.37918945,2 3,5.37253906 3,9.5 C3,13.6296289 6.37133789,17 10.5,17 C14.6105273,17 18,13.6429004 18,9.5 C18,7.50485352 17.1972656,5.6327832 15.7822266,4.21777344 Z M10.5,15.2128906 C7.34220703,15.2128906 4.78710938,12.664502 4.78710938,9.5 C4.78710938,8.26950195 5.17382812,7.10055664 5.88574219,6.13375977 L13.8662402,14.1054395 C12.8993848,14.8261719 11.730498,15.2128906 10.5,15.2128906 Z M15.1054688,12.8661816 L7.13375977,4.88574219 C8.10061523,4.17382813 9.26950195,3.78710938 10.5,3.78710938 C13.6578809,3.78710938 16.2128906,6.33549805 16.2128906,9.5 C16.2128906,10.7304395 15.8261719,11.8993848 15.1054688,12.8661816 Z\"\r\n id=\"Shape\"\r\n fill=\"#4A4A4A\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n" }]
11
+ }] });
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1yZWplY3RlZC1pY29uLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtY29yZS1zaGFyZWQtbGliL2NvbXBvbmVudHMvYW5uYS1yZWplY3RlZC1pY29uLXRlbXBsYXRlL2FubmEtcmVqZWN0ZWQtaWNvbi10ZW1wbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9jb21wb25lbnRzL2FubmEtcmVqZWN0ZWQtaWNvbi10ZW1wbGF0ZS9hbm5hLXJlamVjdGVkLWljb24tdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFVbkUsTUFBTSxPQUFPLGlDQUFpQzsrR0FBakMsaUNBQWlDO21HQUFqQyxpQ0FBaUMsNEZDWDlDLHV6Q0F3QkEsMEREZmMsZ0JBQWdCOzs0RkFFakIsaUNBQWlDO2tCQVI3QyxTQUFTOytCQUNJLGtDQUFrQyxtQkFHM0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJhbm5hLWNvcmUtcmVqZWN0ZWQtaWNvbi10ZW1wbGF0ZVwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9hbm5hLXJlamVjdGVkLWljb24tdGVtcGxhdGUuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiLi9hbm5hLXJlamVjdGVkLWljb24tdGVtcGxhdGUuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hUmVqZWN0ZWRJY29uVGVtcGxhdGVDb21wb25lbnQge31cclxuIiwiPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJyZWplY3RlZEljb25cIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmVqZWN0ZWRJY29uPlxyXG4gICAgPHN2Z1xyXG4gICAgICAgIHdpZHRoPVwiMTVweFwiXHJcbiAgICAgICAgaGVpZ2h0PVwiMTVweFwiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICA+XHJcbiAgICAgICAgPGdcclxuICAgICAgICAgICAgaWQ9XCJCdXllci1yZWplY3RlZC1pY29uXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwibm9uZVwiXHJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjFcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMTUuNzgyMjI2Niw0LjIxNzc3MzQ0IEMxNC4zNjcxODc1LDIuODAyNzYzNjcgMTIuNDk1MTQ2NSwyIDEwLjUsMiBDNi4zNzkxODk0NSwyIDMsNS4zNzI1MzkwNiAzLDkuNSBDMywxMy42Mjk2Mjg5IDYuMzcxMzM3ODksMTcgMTAuNSwxNyBDMTQuNjEwNTI3MywxNyAxOCwxMy42NDI5MDA0IDE4LDkuNSBDMTgsNy41MDQ4NTM1MiAxNy4xOTcyNjU2LDUuNjMyNzgzMiAxNS43ODIyMjY2LDQuMjE3NzczNDQgWiBNMTAuNSwxNS4yMTI4OTA2IEM3LjM0MjIwNzAzLDE1LjIxMjg5MDYgNC43ODcxMDkzOCwxMi42NjQ1MDIgNC43ODcxMDkzOCw5LjUgQzQuNzg3MTA5MzgsOC4yNjk1MDE5NSA1LjE3MzgyODEyLDcuMTAwNTU2NjQgNS44ODU3NDIxOSw2LjEzMzc1OTc3IEwxMy44NjYyNDAyLDE0LjEwNTQzOTUgQzEyLjg5OTM4NDgsMTQuODI2MTcxOSAxMS43MzA0OTgsMTUuMjEyODkwNiAxMC41LDE1LjIxMjg5MDYgWiBNMTUuMTA1NDY4OCwxMi44NjYxODE2IEw3LjEzMzc1OTc3LDQuODg1NzQyMTkgQzguMTAwNjE1MjMsNC4xNzM4MjgxMyA5LjI2OTUwMTk1LDMuNzg3MTA5MzggMTAuNSwzLjc4NzEwOTM4IEMxMy42NTc4ODA5LDMuNzg3MTA5MzggMTYuMjEyODkwNiw2LjMzNTQ5ODA1IDE2LjIxMjg5MDYsOS41IEMxNi4yMTI4OTA2LDEwLjczMDQzOTUgMTUuODI2MTcxOSwxMS44OTkzODQ4IDE1LjEwNTQ2ODgsMTIuODY2MTgxNiBaXCJcclxuICAgICAgICAgICAgICAgIGlkPVwiU2hhcGVcIlxyXG4gICAgICAgICAgICAgICAgZmlsbD1cIiM0QTRBNEFcIlxyXG4gICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwibm9uemVyb1wiXHJcbiAgICAgICAgICAgID48L3BhdGg+XHJcbiAgICAgICAgPC9nPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from "@angular/core";
3
+ import { AnnaSpinnerLoaderService } from "../../services/anna-spinner-loader.service";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/anna-spinner-loader.service";
6
+ import * as i2 from "@angular/common";
7
+ export class AnnaSpinnerLoaderComponent {
8
+ constructor(loaderService, cdref) {
9
+ this.loaderService = loaderService;
10
+ this.cdref = cdref;
11
+ this.loading = false;
12
+ }
13
+ ngOnInit() {
14
+ this.loaderService.loaderState.subscribe((state) => {
15
+ this.loading = state;
16
+ this.cdref.markForCheck();
17
+ });
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnnaSpinnerLoaderComponent, deps: [{ token: i1.AnnaSpinnerLoaderService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AnnaSpinnerLoaderComponent, isStandalone: true, selector: "anna-core-spinner-loader", ngImport: i0, template: "<div\r\n *ngIf=\"loading\"\r\n class=\"loading\"\r\n>\r\n <div class=\"app-spinner-container\">\r\n <div class=\"ngx-foreground-spinner\">\r\n <div class=\"sk-three-strings\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".loading{z-index:99998!important;background-color:#282828cc;cursor:progress;opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnnaSpinnerLoaderComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: "anna-core-spinner-loader", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n *ngIf=\"loading\"\r\n class=\"loading\"\r\n>\r\n <div class=\"app-spinner-container\">\r\n <div class=\"ngx-foreground-spinner\">\r\n <div class=\"sk-three-strings\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".loading{z-index:99998!important;background-color:#282828cc;cursor:progress;opacity:1}\n"] }]
25
+ }], ctorParameters: () => [{ type: i1.AnnaSpinnerLoaderService }, { type: i0.ChangeDetectorRef }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1zcGlubmVyLWxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9jb21wb25lbnRzL2FubmEtc3Bpbm5lci1sb2FkZXIvYW5uYS1zcGlubmVyLWxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9jb21wb25lbnRzL2FubmEtc3Bpbm5lci1sb2FkZXIvYW5uYS1zcGlubmVyLWxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU5RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7OztBQVV0RixNQUFNLE9BQU8sMEJBQTBCO0lBR25DLFlBQ1ksYUFBdUMsRUFDdkMsS0FBd0I7UUFEeEIsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBSnBDLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFLYixDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQWJRLDBCQUEwQjttR0FBMUIsMEJBQTBCLG9GQ2J2Qyw2V0FjQSxpSkROYyxZQUFZOzs0RkFLYiwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0ksMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IEFubmFTcGlubmVyTG9hZGVyU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hbm5hLXNwaW5uZXItbG9hZGVyLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiYW5uYS1jb3JlLXNwaW5uZXItbG9hZGVyXCIsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2FubmEtc3Bpbm5lci1sb2FkZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiLi9hbm5hLXNwaW5uZXItbG9hZGVyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hU3Bpbm5lckxvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBsb2FkZXJTZXJ2aWNlOiBBbm5hU3Bpbm5lckxvYWRlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjZHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICApIHt9XHJcbiAgICBcclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMubG9hZGVyU2VydmljZS5sb2FkZXJTdGF0ZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHN0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLmNkcmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAgICpuZ0lmPVwibG9hZGluZ1wiXHJcbiAgICBjbGFzcz1cImxvYWRpbmdcIlxyXG4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwLXNwaW5uZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5neC1mb3JlZ3JvdW5kLXNwaW5uZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrLXRocmVlLXN0cmluZ3NcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export class AnnaApplicationConstants {
2
+ static { this.PayForPerformanceEasyFilter = "PoD"; }
3
+ static { this.AnnaOrderEntryEasyFilter = "ANNA ORDER ENTRY"; }
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1hcHBsaWNhdGlvbi5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9jb25zdGFudHMvYW5uYS1hcHBsaWNhdGlvbi5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHdCQUF3QjthQUNqQixnQ0FBMkIsR0FBRyxLQUFLLENBQUM7YUFDcEMsNkJBQXdCLEdBQUcsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQW5uYUFwcGxpY2F0aW9uQ29uc3RhbnRzIHtcclxuICAgIHN0YXRpYyByZWFkb25seSBQYXlGb3JQZXJmb3JtYW5jZUVhc3lGaWx0ZXIgPSBcIlBvRFwiO1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IEFubmFPcmRlckVudHJ5RWFzeUZpbHRlciA9IFwiQU5OQSBPUkRFUiBFTlRSWVwiO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,49 @@
1
+ export class Constants {
2
+ static { this.SUCCESS_STRING = "success"; }
3
+ static { this.BACKEND_SERVER_URL = "/server/public/index.php/api"; }
4
+ static { this.ERROR_MSG = "Error occurred please try again."; }
5
+ static { this.NO_DATA_MSG = "No data to display"; }
6
+ static { this.SERVER_ERROR = "Server error. Please try Again"; }
7
+ static { this.USER_ORIGIN = "ANNA"; }
8
+ static { this.ACTIVE_USER_STATUS = "active"; }
9
+ static { this.DELETED_USER_STATUS = "deleted"; }
10
+ static { this.INACTIVE_USER_STATUS = "inactive"; }
11
+ static { this.OGAdminRole = "Ownership Group Admin"; }
12
+ static { this.ASARole = "Anna Station Admin"; }
13
+ static { this.dollars = "$"; }
14
+ static { this.SERVER_ERROR_MSG = "Something went wrong! Please try again"; }
15
+ }
16
+ export class ErrorCodes {
17
+ static { this.BAD_REQUEST = 400; }
18
+ static { this.SERVER_ERROR = 500; }
19
+ static { this.SUCCESS_CODE = 200; }
20
+ static { this.SUCCESS_CODE_GET = 200; }
21
+ static { this.SUCCESS_CODE_POST = 201; }
22
+ static { this.SUCCESS_CODE_PATCH = 204; }
23
+ static { this.NO_CONTENT = 204; }
24
+ static { this.under_review = 409; }
25
+ static { this.UNAUTHORIZED_ACCESS = 401; }
26
+ }
27
+ export var Days;
28
+ (function (Days) {
29
+ Days[Days["M"] = 1] = "M";
30
+ Days[Days["Tu"] = 2] = "Tu";
31
+ Days[Days["We"] = 3] = "We";
32
+ Days[Days["Th"] = 4] = "Th";
33
+ Days[Days["F"] = 5] = "F";
34
+ Days[Days["Sa"] = 6] = "Sa";
35
+ Days[Days["Su"] = 7] = "Su";
36
+ })(Days || (Days = {}));
37
+ export class OrderSources {
38
+ static { this.Medialine = "Medialine"; }
39
+ static { this.Non_electronic = "Non electronic"; }
40
+ static { this.Others = "Others"; }
41
+ static { this.WOC_unlinked = "WOC Unlinked"; }
42
+ static { this.WOC_linked = "WOC Linked"; }
43
+ static { this.WOZ = "WOZ"; }
44
+ static { this.Darwin = "Darwin"; }
45
+ }
46
+ export class ANNAIconNames {
47
+ static { this.AutomationActivatedIconName = "anna-automation-activated-icon mdi mdi-cog-refresh"; }
48
+ }
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmNvbnN0YW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1jb3JlLXNoYXJlZC1saWIvY29uc3RhbnRzL3NoYXJlZC5jb25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sU0FBUzthQUNGLG1CQUFjLEdBQUcsU0FBUyxDQUFDO2FBQzNCLHVCQUFrQixHQUFHLDhCQUE4QixDQUFDO2FBQ3BELGNBQVMsR0FBRyxrQ0FBa0MsQ0FBQzthQUMvQyxnQkFBVyxHQUFHLG9CQUFvQixDQUFDO2FBQ25DLGlCQUFZLEdBQUcsZ0NBQWdDLENBQUM7YUFDaEQsZ0JBQVcsR0FBRyxNQUFNLENBQUM7YUFDckIsdUJBQWtCLEdBQUcsUUFBUSxDQUFDO2FBQzlCLHdCQUFtQixHQUFHLFNBQVMsQ0FBQzthQUNoQyx5QkFBb0IsR0FBRyxVQUFVLENBQUM7YUFDbEMsZ0JBQVcsR0FBRyx1QkFBdUIsQ0FBQzthQUN0QyxZQUFPLEdBQUcsb0JBQW9CLENBQUM7YUFDL0IsWUFBTyxHQUFHLEdBQUcsQ0FBQzthQUNkLHFCQUFnQixHQUFHLHdDQUF3QyxDQUFDOztBQUdoRixNQUFNLE9BQU8sVUFBVTthQUNILGdCQUFXLEdBQUcsR0FBRyxDQUFDO2FBQ2xCLGlCQUFZLEdBQUcsR0FBRyxDQUFDO2FBQ25CLGlCQUFZLEdBQUcsR0FBRyxDQUFDO2FBQ25CLHFCQUFnQixHQUFHLEdBQUcsQ0FBQzthQUN2QixzQkFBaUIsR0FBRyxHQUFHLENBQUM7YUFDeEIsdUJBQWtCLEdBQUcsR0FBRyxDQUFDO2FBQ3pCLGVBQVUsR0FBRyxHQUFHLENBQUM7YUFDakIsaUJBQVksR0FBRyxHQUFHLENBQUM7YUFDbkIsd0JBQW1CLEdBQUcsR0FBRyxDQUFDOztBQUc5QyxNQUFNLENBQU4sSUFBWSxJQVFYO0FBUkQsV0FBWSxJQUFJO0lBQ1oseUJBQUssQ0FBQTtJQUNMLDJCQUFNLENBQUE7SUFDTiwyQkFBTSxDQUFBO0lBQ04sMkJBQU0sQ0FBQTtJQUNOLHlCQUFLLENBQUE7SUFDTCwyQkFBTSxDQUFBO0lBQ04sMkJBQU0sQ0FBQTtBQUNWLENBQUMsRUFSVyxJQUFJLEtBQUosSUFBSSxRQVFmO0FBRUQsTUFBTSxPQUFPLFlBQVk7YUFDTCxjQUFTLEdBQUcsV0FBVyxDQUFDO2FBQ3hCLG1CQUFjLEdBQUcsZ0JBQWdCLENBQUM7YUFDbEMsV0FBTSxHQUFHLFFBQVEsQ0FBQzthQUNsQixpQkFBWSxHQUFHLGNBQWMsQ0FBQzthQUM5QixlQUFVLEdBQUcsWUFBWSxDQUFDO2FBQzFCLFFBQUcsR0FBRyxLQUFLLENBQUM7YUFDWixXQUFNLEdBQUcsUUFBUSxDQUFDOztBQUd0QyxNQUFNLE9BQU8sYUFBYTthQUNOLGdDQUEyQixHQUFHLG9EQUFvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIENvbnN0YW50cyB7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgU1VDQ0VTU19TVFJJTkcgPSBcInN1Y2Nlc3NcIjtcclxuICAgIHN0YXRpYyByZWFkb25seSBCQUNLRU5EX1NFUlZFUl9VUkwgPSBcIi9zZXJ2ZXIvcHVibGljL2luZGV4LnBocC9hcGlcIjtcclxuICAgIHN0YXRpYyByZWFkb25seSBFUlJPUl9NU0cgPSBcIkVycm9yIG9jY3VycmVkIHBsZWFzZSB0cnkgYWdhaW4uXCI7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgTk9fREFUQV9NU0cgPSBcIk5vIGRhdGEgdG8gZGlzcGxheVwiO1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IFNFUlZFUl9FUlJPUiA9IFwiU2VydmVyIGVycm9yLiBQbGVhc2UgdHJ5IEFnYWluXCI7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgVVNFUl9PUklHSU4gPSBcIkFOTkFcIjtcclxuICAgIHN0YXRpYyByZWFkb25seSBBQ1RJVkVfVVNFUl9TVEFUVVMgPSBcImFjdGl2ZVwiO1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IERFTEVURURfVVNFUl9TVEFUVVMgPSBcImRlbGV0ZWRcIjtcclxuICAgIHN0YXRpYyByZWFkb25seSBJTkFDVElWRV9VU0VSX1NUQVRVUyA9IFwiaW5hY3RpdmVcIjtcclxuICAgIHN0YXRpYyByZWFkb25seSBPR0FkbWluUm9sZSA9IFwiT3duZXJzaGlwIEdyb3VwIEFkbWluXCI7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgQVNBUm9sZSA9IFwiQW5uYSBTdGF0aW9uIEFkbWluXCI7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgZG9sbGFycyA9IFwiJFwiO1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IFNFUlZFUl9FUlJPUl9NU0cgPSBcIlNvbWV0aGluZyB3ZW50IHdyb25nISBQbGVhc2UgdHJ5IGFnYWluXCI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFcnJvckNvZGVzIHtcclxuICAgIHN0YXRpYyByZWFkb25seSBCQURfUkVRVUVTVCA9IDQwMDtcclxuICAgIHN0YXRpYyByZWFkb25seSBTRVJWRVJfRVJST1IgPSA1MDA7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgU1VDQ0VTU19DT0RFID0gMjAwO1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IFNVQ0NFU1NfQ09ERV9HRVQgPSAyMDA7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgU1VDQ0VTU19DT0RFX1BPU1QgPSAyMDE7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgU1VDQ0VTU19DT0RFX1BBVENIID0gMjA0O1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IE5PX0NPTlRFTlQgPSAyMDQ7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgdW5kZXJfcmV2aWV3ID0gNDA5O1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IFVOQVVUSE9SSVpFRF9BQ0NFU1MgPSA0MDE7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIERheXMge1xyXG4gICAgTSA9IDEsXHJcbiAgICBUdSA9IDIsXHJcbiAgICBXZSA9IDMsXHJcbiAgICBUaCA9IDQsXHJcbiAgICBGID0gNSxcclxuICAgIFNhID0gNixcclxuICAgIFN1ID0gNyxcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE9yZGVyU291cmNlcyB7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgTWVkaWFsaW5lID0gXCJNZWRpYWxpbmVcIjtcclxuICAgIHN0YXRpYyByZWFkb25seSBOb25fZWxlY3Ryb25pYyA9IFwiTm9uIGVsZWN0cm9uaWNcIjtcclxuICAgIHN0YXRpYyByZWFkb25seSBPdGhlcnMgPSBcIk90aGVyc1wiO1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IFdPQ191bmxpbmtlZCA9IFwiV09DIFVubGlua2VkXCI7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgV09DX2xpbmtlZCA9IFwiV09DIExpbmtlZFwiO1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IFdPWiA9IFwiV09aXCI7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgRGFyd2luID0gXCJEYXJ3aW5cIjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFOTkFJY29uTmFtZXMge1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IEF1dG9tYXRpb25BY3RpdmF0ZWRJY29uTmFtZSA9IFwiYW5uYS1hdXRvbWF0aW9uLWFjdGl2YXRlZC1pY29uIG1kaSBtZGktY29nLXJlZnJlc2hcIjtcclxufVxyXG4iXX0=
@@ -0,0 +1,271 @@
1
+ import { Directive, ElementRef, HostListener, Input } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class DigitOnlyDirective {
4
+ constructor(el) {
5
+ this.el = el;
6
+ this.hasDecimalPoint = false;
7
+ this.hasNegativeSign = false;
8
+ this.navigationKeys = [
9
+ "Backspace",
10
+ "Delete",
11
+ "Tab",
12
+ "Escape",
13
+ "Enter",
14
+ "Home",
15
+ "End",
16
+ "ArrowLeft",
17
+ "ArrowRight",
18
+ "Clear",
19
+ "Copy",
20
+ "Paste",
21
+ ];
22
+ this.decimal = false;
23
+ this.decimalSeparator = ".";
24
+ this.allowNegatives = false;
25
+ this.allowPaste = true;
26
+ this.negativeSign = "-";
27
+ this.min = -Infinity;
28
+ this.max = Infinity;
29
+ this.regex = null;
30
+ this.inputElement = el.nativeElement;
31
+ }
32
+ ngOnChanges(changes) {
33
+ if (changes.pattern) {
34
+ this.regex = this.pattern ? RegExp(this.pattern) : null;
35
+ }
36
+ if (changes.min) {
37
+ const maybeMin = Number(this.min);
38
+ this.min = Number.isNaN(maybeMin) ? -Infinity : maybeMin;
39
+ }
40
+ if (changes.max) {
41
+ const maybeMax = Number(this.max);
42
+ this.max = Number.isNaN(maybeMax) ? Infinity : maybeMax;
43
+ }
44
+ }
45
+ onBeforeInput(e) {
46
+ if (Number.isNaN(Number(e.data))) {
47
+ if (e.data === this.decimalSeparator || (e.data === this.negativeSign && this.allowNegatives)) {
48
+ return; // go on
49
+ }
50
+ e.preventDefault();
51
+ e.stopPropagation();
52
+ }
53
+ }
54
+ onKeyDown(e) {
55
+ if (this.navigationKeys.indexOf(e.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.
56
+ ((e.key === "a" || e.code === "KeyA") && e.ctrlKey === true) || // Allow: Ctrl+A
57
+ ((e.key === "c" || e.code === "KeyC") && e.ctrlKey === true) || // Allow: Ctrl+C
58
+ ((e.key === "v" || e.code === "KeyV") && e.ctrlKey === true) || // Allow: Ctrl+V
59
+ ((e.key === "x" || e.code === "KeyX") && e.ctrlKey === true) || // Allow: Ctrl+X
60
+ ((e.key === "a" || e.code === "KeyA") && e.metaKey === true) || // Allow: Cmd+A (Mac)
61
+ ((e.key === "c" || e.code === "KeyC") && e.metaKey === true) || // Allow: Cmd+C (Mac)
62
+ ((e.key === "v" || e.code === "KeyV") && e.metaKey === true) || // Allow: Cmd+V (Mac)
63
+ ((e.key === "x" || e.code === "KeyX") && e.metaKey === true) // Allow: Cmd+X (Mac)
64
+ ) {
65
+ // let it happen, don't do anything
66
+ return;
67
+ }
68
+ let newValue = "";
69
+ if (this.decimal && e.key === this.decimalSeparator) {
70
+ newValue = this.forecastValue(e.key);
71
+ const onlyWhitespaceOrEmpty = newValue.trim() === this.decimalSeparator || newValue.trim() === "";
72
+ if (onlyWhitespaceOrEmpty || newValue.startsWith(this.decimalSeparator)) {
73
+ e.preventDefault();
74
+ return;
75
+ }
76
+ if (newValue.split(this.decimalSeparator).length > 2) {
77
+ // has two or more decimal points
78
+ e.preventDefault();
79
+ return;
80
+ }
81
+ this.hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;
82
+ return; // Allow: only one decimal point
83
+ }
84
+ if (e.key === this.negativeSign && this.allowNegatives) {
85
+ newValue = this.forecastValue(e.key);
86
+ if (newValue.charAt(0) !== this.negativeSign || newValue.split(this.negativeSign).length > 2) {
87
+ e.preventDefault();
88
+ return;
89
+ }
90
+ this.hasNegativeSign = newValue.split(this.negativeSign).length > -1;
91
+ return;
92
+ }
93
+ // Ensure that it is a number and stop the keypress
94
+ if (e.key === " " || Number.isNaN(Number(e.key))) {
95
+ e.preventDefault();
96
+ return;
97
+ }
98
+ newValue = newValue || this.forecastValue(e.key);
99
+ // check the input pattern RegExp
100
+ if (this.regex) {
101
+ if (!this.regex.test(newValue)) {
102
+ e.preventDefault();
103
+ return;
104
+ }
105
+ }
106
+ const newNumber = Number(newValue);
107
+ if (newNumber > this.max || newNumber < this.min) {
108
+ e.preventDefault();
109
+ }
110
+ }
111
+ onPaste(event) {
112
+ if (this.allowPaste === true) {
113
+ let pastedInput = "";
114
+ if (window.clipboardData) {
115
+ // Browser is IE
116
+ pastedInput = window.clipboardData.getData("text");
117
+ }
118
+ else if (event.clipboardData && event.clipboardData.getData) {
119
+ // Other browsers
120
+ pastedInput = event.clipboardData.getData("text/plain");
121
+ }
122
+ this.pasteData(pastedInput);
123
+ event.preventDefault();
124
+ }
125
+ else {
126
+ // this prevents the paste
127
+ event.preventDefault();
128
+ event.stopPropagation();
129
+ }
130
+ }
131
+ onDrop(event) {
132
+ const textData = event.dataTransfer?.getData("text") ?? "";
133
+ this.inputElement.focus();
134
+ this.pasteData(textData);
135
+ event.preventDefault();
136
+ }
137
+ pasteData(pastedContent) {
138
+ const sanitizedContent = this.sanitizeInput(pastedContent);
139
+ if (sanitizedContent.includes(this.negativeSign) &&
140
+ this.hasNegativeSign &&
141
+ !this.getSelection().includes(this.negativeSign)) {
142
+ return;
143
+ }
144
+ const pasted = document.execCommand("insertText", false, sanitizedContent);
145
+ if (!pasted) {
146
+ if (this.inputElement.setRangeText) {
147
+ const { selectionStart: start, selectionEnd: end } = this.inputElement;
148
+ this.inputElement.setRangeText(sanitizedContent, start ?? 0, end ?? 0, "end");
149
+ // Angular's Reactive Form relies on "input" event, but on Firefox,
150
+ // the setRangeText method doesn't trigger it
151
+ // so we have to trigger it ourself.
152
+ if (typeof window.InstallTrigger !== "undefined") {
153
+ this.inputElement.dispatchEvent(new Event("input", { cancelable: true }));
154
+ }
155
+ }
156
+ else {
157
+ // Browser does not support setRangeText, e.g. IE
158
+ this.insertAtCursor(this.inputElement, sanitizedContent);
159
+ }
160
+ }
161
+ if (this.decimal) {
162
+ this.hasDecimalPoint = this.inputElement.value.indexOf(this.decimalSeparator) > -1;
163
+ }
164
+ this.hasNegativeSign = this.inputElement.value.indexOf(this.negativeSign) > -1;
165
+ }
166
+ // The following 2 methods were added from the below article for browsers that do not support setRangeText
167
+ // https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position
168
+ insertAtCursor(myField, myValue) {
169
+ const startPos = myField.selectionStart ?? 0;
170
+ const endPos = myField.selectionEnd ?? 0;
171
+ myField.value =
172
+ myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
173
+ const pos = startPos + myValue.length;
174
+ myField.focus();
175
+ myField.setSelectionRange(pos, pos);
176
+ this.triggerEvent(myField, "input");
177
+ }
178
+ triggerEvent(el, type) {
179
+ if ("createEvent" in document) {
180
+ // modern browsers, IE9+
181
+ const e = document.createEvent("HTMLEvents");
182
+ e.initEvent(type, false, true);
183
+ el.dispatchEvent(e);
184
+ }
185
+ }
186
+ // end stack overflow code
187
+ sanitizeInput(input) {
188
+ let result = "";
189
+ let regex;
190
+ if (this.decimal && this.isValidDecimal(input)) {
191
+ regex = new RegExp(`${this.getNegativeSignRegExp()}[^0-9${this.decimalSeparator}]`, "g");
192
+ }
193
+ else {
194
+ regex = new RegExp(`${this.getNegativeSignRegExp()}[^0-9]`, "g");
195
+ }
196
+ result = input.replace(regex, "");
197
+ const { maxLength } = this.inputElement;
198
+ if (maxLength > 0) {
199
+ // the input element has maxLength limit
200
+ const allowedLength = maxLength - this.inputElement.value.length + (result.includes(`${this.negativeSign}`) ? 1 : 0);
201
+ result = allowedLength > 0 ? result.substring(0, allowedLength) : "";
202
+ }
203
+ return result;
204
+ }
205
+ getNegativeSignRegExp() {
206
+ return this.allowNegatives && (!this.hasNegativeSign || this.getSelection().includes(this.negativeSign))
207
+ ? `(?!^${this.negativeSign})`
208
+ : "";
209
+ }
210
+ isValidDecimal(string) {
211
+ if (!this.hasDecimalPoint) {
212
+ return string.split(this.decimalSeparator).length <= 2;
213
+ }
214
+ // the input element already has a decimal separator
215
+ const selectedText = this.getSelection();
216
+ if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {
217
+ return string.split(this.decimalSeparator).length <= 2;
218
+ }
219
+ return string.indexOf(this.decimalSeparator) < 0;
220
+ }
221
+ getSelection() {
222
+ return this.inputElement.value.substring(this.inputElement.selectionStart ?? 0, this.inputElement.selectionEnd ?? 0);
223
+ }
224
+ forecastValue(key) {
225
+ const { selectionStart } = this.inputElement;
226
+ const { selectionEnd } = this.inputElement;
227
+ const oldValue = this.inputElement.value;
228
+ if (selectionStart == null && selectionEnd == null) {
229
+ return oldValue + key;
230
+ }
231
+ return oldValue.substring(0, selectionStart) + key + oldValue.substring(selectionEnd);
232
+ }
233
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DigitOnlyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
234
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: DigitOnlyDirective, isStandalone: true, selector: "[annaCoreDigitOnly]", inputs: { decimal: "decimal", decimalSeparator: "decimalSeparator", allowNegatives: "allowNegatives", allowPaste: "allowPaste", negativeSign: "negativeSign", min: "min", max: "max", pattern: "pattern" }, host: { listeners: { "beforeinput": "onBeforeInput($event)", "keydown": "onKeyDown($event)", "paste": "onPaste($event)", "drop": "onDrop($event)" } }, usesOnChanges: true, ngImport: i0 }); }
235
+ }
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DigitOnlyDirective, decorators: [{
237
+ type: Directive,
238
+ args: [{
239
+ selector: "[annaCoreDigitOnly]",
240
+ standalone: true,
241
+ }]
242
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { decimal: [{
243
+ type: Input
244
+ }], decimalSeparator: [{
245
+ type: Input
246
+ }], allowNegatives: [{
247
+ type: Input
248
+ }], allowPaste: [{
249
+ type: Input
250
+ }], negativeSign: [{
251
+ type: Input
252
+ }], min: [{
253
+ type: Input
254
+ }], max: [{
255
+ type: Input
256
+ }], pattern: [{
257
+ type: Input
258
+ }], onBeforeInput: [{
259
+ type: HostListener,
260
+ args: ["beforeinput", ["$event"]]
261
+ }], onKeyDown: [{
262
+ type: HostListener,
263
+ args: ["keydown", ["$event"]]
264
+ }], onPaste: [{
265
+ type: HostListener,
266
+ args: ["paste", ["$event"]]
267
+ }], onDrop: [{
268
+ type: HostListener,
269
+ args: ["drop", ["$event"]]
270
+ }] } });
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXRzLW9ubHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1jb3JlLXNoYXJlZC1saWIvZGlyZWN0aXZlcy9kaWdpdHMtb25seS9kaWdpdHMtb25seS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7O0FBTXJHLE1BQU0sT0FBTyxrQkFBa0I7SUE2QjNCLFlBQW1CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBNUJ6QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixtQkFBYyxHQUFHO1lBQ3JCLFdBQVc7WUFDWCxRQUFRO1lBQ1IsS0FBSztZQUNMLFFBQVE7WUFDUixPQUFPO1lBQ1AsTUFBTTtZQUNOLEtBQUs7WUFDTCxXQUFXO1lBQ1gsWUFBWTtZQUNaLE9BQU87WUFDUCxNQUFNO1lBQ04sT0FBTztTQUNWLENBQUM7UUFFTyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLHFCQUFnQixHQUFHLEdBQUcsQ0FBQztRQUN2QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ25CLFFBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUNoQixRQUFHLEdBQUcsUUFBUSxDQUFDO1FBRWhCLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBSWhDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVELENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM1RCxDQUFDO0lBQ0wsQ0FBQztJQUdELGFBQWEsQ0FBQyxDQUFhO1FBQ3ZCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUM1RixPQUFPLENBQUMsUUFBUTtZQUNwQixDQUFDO1lBQ0QsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0wsQ0FBQztJQUdELFNBQVMsQ0FBQyxDQUFnQjtRQUN0QixJQUNJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSx5REFBeUQ7WUFDcEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxnQkFBZ0I7WUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxnQkFBZ0I7WUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxnQkFBZ0I7WUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxnQkFBZ0I7WUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxxQkFBcUI7WUFDckYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxxQkFBcUI7WUFDckYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FB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QXNCakMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW2FubmFDb3JlRGlnaXRPbmx5XVwiLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERpZ2l0T25seURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgICBwcml2YXRlIGhhc0RlY2ltYWxQb2ludCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBoYXNOZWdhdGl2ZVNpZ24gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgbmF2aWdhdGlvbktleXMgPSBbXHJcbiAgICAgICAgXCJCYWNrc3BhY2VcIixcclxuICAgICAgICBcIkRlbGV0ZVwiLFxyXG4gICAgICAgIFwiVGFiXCIsXHJcbiAgICAgICAgXCJFc2NhcGVcIixcclxuICAgICAgICBcIkVudGVyXCIsXHJcbiAgICAgICAgXCJIb21lXCIsXHJcbiAgICAgICAgXCJFbmRcIixcclxuICAgICAgICBcIkFycm93TGVmdFwiLFxyXG4gICAgICAgIFwiQXJyb3dSaWdodFwiLFxyXG4gICAgICAgIFwiQ2xlYXJcIixcclxuICAgICAgICBcIkNvcHlcIixcclxuICAgICAgICBcIlBhc3RlXCIsXHJcbiAgICBdO1xyXG5cclxuICAgIEBJbnB1dCgpIGRlY2ltYWwgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRlY2ltYWxTZXBhcmF0b3IgPSBcIi5cIjtcclxuICAgIEBJbnB1dCgpIGFsbG93TmVnYXRpdmVzID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBhbGxvd1Bhc3RlID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIG5lZ2F0aXZlU2lnbiA9IFwiLVwiO1xyXG4gICAgQElucHV0KCkgbWluID0gLUluZmluaXR5O1xyXG4gICAgQElucHV0KCkgbWF4ID0gSW5maW5pdHk7XHJcbiAgICBASW5wdXQoKSBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xyXG4gICAgcHJpdmF0ZSByZWdleDogUmVnRXhwIHwgbnVsbCA9IG51bGw7XHJcbiAgICBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQgPSBlbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5wYXR0ZXJuKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVnZXggPSB0aGlzLnBhdHRlcm4gPyBSZWdFeHAodGhpcy5wYXR0ZXJuKSA6IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlcy5taW4pIHtcclxuICAgICAgICAgICAgY29uc3QgbWF5YmVNaW4gPSBOdW1iZXIodGhpcy5taW4pO1xyXG4gICAgICAgICAgICB0aGlzLm1pbiA9IE51bWJlci5pc05hTihtYXliZU1pbikgPyAtSW5maW5pdHkgOiBtYXliZU1pbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzLm1heCkge1xyXG4gICAgICAgICAgICBjb25zdCBtYXliZU1heCA9IE51bWJlcih0aGlzLm1heCk7XHJcbiAgICAgICAgICAgIHRoaXMubWF4ID0gTnVtYmVyLmlzTmFOKG1heWJlTWF4KSA/IEluZmluaXR5IDogbWF5YmVNYXg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoXCJiZWZvcmVpbnB1dFwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgICBvbkJlZm9yZUlucHV0KGU6IElucHV0RXZlbnQpOiBhbnkge1xyXG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oTnVtYmVyKGUuZGF0YSkpKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmRhdGEgPT09IHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCAoZS5kYXRhID09PSB0aGlzLm5lZ2F0aXZlU2lnbiAmJiB0aGlzLmFsbG93TmVnYXRpdmVzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBnbyBvblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd25cIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgb25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpOiBhbnkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uS2V5cy5pbmRleE9mKGUua2V5KSA+IC0xIHx8IC8vIEFsbG93OiBuYXZpZ2F0aW9uIGtleXM6IGJhY2tzcGFjZSwgZGVsZXRlLCBhcnJvd3MgZXRjLlxyXG4gICAgICAgICAgICAoKGUua2V5ID09PSBcImFcIiB8fCBlLmNvZGUgPT09IFwiS2V5QVwiKSAmJiBlLmN0cmxLZXkgPT09IHRydWUpIHx8IC8vIEFsbG93OiBDdHJsK0FcclxuICAgICAgICAgICAgKChlLmtleSA9PT0gXCJjXCIgfHwgZS5jb2RlID09PSBcIktleUNcIikgJiYgZS5jdHJsS2V5ID09PSB0cnVlKSB8fCAvLyBBbGxvdzogQ3RybCtDXHJcbiAgICAgICAgICAgICgoZS5rZXkgPT09IFwidlwiIHx8IGUuY29kZSA9PT0gXCJLZXlWXCIpICYmIGUuY3RybEtleSA9PT0gdHJ1ZSkgfHwgLy8gQWxsb3c6IEN0cmwrVlxyXG4gICAgICAgICAgICAoKGUua2V5ID09PSBcInhcIiB8fCBlLmNvZGUgPT09IFwiS2V5WFwiKSAmJiBlLmN0cmxLZXkgPT09IHRydWUpIHx8IC8vIEFsbG93OiBDdHJsK1hcclxuICAgICAgICAgICAgKChlLmtleSA9PT0gXCJhXCIgfHwgZS5jb2RlID09PSBcIktleUFcIikgJiYgZS5tZXRhS2V5ID09PSB0cnVlKSB8fCAvLyBBbGxvdzogQ21kK0EgKE1hYylcclxuICAgICAgICAgICAgKChlLmtleSA9PT0gXCJjXCIgfHwgZS5jb2RlID09PSBcIktleUNcIikgJiYgZS5tZXRhS2V5ID09PSB0cnVlKSB8fCAvLyBBbGxvdzogQ21kK0MgKE1hYylcclxuICAgICAgICAgICAgKChlLmtleSA9PT0gXCJ2XCIgfHwgZS5jb2RlID09PSBcIktleVZcIikgJiYgZS5tZXRhS2V5ID09PSB0cnVlKSB8fCAvLyBBbGxvdzogQ21kK1YgKE1hYylcclxuICAgICAgICAgICAgKChlLmtleSA9PT0gXCJ4XCIgfHwgZS5jb2RlID09PSBcIktleVhcIikgJiYgZS5tZXRhS2V5ID09PSB0cnVlKSAvLyBBbGxvdzogQ21kK1ggKE1hYylcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgLy8gbGV0IGl0IGhhcHBlbiwgZG9uJ3QgZG8gYW55dGhpbmdcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gXCJcIjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGVjaW1hbCAmJiBlLmtleSA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yKSB7XHJcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5mb3JlY2FzdFZhbHVlKGUua2V5KTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG9ubHlXaGl0ZXNwYWNlT3JFbXB0eSA9IG5ld1ZhbHVlLnRyaW0oKSA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yIHx8IG5ld1ZhbHVlLnRyaW0oKSA9PT0gXCJcIjtcclxuICAgICAgICAgICAgaWYgKG9ubHlXaGl0ZXNwYWNlT3JFbXB0eSB8fCBuZXdWYWx1ZS5zdGFydHNXaXRoKHRoaXMuZGVjaW1hbFNlcGFyYXRvcikpIHtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlLnNwbGl0KHRoaXMuZGVjaW1hbFNlcGFyYXRvcikubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgICAgICAgLy8gaGFzIHR3byBvciBtb3JlIGRlY2ltYWwgcG9pbnRzXHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5oYXNEZWNpbWFsUG9pbnQgPSBuZXdWYWx1ZS5pbmRleE9mKHRoaXMuZGVjaW1hbFNlcGFyYXRvcikgPiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuOyAvLyBBbGxvdzogb25seSBvbmUgZGVjaW1hbCBwb2ludFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGUua2V5ID09PSB0aGlzLm5lZ2F0aXZlU2lnbiAmJiB0aGlzLmFsbG93TmVnYXRpdmVzKSB7XHJcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5mb3JlY2FzdFZhbHVlKGUua2V5KTtcclxuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlLmNoYXJBdCgwKSAhPT0gdGhpcy5uZWdhdGl2ZVNpZ24gfHwgbmV3VmFsdWUuc3BsaXQodGhpcy5uZWdhdGl2ZVNpZ24pLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmhhc05lZ2F0aXZlU2lnbiA9IG5ld1ZhbHVlLnNwbGl0KHRoaXMubmVnYXRpdmVTaWduKS5sZW5ndGggPiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRW5zdXJlIHRoYXQgaXQgaXMgYSBudW1iZXIgYW5kIHN0b3AgdGhlIGtleXByZXNzXHJcbiAgICAgICAgaWYgKGUua2V5ID09PSBcIiBcIiB8fCBOdW1iZXIuaXNOYU4oTnVtYmVyKGUua2V5KSkpIHtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlIHx8IHRoaXMuZm9yZWNhc3RWYWx1ZShlLmtleSk7XHJcbiAgICAgICAgLy8gY2hlY2sgdGhlIGlucHV0IHBhdHRlcm4gUmVnRXhwXHJcbiAgICAgICAgaWYgKHRoaXMucmVnZXgpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnJlZ2V4LnRlc3QobmV3VmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG5ld051bWJlciA9IE51bWJlcihuZXdWYWx1ZSk7XHJcbiAgICAgICAgaWYgKG5ld051bWJlciA+IHRoaXMubWF4IHx8IG5ld051bWJlciA8IHRoaXMubWluKSB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcInBhc3RlXCIsIFtcIiRldmVudFwiXSlcclxuICAgIG9uUGFzdGUoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmFsbG93UGFzdGUgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgbGV0IHBhc3RlZElucHV0OiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoKHdpbmRvdyBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9KS5jbGlwYm9hcmREYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBCcm93c2VyIGlzIElFXHJcbiAgICAgICAgICAgICAgICBwYXN0ZWRJbnB1dCA9ICh3aW5kb3cgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSkuY2xpcGJvYXJkRGF0YS5nZXREYXRhKFwidGV4dFwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jbGlwYm9hcmREYXRhICYmIGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSkge1xyXG4gICAgICAgICAgICAgICAgLy8gT3RoZXIgYnJvd3NlcnNcclxuICAgICAgICAgICAgICAgIHBhc3RlZElucHV0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKFwidGV4dC9wbGFpblwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5wYXN0ZURhdGEocGFzdGVkSW5wdXQpO1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMgcHJldmVudHMgdGhlIHBhc3RlXHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwiZHJvcFwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHRleHREYXRhID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5nZXREYXRhKFwidGV4dFwiKSA/PyBcIlwiO1xyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgdGhpcy5wYXN0ZURhdGEodGV4dERhdGEpO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwYXN0ZURhdGEocGFzdGVkQ29udGVudDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkQ29udGVudCA9IHRoaXMuc2FuaXRpemVJbnB1dChwYXN0ZWRDb250ZW50KTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHNhbml0aXplZENvbnRlbnQuaW5jbHVkZXModGhpcy5uZWdhdGl2ZVNpZ24pICYmXHJcbiAgICAgICAgICAgIHRoaXMuaGFzTmVnYXRpdmVTaWduICYmXHJcbiAgICAgICAgICAgICF0aGlzLmdldFNlbGVjdGlvbigpLmluY2x1ZGVzKHRoaXMubmVnYXRpdmVTaWduKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBhc3RlZCA9IGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiaW5zZXJ0VGV4dFwiLCBmYWxzZSwgc2FuaXRpemVkQ29udGVudCk7XHJcbiAgICAgICAgaWYgKCFwYXN0ZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50LnNldFJhbmdlVGV4dCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBzZWxlY3Rpb25TdGFydDogc3RhcnQsIHNlbGVjdGlvbkVuZDogZW5kIH0gPSB0aGlzLmlucHV0RWxlbWVudDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnNldFJhbmdlVGV4dChzYW5pdGl6ZWRDb250ZW50LCBzdGFydCA/PyAwLCBlbmQgPz8gMCwgXCJlbmRcIik7XHJcbiAgICAgICAgICAgICAgICAvLyBBbmd1bGFyJ3MgUmVhY3RpdmUgRm9ybSByZWxpZXMgb24gXCJpbnB1dFwiIGV2ZW50LCBidXQgb24gRmlyZWZveCxcclxuICAgICAgICAgICAgICAgIC8vIHRoZSBzZXRSYW5nZVRleHQgbWV0aG9kIGRvZXNuJ3QgdHJpZ2dlciBpdFxyXG4gICAgICAgICAgICAgICAgLy8gc28gd2UgaGF2ZSB0byB0cmlnZ2VyIGl0IG91cnNlbGYuXHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mICh3aW5kb3cgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSkuSW5zdGFsbFRyaWdnZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChcImlucHV0XCIsIHsgY2FuY2VsYWJsZTogdHJ1ZSB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgc2V0UmFuZ2VUZXh0LCBlLmcuIElFXHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydEF0Q3Vyc29yKHRoaXMuaW5wdXRFbGVtZW50LCBzYW5pdGl6ZWRDb250ZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5kZWNpbWFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzRGVjaW1hbFBvaW50ID0gdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBhcmF0b3IpID4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaGFzTmVnYXRpdmVTaWduID0gdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUuaW5kZXhPZih0aGlzLm5lZ2F0aXZlU2lnbikgPiAtMTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGUgZm9sbG93aW5nIDIgbWV0aG9kcyB3ZXJlIGFkZGVkIGZyb20gdGhlIGJlbG93IGFydGljbGUgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgc2V0UmFuZ2VUZXh0XHJcbiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMTA3Njk3NS9ob3ctdG8taW5zZXJ0LXRleHQtaW50by10aGUtdGV4dGFyZWEtYXQtdGhlLWN1cnJlbnQtY3Vyc29yLXBvc2l0aW9uXHJcbiAgICBwcml2YXRlIGluc2VydEF0Q3Vyc29yKG15RmllbGQ6IEhUTUxJbnB1dEVsZW1lbnQsIG15VmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0UG9zID0gbXlGaWVsZC5zZWxlY3Rpb25TdGFydCA/PyAwO1xyXG4gICAgICAgIGNvbnN0IGVuZFBvcyA9IG15RmllbGQuc2VsZWN0aW9uRW5kID8/IDA7XHJcblxyXG4gICAgICAgIG15RmllbGQudmFsdWUgPVxyXG4gICAgICAgICAgICBteUZpZWxkLnZhbHVlLnN1YnN0cmluZygwLCBzdGFydFBvcykgKyBteVZhbHVlICsgbXlGaWVsZC52YWx1ZS5zdWJzdHJpbmcoZW5kUG9zLCBteUZpZWxkLnZhbHVlLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBvcyA9IHN0YXJ0UG9zICsgbXlWYWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgbXlGaWVsZC5mb2N1cygpO1xyXG4gICAgICAgIG15RmllbGQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zLCBwb3MpO1xyXG5cclxuICAgICAgICB0aGlzLnRyaWdnZXJFdmVudChteUZpZWxkLCBcImlucHV0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdHJpZ2dlckV2ZW50KGVsOiBIVE1MSW5wdXRFbGVtZW50LCB0eXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoXCJjcmVhdGVFdmVudFwiIGluIGRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIC8vIG1vZGVybiBicm93c2VycywgSUU5K1xyXG4gICAgICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJIVE1MRXZlbnRzXCIpO1xyXG4gICAgICAgICAgICBlLmluaXRFdmVudCh0eXBlLCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGVsLmRpc3BhdGNoRXZlbnQoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZW5kIHN0YWNrIG92ZXJmbG93IGNvZGVcclxuXHJcbiAgICBwcml2YXRlIHNhbml0aXplSW5wdXQoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IFwiXCI7XHJcbiAgICAgICAgbGV0IHJlZ2V4O1xyXG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWwgJiYgdGhpcy5pc1ZhbGlkRGVjaW1hbChpbnB1dCkpIHtcclxuICAgICAgICAgICAgcmVnZXggPSBuZXcgUmVnRXhwKGAke3RoaXMuZ2V0TmVnYXRpdmVTaWduUmVnRXhwKCl9W14wLTkke3RoaXMuZGVjaW1hbFNlcGFyYXRvcn1dYCwgXCJnXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlZ2V4ID0gbmV3IFJlZ0V4cChgJHt0aGlzLmdldE5lZ2F0aXZlU2lnblJlZ0V4cCgpfVteMC05XWAsIFwiZ1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0ID0gaW5wdXQucmVwbGFjZShyZWdleCwgXCJcIik7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgbWF4TGVuZ3RoIH0gPSB0aGlzLmlucHV0RWxlbWVudDtcclxuICAgICAgICBpZiAobWF4TGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyB0aGUgaW5wdXQgZWxlbWVudCBoYXMgbWF4TGVuZ3RoIGxpbWl0XHJcbiAgICAgICAgICAgIGNvbnN0IGFsbG93ZWRMZW5ndGggPVxyXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoIC0gdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUubGVuZ3RoICsgKHJlc3VsdC5pbmNsdWRlcyhgJHt0aGlzLm5lZ2F0aXZlU2lnbn1gKSA/IDEgOiAwKTtcclxuICAgICAgICAgICAgcmVzdWx0ID0gYWxsb3dlZExlbmd0aCA+IDAgPyByZXN1bHQuc3Vic3RyaW5nKDAsIGFsbG93ZWRMZW5ndGgpIDogXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldE5lZ2F0aXZlU2lnblJlZ0V4cCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFsbG93TmVnYXRpdmVzICYmICghdGhpcy5oYXNOZWdhdGl2ZVNpZ24gfHwgdGhpcy5nZXRTZWxlY3Rpb24oKS5pbmNsdWRlcyh0aGlzLm5lZ2F0aXZlU2lnbikpXHJcbiAgICAgICAgICAgID8gYCg/IV4ke3RoaXMubmVnYXRpdmVTaWdufSlgXHJcbiAgICAgICAgICAgIDogXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzVmFsaWREZWNpbWFsKHN0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0RlY2ltYWxQb2ludCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnNwbGl0KHRoaXMuZGVjaW1hbFNlcGFyYXRvcikubGVuZ3RoIDw9IDI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoZSBpbnB1dCBlbGVtZW50IGFscmVhZHkgaGFzIGEgZGVjaW1hbCBzZXBhcmF0b3JcclxuICAgICAgICBjb25zdCBzZWxlY3RlZFRleHQgPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZFRleHQgJiYgc2VsZWN0ZWRUZXh0LmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcuc3BsaXQodGhpcy5kZWNpbWFsU2VwYXJhdG9yKS5sZW5ndGggPD0gMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0cmluZy5pbmRleE9mKHRoaXMuZGVjaW1hbFNlcGFyYXRvcikgPCAwO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0U2VsZWN0aW9uKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLnN1YnN0cmluZyhcclxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPz8gMCxcclxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kID8/IDAsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZvcmVjYXN0VmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQgfSA9IHRoaXMuaW5wdXRFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uRW5kIH0gPSB0aGlzLmlucHV0RWxlbWVudDtcclxuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlO1xyXG5cclxuICAgICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPT0gbnVsbCAmJiBzZWxlY3Rpb25FbmQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb2xkVmFsdWUgKyBrZXk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2xkVmFsdWUuc3Vic3RyaW5nKDAsIHNlbGVjdGlvblN0YXJ0KSArIGtleSArIG9sZFZhbHVlLnN1YnN0cmluZyhzZWxlY3Rpb25FbmQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { Directive, ElementRef, HostListener, Input, Renderer2 } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class FixedRowsPopupTableDirective {
4
+ constructor(el, renderer) {
5
+ this.el = el;
6
+ this.renderer = renderer;
7
+ this.popupRowHeight = 37.5;
8
+ this.popupHeaderHeight = 38;
9
+ this.maxRowsRenderedWithoutScrollForPopup = 10;
10
+ }
11
+ onWindowResize() {
12
+ this.setPopUpTableHeight();
13
+ }
14
+ ngOnInit() {
15
+ this.setPopUpTableHeight();
16
+ }
17
+ setPopUpTableHeight() {
18
+ const viewportHeight = window.innerHeight;
19
+ const maxNoOfRowsToDisplay = viewportHeight < 740 ? 5 : 10;
20
+ this.maxRowsRenderedWithoutScrollForPopup = maxNoOfRowsToDisplay;
21
+ const totalPopupTableHeight = this.maxRowsRenderedWithoutScrollForPopup * this.popupRowHeight + this.popupHeaderHeight;
22
+ const tableHeightForPopup = this.tableDataLength < this.maxRowsRenderedWithoutScrollForPopup
23
+ ? this.popupRowHeight * (this.tableDataLength ? this.tableDataLength : 1) + this.popupHeaderHeight
24
+ : totalPopupTableHeight;
25
+ this.renderer.setStyle(this.el.nativeElement, "max-height", `calc(${tableHeightForPopup}px)`);
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FixedRowsPopupTableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
28
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FixedRowsPopupTableDirective, isStandalone: true, selector: "[annaCoreFixedRowsInPopupTable]", inputs: { popupRowHeight: "popupRowHeight", popupHeaderHeight: "popupHeaderHeight", tableDataLength: "tableDataLength" }, host: { listeners: { "window:resize": "onWindowResize()" } }, ngImport: i0 }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FixedRowsPopupTableDirective, decorators: [{
31
+ type: Directive,
32
+ args: [{
33
+ selector: "[annaCoreFixedRowsInPopupTable]",
34
+ standalone: true,
35
+ }]
36
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { popupRowHeight: [{
37
+ type: Input
38
+ }], popupHeaderHeight: [{
39
+ type: Input
40
+ }], tableDataLength: [{
41
+ type: Input
42
+ }], onWindowResize: [{
43
+ type: HostListener,
44
+ args: ["window:resize"]
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtcm93cy1wb3B1cC10YWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9kaXJlY3RpdmVzL2ZpeGVkLXJvd3MtcG9wdXAtdGFibGUvZml4ZWQtcm93cy1wb3B1cC10YWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTlGLE1BQU0sT0FBTyw0QkFBNEI7SUFNckMsWUFDWSxFQUFjLEVBQ2QsUUFBbUI7UUFEbkIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFQdEIsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFDOUIsc0JBQWlCLEdBQVcsRUFBRSxDQUFDO1FBRXhDLHlDQUFvQyxHQUFXLEVBQUUsQ0FBQztJQUsvQyxDQUFDO0lBR0osY0FBYztRQUNWLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELG1CQUFtQjtRQUNmLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDMUMsTUFBTSxvQkFBb0IsR0FBRyxjQUFjLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsb0NBQW9DLEdBQUcsb0JBQW9CLENBQUM7UUFDakUsTUFBTSxxQkFBcUIsR0FDdkIsSUFBSSxDQUFDLG9DQUFvQyxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRTdGLE1BQU0sbUJBQW1CLEdBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG9DQUFvQztZQUM1RCxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUI7WUFDbEcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO1FBRWhDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxRQUFRLG1CQUFtQixLQUFLLENBQUMsQ0FBQztJQUNsRyxDQUFDOytHQWpDUSw0QkFBNEI7bUdBQTVCLDRCQUE0Qjs7NEZBQTVCLDRCQUE0QjtrQkFKeEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUNBQWlDO29CQUMzQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7dUdBRVksY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFTTixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogXCJbYW5uYUNvcmVGaXhlZFJvd3NJblBvcHVwVGFibGVdXCIsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRml4ZWRSb3dzUG9wdXBUYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBwb3B1cFJvd0hlaWdodDogbnVtYmVyID0gMzcuNTtcclxuICAgIEBJbnB1dCgpIHBvcHVwSGVhZGVySGVpZ2h0OiBudW1iZXIgPSAzODtcclxuICAgIEBJbnB1dCgpIHRhYmxlRGF0YUxlbmd0aDogbnVtYmVyO1xyXG4gICAgbWF4Um93c1JlbmRlcmVkV2l0aG91dFNjcm9sbEZvclBvcHVwOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICkge31cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxyXG4gICAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRQb3BVcFRhYmxlSGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRQb3BVcFRhYmxlSGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UG9wVXBUYWJsZUhlaWdodCgpIHtcclxuICAgICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuICAgICAgICBjb25zdCBtYXhOb09mUm93c1RvRGlzcGxheSA9IHZpZXdwb3J0SGVpZ2h0IDwgNzQwID8gNSA6IDEwO1xyXG4gICAgICAgIHRoaXMubWF4Um93c1JlbmRlcmVkV2l0aG91dFNjcm9sbEZvclBvcHVwID0gbWF4Tm9PZlJvd3NUb0Rpc3BsYXk7XHJcbiAgICAgICAgY29uc3QgdG90YWxQb3B1cFRhYmxlSGVpZ2h0ID1cclxuICAgICAgICAgICAgdGhpcy5tYXhSb3dzUmVuZGVyZWRXaXRob3V0U2Nyb2xsRm9yUG9wdXAgKiB0aGlzLnBvcHVwUm93SGVpZ2h0ICsgdGhpcy5wb3B1cEhlYWRlckhlaWdodDtcclxuXHJcbiAgICAgICAgY29uc3QgdGFibGVIZWlnaHRGb3JQb3B1cCA9XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhTGVuZ3RoIDwgdGhpcy5tYXhSb3dzUmVuZGVyZWRXaXRob3V0U2Nyb2xsRm9yUG9wdXBcclxuICAgICAgICAgICAgICAgID8gdGhpcy5wb3B1cFJvd0hlaWdodCAqICh0aGlzLnRhYmxlRGF0YUxlbmd0aCA/IHRoaXMudGFibGVEYXRhTGVuZ3RoIDogMSkgKyB0aGlzLnBvcHVwSGVhZGVySGVpZ2h0XHJcbiAgICAgICAgICAgICAgICA6IHRvdGFsUG9wdXBUYWJsZUhlaWdodDtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIFwibWF4LWhlaWdodFwiLCBgY2FsYygke3RhYmxlSGVpZ2h0Rm9yUG9wdXB9cHgpYCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,41 @@
1
+ import { Directive, ElementRef, HostListener } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class ShowEllipsisTextOnHoverDirective {
4
+ constructor(elementRef) {
5
+ this.elementRef = elementRef;
6
+ }
7
+ onMouseEnter() {
8
+ const domElement = this.elementRef.nativeElement;
9
+ if (domElement.offsetWidth < domElement.scrollWidth || this.checkPositionsInDecimals(domElement)) {
10
+ domElement.title = domElement.textContent === "" ? domElement.value : domElement.textContent;
11
+ }
12
+ else if (domElement.title)
13
+ domElement.removeAttribute("title");
14
+ }
15
+ checkPositionsInDecimals(domElement) {
16
+ // if we don't have any children element Then we can't calculate
17
+ // and compare anything so we are returning false from here
18
+ if (!domElement.children || (domElement.children && domElement.children.length === 0))
19
+ return false;
20
+ const elementRect = domElement.getBoundingClientRect();
21
+ const childRect = domElement.children[0].getBoundingClientRect();
22
+ const paddingOnRight = window.getComputedStyle(domElement).paddingRight;
23
+ const padding = +(paddingOnRight.endsWith("px") ? paddingOnRight.slice(0, -2) : paddingOnRight);
24
+ // If overflow happens then Child element's right side position
25
+ // will be greater than container element's right side position.
26
+ return childRect.right + padding > elementRect.right;
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShowEllipsisTextOnHoverDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
29
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ShowEllipsisTextOnHoverDirective, isStandalone: true, selector: "[annaCoreShowEllipsisTextOnHover]", host: { listeners: { "mouseenter": "onMouseEnter()" } }, ngImport: i0 }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShowEllipsisTextOnHoverDirective, decorators: [{
32
+ type: Directive,
33
+ args: [{
34
+ selector: "[annaCoreShowEllipsisTextOnHover]",
35
+ standalone: true,
36
+ }]
37
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { onMouseEnter: [{
38
+ type: HostListener,
39
+ args: ["mouseenter"]
40
+ }] } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1lbGxpcHNpcy10ZXh0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtY29yZS1zaGFyZWQtbGliL2RpcmVjdGl2ZXMvc2hvdy1lbGxpcHNpcy10ZXh0L3Nob3ctZWxsaXBzaXMtdGV4dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1wRSxNQUFNLE9BQU8sZ0NBQWdDO0lBQ3pDLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFBRyxDQUFDO0lBRzlDLFlBQVk7UUFDUixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNqRCxJQUFJLFVBQVUsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMvRixVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxXQUFXLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQ2pHLENBQUM7YUFBTSxJQUFJLFVBQVUsQ0FBQyxLQUFLO1lBQUUsVUFBVSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsd0JBQXdCLENBQUMsVUFBbUI7UUFDeEMsZ0VBQWdFO1FBQ2hFLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFcEcsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRWpFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDeEUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWhHLCtEQUErRDtRQUMvRCxnRUFBZ0U7UUFDaEUsT0FBTyxTQUFTLENBQUMsS0FBSyxHQUFHLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ3pELENBQUM7K0dBekJRLGdDQUFnQzttR0FBaEMsZ0NBQWdDOzs0RkFBaEMsZ0NBQWdDO2tCQUo1QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjsrRUFLRyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW2FubmFDb3JlU2hvd0VsbGlwc2lzVGV4dE9uSG92ZXJdXCIsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hvd0VsbGlwc2lzVGV4dE9uSG92ZXJEaXJlY3RpdmUge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIpXHJcbiAgICBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGlmIChkb21FbGVtZW50Lm9mZnNldFdpZHRoIDwgZG9tRWxlbWVudC5zY3JvbGxXaWR0aCB8fCB0aGlzLmNoZWNrUG9zaXRpb25zSW5EZWNpbWFscyhkb21FbGVtZW50KSkge1xyXG4gICAgICAgICAgICBkb21FbGVtZW50LnRpdGxlID0gZG9tRWxlbWVudC50ZXh0Q29udGVudCA9PT0gXCJcIiA/IGRvbUVsZW1lbnQudmFsdWUgOiBkb21FbGVtZW50LnRleHRDb250ZW50O1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZG9tRWxlbWVudC50aXRsZSkgZG9tRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJ0aXRsZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja1Bvc2l0aW9uc0luRGVjaW1hbHMoZG9tRWxlbWVudDogRWxlbWVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vIGlmIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuIGVsZW1lbnQgVGhlbiB3ZSBjYW4ndCBjYWxjdWxhdGVcclxuICAgICAgICAvLyBhbmQgY29tcGFyZSBhbnl0aGluZyBzbyB3ZSBhcmUgcmV0dXJuaW5nIGZhbHNlIGZyb20gaGVyZVxyXG4gICAgICAgIGlmICghZG9tRWxlbWVudC5jaGlsZHJlbiB8fCAoZG9tRWxlbWVudC5jaGlsZHJlbiAmJiBkb21FbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgY29uc3QgZWxlbWVudFJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IGNoaWxkUmVjdCA9IGRvbUVsZW1lbnQuY2hpbGRyZW5bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhZGRpbmdPblJpZ2h0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9tRWxlbWVudCkucGFkZGluZ1JpZ2h0O1xyXG4gICAgICAgIGNvbnN0IHBhZGRpbmcgPSArKHBhZGRpbmdPblJpZ2h0LmVuZHNXaXRoKFwicHhcIikgPyBwYWRkaW5nT25SaWdodC5zbGljZSgwLCAtMikgOiBwYWRkaW5nT25SaWdodCk7XHJcblxyXG4gICAgICAgIC8vIElmIG92ZXJmbG93IGhhcHBlbnMgdGhlbiBDaGlsZCBlbGVtZW50J3MgcmlnaHQgc2lkZSBwb3NpdGlvblxyXG4gICAgICAgIC8vIHdpbGwgYmUgZ3JlYXRlciB0aGFuIGNvbnRhaW5lciBlbGVtZW50J3MgcmlnaHQgc2lkZSBwb3NpdGlvbi5cclxuICAgICAgICByZXR1cm4gY2hpbGRSZWN0LnJpZ2h0ICsgcGFkZGluZyA+IGVsZW1lbnRSZWN0LnJpZ2h0O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1nZW5lcmljLWRhdGEtdHlwZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLWdlbmVyaWMtZGF0YS10eXBlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFdlZWtPYmplY3Qge1xyXG4gICAgc3RhcnREYXRlOiBzdHJpbmc7XHJcbiAgICBlbmREYXRlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VsbGVyR3JvdXBIaWVyYXJjaHkge1xyXG4gICAgaW52ZW50b3J5Q29kZTogc3RyaW5nO1xyXG4gICAgcHJvZ3JhbTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJhdGluZ1NlbGxlckdyb3VwSGllcmFyY2h5IHtcclxuICAgIEludmVudG9yeUNvZGU6IHN0cmluZztcclxuICAgIFByb2dyYW06IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEd0Q29sdW1uSWNvbkVtaXR0ZWREYXRhIHtcclxuICAgIGRhdGE6IGFueTtcclxuICAgIGtleTogc3RyaW5nO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1nbG9iYWwtZHJvcGRvd24tY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtZ2xvYmFsLWRyb3Bkb3duLWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJUmFkaW9CdXR0b24ge1xyXG4gICAgdmFsdWU6IGFueTtcclxuICAgIGlzRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgY2xhc3M6IHN0cmluZztcclxuICAgIHRvb2x0aXA/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFuZ3VsYXIyTXVsdGlTZWxlY3RTZXR0aW5ncyB7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgICBzZWxlY3RBbGxUZXh0OiBzdHJpbmc7XHJcbiAgICB1blNlbGVjdEFsbFRleHQ6IHN0cmluZztcclxuICAgIGJhZGdlU2hvd0xpbWl0OiBudW1iZXI7XHJcbiAgICBzaW5nbGVTZWxlY3Rpb246IGJvb2xlYW47XHJcbiAgICBjbGFzc2VzOiBzdHJpbmc7XHJcbiAgICBlbmFibGVTZWFyY2hGaWx0ZXI6IGJvb2xlYW47XHJcbiAgICBlbmFibGVDaGVja0FsbDogYm9vbGVhbjtcclxuICAgIGF1dG9Qb3NpdGlvbjogYm9vbGVhbjtcclxuICAgIHBvc2l0aW9uOiBzdHJpbmc7XHJcbiAgICBsYXp5TG9hZGluZzogYm9vbGVhbjtcclxuICAgIGRpc2FibGVkOiBib29sZWFuO1xyXG4gICAgc2hvd0NoZWNrYm94OiBib29sZWFuO1xyXG4gICAgZW5hYmxlRmlsdGVyU2VsZWN0QWxsOiBib29sZWFuO1xyXG4gICAgbWF4SGVpZ2h0OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU5neEFzaWRlU2V0dGluZ3Mge1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIGNhbmNlbEJ1dHRvblRpdGxlOiBzdHJpbmc7XHJcbiAgICBzdWJtaXRCdXR0b25UaXRsZTogc3RyaW5nO1xyXG4gICAgY2xvc2VPbkVzY2FwZTogYm9vbGVhbjtcclxuICAgIHNob3dPdmVybGF5OiBib29sZWFuO1xyXG4gICAgc2hvd0RlZmF1bHRGb290ZXI6IGJvb2xlYW47XHJcbiAgICBzaG93RGVmYXVsdEhlYWRlcjogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTmdiRGF0ZVBpY2tlclNldHRpbmdzIHtcclxuICAgIGF1dG9DbG9zZTogYm9vbGVhbjtcclxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgICBkaXNwbGF5TW9udGhzOiBudW1iZXI7XHJcbiAgICBmaXJzdERheU9mV2VlazogbnVtYmVyO1xyXG4gICAgc2hvd1dlZWtOdW1iZXJzOiBib29sZWFuO1xyXG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU5nU2VsZWN0U2V0dGluZ3Mge1xyXG4gICAgYWxsb3dDbGVhcjogYm9vbGVhbjtcclxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU5neEluZmluaXRlU2Nyb2xsU2V0dGluZ3Mge1xyXG4gICAgaW5maW5pdGVTY3JvbGxEaXN0YW5jZTogbnVtYmVyO1xyXG4gICAgaW5maW5pdGVTY3JvbGxVcERpc3RhbmNlOiBudW1iZXI7XHJcbiAgICBpbmZpbml0ZVNjcm9sbFRocm90dGxlOiBudW1iZXI7XHJcbiAgICBzY3JvbGxXaW5kb3c6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU5neFNrZWxldG9uTG9hZGVyU2V0dGluZ3Mge1xyXG4gICAgbnVtYmVyT2ZTa2VsZXRvblJvd3M6IG51bWJlcltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSYWRpb0J1dHRvbkNvbXBvbmVudENvbmZpZyB7XHJcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xyXG4gICAgcmFkaW9CdXR0b25zOiBJUmFkaW9CdXR0b25bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlybWF0aW9uUG9wdXBDb25maWcge1xyXG4gICAgc2hvd0NhbmNlbEJ1dHRvbjogYm9vbGVhbjtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBzdWJUaXRsZT86IHN0cmluZztcclxuICAgIHNob3dDb25maXJtQnV0dG9uOiBib29sZWFuO1xyXG4gICAgY2FuY2VsQnV0dG9uTGFiZWw6IHN0cmluZztcclxuICAgIGNvbmZpcm1CdXR0b25MYWJlbDogc3RyaW5nO1xyXG4gICAgc2hvd0Nsb3NlSWNvbjogYm9vbGVhbjtcclxuICAgIHdpbmRvd0NsYXNzOiBzdHJpbmc7XHJcbiAgICBiYWNrZHJvcDogXCJzdGF0aWNcIiB8IGJvb2xlYW47XHJcbiAgICBzaXplOiBcInNtXCIgfCBcImxnXCI7XHJcbiAgICBrZXlib2FyZDogYm9vbGVhbjtcclxuICAgIGNlbnRlcmVkPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJV2Vla0NhbGVuZGFyIHtcclxuICAgIGZpcnN0RGF5T2ZXZWVrPzogbnVtYmVyO1xyXG4gICAgbnVtYmVyT2ZNb250aHNUb0VuYWJsZUluUGFzdDogbnVtYmVyO1xyXG4gICAgc2VsZWN0TXVsdGlwbGVXZWVrczogYm9vbGVhbjtcclxuICAgIHNob3dXZWVrTnVtYmVycz86IGJvb2xlYW47XHJcbiAgICBkYXRlRm9ybWF0VG9EaXNwbGF5Pzogc3RyaW5nO1xyXG4gICAgbWF4V2Vla3NUb1Nob3dXaXRoUmVtYWluaW5nQ291bnQ/OiBudW1iZXI7XHJcbiAgICBjdXN0b21DbGFzcz86IHN0cmluZztcclxuICAgIGVtaXRNdWx0aXBsZVdlZWtPYmplY3RzPzogYm9vbGVhbjtcclxuICAgIGVtaXRJbml0aWFsU2VsZWN0aW9uPzogYm9vbGVhbjtcclxuICAgIGRhdGVGb3JtYXRGb3JSZXF1ZXN0Pzogc3RyaW5nO1xyXG4gICAgbWF4V2Vla3NUb1NlbGVjdD86IG51bWJlcjtcclxuICAgIHNob3dBc0Ryb3Bkb3duOiBib29sZWFuO1xyXG4gICAgc2VsZWN0Q3VycmVudFdlZWs6IGJvb2xlYW47XHJcbiAgICBpc0NvbnRhaW5lckJvZHk/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDdXN0b21TaW5nbGVTZWxlY3Qge1xyXG4gICAgc2hvd1NlYXJjaEJhcjogYm9vbGVhbjtcclxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgICBjbGFzc2VzOiBzdHJpbmc7XHJcbiAgICBwb3NpdGlvbjogUG9zaXRpb247XHJcbiAgICBtYXhIZWlnaHRPZkxpc3Q6IG51bWJlcjsgLy8gcHggdmFsdWVcclxuICAgIG1pbkhlaWdodE9mTGlzdD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ3VzdG9tTXVsdGlTZWxlY3QgZXh0ZW5kcyBJQ3VzdG9tU2luZ2xlU2VsZWN0IHtcclxuICAgIHNob3dFcnJvcldoZW5Ob09wdGlvblNlbGVjdGVkOiBib29sZWFuO1xyXG59XHJcblxyXG50eXBlIFBvc2l0aW9uID0gXCJUT1BcIiB8IFwiQk9UVE9NXCI7XHJcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ export class LicensingPlan {
2
+ constructor(data) {
3
+ this.Id = data.Id;
4
+ this.PlanId = data.PlanId;
5
+ this.PlanName = data.PlanName;
6
+ this.PlanStartDate = data.PlanStartDate;
7
+ this.PlanEndDate = data.PlanEndDate;
8
+ this.PlanExpiryDays = data.DaysRemaining;
9
+ this.FeatureDetails = data.FeatureDetails.map((feature) => new FeatureDetails(feature));
10
+ }
11
+ }
12
+ export class FeatureDetails {
13
+ constructor(data) {
14
+ this.FeatureId = data.FeatureId;
15
+ this.FeatureName = data.FeatureName;
16
+ this.FeatureDescription = data.FeatureDescription;
17
+ this.IsEnabled = data.IsEnabled;
18
+ this.Specification = data.Specification.map((spec) => ({
19
+ Json: JSON.parse(spec.Json),
20
+ JsonCloned: JSON.parse(spec.Json),
21
+ JsonType: spec.JsonType,
22
+ IsCustomized: spec.IsCustomized,
23
+ }));
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1saWNlbnNpbmctdGFibGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1saWNlbnNpbmctdGFibGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGFBQWE7SUFRdEIsWUFBWSxJQUFTO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDakcsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGNBQWM7SUFNdkIsWUFBWSxJQUFTO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4RCxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDakMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBMaWNlbnNpbmdQbGFuIHtcclxuICAgIElkOiBudW1iZXI7XHJcbiAgICBQbGFuSWQ6IG51bWJlcjtcclxuICAgIFBsYW5OYW1lOiBzdHJpbmc7XHJcbiAgICBQbGFuU3RhcnREYXRlPzogc3RyaW5nO1xyXG4gICAgUGxhbkVuZERhdGU/OiBzdHJpbmc7XHJcbiAgICBQbGFuRXhwaXJ5RGF5cz86IG51bWJlcjtcclxuICAgIEZlYXR1cmVEZXRhaWxzOiBGZWF0dXJlRGV0YWlsc1tdO1xyXG4gICAgY29uc3RydWN0b3IoZGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5JZCA9IGRhdGEuSWQ7XHJcbiAgICAgICAgdGhpcy5QbGFuSWQgPSBkYXRhLlBsYW5JZDtcclxuICAgICAgICB0aGlzLlBsYW5OYW1lID0gZGF0YS5QbGFuTmFtZTtcclxuICAgICAgICB0aGlzLlBsYW5TdGFydERhdGUgPSBkYXRhLlBsYW5TdGFydERhdGU7XHJcbiAgICAgICAgdGhpcy5QbGFuRW5kRGF0ZSA9IGRhdGEuUGxhbkVuZERhdGU7XHJcbiAgICAgICAgdGhpcy5QbGFuRXhwaXJ5RGF5cyA9IGRhdGEuRGF5c1JlbWFpbmluZztcclxuICAgICAgICB0aGlzLkZlYXR1cmVEZXRhaWxzID0gZGF0YS5GZWF0dXJlRGV0YWlscy5tYXAoKGZlYXR1cmU6IGFueSkgPT4gbmV3IEZlYXR1cmVEZXRhaWxzKGZlYXR1cmUpKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZlYXR1cmVEZXRhaWxzIHtcclxuICAgIEZlYXR1cmVJZDogbnVtYmVyO1xyXG4gICAgRmVhdHVyZU5hbWU6IHN0cmluZztcclxuICAgIEZlYXR1cmVEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgSXNFbmFibGVkOiBib29sZWFuO1xyXG4gICAgU3BlY2lmaWNhdGlvbjogYW55W107XHJcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBhbnkpIHtcclxuICAgICAgICB0aGlzLkZlYXR1cmVJZCA9IGRhdGEuRmVhdHVyZUlkO1xyXG4gICAgICAgIHRoaXMuRmVhdHVyZU5hbWUgPSBkYXRhLkZlYXR1cmVOYW1lO1xyXG4gICAgICAgIHRoaXMuRmVhdHVyZURlc2NyaXB0aW9uID0gZGF0YS5GZWF0dXJlRGVzY3JpcHRpb247XHJcbiAgICAgICAgdGhpcy5Jc0VuYWJsZWQgPSBkYXRhLklzRW5hYmxlZDtcclxuICAgICAgICB0aGlzLlNwZWNpZmljYXRpb24gPSBkYXRhLlNwZWNpZmljYXRpb24ubWFwKChzcGVjOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgIEpzb246IEpTT04ucGFyc2Uoc3BlYy5Kc29uKSxcclxuICAgICAgICAgICAgSnNvbkNsb25lZDogSlNPTi5wYXJzZShzcGVjLkpzb24pLFxyXG4gICAgICAgICAgICBKc29uVHlwZTogc3BlYy5Kc29uVHlwZSxcclxuICAgICAgICAgICAgSXNDdXN0b21pemVkOiBzcGVjLklzQ3VzdG9taXplZCxcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcbn1cclxuIl19