@valtimo/object-management 10.8.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/{esm2020 → esm2022}/lib/components/object-management-detail-container/object-management-detail-container.component.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component.mjs +4 -4
  3. package/esm2022/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.mjs +446 -0
  4. package/esm2022/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.mjs +341 -0
  5. package/{esm2020 → esm2022}/lib/components/object-management-list/object-management-list.component.mjs +4 -4
  6. package/esm2022/lib/components/object-management-modal/object-management-modal.component.mjs +146 -0
  7. package/esm2022/lib/components/object-management-upload-modal/object-management-upload-modal.component.mjs +184 -0
  8. package/{esm2020 → esm2022}/lib/object-management-routing.module.mjs +5 -5
  9. package/esm2022/lib/object-management.module.mjs +141 -0
  10. package/{esm2020 → esm2022}/lib/services/object-management-state.service.mjs +4 -4
  11. package/{esm2020 → esm2022}/lib/services/object-management.service.mjs +4 -4
  12. package/{esm2020 → esm2022}/lib/services/tab.service.mjs +4 -4
  13. package/{fesm2020 → fesm2022}/valtimo-object-management.mjs +110 -109
  14. package/fesm2022/valtimo-object-management.mjs.map +1 -0
  15. package/lib/components/object-management-detail-container/object-management-detail-container.component.d.ts +1 -1
  16. package/lib/components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component.d.ts +1 -1
  17. package/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.d.ts +2 -3
  18. package/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.d.ts +1 -1
  19. package/lib/components/object-management-list/object-management-list.component.d.ts +1 -1
  20. package/lib/components/object-management-modal/object-management-modal.component.d.ts +3 -3
  21. package/lib/components/object-management-upload-modal/object-management-upload-modal.component.d.ts +3 -3
  22. package/lib/models/object-management.model.d.ts +1 -1
  23. package/lib/object-management.module.d.ts +3 -4
  24. package/package.json +8 -14
  25. package/esm2020/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.mjs +0 -447
  26. package/esm2020/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.mjs +0 -342
  27. package/esm2020/lib/components/object-management-modal/object-management-modal.component.mjs +0 -146
  28. package/esm2020/lib/components/object-management-upload-modal/object-management-upload-modal.component.mjs +0 -185
  29. package/esm2020/lib/object-management.module.mjs +0 -142
  30. package/fesm2015/valtimo-object-management.mjs +0 -1590
  31. package/fesm2015/valtimo-object-management.mjs.map +0 -1
  32. package/fesm2020/valtimo-object-management.mjs.map +0 -1
  33. /package/{esm2020 → esm2022}/lib/models/object-management.model.mjs +0 -0
  34. /package/{esm2020 → esm2022}/lib/services/tab.enum.mjs +0 -0
  35. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  36. /package/{esm2020 → esm2022}/valtimo-object-management.mjs +0 -0
