@verisoft/ui-govcz 18.8.0 → 19.0.0-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.
- package/assets/i18n/cs.json +10 -0
- package/assets/i18n/en.json +8 -0
- package/assets/sass/main.scss +6 -242
- package/assets/sass/utils/_utils.scss +3 -0
- package/assets/sass/utils/_variables.scss +3 -0
- package/assets/sass/utils/index.scss +2 -0
- package/assets/sass/vendors/_bootstrap.scss +2 -2
- package/fesm2022/verisoft-ui-govcz.mjs +253 -393
- package/fesm2022/verisoft-ui-govcz.mjs.map +1 -1
- package/lib/components/checkbox/checkbox.component.d.ts +2 -2
- package/lib/components/dropdown-button/dropdown-button.component.d.ts +15 -0
- package/lib/components/dropdown-button/index.d.ts +1 -0
- package/lib/components/errors/error.component.d.ts +1 -1
- package/lib/components/index.d.ts +1 -1
- package/lib/components/shared-components/action-button-group/action-button-group.component.d.ts +1 -2
- package/lib/components/tab-view/index.d.ts +0 -1
- package/lib/components/tab-view/tab-view-item.component.d.ts +1 -1
- package/lib/components/tab-view/tab-view.component.d.ts +1 -1
- package/lib/components/textarea/textarea.component.d.ts +5 -4
- package/lib/components/tooltip/tooltip.component.d.ts +7 -15
- package/package.json +14 -16
- package/assets/sass/sidemenu.css +0 -205
- package/esm2022/index.mjs +0 -2
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +0 -34
- package/esm2022/lib/components/breadcrumb/index.mjs +0 -2
- package/esm2022/lib/components/button/button.component.mjs +0 -87
- package/esm2022/lib/components/button/index.mjs +0 -2
- package/esm2022/lib/components/calendar/calendar.component.mjs +0 -87
- package/esm2022/lib/components/calendar/index.mjs +0 -2
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -62
- package/esm2022/lib/components/checkbox/index.mjs +0 -2
- package/esm2022/lib/components/confirm-dialog/confirm-dialog.component.mjs +0 -72
- package/esm2022/lib/components/confirm-dialog/index.mjs +0 -2
- package/esm2022/lib/components/dropdown/dropdown-item.component.mjs +0 -14
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +0 -280
- package/esm2022/lib/components/dropdown/dropdown.model.mjs +0 -2
- package/esm2022/lib/components/dropdown/index.mjs +0 -2
- package/esm2022/lib/components/errors/error.component.mjs +0 -34
- package/esm2022/lib/components/errors/index.mjs +0 -2
- package/esm2022/lib/components/form-field/form-field.component.mjs +0 -92
- package/esm2022/lib/components/form-field/index.mjs +0 -2
- package/esm2022/lib/components/header/header.component.mjs +0 -85
- package/esm2022/lib/components/header/index.mjs +0 -2
- package/esm2022/lib/components/index.mjs +0 -34
- package/esm2022/lib/components/input-group/index.mjs +0 -2
- package/esm2022/lib/components/input-group/input-group.component.mjs +0 -89
- package/esm2022/lib/components/loader/index.mjs +0 -2
- package/esm2022/lib/components/loader/loader.component.mjs +0 -34
- package/esm2022/lib/components/multiselect/index.mjs +0 -2
- package/esm2022/lib/components/multiselect/multiselect.component.mjs +0 -121
- package/esm2022/lib/components/number-input/index.mjs +0 -2
- package/esm2022/lib/components/number-input/number-input.component.mjs +0 -104
- package/esm2022/lib/components/page-header/index.mjs +0 -2
- package/esm2022/lib/components/page-header/page-header.component.mjs +0 -28
- package/esm2022/lib/components/password/index.mjs +0 -2
- package/esm2022/lib/components/password/password.component.mjs +0 -94
- package/esm2022/lib/components/radiobutton/index.mjs +0 -2
- package/esm2022/lib/components/radiobutton/radiobutton.component.mjs +0 -50
- package/esm2022/lib/components/search/index.mjs +0 -2
- package/esm2022/lib/components/search/search.component.mjs +0 -40
- package/esm2022/lib/components/section/index.mjs +0 -2
- package/esm2022/lib/components/section/section.component.mjs +0 -70
- package/esm2022/lib/components/shared-components/action-button-group/action-button-group.component.mjs +0 -97
- package/esm2022/lib/components/shared-components/action-button-group/components/action-button/action-button.component.mjs +0 -64
- package/esm2022/lib/components/shared-components/action-button-group/index.mjs +0 -3
- package/esm2022/lib/components/shared-components/dynamic-component/dynamic-component-factory.service.mjs +0 -91
- package/esm2022/lib/components/shared-components/dynamic-component/dynamic-component.component.mjs +0 -42
- package/esm2022/lib/components/shared-components/dynamic-component/index.mjs +0 -3
- package/esm2022/lib/components/shared-components/feature-list/directives/feature-list-column.directive.mjs +0 -43
- package/esm2022/lib/components/shared-components/feature-list/directives/feature-list-filter-field.directive.mjs +0 -16
- package/esm2022/lib/components/shared-components/feature-list/feature-list-filter.pipe.mjs +0 -24
- package/esm2022/lib/components/shared-components/feature-list/feature-list-page.component.mjs +0 -43
- package/esm2022/lib/components/shared-components/feature-list/feature-list-page.model.mjs +0 -16
- package/esm2022/lib/components/shared-components/feature-list/feature-list.component.mjs +0 -285
- package/esm2022/lib/components/shared-components/feature-list/index.mjs +0 -6
- package/esm2022/lib/components/shared-components/filter/directives/filter-field.directive.mjs +0 -53
- package/esm2022/lib/components/shared-components/filter/filter.component.mjs +0 -195
- package/esm2022/lib/components/shared-components/filter/filter.model.mjs +0 -16
- package/esm2022/lib/components/shared-components/filter/index.mjs +0 -3
- package/esm2022/lib/components/shared-components/generic-field/generic-field.component.mjs +0 -98
- package/esm2022/lib/components/shared-components/generic-field/index.mjs +0 -2
- package/esm2022/lib/components/shared-components/generic-form/generic-form.component.mjs +0 -46
- package/esm2022/lib/components/shared-components/generic-form/generic-form.model.mjs +0 -50
- package/esm2022/lib/components/shared-components/generic-form/index.mjs +0 -3
- package/esm2022/lib/components/shared-components/index.mjs +0 -7
- package/esm2022/lib/components/side-menu/index.mjs +0 -3
- package/esm2022/lib/components/side-menu/side-menu.component.mjs +0 -48
- package/esm2022/lib/components/side-menu/side-menu.module.mjs +0 -59
- package/esm2022/lib/components/snackbar/index.mjs +0 -3
- package/esm2022/lib/components/snackbar/services/snackbar.service.mjs +0 -75
- package/esm2022/lib/components/snackbar/snackbar.component.mjs +0 -61
- package/esm2022/lib/components/snackbar/snackbar.model.mjs +0 -2
- package/esm2022/lib/components/stepper/index.mjs +0 -2
- package/esm2022/lib/components/stepper/stepper.component.mjs +0 -66
- package/esm2022/lib/components/switch/index.mjs +0 -2
- package/esm2022/lib/components/switch/switch.component.mjs +0 -45
- package/esm2022/lib/components/tab-view/index.mjs +0 -4
- package/esm2022/lib/components/tab-view/tab-view-item.component.mjs +0 -41
- package/esm2022/lib/components/tab-view/tab-view.component.mjs +0 -56
- package/esm2022/lib/components/tab-view/tab-view.module.mjs +0 -41
- package/esm2022/lib/components/table/index.mjs +0 -2
- package/esm2022/lib/components/table/table-pagination-info.component.mjs +0 -32
- package/esm2022/lib/components/table/table.component.mjs +0 -359
- package/esm2022/lib/components/table/table.model.mjs +0 -14
- package/esm2022/lib/components/textarea/index.mjs +0 -2
- package/esm2022/lib/components/textarea/textarea.component.mjs +0 -95
- package/esm2022/lib/components/textfield/index.mjs +0 -2
- package/esm2022/lib/components/textfield/textfield.component.mjs +0 -124
- package/esm2022/lib/components/tooltip/index.mjs +0 -2
- package/esm2022/lib/components/tooltip/tooltip.component.mjs +0 -66
- package/esm2022/lib/components/tristatecheckbox/index.mjs +0 -2
- package/esm2022/lib/components/tristatecheckbox/tristatecheckbox.component.mjs +0 -89
- package/esm2022/lib/icons.mjs +0 -35
- package/esm2022/lib/index.mjs +0 -6
- package/esm2022/lib/init.service.mjs +0 -17
- package/esm2022/lib/pages/index.mjs +0 -4
- package/esm2022/lib/pages/not-authenticated/index.mjs +0 -2
- package/esm2022/lib/pages/not-authenticated/not-authenticated.component.mjs +0 -17
- package/esm2022/lib/pages/not-authorized/index.mjs +0 -2
- package/esm2022/lib/pages/not-authorized/not-authorized.component.mjs +0 -20
- package/esm2022/lib/pages/not-found/index.mjs +0 -2
- package/esm2022/lib/pages/not-found/not-found.component.mjs +0 -20
- package/esm2022/lib/pipes/color/color.pipe.mjs +0 -27
- package/esm2022/lib/pipes/index.mjs +0 -4
- package/esm2022/lib/pipes/multiselect/multiselect-options.pipe.mjs +0 -52
- package/esm2022/lib/pipes/size/size.pipe.mjs +0 -23
- package/esm2022/verisoft-ui-govcz.mjs +0 -5
- package/lib/components/tab-view/tab-view.module.d.ts +0 -12
- package/lib/components/tristatecheckbox/index.d.ts +0 -1
- 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=
|