@verisoft/ui-govcz 18.8.0 → 19.0.0-rc001

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 (129) hide show
  1. package/assets/i18n/cs.json +10 -0
  2. package/assets/i18n/en.json +8 -0
  3. package/assets/sass/main.scss +6 -242
  4. package/assets/sass/utils/_utils.scss +3 -0
  5. package/assets/sass/utils/_variables.scss +3 -0
  6. package/assets/sass/utils/index.scss +2 -0
  7. package/assets/sass/vendors/_bootstrap.scss +2 -2
  8. package/fesm2022/verisoft-ui-govcz.mjs +240 -331
  9. package/fesm2022/verisoft-ui-govcz.mjs.map +1 -1
  10. package/lib/components/checkbox/checkbox.component.d.ts +2 -2
  11. package/lib/components/dropdown-button/dropdown-button.component.d.ts +15 -0
  12. package/lib/components/dropdown-button/index.d.ts +1 -0
  13. package/lib/components/errors/error.component.d.ts +1 -1
  14. package/lib/components/index.d.ts +1 -1
  15. package/lib/components/shared-components/action-button-group/action-button-group.component.d.ts +1 -2
  16. package/lib/components/tab-view/index.d.ts +0 -1
  17. package/lib/components/tab-view/tab-view-item.component.d.ts +1 -1
  18. package/lib/components/tab-view/tab-view.component.d.ts +1 -1
  19. package/lib/components/textarea/textarea.component.d.ts +5 -4
  20. package/package.json +17 -16
  21. package/assets/sass/sidemenu.css +0 -205
  22. package/esm2022/index.mjs +0 -2
  23. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +0 -34
  24. package/esm2022/lib/components/breadcrumb/index.mjs +0 -2
  25. package/esm2022/lib/components/button/button.component.mjs +0 -87
  26. package/esm2022/lib/components/button/index.mjs +0 -2
  27. package/esm2022/lib/components/calendar/calendar.component.mjs +0 -87
  28. package/esm2022/lib/components/calendar/index.mjs +0 -2
  29. package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -62
  30. package/esm2022/lib/components/checkbox/index.mjs +0 -2
  31. package/esm2022/lib/components/confirm-dialog/confirm-dialog.component.mjs +0 -72
  32. package/esm2022/lib/components/confirm-dialog/index.mjs +0 -2
  33. package/esm2022/lib/components/dropdown/dropdown-item.component.mjs +0 -14
  34. package/esm2022/lib/components/dropdown/dropdown.component.mjs +0 -280
  35. package/esm2022/lib/components/dropdown/dropdown.model.mjs +0 -2
  36. package/esm2022/lib/components/dropdown/index.mjs +0 -2
  37. package/esm2022/lib/components/errors/error.component.mjs +0 -34
  38. package/esm2022/lib/components/errors/index.mjs +0 -2
  39. package/esm2022/lib/components/form-field/form-field.component.mjs +0 -92
  40. package/esm2022/lib/components/form-field/index.mjs +0 -2
  41. package/esm2022/lib/components/header/header.component.mjs +0 -85
  42. package/esm2022/lib/components/header/index.mjs +0 -2
  43. package/esm2022/lib/components/index.mjs +0 -34
  44. package/esm2022/lib/components/input-group/index.mjs +0 -2
  45. package/esm2022/lib/components/input-group/input-group.component.mjs +0 -89
  46. package/esm2022/lib/components/loader/index.mjs +0 -2
  47. package/esm2022/lib/components/loader/loader.component.mjs +0 -34
  48. package/esm2022/lib/components/multiselect/index.mjs +0 -2
  49. package/esm2022/lib/components/multiselect/multiselect.component.mjs +0 -121
  50. package/esm2022/lib/components/number-input/index.mjs +0 -2
  51. package/esm2022/lib/components/number-input/number-input.component.mjs +0 -104
  52. package/esm2022/lib/components/page-header/index.mjs +0 -2
  53. package/esm2022/lib/components/page-header/page-header.component.mjs +0 -28
  54. package/esm2022/lib/components/password/index.mjs +0 -2
  55. package/esm2022/lib/components/password/password.component.mjs +0 -94
  56. package/esm2022/lib/components/radiobutton/index.mjs +0 -2
  57. package/esm2022/lib/components/radiobutton/radiobutton.component.mjs +0 -50
  58. package/esm2022/lib/components/search/index.mjs +0 -2
  59. package/esm2022/lib/components/search/search.component.mjs +0 -40
  60. package/esm2022/lib/components/section/index.mjs +0 -2
  61. package/esm2022/lib/components/section/section.component.mjs +0 -70
  62. package/esm2022/lib/components/shared-components/action-button-group/action-button-group.component.mjs +0 -97
  63. package/esm2022/lib/components/shared-components/action-button-group/components/action-button/action-button.component.mjs +0 -64
  64. package/esm2022/lib/components/shared-components/action-button-group/index.mjs +0 -3
  65. package/esm2022/lib/components/shared-components/dynamic-component/dynamic-component-factory.service.mjs +0 -91
  66. package/esm2022/lib/components/shared-components/dynamic-component/dynamic-component.component.mjs +0 -42
  67. package/esm2022/lib/components/shared-components/dynamic-component/index.mjs +0 -3
  68. package/esm2022/lib/components/shared-components/feature-list/directives/feature-list-column.directive.mjs +0 -43
  69. package/esm2022/lib/components/shared-components/feature-list/directives/feature-list-filter-field.directive.mjs +0 -16
  70. package/esm2022/lib/components/shared-components/feature-list/feature-list-filter.pipe.mjs +0 -24
  71. package/esm2022/lib/components/shared-components/feature-list/feature-list-page.component.mjs +0 -43
  72. package/esm2022/lib/components/shared-components/feature-list/feature-list-page.model.mjs +0 -16
  73. package/esm2022/lib/components/shared-components/feature-list/feature-list.component.mjs +0 -285
  74. package/esm2022/lib/components/shared-components/feature-list/index.mjs +0 -6
  75. package/esm2022/lib/components/shared-components/filter/directives/filter-field.directive.mjs +0 -53
  76. package/esm2022/lib/components/shared-components/filter/filter.component.mjs +0 -195
  77. package/esm2022/lib/components/shared-components/filter/filter.model.mjs +0 -16
  78. package/esm2022/lib/components/shared-components/filter/index.mjs +0 -3
  79. package/esm2022/lib/components/shared-components/generic-field/generic-field.component.mjs +0 -98
  80. package/esm2022/lib/components/shared-components/generic-field/index.mjs +0 -2
  81. package/esm2022/lib/components/shared-components/generic-form/generic-form.component.mjs +0 -46
  82. package/esm2022/lib/components/shared-components/generic-form/generic-form.model.mjs +0 -50
  83. package/esm2022/lib/components/shared-components/generic-form/index.mjs +0 -3
  84. package/esm2022/lib/components/shared-components/index.mjs +0 -7
  85. package/esm2022/lib/components/side-menu/index.mjs +0 -3
  86. package/esm2022/lib/components/side-menu/side-menu.component.mjs +0 -48
  87. package/esm2022/lib/components/side-menu/side-menu.module.mjs +0 -59
  88. package/esm2022/lib/components/snackbar/index.mjs +0 -3
  89. package/esm2022/lib/components/snackbar/services/snackbar.service.mjs +0 -75
  90. package/esm2022/lib/components/snackbar/snackbar.component.mjs +0 -61
  91. package/esm2022/lib/components/snackbar/snackbar.model.mjs +0 -2
  92. package/esm2022/lib/components/stepper/index.mjs +0 -2
  93. package/esm2022/lib/components/stepper/stepper.component.mjs +0 -66
  94. package/esm2022/lib/components/switch/index.mjs +0 -2
  95. package/esm2022/lib/components/switch/switch.component.mjs +0 -45
  96. package/esm2022/lib/components/tab-view/index.mjs +0 -4
  97. package/esm2022/lib/components/tab-view/tab-view-item.component.mjs +0 -41
  98. package/esm2022/lib/components/tab-view/tab-view.component.mjs +0 -56
  99. package/esm2022/lib/components/tab-view/tab-view.module.mjs +0 -41
  100. package/esm2022/lib/components/table/index.mjs +0 -2
  101. package/esm2022/lib/components/table/table-pagination-info.component.mjs +0 -32
  102. package/esm2022/lib/components/table/table.component.mjs +0 -359
  103. package/esm2022/lib/components/table/table.model.mjs +0 -14
  104. package/esm2022/lib/components/textarea/index.mjs +0 -2
  105. package/esm2022/lib/components/textarea/textarea.component.mjs +0 -95
  106. package/esm2022/lib/components/textfield/index.mjs +0 -2
  107. package/esm2022/lib/components/textfield/textfield.component.mjs +0 -124
  108. package/esm2022/lib/components/tooltip/index.mjs +0 -2
  109. package/esm2022/lib/components/tooltip/tooltip.component.mjs +0 -66
  110. package/esm2022/lib/components/tristatecheckbox/index.mjs +0 -2
  111. package/esm2022/lib/components/tristatecheckbox/tristatecheckbox.component.mjs +0 -89
  112. package/esm2022/lib/icons.mjs +0 -35
  113. package/esm2022/lib/index.mjs +0 -6
  114. package/esm2022/lib/init.service.mjs +0 -17
  115. package/esm2022/lib/pages/index.mjs +0 -4
  116. package/esm2022/lib/pages/not-authenticated/index.mjs +0 -2
  117. package/esm2022/lib/pages/not-authenticated/not-authenticated.component.mjs +0 -17
  118. package/esm2022/lib/pages/not-authorized/index.mjs +0 -2
  119. package/esm2022/lib/pages/not-authorized/not-authorized.component.mjs +0 -20
  120. package/esm2022/lib/pages/not-found/index.mjs +0 -2
  121. package/esm2022/lib/pages/not-found/not-found.component.mjs +0 -20
  122. package/esm2022/lib/pipes/color/color.pipe.mjs +0 -27
  123. package/esm2022/lib/pipes/index.mjs +0 -4
  124. package/esm2022/lib/pipes/multiselect/multiselect-options.pipe.mjs +0 -52
  125. package/esm2022/lib/pipes/size/size.pipe.mjs +0 -23
  126. package/esm2022/verisoft-ui-govcz.mjs +0 -5
  127. package/lib/components/tab-view/tab-view.module.d.ts +0 -12
  128. package/lib/components/tristatecheckbox/index.d.ts +0 -1
  129. package/lib/components/tristatecheckbox/tristatecheckbox.component.d.ts +0 -27
