@mediusinc/mng-commons 5.0.0-rc.1 → 5.0.0-rc.2
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/core/router/route-builder.d.ts +149 -26
- package/core/router/routes-builder.d.ts +28 -13
- package/esm2022/core/components/notification/notification-wrapper.component.mjs +3 -3
- package/esm2022/core/components/pages/error/error.page.component.mjs +3 -3
- package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +3 -3
- package/esm2022/core/directives/component.directive.mjs +3 -3
- package/esm2022/core/directives/dialog-keydown-handler.directive.mjs +3 -3
- package/esm2022/core/directives/template.directive.mjs +3 -3
- package/esm2022/core/pipes/boolean.pipe.mjs +3 -3
- package/esm2022/core/pipes/class-map.pipe.mjs +3 -3
- package/esm2022/core/pipes/enum.pipe.mjs +3 -3
- package/esm2022/core/pipes/enumerate-async.pipe.mjs +3 -3
- package/esm2022/core/pipes/enumerate.pipe.mjs +3 -3
- package/esm2022/core/pipes/getter.pipe.mjs +3 -3
- package/esm2022/core/pipes/i18n-property.pipe.mjs +3 -3
- package/esm2022/core/pipes/json-path.pipe.mjs +3 -3
- package/esm2022/core/pipes/parametrize.pipe.mjs +3 -3
- package/esm2022/core/pipes/template.pipe.mjs +3 -3
- package/esm2022/core/router/route-builder.mjs +211 -84
- package/esm2022/core/router/routes-builder.mjs +41 -43
- package/esm2022/core/security/permission.service.mjs +3 -3
- package/esm2022/core/services/commons-init.service.mjs +3 -3
- package/esm2022/core/services/commons-router.service.mjs +3 -3
- package/esm2022/core/services/commons.service.mjs +3 -3
- package/esm2022/core/services/local-storage-config.service.mjs +3 -3
- package/esm2022/form/components/autocomplete/autocomplete.component.mjs +36 -42
- package/esm2022/form/components/date-range/date-range.component.mjs +3 -3
- package/esm2022/form/components/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/form/directives/input-trim.directive.mjs +3 -3
- package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +3 -3
- package/esm2022/table/components/column-value/column-value.component.mjs +3 -3
- package/esm2022/table/components/table/table.component.mjs +3 -3
- package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +3 -3
- package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +3 -3
- package/esm2022/table/services/data-list.service.mjs +3 -3
- package/esm2022/tableview/action/components/action/action.component.mjs +3 -3
- package/esm2022/tableview/action/components/editor/action-editor.component.mjs +3 -3
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +20 -19
- package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +3 -3
- package/esm2022/tableview/action/components/route/action-route.component.mjs +6 -5
- package/esm2022/tableview/action/components/table/action-table.component.mjs +3 -3
- package/esm2022/tableview/action/models/execution/action-instance.model.mjs +1 -1
- package/esm2022/tableview/action/services/action-executor.service.mjs +2 -2
- package/esm2022/tableview/action/services/component-action-executor.service.mjs +3 -3
- package/esm2022/tableview/action/services/data-provider-executor.service.mjs +3 -3
- package/esm2022/tableview/action/services/navigation.service.mjs +3 -3
- package/esm2022/tableview/action/services/root-action-executor.service.mjs +3 -3
- package/esm2022/tableview/action/services/view-container.service.mjs +3 -3
- package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +9 -1
- package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +1 -1
- package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +18 -29
- package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +1 -1
- package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +3 -3
- package/esm2022/tableview/api/editor/descriptors/field-validation.descriptor.mjs +1 -1
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +36 -7
- package/esm2022/tableview/api/editor/helpers/field-validators.mjs +15 -25
- package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
- package/esm2022/tableview/api/editor/models/field.model.mjs +1 -1
- package/esm2022/tableview/api/editor/models/form-editor.event.mjs +1 -1
- package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +1 -1
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +3 -3
- package/esm2022/tableview/api/editor/models/formly-field.model.mjs +1 -1
- package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +12 -19
- package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +157 -137
- package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +5 -7
- package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +103 -0
- package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +5 -7
- package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +33 -50
- package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +5 -7
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +6 -8
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +14 -13
- package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +3 -3
- package/esm2022/tableview/editor/helpers/editor-formly.mjs +62 -54
- package/esm2022/tableview/editor/helpers/formly-config.mjs +5 -3
- package/esm2022/tableview/editor/models/formly-config.model.mjs +1 -1
- package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +10 -10
- package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +26 -43
- package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +17 -43
- package/fesm2022/mediusinc-mng-commons-core.mjs +311 -186
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +46 -51
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +18 -18
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +89 -80
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +497 -435
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/form/components/autocomplete/autocomplete.component.d.ts +8 -7
- package/package.json +1 -1
- package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +1 -3
- package/tableview/action/components/route/action-route.component.d.ts +1 -1
- package/tableview/action/models/execution/action-instance.model.d.ts +2 -1
- package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +8 -0
- package/tableview/api/action/models/execution/action-instance.model.d.ts +2 -1
- package/tableview/api/editor/descriptors/editor.descriptor.d.ts +14 -19
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +24 -24
- package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +5 -5
- package/tableview/api/editor/descriptors/field-validation.descriptor.d.ts +10 -13
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +15 -0
- package/tableview/api/editor/helpers/field-validators.d.ts +6 -2
- package/tableview/api/editor/models/editor-fields.model.d.ts +6 -4
- package/tableview/api/editor/models/field.model.d.ts +16 -7
- package/tableview/api/editor/models/form-editor.event.d.ts +6 -4
- package/tableview/api/editor/models/form-editor.interface.d.ts +37 -8
- package/tableview/api/editor/models/formly-custom-field.model.d.ts +1 -1
- package/tableview/api/editor/models/formly-field.model.d.ts +9 -7
- package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +6 -7
- package/tableview/editor/components/editor/form-editor.component.d.ts +51 -35
- package/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.d.ts +22 -0
- package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +5 -7
- package/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +0 -1
- package/tableview/editor/helpers/editor-formly.d.ts +11 -10
- package/tableview/editor/models/formly-config.model.d.ts +1 -1
- package/tableview/tableview/components/route/tableview-route.component.d.ts +2 -2
- package/tableview/tableview/components/tableview/tableview.component.d.ts +11 -10
- package/tableview/tableview/router/tableview-route-builder.d.ts +7 -13
- package/version-info.json +11 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
-
import {
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, contentChildren, inject, input, signal } from '@angular/core';
|
|
3
3
|
import { RouterOutlet } from '@angular/router';
|
|
4
4
|
import { TranslateModule } from '@ngx-translate/core';
|
|
5
5
|
import { SharedModule } from 'primeng/api';
|
|
6
6
|
import { ToolbarModule } from 'primeng/toolbar';
|
|
7
7
|
import { TemplateDirective, findTemplateByName } from '@mediusinc/mng-commons/core';
|
|
8
|
-
import { ActionPositionEnum, TableviewActionDefaultCategories
|
|
8
|
+
import { ActionPositionEnum, TableviewActionDefaultCategories } from '@mediusinc/mng-commons/tableview/api';
|
|
9
9
|
import { ActionComponent } from '../../../action/components/action/action.component';
|
|
10
10
|
import { ActionTableComponent } from '../../../action/components/table/action-table.component';
|
|
11
11
|
import { provideViewContainer } from '../../../action/services/providers/provide-view-container';
|
|
@@ -17,59 +17,42 @@ import * as i3 from "@ngx-translate/core";
|
|
|
17
17
|
export class TableviewComponent {
|
|
18
18
|
constructor() {
|
|
19
19
|
this.viewContainer = inject(ViewContainer, { optional: true });
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
20
|
+
this.descriptor = input.required();
|
|
21
|
+
this.dataProvider = input();
|
|
22
|
+
this.actions = input([]);
|
|
23
|
+
this.toolbarLeftActions = computed(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.ToolbarLeft]));
|
|
24
|
+
this.toolbarRightActions = computed(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.ToolbarRight]).reverse());
|
|
25
|
+
this.tableActions = computed(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.TableHeader, ActionPositionEnum.RowInline, ActionPositionEnum.RowClick]));
|
|
26
|
+
this.tableParams = signal(undefined);
|
|
27
|
+
this.hasItemSelectionAction = computed(() => [...this.toolbarLeftActions(), ...this.toolbarRightActions()].some(e => e.hasItemsSelection));
|
|
28
|
+
this.selectedItems = signal([]);
|
|
26
29
|
this.templates = contentChildren(TemplateDirective);
|
|
27
30
|
this.footerTemplate = computed(() => findTemplateByName([...this.templates()], 'footer'));
|
|
28
31
|
this.rowExpandTemplate = computed(() => findTemplateByName([...this.templates()], 'rowExpandContent'));
|
|
29
32
|
}
|
|
30
33
|
ngOnInit() {
|
|
31
34
|
if (this.viewContainer) {
|
|
32
|
-
this.viewContainer.actions = this.actions;
|
|
35
|
+
this.viewContainer.actions = this.actions();
|
|
33
36
|
}
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
const dataProvider = this.dataProvider();
|
|
38
|
+
if (this.viewContainer && dataProvider) {
|
|
39
|
+
this.viewContainer.dataProvider = dataProvider;
|
|
36
40
|
}
|
|
37
|
-
for (const action of this.actions.filter(value => value.positionTableviewCategories?.includes(TableviewActionDefaultCategories.READ) ?? true)) {
|
|
38
|
-
switch (action.position) {
|
|
39
|
-
case ActionPositionEnum.ToolbarLeft:
|
|
40
|
-
this.toolbarLeftActions.push(action);
|
|
41
|
-
break;
|
|
42
|
-
case ActionPositionEnum.ToolbarRight:
|
|
43
|
-
this.toolbarRightActions.push(action);
|
|
44
|
-
break;
|
|
45
|
-
case ActionPositionEnum.TableHeader:
|
|
46
|
-
case ActionPositionEnum.RowInline:
|
|
47
|
-
case ActionPositionEnum.RowClick:
|
|
48
|
-
this.tableActions.push(action);
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
this.toolbarRightActions = this.toolbarRightActions.reverse();
|
|
53
|
-
this.hasItemSelectionAction = [...this.toolbarLeftActions, ...this.toolbarRightActions].some(e => e.hasItemsSelection);
|
|
54
41
|
}
|
|
55
42
|
onTableLoad(event) {
|
|
56
|
-
this.tableParams
|
|
43
|
+
this.tableParams.set(event.params);
|
|
57
44
|
}
|
|
58
45
|
selectionChange(selectedItems) {
|
|
59
|
-
this.selectedItems
|
|
46
|
+
this.selectedItems.set(selectedItems);
|
|
47
|
+
}
|
|
48
|
+
filterActionsByPositions(actions, actionPositions) {
|
|
49
|
+
return actions.filter(action => (action.positionTableviewCategories?.includes(TableviewActionDefaultCategories.READ) ?? true) && actionPositions.includes(action.position));
|
|
60
50
|
}
|
|
61
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
62
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.
|
|
51
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: TableviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
52
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: TableviewComponent, isStandalone: true, selector: "mng-tableview", inputs: { descriptor: { classPropertyName: "descriptor", publicName: "descriptor", isSignal: true, isRequired: true, transformFunction: null }, dataProvider: { classPropertyName: "dataProvider", publicName: "dataProvider", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideViewContainer()], queries: [{ propertyName: "templates", predicate: TemplateDirective, isSignal: true }], ngImport: i0, template: "<div class=\"mng-tableview\">\n <div class=\"card\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions(); track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams()\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems()\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions(); track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams()\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems()\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-action-table\n [descriptor]=\"descriptor().table\"\n [dataProvider]=\"dataProvider()\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions()\"\n [selectionEnabled]=\"hasItemSelectionAction()\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor().tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n </mng-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", dependencies: [{ kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i1.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "ngmodule", type: SharedModule }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataListParams", "dataProvider", "hostComponent", "route", "disabled", "loading", "selectedItems"], outputs: ["finish"] }, { kind: "component", type: ActionTableComponent, selector: "mng-action-table", inputs: ["descriptor", "items", "result", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "globalFilterFields", "actions", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "directive", type: TemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
63
53
|
}
|
|
64
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: TableviewComponent, decorators: [{
|
|
65
55
|
type: Component,
|
|
66
|
-
args: [{ standalone: true, selector: 'mng-tableview', imports: [ToolbarModule, SharedModule, TranslateModule, NgTemplateOutlet, ActionComponent, ActionTableComponent, TemplateDirective, RouterOutlet], providers: [provideViewContainer()], template: "<div class=\"mng-tableview\">\n <div class=\"card\">\n @if (toolbarLeftActions.length > 0 || toolbarRightActions.length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions; track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-action-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n </mng-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n" }]
|
|
67
|
-
}]
|
|
68
|
-
type: Input,
|
|
69
|
-
args: [{ required: true }]
|
|
70
|
-
}], dataProvider: [{
|
|
71
|
-
type: Input
|
|
72
|
-
}], actions: [{
|
|
73
|
-
type: Input
|
|
74
|
-
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvdGFibGV2aWV3L2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvc3JjL3RhYmxldmlldy9jb21wb25lbnRzL3RhYmxldmlldy90YWJsZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQStCLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRWxHLE9BQU8sRUFBdUIsa0JBQWtCLEVBQTBCLGdDQUFnQyxFQUFFLHVCQUF1QixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFakwsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQy9GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpREFBaUQsQ0FBQzs7Ozs7QUFTOUUsTUFBTSxPQUFPLGtCQUFr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WUFBWSxxSUFBRSxlQUFlLDRGQUFFLGdCQUFnQixvSkFBRSxlQUFlLG9PQUFFLG9CQUFvQix3WUFBRSxpQkFBaUIsMkZBQUUsWUFBWTs7MkZBR3ZJLGtCQUFrQjtrQkFQOUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sZUFBZSxXQUVoQixDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLENBQUMsYUFDdEksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDOzhCQUtILFVBQVU7c0JBQXpDLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQUNQLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBTaWduYWwsIFRlbXBsYXRlUmVmLCBjb21wdXRlZCwgY29udGVudENoaWxkcmVuLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7U2hhcmVkTW9kdWxlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1Rvb2xiYXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9vbGJhcic7XG5cbmltcG9ydCB7RGF0YUxpc3RQYXJhbXMsIFRlbXBsYXRlRGlyZWN0aXZlLCBmaW5kVGVtcGxhdGVCeU5hbWV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge1RhYmxlTG9hZEV2ZW50fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0LCBBY3Rpb25Qb3NpdGlvbkVudW0sIElUYWJsZXZpZXdEYXRhUHJvdmlkZXIsIFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZXZpZXcvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2FjdGlvbi9jb21wb25lbnRzL2FjdGlvbi9hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7QWN0aW9uVGFibGVDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2FjdGlvbi9jb21wb25lbnRzL3RhYmxlL2FjdGlvbi10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHtwcm92aWRlVmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vLi4vYWN0aW9uL3NlcnZpY2VzL3Byb3ZpZGVycy9wcm92aWRlLXZpZXctY29udGFpbmVyJztcbmltcG9ydCB7Vmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vLi4vYWN0aW9uL3NlcnZpY2VzL3ZpZXctY29udGFpbmVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLXRhYmxldmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxldmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1Rvb2xiYXJNb2R1bGUsIFNoYXJlZE1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBBY3Rpb25Db21wb25lbnQsIEFjdGlvblRhYmxlQ29tcG9uZW50LCBUZW1wbGF0ZURpcmVjdGl2ZSwgUm91dGVyT3V0bGV0XSxcbiAgICBwcm92aWRlcnM6IFtwcm92aWRlVmlld0NvbnRhaW5lcigpXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdDb21wb25lbnQ8SXRlbSA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZCwgU29ydHMgPSBrZXlvZiBJdGVtLCBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0ga2V5b2YgSXRlbT4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyByZWFkb25seSB2aWV3Q29udGFpbmVyID0gaW5qZWN0KFZpZXdDb250YWluZXIsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyBkZXNjcmlwdG9yITogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8SXRlbSwgU29ydHMsIEZpbHRlcnM+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhUHJvdmlkZXI/OiBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPEl0ZW0sIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPjtcbiAgICBASW5wdXQoKSBwdWJsaWMgYWN0aW9uczogQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4gPSBbXTtcblxuICAgIHB1YmxpYyB0YWJsZUFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0+W10gPSBbXTtcbiAgICBwdWJsaWMgdG9vbGJhckxlZnRBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtPltdID0gW107XG4gICAgcHVibGljIHRvb2xiYXJSaWdodEFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0+W10gPSBbXTtcblxuICAgIHB1YmxpYyB0YWJsZVBhcmFtcz86IERhdGFMaXN0UGFyYW1zO1xuXG4gICAgcHVibGljIGhhc0l0ZW1TZWxlY3Rpb25BY3Rpb24gPSBmYWxzZTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtczogSXRlbVtdID0gW107XG5cbiAgICBwdWJsaWMgdGVtcGxhdGVzID0gY29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKTtcbiAgICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFNpZ25hbDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4gPSBjb21wdXRlZCgoKSA9PiBmaW5kVGVtcGxhdGVCeU5hbWUoWy4uLnRoaXMudGVtcGxhdGVzKCldLCAnZm9vdGVyJykpO1xuICAgIHB1YmxpYyByb3dFeHBhbmRUZW1wbGF0ZTogU2lnbmFsPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPiA9IGNvbXB1dGVkKCgpID0+IGZpbmRUZW1wbGF0ZUJ5TmFtZShbLi4udGhpcy50ZW1wbGF0ZXMoKV0sICdyb3dFeHBhbmRDb250ZW50JykpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpZXdDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5hY3Rpb25zID0gdGhpcy5hY3Rpb25zO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmlld0NvbnRhaW5lciAmJiB0aGlzLmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmRhdGFQcm92aWRlciA9IHRoaXMuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgdGhpcy5hY3Rpb25zLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZS5wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM/LmluY2x1ZGVzKFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLlJFQUQpID8/IHRydWUpKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGFjdGlvbi5wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXJMZWZ0QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sYmFyUmlnaHRBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uVGFibGVIZWFkZXI6XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lOlxuICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50b29sYmFyUmlnaHRBY3Rpb25zID0gdGhpcy50b29sYmFyUmlnaHRBY3Rpb25zLnJldmVyc2UoKTtcblxuICAgICAgICB0aGlzLmhhc0l0ZW1TZWxlY3Rpb25BY3Rpb24gPSBbLi4udGhpcy50b29sYmFyTGVmdEFjdGlvbnMsIC4uLnRoaXMudG9vbGJhclJpZ2h0QWN0aW9uc10uc29tZShlID0+IGUuaGFzSXRlbXNTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRhYmxlTG9hZChldmVudDogVGFibGVMb2FkRXZlbnQpIHtcbiAgICAgICAgdGhpcy50YWJsZVBhcmFtcyA9IGV2ZW50LnBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkSXRlbXM6IEFycmF5PEl0ZW0+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXM7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1uZy10YWJsZXZpZXdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICBAaWYgKHRvb2xiYXJMZWZ0QWN0aW9ucy5sZW5ndGggPiAwIHx8IHRvb2xiYXJSaWdodEFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPHAtdG9vbGJhciBzdHlsZUNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiB0b29sYmFyTGVmdEFjdGlvbnM7IHRyYWNrIGFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG1uZy1hY3Rpb24gW2FjdGlvbl09XCJhY3Rpb25cIiBbZGF0YUxpc3RQYXJhbXNdPVwidGFibGVQYXJhbXNcIiBbaG9zdENvbXBvbmVudF09XCJ0aGlzXCIgW3NlbGVjdGVkSXRlbXNdPVwic2VsZWN0ZWRJdGVtc1wiPjwvbW5nLWFjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiB0b29sYmFyUmlnaHRBY3Rpb25zOyB0cmFjayBhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtbmctYWN0aW9uIFthY3Rpb25dPVwiYWN0aW9uXCIgW2RhdGFMaXN0UGFyYW1zXT1cInRhYmxlUGFyYW1zXCIgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXNcIj48L21uZy1hY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9wLXRvb2xiYXI+XG4gICAgICAgIH1cblxuICAgICAgICA8bW5nLWFjdGlvbi10YWJsZVxuICAgICAgICAgICAgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvci50YWJsZVwiXG4gICAgICAgICAgICBbZGF0YVByb3ZpZGVyXT1cImRhdGFQcm92aWRlclwiXG4gICAgICAgICAgICBbdXNlUXVlcnlQYXJhbXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYWN0aW9uc109XCJ0YWJsZUFjdGlvbnNcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbkVuYWJsZWRdPVwiaGFzSXRlbVNlbGVjdGlvbkFjdGlvblwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCInbXVsdGlwbGUnXCJcbiAgICAgICAgICAgICh0YWJsZUxvYWQpPVwib25UYWJsZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbW5nVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gbWQ6ZmxleC1yb3cgbWQ6anVzdGlmeS1jb250ZW50LWJldHdlZW4gdGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInAtMCBtLTBcIj57eyBkZXNjcmlwdG9yLnRhYmxlVGl0bGUgPz8gJycgfCB0cmFuc2xhdGUgfX08L2g1PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIEBpZiAocm93RXhwYW5kVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtbmdUZW1wbGF0ZT1cInJvd0V4cGFuZENvbnRlbnRcIiBsZXQtaXRlbT1cInJvd0l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd0V4cGFuZFRlbXBsYXRlKCk7IGNvbnRleHQ6IHtyb3dJdGVtOiBpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoZm9vdGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtbmdUZW1wbGF0ZT1cImZvb3RlclwiIGxldC1kYXRhPVwiZGF0YVwiIGxldC10b3RhbENvdW50PVwidG90YWxDb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGUoKTsgY29udGV4dDoge2RhdGEsIHRvdGFsQ291bnR9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9tbmctYWN0aW9uLXRhYmxlPlxuICAgIDwvZGl2PlxuXG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuPC9kaXY+XG4iXX0=
|
|
56
|
+
args: [{ standalone: true, selector: 'mng-tableview', imports: [ToolbarModule, SharedModule, TranslateModule, NgTemplateOutlet, ActionComponent, ActionTableComponent, TemplateDirective, RouterOutlet], providers: [provideViewContainer()], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mng-tableview\">\n <div class=\"card\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions(); track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams()\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems()\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions(); track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams()\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems()\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-action-table\n [descriptor]=\"descriptor().table\"\n [dataProvider]=\"dataProvider()\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions()\"\n [selectionEnabled]=\"hasItemSelectionAction()\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor().tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n </mng-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n" }]
|
|
57
|
+
}] });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvdGFibGV2aWV3L2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvc3JjL3RhYmxldmlldy9jb21wb25lbnRzL3RhYmxldmlldy90YWJsZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBK0IsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUVsRyxPQUFPLEVBQXVCLGtCQUFrQixFQUEwQixnQ0FBZ0MsRUFBMEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUVqTCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDN0YsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDL0YsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlEQUFpRCxDQUFDOzs7OztBQVU5RSxNQUFN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QUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2hMLENBQUM7OEdBM0NRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLHlkQUhoQixDQUFDLG9CQUFvQixFQUFFLENBQUMsb0RBcUJBLGlCQUFpQiw2Q0MzQ3hELDJ4RUErQ0EsMkNEMUJjLGFBQWEsaUpBQUUsWUFBWSxxSUFBRSxlQUFlLDRGQUFFLGdCQUFnQixvSkFBRSxlQUFlLG9PQUFFLG9CQUFvQix3WUFBRSxpQkFBaUIsMkZBQUUsWUFBWTs7MkZBSXZJLGtCQUFrQjtrQkFSOUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sZUFBZSxXQUVoQixDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLENBQUMsYUFDdEksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLG1CQUNsQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQsIFNpZ25hbCwgVGVtcGxhdGVSZWYsIGNvbXB1dGVkLCBjb250ZW50Q2hpbGRyZW4sIGluamVjdCwgaW5wdXQsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlck91dGxldH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtTaGFyZWRNb2R1bGV9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7VG9vbGJhck1vZHVsZX0gZnJvbSAncHJpbWVuZy90b29sYmFyJztcblxuaW1wb3J0IHtEYXRhTGlzdFBhcmFtcywgVGVtcGxhdGVEaXJlY3RpdmUsIGZpbmRUZW1wbGF0ZUJ5TmFtZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7VGFibGVMb2FkRXZlbnR9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3QsIEFjdGlvblBvc2l0aW9uRW51bSwgSVRhYmxldmlld0RhdGFQcm92aWRlciwgVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMsIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxldmlldy9hcGknO1xuXG5pbXBvcnQge0FjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vYWN0aW9uL2NvbXBvbmVudHMvYWN0aW9uL2FjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtBY3Rpb25UYWJsZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vYWN0aW9uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQge3Byb3ZpZGVWaWV3Q29udGFpbmVyfSBmcm9tICcuLi8uLi8uLi9hY3Rpb24vc2VydmljZXMvcHJvdmlkZXJzL3Byb3ZpZGUtdmlldy1jb250YWluZXInO1xuaW1wb3J0IHtWaWV3Q29udGFpbmVyfSBmcm9tICcuLi8uLi8uLi9hY3Rpb24vc2VydmljZXMvdmlldy1jb250YWluZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctdGFibGV2aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFibGV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbVG9vbGJhck1vZHVsZSwgU2hhcmVkTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE5nVGVtcGxhdGVPdXRsZXQsIEFjdGlvbkNvbXBvbmVudCwgQWN0aW9uVGFibGVDb21wb25lbnQsIFRlbXBsYXRlRGlyZWN0aXZlLCBSb3V0ZXJPdXRsZXRdLFxuICAgIHByb3ZpZGVyczogW3Byb3ZpZGVWaWV3Q29udGFpbmVyKCldLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxldmlld0NvbXBvbmVudDxJdGVtID0gYW55LCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBTb3J0cyA9IGtleW9mIEl0ZW0sIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBJdGVtPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHZpZXdDb250YWluZXIgPSBpbmplY3QoVmlld0NvbnRhaW5lciwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgICBwdWJsaWMgZGVzY3JpcHRvciA9IGlucHV0LnJlcXVpcmVkPFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PEl0ZW0sIFNvcnRzLCBGaWx0ZXJzPj4oKTtcbiAgICBwdWJsaWMgZGF0YVByb3ZpZGVyID0gaW5wdXQ8SVRhYmxldmlld0RhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4+KCk7XG4gICAgcHVibGljIGFjdGlvbnMgPSBpbnB1dDxBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+Pj4oW10pO1xuXG4gICAgcHVibGljIHRvb2xiYXJMZWZ0QWN0aW9ucyA9IGNvbXB1dGVkPEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0+W10+KCgpID0+IHRoaXMuZmlsdGVyQWN0aW9uc0J5UG9zaXRpb25zKHRoaXMuYWN0aW9ucygpLCBbQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0XSkpO1xuICAgIHB1YmxpYyB0b29sYmFyUmlnaHRBY3Rpb25zID0gY29tcHV0ZWQ8QWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbT5bXT4oKCkgPT4gdGhpcy5maWx0ZXJBY3Rpb25zQnlQb3NpdGlvbnModGhpcy5hY3Rpb25zKCksIFtBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0XSkucmV2ZXJzZSgpKTtcbiAgICBwdWJsaWMgdGFibGVBY3Rpb25zID0gY29tcHV0ZWQ8QWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbT5bXT4oKCkgPT5cbiAgICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQnlQb3NpdGlvbnModGhpcy5hY3Rpb25zKCksIFtBY3Rpb25Qb3NpdGlvbkVudW0uVGFibGVIZWFkZXIsIEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUsIEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGlja10pXG4gICAgKTtcblxuICAgIHB1YmxpYyB0YWJsZVBhcmFtcyA9IHNpZ25hbDxEYXRhTGlzdFBhcmFtcyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHB1YmxpYyBoYXNJdGVtU2VsZWN0aW9uQWN0aW9uID0gY29tcHV0ZWQoKCkgPT4gWy4uLnRoaXMudG9vbGJhckxlZnRBY3Rpb25zKCksIC4uLnRoaXMudG9vbGJhclJpZ2h0QWN0aW9ucygpXS5zb21lKGUgPT4gZS5oYXNJdGVtc1NlbGVjdGlvbikpO1xuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW1zID0gc2lnbmFsPEl0ZW1bXT4oW10pO1xuXG4gICAgcHVibGljIHRlbXBsYXRlcyA9IGNvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSk7XG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBTaWduYWw8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+ID0gY29tcHV0ZWQoKCkgPT4gZmluZFRlbXBsYXRlQnlOYW1lKFsuLi50aGlzLnRlbXBsYXRlcygpXSwgJ2Zvb3RlcicpKTtcbiAgICBwdWJsaWMgcm93RXhwYW5kVGVtcGxhdGU6IFNpZ25hbDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4gPSBjb21wdXRlZCgoKSA9PiBmaW5kVGVtcGxhdGVCeU5hbWUoWy4uLnRoaXMudGVtcGxhdGVzKCldLCAncm93RXhwYW5kQ29udGVudCcpKTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy52aWV3Q29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuYWN0aW9ucyA9IHRoaXMuYWN0aW9ucygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyID0gdGhpcy5kYXRhUHJvdmlkZXIoKTtcbiAgICAgICAgaWYgKHRoaXMudmlld0NvbnRhaW5lciAmJiBkYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25UYWJsZUxvYWQoZXZlbnQ6IFRhYmxlTG9hZEV2ZW50KSB7XG4gICAgICAgIHRoaXMudGFibGVQYXJhbXMuc2V0KGV2ZW50LnBhcmFtcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZEl0ZW1zOiBBcnJheTxJdGVtPik6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc2V0KHNlbGVjdGVkSXRlbXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVyQWN0aW9uc0J5UG9zaXRpb25zKGFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0+W10sIGFjdGlvblBvc2l0aW9uczogQWN0aW9uUG9zaXRpb25FbnVtW10pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtPltdIHtcbiAgICAgICAgcmV0dXJuIGFjdGlvbnMuZmlsdGVyKGFjdGlvbiA9PiAoYWN0aW9uLnBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcz8uaW5jbHVkZXMoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRCkgPz8gdHJ1ZSkgJiYgYWN0aW9uUG9zaXRpb25zLmluY2x1ZGVzKGFjdGlvbi5wb3NpdGlvbikpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtbmctdGFibGV2aWV3XCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAgICAgICAgQGlmICh0b29sYmFyTGVmdEFjdGlvbnMoKS5sZW5ndGggPiAwIHx8IHRvb2xiYXJSaWdodEFjdGlvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8cC10b29sYmFyIHN0eWxlQ2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIHRvb2xiYXJMZWZ0QWN0aW9ucygpOyB0cmFjayBhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtbmctYWN0aW9uIFthY3Rpb25dPVwiYWN0aW9uXCIgW2RhdGFMaXN0UGFyYW1zXT1cInRhYmxlUGFyYW1zKClcIiBbaG9zdENvbXBvbmVudF09XCJ0aGlzXCIgW3NlbGVjdGVkSXRlbXNdPVwic2VsZWN0ZWRJdGVtcygpXCI+PC9tbmctYWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIHRvb2xiYXJSaWdodEFjdGlvbnMoKTsgdHJhY2sgYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bW5nLWFjdGlvbiBbYWN0aW9uXT1cImFjdGlvblwiIFtkYXRhTGlzdFBhcmFtc109XCJ0YWJsZVBhcmFtcygpXCIgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXMoKVwiPjwvbW5nLWFjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3AtdG9vbGJhcj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxtbmctYWN0aW9uLXRhYmxlXG4gICAgICAgICAgICBbZGVzY3JpcHRvcl09XCJkZXNjcmlwdG9yKCkudGFibGVcIlxuICAgICAgICAgICAgW2RhdGFQcm92aWRlcl09XCJkYXRhUHJvdmlkZXIoKVwiXG4gICAgICAgICAgICBbdXNlUXVlcnlQYXJhbXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYWN0aW9uc109XCJ0YWJsZUFjdGlvbnMoKVwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uRW5hYmxlZF09XCJoYXNJdGVtU2VsZWN0aW9uQWN0aW9uKClcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiJ211bHRpcGxlJ1wiXG4gICAgICAgICAgICAodGFibGVMb2FkKT1cIm9uVGFibGVMb2FkKCRldmVudClcIlxuICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1uZ1RlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIG1kOmZsZXgtcm93IG1kOmp1c3RpZnktY29udGVudC1iZXR3ZWVuIHRhYmxlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJwLTAgbS0wXCI+e3sgZGVzY3JpcHRvcigpLnRhYmxlVGl0bGUgPz8gJycgfCB0cmFuc2xhdGUgfX08L2g1PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIEBpZiAocm93RXhwYW5kVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtbmdUZW1wbGF0ZT1cInJvd0V4cGFuZENvbnRlbnRcIiBsZXQtaXRlbT1cInJvd0l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd0V4cGFuZFRlbXBsYXRlKCk7IGNvbnRleHQ6IHtyb3dJdGVtOiBpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoZm9vdGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtbmdUZW1wbGF0ZT1cImZvb3RlclwiIGxldC1kYXRhPVwiZGF0YVwiIGxldC10b3RhbENvdW50PVwidG90YWxDb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGUoKTsgY29udGV4dDoge2RhdGEsIHRvdGFsQ291bnR9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9tbmctYWN0aW9uLXRhYmxlPlxuICAgIDwvZGl2PlxuXG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { RouteBuilder } from '@mediusinc/mng-commons/core';
|
|
2
|
-
import {
|
|
3
|
-
import { ActionRouteComponent } from '../../action/components/route/action-route.component';
|
|
1
|
+
import { RouteBuilder, createLazyRoute } from '@mediusinc/mng-commons/core';
|
|
2
|
+
import { TableviewActionDefaultCategories } from '@mediusinc/mng-commons/tableview/api';
|
|
4
3
|
import { unsavedChangesGuard } from '../../action/guards/unsaved-changes.guard';
|
|
5
|
-
export class
|
|
6
|
-
constructor(path,
|
|
7
|
-
super({ path: path, component
|
|
4
|
+
export class TableviewRouteBuilder extends RouteBuilder {
|
|
5
|
+
constructor(path, component, loadComponent) {
|
|
6
|
+
super({ path: path, component, loadComponent });
|
|
8
7
|
this.path = path;
|
|
9
8
|
this.isFromComponent = true;
|
|
10
9
|
this.routeData = { breadcrumb: null };
|
|
@@ -15,28 +14,6 @@ export class TableviewRouteBuilderInternal extends RouteBuilder {
|
|
|
15
14
|
this.hasAdd = true;
|
|
16
15
|
this.addPath = 'add';
|
|
17
16
|
this.hasDelete = true;
|
|
18
|
-
if (!options.component) {
|
|
19
|
-
this.isFromComponent = false;
|
|
20
|
-
this.descriptor = options.descriptor;
|
|
21
|
-
this.dataProvider = options.dataProvider;
|
|
22
|
-
this.actions = options.actions;
|
|
23
|
-
this.hasDetails = false;
|
|
24
|
-
this.hasAdd = false;
|
|
25
|
-
this.hasEdit = false;
|
|
26
|
-
if (this.actions) {
|
|
27
|
-
for (const action of this.actions) {
|
|
28
|
-
if (action instanceof ActionEditorDetailsDescriptorInst) {
|
|
29
|
-
this.hasDetails = true;
|
|
30
|
-
}
|
|
31
|
-
else if (action instanceof ActionEditorAddDescriptorInst) {
|
|
32
|
-
this.hasAdd = true;
|
|
33
|
-
}
|
|
34
|
-
else if (action instanceof ActionEditorEditDescriptorInst) {
|
|
35
|
-
this.hasEdit = true;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
17
|
}
|
|
41
18
|
withReadOnly(permissions) {
|
|
42
19
|
if (permissions) {
|
|
@@ -142,12 +119,11 @@ export class TableviewRouteBuilderInternal extends RouteBuilder {
|
|
|
142
119
|
// copy route data for children, reset breadcrumbs menu items and permission
|
|
143
120
|
const childrenRouteData = {
|
|
144
121
|
...this.routeData,
|
|
145
|
-
breadcrumb: null
|
|
146
|
-
menuItems: undefined,
|
|
147
|
-
permissions: undefined
|
|
122
|
+
breadcrumb: null
|
|
148
123
|
};
|
|
124
|
+
const loadActionRoute = () => import('../../action/components/route/action-route.component');
|
|
149
125
|
// list route
|
|
150
|
-
const rootChildRouteBuilder =
|
|
126
|
+
const rootChildRouteBuilder = createLazyRoute('', loadActionRoute);
|
|
151
127
|
rootChildRouteBuilder.withData({ ...childrenRouteData });
|
|
152
128
|
if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {
|
|
153
129
|
rootChildRouteBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.READ]);
|
|
@@ -155,7 +131,7 @@ export class TableviewRouteBuilderInternal extends RouteBuilder {
|
|
|
155
131
|
this.addChildBuilder(rootChildRouteBuilder);
|
|
156
132
|
// add route
|
|
157
133
|
if (this.hasAdd) {
|
|
158
|
-
const routeBuilder =
|
|
134
|
+
const routeBuilder = createLazyRoute(this.addPath, loadActionRoute);
|
|
159
135
|
routeBuilder.withData({ ...childrenRouteData });
|
|
160
136
|
if (this.tableviewPermissions?.[TableviewActionDefaultCategories.ADD]) {
|
|
161
137
|
routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.ADD]);
|
|
@@ -164,7 +140,7 @@ export class TableviewRouteBuilderInternal extends RouteBuilder {
|
|
|
164
140
|
routeBuilder.withCanDeactivate(unsavedChangesGuard);
|
|
165
141
|
}
|
|
166
142
|
if (this.hasDetails) {
|
|
167
|
-
const routeBuilder =
|
|
143
|
+
const routeBuilder = createLazyRoute(this.detailsPath, loadActionRoute);
|
|
168
144
|
routeBuilder.withData({ ...childrenRouteData });
|
|
169
145
|
if (this.tableviewPermissions?.[TableviewActionDefaultCategories.DETAILS]) {
|
|
170
146
|
routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS]);
|
|
@@ -172,7 +148,7 @@ export class TableviewRouteBuilderInternal extends RouteBuilder {
|
|
|
172
148
|
this.addChildBuilder(routeBuilder);
|
|
173
149
|
}
|
|
174
150
|
if (this.hasEdit) {
|
|
175
|
-
const routeBuilder =
|
|
151
|
+
const routeBuilder = createLazyRoute(this.editPath, loadActionRoute);
|
|
176
152
|
routeBuilder.withData({ ...childrenRouteData });
|
|
177
153
|
if (this.tableviewPermissions?.[TableviewActionDefaultCategories.EDIT]) {
|
|
178
154
|
routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.EDIT]);
|
|
@@ -190,12 +166,10 @@ export class TableviewRouteBuilderInternal extends RouteBuilder {
|
|
|
190
166
|
return menuItemPermission;
|
|
191
167
|
}
|
|
192
168
|
}
|
|
193
|
-
export
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
return new TableviewRouteBuilderInternal(path, { descriptor, dataProvider, actions });
|
|
199
|
-
}
|
|
169
|
+
export function createTableviewRoute(path, component) {
|
|
170
|
+
return new TableviewRouteBuilder(path, component);
|
|
171
|
+
}
|
|
172
|
+
export function createTableviewLazyRoute(path, loadComponent) {
|
|
173
|
+
return new TableviewRouteBuilder(path, undefined, loadComponent);
|
|
200
174
|
}
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvc3JjL3RhYmxldmlldy9yb3V0ZXIvdGFibGV2aWV3LXJvdXRlLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFpQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RixPQUFPLEVBRUgsNkJBQTZCLEVBQzdCLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFFOUIsZ0NBQWdDLEVBR25DLE1BQU0sc0NBQXNDLENBQUM7QUFFOUMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDMUYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFOUUsTUFBTSxPQUFPLDZCQUE4QixTQUFRLFlBQVk7SUFtQjNELFlBQ1ksSUFBWSxFQUNwQixPQUtFO1FBRUYsS0FBSyxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxxQkFBcUIsRUFBQyxDQUFDLENBQUM7UUFSbkUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQWhCUCxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUU5QixjQUFTLEdBQXVCLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDO1FBQzlELGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDeEIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxjQUFjLENBQUM7UUFDMUIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQWlCckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUss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LElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbkMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFa0IsdUJBQXVCO1FBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsT0FBTyxrQkFBa0IsQ0FBQztJQUM5QixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLE1BQU0sQ0FBQyxhQUFhLENBQUksSUFBWSxFQUFFLFNBQWtCO1FBQzNELE9BQU8sSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUNkLElBQVksRUFDWixVQUF3QyxFQUN4QyxZQUFvQyxFQUNwQyxPQUF5QztRQUV6QyxPQUFPLElBQUksNkJBQTZCLENBQUMsSUFBSSxFQUFFLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0FQZXJtaXNzaW9ucywgQ29tbW9uc1JvdXRlRGF0YSwgUm91dGVCdWlsZGVyfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBY3Rpb25EZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25FZGl0b3JBZGREZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3QsXG4gICAgQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0LFxuICAgIElUYWJsZXZpZXdEYXRhUHJvdmlkZXIsXG4gICAgVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgVGFibGV2aWV3RGVzY3JpcHRvckluc3QsXG4gICAgVGFibGV2aWV3Um91dGVEYXRhXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7QWN0aW9uUm91dGVDb21wb25lbnR9IGZyb20gJy4uLy4uL2FjdGlvbi9jb21wb25lbnRzL3JvdXRlL2FjdGlvbi1yb3V0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHt1bnNhdmVkQ2hhbmdlc0d1YXJkfSBmcm9tICcuLi8uLi9hY3Rpb24vZ3VhcmRzL3Vuc2F2ZWQtY2hhbmdlcy5ndWFyZCc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXJJbnRlcm5hbCBleHRlbmRzIFJvdXRlQnVpbGRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXNjcmlwdG9yPzogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55PjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFQcm92aWRlcj86IElUYWJsZXZpZXdEYXRhUHJvdmlkZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zPzogQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj47XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0Zyb21Db21wb25lbnQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJvdXRlRGF0YTogVGFibGV2aWV3Um91dGVEYXRhID0ge2JyZWFkY3J1bWI6IG51bGx9O1xuICAgIHByaXZhdGUgaGFzRGV0YWlscyA9IHRydWU7XG4gICAgcHJpdmF0ZSBkZXRhaWxzUGF0aCA9ICc6aXRlbUlkJztcbiAgICBwcml2YXRlIGhhc0VkaXQgPSB0cnVlO1xuICAgIHByaXZhdGUgZWRpdFBhdGggPSAnOml0ZW1JZC9lZGl0JztcbiAgICBwcml2YXRlIGhhc0FkZCA9IHRydWU7XG4gICAgcHJpdmF0ZSBhZGRQYXRoID0gJ2FkZCc7XG4gICAgcHJpdmF0ZSBoYXNEZWxldGUgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSB0YWJsZXZpZXdQZXJtaXNzaW9ucz86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogQVBlcm1pc3Npb25zO1xuICAgIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcGF0aDogc3RyaW5nLFxuICAgICAgICBvcHRpb25zOiBQYXJ0aWFsPHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogVHlwZTxhbnk+O1xuICAgICAgICAgICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55PjtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlcjogSVRhYmxldmlld0RhdGFQcm92aWRlcjtcbiAgICAgICAgICAgIGFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xuICAgICAgICB9PlxuICAgICkge1xuICAgICAgICBzdXBlcih7cGF0aDogcGF0aCwgY29tcG9uZW50OiBvcHRpb25zLmNvbXBvbmVudCA/PyBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXJ9KTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMuY29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlzRnJvbUNvbXBvbmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gb3B0aW9ucy5kZXNjcmlwdG9yO1xuICAgICAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXIgPSBvcHRpb25zLmRhdGFQcm92aWRlcjtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9ucyA9IG9wdGlvbnMuYWN0aW9ucztcblxuICAgICAgICAgICAgdGhpcy5oYXNEZXRhaWxzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmhhc0FkZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5oYXNFZGl0ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgdGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gaW5zdGFuY2VvZiBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRGV0YWlscyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uIGluc3RhbmNlb2YgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzQWRkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gaW5zdGFuY2VvZiBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRWRpdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlYWRPbmx5KHBlcm1pc3Npb25zPzogQVBlcm1pc3Npb25zKTogdGhpcyB7XG4gICAgICAgIGlmIChwZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy53aXRoUGVybWlzc2lvbnMocGVybWlzc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2l0aEFkZChmYWxzZSk7XG4gICAgICAgIHRoaXMud2l0aEVkaXQoZmFsc2UpO1xuICAgICAgICB0aGlzLndpdGhEZWxldGUoZmFsc2UpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERldGFpbHMoaGFzRGV0YWlscyA9IHRydWUsIHBlcm1pc3Npb25zPzogQVBlcm1pc3Npb25zLCBwYXRoPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGFzRGV0YWlscyA9IGhhc0RldGFpbHM7XG4gICAgICAgIGlmIChwZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy53aXRoUGVybWlzc2lvbnModW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsc1BhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWRkKGhhc0FkZCA9IHRydWUsIHBlcm1pc3Npb25zPzogQVBlcm1pc3Npb25zLCBwYXRoPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGFzQWRkID0gaGFzQWRkO1xuICAgICAgICBpZiAocGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aFBlcm1pc3Npb25zKHVuZGVmaW5lZCwgcGVybWlzc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFBhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdChoYXNFZGl0ID0gdHJ1ZSwgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMsIHBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oYXNFZGl0ID0gaGFzRWRpdDtcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhQZXJtaXNzaW9ucyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgcGVybWlzc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRQYXRoID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERlbGV0ZShoYXNEZWxldGUgPSB0cnVlLCBwZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICB0aGlzLmhhc0RlbGV0ZSA9IGhhc0RlbGV0ZTtcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhQZXJtaXNzaW9ucyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhQZXJtaXNzaW9ucyhyZWFkPzogQVBlcm1pc3Npb25zLCBhZGQ/OiBBUGVybWlzc2lvbnMsIGVkaXQ/OiBBUGVybWlzc2lvbnMsIGRlbGV0PzogQVBlcm1pc3Npb25zLCBkZXRhaWxzPzogQVBlcm1pc3Npb25zKTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy50YWJsZXZpZXdQZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy50YWJsZXZpZXdQZXJtaXNzaW9ucyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWFkKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLlJFQURdID0gcmVhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWRkKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERF0gPSBhZGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVF0gPSBlZGl0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWxldCkge1xuICAgICAgICAgICAgdGhpcy50YWJsZXZpZXdQZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEVdID0gZGVsZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRldGFpbHMpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10gPSBkZXRhaWxzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbkJ5Q2F0ZWdvcnkoa2V5OiBzdHJpbmcsIHBlcm1pc3Npb25zOiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50YWJsZXZpZXdQZXJtaXNzaW9uc1trZXldID0gcGVybWlzc2lvbnM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnNPYmplY3QocGVybWlzc2lvbnM6IHtba2V5OiBzdHJpbmddOiBBUGVybWlzc2lvbnN9KTogdGhpcyB7XG4gICAgICAgIHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGJ1aWxkKCk6IFJvdXRlIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRnJvbUNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3ID0ge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I6IHRoaXMuZGVzY3JpcHRvciEsXG4gICAgICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLmRhdGFQcm92aWRlciFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3LmFjdGlvbnMgPSB0aGlzLmFjdGlvbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVEYXRhLnRhYmxldmlld1Blcm1pc3Npb25zID0gey4uLnRoaXMudGFibGV2aWV3UGVybWlzc2lvbnN9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMgPSB7XG4gICAgICAgICAgICBoYXNBZGQ6IHRoaXMuaGFzQWRkLFxuICAgICAgICAgICAgaGFzRWRpdDogdGhpcy5oYXNFZGl0LFxuICAgICAgICAgICAgaGFzRGV0YWlsczogdGhpcy5oYXNEZXRhaWxzLFxuICAgICAgICAgICAgaGFzRGVsZXRlOiB0aGlzLmhhc0RlbGV0ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLndpdGhEYXRhKHRoaXMucm91dGVEYXRhKTtcbiAgICAgICAgaWYgKHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEXSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZURhdGEucGVybWlzc2lvbnMgPSB0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLlJFQURdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29weSByb3V0ZSBkYXRhIGZvciBjaGlsZHJlbiwgcmVzZXQgYnJlYWRjcnVtYnMgbWVudSBpdGVtcyBhbmQgcGVybWlzc2lvblxuICAgICAgICBjb25zdCBjaGlsZHJlblJvdXRlRGF0YTogQ29tbW9uc1JvdXRlRGF0YSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMucm91dGVEYXRhLFxuICAgICAgICAgICAgYnJlYWRjcnVtYjogbnVsbCxcbiAgICAgICAgICAgIG1lbnVJdGVtczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGVybWlzc2lvbnM6IHVuZGVmaW5lZFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGxpc3Qgcm91dGVcbiAgICAgICAgY29uc3Qgcm9vdENoaWxkUm91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZSgnJywgQWN0aW9uUm91dGVDb21wb25lbnQpO1xuICAgICAgICByb290Q2hpbGRSb3V0ZUJ1aWxkZXIud2l0aERhdGEoey4uLmNoaWxkcmVuUm91dGVEYXRhfSk7XG4gICAgICAgIGlmICh0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zPy5bVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF0pIHtcbiAgICAgICAgICAgIHJvb3RDaGlsZFJvdXRlQnVpbGRlci53aXRoUGVybWlzc2lvbnModGhpcy50YWJsZXZpZXdQZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRDaGlsZEJ1aWxkZXIocm9vdENoaWxkUm91dGVCdWlsZGVyKTtcblxuICAgICAgICAvLyBhZGQgcm91dGVcbiAgICAgICAgaWYgKHRoaXMuaGFzQWRkKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZUJ1aWxkZXIgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlKHRoaXMuYWRkUGF0aCwgQWN0aW9uUm91dGVDb21wb25lbnQpO1xuICAgICAgICAgICAgcm91dGVCdWlsZGVyLndpdGhEYXRhKHsuLi5jaGlsZHJlblJvdXRlRGF0YX0pO1xuICAgICAgICAgICAgaWYgKHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5BRERdKSB7XG4gICAgICAgICAgICAgICAgcm91dGVCdWlsZGVyLndpdGhQZXJtaXNzaW9ucyh0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hZGRDaGlsZEJ1aWxkZXIocm91dGVCdWlsZGVyKTtcbiAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoQ2FuRGVhY3RpdmF0ZSh1bnNhdmVkQ2hhbmdlc0d1YXJkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5oYXNEZXRhaWxzKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZUJ1aWxkZXIgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlKHRoaXMuZGV0YWlsc1BhdGgsIEFjdGlvblJvdXRlQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoRGF0YSh7Li4uY2hpbGRyZW5Sb3V0ZURhdGF9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zPy5bVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10pIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aFBlcm1pc3Npb25zKHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hZGRDaGlsZEJ1aWxkZXIocm91dGVCdWlsZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5oYXNFZGl0KSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZUJ1aWxkZXIgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlKHRoaXMuZWRpdFBhdGgsIEFjdGlvblJvdXRlQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoRGF0YSh7Li4uY2hpbGRyZW5Sb3V0ZURhdGF9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zPy5bVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVF0pIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aFBlcm1pc3Npb25zKHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hZGRDaGlsZEJ1aWxkZXIocm91dGVCdWlsZGVyKTtcbiAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoQ2FuRGVhY3RpdmF0ZSh1bnNhdmVkQ2hhbmdlc0d1YXJkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdXBlci5idWlsZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBmaW5kTWVudUl0ZW1QZXJtaXNzaW9ucygpIHtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1QZXJtaXNzaW9uID0gc3VwZXIuZmluZE1lbnVJdGVtUGVybWlzc2lvbnMoKTtcbiAgICAgICAgaWYgKCFtZW51SXRlbVBlcm1pc3Npb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zPy5bVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtUGVybWlzc2lvbjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUNvbXBvbmVudDxDPihwYXRoOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxDPik6IFRhYmxldmlld1JvdXRlQnVpbGRlckludGVybmFsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXJJbnRlcm5hbChwYXRoLCB7Y29tcG9uZW50fSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tKFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueT4sXG4gICAgICAgIGRhdGFQcm92aWRlcjogSVRhYmxldmlld0RhdGFQcm92aWRlcixcbiAgICAgICAgYWN0aW9uczogQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj5cbiAgICApOiBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXJJbnRlcm5hbCB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGV2aWV3Um91dGVCdWlsZGVySW50ZXJuYWwocGF0aCwge2Rlc2NyaXB0b3IsIGRhdGFQcm92aWRlciwgYWN0aW9uc30pO1xuICAgIH1cbn1cbiJdfQ==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvc3JjL3RhYmxldmlldy9yb3V0ZXIvdGFibGV2aWV3LXJvdXRlLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFpQyxZQUFZLEVBQUUsZUFBZSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDMUcsT0FBTyxFQUErQyxnQ0FBZ0MsRUFBOEMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVqTCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUU5RSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsWUFBWTtJQW1CbkQsWUFDWSxJQUFZLEVBQ3BCLFNBQXFCLEVBQ3JCLGFBQXNKO1FBRXRKLEtBQUssQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBQyxDQUFDLENBQUM7UUFKdEMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQWhCUCxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUU5QixjQUFTLEdBQXVCLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDO1FBQzlELGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDeEIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxjQUFjLENBQUM7UUFDMUIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLElBQUksQ0FBQztJQVl6QixDQUFDO0lBRU0sWUFBWSxDQUFDLFdBQTBCO1FBQzFDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BC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WUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVrQix1QkFBdUI7UUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFDRCxPQUFPLGtCQUFrQixDQUFDO0lBQzlCLENBQUM7Q0FDSjtBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFZLEVBQUUsU0FBb0I7SUFDbkUsT0FBTyxJQUFJLHFCQUFxQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUNwQyxJQUFZLEVBQ1osYUFBcUo7SUFFckosT0FBTyxJQUFJLHFCQUFxQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RlZmF1bHRFeHBvcnQsIFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0FQZXJtaXNzaW9ucywgQ29tbW9uc1JvdXRlRGF0YSwgUm91dGVCdWlsZGVyLCBjcmVhdGVMYXp5Um91dGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0LCBJVGFibGV2aWV3RGF0YVByb3ZpZGVyLCBUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcywgVGFibGV2aWV3RGVzY3JpcHRvckluc3QsIFRhYmxldmlld1JvdXRlRGF0YX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZXZpZXcvYXBpJztcblxuaW1wb3J0IHt1bnNhdmVkQ2hhbmdlc0d1YXJkfSBmcm9tICcuLi8uLi9hY3Rpb24vZ3VhcmRzL3Vuc2F2ZWQtY2hhbmdlcy5ndWFyZCc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXIgZXh0ZW5kcyBSb3V0ZUJ1aWxkZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzY3JpcHRvcj86IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueT47XG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRhUHJvdmlkZXI/OiBJVGFibGV2aWV3RGF0YVByb3ZpZGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9ucz86IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNGcm9tQ29tcG9uZW50OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZURhdGE6IFRhYmxldmlld1JvdXRlRGF0YSA9IHticmVhZGNydW1iOiBudWxsfTtcbiAgICBwcml2YXRlIGhhc0RldGFpbHMgPSB0cnVlO1xuICAgIHByaXZhdGUgZGV0YWlsc1BhdGggPSAnOml0ZW1JZCc7XG4gICAgcHJpdmF0ZSBoYXNFZGl0ID0gdHJ1ZTtcbiAgICBwcml2YXRlIGVkaXRQYXRoID0gJzppdGVtSWQvZWRpdCc7XG4gICAgcHJpdmF0ZSBoYXNBZGQgPSB0cnVlO1xuICAgIHByaXZhdGUgYWRkUGF0aCA9ICdhZGQnO1xuICAgIHByaXZhdGUgaGFzRGVsZXRlID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgdGFibGV2aWV3UGVybWlzc2lvbnM/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IEFQZXJtaXNzaW9ucztcbiAgICB9O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHBhdGg6IHN0cmluZyxcbiAgICAgICAgY29tcG9uZW50PzogVHlwZTxhbnk+LFxuICAgICAgICBsb2FkQ29tcG9uZW50PzogKCkgPT4gVHlwZTx1bmtub3duPiB8IE9ic2VydmFibGU8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+IHwgUHJvbWlzZTxUeXBlPHVua25vd24+IHwgRGVmYXVsdEV4cG9ydDxUeXBlPHVua25vd24+Pj5cbiAgICApIHtcbiAgICAgICAgc3VwZXIoe3BhdGg6IHBhdGgsIGNvbXBvbmVudCwgbG9hZENvbXBvbmVudH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmVhZE9ubHkocGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhQZXJtaXNzaW9ucyhwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53aXRoQWRkKGZhbHNlKTtcbiAgICAgICAgdGhpcy53aXRoRWRpdChmYWxzZSk7XG4gICAgICAgIHRoaXMud2l0aERlbGV0ZShmYWxzZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGV0YWlscyhoYXNEZXRhaWxzID0gdHJ1ZSwgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMsIHBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oYXNEZXRhaWxzID0gaGFzRGV0YWlscztcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhQZXJtaXNzaW9ucyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHBlcm1pc3Npb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aCkge1xuICAgICAgICAgICAgdGhpcy5kZXRhaWxzUGF0aCA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZGQoaGFzQWRkID0gdHJ1ZSwgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMsIHBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oYXNBZGQgPSBoYXNBZGQ7XG4gICAgICAgIGlmIChwZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy53aXRoUGVybWlzc2lvbnModW5kZWZpbmVkLCBwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkUGF0aCA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0KGhhc0VkaXQgPSB0cnVlLCBwZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucywgcGF0aD86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLmhhc0VkaXQgPSBoYXNFZGl0O1xuICAgICAgICBpZiAocGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aFBlcm1pc3Npb25zKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdFBhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVsZXRlKGhhc0RlbGV0ZSA9IHRydWUsIHBlcm1pc3Npb25zPzogQVBlcm1pc3Npb25zKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGFzRGVsZXRlID0gaGFzRGVsZXRlO1xuICAgICAgICBpZiAocGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aFBlcm1pc3Npb25zKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHBlcm1pc3Npb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFBlcm1pc3Npb25zKHJlYWQ/OiBBUGVybWlzc2lvbnMsIGFkZD86IEFQZXJtaXNzaW9ucywgZWRpdD86IEFQZXJtaXNzaW9ucywgZGVsZXQ/OiBBUGVybWlzc2lvbnMsIGRldGFpbHM/OiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlYWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF0gPSByZWFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhZGQpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuQUREXSA9IGFkZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWRpdCkge1xuICAgICAgICAgICAgdGhpcy50YWJsZXZpZXdQZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSA9IGVkaXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlbGV0KSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURV0gPSBkZWxldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGV0YWlscykge1xuICAgICAgICAgICAgdGhpcy50YWJsZXZpZXdQZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSA9IGRldGFpbHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQZXJtaXNzaW9uQnlDYXRlZ29yeShrZXk6IHN0cmluZywgcGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMudGFibGV2aWV3UGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zW2tleV0gPSBwZXJtaXNzaW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQZXJtaXNzaW9uc09iamVjdChwZXJtaXNzaW9uczoge1trZXk6IHN0cmluZ106IEFQZXJtaXNzaW9uc30pOiB0aGlzIHtcbiAgICAgICAgdGhpcy50YWJsZXZpZXdQZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYnVpbGQoKTogUm91dGUge1xuICAgICAgICBpZiAoIXRoaXMuaXNGcm9tQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlRGF0YS50YWJsZXZpZXcgPSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogdGhpcy5kZXNjcmlwdG9yISxcbiAgICAgICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuZGF0YVByb3ZpZGVyIVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlRGF0YS50YWJsZXZpZXcuYWN0aW9ucyA9IHRoaXMuYWN0aW9ucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50YWJsZXZpZXdQZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3UGVybWlzc2lvbnMgPSB7Li4udGhpcy50YWJsZXZpZXdQZXJtaXNzaW9uc307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucyA9IHtcbiAgICAgICAgICAgIGhhc0FkZDogdGhpcy5oYXNBZGQsXG4gICAgICAgICAgICBoYXNFZGl0OiB0aGlzLmhhc0VkaXQsXG4gICAgICAgICAgICBoYXNEZXRhaWxzOiB0aGlzLmhhc0RldGFpbHMsXG4gICAgICAgICAgICBoYXNEZWxldGU6IHRoaXMuaGFzRGVsZXRlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMud2l0aERhdGEodGhpcy5yb3V0ZURhdGEpO1xuICAgICAgICBpZiAodGhpcy50YWJsZXZpZXdQZXJtaXNzaW9ucz8uW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLlJFQURdKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlRGF0YS5wZXJtaXNzaW9ucyA9IHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb3B5IHJvdXRlIGRhdGEgZm9yIGNoaWxkcmVuLCByZXNldCBicmVhZGNydW1icyBtZW51IGl0ZW1zIGFuZCBwZXJtaXNzaW9uXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuUm91dGVEYXRhOiBDb21tb25zUm91dGVEYXRhID0ge1xuICAgICAgICAgICAgLi4udGhpcy5yb3V0ZURhdGEsXG4gICAgICAgICAgICBicmVhZGNydW1iOiBudWxsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbG9hZEFjdGlvblJvdXRlID0gKCkgPT4gaW1wb3J0KCcuLi8uLi9hY3Rpb24vY29tcG9uZW50cy9yb3V0ZS9hY3Rpb24tcm91dGUuY29tcG9uZW50Jyk7XG5cbiAgICAgICAgLy8gbGlzdCByb3V0ZVxuICAgICAgICBjb25zdCByb290Q2hpbGRSb3V0ZUJ1aWxkZXIgPSBjcmVhdGVMYXp5Um91dGUoJycsIGxvYWRBY3Rpb25Sb3V0ZSk7XG4gICAgICAgIHJvb3RDaGlsZFJvdXRlQnVpbGRlci53aXRoRGF0YSh7Li4uY2hpbGRyZW5Sb3V0ZURhdGF9KTtcbiAgICAgICAgaWYgKHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEXSkge1xuICAgICAgICAgICAgcm9vdENoaWxkUm91dGVCdWlsZGVyLndpdGhQZXJtaXNzaW9ucyh0aGlzLnRhYmxldmlld1Blcm1pc3Npb25zW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLlJFQURdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZENoaWxkQnVpbGRlcihyb290Q2hpbGRSb3V0ZUJ1aWxkZXIpO1xuXG4gICAgICAgIC8vIGFkZCByb3V0ZVxuICAgICAgICBpZiAodGhpcy5oYXNBZGQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlQnVpbGRlciA9IGNyZWF0ZUxhenlSb3V0ZSh0aGlzLmFkZFBhdGgsIGxvYWRBY3Rpb25Sb3V0ZSk7XG4gICAgICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aERhdGEoey4uLmNoaWxkcmVuUm91dGVEYXRhfSk7XG4gICAgICAgICAgICBpZiAodGhpcy50YWJsZXZpZXdQZXJtaXNzaW9ucz8uW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERF0pIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aFBlcm1pc3Npb25zKHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuQUREXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFkZENoaWxkQnVpbGRlcihyb3V0ZUJ1aWxkZXIpO1xuICAgICAgICAgICAgcm91dGVCdWlsZGVyLndpdGhDYW5EZWFjdGl2YXRlKHVuc2F2ZWRDaGFuZ2VzR3VhcmQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhhc0RldGFpbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlQnVpbGRlciA9IGNyZWF0ZUxhenlSb3V0ZSh0aGlzLmRldGFpbHNQYXRoLCBsb2FkQWN0aW9uUm91dGUpO1xuICAgICAgICAgICAgcm91dGVCdWlsZGVyLndpdGhEYXRhKHsuLi5jaGlsZHJlblJvdXRlRGF0YX0pO1xuICAgICAgICAgICAgaWYgKHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSkge1xuICAgICAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoUGVybWlzc2lvbnModGhpcy50YWJsZXZpZXdQZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFkZENoaWxkQnVpbGRlcihyb3V0ZUJ1aWxkZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhhc0VkaXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlQnVpbGRlciA9IGNyZWF0ZUxhenlSb3V0ZSh0aGlzLmVkaXRQYXRoLCBsb2FkQWN0aW9uUm91dGUpO1xuICAgICAgICAgICAgcm91dGVCdWlsZGVyLndpdGhEYXRhKHsuLi5jaGlsZHJlblJvdXRlRGF0YX0pO1xuICAgICAgICAgICAgaWYgKHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSkge1xuICAgICAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoUGVybWlzc2lvbnModGhpcy50YWJsZXZpZXdQZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFkZENoaWxkQnVpbGRlcihyb3V0ZUJ1aWxkZXIpO1xuICAgICAgICAgICAgcm91dGVCdWlsZGVyLndpdGhDYW5EZWFjdGl2YXRlKHVuc2F2ZWRDaGFuZ2VzR3VhcmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLmJ1aWxkKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpbmRNZW51SXRlbVBlcm1pc3Npb25zKCkge1xuICAgICAgICBjb25zdCBtZW51SXRlbVBlcm1pc3Npb24gPSBzdXBlci5maW5kTWVudUl0ZW1QZXJtaXNzaW9ucygpO1xuICAgICAgICBpZiAoIW1lbnVJdGVtUGVybWlzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFibGV2aWV3UGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVudUl0ZW1QZXJtaXNzaW9uO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhYmxldmlld1JvdXRlKHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4pOiBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVGFibGV2aWV3Um91dGVCdWlsZGVyKHBhdGgsIGNvbXBvbmVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWJsZXZpZXdMYXp5Um91dGUoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IFR5cGU8dW5rbm93bj4gfCBPYnNlcnZhYmxlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PiB8IFByb21pc2U8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+XG4pOiBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVGFibGV2aWV3Um91dGVCdWlsZGVyKHBhdGgsIHVuZGVmaW5lZCwgbG9hZENvbXBvbmVudCk7XG59XG4iXX0=
|