mis-crystal-design-system 18.0.6 → 18.0.8-test-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 (40) hide show
  1. package/assets/icons/sort-asc.svg +5 -0
  2. package/assets/icons/sort-desc.svg +5 -0
  3. package/assets/icons/sprite.svg +12 -0
  4. package/assets/sort-asc.svg +5 -0
  5. package/assets/sort-desc.svg +5 -0
  6. package/dropdown/dropdown.module.d.ts +1 -1
  7. package/esm2022/dropdown/dropdown.module.mjs +2 -2
  8. package/esm2022/table/public_api.mjs +5 -3
  9. package/esm2022/table/sort-icons.directive.mjs +153 -0
  10. package/esm2022/table/table.component.mjs +89 -62
  11. package/esm2022/table/table.config.mjs +6 -0
  12. package/esm2022/table/table.module.mjs +25 -4
  13. package/fesm2022/mis-crystal-design-system-dropdown.mjs +1 -2
  14. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  15. package/fesm2022/mis-crystal-design-system-table.mjs +268 -66
  16. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  17. package/package.json +7 -7
  18. package/table/filter/filter.component.d.ts +1 -1
  19. package/table/public_api.d.ts +4 -2
  20. package/table/sort-icons.directive.d.ts +35 -0
  21. package/table/table.component.d.ts +11 -1
  22. package/table/table.config.d.ts +2 -0
  23. package/table/table.module.d.ts +5 -4
  24. package/button/button.directive.scss +0 -69
  25. package/drawer/drawer.scss +0 -20
  26. package/input/mis-input.component.scss +0 -180
  27. package/modal/modal.scss +0 -9
  28. package/styles/fonts/icomoon.eot +0 -0
  29. package/styles/fonts/icomoon.svg +0 -315
  30. package/styles/fonts/icomoon.ttf +0 -0
  31. package/styles/fonts/icomoon.woff +0 -0
  32. package/styles/mis-borders-backgrounds.scss +0 -764
  33. package/styles/mis-color-constants.scss +0 -149
  34. package/styles/mis-flex.scss +0 -321
  35. package/styles/mis-fonts.scss +0 -124
  36. package/styles/mis-icons.scss +0 -1054
  37. package/styles/mis-mixins.scss +0 -46
  38. package/styles/mis-old-icon-styles.scss +0 -498
  39. package/styles/mis-spacing-sizing.scss +0 -2590
  40. package/styles/mis-typography.scss +0 -462
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path d="M4 6L8 2L12 6" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path d="M8 2V14" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path d="M4 10L8 14L12 10" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path d="M8 14V2" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </svg>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
3
+ <!-- Sort Ascending Icon -->
4
+ <symbol id="sort-asc" viewBox="0 0 24 24" fill="none">
5
+ <path d="M7 14l5-5 5 5z" fill="currentColor"/>
6
+ </symbol>
7
+
8
+ <!-- Sort Descending Icon -->
9
+ <symbol id="sort-desc" viewBox="0 0 24 24" fill="none">
10
+ <path d="M7 10l5 5 5-5z" fill="currentColor"/>
11
+ </symbol>
12
+ </svg>
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path d="M4 6L8 2L12 6" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path d="M8 2V14" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path d="M4 10L8 14L12 10" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path d="M8 14V2" stroke="#181F33" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </svg>
@@ -5,7 +5,7 @@ import * as i2 from "./calculate-container-height.directive";
5
5
  import * as i3 from "@angular/common";
6
6
  import * as i4 from "@angular/forms";
7
7
  import * as i5 from "@angular/cdk/overlay";
8
- import * as i6 from "@angular/cdk-experimental/scrolling";
8
+ import * as i6 from "@angular/cdk/scrolling";
9
9
  import * as i7 from "mis-crystal-design-system/loader";
10
10
  import * as i8 from "@angular/cdk/a11y";
11
11
  export declare class DropdownModule {
@@ -3,7 +3,7 @@ import { FormsModule } from "@angular/forms";
3
3
  import { NgModule } from "@angular/core";
4
4
  import { DropdownComponent } from "./dropdown.component";
5
5
  import { OverlayModule } from "@angular/cdk/overlay";
6
- import { ScrollingModule } from "@angular/cdk-experimental/scrolling";
6
+ import { ScrollingModule } from "@angular/cdk/scrolling";
7
7
  import { LoaderModule } from "mis-crystal-design-system/loader";
8
8
  import { CalculateContainerHeightDirective } from './calculate-container-height.directive';
9
9
  import { A11yModule } from "@angular/cdk/a11y";
@@ -25,4 +25,4 @@ export class DropdownModule {
25
25
  }]