@@ -0,0 +1,146 @@
1
+ /*
2
+ * Copyright 2015-2023 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component, Input, ViewChild } from '@angular/core';
17
+ import { BehaviorSubject, combineLatest, map } from 'rxjs';
18
+ import { take } from 'rxjs/operators';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "../../services/object-management-state.service";
21
+ import * as i2 from "../../services/object-management.service";
22
+ import * as i3 from "@valtimo/form";
23
+ import * as i4 from "@valtimo/plugin";
24
+ import * as i5 from "@valtimo/components";
25
+ import * as i6 from "@angular/common";
26
+ import * as i7 from "@ngx-translate/core";
27
+ export class ObjectManagementModalComponent {
28
+ constructor(objectManagementState, objectManagementService, formService, pluginManagementService, modalService) {
29
+ this.objectManagementState = objectManagementState;
30
+ this.objectManagementService = objectManagementService;
31
+ this.formService = formService;
32
+ this.pluginManagementService = pluginManagementService;
33
+ this.modalService = modalService;
34
+ this.valid$ = new BehaviorSubject(false);
35
+ this.showForm$ = this.modalService.modalVisible$;
36
+ this.modalType$ = this.objectManagementState.modalType$;
37
+ this.formData$ = new BehaviorSubject(null);
38
+ this.selectedObjecttype$ = new BehaviorSubject(null);
39
+ this.formDefinitions$ = this.formService
40
+ .getAllFormDefinitions()
41
+ .pipe(map(results => results?.map(configuration => ({
42
+ id: configuration.name,
43
+ text: configuration.name,
44
+ }))));
45
+ this.configurationInstances$ = this.pluginManagementService
46
+ .getAllPluginConfigurations()
47
+ .pipe(map(configurations => configurations));
48
+ this.objectsApiConfigurations$ = this.configurationInstances$.pipe(map(configurations => {
49
+ const filteredObjectsApiConfigurations = configurations.filter(configuration => configuration?.pluginDefinition?.key === 'objectenapi');
50
+ return filteredObjectsApiConfigurations.map(configuration => ({
51
+ id: configuration.id,
52
+ text: configuration.title,
53
+ }));
54
+ }));
55
+ this.objecttypesApiConfigurations$ = this.configurationInstances$.pipe(map(configurations => {
56
+ const filteredObjecttypesApiConfigurations = configurations.filter(configuration => configuration?.pluginDefinition?.key === 'objecttypenapi');
57
+ return filteredObjecttypesApiConfigurations.map(configuration => ({
58
+ id: configuration.id,
59
+ text: configuration.title,
60
+ properties: configuration.properties,
61
+ }));
62
+ }));
63
+ }
64
+ ngAfterViewInit() {
65
+ this.openShowSubscription();
66
+ this.openHideSubscription();
67
+ }
68
+ ngOnDestroy() {
69
+ this.showSubscription?.unsubscribe();
70
+ this.hideSubscription?.unsubscribe();
71
+ }
72
+ hide() {
73
+ this.formData$.next(null);
74
+ this.valid$.next(false);
75
+ this.modalService.closeModal();
76
+ }
77
+ cancel() {
78
+ this.hide();
79
+ }
80
+ save() {
81
+ combineLatest([this.valid$, this.formData$, this.modalType$])
82
+ .pipe(take(1))
83
+ .subscribe(([valid, formData, modalType]) => {
84
+ if (valid) {
85
+ if (modalType === 'add') {
86
+ this.objectManagementService.createObject({ ...formData }).subscribe(() => {
87
+ this.objectManagementState.refresh();
88
+ this.objectManagementState.hideModal();
89
+ });
90
+ }
91
+ else if (modalType === 'edit') {
92
+ this.objectManagementService.editObject({ ...formData }).subscribe(() => {
93
+ this.objectManagementState.refresh();
94
+ this.objectManagementState.hideModal();
95
+ });
96
+ }
97
+ }
98
+ });
99
+ }
100
+ openShowSubscription() {
101
+ this.showSubscription = this.objectManagementState.showModal$.subscribe(() => {
102
+ this.show();
103
+ });
104
+ }
105
+ openHideSubscription() {
106
+ this.hideSubscription = this.objectManagementState.hideModal$.subscribe(() => {
107
+ this.hide();
108
+ });
109
+ }
110
+ show() {
111
+ this.objectManagementState.modalType$.pipe(take(1)).subscribe(modalType => {
112
+ if (modalType === 'edit' || modalType === 'add') {
113
+ this.modalService.openModal(this.objectManagementModal);
114
+ }
115
+ });
116
+ }
117
+ formValueChange(data) {
118
+ if (data.showInDataMenu === '') {
119
+ data.showInDataMenu = false;
120
+ }
121
+ this.formData$.next(data);
122
+ this.setValid(data);
123
+ }
124
+ setValid(data) {
125
+ this.valid$.next(!!(data.title &&
126
+ data.objectenApiPluginConfigurationId &&
127
+ data.objecttypenApiPluginConfigurationId &&
128
+ data.objecttypeId &&
129
+ data.objecttypeVersion));
130
+ }
131
+ selectObjectType(objecttype) {
132
+ this.selectedObjecttype$.next(objecttype);
133
+ }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementModalComponent, deps: [{ token: i1.ObjectManagementStateService }, { token: i2.ObjectManagementService }, { token: i3.FormService }, { token: i4.PluginManagementService }, { token: i5.ModalService }], target: i0.ɵɵFactoryTarget.Component }); }
135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ObjectManagementModalComponent, selector: "valtimo-object-management-modal", inputs: { prefillObject$: "prefillObject$" }, viewQueries: [{ propertyName: "objectManagementModal", first: true, predicate: ["objectManagementModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-modal\n #objectManagementModal\n *ngIf=\"{\n disabled: disabled$ | async,\n valid: valid$ | async,\n modalType: modalType$ | async,\n prefillObject: prefillObject$ | async\n } as obs\"\n>\n <div role=\"header\">\n <div class=\"add-title\">\n <v-title [margin]=\"false\">{{\n (obs.modalType === 'add'\n ? 'objectManagement.createObjecttype'\n : 'objectManagement.editObjecttype'\n ) | translate\n }}</v-title>\n </div>\n </div>\n <div role=\"content\">\n <ng-container\n *ngTemplateOutlet=\"\n form;\n context: {prefillObject: obs.prefillObject, modalType: obs.modalType}\n \"\n ></ng-container>\n </div>\n <div role=\"footer\">\n <div class=\"buttons\">\n <v-button (clickEvent)=\"cancel()\" [disabled]=\"obs.disabled\" type=\"secondary\">\n {{ 'objectManagement.cancel' | translate }}\n </v-button>\n <v-button\n (clickEvent)=\"save()\"\n [disabled]=\"obs.disabled || !obs.valid\"\n mdiIcon=\"plus\"\n type=\"success\"\n >\n {{\n (obs.modalType === 'add' ? 'objectManagement.add' : 'objectManagement.edit') | translate\n }}\n </v-button>\n </div>\n </div>\n</v-modal>\n\n<ng-template #form let-prefillObject=\"prefillObject\" let-modalType=\"modalType\">\n <ng-container *ngIf=\"showForm$ | async\">\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n *ngIf=\"modalType === 'edit'\"\n hidden\n [disabled]=\"true\"\n [defaultValue]=\"prefillObject?.id\"\n name=\"id\"\n ></v-input>\n\n <v-input\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'objectManagement.labels.title' | translate\"\n [tooltip]=\"'objectManagement.tooltips.title' | translate\"\n [widthPx]=\"350\"\n [defaultValue]=\"prefillObject?.title\"\n name=\"title\"\n ></v-input>\n\n <ng-container\n *ngIf=\"{\n connectionInstances: configurationInstances$ | async,\n objectsApiConfigurations: objectsApiConfigurations$ | async,\n objecttypesApiConfigurations: objecttypesApiConfigurations$ | async\n } as objectObs\"\n >\n <v-select\n [items]=\"objectObs.objectsApiConfigurations\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"objectenApiPluginConfigurationId\"\n [title]=\"'objectManagement.labels.objects' | translate\"\n [defaultSelectionId]=\"prefillObject?.objectenApiPluginConfigurationId\"\n [required]=\"true\"\n ></v-select>\n\n <v-select\n [items]=\"objectObs.objecttypesApiConfigurations\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"objecttypenApiPluginConfigurationId\"\n [title]=\"'objectManagement.labels.objecttypes' | translate\"\n [defaultSelectionId]=\"prefillObject?.objecttypenApiPluginConfigurationId\"\n [required]=\"true\"\n (selectedChange)=\"selectObjectType($event)\"\n ></v-select>\n </ng-container>\n\n <v-input\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'objectManagement.labels.objecttypeId' | translate\"\n [tooltip]=\"'objectManagement.tooltips.objecttypeId' | translate\"\n [widthPx]=\"350\"\n [defaultValue]=\"prefillObject?.objecttypeId\"\n name=\"objecttypeId\"\n ></v-input>\n\n <v-input\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'objectManagement.labels.objecttypeVersion' | translate\"\n [tooltip]=\"'objectManagement.tooltips.objecttypeVersion' | translate\"\n [widthPx]=\"350\"\n [defaultValue]=\"prefillObject?.objecttypeVersion\"\n [min]=\"1\"\n type=\"number\"\n name=\"objecttypeVersion\"\n ></v-input>\n\n <ng-container *ngIf=\"{formDefinitions: formDefinitions$ | async} as formObs\">\n <v-select\n [items]=\"formObs.formDefinitions\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"formDefinitionView\"\n [title]=\"'objectManagement.labels.formDefinitionView' | translate\"\n [tooltip]=\"'objectManagement.tooltips.formDefinitionView' | translate\"\n [defaultSelectionId]=\"prefillObject?.formDefinitionView\"\n ></v-select>\n\n <v-select\n [items]=\"formObs.formDefinitions\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"formDefinitionEdit\"\n [title]=\"'objectManagement.labels.formDefinitionEdit' | translate\"\n [tooltip]=\"'objectManagement.tooltips.formDefinitionEdit' | translate\"\n [defaultSelectionId]=\"prefillObject?.formDefinitionEdit\"\n ></v-select>\n </ng-container>\n\n <v-input\n [margin]=\"true\"\n type=\"checkbox\"\n [title]=\"'objectManagement.labels.showInDataMenu' | translate\"\n [tooltip]=\"'objectManagement.tooltips.showInDataMenu' | translate\"\n name=\"showInDataMenu\"\n [defaultValue]=\"prefillObject?.showInDataMenu\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.buttons{width:100%;display:flex;flex-direction:row;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.VModalComponent, selector: "v-modal", inputs: ["appearingDelayMs", "maxWidthPx", "hideFooter"], outputs: ["closeEvent"] }, { kind: "component", type: i5.TitleComponent, selector: "v-title", inputs: ["type", "margin", "fullWidth", "center"] }, { kind: "component", type: i5.ButtonComponent, selector: "v-button", inputs: ["type", "mdiIcon", "disabled", "title", "titleTranslationKey"], outputs: ["clickEvent"] }, { kind: "component", type: i5.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i5.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder"], outputs: ["valueChange"] }, { kind: "component", type: i5.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme"], outputs: ["selectedChange"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
136
+ }
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementModalComponent, decorators: [{
138
+ type: Component,
139
+ args: [{ selector: 'valtimo-object-management-modal', template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-modal\n #objectManagementModal\n *ngIf=\"{\n disabled: disabled$ | async,\n valid: valid$ | async,\n modalType: modalType$ | async,\n prefillObject: prefillObject$ | async\n } as obs\"\n>\n <div role=\"header\">\n <div class=\"add-title\">\n <v-title [margin]=\"false\">{{\n (obs.modalType === 'add'\n ? 'objectManagement.createObjecttype'\n : 'objectManagement.editObjecttype'\n ) | translate\n }}</v-title>\n </div>\n </div>\n <div role=\"content\">\n <ng-container\n *ngTemplateOutlet=\"\n form;\n context: {prefillObject: obs.prefillObject, modalType: obs.modalType}\n \"\n ></ng-container>\n </div>\n <div role=\"footer\">\n <div class=\"buttons\">\n <v-button (clickEvent)=\"cancel()\" [disabled]=\"obs.disabled\" type=\"secondary\">\n {{ 'objectManagement.cancel' | translate }}\n </v-button>\n <v-button\n (clickEvent)=\"save()\"\n [disabled]=\"obs.disabled || !obs.valid\"\n mdiIcon=\"plus\"\n type=\"success\"\n >\n {{\n (obs.modalType === 'add' ? 'objectManagement.add' : 'objectManagement.edit') | translate\n }}\n </v-button>\n </div>\n </div>\n</v-modal>\n\n<ng-template #form let-prefillObject=\"prefillObject\" let-modalType=\"modalType\">\n <ng-container *ngIf=\"showForm$ | async\">\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n *ngIf=\"modalType === 'edit'\"\n hidden\n [disabled]=\"true\"\n [defaultValue]=\"prefillObject?.id\"\n name=\"id\"\n ></v-input>\n\n <v-input\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'objectManagement.labels.title' | translate\"\n [tooltip]=\"'objectManagement.tooltips.title' | translate\"\n [widthPx]=\"350\"\n [defaultValue]=\"prefillObject?.title\"\n name=\"title\"\n ></v-input>\n\n <ng-container\n *ngIf=\"{\n connectionInstances: configurationInstances$ | async,\n objectsApiConfigurations: objectsApiConfigurations$ | async,\n objecttypesApiConfigurations: objecttypesApiConfigurations$ | async\n } as objectObs\"\n >\n <v-select\n [items]=\"objectObs.objectsApiConfigurations\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"objectenApiPluginConfigurationId\"\n [title]=\"'objectManagement.labels.objects' | translate\"\n [defaultSelectionId]=\"prefillObject?.objectenApiPluginConfigurationId\"\n [required]=\"true\"\n ></v-select>\n\n <v-select\n [items]=\"objectObs.objecttypesApiConfigurations\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"objecttypenApiPluginConfigurationId\"\n [title]=\"'objectManagement.labels.objecttypes' | translate\"\n [defaultSelectionId]=\"prefillObject?.objecttypenApiPluginConfigurationId\"\n [required]=\"true\"\n (selectedChange)=\"selectObjectType($event)\"\n ></v-select>\n </ng-container>\n\n <v-input\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'objectManagement.labels.objecttypeId' | translate\"\n [tooltip]=\"'objectManagement.tooltips.objecttypeId' | translate\"\n [widthPx]=\"350\"\n [defaultValue]=\"prefillObject?.objecttypeId\"\n name=\"objecttypeId\"\n ></v-input>\n\n <v-input\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'objectManagement.labels.objecttypeVersion' | translate\"\n [tooltip]=\"'objectManagement.tooltips.objecttypeVersion' | translate\"\n [widthPx]=\"350\"\n [defaultValue]=\"prefillObject?.objecttypeVersion\"\n [min]=\"1\"\n type=\"number\"\n name=\"objecttypeVersion\"\n ></v-input>\n\n <ng-container *ngIf=\"{formDefinitions: formDefinitions$ | async} as formObs\">\n <v-select\n [items]=\"formObs.formDefinitions\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"formDefinitionView\"\n [title]=\"'objectManagement.labels.formDefinitionView' | translate\"\n [tooltip]=\"'objectManagement.tooltips.formDefinitionView' | translate\"\n [defaultSelectionId]=\"prefillObject?.formDefinitionView\"\n ></v-select>\n\n <v-select\n [items]=\"formObs.formDefinitions\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"formDefinitionEdit\"\n [title]=\"'objectManagement.labels.formDefinitionEdit' | translate\"\n [tooltip]=\"'objectManagement.tooltips.formDefinitionEdit' | translate\"\n [defaultSelectionId]=\"prefillObject?.formDefinitionEdit\"\n ></v-select>\n </ng-container>\n\n <v-input\n [margin]=\"true\"\n type=\"checkbox\"\n [title]=\"'objectManagement.labels.showInDataMenu' | translate\"\n [tooltip]=\"'objectManagement.tooltips.showInDataMenu' | translate\"\n name=\"showInDataMenu\"\n [defaultValue]=\"prefillObject?.showInDataMenu\"\n ></v-input>\n </v-form>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.buttons{width:100%;display:flex;flex-direction:row;justify-content:space-between}\n"] }]
140
+ }], ctorParameters: function () { return [{ type: i1.ObjectManagementStateService }, { type: i2.ObjectManagementService }, { type: i3.FormService }, { type: i4.PluginManagementService }, { type: i5.ModalService }]; }, propDecorators: { objectManagementModal: [{
141
+ type: ViewChild,
142
+ args: ['objectManagementModal']
143
+ }], prefillObject$: [{
144
+ type: Input
145
+ }] } });
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1hbmFnZW1lbnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9vYmplY3QtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LW1hbmFnZW1lbnQtbW9kYWwvb2JqZWN0LW1hbmFnZW1lbnQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9vYmplY3QtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LW1hbmFnZW1lbnQtbW9kYWwvb2JqZWN0LW1hbmFnZW1lbnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQWdCLFNBQVMsRUFBRSxLQUFLLEVBQWEsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDbkYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFhcEMsTUFBTSxPQUFPLDhCQUE4QjtJQXlEekMsWUFDbUIscUJBQW1ELEVBQ25ELHVCQUFnRCxFQUNoRCxXQUF3QixFQUN4Qix1QkFBZ0QsRUFDaEQsWUFBMEI7UUFKMUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUE4QjtRQUNuRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsaUJBQVksR0FBWixZQUFZLENBQWM7UUF6RHBDLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM3QyxjQUFTLEdBQXdCLElBQUksQ0FB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Y0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtPYmplY3RNYW5hZ2VtZW50U3RhdGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vYmplY3QtbWFuYWdlbWVudC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7UGx1Z2luQ29uZmlndXJhdGlvbiwgUGx1Z2luTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3BsdWdpbic7XG5pbXBvcnQge09iamVjdE1hbmFnZW1lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vYmplY3QtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7T2JqZWN0dHlwZX0gZnJvbSAnLi4vLi4vbW9kZWxzL29iamVjdC1tYW5hZ2VtZW50Lm1vZGVsJztcbmltcG9ydCB7Rm9ybVNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2Zvcm0nO1xuaW1wb3J0IHtWTW9kYWxDb21wb25lbnQsIE1vZGFsU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tb2JqZWN0LW1hbmFnZW1lbnQtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LW1hbmFnZW1lbnQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtbWFuYWdlbWVudC1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RNYW5hZ2VtZW50TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdvYmplY3RNYW5hZ2VtZW50TW9kYWwnKSBvYmplY3RNYW5hZ2VtZW50TW9kYWw6IFZNb2RhbENvbXBvbmVudDtcbiAgQElucHV0KCkgcHJlZmlsbE9iamVjdCQhOiBPYnNlcnZhYmxlPE9iamVjdHR5cGU+O1xuXG4gIHJlYWRvbmx5IGRpc2FibGVkJCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IHZhbGlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93Rm9ybSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLm1vZGFsU2VydmljZS5tb2RhbFZpc2libGUkO1xuICByZWFkb25seSBtb2RhbFR5cGUkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLm9iamVjdE1hbmFnZW1lbnRTdGF0ZS5tb2RhbFR5cGUkO1xuICByZWFkb25seSBmb3JtRGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG5cbiAgc2hvd1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgaGlkZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICByZWFkb25seSBzZWxlY3RlZE9iamVjdHR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBmb3JtRGVmaW5pdGlvbnMkOiBPYnNlcnZhYmxlPEFycmF5PHtpZDogc3RyaW5nOyB0ZXh0OiBzdHJpbmd9Pj4gPSB0aGlzLmZvcm1TZXJ2aWNlXG4gICAgLmdldEFsbEZvcm1EZWZpbml0aW9ucygpXG4gICAgLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIHJlc3VsdHMgPT5cbiAgICAgICAgICByZXN1bHRzPy5tYXAoY29uZmlndXJhdGlvbiA9PiAoe1xuICAgICAgICAgICAgaWQ6IGNvbmZpZ3VyYXRpb24ubmFtZSxcbiAgICAgICAgICAgIHRleHQ6IGNvbmZpZ3VyYXRpb24ubmFtZSxcbiAgICAgICAgICB9KSlcbiAgICAgIClcbiAgICApO1xuXG4gIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25JbnN0YW5jZXMkOiBPYnNlcnZhYmxlPEFycmF5PFBsdWdpbkNvbmZpZ3VyYXRpb24+PiA9XG4gICAgdGhpcy5wbHVnaW5NYW5hZ2VtZW50U2VydmljZVxuICAgICAgLmdldEFsbFBsdWdpbkNvbmZpZ3VyYXRpb25zKClcbiAgICAgIC5waXBlKG1hcChjb25maWd1cmF0aW9ucyA9PiBjb25maWd1cmF0aW9ucykpO1xuXG4gIHJlYWRvbmx5IG9iamVjdHNBcGlDb25maWd1cmF0aW9ucyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuY29uZmlndXJhdGlvbkluc3RhbmNlcyQucGlwZShcbiAgICBtYXAoY29uZmlndXJhdGlvbnMgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRPYmplY3RzQXBpQ29uZmlndXJhdGlvbnMgPSBjb25maWd1cmF0aW9ucy5maWx0ZXIoXG4gICAgICAgIGNvbmZpZ3VyYXRpb24gPT4gY29uZmlndXJhdGlvbj8ucGx1Z2luRGVmaW5pdGlvbj8ua2V5ID09PSAnb2JqZWN0ZW5hcGknXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZpbHRlcmVkT2JqZWN0c0FwaUNvbmZpZ3VyYXRpb25zLm1hcChjb25maWd1cmF0aW9uID0+ICh7XG4gICAgICAgIGlkOiBjb25maWd1cmF0aW9uLmlkLFxuICAgICAgICB0ZXh0OiBjb25maWd1cmF0aW9uLnRpdGxlLFxuICAgICAgfSkpO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgb2JqZWN0dHlwZXNBcGlDb25maWd1cmF0aW9ucyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuY29uZmlndXJhdGlvbkluc3RhbmNlcyQucGlwZShcbiAgICBtYXAoY29uZmlndXJhdGlvbnMgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRPYmplY3R0eXBlc0FwaUNvbmZpZ3VyYXRpb25zID0gY29uZmlndXJhdGlvbnMuZmlsdGVyKFxuICAgICAgICBjb25maWd1cmF0aW9uID0+IGNvbmZpZ3VyYXRpb24/LnBsdWdpbkRlZmluaXRpb24/LmtleSA9PT0gJ29iamVjdHR5cGVuYXBpJ1xuICAgICAgKTtcbiAgICAgIHJldHVybiBmaWx0ZXJlZE9iamVjdHR5cGVzQXBpQ29uZmlndXJhdGlvbnMubWFwKGNvbmZpZ3VyYXRpb24gPT4gKHtcbiAgICAgICAgaWQ6IGNvbmZpZ3VyYXRpb24uaWQsXG4gICAgICAgIHRleHQ6IGNvbmZpZ3VyYXRpb24udGl0bGUsXG4gICAgICAgIHByb3BlcnRpZXM6IGNvbmZpZ3VyYXRpb24ucHJvcGVydGllcyxcbiAgICAgIH0pKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2JqZWN0TWFuYWdlbWVudFN0YXRlOiBPYmplY3RNYW5hZ2VtZW50U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2JqZWN0TWFuYWdlbWVudFNlcnZpY2U6IE9iamVjdE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luTWFuYWdlbWVudFNlcnZpY2U6IFBsdWdpbk1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5TaG93U3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5vcGVuSGlkZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zaG93U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlkZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGhpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtRGF0YSQubmV4dChudWxsKTtcbiAgICB0aGlzLnZhbGlkJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5jbG9zZU1vZGFsKCk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBzYXZlKCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMudmFsaWQkLCB0aGlzLmZvcm1EYXRhJCwgdGhpcy5tb2RhbFR5cGUkXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbdmFsaWQsIGZvcm1EYXRhLCBtb2RhbFR5cGVdKSA9PiB7XG4gICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgIGlmIChtb2RhbFR5cGUgPT09ICdhZGQnKSB7XG4gICAgICAgICAgICB0aGlzLm9iamVjdE1hbmFnZW1lbnRTZXJ2aWNlLmNyZWF0ZU9iamVjdCh7Li4uZm9ybURhdGF9KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm9iamVjdE1hbmFnZW1lbnRTdGF0ZS5yZWZyZXNoKCk7XG4gICAgICAgICAgICAgIHRoaXMub2JqZWN0TWFuYWdlbWVudFN0YXRlLmhpZGVNb2RhbCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtb2RhbFR5cGUgPT09ICdlZGl0Jykge1xuICAgICAgICAgICAgdGhpcy5vYmplY3RNYW5hZ2VtZW50U2VydmljZS5lZGl0T2JqZWN0KHsuLi5mb3JtRGF0YX0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMub2JqZWN0TWFuYWdlbWVudFN0YXRlLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgdGhpcy5vYmplY3RNYW5hZ2VtZW50U3RhdGUuaGlkZU1vZGFsKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuU2hvd1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dTdWJzY3JpcHRpb24gPSB0aGlzLm9iamVjdE1hbmFnZW1lbnRTdGF0ZS5zaG93TW9kYWwkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkhpZGVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlU3Vic2NyaXB0aW9uID0gdGhpcy5vYmplY3RNYW5hZ2VtZW50U3RhdGUuaGlkZU1vZGFsJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3coKTogdm9pZCB7XG4gICAgdGhpcy5vYmplY3RNYW5hZ2VtZW50U3RhdGUubW9kYWxUeXBlJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShtb2RhbFR5cGUgPT4ge1xuICAgICAgaWYgKG1vZGFsVHlwZSA9PT0gJ2VkaXQnIHx8IG1vZGFsVHlwZSA9PT0gJ2FkZCcpIHtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbk1vZGFsKHRoaXMub2JqZWN0TWFuYWdlbWVudE1vZGFsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvcm1WYWx1ZUNoYW5nZShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZGF0YS5zaG93SW5EYXRhTWVudSA9PT0gJycpIHtcbiAgICAgIGRhdGEuc2hvd0luRGF0YU1lbnUgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5mb3JtRGF0YSQubmV4dChkYXRhKTtcbiAgICB0aGlzLnNldFZhbGlkKGRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWxpZChkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkJC5uZXh0KFxuICAgICAgISEoXG4gICAgICAgIGRhdGEudGl0bGUgJiZcbiAgICAgICAgZGF0YS5vYmplY3RlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZCAmJlxuICAgICAgICBkYXRhLm9iamVjdHR5cGVuQXBpUGx1Z2luQ29uZmlndXJhdGlvbklkICYmXG4gICAgICAgIGRhdGEub2JqZWN0dHlwZUlkICYmXG4gICAgICAgIGRhdGEub2JqZWN0dHlwZVZlcnNpb25cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgc2VsZWN0T2JqZWN0VHlwZShvYmplY3R0eXBlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE9iamVjdHR5cGUkLm5leHQob2JqZWN0dHlwZSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHYtbW9kYWxcbiAgI29iamVjdE1hbmFnZW1lbnRNb2RhbFxuICAqbmdJZj1cIntcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgdmFsaWQ6IHZhbGlkJCB8IGFzeW5jLFxuICAgIG1vZGFsVHlwZTogbW9kYWxUeXBlJCB8IGFzeW5jLFxuICAgIHByZWZpbGxPYmplY3Q6IHByZWZpbGxPYmplY3QkIHwgYXN5bmNcbiAgfSBhcyBvYnNcIlxuPlxuICA8ZGl2IHJvbGU9XCJoZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRkLXRpdGxlXCI+XG4gICAgICA8di10aXRsZSBbbWFyZ2luXT1cImZhbHNlXCI+e3tcbiAgICAgICAgKG9icy5tb2RhbFR5cGUgPT09ICdhZGQnXG4gICAgICAgICAgPyAnb2JqZWN0TWFuYWdlbWVudC5jcmVhdGVPYmplY3R0eXBlJ1xuICAgICAgICAgIDogJ29iamVjdE1hbmFnZW1lbnQuZWRpdE9iamVjdHR5cGUnXG4gICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgIH19PC92LXRpdGxlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiByb2xlPVwiY29udGVudFwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIGZvcm07XG4gICAgICAgIGNvbnRleHQ6IHtwcmVmaWxsT2JqZWN0OiBvYnMucHJlZmlsbE9iamVjdCwgbW9kYWxUeXBlOiBvYnMubW9kYWxUeXBlfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IHJvbGU9XCJmb290ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgPHYtYnV0dG9uIChjbGlja0V2ZW50KT1cImNhbmNlbCgpXCIgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiIHR5cGU9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAge3sgJ29iamVjdE1hbmFnZW1lbnQuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC92LWJ1dHRvbj5cbiAgICAgIDx2LWJ1dHRvblxuICAgICAgICAoY2xpY2tFdmVudCk9XCJzYXZlKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkIHx8ICFvYnMudmFsaWRcIlxuICAgICAgICBtZGlJY29uPVwicGx1c1wiXG4gICAgICAgIHR5cGU9XCJzdWNjZXNzXCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICAob2JzLm1vZGFsVHlwZSA9PT0gJ2FkZCcgPyAnb2JqZWN0TWFuYWdlbWVudC5hZGQnIDogJ29iamVjdE1hbmFnZW1lbnQuZWRpdCcpIHwgdHJhbnNsYXRlXG4gICAgICAgIH19XG4gICAgICA8L3YtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdi1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNmb3JtIGxldC1wcmVmaWxsT2JqZWN0PVwicHJlZmlsbE9iamVjdFwiIGxldC1tb2RhbFR5cGU9XCJtb2RhbFR5cGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGb3JtJCB8IGFzeW5jXCI+XG4gICAgPHYtZm9ybSAodmFsdWVDaGFuZ2UpPVwiZm9ybVZhbHVlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDx2LWlucHV0XG4gICAgICAgICpuZ0lmPVwibW9kYWxUeXBlID09PSAnZWRpdCdcIlxuICAgICAgICBoaWRkZW5cbiAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInByZWZpbGxPYmplY3Q/LmlkXCJcbiAgICAgICAgbmFtZT1cImlkXCJcbiAgICAgID48L3YtaW5wdXQ+XG5cbiAgICAgIDx2LWlucHV0XG4gICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW3RpdGxlXT1cIidvYmplY3RNYW5hZ2VtZW50LmxhYmVscy50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCInb2JqZWN0TWFuYWdlbWVudC50b29sdGlwcy50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbd2lkdGhQeF09XCIzNTBcIlxuICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInByZWZpbGxPYmplY3Q/LnRpdGxlXCJcbiAgICAgICAgbmFtZT1cInRpdGxlXCJcbiAgICAgID48L3YtaW5wdXQ+XG5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJ7XG4gICAgICAgICAgY29ubmVjdGlvbkluc3RhbmNlczogY29uZmlndXJhdGlvbkluc3RhbmNlcyQgfCBhc3luYyxcbiAgICAgICAgICBvYmplY3RzQXBpQ29uZmlndXJhdGlvbnM6IG9iamVjdHNBcGlDb25maWd1cmF0aW9ucyQgfCBhc3luYyxcbiAgICAgICAgICBvYmplY3R0eXBlc0FwaUNvbmZpZ3VyYXRpb25zOiBvYmplY3R0eXBlc0FwaUNvbmZpZ3VyYXRpb25zJCB8IGFzeW5jXG4gICAgICAgIH0gYXMgb2JqZWN0T2JzXCJcbiAgICAgID5cbiAgICAgICAgPHYtc2VsZWN0XG4gICAgICAgICAgW2l0ZW1zXT1cIm9iamVjdE9icy5vYmplY3RzQXBpQ29uZmlndXJhdGlvbnNcIlxuICAgICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgICAgW3dpZHRoSW5QeF09XCIzNTBcIlxuICAgICAgICAgIG5hbWU9XCJvYmplY3RlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZFwiXG4gICAgICAgICAgW3RpdGxlXT1cIidvYmplY3RNYW5hZ2VtZW50LmxhYmVscy5vYmplY3RzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2RlZmF1bHRTZWxlY3Rpb25JZF09XCJwcmVmaWxsT2JqZWN0Py5vYmplY3RlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICA+PC92LXNlbGVjdD5cblxuICAgICAgICA8di1zZWxlY3RcbiAgICAgICAgICBbaXRlbXNdPVwib2JqZWN0T2JzLm9iamVjdHR5cGVzQXBpQ29uZmlndXJhdGlvbnNcIlxuICAgICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgICAgW3dpZHRoSW5QeF09XCIzNTBcIlxuICAgICAgICAgIG5hbWU9XCJvYmplY3R0eXBlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZFwiXG4gICAgICAgICAgW3RpdGxlXT1cIidvYmplY3RNYW5hZ2VtZW50LmxhYmVscy5vYmplY3R0eXBlcycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwicHJlZmlsbE9iamVjdD8ub2JqZWN0dHlwZW5BcGlQbHVnaW5Db25maWd1cmF0aW9uSWRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwic2VsZWN0T2JqZWN0VHlwZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHYtaW5wdXRcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbdGl0bGVdPVwiJ29iamVjdE1hbmFnZW1lbnQubGFiZWxzLm9iamVjdHR5cGVJZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCInb2JqZWN0TWFuYWdlbWVudC50b29sdGlwcy5vYmplY3R0eXBlSWQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3dpZHRoUHhdPVwiMzUwXCJcbiAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJwcmVmaWxsT2JqZWN0Py5vYmplY3R0eXBlSWRcIlxuICAgICAgICBuYW1lPVwib2JqZWN0dHlwZUlkXCJcbiAgICAgID48L3YtaW5wdXQ+XG5cbiAgICAgIDx2LWlucHV0XG4gICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW3RpdGxlXT1cIidvYmplY3RNYW5hZ2VtZW50LmxhYmVscy5vYmplY3R0eXBlVmVyc2lvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCInb2JqZWN0TWFuYWdlbWVudC50b29sdGlwcy5vYmplY3R0eXBlVmVyc2lvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbd2lkdGhQeF09XCIzNTBcIlxuICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInByZWZpbGxPYmplY3Q/Lm9iamVjdHR5cGVWZXJzaW9uXCJcbiAgICAgICAgW21pbl09XCIxXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIG5hbWU9XCJvYmplY3R0eXBlVmVyc2lvblwiXG4gICAgICA+PC92LWlucHV0PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwie2Zvcm1EZWZpbml0aW9uczogZm9ybURlZmluaXRpb25zJCB8IGFzeW5jfSBhcyBmb3JtT2JzXCI+XG4gICAgICAgIDx2LXNlbGVjdFxuICAgICAgICAgIFtpdGVtc109XCJmb3JtT2JzLmZvcm1EZWZpbml0aW9uc1wiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbd2lkdGhJblB4XT1cIjM1MFwiXG4gICAgICAgICAgbmFtZT1cImZvcm1EZWZpbml0aW9uVmlld1wiXG4gICAgICAgICAgW3RpdGxlXT1cIidvYmplY3RNYW5hZ2VtZW50LmxhYmVscy5mb3JtRGVmaW5pdGlvblZpZXcnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbdG9vbHRpcF09XCInb2JqZWN0TWFuYWdlbWVudC50b29sdGlwcy5mb3JtRGVmaW5pdGlvblZpZXcnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbZGVmYXVsdFNlbGVjdGlvbklkXT1cInByZWZpbGxPYmplY3Q/LmZvcm1EZWZpbml0aW9uVmlld1wiXG4gICAgICAgID48L3Ytc2VsZWN0PlxuXG4gICAgICAgIDx2LXNlbGVjdFxuICAgICAgICAgIFtpdGVtc109XCJmb3JtT2JzLmZvcm1EZWZpbml0aW9uc1wiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbd2lkdGhJblB4XT1cIjM1MFwiXG4gICAgICAgICAgbmFtZT1cImZvcm1EZWZpbml0aW9uRWRpdFwiXG4gICAgICAgICAgW3RpdGxlXT1cIidvYmplY3RNYW5hZ2VtZW50LmxhYmVscy5mb3JtRGVmaW5pdGlvbkVkaXQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbdG9vbHRpcF09XCInb2JqZWN0TWFuYWdlbWVudC50b29sdGlwcy5mb3JtRGVmaW5pdGlvbkVkaXQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbZGVmYXVsdFNlbGVjdGlvbklkXT1cInByZWZpbGxPYmplY3Q/LmZvcm1EZWZpbml0aW9uRWRpdFwiXG4gICAgICAgID48L3Ytc2VsZWN0PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx2LWlucHV0XG4gICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIFt0aXRsZV09XCInb2JqZWN0TWFuYWdlbWVudC5sYWJlbHMuc2hvd0luRGF0YU1lbnUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ29iamVjdE1hbmFnZW1lbnQudG9vbHRpcHMuc2hvd0luRGF0YU1lbnUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbmFtZT1cInNob3dJbkRhdGFNZW51XCJcbiAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJwcmVmaWxsT2JqZWN0Py5zaG93SW5EYXRhTWVudVwiXG4gICAgICA+PC92LWlucHV0PlxuICAgIDwvdi1mb3JtPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,184 @@
1
+ /*
2
+ * Copyright 2015-2023 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component, Input, ViewChild, } from '@angular/core';
17
+ import { BehaviorSubject, Subject } from 'rxjs';
18
+ import { take } from 'rxjs/operators';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "../../services/object-management-state.service";
21
+ import * as i2 from "../../services/object-management.service";
22
+ import * as i3 from "@valtimo/form-management";
23
+ import * as i4 from "@valtimo/plugin";
24
+ import * as i5 from "@valtimo/components";
25
+ import * as i6 from "@ngx-translate/core";
26
+ import * as i7 from "@angular/common";
27
+ export class ObjectManagementUploadModalComponent {
28
+ constructor(objectManagementState, objectManagementService, formManagementService, pluginManagementService, modalService, translateService) {
29
+ this.objectManagementState = objectManagementState;
30
+ this.objectManagementService = objectManagementService;
31
+ this.formManagementService = formManagementService;
32
+ this.pluginManagementService = pluginManagementService;
33
+ this.modalService = modalService;
34
+ this.translateService = translateService;
35
+ this.clear$ = new Subject();
36
+ this.jsonString$ = new BehaviorSubject('');
37
+ this.error$ = new BehaviorSubject('');
38
+ this.disabled$ = new BehaviorSubject(false);
39
+ this.showForm$ = this.modalService.modalVisible$;
40
+ this.file$ = new BehaviorSubject(undefined);
41
+ }
42
+ ngAfterViewInit() {
43
+ this.openShowSubscription();
44
+ this.openFileSubscription();
45
+ this.openHideSubscription();
46
+ }
47
+ ngOnDestroy() {
48
+ this.showSubscription?.unsubscribe();
49
+ this.hideSubscription?.unsubscribe();
50
+ this.fileSubscription.unsubscribe();
51
+ }
52
+ hide() {
53
+ this.modalService.closeModal();
54
+ }
55
+ cancel() {
56
+ this.hide();
57
+ }
58
+ setFile(file) {
59
+ this.clearError();
60
+ this.file$.next(file);
61
+ }
62
+ uploadDefinition() {
63
+ this.disable();
64
+ this.jsonString$.pipe(take(1)).subscribe(objecttypeDefinition => {
65
+ this.objectManagementService
66
+ .createObject({ ...JSON.parse(objecttypeDefinition) })
67
+ .subscribe(() => {
68
+ this.objectManagementState.refresh();
69
+ this.objectManagementState.hideModal();
70
+ });
71
+ this.closeErrorSubscription();
72
+ this.clearError();
73
+ this.enable();
74
+ this.hide();
75
+ });
76
+ }
77
+ openErrorSubscription(errorCode) {
78
+ this.closeErrorSubscription();
79
+ this.errorSubscription = this.translateService.stream(errorCode).subscribe(error => {
80
+ this.error$.next(error);
81
+ });
82
+ }
83
+ closeErrorSubscription() {
84
+ if (this.errorSubscription) {
85
+ this.errorSubscription.unsubscribe();
86
+ }
87
+ }
88
+ openFileSubscription() {
89
+ this.fileSubscription = this.file$.subscribe(file => {
90
+ if (file) {
91
+ const reader = new FileReader();
92
+ reader.onloadend = () => {
93
+ const result = reader.result.toString();
94
+ if (this.isValidJsonObjecttype(result)) {
95
+ this.jsonString$.next(result);
96
+ }
97
+ else {
98
+ this.clearJsonString();
99
+ }
100
+ };
101
+ reader.readAsText(file);
102
+ }
103
+ else {
104
+ this.clearJsonString();
105
+ }
106
+ });
107
+ }
108
+ openShowSubscription() {
109
+ this.showSubscription = this.objectManagementState.showModal$.subscribe(() => {
110
+ this.show();
111
+ this.clearJsonString();
112
+ this.clearError();
113
+ this.clearDropzone();
114
+ });
115
+ }
116
+ openHideSubscription() {
117
+ this.hideSubscription = this.objectManagementState.hideModal$.subscribe(() => {
118
+ this.hide();
119
+ });
120
+ }
121
+ show() {
122
+ this.objectManagementState.modalType$.pipe(take(1)).subscribe(modalType => {
123
+ if (modalType === 'upload') {
124
+ this.modalService.openModal(this.objectManagementUploadModal);
125
+ }
126
+ });
127
+ }
128
+ clearError() {
129
+ this.error$.next('');
130
+ }
131
+ clearJsonString() {
132
+ this.jsonString$.next('');
133
+ }
134
+ clearDropzone() {
135
+ this.clear$.next(null);
136
+ }
137
+ isValidJsonObjecttype(string) {
138
+ const jsonObjecttype = JSON.parse(string);
139
+ const isValid = this.validateObject(jsonObjecttype, [
140
+ 'title',
141
+ 'objecttypenApiPluginConfigurationId',
142
+ 'objecttypeId',
143
+ 'objecttypeVersion',
144
+ 'objectenApiPluginConfigurationId',
145
+ 'showInDataMenu',
146
+ ]);
147
+ const isObjecttypeTitleUnique = !this.objecttypes?.find(objecttype => objecttype.title === jsonObjecttype.title);
148
+ if (isValid && isObjecttypeTitleUnique) {
149
+ return true;
150
+ }
151
+ else if (isValid && !isObjecttypeTitleUnique) {
152
+ this.clearDropzone();
153
+ this.openErrorSubscription('dropzone.error.objecttypeAlreadyExists');
154
+ return false;
155
+ }
156
+ else if (!isValid && isObjecttypeTitleUnique) {
157
+ this.clearDropzone();
158
+ this.openErrorSubscription('dropzone.error.invalidObjecttypeDef');
159
+ return false;
160
+ }
161
+ }
162
+ validateObject(obj, requiredKeys) {
163
+ const objKeys = Object.keys(obj);
164
+ return requiredKeys.every(key => objKeys.includes(key));
165
+ }
166
+ disable() {
167
+ this.disabled$.next(true);
168
+ }
169
+ enable() {
170
+ this.disabled$.next(false);
171
+ }
172
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementUploadModalComponent, deps: [{ token: i1.ObjectManagementStateService }, { token: i2.ObjectManagementService }, { token: i3.FormManagementService }, { token: i4.PluginManagementService }, { token: i5.ModalService }, { token: i6.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
173
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ObjectManagementUploadModalComponent, selector: "valtimo-object-management-upload-modal", inputs: { objecttypes: "objecttypes" }, viewQueries: [{ propertyName: "objectManagementUploadModal", first: true, predicate: ["objectManagementUploadModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-modal\n #objectManagementUploadModal\n *ngIf=\"{\n disabled: disabled$ | async,\n jsonString: jsonString$ | async,\n error: error$ | async\n } as obs\"\n>\n <div role=\"header\">\n <div class=\"add-title\">\n <v-title [margin]=\"false\">{{ 'objectManagement.uploadObjecttype' | translate }}</v-title>\n </div>\n </div>\n <div role=\"content\">\n <ng-container *ngTemplateOutlet=\"uploadForm\"></ng-container>\n </div>\n <div role=\"footer\">\n <div class=\"buttons\">\n <v-button (clickEvent)=\"cancel()\" [disabled]=\"obs.disabled\" type=\"secondary\">\n {{ 'objectManagement.cancel' | translate }}\n </v-button>\n <v-button\n (clickEvent)=\"uploadDefinition()\"\n [disabled]=\"obs.jsonString === '' || obs.disabled\"\n mdiIcon=\"plus\"\n type=\"success\"\n >\n {{ 'Upload' | translate }}\n </v-button>\n </div>\n </div>\n</v-modal>\n\n<ng-template #uploadForm>\n <ng-container *ngIf=\"showForm$ | async\">\n <valtimo-dropzone\n [clear$]=\"clear$\"\n (fileSelected)=\"setFile($event)\"\n [disabled]=\"disabled$ | async\"\n [subtitle]=\"'dropzone.objecttypeDef' | translate\"\n [externalError$]=\"error$\"\n [maxFiles]=\"1\"\n ></valtimo-dropzone>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.buttons{width:100%;display:flex;flex-direction:row;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.DropzoneComponent, selector: "valtimo-dropzone", inputs: ["title", "hideTitle", "subtitle", "externalError$", "maxFileSize", "showMaxFileSize", "acceptedFiles", "clear$", "disabled", "hideFilePreview", "uploading", "camera", "maxFiles"], outputs: ["fileSelected"] }, { kind: "component", type: i5.VModalComponent, selector: "v-modal", inputs: ["appearingDelayMs", "maxWidthPx", "hideFooter"], outputs: ["closeEvent"] }, { kind: "component", type: i5.TitleComponent, selector: "v-title", inputs: ["type", "margin", "fullWidth", "center"] }, { kind: "component", type: i5.ButtonComponent, selector: "v-button", inputs: ["type", "mdiIcon", "disabled", "title", "titleTranslationKey"], outputs: ["clickEvent"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
174
+ }
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementUploadModalComponent, decorators: [{
176
+ type: Component,
177
+ args: [{ selector: 'valtimo-object-management-upload-modal', template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-modal\n #objectManagementUploadModal\n *ngIf=\"{\n disabled: disabled$ | async,\n jsonString: jsonString$ | async,\n error: error$ | async\n } as obs\"\n>\n <div role=\"header\">\n <div class=\"add-title\">\n <v-title [margin]=\"false\">{{ 'objectManagement.uploadObjecttype' | translate }}</v-title>\n </div>\n </div>\n <div role=\"content\">\n <ng-container *ngTemplateOutlet=\"uploadForm\"></ng-container>\n </div>\n <div role=\"footer\">\n <div class=\"buttons\">\n <v-button (clickEvent)=\"cancel()\" [disabled]=\"obs.disabled\" type=\"secondary\">\n {{ 'objectManagement.cancel' | translate }}\n </v-button>\n <v-button\n (clickEvent)=\"uploadDefinition()\"\n [disabled]=\"obs.jsonString === '' || obs.disabled\"\n mdiIcon=\"plus\"\n type=\"success\"\n >\n {{ 'Upload' | translate }}\n </v-button>\n </div>\n </div>\n</v-modal>\n\n<ng-template #uploadForm>\n <ng-container *ngIf=\"showForm$ | async\">\n <valtimo-dropzone\n [clear$]=\"clear$\"\n (fileSelected)=\"setFile($event)\"\n [disabled]=\"disabled$ | async\"\n [subtitle]=\"'dropzone.objecttypeDef' | translate\"\n [externalError$]=\"error$\"\n [maxFiles]=\"1\"\n ></valtimo-dropzone>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.buttons{width:100%;display:flex;flex-direction:row;justify-content:space-between}\n"] }]
178
+ }], ctorParameters: function () { return [{ type: i1.ObjectManagementStateService }, { type: i2.ObjectManagementService }, { type: i3.FormManagementService }, { type: i4.PluginManagementService }, { type: i5.ModalService }, { type: i6.TranslateService }]; }, propDecorators: { objectManagementUploadModal: [{
179
+ type: ViewChild,
180
+ args: ['objectManagementUploadModal']
181
+ }], objecttypes: [{
182
+ type: Input
183
+ }] } });
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1hbmFnZW1lbnQtdXBsb2FkLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vb2JqZWN0LW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL29iamVjdC1tYW5hZ2VtZW50LXVwbG9hZC1tb2RhbC9vYmplY3QtbWFuYWdlbWVudC11cGxvYWQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9vYmplY3QtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LW1hbmFnZW1lbnQtdXBsb2FkLW1vZGFsL29iamVjdC1tYW5hZ2VtZW50LXVwbG9hZC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFFTCxTQUFTLEVBRVQsS0FBSyxFQUdMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFjLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQWNwQyxNQUFNLE9BQU8sb0NBQW9DO0lBaUIvQyxZQUNtQixxQkFBbUQsRUFDbkQsdUJBQWdELEVBQ2hELHFCQUE0QyxFQUM1Qyx1QkFBZ0QsRUFDaEQsWUFBMEIsRUFDMUIsZ0JBQWtDO1FBTGxDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBOEI7UUFDbkQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFr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QUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHFDQUFxQyxDQUFDLENBQUM7WUFDbEUsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsR0FBVyxFQUFFLFlBQThCO1FBQ3hELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxPQUFPO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOytHQS9LVSxvQ0FBb0M7bUdBQXBDLG9DQUFvQyxrUUN4Q2pELG04REE2REE7OzRGRHJCYSxvQ0FBb0M7a0JBTGhELFNBQVM7K0JBQ0Usd0NBQXdDOzZSQUtSLDJCQUEyQjtzQkFBcEUsU0FBUzt1QkFBQyw2QkFBNkI7Z0JBQy9CLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7T2JqZWN0TWFuYWdlbWVudFN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvb2JqZWN0LW1hbmFnZW1lbnQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQge0Zvcm1NYW5hZ2VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZm9ybS1tYW5hZ2VtZW50JztcbmltcG9ydCB7UGx1Z2luTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3BsdWdpbic7XG5pbXBvcnQge09iamVjdE1hbmFnZW1lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vYmplY3QtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge09iamVjdHR5cGUsIE9iamVjdHR5cGVLZXlzfSBmcm9tICcuLi8uLi9tb2RlbHMvb2JqZWN0LW1hbmFnZW1lbnQubW9kZWwnO1xuaW1wb3J0IHtWTW9kYWxDb21wb25lbnQsIE1vZGFsU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tb2JqZWN0LW1hbmFnZW1lbnQtdXBsb2FkLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1tYW5hZ2VtZW50LXVwbG9hZC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1tYW5hZ2VtZW50LXVwbG9hZC1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RNYW5hZ2VtZW50VXBsb2FkTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdvYmplY3RNYW5hZ2VtZW50VXBsb2FkTW9kYWwnKSBvYmplY3RNYW5hZ2VtZW50VXBsb2FkTW9kYWw6IFZNb2RhbENvbXBvbmVudDtcbiAgQElucHV0KCkgb2JqZWN0dHlwZXM/OiBPYmplY3R0eXBlW107XG5cbiAgcmVhZG9ubHkgY2xlYXIkID0gbmV3IFN1YmplY3QoKTtcbiAgcmVhZG9ubHkganNvblN0cmluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBlcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd0Zvcm0kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5tb2RhbFNlcnZpY2UubW9kYWxWaXNpYmxlJDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGZpbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWxlPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgc2hvd1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBoaWRlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGZpbGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBlcnJvclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2JqZWN0TWFuYWdlbWVudFN0YXRlOiBPYmplY3RNYW5hZ2VtZW50U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2JqZWN0TWFuYWdlbWVudFNlcnZpY2U6IE9iamVjdE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybU1hbmFnZW1lbnRTZXJ2aWNlOiBGb3JtTWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW5NYW5hZ2VtZW50U2VydmljZTogUGx1Z2luTWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5TaG93U3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5vcGVuRmlsZVN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMub3BlbkhpZGVTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmhpZGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5maWxlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlTW9kYWwoKTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIHNldEZpbGUoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJFcnJvcigpO1xuICAgIHRoaXMuZmlsZSQubmV4dChmaWxlKTtcbiAgfVxuXG4gIHVwbG9hZERlZmluaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLmpzb25TdHJpbmckLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKG9iamVjdHR5cGVEZWZpbml0aW9uID0+IHtcbiAgICAgIHRoaXMub2JqZWN0TWFuYWdlbWVudFNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU9iamVjdCh7Li4uSlNPTi5wYXJzZShvYmplY3R0eXBlRGVmaW5pdGlvbil9KVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9iamVjdE1hbmFnZW1lbnRTdGF0ZS5yZWZyZXNoKCk7XG4gICAgICAgICAgdGhpcy5vYmplY3RNYW5hZ2VtZW50U3RhdGUuaGlkZU1vZGFsKCk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5jbG9zZUVycm9yU3Vic2NyaXB0aW9uKCk7XG4gICAgICB0aGlzLmNsZWFyRXJyb3IoKTtcbiAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkVycm9yU3Vic2NyaXB0aW9uKGVycm9yQ29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUVycm9yU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5lcnJvclN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oZXJyb3JDb2RlKS5zdWJzY3JpYmUoZXJyb3IgPT4ge1xuICAgICAgdGhpcy5lcnJvciQubmV4dChlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlRXJyb3JTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXJyb3JTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZXJyb3JTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5GaWxlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZVN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsZSQuc3Vic2NyaWJlKGZpbGUgPT4ge1xuICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKTtcbiAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkSnNvbk9iamVjdHR5cGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhpcy5qc29uU3RyaW5nJC5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJKc29uU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbGVhckpzb25TdHJpbmcoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNob3dTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zaG93U3Vic2NyaXB0aW9uID0gdGhpcy5vYmplY3RNYW5hZ2VtZW50U3RhdGUuc2hvd01vZGFsJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93KCk7XG5cbiAgICAgIHRoaXMuY2xlYXJKc29uU3RyaW5nKCk7XG4gICAgICB0aGlzLmNsZWFyRXJyb3IoKTtcbiAgICAgIHRoaXMuY2xlYXJEcm9wem9uZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuSGlkZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVTdWJzY3JpcHRpb24gPSB0aGlzLm9iamVjdE1hbmFnZW1lbnRTdGF0ZS5oaWRlTW9kYWwkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdygpOiB2b2lkIHtcbiAgICB0aGlzLm9iamVjdE1hbmFnZW1lbnRTdGF0ZS5tb2RhbFR5cGUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKG1vZGFsVHlwZSA9PiB7XG4gICAgICBpZiAobW9kYWxUeXBlID09PSAndXBsb2FkJykge1xuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuTW9kYWwodGhpcy5vYmplY3RNYW5hZ2VtZW50VXBsb2FkTW9kYWwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckVycm9yKCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IkLm5leHQoJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckpzb25TdHJpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5qc29uU3RyaW5nJC5uZXh0KCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJEcm9wem9uZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkSnNvbk9iamVjdHR5cGUoc3RyaW5nOiBzdHJpbmcpIHtcbiAgICBjb25zdCBqc29uT2JqZWN0dHlwZSA9IEpTT04ucGFyc2Uoc3RyaW5nKTtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy52YWxpZGF0ZU9iamVjdChqc29uT2JqZWN0dHlwZSwgW1xuICAgICAgJ3RpdGxlJyxcbiAgICAgICdvYmplY3R0eXBlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZCcsXG4gICAgICAnb2JqZWN0dHlwZUlkJyxcbiAgICAgICdvYmplY3R0eXBlVmVyc2lvbicsXG4gICAgICAnb2JqZWN0ZW5BcGlQbHVnaW5Db25maWd1cmF0aW9uSWQnLFxuICAgICAgJ3Nob3dJbkRhdGFNZW51JyxcbiAgICBdKTtcbiAgICBjb25zdCBpc09iamVjdHR5cGVUaXRsZVVuaXF1ZSA9ICF0aGlzLm9iamVjdHR5cGVzPy5maW5kKFxuICAgICAgb2JqZWN0dHlwZSA9PiBvYmplY3R0eXBlLnRpdGxlID09PSBqc29uT2JqZWN0dHlwZS50aXRsZVxuICAgICk7XG4gICAgaWYgKGlzVmFsaWQgJiYgaXNPYmplY3R0eXBlVGl0bGVVbmlxdWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaXNWYWxpZCAmJiAhaXNPYmplY3R0eXBlVGl0bGVVbmlxdWUpIHtcbiAgICAgIHRoaXMuY2xlYXJEcm9wem9uZSgpO1xuICAgICAgdGhpcy5vcGVuRXJyb3JTdWJzY3JpcHRpb24oJ2Ryb3B6b25lLmVycm9yLm9iamVjdHR5cGVBbHJlYWR5RXhpc3RzJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNWYWxpZCAmJiBpc09iamVjdHR5cGVUaXRsZVVuaXF1ZSkge1xuICAgICAgdGhpcy5jbGVhckRyb3B6b25lKCk7XG4gICAgICB0aGlzLm9wZW5FcnJvclN1YnNjcmlwdGlvbignZHJvcHpvbmUuZXJyb3IuaW52YWxpZE9iamVjdHR5cGVEZWYnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZU9iamVjdChvYmo6IG9iamVjdCwgcmVxdWlyZWRLZXlzOiBPYmplY3R0eXBlS2V5c1tdKSB7XG4gICAgY29uc3Qgb2JqS2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgcmV0dXJuIHJlcXVpcmVkS2V5cy5ldmVyeShrZXkgPT4gb2JqS2V5cy5pbmNsdWRlcyhrZXkpKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHYtbW9kYWxcbiAgI29iamVjdE1hbmFnZW1lbnRVcGxvYWRNb2RhbFxuICAqbmdJZj1cIntcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQkIHwgYXN5bmMsXG4gICAganNvblN0cmluZzoganNvblN0cmluZyQgfCBhc3luYyxcbiAgICBlcnJvcjogZXJyb3IkIHwgYXN5bmNcbiAgfSBhcyBvYnNcIlxuPlxuICA8ZGl2IHJvbGU9XCJoZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRkLXRpdGxlXCI+XG4gICAgICA8di10aXRsZSBbbWFyZ2luXT1cImZhbHNlXCI+e3sgJ29iamVjdE1hbmFnZW1lbnQudXBsb2FkT2JqZWN0dHlwZScgfCB0cmFuc2xhdGUgfX08L3YtdGl0bGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IHJvbGU9XCJjb250ZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwbG9hZEZvcm1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgcm9sZT1cImZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICA8di1idXR0b24gKGNsaWNrRXZlbnQpPVwiY2FuY2VsKClcIiBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCIgdHlwZT1cInNlY29uZGFyeVwiPlxuICAgICAgICB7eyAnb2JqZWN0TWFuYWdlbWVudC5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3YtYnV0dG9uPlxuICAgICAgPHYtYnV0dG9uXG4gICAgICAgIChjbGlja0V2ZW50KT1cInVwbG9hZERlZmluaXRpb24oKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuanNvblN0cmluZyA9PT0gJycgfHwgb2JzLmRpc2FibGVkXCJcbiAgICAgICAgbWRpSWNvbj1cInBsdXNcIlxuICAgICAgICB0eXBlPVwic3VjY2Vzc1wiXG4gICAgICA+XG4gICAgICAgIHt7ICdVcGxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3YtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdi1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICN1cGxvYWRGb3JtPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Zvcm0kIHwgYXN5bmNcIj5cbiAgICA8dmFsdGltby1kcm9wem9uZVxuICAgICAgW2NsZWFyJF09XCJjbGVhciRcIlxuICAgICAgKGZpbGVTZWxlY3RlZCk9XCJzZXRGaWxlKCRldmVudClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICAgIFtzdWJ0aXRsZV09XCInZHJvcHpvbmUub2JqZWN0dHlwZURlZicgfCB0cmFuc2xhdGVcIlxuICAgICAgW2V4dGVybmFsRXJyb3IkXT1cImVycm9yJFwiXG4gICAgICBbbWF4RmlsZXNdPVwiMVwiXG4gICAgPjwvdmFsdGltby1kcm9wem9uZT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -37,11 +37,11 @@ const routes = [
37
37
  },
38
38
  ];
39
39
  export class ObjectManagementRoutingModule {
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
41
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementRoutingModule, imports: [CommonModule, i1.RouterModule], exports: [RouterModule] }); }
42
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
40
43
  }
41
- ObjectManagementRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ObjectManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
42
- ObjectManagementRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ObjectManagementRoutingModule, imports: [CommonModule, i1.RouterModule], exports: [RouterModule] });
43
- ObjectManagementRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ObjectManagementRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] });
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ObjectManagementRoutingModule, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementRoutingModule, decorators: [{
45
45
  type: NgModule,
46
46
  args: [{
47
47
  imports: [CommonModule, RouterModule.forChild(routes)],
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
49
49
  declarations: [],
50
50
  }]
51
51
  }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL29iamVjdC1tYW5hZ2VtZW50L3NyYy9saWIvb2JqZWN0LW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLDhGQUE4RixDQUFDO0FBQ3RKLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHNFQUFzRSxDQUFDOzs7QUFFbkgsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLFNBQVMsRUFBRSw2QkFBNkI7UUFDeEMsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBQztLQUM5QztJQUNEO1FBQ0UsSUFBSSxFQUFFLDhCQUE4QjtRQUNwQyxXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQixTQUFTLEVBQUUsd0NBQXdDO1FBQ25ELElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBQztLQUNwRTtDQUNGLENBQUM7QUFPRixNQUFNLE9BQU8sNkJBQTZCOzswSEFBN0IsNkJBQTZCOzJIQUE3Qiw2QkFBNkIsWUFKOUIsWUFBWSw4QkFDWixZQUFZOzJIQUdYLDZCQUE2QixZQUo5QixZQUFZLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDM0MsWUFBWTsyRkFHWCw2QkFBNkI7a0JBTHpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3RELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLEVBQUU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlck1vZHVsZSwgUm91dGVzfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0F1dGhHdWFyZFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7Uk9MRV9BRE1JTn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7T2JqZWN0TWFuYWdlbWVudERldGFpbENvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL29iamVjdC1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXIvb2JqZWN0LW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtPYmplY3RNYW5hZ2VtZW50TGlzdENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL29iamVjdC1tYW5hZ2VtZW50LWxpc3Qvb2JqZWN0LW1hbmFnZW1lbnQtbGlzdC5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICdvYmplY3QtbWFuYWdlbWVudCcsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRTZXJ2aWNlXSxcbiAgICBjb21wb25lbnQ6IE9iamVjdE1hbmFnZW1lbnRMaXN0Q29tcG9uZW50LFxuICAgIGRhdGE6IHt0aXRsZTogJ09iamVjdHMnLCByb2xlczogW1JPTEVfQURNSU5dfSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdvYmplY3QtbWFuYWdlbWVudC9vYmplY3QvOmlkJyxcbiAgICBjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZFNlcnZpY2VdLFxuICAgIGNvbXBvbmVudDogT2JqZWN0TWFuYWdlbWVudERldGFpbENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBkYXRhOiB7dGl0bGU6ICdPYmplY3QnLCByb2xlczogW1JPTEVfQURNSU5dLCBjdXN0b21QYWdlVGl0bGU6IHRydWV9LFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0TWFuYWdlbWVudFJvdXRpbmdNb2R1bGUge31cbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL29iamVjdC1tYW5hZ2VtZW50L3NyYy9saWIvb2JqZWN0LW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLDhGQUE4RixDQUFDO0FBQ3RKLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHNFQUFzRSxDQUFDOzs7QUFFbkgsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLFNBQVMsRUFBRSw2QkFBNkI7UUFDeEMsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBQztLQUM5QztJQUNEO1FBQ0UsSUFBSSxFQUFFLDhCQUE4QjtRQUNwQyxXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQixTQUFTLEVBQUUsd0NBQXdDO1FBQ25ELElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBQztLQUNwRTtDQUNGLENBQUM7QUFPRixNQUFNLE9BQU8sNkJBQTZCOytHQUE3Qiw2QkFBNkI7Z0hBQTdCLDZCQUE2QixZQUo5QixZQUFZLDhCQUNaLFlBQVk7Z0hBR1gsNkJBQTZCLFlBSjlCLFlBQVksRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUMzQyxZQUFZOzs0RkFHWCw2QkFBNkI7a0JBTHpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3RELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLEVBQUU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlck1vZHVsZSwgUm91dGVzfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0F1dGhHdWFyZFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7Uk9MRV9BRE1JTn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7T2JqZWN0TWFuYWdlbWVudERldGFpbENvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL29iamVjdC1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXIvb2JqZWN0LW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtPYmplY3RNYW5hZ2VtZW50TGlzdENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL29iamVjdC1tYW5hZ2VtZW50LWxpc3Qvb2JqZWN0LW1hbmFnZW1lbnQtbGlzdC5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICdvYmplY3QtbWFuYWdlbWVudCcsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRTZXJ2aWNlXSxcbiAgICBjb21wb25lbnQ6IE9iamVjdE1hbmFnZW1lbnRMaXN0Q29tcG9uZW50LFxuICAgIGRhdGE6IHt0aXRsZTogJ09iamVjdHMnLCByb2xlczogW1JPTEVfQURNSU5dfSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdvYmplY3QtbWFuYWdlbWVudC9vYmplY3QvOmlkJyxcbiAgICBjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZFNlcnZpY2VdLFxuICAgIGNvbXBvbmVudDogT2JqZWN0TWFuYWdlbWVudERldGFpbENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBkYXRhOiB7dGl0bGU6ICdPYmplY3QnLCByb2xlczogW1JPTEVfQURNSU5dLCBjdXN0b21QYWdlVGl0bGU6IHRydWV9LFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0TWFuYWdlbWVudFJvdXRpbmdNb2R1bGUge31cbiJdfQ==