@@ -1,41 +0,0 @@
1
- import { NgTemplateOutlet } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
4
- import { GovDesignSystemModule } from '@gov-design-system-ce/angular';
5
- import { TranslateModule } from '@ngx-translate/core';
6
- import { TAB_VIEW_COMPONENT_TOKEN } from '@verisoft/ui-core';
7
- import { TabViewItemComponent } from './tab-view-item.component';
8
- import { TabViewComponent } from './tab-view.component';
9
- import * as i0 from "@angular/core";
10
- export class TabViewModule {
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TabViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type: TabViewModule, declarations: [TabViewComponent, TabViewItemComponent], imports: [RouterOutlet,
13
- NgTemplateOutlet,
14
- GovDesignSystemModule,
15
- RouterLinkActive,
16
- RouterLink,
17
- TranslateModule], exports: [TabViewComponent, TabViewItemComponent] });
18
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TabViewModule, providers: [
19
- { provide: TAB_VIEW_COMPONENT_TOKEN, useExisting: TabViewComponent },
20
- ], imports: [GovDesignSystemModule,
21
- TranslateModule] });
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TabViewModule, decorators: [{
24
- type: NgModule,
25
- args: [{
26
- imports: [
27
- RouterOutlet,
28
- NgTemplateOutlet,
29
- GovDesignSystemModule,
30
- RouterLinkActive,
31
- RouterLink,
32
- TranslateModule
33
- ],
34
- declarations: [TabViewComponent, TabViewItemComponent],
35
- exports: [TabViewComponent, TabViewItemComponent],
36
- providers: [
37
- { provide: TAB_VIEW_COMPONENT_TOKEN, useExisting: TabViewComponent },
38
- ],
39
- }]
40
- }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXZpZXcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktZ292Y3ovc3JjL2xpYi9jb21wb25lbnRzL3RhYi12aWV3L3RhYi12aWV3Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQWlCeEQsTUFBTSxPQUFPLGFBQWE7dUdBQWIsYUFBYTt3R0FBYixhQUFhLGlCQU5ULGdCQUFnQixFQUFFLG9CQUFvQixhQVBuRCxZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLHFCQUFxQjtZQUNyQixnQkFBZ0I7WUFDaEIsVUFBVTtZQUNWLGVBQWUsYUFHUCxnQkFBZ0IsRUFBRSxvQkFBb0I7d0dBS3JDLGFBQWEsYUFKYjtZQUNULEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRTtTQUNyRSxZQVRDLHFCQUFxQjtZQUdyQixlQUFlOzsyRkFRTixhQUFhO2tCQWZ6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixnQkFBZ0I7d0JBQ2hCLFVBQVU7d0JBQ1YsZUFBZTtxQkFDaEI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3RELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDO29CQUNqRCxTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFO3FCQUNyRTtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmssIFJvdXRlckxpbmtBY3RpdmUsIFJvdXRlck91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBHb3ZEZXNpZ25TeXN0ZW1Nb2R1bGUgfSBmcm9tICdAZ292LWRlc2lnbi1zeXN0ZW0tY2UvYW5ndWxhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRBQl9WSUVXX0NPTVBPTkVOVF9UT0tFTiB9IGZyb20gJ0B2ZXJpc29mdC91aS1jb3JlJztcbmltcG9ydCB7IFRhYlZpZXdJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90YWItdmlldy1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi90YWItdmlldy5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgUm91dGVyT3V0bGV0LFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgR292RGVzaWduU3lzdGVtTW9kdWxlLFxuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgUm91dGVyTGluayxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbVGFiVmlld0NvbXBvbmVudCwgVGFiVmlld0l0ZW1Db21wb25lbnRdLFxuICBleHBvcnRzOiBbVGFiVmlld0NvbXBvbmVudCwgVGFiVmlld0l0ZW1Db21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IFRBQl9WSUVXX0NPTVBPTkVOVF9UT0tFTiwgdXNlRXhpc3Rpbmc6IFRhYlZpZXdDb21wb25lbnQgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFiVmlld01vZHVsZSB7fVxuIl19
@@ -1,2 +0,0 @@
1
- export * from './table.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1nb3Zjei9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcbiJdfQ==
@@ -1,32 +0,0 @@
1
- import { Component, Input } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export class TablePaginationInfoComponent {
4
- showingText = 'Showing';
5
- toText = 'to';
6
- ofText = 'of';
7
- entriesText = 'entries';
8
- currentPage = 0;
9
- pageSize = 0;
10
- total = 0;
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TablePaginationInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: TablePaginationInfoComponent, isStandalone: true, selector: "v-table-pagination-info", inputs: { showingText: "showingText", toText: "toText", ofText: "ofText", entriesText: "entriesText", currentPage: "currentPage", pageSize: "pageSize", total: "total" }, ngImport: i0, template: "<span>\n {{ showingText }} {{ (currentPage - 1) * pageSize + 1 }} {{ toText }}\n {{\n currentPage * pageSize < total\n ? currentPage * pageSize\n : total\n }}\n {{ ofText }} {{ total }} {{ entriesText }}\n</span>" });
13
- }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TablePaginationInfoComponent, decorators: [{
15
- type: Component,
16
- args: [{ standalone: true, selector: "v-table-pagination-info", template: "<span>\n {{ showingText }} {{ (currentPage - 1) * pageSize + 1 }} {{ toText }}\n {{\n currentPage * pageSize < total\n ? currentPage * pageSize\n : total\n }}\n {{ ofText }} {{ total }} {{ entriesText }}\n</span>" }]
17
- }], propDecorators: { showingText: [{
18
- type: Input
19
- }], toText: [{
20
- type: Input
21
- }], ofText: [{
22
- type: Input
23
- }], entriesText: [{
24
- type: Input
25
- }], currentPage: [{
26
- type: Input
27
- }], pageSize: [{
28
- type: Input
29
- }], total: [{
30
- type: Input
31
- }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5hdGlvbi1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWdvdmN6L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS1wYWdpbmF0aW9uLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktZ292Y3ovc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLXBhZ2luYXRpb24taW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPakQsTUFBTSxPQUFPLDRCQUE0QjtJQUM5QixXQUFXLEdBQUcsU0FBUyxDQUFBO0lBRXZCLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFFZCxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBRWQsV0FBVyxHQUFHLFNBQVMsQ0FBQTtJQUV2QixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBRWhCLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFYixLQUFLLEdBQUcsQ0FBQyxDQUFDO3VHQWJSLDRCQUE0QjsyRkFBNUIsNEJBQTRCLDZQQ1B6Qyx1T0FRTzs7MkZERE0sNEJBQTRCO2tCQUx4QyxTQUFTO2lDQUNJLElBQUksWUFDTix5QkFBeUI7OEJBSTFCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcInYtdGFibGUtcGFnaW5hdGlvbi1pbmZvXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtcGFnaW5hdGlvbi1pbmZvLmNvbXBvbmVudC5odG1sXCIsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlUGFnaW5hdGlvbkluZm9Db21wb25lbnQge1xuICBASW5wdXQoKSBzaG93aW5nVGV4dCA9ICdTaG93aW5nJ1xuXG4gIEBJbnB1dCgpIHRvVGV4dCA9ICd0byc7XG5cbiAgQElucHV0KCkgb2ZUZXh0ID0gJ29mJztcblxuICBASW5wdXQoKSBlbnRyaWVzVGV4dCA9ICdlbnRyaWVzJ1xuXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlID0gMDtcblxuICBASW5wdXQoKSBwYWdlU2l6ZSA9IDA7XG5cbiAgQElucHV0KCkgdG90YWwgPSAwO1xufVxuIiwiPHNwYW4+XG4gIHt7IHNob3dpbmdUZXh0IH19IHt7IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxIH19IHt7IHRvVGV4dCB9fVxuICB7e1xuICAgIGN1cnJlbnRQYWdlICogcGFnZVNpemUgPCB0b3RhbFxuICAgICAgPyBjdXJyZW50UGFnZSAqIHBhZ2VTaXplXG4gICAgICA6IHRvdGFsXG4gIH19XG4gIHt7IG9mVGV4dCB9fSB7eyB0b3RhbCB9fSB7eyBlbnRyaWVzVGV4dCB9fVxuPC9zcGFuPiJdfQ==
@@ -1,359 +0,0 @@
1
- import { CommonModule, NgTemplateOutlet } from '@angular/common';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, effect, EventEmitter, inject, Input, Output, QueryList, TemplateRef, } from '@angular/core';
3
- import { ActivatedRoute, Router, RouterModule } from '@angular/router';
4
- import { GovDesignSystemModule } from '@gov-design-system-ce/angular';
5
- import { TranslateModule } from '@ngx-translate/core';
6
- import { DEFAULT_SEARCH_LIMIT, multiSort, } from '@verisoft/core';
7
- import { ColumnModel, DEFAULT_PAGINATION, FieldSize, MAX_COLUMN_CHAR_COUNT, RowModel, TABLE_COLUMN_PROVIDER, TABLE_COMPONENT_TOKEN, TableSelectionMode, TableService, } from '@verisoft/ui-core';
8
- import { Icons } from '../../icons';
9
- import { GovSizePipe } from '../../pipes';
10
- import { LoaderComponent } from '../loader';
11
- import { TablePaginationInfoComponent } from './table-pagination-info.component';
12
- import { getNextSortDirection } from './table.model';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@angular/common";
15
- import * as i2 from "@angular/router";
16
- import * as i3 from "@gov-design-system-ce/angular";
17
- import * as i4 from "@ngx-translate/core";
18
- export class TableComponent {
19
- viewColumns;
20
- rowDetailTemplate;
21
- rowDetailButtonTemplate;
22
- sorters;
23
- data;
24
- total = 0;
25
- filter;
26
- extraFilter;
27
- loading = false;
28
- scrollable = true;
29
- pageSize = DEFAULT_SEARCH_LIMIT;
30
- currentPage = 1;
31
- showPaginator = true;
32
- userTableWrapper = true;
33
- sortMultiple = false;
34
- lazy = false;
35
- selectionMode;
36
- selection = [];
37
- showPageSizePicker = true;
38
- entityKey;
39
- customRoute;
40
- disableCustomClicks = false;
41
- tableName;
42
- size = FieldSize.medium;
43
- showActionButtons = false;
44
- maximumColumnLength = MAX_COLUMN_CHAR_COUNT;
45
- set columns(value) {
46
- this._columns = value;
47
- this.updateColumnModels();
48
- }
49
- get columns() {
50
- return this._columns;
51
- }
52
- selectionChange = new EventEmitter();
53
- lazyLoad = new EventEmitter();
54
- download = new EventEmitter();
55
- delete = new EventEmitter();
56
- save = new EventEmitter();
57
- cdRef = inject(ChangeDetectorRef);
58
- router = inject(Router);
59
- route = inject(ActivatedRoute);
60
- service = inject(TableService);
61
- _columns = [];
62
- tableColumns = [];
63
- tableRows = [];
64
- pageSizeOptions = DEFAULT_PAGINATION.map((x) => ({ value: x.toString() }));
65
- allSelected = false;
66
- icons = Icons;
67
- get govPageSize() {
68
- return this.pageSize.toString();
69
- }
70
- get tableRowView() {
71
- if (this.lazy) {
72
- return this.tableRows;
73
- }
74
- else {
75
- const start = (this.currentPage - 1) * this.pageSize;
76
- const end = start + this.pageSize;
77
- return this.tableRows.slice(start, end);
78
- }
79
- }
80
- get selected() {
81
- return this.tableRows.filter(r => r.selected);
82
- }
83
- get selectedCount() {
84
- return this.selected.length;
85
- }
86
- constructor() {
87
- effect(() => {
88
- this.reactToSignals();
89
- });
90
- }
91
- ngOnChanges(changes) {
92
- if (changes['data']) {
93
- this.updateRowModels();
94
- if (!this.lazy && this.data) {
95
- this.total = this.data.length;
96
- }
97
- }
98
- if (changes['selection']) {
99
- this.selectSelected();
100
- }
101
- if (changes['filter']) {
102
- this.updateFilter();
103
- }
104
- }
105
- ngAfterViewInit() {
106
- if (this.viewColumns?.length) {
107
- this.updateColumnModels();
108
- this.cdRef.detectChanges();
109
- }
110
- }
111
- sortColumn(column) {
112
- if (column.sortable) {
113
- column.sortDirection = getNextSortDirection(column.sortDirection, this.sortMultiple);
114
- if (!this.sortMultiple) {
115
- this.tableColumns
116
- .filter((x) => x !== column)
117
- .forEach((x) => {
118
- x.sortDirection = undefined;
119
- });
120
- }
121
- const sorts = this.getSorts().map((x) => ({
122
- field: 'row.' + x.field,
123
- direction: x.direction,
124
- }));
125
- if (!this.lazy) {
126
- this.tableRows = multiSort(this.tableRows, sorts);
127
- }
128
- else {
129
- this.fireLazyLoad();
130
- }
131
- }
132
- }
133
- changePage(event) {
134
- this.currentPage = event.detail.pagination.currentPage;
135
- this.fireLazyLoad();
136
- }
137
- changePageSize(event) {
138
- this.pageSize = parseInt(event.detail.value);
139
- this.currentPage = 1;
140
- this.fireLazyLoad();
141
- }
142
- selectRow(row, event) {
143
- if (event.ctrlKey || event.metaKey) {
144
- this.navigate(row, event);
145
- return;
146
- }
147
- if (this.selectionMode === 'single') {
148
- row.selected = !row.selected;
149
- this.tableRows.forEach((x) => (x !== row ? (x.selected = false) : null));
150
- this.fireSelectionChange();
151
- }
152
- else if (this.selectionMode === 'multiple') {
153
- row.selected = !row.selected;
154
- this.fireSelectionChange();
155
- }
156
- }
157
- navigate(row, event) {
158
- if (this.disableCustomClicks) {
159
- return;
160
- }
161
- event.preventDefault();
162
- const targetUrl = this.createUrl(row);
163
- if (event.ctrlKey || event.metaKey) {
164
- setTimeout(() => {
165
- window.open(this.router.serializeUrl(this.router.createUrlTree([targetUrl], { relativeTo: this.route })), '_blank');
166
- }, 0);
167
- }
168
- else {
169
- this.router.navigate([targetUrl], { relativeTo: this.route });
170
- }
171
- }
172
- navigateNewWindow(row, event) {
173
- if (this.disableCustomClicks || event.button !== 1) {
174
- return;
175
- }
176
- event.preventDefault();
177
- const targetUrl = this.createUrl(row);
178
- window.open(this.router.serializeUrl(this.router.createUrlTree([targetUrl], { relativeTo: this.route })), '_blank');
179
- }
180
- toggleAll(event) {
181
- this.allSelected = event.detail.checked;
182
- this.tableRows.forEach((x) => (x.selected = this.allSelected));
183
- this.fireSelectionChange();
184
- }
185
- toggleDetail(row) {
186
- row.expanded = !row.expanded;
187
- this.cdRef.detectChanges();
188
- }
189
- selectRowCheckbox(row, event) {
190
- row.selected = event.detail.checked;
191
- this.allSelected = this.tableRows.every((x) => x.selected);
192
- this.fireSelectionChange();
193
- }
194
- truncate(text) {
195
- return text.length > this.maximumColumnLength
196
- ? text.slice(0, this.maximumColumnLength) + '...'
197
- : text;
198
- }
199
- deselectAll() {
200
- this.allSelected = false;
201
- this.tableRows.forEach(x => (x.selected = this.allSelected));
202
- }
203
- createUrl(row) {
204
- if (row.customRoute) {
205
- return row.customRoute;
206
- }
207
- return row.id.toString();
208
- }
209
- reactToSignals() {
210
- const reload = this.service.reload();
211
- if (typeof reload === 'symbol') {
212
- this.fireLazyLoad();
213
- }
214
- else if (reload.name === this.tableName) {
215
- this.fireLazyLoad();
216
- }
217
- this.deselectAll();
218
- }
219
- updateColumnModels() {
220
- const viewColumns = this.viewColumns
221
- ?.toArray()
222
- .map((x) => x.getDefinition());
223
- this.tableColumns = [...(this._columns ?? []), ...(viewColumns ?? [])].map((x) => new ColumnModel(x));
224
- }
225
- updateRowModels() {
226
- this.tableRows = (this.data ?? []).map((x) => new RowModel(x, false, false, undefined, undefined, undefined, this.customRoute, this.entityKey));
227
- }
228
- fireSelectionChange() {
229
- const selectedRows = this.tableRows
230
- .filter((x) => x.selected)
231
- .map((x) => x.row);
232
- this.selectionChange.emit(selectedRows);
233
- }
234
- selectSelected() {
235
- if (this.selection?.length && this.selectionMode) {
236
- const selection = this.selectionMode === TableSelectionMode.single
237
- ? [this.selection[0]]
238
- : this.selection;
239
- const selectionSet = new Set(selection);
240
- this.tableRows.forEach((item) => {
241
- item.selected = selectionSet.has(item.row);
242
- });
243
- this.allSelected = this.tableRows.every((x) => x.selected);
244
- }
245
- }
246
- fireLazyLoad() {
247
- const lazyLoadEvent = {
248
- sort: this.getSorts(),
249
- offset: (this.currentPage - 1) * this.pageSize,
250
- limit: this.pageSize,
251
- filter: this.filter,
252
- };
253
- this.lazyLoad.emit(lazyLoadEvent);
254
- }
255
- updateFilter() {
256
- this.fireLazyLoad();
257
- }
258
- getSorts() {
259
- return this.tableColumns
260
- .filter((x) => x.sortable && x.sortDirection)
261
- .map((x) => ({
262
- field: x.id,
263
- direction: x.sortDirection,
264
- }));
265
- }
266
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
267
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: TableComponent, isStandalone: true, selector: "v-table", inputs: { sorters: "sorters", data: "data", total: "total", filter: "filter", extraFilter: "extraFilter", loading: "loading", scrollable: "scrollable", pageSize: "pageSize", currentPage: "currentPage", showPaginator: "showPaginator", userTableWrapper: "userTableWrapper", sortMultiple: "sortMultiple", lazy: "lazy", selectionMode: "selectionMode", selection: "selection", showPageSizePicker: "showPageSizePicker", entityKey: "entityKey", customRoute: "customRoute", disableCustomClicks: "disableCustomClicks", tableName: "tableName", size: "size", showActionButtons: "showActionButtons", maximumColumnLength: "maximumColumnLength", columns: "columns" }, outputs: { selectionChange: "selectionChange", lazyLoad: "lazyLoad", download: "download", delete: "delete", save: "save" }, providers: [
268
- {
269
- provide: TABLE_COMPONENT_TOKEN,
270
- useExisting: TableComponent,
271
- },
272
- ], queries: [{ propertyName: "rowDetailTemplate", first: true, predicate: ["rowDetail"], descendants: true }, { propertyName: "rowDetailButtonTemplate", first: true, predicate: ["rowDetailButton"], descendants: true }, { propertyName: "viewColumns", predicate: TABLE_COLUMN_PROVIDER }], usesOnChanges: true, ngImport: i0, template: "@if (selectionMode === 'multiple' && showActionButtons) {\n<gov-flex\n class=\"gov-table-complex__actions mt-2\"\n justify-content=\"space-between\"\n align-items=\"center\"\n>\n <div class=\"gov-table-complex__records-selected\">\n {{ selectedCount }} {{ ('TABLES.CHOSEN_RECORDS' | translate) ?? 'chosen records'}}\n </div>\n <div>\n <gov-button color=\"primary\" size=\"s\" type=\"solid\" (gov-click)=\"delete.emit(selected)\">\n {{ ('BUTTONS.DELETE' | translate) ?? 'Delete'}}\n </gov-button>\n <gov-button color=\"primary\" size=\"s\" type=\"solid\" (gov-click)=\"save.emit(selected)\">\n {{ ('BUTTONS.SAVE' | translate) ?? 'Save'}}\n </gov-button>\n <gov-button color=\"primary\" size=\"s\" type=\"solid\" (gov-click)=\"download.emit(selected)\">\n {{ ('BUTTONS.DOWNLOAD' | translate) ?? 'Download'}}\n </gov-button>\n <gov-button color=\"primary\" size=\"s\" type=\"solid\" (gov-click)=\"deselectAll()\">\n {{ ('BUTTONS.CANCEL' | translate) ?? 'Cancel'}}\n </gov-button>\n </div>\n</gov-flex>\n}\n\n<div\n class=\" v-table gov-table\"\n [attr.size]=\"size | govSize\"\n>\n <table class=\"v-table__table\">\n <thead class=\"v-table__head\">\n <tr class=\"v-table__header\">\n @if (this.rowDetailTemplate) {\n <th></th>\n } @if (selectionMode === 'multiple') {\n <th scope=\"col\">\n <gov-form-checkbox\n [checked]=\"allSelected\"\n (gov-change)=\"toggleAll($event)\"\n />\n </th>\n }\n @for (column of tableColumns; track column; let index = $index) {\n @if (column.visible && column.forceVisibility !== 'hidden') {\n <th\n scope=\"col\"\n [style]=\"{'text-align': column.textAlign}\"\n >\n <span\n class=\"gov-table--fit-width\"\n [class.v-table__sortable]=\"column.sortable\"\n [class.v-table__sortable--desc]=\"column.sortable && column.sortDirection === 'desc'\"\n [class.v-table__sortable--asc]=\"column.sortable && column.sortDirection === 'asc'\"\n (click)=\"sortColumn(column)\"\n >\n {{ column.headerGetter(column.id, index) | translate }}\n </span>\n </th>\n } @if (this.rowDetailButtonTemplate) {\n <th></th>\n }}\n </tr>\n </thead>\n @if (loading) {\n <v-loader />\n } @else {\n <tbody class=\"v-table__body\">\n @for (data of tableRowView; track data.id; let rowIndex = $index) {\n <tr\n class=\"v-table__row\"\n [class.gov-table--highlight]=\"data.selected && selectionMode\"\n (click)=\"selectRow(data, $event)\"\n (dblclick)=\"navigate(data, $event)\"\n (mousedown)=\"navigateNewWindow(data, $event)\"\n >\n @if (this.rowDetailTemplate) {\n <td>\n <gov-button\n [size]=\"size | govSize\"\n color=\"primary\"\n type=\"solid\"\n (gov-click)=\"toggleDetail(data)\"\n >\n <gov-icon\n [name]=\"data.expanded ? 'chevron-up' : 'chevron-down'\"\n [size]=\"size | govSize\"\n slot=\"icon-start\"\n ></gov-icon>\n </gov-button>\n </td>\n } @if (selectionMode === 'multiple') {\n <td class=\"gov-table--fit-content gov-table--border-right\">\n <gov-form-checkbox\n no-label\n [checked]=\"data.selected\"\n [size]=\"size | govSize\"\n (gov-change)=\"selectRowCheckbox(data, $event)\"\n ></gov-form-checkbox>\n </td>\n }\n @for (column of tableColumns; track column; let columnIndex = $index) {\n @if (column.visible && column.forceVisibility !== 'hidden') {\n <td\n [style]=\"{'text-align': column.textAlign}\"\n [class]=\"column.columnClass!\"\n [class.v-auto-cell]=\"column.template\"\n >\n @if (column.template) {\n <ng-container\n *ngTemplateOutlet=\"\n column.template;\n context: { $implicit: data.row }\n \"\n ></ng-container>\n } @else {\n <span\n [queryParams]=\"column.queryParams ? column.queryParams : undefined\"\n [routerLink]=\"column.routerLink ? column.routerLink(data.row) : undefined\"\n [innerHTML]=\"truncate(column.valueGetter(data.row, rowIndex))\"\n [attr.title]=\"\n column.valueGetter(data.row, rowIndex).length > maximumColumnLength\n ? column.valueGetter(data.row, rowIndex)\n : null\n \"\n ></span>\n }\n </td>\n @if (this.rowDetailButtonTemplate) {\n <td scope=\"\">\n <ng-container\n *ngTemplateOutlet=\"\n this.rowDetailButtonTemplate;\n context: { $implicit: data.row }\n \"\n ></ng-container>\n </td>\n }}}\n </tr>\n @if (this.rowDetailTemplate && data.expanded) {\n <tr>\n <td [attr.colspan]=\"tableColumns.length + 1\">\n <ng-container\n class=\"w-100\"\n *ngTemplateOutlet=\"\n this.rowDetailTemplate;\n context: { $implicit: data.row }\n \"\n ></ng-container>\n </td>\n </tr>\n } } @if (!tableRows.length && !loading){\n <td [attr.colspan]=\"tableColumns.length\">\n <gov-empty align=\"center\" [size]=\"size | govSize\">\n <gov-icon slot=\"icon\" name=\"empty-file\" type=\"colored\"/>\n <p slot=\"headline\">\n {{ ('TABLES.EMPTY' | translate) ?? 'No records were found!' }}\n </p>\n </gov-empty>\n </td>\n }\n </tbody>\n }\n </table>\n @if(showPaginator) {\n <div class=\"v-table__paginator d-flex pt-3 pb-3\">\n @if (tableRows.length) {\n <div class=\"mt-2\">\n <v-table-pagination-info\n [showingText]=\"'TABLES.PAGINATION.SHOWING' | translate\"\n [toText]=\"'TABLES.PAGINATION.TO' | translate\"\n [ofText]=\"'TABLES.PAGINATION.OF' | translate\"\n [entriesText]=\"'TABLES.PAGINATION.ENTRIES' | translate\"\n [currentPage]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [total]=\"total\"\n />\n </div>\n <div class=\"ms-4\">\n <gov-form-select\n [options]=\"pageSizeOptions\"\n [value]=\"govPageSize\"\n (gov-change)=\"changePageSize($event)\"\n ></gov-form-select>\n </div>\n }\n <div class=\"ms-4\">\n <gov-pagination\n [current]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [total]=\"total\"\n [type]=\"'button'\"\n (gov-page)=\"changePage($event)\"\n ></gov-pagination>\n </div>\n </div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.v-table{position:relative;height:100%;display:flex;flex-direction:column}.v-table__sortable{color:var(--text-primary-color);text-decoration:underline;transition:color .15s ease-in-out;cursor:pointer}.v-table__sortable:after{content:\"\\2191\\2193\";margin-left:.5rem;text-decoration:none;display:inline-block}.v-table__sortable--asc:after{content:\"\\2191\"}.v-table__sortable--desc:after{content:\"\\2193\"}.v-table__header{background-color:var(--background-block-primary);position:sticky;top:0;z-index:2}.v-table__table{width:100%}.v-table__paginator{background-color:var(--background-neutral-white);justify-content:end;position:sticky;bottom:0;z-index:3}.gov-table{width:100%;overflow-x:auto}.gov-table table{table-layout:auto;min-width:100%;border-collapse:collapse}.gov-table table tr.gov-table--highlight td{background-color:var(--background-primary-subtle)}.gov-table table th,.gov-table table td{border-bottom:1px solid var(--border-subtlest);text-align:left}.gov-table table th.gov-table--align-right,.gov-table table td.gov-table--align-right{text-align:right}.gov-table table th.gov-table--vertical-align-top,.gov-table table td.gov-table--vertical-align-top{vertical-align:top}.gov-table table th.gov-table--border-right,.gov-table table td.gov-table--border-right{border-right:1px solid var(--border-subtlest)}.gov-table table th.gov-table--border-left,.gov-table table td.gov-table--border-left{border-left:1px solid var(--border-subtlest)}.gov-table table th.gov-table--border-bottom-none,.gov-table table td.gov-table--border-bottom-none{border-bottom:none}.gov-table table th.gov-table--nowrap,.gov-table table td.gov-table--nowrap{white-space:nowrap}.gov-table table th.gov-table--fit-width,.gov-table table td.gov-table--fit-width{width:1px}.gov-table table th{color:var(--text-primary);background-color:var(--background-neutral-subtlest)}.gov-table table td{background-color:var(--background-neutral-white)}.gov-table table tr.open td{padding:var(--spacing-s) var(--spacing-m)}.gov-table summary::-webkit-details-marker{display:none}.gov-table[size=s] table{border-bottom-left-radius:var(--corner-radius-s);border-bottom-right-radius:var(--corner-radius-s)}.gov-table[size=s] table th,.gov-table[size=s] table td{height:var(--height-2xl);padding:0 var(--spacing-s);font-size:var(--font-size-body-s);line-height:150%;font-weight:400}.gov-table[size=s] table th{font-weight:700}.gov-table[size=m] table{border-bottom-left-radius:var(--corner-radius-m);border-bottom-right-radius:var(--corner-radius-m)}.gov-table[size=m] table th,.gov-table[size=m] table td{height:var(--height-3xl);padding:0 var(--spacing-m);font-size:var(--font-size-body-m);line-height:150%;font-weight:400}.gov-table[size=m] table th{font-weight:700}.gov-table[size=l] table{border-bottom-left-radius:var(--corner-radius-l);border-bottom-right-radius:var(--corner-radius-l)}.gov-table[size=l] table th,.gov-table[size=l] table td{height:var(--height-4xl);padding:0 var(--spacing-l);font-size:var(--font-size-body-l);line-height:150%;font-weight:400}.gov-table[size=l] table th{font-weight:700}.gov-table-complex__name,.gov-table-complex__description{margin:0;color:var(--text-primary)}.gov-table-complex__actions{color:var(--text-white-fixed);background-color:var(--background-primary);padding:var(--spacing-xs) var(--spacing-s)}.gov-table-complex__per-page{width:185px;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: GovDesignSystemModule }, { kind: "component", type: i3.GovButton, selector: "gov-button", inputs: ["color", "disabled", "download", "expanded", "focusable", "href", "hreflang", "identifier", "loading", "name", "nativeType", "referrerpolicy", "rel", "size", "target", "type"] }, { kind: "component", type: i3.GovEmpty, selector: "gov-empty", inputs: ["size"] }, { kind: "component", type: i3.GovFlex, selector: "gov-flex", inputs: ["alignContent", "alignItems", "alignSelf", "direction", "justifyContent", "wrap"] }, { kind: "component", type: i3.GovFormCheckbox, selector: "gov-form-checkbox", inputs: ["checked", "disabled", "identifier", "indeterminate", "invalid", "name", "noLabel", "required", "size", "value"] }, { kind: "component", type: i3.GovFormSelect, selector: "gov-form-select", inputs: ["disabled", "identifier", "invalid", "name", "options", "required", "size", "success", "value"] }, { kind: "component", type: i3.GovIcon, selector: "gov-icon", inputs: ["color", "name", "size", "type"] }, { kind: "component", type: i3.GovPagination, selector: "gov-pagination", inputs: ["accessiblePageLabel", "accessibleSelectLabel", "color", "current", "labelEnd", "labelNext", "labelPrev", "labelStart", "link", "maxPages", "pageSize", "selectIdentifier", "size", "total", "type"] }, { kind: "directive", type: i3.BooleanValueAccessor, selector: "gov-form-checkbox,gov-form-switch" }, { kind: "directive", type: i3.SelectValueAccessor, selector: "gov-form-select, gov-form-multi-select" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: GovSizePipe, name: "govSize" }, { kind: "component", type: LoaderComponent, selector: "v-loader", inputs: ["size", "message"] }, { kind: "component", type: TablePaginationInfoComponent, selector: "v-table-pagination-info", inputs: ["showingText", "toText", "ofText", "entriesText", "currentPage", "pageSize", "total"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
273
- }
274
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TableComponent, decorators: [{
275
- type: Component,
276
- args: [{ selector: 'v-table', standalone: true, imports: [
277
- CommonModule,
278
- RouterModule,
279
- GovDesignSystemModule,
280
- NgTemplateOutlet,
281
- TranslateModule,
282
- GovSizePipe,
283
- LoaderComponent,
284
- TablePaginationInfoComponent,
285
- ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
286
- {
287
- provide: TABLE_COMPONENT_TOKEN,
288
- useExisting: TableComponent,
289
- },
290
- ], template: "@if (selectionMode === 'multiple' && showActionButtons) {\n<gov-flex\n class=\"gov-table-complex__actions mt-2\"\n justify-content=\"space-between\"\n align-items=\"center\"\n>\n <div class=\"gov-table-complex__records-selected\">\n {{ selectedCount }} {{ ('TABLES.CHOSEN_RECORDS' | translate) ?? 'chosen records'}}\n </div>\n <div>\n <gov-button color=\"primary\" size=\"s\" type=\"solid\" (gov-click)=\"delete.emit(selected)\">\n {{ ('BUTTONS.DELETE' | translate) ?? 'Delete'}}\n </gov-button>\n <gov-button color=\"primary\" size=\"s\" type=\"solid\" (gov-click)=\"save.emit(selected)\">\n {{ ('BUTTONS.SAVE' | translate) ?? 'Save'}}\n </gov-button>\n <gov-button color=\"primary\" size=\"s\" type=\"solid\" (gov-click)=\"download.emit(selected)\">\n {{ ('BUTTONS.DOWNLOAD' | translate) ?? 'Download'}}\n </gov-button>\n <gov-button color=\"primary\" size=\"s\" type=\"solid\" (gov-click)=\"deselectAll()\">\n {{ ('BUTTONS.CANCEL' | translate) ?? 'Cancel'}}\n </gov-button>\n </div>\n</gov-flex>\n}\n\n<div\n class=\" v-table gov-table\"\n [attr.size]=\"size | govSize\"\n>\n <table class=\"v-table__table\">\n <thead class=\"v-table__head\">\n <tr class=\"v-table__header\">\n @if (this.rowDetailTemplate) {\n <th></th>\n } @if (selectionMode === 'multiple') {\n <th scope=\"col\">\n <gov-form-checkbox\n [checked]=\"allSelected\"\n (gov-change)=\"toggleAll($event)\"\n />\n </th>\n }\n @for (column of tableColumns; track column; let index = $index) {\n @if (column.visible && column.forceVisibility !== 'hidden') {\n <th\n scope=\"col\"\n [style]=\"{'text-align': column.textAlign}\"\n >\n <span\n class=\"gov-table--fit-width\"\n [class.v-table__sortable]=\"column.sortable\"\n [class.v-table__sortable--desc]=\"column.sortable && column.sortDirection === 'desc'\"\n [class.v-table__sortable--asc]=\"column.sortable && column.sortDirection === 'asc'\"\n (click)=\"sortColumn(column)\"\n >\n {{ column.headerGetter(column.id, index) | translate }}\n </span>\n </th>\n } @if (this.rowDetailButtonTemplate) {\n <th></th>\n }}\n </tr>\n </thead>\n @if (loading) {\n <v-loader />\n } @else {\n <tbody class=\"v-table__body\">\n @for (data of tableRowView; track data.id; let rowIndex = $index) {\n <tr\n class=\"v-table__row\"\n [class.gov-table--highlight]=\"data.selected && selectionMode\"\n (click)=\"selectRow(data, $event)\"\n (dblclick)=\"navigate(data, $event)\"\n (mousedown)=\"navigateNewWindow(data, $event)\"\n >\n @if (this.rowDetailTemplate) {\n <td>\n <gov-button\n [size]=\"size | govSize\"\n color=\"primary\"\n type=\"solid\"\n (gov-click)=\"toggleDetail(data)\"\n >\n <gov-icon\n [name]=\"data.expanded ? 'chevron-up' : 'chevron-down'\"\n [size]=\"size | govSize\"\n slot=\"icon-start\"\n ></gov-icon>\n </gov-button>\n </td>\n } @if (selectionMode === 'multiple') {\n <td class=\"gov-table--fit-content gov-table--border-right\">\n <gov-form-checkbox\n no-label\n [checked]=\"data.selected\"\n [size]=\"size | govSize\"\n (gov-change)=\"selectRowCheckbox(data, $event)\"\n ></gov-form-checkbox>\n </td>\n }\n @for (column of tableColumns; track column; let columnIndex = $index) {\n @if (column.visible && column.forceVisibility !== 'hidden') {\n <td\n [style]=\"{'text-align': column.textAlign}\"\n [class]=\"column.columnClass!\"\n [class.v-auto-cell]=\"column.template\"\n >\n @if (column.template) {\n <ng-container\n *ngTemplateOutlet=\"\n column.template;\n context: { $implicit: data.row }\n \"\n ></ng-container>\n } @else {\n <span\n [queryParams]=\"column.queryParams ? column.queryParams : undefined\"\n [routerLink]=\"column.routerLink ? column.routerLink(data.row) : undefined\"\n [innerHTML]=\"truncate(column.valueGetter(data.row, rowIndex))\"\n [attr.title]=\"\n column.valueGetter(data.row, rowIndex).length > maximumColumnLength\n ? column.valueGetter(data.row, rowIndex)\n : null\n \"\n ></span>\n }\n </td>\n @if (this.rowDetailButtonTemplate) {\n <td scope=\"\">\n <ng-container\n *ngTemplateOutlet=\"\n this.rowDetailButtonTemplate;\n context: { $implicit: data.row }\n \"\n ></ng-container>\n </td>\n }}}\n </tr>\n @if (this.rowDetailTemplate && data.expanded) {\n <tr>\n <td [attr.colspan]=\"tableColumns.length + 1\">\n <ng-container\n class=\"w-100\"\n *ngTemplateOutlet=\"\n this.rowDetailTemplate;\n context: { $implicit: data.row }\n \"\n ></ng-container>\n </td>\n </tr>\n } } @if (!tableRows.length && !loading){\n <td [attr.colspan]=\"tableColumns.length\">\n <gov-empty align=\"center\" [size]=\"size | govSize\">\n <gov-icon slot=\"icon\" name=\"empty-file\" type=\"colored\"/>\n <p slot=\"headline\">\n {{ ('TABLES.EMPTY' | translate) ?? 'No records were found!' }}\n </p>\n </gov-empty>\n </td>\n }\n </tbody>\n }\n </table>\n @if(showPaginator) {\n <div class=\"v-table__paginator d-flex pt-3 pb-3\">\n @if (tableRows.length) {\n <div class=\"mt-2\">\n <v-table-pagination-info\n [showingText]=\"'TABLES.PAGINATION.SHOWING' | translate\"\n [toText]=\"'TABLES.PAGINATION.TO' | translate\"\n [ofText]=\"'TABLES.PAGINATION.OF' | translate\"\n [entriesText]=\"'TABLES.PAGINATION.ENTRIES' | translate\"\n [currentPage]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [total]=\"total\"\n />\n </div>\n <div class=\"ms-4\">\n <gov-form-select\n [options]=\"pageSizeOptions\"\n [value]=\"govPageSize\"\n (gov-change)=\"changePageSize($event)\"\n ></gov-form-select>\n </div>\n }\n <div class=\"ms-4\">\n <gov-pagination\n [current]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [total]=\"total\"\n [type]=\"'button'\"\n (gov-page)=\"changePage($event)\"\n ></gov-pagination>\n </div>\n </div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.v-table{position:relative;height:100%;display:flex;flex-direction:column}.v-table__sortable{color:var(--text-primary-color);text-decoration:underline;transition:color .15s ease-in-out;cursor:pointer}.v-table__sortable:after{content:\"\\2191\\2193\";margin-left:.5rem;text-decoration:none;display:inline-block}.v-table__sortable--asc:after{content:\"\\2191\"}.v-table__sortable--desc:after{content:\"\\2193\"}.v-table__header{background-color:var(--background-block-primary);position:sticky;top:0;z-index:2}.v-table__table{width:100%}.v-table__paginator{background-color:var(--background-neutral-white);justify-content:end;position:sticky;bottom:0;z-index:3}.gov-table{width:100%;overflow-x:auto}.gov-table table{table-layout:auto;min-width:100%;border-collapse:collapse}.gov-table table tr.gov-table--highlight td{background-color:var(--background-primary-subtle)}.gov-table table th,.gov-table table td{border-bottom:1px solid var(--border-subtlest);text-align:left}.gov-table table th.gov-table--align-right,.gov-table table td.gov-table--align-right{text-align:right}.gov-table table th.gov-table--vertical-align-top,.gov-table table td.gov-table--vertical-align-top{vertical-align:top}.gov-table table th.gov-table--border-right,.gov-table table td.gov-table--border-right{border-right:1px solid var(--border-subtlest)}.gov-table table th.gov-table--border-left,.gov-table table td.gov-table--border-left{border-left:1px solid var(--border-subtlest)}.gov-table table th.gov-table--border-bottom-none,.gov-table table td.gov-table--border-bottom-none{border-bottom:none}.gov-table table th.gov-table--nowrap,.gov-table table td.gov-table--nowrap{white-space:nowrap}.gov-table table th.gov-table--fit-width,.gov-table table td.gov-table--fit-width{width:1px}.gov-table table th{color:var(--text-primary);background-color:var(--background-neutral-subtlest)}.gov-table table td{background-color:var(--background-neutral-white)}.gov-table table tr.open td{padding:var(--spacing-s) var(--spacing-m)}.gov-table summary::-webkit-details-marker{display:none}.gov-table[size=s] table{border-bottom-left-radius:var(--corner-radius-s);border-bottom-right-radius:var(--corner-radius-s)}.gov-table[size=s] table th,.gov-table[size=s] table td{height:var(--height-2xl);padding:0 var(--spacing-s);font-size:var(--font-size-body-s);line-height:150%;font-weight:400}.gov-table[size=s] table th{font-weight:700}.gov-table[size=m] table{border-bottom-left-radius:var(--corner-radius-m);border-bottom-right-radius:var(--corner-radius-m)}.gov-table[size=m] table th,.gov-table[size=m] table td{height:var(--height-3xl);padding:0 var(--spacing-m);font-size:var(--font-size-body-m);line-height:150%;font-weight:400}.gov-table[size=m] table th{font-weight:700}.gov-table[size=l] table{border-bottom-left-radius:var(--corner-radius-l);border-bottom-right-radius:var(--corner-radius-l)}.gov-table[size=l] table th,.gov-table[size=l] table td{height:var(--height-4xl);padding:0 var(--spacing-l);font-size:var(--font-size-body-l);line-height:150%;font-weight:400}.gov-table[size=l] table th{font-weight:700}.gov-table-complex__name,.gov-table-complex__description{margin:0;color:var(--text-primary)}.gov-table-complex__actions{color:var(--text-white-fixed);background-color:var(--background-primary);padding:var(--spacing-xs) var(--spacing-s)}.gov-table-complex__per-page{width:185px;white-space:nowrap}\n"] }]
291
- }], ctorParameters: () => [], propDecorators: { viewColumns: [{
292
- type: ContentChildren,
293
- args: [TABLE_COLUMN_PROVIDER]
294
- }], rowDetailTemplate: [{
295
- type: ContentChild,
296
- args: ['rowDetail', { static: false }]
297
- }], rowDetailButtonTemplate: [{
298
- type: ContentChild,
299
- args: ['rowDetailButton', { static: false }]
300
- }], sorters: [{
301
- type: Input
302
- }], data: [{
303
- type: Input
304
- }], total: [{
305
- type: Input
306
- }], filter: [{
307
- type: Input
308
- }], extraFilter: [{
309
- type: Input
310
- }], loading: [{
311
- type: Input
312
- }], scrollable: [{
313
- type: Input
314
- }], pageSize: [{
315
- type: Input
316
- }], currentPage: [{
317
- type: Input
318
- }], showPaginator: [{
319
- type: Input
320
- }], userTableWrapper: [{
321
- type: Input
322
- }], sortMultiple: [{
323
- type: Input
324
- }], lazy: [{
325
- type: Input
326
- }], selectionMode: [{
327
- type: Input
328
- }], selection: [{
329
- type: Input
330
- }], showPageSizePicker: [{
331
- type: Input
332
- }], entityKey: [{
333
- type: Input
334
- }], customRoute: [{
335
- type: Input
336
- }], disableCustomClicks: [{
337
- type: Input
338
- }], tableName: [{
339
- type: Input
340
- }], size: [{
341
- type: Input
342
- }], showActionButtons: [{
343
- type: Input
344
- }], maximumColumnLength: [{
345
- type: Input
346
- }], columns: [{
347
- type: Input
348
- }], selectionChange: [{
349
- type: Output
350
- }], lazyLoad: [{
351
- type: Output
352
- }], download: [{
353
- type: Output
354
- }], delete: [{
355
- type: Output
356
- }], save: [{
357
- type: Output
358
- }] } });
359
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktZ292Y3ovc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWdvdmN6L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBS3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsb0JBQW9CLEVBRXBCLFNBQVMsR0FHVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFFTCxXQUFXLEVBRVgsa0JBQWtCLEVBQ2xCLFNBQVMsRUFFVCxxQkFBcUIsRUFDckIsUUFBUSxFQUNSLHFCQUFxQixFQUNyQixxQkFBcUIsRUFFckIsa0JBQWtCLEVBQ2xCLFlBQVksR0FDYixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFB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QUFLO2dCQUdGLE9BQU87c0JBRFYsS0FBSztnQkFVSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgZWZmZWN0LFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBHb3ZEZXNpZ25TeXN0ZW1Nb2R1bGUgfSBmcm9tICdAZ292LWRlc2lnbi1zeXN0ZW0tY2UvYW5ndWxhcic7XG5pbXBvcnQge1xuICBGb3JtQ2hlY2tib3hFdmVudCxcbiAgRm9ybVNlbGVjdEV2ZW50LFxufSBmcm9tICdAZ292LWRlc2lnbi1zeXN0ZW0tY2UvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIERFRkFVTFRfU0VBUkNIX0xJTUlULFxuICBMYXp5TG9hZEV2ZW50LFxuICBtdWx0aVNvcnQsXG4gIFNvcnQsXG4gIFNvcnREaXJlY3Rpb25UeXBlLFxufSBmcm9tICdAdmVyaXNvZnQvY29yZSc7XG5pbXBvcnQge1xuICBDb2x1bW5EZWZpbml0aW9uLFxuICBDb2x1bW5Nb2RlbCxcbiAgQ29sdW1uUHJvdmlkZXIsXG4gIERFRkFVTFRfUEFHSU5BVElPTixcbiAgRmllbGRTaXplLFxuICBGaWVsZFNpemVUeXBlLFxuICBNQVhfQ09MVU1OX0NIQVJfQ09VTlQsXG4gIFJvd01vZGVsLFxuICBUQUJMRV9DT0xVTU5fUFJPVklERVIsXG4gIFRBQkxFX0NPTVBPTkVOVF9UT0tFTixcbiAgVGFibGVDb3JlLFxuICBUYWJsZVNlbGVjdGlvbk1vZGUsXG4gIFRhYmxlU2VydmljZSxcbn0gZnJvbSAnQHZlcmlzb2Z0L3VpLWNvcmUnO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi8uLi9pY29ucyc7XG5pbXBvcnQgeyBHb3ZTaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRlcic7XG5pbXBvcnQgeyBUYWJsZVBhZ2luYXRpb25JbmZvQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1wYWdpbmF0aW9uLWluZm8uY29tcG9uZW50JztcbmltcG9ydCB7IGdldE5leHRTb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi90YWJsZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3YtdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBHb3ZEZXNpZ25TeXN0ZW1Nb2R1bGUsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgR292U2l6ZVBpcGUsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIFRhYmxlUGFnaW5hdGlvbkluZm9Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdHlsZVVybDogJy4vdGFibGUuY29tcG9uZW50LnNjc3MnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBUQUJMRV9DT01QT05FTlRfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogVGFibGVDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQ8VD5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIFRhYmxlQ29yZTxUPlxue1xuICBAQ29udGVudENoaWxkcmVuKFRBQkxFX0NPTFVNTl9QUk9WSURFUilcbiAgdmlld0NvbHVtbnMhOiBRdWVyeUxpc3Q8Q29sdW1uUHJvdmlkZXI8VD4+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ3Jvd0RldGFpbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICByb3dEZXRhaWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBUIH0+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ3Jvd0RldGFpbEJ1dHRvbicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICByb3dEZXRhaWxCdXR0b25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBUIH0+O1xuXG4gIEBJbnB1dCgpIHNvcnRlcnMhOiBTb3J0W107XG4gIEBJbnB1dCgpIGRhdGEhOiBUW107XG4gIEBJbnB1dCgpIHRvdGFsID0gMDtcbiAgQElucHV0KCkgZmlsdGVyOiBQYXJ0aWFsPFQ+IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBleHRyYUZpbHRlcjogUGFydGlhbDxUPiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBzY3JvbGxhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgcGFnZVNpemUgPSBERUZBVUxUX1NFQVJDSF9MSU1JVDtcbiAgQElucHV0KCkgY3VycmVudFBhZ2UgPSAxO1xuICBASW5wdXQoKSBzaG93UGFnaW5hdG9yID0gdHJ1ZTtcbiAgQElucHV0KCkgdXNlclRhYmxlV3JhcHBlciA9IHRydWU7XG4gIEBJbnB1dCgpIHNvcnRNdWx0aXBsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXp5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2VsZWN0aW9uOiBUW10gPSBbXTtcbiAgQElucHV0KCkgc2hvd1BhZ2VTaXplUGlja2VyID0gdHJ1ZTtcbiAgQElucHV0KCkgZW50aXR5S2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGN1c3RvbVJvdXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGRpc2FibGVDdXN0b21DbGlja3MgPSBmYWxzZTtcbiAgQElucHV0KCkgdGFibGVOYW1lPzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBGaWVsZFNpemVUeXBlID0gRmllbGRTaXplLm1lZGl1bTtcbiAgQElucHV0KCkgc2hvd0FjdGlvbkJ1dHRvbnMgPSBmYWxzZTtcbiAgQElucHV0KCkgbWF4aW11bUNvbHVtbkxlbmd0aCA9IE1BWF9DT0xVTU5fQ0hBUl9DT1VOVDtcblxuICBASW5wdXQoKVxuICBzZXQgY29sdW1ucyh2YWx1ZTogQ29sdW1uRGVmaW5pdGlvbjxUPltdKSB7XG4gICAgdGhpcy5fY29sdW1ucyA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlQ29sdW1uTW9kZWxzKCk7XG4gIH1cblxuICBnZXQgY29sdW1ucygpOiBDb2x1bW5EZWZpbml0aW9uPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICB9XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuICBAT3V0cHV0KCkgbGF6eUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPExhenlMb2FkRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBkb3dubG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93TW9kZWw8VD5bXT4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Um93TW9kZWw8VD5bXT4oKTtcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd01vZGVsPFQ+W10+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2UgPSBpbmplY3QoVGFibGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfY29sdW1uczogQ29sdW1uRGVmaW5pdGlvbjxULCBrZXlvZiBUPltdID0gW107XG5cbiAgdGFibGVDb2x1bW5zOiBDb2x1bW5Nb2RlbDxUPltdID0gW107XG4gIHRhYmxlUm93czogUm93TW9kZWw8VD5bXSA9IFtdO1xuICBwYWdlU2l6ZU9wdGlvbnMgPSBERUZBVUxUX1BBR0lOQVRJT04ubWFwKCh4OiBudW1iZXIpID0+ICh7IHZhbHVlOiB4LnRvU3RyaW5nKCkgfSkpO1xuICBhbGxTZWxlY3RlZCA9IGZhbHNlO1xuICBpY29ucyA9IEljb25zO1xuXG4gIGdldCBnb3ZQYWdlU2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlU2l6ZS50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IHRhYmxlUm93VmlldygpOiBSb3dNb2RlbDxUPltdIHtcbiAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJsZVJvd3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnZVNpemU7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucGFnZVNpemU7XG4gICAgICByZXR1cm4gdGhpcy50YWJsZVJvd3Muc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlbGVjdGVkKCk6IFJvd01vZGVsPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlUm93cy5maWx0ZXIociA9PiByLnNlbGVjdGVkKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQubGVuZ3RoO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMucmVhY3RUb1NpZ25hbHMoKTtcbiAgICB9KVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlUm93TW9kZWxzKCk7XG4gICAgICBpZiAoIXRoaXMubGF6eSAmJiB0aGlzLmRhdGEpIHtcbiAgICAgICAgdGhpcy50b3RhbCA9IHRoaXMuZGF0YS5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGlvbiddKSB7XG4gICAgICB0aGlzLnNlbGVjdFNlbGVjdGVkKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlciddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcigpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWV3Q29sdW1ucz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbk1vZGVscygpO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNvcnRDb2x1bW4oY29sdW1uOiBDb2x1bW5Nb2RlbDxUPikge1xuICAgIGlmIChjb2x1bW4uc29ydGFibGUpIHtcbiAgICAgIGNvbHVtbi5zb3J0RGlyZWN0aW9uID0gZ2V0TmV4dFNvcnREaXJlY3Rpb24oXG4gICAgICAgIGNvbHVtbi5zb3J0RGlyZWN0aW9uLFxuICAgICAgICB0aGlzLnNvcnRNdWx0aXBsZVxuICAgICAgKTtcblxuICAgICAgaWYgKCF0aGlzLnNvcnRNdWx0aXBsZSkge1xuICAgICAgICB0aGlzLnRhYmxlQ29sdW1uc1xuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHggIT09IGNvbHVtbilcbiAgICAgICAgICAuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgeC5zb3J0RGlyZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzb3J0czogU29ydFtdID0gdGhpcy5nZXRTb3J0cygpLm1hcCgoeCkgPT4gKHtcbiAgICAgICAgZmllbGQ6ICdyb3cuJyArIHguZmllbGQsXG4gICAgICAgIGRpcmVjdGlvbjogeC5kaXJlY3Rpb24sXG4gICAgICB9KSk7XG5cbiAgICAgIGlmICghdGhpcy5sYXp5KSB7XG4gICAgICAgIHRoaXMudGFibGVSb3dzID0gbXVsdGlTb3J0KHRoaXMudGFibGVSb3dzLCBzb3J0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpcmVMYXp5TG9hZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGFuZ2VQYWdlKGV2ZW50OiB7IGRldGFpbDogeyBwYWdpbmF0aW9uOiB7IGN1cnJlbnRQYWdlOiBudW1iZXIgfSB9IH0pIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gZXZlbnQuZGV0YWlsLnBhZ2luYXRpb24uY3VycmVudFBhZ2U7XG4gICAgdGhpcy5maXJlTGF6eUxvYWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGFuZ2VQYWdlU2l6ZShldmVudDogQ3VzdG9tRXZlbnQ8Rm9ybVNlbGVjdEV2ZW50Pikge1xuICAgIHRoaXMucGFnZVNpemUgPSBwYXJzZUludChldmVudC5kZXRhaWwudmFsdWUpO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMuZmlyZUxhenlMb2FkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0Um93KHJvdzogUm93TW9kZWw8VD4sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkge1xuICAgICAgdGhpcy5uYXZpZ2F0ZShyb3csIGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgcm93LnNlbGVjdGVkID0gIXJvdy5zZWxlY3RlZDtcbiAgICAgIHRoaXMudGFibGVSb3dzLmZvckVhY2goKHgpID0+ICh4ICE9PSByb3cgPyAoeC5zZWxlY3RlZCA9IGZhbHNlKSA6IG51bGwpKTtcbiAgICAgIHRoaXMuZmlyZVNlbGVjdGlvbkNoYW5nZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICByb3cuc2VsZWN0ZWQgPSAhcm93LnNlbGVjdGVkO1xuICAgICAgdGhpcy5maXJlU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG5hdmlnYXRlKHJvdzogUm93TW9kZWw8VD4sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZUN1c3RvbUNsaWNrcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdGFyZ2V0VXJsID0gdGhpcy5jcmVhdGVVcmwocm93KTtcblxuICAgIGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB3aW5kb3cub3BlbihcbiAgICAgICAgICB0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwodGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbdGFyZ2V0VXJsXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pKSxcbiAgICAgICAgICAnX2JsYW5rJ1xuICAgICAgICApO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0YXJnZXRVcmxdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG5hdmlnYXRlTmV3V2luZG93KHJvdzogUm93TW9kZWw8VD4sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gIGlmICh0aGlzLmRpc2FibGVDdXN0b21DbGlja3MgfHwgZXZlbnQuYnV0dG9uICE9PSAxKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHRhcmdldFVybCA9IHRoaXMuY3JlYXRlVXJsKHJvdyk7XG5cbiAgICB3aW5kb3cub3Blbih0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwodGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbdGFyZ2V0VXJsXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pKSwgJ19ibGFuaycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUFsbChldmVudDogQ3VzdG9tRXZlbnQ8Rm9ybUNoZWNrYm94RXZlbnQ+KSB7XG4gICAgdGhpcy5hbGxTZWxlY3RlZCA9IGV2ZW50LmRldGFpbC5jaGVja2VkO1xuICAgIHRoaXMudGFibGVSb3dzLmZvckVhY2goKHgpID0+ICh4LnNlbGVjdGVkID0gdGhpcy5hbGxTZWxlY3RlZCkpO1xuICAgIHRoaXMuZmlyZVNlbGVjdGlvbkNoYW5nZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZURldGFpbChyb3c6IFJvd01vZGVsPFQ+KSB7XG4gICAgcm93LmV4cGFuZGVkID0gIXJvdy5leHBhbmRlZDtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RSb3dDaGVja2JveChyb3c6IFJvd01vZGVsPFQ+LCBldmVudDogQ3VzdG9tRXZlbnQ8Rm9ybUNoZWNrYm94RXZlbnQ+KSB7XG4gICAgcm93LnNlbGVjdGVkID0gZXZlbnQuZGV0YWlsLmNoZWNrZWQ7XG4gICAgdGhpcy5hbGxTZWxlY3RlZCA9IHRoaXMudGFibGVSb3dzLmV2ZXJ5KCh4KSA9PiB4LnNlbGVjdGVkKTtcbiAgICB0aGlzLmZpcmVTZWxlY3Rpb25DaGFuZ2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cnVuY2F0ZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0Lmxlbmd0aCA+IHRoaXMubWF4aW11bUNvbHVtbkxlbmd0aFxuICAgICAgPyB0ZXh0LnNsaWNlKDAsIHRoaXMubWF4aW11bUNvbHVtbkxlbmd0aCkgKyAnLi4uJ1xuICAgICAgOiB0ZXh0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuYWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRhYmxlUm93cy5mb3JFYWNoKHggPT4gKHguc2VsZWN0ZWQgPSB0aGlzLmFsbFNlbGVjdGVkKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVVybChyb3c6IFJvd01vZGVsPFQ+KTogc3RyaW5nIHtcbiAgICBpZiAocm93LmN1c3RvbVJvdXRlKSB7XG4gICAgICByZXR1cm4gcm93LmN1c3RvbVJvdXRlO1xuICAgIH1cblxuICAgIHJldHVybiByb3cuaWQudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhY3RUb1NpZ25hbHMoKTogdm9pZCB7XG4gICAgY29uc3QgcmVsb2FkID0gdGhpcy5zZXJ2aWNlLnJlbG9hZCgpO1xuXG4gICAgaWYgKHR5cGVvZiByZWxvYWQgPT09ICdzeW1ib2wnKSB7XG4gICAgICB0aGlzLmZpcmVMYXp5TG9hZCgpO1xuICAgIH0gZWxzZSBpZiAocmVsb2FkLm5hbWUgPT09IHRoaXMudGFibGVOYW1lKSB7XG4gICAgICB0aGlzLmZpcmVMYXp5TG9hZCgpXG4gICAgfVxuXG4gICAgdGhpcy5kZXNlbGVjdEFsbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5Nb2RlbHMoKSB7XG4gICAgY29uc3Qgdmlld0NvbHVtbnMgPSB0aGlzLnZpZXdDb2x1bW5zXG4gICAgICA/LnRvQXJyYXkoKVxuICAgICAgLm1hcCgoeCkgPT4geC5nZXREZWZpbml0aW9uKCkpO1xuICAgIHRoaXMudGFibGVDb2x1bW5zID0gWy4uLih0aGlzLl9jb2x1bW5zID8/IFtdKSwgLi4uKHZpZXdDb2x1bW5zID8/IFtdKV0ubWFwKFxuICAgICAgKHgpID0+IG5ldyBDb2x1bW5Nb2RlbCh4KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJvd01vZGVscygpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlUm93cyA9ICh0aGlzLmRhdGEgPz8gW10pLm1hcChcbiAgICAgICh4KSA9PiBuZXcgUm93TW9kZWwoeCwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzLmN1c3RvbVJvdXRlLCB0aGlzLmVudGl0eUtleSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaXJlU2VsZWN0aW9uQ2hhbmdlKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMudGFibGVSb3dzXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LnNlbGVjdGVkKVxuICAgICAgLm1hcCgoeCkgPT4geC5yb3cpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoc2VsZWN0ZWRSb3dzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0U2VsZWN0ZWQoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uPy5sZW5ndGggJiYgdGhpcy5zZWxlY3Rpb25Nb2RlKSB7XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPVxuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGUgPT09IFRhYmxlU2VsZWN0aW9uTW9kZS5zaW5nbGVcbiAgICAgICAgICA/IFt0aGlzLnNlbGVjdGlvblswXV1cbiAgICAgICAgICA6IHRoaXMuc2VsZWN0aW9uO1xuICAgICAgY29uc3Qgc2VsZWN0aW9uU2V0ID0gbmV3IFNldChzZWxlY3Rpb24pO1xuICAgICAgdGhpcy50YWJsZVJvd3MuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLnNlbGVjdGVkID0gc2VsZWN0aW9uU2V0LmhhcyhpdGVtLnJvdyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hbGxTZWxlY3RlZCA9IHRoaXMudGFibGVSb3dzLmV2ZXJ5KCh4KSA9PiB4LnNlbGVjdGVkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpcmVMYXp5TG9hZCgpIHtcbiAgICBjb25zdCBsYXp5TG9hZEV2ZW50OiBMYXp5TG9hZEV2ZW50ID0ge1xuICAgICAgc29ydDogdGhpcy5nZXRTb3J0cygpLFxuICAgICAgb2Zmc2V0OiAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdlU2l6ZSxcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxuICAgICAgZmlsdGVyOiB0aGlzLmZpbHRlcixcbiAgICB9O1xuXG4gICAgdGhpcy5sYXp5TG9hZC5lbWl0KGxhenlMb2FkRXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGaWx0ZXIoKSB7XG4gICAgdGhpcy5maXJlTGF6eUxvYWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydHMoKTogU29ydFtdIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbHVtbnNcbiAgICAgIC5maWx0ZXIoKHgpID0+IHguc29ydGFibGUgJiYgeC5zb3J0RGlyZWN0aW9uKVxuICAgICAgLm1hcCgoeCkgPT4gKHtcbiAgICAgICAgZmllbGQ6IHguaWQsXG4gICAgICAgIGRpcmVjdGlvbjogPFNvcnREaXJlY3Rpb25UeXBlPnguc29ydERpcmVjdGlvbixcbiAgICAgIH0pKTtcbiAgfVxufVxuIiwiQGlmIChzZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnICYmIHNob3dBY3Rpb25CdXR0b25zKSB7XG48Z292LWZsZXhcbiAgY2xhc3M9XCJnb3YtdGFibGUtY29tcGxleF9fYWN0aW9ucyBtdC0yXCJcbiAganVzdGlmeS1jb250ZW50PVwic3BhY2UtYmV0d2VlblwiXG4gIGFsaWduLWl0ZW1zPVwiY2VudGVyXCJcbj5cbiAgPGRpdiBjbGFzcz1cImdvdi10YWJsZS1jb21wbGV4X19yZWNvcmRzLXNlbGVjdGVkXCI+XG4gICAge3sgc2VsZWN0ZWRDb3VudCB9fSB7eyAoJ1RBQkxFUy5DSE9TRU5fUkVDT1JEUycgfCB0cmFuc2xhdGUpID8/ICdjaG9zZW4gcmVjb3Jkcyd9fVxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8Z292LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBzaXplPVwic1wiIHR5cGU9XCJzb2xpZFwiIChnb3YtY2xpY2spPVwiZGVsZXRlLmVtaXQoc2VsZWN0ZWQpXCI+XG4gICAgICB7eyAoJ0JVVFRPTlMuREVMRVRFJyB8IHRyYW5zbGF0ZSkgPz8gJ0RlbGV0ZSd9fVxuICAgIDwvZ292LWJ1dHRvbj5cbiAgICA8Z292LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBzaXplPVwic1wiIHR5cGU9XCJzb2xpZFwiIChnb3YtY2xpY2spPVwic2F2ZS5lbWl0KHNlbGVjdGVkKVwiPlxuICAgICAge3sgKCdCVVRUT05TLlNBVkUnIHwgdHJhbnNsYXRlKSA/PyAnU2F2ZSd9fVxuICAgIDwvZ292LWJ1dHRvbj5cbiAgICA8Z292LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBzaXplPVwic1wiIHR5cGU9XCJzb2xpZFwiIChnb3YtY2xpY2spPVwiZG93bmxvYWQuZW1pdChzZWxlY3RlZClcIj5cbiAgICAgIHt7ICgnQlVUVE9OUy5ET1dOTE9BRCcgfCB0cmFuc2xhdGUpID8/ICdEb3dubG9hZCd9fVxuICAgIDwvZ292LWJ1dHRvbj5cbiAgICA8Z292LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBzaXplPVwic1wiIHR5cGU9XCJzb2xpZFwiIChnb3YtY2xpY2spPVwiZGVzZWxlY3RBbGwoKVwiPlxuICAgICAge3sgKCdCVVRUT05TLkNBTkNFTCcgfCB0cmFuc2xhdGUpID8/ICdDYW5jZWwnfX1cbiAgICA8L2dvdi1idXR0b24+XG4gIDwvZGl2PlxuPC9nb3YtZmxleD5cbn1cblxuPGRpdlxuICBjbGFzcz1cIiB2LXRhYmxlIGdvdi10YWJsZVwiXG4gIFthdHRyLnNpemVdPVwic2l6ZSB8IGdvdlNpemVcIlxuPlxuICA8dGFibGUgY2xhc3M9XCJ2LXRhYmxlX190YWJsZVwiPlxuICAgIDx0aGVhZCBjbGFzcz1cInYtdGFibGVfX2hlYWRcIj5cbiAgICAgIDx0ciBjbGFzcz1cInYtdGFibGVfX2hlYWRlclwiPlxuICAgICAgICBAaWYgKHRoaXMucm93RGV0YWlsVGVtcGxhdGUpIHtcbiAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgfSBAaWYgKHNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgPGdvdi1mb3JtLWNoZWNrYm94XG4gICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxTZWxlY3RlZFwiXG4gICAgICAgICAgICAoZ292LWNoYW5nZSk9XCJ0b2dnbGVBbGwoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC90aD5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChjb2x1bW4gb2YgdGFibGVDb2x1bW5zOyB0cmFjayBjb2x1bW47IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICBAaWYgKGNvbHVtbi52aXNpYmxlICYmIGNvbHVtbi5mb3JjZVZpc2liaWxpdHkgIT09ICdoaWRkZW4nKSB7XG4gICAgICAgIDx0aFxuICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICBbc3R5bGVdPVwieyd0ZXh0LWFsaWduJzogY29sdW1uLnRleHRBbGlnbn1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZ292LXRhYmxlLS1maXQtd2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnYtdGFibGVfX3NvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgICAgICBbY2xhc3Mudi10YWJsZV9fc29ydGFibGUtLWRlc2NdPVwiY29sdW1uLnNvcnRhYmxlICYmIGNvbHVtbi5zb3J0RGlyZWN0aW9uID09PSAnZGVzYydcIlxuICAgICAgICAgICAgW2NsYXNzLnYtdGFibGVfX3NvcnRhYmxlLS1hc2NdPVwiY29sdW1uLnNvcnRhYmxlICYmIGNvbHVtbi5zb3J0RGlyZWN0aW9uID09PSAnYXNjJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBjb2x1bW4uaGVhZGVyR2V0dGVyKGNvbHVtbi5pZCwgaW5kZXgpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgICB9IEBpZiAodGhpcy5yb3dEZXRhaWxCdXR0b25UZW1wbGF0ZSkge1xuICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgfX1cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICBAaWYgKGxvYWRpbmcpIHtcbiAgICAgIDx2LWxvYWRlciAvPlxuICAgIH0gQGVsc2Uge1xuICAgIDx0Ym9keSBjbGFzcz1cInYtdGFibGVfX2JvZHlcIj5cbiAgICAgIEBmb3IgKGRhdGEgb2YgdGFibGVSb3dWaWV3OyB0cmFjayBkYXRhLmlkOyBsZXQgcm93SW5kZXggPSAkaW5kZXgpIHtcbiAgICAgIDx0clxuICAgICAgICBjbGFzcz1cInYtdGFibGVfX3Jvd1wiXG4gICAgICAgIFtjbGFzcy5nb3YtdGFibGUtLWhpZ2hsaWdodF09XCJkYXRhLnNlbGVjdGVkICYmIHNlbGVjdGlvbk1vZGVcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0Um93KGRhdGEsICRldmVudClcIlxuICAgICAgICAoZGJsY2xpY2spPVwibmF2aWdhdGUoZGF0YSwgJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwibmF2aWdhdGVOZXdXaW5kb3coZGF0YSwgJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAodGhpcy5yb3dEZXRhaWxUZW1wbGF0ZSkge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGdvdi1idXR0b25cbiAgICAgICAgICAgIFtzaXplXT1cInNpemUgfCBnb3ZTaXplXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICB0eXBlPVwic29saWRcIlxuICAgICAgICAgICAgKGdvdi1jbGljayk9XCJ0b2dnbGVEZXRhaWwoZGF0YSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxnb3YtaWNvblxuICAgICAgICAgICAgICBbbmFtZV09XCJkYXRhLmV4cGFuZGVkID8gJ2NoZXZyb24tdXAnIDogJ2NoZXZyb24tZG93bidcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplIHwgZ292U2l6ZVwiXG4gICAgICAgICAgICAgIHNsb3Q9XCJpY29uLXN0YXJ0XCJcbiAgICAgICAgICAgID48L2dvdi1pY29uPlxuICAgICAgICAgIDwvZ292LWJ1dHRvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgfSBAaWYgKHNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgPHRkIGNsYXNzPVwiZ292LXRhYmxlLS1maXQtY29udGVudCBnb3YtdGFibGUtLWJvcmRlci1yaWdodFwiPlxuICAgICAgICAgIDxnb3YtZm9ybS1jaGVja2JveFxuICAgICAgICAgICAgbm8tbGFiZWxcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImRhdGEuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgW3NpemVdPVwic2l6ZSB8IGdvdlNpemVcIlxuICAgICAgICAgICAgKGdvdi1jaGFuZ2UpPVwic2VsZWN0Um93Q2hlY2tib3goZGF0YSwgJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZ292LWZvcm0tY2hlY2tib3g+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoY29sdW1uIG9mIHRhYmxlQ29sdW1uczsgdHJhY2sgY29sdW1uOyBsZXQgY29sdW1uSW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgQGlmIChjb2x1bW4udmlzaWJsZSAmJiBjb2x1bW4uZm9yY2VWaXNpYmlsaXR5ICE9PSAnaGlkZGVuJykge1xuICAgICAgICA8dGRcbiAgICAgICAgICBbc3R5bGVdPVwieyd0ZXh0LWFsaWduJzogY29sdW1uLnRleHRBbGlnbn1cIlxuICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4uY29sdW1uQ2xhc3MhXCJcbiAgICAgICAgICBbY2xhc3Mudi1hdXRvLWNlbGxdPVwiY29sdW1uLnRlbXBsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAoY29sdW1uLnRlbXBsYXRlKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgY29sdW1uLnRlbXBsYXRlO1xuICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogZGF0YS5yb3cgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJjb2x1bW4ucXVlcnlQYXJhbXMgPyBjb2x1bW4ucXVlcnlQYXJhbXMgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiY29sdW1uLnJvdXRlckxpbmsgPyBjb2x1bW4ucm91dGVyTGluayhkYXRhLnJvdykgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0cnVuY2F0ZShjb2x1bW4udmFsdWVHZXR0ZXIoZGF0YS5yb3csIHJvd0luZGV4KSlcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiXG4gICAgICAgICAgICAgIGNvbHVtbi52YWx1ZUdldHRlcihkYXRhLnJvdywgcm93SW5kZXgpLmxlbmd0aCA+IG1heGltdW1Db2x1bW5MZW5ndGhcbiAgICAgICAgICAgICAgICA/IGNvbHVtbi52YWx1ZUdldHRlcihkYXRhLnJvdywgcm93SW5kZXgpXG4gICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RkPlxuICAgICAgICBAaWYgKHRoaXMucm93RGV0YWlsQnV0dG9uVGVtcGxhdGUpIHtcbiAgICAgICAgPHRkIHNjb3BlPVwiXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGRhdGEucm93IH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RkPlxuICAgICAgICB9fX1cbiAgICAgIDwvdHI+XG4gICAgICBAaWYgKHRoaXMucm93RGV0YWlsVGVtcGxhdGUgJiYgZGF0YS5leHBhbmRlZCkge1xuICAgICAgPHRyPlxuICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJ0YWJsZUNvbHVtbnMubGVuZ3RoICsgMVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIGNsYXNzPVwidy0xMDBcIlxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGRhdGEucm93IH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIH0gfSBAaWYgKCF0YWJsZVJvd3MubGVuZ3RoICYmICFsb2FkaW5nKXtcbiAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cInRhYmxlQ29sdW1ucy5sZW5ndGhcIj5cbiAgICAgICAgPGdvdi1lbXB0eSBhbGlnbj1cImNlbnRlclwiIFtzaXplXT1cInNpemUgfCBnb3ZTaXplXCI+XG4gICAgICAgICAgPGdvdi1pY29uIHNsb3Q9XCJpY29uXCIgbmFtZT1cImVtcHR5LWZpbGVcIiB0eXBlPVwiY29sb3JlZFwiLz5cbiAgICAgICAgICA8cCBzbG90PVwiaGVhZGxpbmVcIj5cbiAgICAgICAgICAgIHt7ICgnVEFCTEVTLkVNUFRZJyB8IHRyYW5zbGF0ZSkgPz8gJ05vIHJlY29yZHMgd2VyZSBmb3VuZCEnIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2dvdi1lbXB0eT5cbiAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgfVxuICA8L3RhYmxlPlxuICBAaWYoc2hvd1BhZ2luYXRvcikge1xuICA8ZGl2IGNsYXNzPVwidi10YWJsZV9fcGFnaW5hdG9yIGQtZmxleCBwdC0zIHBiLTNcIj5cbiAgICBAaWYgKHRhYmxlUm93cy5sZW5ndGgpIHtcbiAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxuICAgICAgPHYtdGFibGUtcGFnaW5hdGlvbi1pbmZvXG4gICAgICAgIFtzaG93aW5nVGV4dF09XCInVEFCTEVTLlBBR0lOQVRJT04uU0hPV0lORycgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9UZXh0XT1cIidUQUJMRVMuUEFHSU5BVElPTi5UTycgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbb2ZUZXh0XT1cIidUQUJMRVMuUEFHSU5BVElPTi5PRicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbZW50cmllc1RleHRdPVwiJ1RBQkxFUy5QQUdJTkFUSU9OLkVOVFJJRVMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgW3RvdGFsXT1cInRvdGFsXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1zLTRcIj5cbiAgICAgIDxnb3YtZm9ybS1zZWxlY3RcbiAgICAgICAgW29wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgW3ZhbHVlXT1cImdvdlBhZ2VTaXplXCJcbiAgICAgICAgKGdvdi1jaGFuZ2UpPVwiY2hhbmdlUGFnZVNpemUoJGV2ZW50KVwiXG4gICAgICA+PC9nb3YtZm9ybS1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJtcy00XCI+XG4gICAgICA8Z292LXBhZ2luYXRpb25cbiAgICAgICAgW2N1cnJlbnRdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICBbdG90YWxdPVwidG90YWxcIlxuICAgICAgICBbdHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICAgIChnb3YtcGFnZSk9XCJjaGFuZ2VQYWdlKCRldmVudClcIlxuICAgICAgPjwvZ292LXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -1,14 +0,0 @@
1
- import { SortDirection } from '@verisoft/core';
2
- export function getNextSortDirection(sortDirection, isNullable = false) {
3
- return isNullable && sortDirection === SortDirection.desc
4
- ? undefined
5
- : !sortDirection || sortDirection === SortDirection.desc
6
- ? SortDirection.asc
7
- : SortDirection.desc;
8
- }
9
- export function createCustomRoute(row, entityKey, customRoute) {
10
- return customRoute && entityKey
11
- ? customRoute + row[entityKey]
12
- : undefined;
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1nb3Zjei9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvdGFibGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLGFBQTRDLEVBQzVDLFVBQVUsR0FBRyxLQUFLO0lBRWxCLE9BQU8sVUFBVSxJQUFJLGFBQWEsS0FBSyxhQUFhLENBQUMsSUFBSTtRQUN2RCxDQUFDLENBQUMsU0FBUztRQUNYLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxhQUFhLEtBQUssYUFBYSxDQUFDLElBQUk7WUFDeEQsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHO1lBQ25CLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO0FBQ3pCLENBQUM7QUFDRCxNQUFNLFVBQVUsaUJBQWlCLENBQUksR0FBTSxFQUFFLFNBQWtCLEVBQUUsV0FBb0I7SUFDbkYsT0FBTyxXQUFXLElBQUksU0FBUztRQUM3QixDQUFDLENBQUMsV0FBVyxHQUFJLEdBQWlDLENBQUMsU0FBUyxDQUFDO1FBQzdELENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvcnREaXJlY3Rpb24sIFNvcnREaXJlY3Rpb25UeXBlIH0gZnJvbSAnQHZlcmlzb2Z0L2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV4dFNvcnREaXJlY3Rpb24oXG4gIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb25UeXBlIHwgdW5kZWZpbmVkLFxuICBpc051bGxhYmxlID0gZmFsc2Vcbik6IFNvcnREaXJlY3Rpb25UeXBlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzTnVsbGFibGUgJiYgc29ydERpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5kZXNjXG4gICAgPyB1bmRlZmluZWRcbiAgICA6ICFzb3J0RGlyZWN0aW9uIHx8IHNvcnREaXJlY3Rpb24gPT09IFNvcnREaXJlY3Rpb24uZGVzY1xuICAgID8gU29ydERpcmVjdGlvbi5hc2NcbiAgICA6IFNvcnREaXJlY3Rpb24uZGVzYztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21Sb3V0ZTxUPihyb3c6IFQsIGVudGl0eUtleT86IHN0cmluZywgY3VzdG9tUm91dGU/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGN1c3RvbVJvdXRlICYmIGVudGl0eUtleVxuICAgID8gY3VzdG9tUm91dGUgKyAocm93IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pW2VudGl0eUtleV1cbiAgICA6IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './textarea.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1nb3Zjei9zcmMvbGliL2NvbXBvbmVudHMvdGV4dGFyZWEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGV4dGFyZWEuY29tcG9uZW50JzsiXX0=