26
26
  }], null, null); })();
27
27
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(DropdownModule, { declarations: [DropdownComponent, CalculateContainerHeightDirective], imports: [CommonModule, FormsModule, OverlayModule, ScrollingModule, LoaderModule, A11yModule], exports: [DropdownComponent] }); })();
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU8vQyxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNyRCxDQUFDOytHQUhVLGNBQWM7bUVBQWQsY0FBYzt1RUFIZixZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUMsWUFBWSxFQUFFLFVBQVU7O2lGQUdqRixjQUFjO2NBTDFCLFFBQVE7ZUFBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxpQ0FBaUMsQ0FBQztnQkFDcEUsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7Z0JBQzdGLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2FBQzdCOzt3RkFDWSxjQUFjLG1CQUpWLGlCQUFpQixFQUFFLGlDQUFpQyxhQUN6RCxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUMsWUFBWSxFQUFFLFVBQVUsYUFDbEYsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSBcIi4vZHJvcGRvd24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrLWV4cGVyaW1lbnRhbC9zY3JvbGxpbmdcIjtcbmltcG9ydCB7IExvYWRlck1vZHVsZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL2xvYWRlclwiO1xuaW1wb3J0IHsgQ2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0RGlyZWN0aXZlIH0gZnJvbSAnLi9jYWxjdWxhdGUtY29udGFpbmVyLWhlaWdodC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jZGsvYTExeVwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtEcm9wZG93bkNvbXBvbmVudCwgQ2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0RGlyZWN0aXZlXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE92ZXJsYXlNb2R1bGUsIFNjcm9sbGluZ01vZHVsZSxMb2FkZXJNb2R1bGUsIEExMXlNb2R1bGVdLCAgXG4gIGV4cG9ydHM6IFtEcm9wZG93bkNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Nb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPERyb3Bkb3duTW9kdWxlPiB7XG4gICAgcmV0dXJuIHsgbmdNb2R1bGU6IERyb3Bkb3duTW9kdWxlLCBwcm92aWRlcnM6IFtdIH07XG4gIH1cbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU8vQyxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNyRCxDQUFDOytHQUhVLGNBQWM7bUVBQWQsY0FBYzt1RUFIZixZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUMsWUFBWSxFQUFFLFVBQVU7O2lGQUdqRixjQUFjO2NBTDFCLFFBQVE7ZUFBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxpQ0FBaUMsQ0FBQztnQkFDcEUsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7Z0JBQzdGLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2FBQzdCOzt3RkFDWSxjQUFjLG1CQUpWLGlCQUFpQixFQUFFLGlDQUFpQyxhQUN6RCxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUMsWUFBWSxFQUFFLFVBQVUsYUFDbEYsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSBcIi4vZHJvcGRvd24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3Njcm9sbGluZ1wiO1xuaW1wb3J0IHsgTG9hZGVyTW9kdWxlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vbG9hZGVyXCI7XG5pbXBvcnQgeyBDYWxjdWxhdGVDb250YWluZXJIZWlnaHREaXJlY3RpdmUgfSBmcm9tICcuL2NhbGN1bGF0ZS1jb250YWluZXItaGVpZ2h0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9hMTF5XCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0Ryb3Bkb3duQ29tcG9uZW50LCBDYWxjdWxhdGVDb250YWluZXJIZWlnaHREaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgT3ZlcmxheU1vZHVsZSwgU2Nyb2xsaW5nTW9kdWxlLExvYWRlck1vZHVsZSwgQTExeU1vZHVsZV0sICBcbiAgZXhwb3J0czogW0Ryb3Bkb3duQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bk1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RHJvcGRvd25Nb2R1bGU+IHtcbiAgICByZXR1cm4geyBuZ01vZHVsZTogRHJvcGRvd25Nb2R1bGUsIHByb3ZpZGVyczogW10gfTtcbiAgfVxufVxuIl19
@@ -1,6 +1,8 @@
1
- export { TableComponent } from "./table.component";
1
+ export * from './table.component';
2
+ export * from './table.module';
3
+ export * from './table.config';
4
+ export * from './sort-icons.directive';
2
5
  export { SubTableComponent } from "./sub-table/sub-table.component";
3
6
  export { CustomTableCellDirective } from "./custom-table-cell.directive";
4
- export { TableModule } from "./table.module";
5
7
  export { TableFilterComponent } from "./filter/filter.component";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4vdGFibGUuY29tcG9uZW50XCI7XG5leHBvcnQgeyBTdWJUYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuL3N1Yi10YWJsZS9zdWItdGFibGUuY29tcG9uZW50XCI7XG5leHBvcnQgeyBDdXN0b21UYWJsZUNlbGxEaXJlY3RpdmUgfSBmcm9tIFwiLi9jdXN0b20tdGFibGUtY2VsbC5kaXJlY3RpdmVcIjtcbmV4cG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSBcIi4vdGFibGUubW9kdWxlXCI7XG5leHBvcnQgeyBUYWJsZUNvbmZpZywgUGFnaW5hdGlvbkNvbmZpZywgUm93Q29uZmlnLCBDb2xIZWFkZXJDb25maWcsIENvbENvbmZpZyB9IGZyb20gXCIuL3RhYmxlLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgU3ViVGFibGVDb25maWcsIFN1YlRhYmxlQ29sQ29uZmlnLCBTdWJUYWJsZUNvbEhlYWRlckNvbmZpZywgU3ViVGFibGVSb3dDb25maWcgfSBmcm9tIFwiLi9zdWItdGFibGUvc3ViLXRhYmxlLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgVGFibGVGaWx0ZXJDb21wb25lbnQgfSBmcm9tIFwiLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgRmlsdGVyIH0gZnJvbSBcIi4vZmlsdGVyL2ZpbHRlci5jb21wb25lbnRcIjtcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vc29ydC1pY29ucy5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgU3ViVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi9zdWItdGFibGUvc3ViLXRhYmxlLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgQ3VzdG9tVGFibGVDZWxsRGlyZWN0aXZlIH0gZnJvbSBcIi4vY3VzdG9tLXRhYmxlLWNlbGwuZGlyZWN0aXZlXCI7XG5leHBvcnQgeyBUYWJsZUNvbmZpZywgUGFnaW5hdGlvbkNvbmZpZywgUm93Q29uZmlnLCBDb2xIZWFkZXJDb25maWcsIENvbENvbmZpZyB9IGZyb20gXCIuL3RhYmxlLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgU3ViVGFibGVDb25maWcsIFN1YlRhYmxlQ29sQ29uZmlnLCBTdWJUYWJsZUNvbEhlYWRlckNvbmZpZywgU3ViVGFibGVSb3dDb25maWcgfSBmcm9tIFwiLi9zdWItdGFibGUvc3ViLXRhYmxlLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgVGFibGVGaWx0ZXJDb21wb25lbnQgfSBmcm9tIFwiLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgRmlsdGVyIH0gZnJvbSBcIi4vZmlsdGVyL2ZpbHRlci5jb21wb25lbnRcIjtcbiJdfQ==
@@ -0,0 +1,153 @@
1
+ import { Directive, input, output, signal, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SortIconsDirective {
4
+ constructor(el, renderer) {
5
+ this.el = el;
6
+ this.renderer = renderer;
7
+ // Convert inputs to signals
8
+ this.column = input('');
9
+ this.activeSort = input();
10
+ this.activeSorts = input();
11
+ this.multiColumnSort = input(false);
12
+ // Convert output to signal
13
+ this.sortChange = output();
14
+ this.multiSortChange = output();
15
+ // Internal state as signals
16
+ this.currentDirection = signal('');
17
+ this.columnNumber = signal(0);
18
+ // Assets
19
+ this.SORT_ASCENDING = 'assets/sort-asc.svg';
20
+ this.SORT_DESCENDING = 'assets/sort-desc.svg';
21
+ }
22
+ ngOnInit() {
23
+ // Get column number from data-column attribute
24
+ const columnAttr = this.el.nativeElement.getAttribute('data-column');
25
+ if (columnAttr) {
26
+ this.columnNumber.set(parseInt(columnAttr, 10));
27
+ }
28
+ // Create a container for the icons
29
+ const container = this.renderer.createElement('div');
30
+ this.renderer?.setStyle(container, 'display', 'inline-flex');
31
+ this.renderer?.setStyle(container, 'align-items', 'center');
32
+ this.renderer?.setStyle(container, 'gap', '0.5rem');
33
+ const iconContainer = this.renderer.createElement('div');
34
+ this.renderer?.setStyle(iconContainer, 'display', 'inline-flex');
35
+ this.renderer?.setStyle(iconContainer, 'flex-direction', 'column');
36
+ this.renderer?.setStyle(iconContainer, 'align-items', 'center');
37
+ this.renderer?.setStyle(iconContainer, 'gap', '5px');
38
+ this.upIcon = this.renderer.createElement('img');
39
+ this.renderer?.setAttribute(this.upIcon, 'src', this.SORT_ASCENDING);
40
+ this.renderer?.setStyle(this.upIcon, 'opacity', '0.5');
41
+ this.renderer?.setStyle(this.upIcon, 'transition', 'opacity 0.3s ease');
42
+ this.renderer?.setStyle(this.upIcon, 'width', '9px');
43
+ this.renderer?.setStyle(this.upIcon, 'cursor', 'pointer');
44
+ this.renderer?.listen(this.upIcon, 'click', () => this.setSortDirection('ASC'));
45
+ this.downIcon = this.renderer.createElement('img');
46
+ this.renderer?.setAttribute(this.downIcon, 'src', this.SORT_DESCENDING);
47
+ this.renderer?.setStyle(this.downIcon, 'opacity', '0.5');
48
+ this.renderer?.setStyle(this.downIcon, 'transition', 'opacity 0.3s ease');
49
+ this.renderer?.setStyle(this.downIcon, 'width', '9px');
50
+ this.renderer?.setStyle(this.downIcon, 'cursor', 'pointer');
51
+ this.renderer?.listen(this.downIcon, 'click', () => this.setSortDirection('DESC'));
52
+ this.renderer?.appendChild(iconContainer, this.upIcon);
53
+ this.renderer?.appendChild(iconContainer, this.downIcon);
54
+ this.renderer?.appendChild(container, iconContainer);
55
+ if (this.multiColumnSort()) {
56
+ this.sortOrderElement = this.renderer.createElement('span');
57
+ this.renderer?.setStyle(this.sortOrderElement, 'font-size', '12px');
58
+ this.renderer?.setStyle(this.sortOrderElement, 'font-weight', 'bold');
59
+ this.renderer?.setStyle(this.sortOrderElement, 'color', '#000');
60
+ this.renderer?.appendChild(container, this.sortOrderElement);
61
+ }
62
+ this.renderer?.appendChild(this.el.nativeElement, container);
63
+ this.updateIconStyles();
64
+ }
65
+ ngOnChanges(changes) {
66
+ if (changes['activeSort'] || changes['activeSorts']) {
67
+ this.updateIconStyles();
68
+ }
69
+ }
70
+ setSortDirection(direction) {
71
+ if (this.multiColumnSort()) {
72
+ this.handleMultiColumnSort(direction);
73
+ }
74
+ else {
75
+ this.handleSingleColumnSort(direction);
76
+ }
77
+ }
78
+ handleSingleColumnSort(direction) {
79
+ if (this.currentDirection() === direction) {
80
+ this.currentDirection.set(''); // Reset sorting if the same direction is clicked
81
+ }
82
+ else {
83
+ this.currentDirection.set(direction);
84
+ }
85
+ this.sortChange.emit({
86
+ column: this.column(),
87
+ direction: this.currentDirection(),
88
+ columnNumber: this.columnNumber()
89
+ });
90
+ this.updateIconStyles();
91
+ }
92
+ handleMultiColumnSort(direction) {
93
+ const existingSortIndex = this.activeSorts().findIndex(sort => sort.column === this.column());
94
+ if (existingSortIndex !== -1) {
95
+ if (this.activeSorts()[existingSortIndex].direction !== direction) {
96
+ this.activeSorts()[existingSortIndex].direction = direction;
97
+ this.activeSorts()[existingSortIndex].columnNumber = this.columnNumber();
98
+ }
99
+ else {
100
+ return;
101
+ }
102
+ }
103
+ else {
104
+ this.activeSorts().push({
105
+ column: this.column(),
106
+ direction,
107
+ columnNumber: this.columnNumber()
108
+ });
109
+ }
110
+ this.multiSortChange.emit([...this.activeSorts()]);
111
+ this.updateIconStyles();
112
+ }
113
+ updateIconStyles() {
114
+ if (this.multiColumnSort()) {
115
+ this.updateMultiColumnIconStyles();
116
+ }
117
+ else {
118
+ this.updateSingleColumnIconStyles();
119
+ }
120
+ }
121
+ updateSingleColumnIconStyles() {
122
+ const isActiveColumn = this.activeSort()?.column === this.column();
123
+ setTimeout(() => {
124
+ this.renderer?.setStyle(this.upIcon, 'opacity', isActiveColumn && this.currentDirection() === 'ASC' ? '1' : '0.5');
125
+ this.renderer?.setStyle(this.downIcon, 'opacity', isActiveColumn && this.currentDirection() === 'DESC' ? '1' : '0.5');
126
+ }, 0);
127
+ }
128
+ updateMultiColumnIconStyles() {
129
+ const columnSort = this.activeSorts().find(sort => sort.column === this.column());
130
+ setTimeout(() => {
131
+ this.renderer?.setStyle(this.upIcon, 'opacity', columnSort?.direction === 'ASC' ? '1' : '0.5');
132
+ this.renderer?.setStyle(this.downIcon, 'opacity', columnSort?.direction === 'DESC' ? '1' : '0.5');
133
+ if (this.sortOrderElement) {
134
+ const sortIndex = this.activeSorts().findIndex(sort => sort.column === this.column());
135
+ if (sortIndex !== -1) {
136
+ this.renderer?.setProperty(this.sortOrderElement, 'textContent', (sortIndex + 1).toString());
137
+ }
138
+ else {
139
+ this.renderer?.setProperty(this.sortOrderElement, 'textContent', '');
140
+ }
141
+ }
142
+ }, 0);
143
+ }
144
+ static { this.ɵfac = function SortIconsDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SortIconsDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2)); }; }
145
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SortIconsDirective, selectors: [["", "appSortIcons", ""]], inputs: { column: [1, "column"], activeSort: [1, "activeSort"], activeSorts: [1, "activeSorts"], multiColumnSort: [1, "multiColumnSort"] }, outputs: { sortChange: "sortChange", multiSortChange: "multiSortChange" }, features: [i0.ɵɵNgOnChangesFeature] }); }
146
+ }
147
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SortIconsDirective, [{
148
+ type: Directive,
149
+ args: [{
150
+ selector: '[appSortIcons]',
151
+ }]
152
+ }], () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], null); })();
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1pY29ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90YWJsZS9zb3J0LWljb25zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQVNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQVd2QixNQUFNLE9BQU8sa0JBQWtCO0lBdUI3QixZQUFvQixFQUFjLEVBQVUsUUFBbUI7UUFBM0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUF0Qi9ELDRCQUE0QjtRQUM1QixXQUFNLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLGVBQVUsR0FBRyxLQUFLLEVBQWEsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLEtBQUssRUFBZSxDQUFDO1FBQ25DLG9CQUFlLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXhDLDJCQUEyQjtRQUMzQixlQUFVLEdBQUcsTUFBTSxFQUFhLENBQUM7UUFDakMsb0JBQWUsR0FBRyxNQUFNLEVBQWUsQ0FBQztRQUV4Qyw0QkFBNEI7UUFDNUIscUJBQWdCLEdBQUcsTUFBTSxDQUFzQixFQUFFLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUV6QyxTQUFTO1FBQ1EsbUJBQWMsR0FBRyxxQkFBcUIsQ0FBQztRQUN2QyxvQkFBZSxHQUFHLHNCQUFzQixDQUFDO0lBTVEsQ0FBQztJQUVuRSxRQUFRO1FBQ04sK0NBQStDO1FBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFlBQVksQ0FB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Q0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3RGLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDL0YsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQzttSEEvS1Usa0JBQWtCO29FQUFsQixrQkFBa0I7O2lGQUFsQixrQkFBa0I7Y0FIOUIsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7YUFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBTb3J0U3RhdGUge1xuICBjb2x1bW46IHN0cmluZztcbiAgZGlyZWN0aW9uOiAnQVNDJyB8ICdERVNDJyB8ICcnO1xuICBjb2x1bW5OdW1iZXI/OiBudW1iZXI7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thcHBTb3J0SWNvbnNdJyxcbn0pXG5leHBvcnQgY2xhc3MgU29ydEljb25zRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvLyBDb252ZXJ0IGlucHV0cyB0byBzaWduYWxzXG4gIGNvbHVtbiA9IGlucHV0PHN0cmluZz4oJycpO1xuICBhY3RpdmVTb3J0ID0gaW5wdXQ8U29ydFN0YXRlPigpO1xuICBhY3RpdmVTb3J0cyA9IGlucHV0PFNvcnRTdGF0ZVtdPigpO1xuICBtdWx0aUNvbHVtblNvcnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIFxuICAvLyBDb252ZXJ0IG91dHB1dCB0byBzaWduYWxcbiAgc29ydENoYW5nZSA9IG91dHB1dDxTb3J0U3RhdGU+KCk7XG4gIG11bHRpU29ydENoYW5nZSA9IG91dHB1dDxTb3J0U3RhdGVbXT4oKTtcblxuICAvLyBJbnRlcm5hbCBzdGF0ZSBhcyBzaWduYWxzXG4gIGN1cnJlbnREaXJlY3Rpb24gPSBzaWduYWw8J0FTQycgfCAnREVTQycgfCAnJz4oJycpO1xuICBwcml2YXRlIGNvbHVtbk51bWJlciA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gIC8vIEFzc2V0c1xuICBwcml2YXRlIHJlYWRvbmx5IFNPUlRfQVNDRU5ESU5HID0gJ2Fzc2V0cy9zb3J0LWFzYy5zdmcnO1xuICBwcml2YXRlIHJlYWRvbmx5IFNPUlRfREVTQ0VORElORyA9ICdhc3NldHMvc29ydC1kZXNjLnN2Zyc7XG5cbiAgcHJpdmF0ZSB1cEljb24hOiBIVE1MSW1hZ2VFbGVtZW50O1xuICBwcml2YXRlIGRvd25JY29uITogSFRNTEltYWdlRWxlbWVudDtcbiAgcHJpdmF0ZSBzb3J0T3JkZXJFbGVtZW50PzogSFRNTFNwYW5FbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBHZXQgY29sdW1uIG51bWJlciBmcm9tIGRhdGEtY29sdW1uIGF0dHJpYnV0ZVxuICAgIGNvbnN0IGNvbHVtbkF0dHIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWNvbHVtbicpO1xuICAgIGlmIChjb2x1bW5BdHRyKSB7XG4gICAgICB0aGlzLmNvbHVtbk51bWJlci5zZXQocGFyc2VJbnQoY29sdW1uQXR0ciwgMTApKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBjb250YWluZXIgZm9yIHRoZSBpY29uc1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoY29udGFpbmVyLCAnZGlzcGxheScsICdpbmxpbmUtZmxleCcpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKGNvbnRhaW5lciwgJ2FsaWduLWl0ZW1zJywgJ2NlbnRlcicpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKGNvbnRhaW5lciwgJ2dhcCcsICcwLjVyZW0nKTtcblxuICAgIGNvbnN0IGljb25Db250YWluZXIgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKGljb25Db250YWluZXIsICdkaXNwbGF5JywgJ2lubGluZS1mbGV4Jyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUoaWNvbkNvbnRhaW5lciwgJ2ZsZXgtZGlyZWN0aW9uJywgJ2NvbHVtbicpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKGljb25Db250YWluZXIsICdhbGlnbi1pdGVtcycsICdjZW50ZXInKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZShpY29uQ29udGFpbmVyLCAnZ2FwJywgJzVweCcpO1xuXG4gICAgdGhpcy51cEljb24gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldEF0dHJpYnV0ZSh0aGlzLnVwSWNvbiwgJ3NyYycsIHRoaXMuU09SVF9BU0NFTkRJTkcpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMudXBJY29uLCAnb3BhY2l0eScsICcwLjUnKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZSh0aGlzLnVwSWNvbiwgJ3RyYW5zaXRpb24nLCAnb3BhY2l0eSAwLjNzIGVhc2UnKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZSh0aGlzLnVwSWNvbiwgJ3dpZHRoJywgJzlweCcpO1xuICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMudXBJY29uLCAnY3Vyc29yJywgJ3BvaW50ZXInKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5saXN0ZW4odGhpcy51cEljb24sICdjbGljaycsICgpID0+IHRoaXMuc2V0U29ydERpcmVjdGlvbignQVNDJykpO1xuXG4gICAgdGhpcy5kb3duSWNvbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0QXR0cmlidXRlKHRoaXMuZG93bkljb24sICdzcmMnLCB0aGlzLlNPUlRfREVTQ0VORElORyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUodGhpcy5kb3duSWNvbiwgJ29wYWNpdHknLCAnMC41Jyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUodGhpcy5kb3duSWNvbiwgJ3RyYW5zaXRpb24nLCAnb3BhY2l0eSAwLjNzIGVhc2UnKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZSh0aGlzLmRvd25JY29uLCAnd2lkdGgnLCAnOXB4Jyk7XG4gICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUodGhpcy5kb3duSWNvbiwgJ2N1cnNvcicsICdwb2ludGVyJyk7XG4gICAgdGhpcy5yZW5kZXJlcj8ubGlzdGVuKHRoaXMuZG93bkljb24sICdjbGljaycsICgpID0+IHRoaXMuc2V0U29ydERpcmVjdGlvbignREVTQycpKTtcblxuICAgIHRoaXMucmVuZGVyZXI/LmFwcGVuZENoaWxkKGljb25Db250YWluZXIsIHRoaXMudXBJY29uKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5hcHBlbmRDaGlsZChpY29uQ29udGFpbmVyLCB0aGlzLmRvd25JY29uKTtcbiAgICB0aGlzLnJlbmRlcmVyPy5hcHBlbmRDaGlsZChjb250YWluZXIsIGljb25Db250YWluZXIpO1xuXG4gICAgaWYgKHRoaXMubXVsdGlDb2x1bW5Tb3J0KCkpIHtcbiAgICAgIHRoaXMuc29ydE9yZGVyRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgdGhpcy5yZW5kZXJlcj8uc2V0U3R5bGUodGhpcy5zb3J0T3JkZXJFbGVtZW50LCAnZm9udC1zaXplJywgJzEycHgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMuc29ydE9yZGVyRWxlbWVudCwgJ2ZvbnQtd2VpZ2h0JywgJ2JvbGQnKTtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKHRoaXMuc29ydE9yZGVyRWxlbWVudCwgJ2NvbG9yJywgJyMwMDAnKTtcbiAgICAgIHRoaXMucmVuZGVyZXI/LmFwcGVuZENoaWxkKGNvbnRhaW5lciwgdGhpcy5zb3J0T3JkZXJFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyPy5hcHBlbmRDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGNvbnRhaW5lcik7XG4gICAgdGhpcy51cGRhdGVJY29uU3R5bGVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2FjdGl2ZVNvcnQnXSB8fCBjaGFuZ2VzWydhY3RpdmVTb3J0cyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUljb25TdHlsZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFNvcnREaXJlY3Rpb24oZGlyZWN0aW9uOiAnQVNDJyB8ICdERVNDJyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm11bHRpQ29sdW1uU29ydCgpKSB7XG4gICAgICB0aGlzLmhhbmRsZU11bHRpQ29sdW1uU29ydChkaXJlY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZVNpbmdsZUNvbHVtblNvcnQoZGlyZWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNpbmdsZUNvbHVtblNvcnQoZGlyZWN0aW9uOiAnQVNDJyB8ICdERVNDJyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnREaXJlY3Rpb24oKSA9PT0gZGlyZWN0aW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnREaXJlY3Rpb24uc2V0KCcnKTsgLy8gUmVzZXQgc29ydGluZyBpZiB0aGUgc2FtZSBkaXJlY3Rpb24gaXMgY2xpY2tlZFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnREaXJlY3Rpb24uc2V0KGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoeyBcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4oKSwgXG4gICAgICBkaXJlY3Rpb246IHRoaXMuY3VycmVudERpcmVjdGlvbigpLFxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcigpXG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVJY29uU3R5bGVzKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU11bHRpQ29sdW1uU29ydChkaXJlY3Rpb246ICdBU0MnIHwgJ0RFU0MnKTogdm9pZCB7XG4gICAgY29uc3QgZXhpc3RpbmdTb3J0SW5kZXggPSB0aGlzLmFjdGl2ZVNvcnRzKCkuZmluZEluZGV4KHNvcnQgPT4gc29ydC5jb2x1bW4gPT09IHRoaXMuY29sdW1uKCkpO1xuICAgIFxuICAgIGlmIChleGlzdGluZ1NvcnRJbmRleCAhPT0gLTEpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVNvcnRzKClbZXhpc3RpbmdTb3J0SW5kZXhdLmRpcmVjdGlvbiAhPT0gZGlyZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlU29ydHMoKVtleGlzdGluZ1NvcnRJbmRleF0uZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLmFjdGl2ZVNvcnRzKClbZXhpc3RpbmdTb3J0SW5kZXhdLmNvbHVtbk51bWJlciA9IHRoaXMuY29sdW1uTnVtYmVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlU29ydHMoKS5wdXNoKHsgXG4gICAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4oKSwgXG4gICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcigpXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5tdWx0aVNvcnRDaGFuZ2UuZW1pdChbLi4udGhpcy5hY3RpdmVTb3J0cygpXSk7XG4gICAgdGhpcy51cGRhdGVJY29uU3R5bGVzKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUljb25TdHlsZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVsdGlDb2x1bW5Tb3J0KCkpIHtcbiAgICAgIHRoaXMudXBkYXRlTXVsdGlDb2x1bW5JY29uU3R5bGVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlU2luZ2xlQ29sdW1uSWNvblN0eWxlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2luZ2xlQ29sdW1uSWNvblN0eWxlcygpOiB2b2lkIHtcbiAgICBjb25zdCBpc0FjdGl2ZUNvbHVtbiA9IHRoaXMuYWN0aXZlU29ydCgpPy5jb2x1bW4gPT09IHRoaXMuY29sdW1uKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKFxuICAgICAgICB0aGlzLnVwSWNvbixcbiAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICBpc0FjdGl2ZUNvbHVtbiAmJiB0aGlzLmN1cnJlbnREaXJlY3Rpb24oKSA9PT0gJ0FTQycgPyAnMScgOiAnMC41J1xuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKFxuICAgICAgICB0aGlzLmRvd25JY29uLFxuICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgIGlzQWN0aXZlQ29sdW1uICYmIHRoaXMuY3VycmVudERpcmVjdGlvbigpID09PSAnREVTQycgPyAnMScgOiAnMC41J1xuICAgICAgKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTXVsdGlDb2x1bW5JY29uU3R5bGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbHVtblNvcnQgPSB0aGlzLmFjdGl2ZVNvcnRzKCkuZmluZChzb3J0ID0+IHNvcnQuY29sdW1uID09PSB0aGlzLmNvbHVtbigpKTtcbiAgICBcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKFxuICAgICAgICB0aGlzLnVwSWNvbixcbiAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICBjb2x1bW5Tb3J0Py5kaXJlY3Rpb24gPT09ICdBU0MnID8gJzEnIDogJzAuNSdcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5kb3duSWNvbixcbiAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICBjb2x1bW5Tb3J0Py5kaXJlY3Rpb24gPT09ICdERVNDJyA/ICcxJyA6ICcwLjUnXG4gICAgICApO1xuXG4gICAgICBpZiAodGhpcy5zb3J0T3JkZXJFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHNvcnRJbmRleCA9IHRoaXMuYWN0aXZlU29ydHMoKS5maW5kSW5kZXgoc29ydCA9PiBzb3J0LmNvbHVtbiA9PT0gdGhpcy5jb2x1bW4oKSk7XG4gICAgICAgIGlmIChzb3J0SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlcj8uc2V0UHJvcGVydHkodGhpcy5zb3J0T3JkZXJFbGVtZW50LCAndGV4dENvbnRlbnQnLCAoc29ydEluZGV4ICsgMSkudG9TdHJpbmcoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlcj8uc2V0UHJvcGVydHkodGhpcy5zb3J0T3JkZXJFbGVtZW50LCAndGV4dENvbnRlbnQnLCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxufSJdfQ==