@valtimo/object-management 13.0.0 → 13.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.
@@ -350,7 +350,7 @@ class ObjectManagementModalComponent {
350
350
  this.selectedObjecttype$.next(objecttype);
351
351
  }
352
352
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectManagementModalComponent, deps: [{ token: ObjectManagementStateService }, { token: ObjectManagementService }, { token: i3.FormService }, { token: i4$1.PluginManagementService }, { token: i5.ModalService }], target: i0.ɵɵFactoryTarget.Component }); }
353
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ObjectManagementModalComponent, isStandalone: false, selector: "valtimo-object-management-modal", inputs: { prefillObject$: "prefillObject$" }, viewQueries: [{ propertyName: "objectManagementModal", first: true, predicate: ["objectManagementModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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 <h4>\n {{\n (obs.modalType === 'add'\n ? 'objectManagement.createObjecttype'\n : 'objectManagement.editObjecttype'\n ) | translate\n }}\n </h4>\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 <button cdsButton=\"secondary\" (click)=\"cancel()\" [disabled]=\"obs.disabled\">\n {{ 'objectManagement.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" (click)=\"save()\" [disabled]=\"obs.disabled || !obs.valid\">\n {{\n (obs.modalType === 'add' ? 'objectManagement.add' : 'objectManagement.edit') | translate\n }}\n </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: [".buttons{width:100%;display:flex;flex-direction:row;justify-content:space-between}\n/*!\n * Copyright 2015-2025 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"], 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", "parentId"], outputs: ["closeEvent"] }, { 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", "dataTestId", "trim"], outputs: ["valueChange"] }, { kind: "component", type: i5.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "directive", type: i7.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] }); }
353
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ObjectManagementModalComponent, isStandalone: false, selector: "valtimo-object-management-modal", inputs: { prefillObject$: "prefillObject$" }, viewQueries: [{ propertyName: "objectManagementModal", first: true, predicate: ["objectManagementModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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 <h4>\n {{\n (obs.modalType === 'add'\n ? 'objectManagement.createObjecttype'\n : 'objectManagement.editObjecttype'\n ) | translate\n }}\n </h4>\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 <button cdsButton=\"secondary\" (click)=\"cancel()\" [disabled]=\"obs.disabled\">\n {{ 'objectManagement.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" (click)=\"save()\" [disabled]=\"obs.disabled || !obs.valid\">\n {{\n (obs.modalType === 'add' ? 'objectManagement.add' : 'objectManagement.edit') | translate\n }}\n </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: [".buttons{width:100%;display:flex;flex-direction:row;justify-content:space-between}\n/*!\n * Copyright 2015-2025 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"], 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", "parentId"], outputs: ["closeEvent"] }, { 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", "dataTestId", "trim"], outputs: ["valueChange"] }, { kind: "component", type: i5.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "directive", type: i7.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] }); }
354
354
  }
355
355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectManagementModalComponent, decorators: [{
356
356
  type: Component,
@@ -1157,7 +1157,7 @@ class ObjectManagementListSearchFieldsComponent {
1157
1157
  };
1158
1158
  }
1159
1159
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectManagementListSearchFieldsComponent, deps: [{ token: ObjectManagementService }, { token: i2.ActivatedRoute }, { token: i3$1.TranslateService }, { token: i4.ConfigService }, { token: i5$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ObjectManagementListSearchFieldsComponent, isStandalone: false, selector: "valtimo-object-management-list-search-fields", viewQueries: [{ propertyName: "moveRowButtonsTemplateRef", first: true, predicate: ["moveRowButtons"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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<ng-container\n *ngIf=\"{\n searchFields: translatedObjectManagementListSearchFields$ | async,\n fields: objectManagementFields$ | async,\n objectId: objectId$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3 mr-2\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!obs.loading; else loading\">\n <ng-container *ngIf=\"obs.searchFields?.length > 0; else noConfigWarning\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <a\n cdsLink\n class=\"center-link\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.searchFields?.length < 1 ||\n obs.disableInput ||\n obs.loading\n \"\n >\n {{ 'searchFieldsOverview.download' | translate }}\n </a>\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"obs.loading\"\n class=\"ml-3\"\n >\n {{ 'searchFieldsOverview.add' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n objectId: objectId$ | async,\n } as obs\"\n >\n <i\n class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n (click)=\"deleteRow(index, $event)\"\n [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === length - 1 || obs.disableInput}\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n *ngIf=\"obs.searchFields; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('searchFieldsOverview.add' | translate)\n : ('searchFieldsOverview.edit' | translate)\n }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.title' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'searchFieldsOverview.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.key' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.path' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.objectsApiPath' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.dataType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"dataType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.fieldType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"fieldType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'searchFieldsOverview.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveListSearchFields()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n >\n {{ 'searchFieldsOverview.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowIndex$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n titleTranslationKey=\"searchFieldsOverview.searchField\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'searchFieldsOverview.noSearchFieldsConfiguredWarningTitle' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n", styles: ["::ng-deep .tab-container{min-height:unset!important}::ng-deep .cds--inline-notification{max-width:100%}.label-with-tooltip{display:flex;align-items:center}.cds--text-input__field-wrapper:not(:last-child){margin-bottom:1rem}.display-type-dropdown{width:300px}.list-column-form{margin-bottom:3rem}.select-label{padding-bottom:.5rem;width:250px}.loading-icon{width:100%;display:flex;align-items:center;justify-content:center}.center-link{display:flex;align-items:center}::ng-deep .move-row-buttons{display:flex;flex-direction:row;justify-content:flex-end;padding-right:13px}\n/*!\n * Copyright 2015-2025 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"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i7.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i7.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "directive", type: i7.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i5.TooltipIconComponent, selector: "v-tooltip-icon", inputs: ["tooltip", "disabled"] }, { kind: "component", type: i7.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i7.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i7.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i7.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i7.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "component", type: i7.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "component", type: i7.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i7.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i7.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "directive", type: i7.Link, selector: "[cdsLink], [ibmLink]", inputs: ["inline", "disabled"] }, { kind: "directive", type: i7.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "directive", type: i5.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["enableOverflow"] }, { kind: "component", type: i5.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] }); }
1160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ObjectManagementListSearchFieldsComponent, isStandalone: false, selector: "valtimo-object-management-list-search-fields", viewQueries: [{ propertyName: "moveRowButtonsTemplateRef", first: true, predicate: ["moveRowButtons"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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<ng-container\n *ngIf=\"{\n searchFields: translatedObjectManagementListSearchFields$ | async,\n fields: objectManagementFields$ | async,\n objectId: objectId$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3 mr-2\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!obs.loading; else loading\">\n <ng-container *ngIf=\"obs.searchFields?.length > 0; else noConfigWarning\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <a\n cdsLink\n class=\"center-link\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.searchFields?.length < 1 ||\n obs.disableInput ||\n obs.loading\n \"\n >\n {{ 'searchFieldsOverview.download' | translate }}\n </a>\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"obs.loading\"\n class=\"ml-3\"\n >\n {{ 'searchFieldsOverview.add' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n objectId: objectId$ | async,\n } as obs\"\n >\n <i\n class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n (click)=\"deleteRow(index, $event)\"\n [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === length - 1 || obs.disableInput}\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n *ngIf=\"obs.searchFields; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('searchFieldsOverview.add' | translate)\n : ('searchFieldsOverview.edit' | translate)\n }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.title' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'searchFieldsOverview.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.key' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.path' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.objectsApiPath' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.dataType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"dataType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.fieldType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"fieldType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'searchFieldsOverview.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveListSearchFields()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n >\n {{ 'searchFieldsOverview.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowIndex$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n titleTranslationKey=\"searchFieldsOverview.searchField\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'searchFieldsOverview.noSearchFieldsConfiguredWarningTitle' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n", styles: ["::ng-deep .tab-container{min-height:unset!important}::ng-deep .cds--inline-notification{max-width:100%}.label-with-tooltip{display:flex;align-items:center}.cds--text-input__field-wrapper:not(:last-child){margin-bottom:1rem}.display-type-dropdown{width:300px}.list-column-form{margin-bottom:3rem}.select-label{padding-bottom:.5rem;width:250px}.loading-icon{width:100%;display:flex;align-items:center;justify-content:center}.center-link{display:flex;align-items:center}::ng-deep .move-row-buttons{display:flex;flex-direction:row;justify-content:flex-end;padding-right:13px}\n/*!\n * Copyright 2015-2025 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"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i7.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i7.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "directive", type: i7.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i5.TooltipIconComponent, selector: "v-tooltip-icon", inputs: ["tooltip", "disabled"] }, { kind: "component", type: i7.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i7.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i7.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i7.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i7.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "component", type: i7.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "component", type: i7.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i7.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i7.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "directive", type: i7.Link, selector: "[cdsLink], [ibmLink]", inputs: ["inline", "disabled"] }, { kind: "directive", type: i7.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "directive", type: i5.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "component", type: i5.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] }); }
1161
1161
  }
1162
1162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectManagementListSearchFieldsComponent, decorators: [{
1163
1163
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-object-management.mjs","sources":["../../../../projects/valtimo/object-management/src/lib/models/object-management.model.ts","../../../../projects/valtimo/object-management/src/lib/services/object-management.service.ts","../../../../projects/valtimo/object-management/src/lib/services/tab.enum.ts","../../../../projects/valtimo/object-management/src/lib/services/object-management-state.service.ts","../../../../projects/valtimo/object-management/src/lib/services/tab.service.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-modal/object-management-modal.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-modal/object-management-modal.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/object-management-detail-container.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/object-management-detail-container.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-upload-modal/object-management-upload-modal.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-upload-modal/object-management-upload-modal.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-list/object-management-list.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-list/object-management-list.component.html","../../../../projects/valtimo/object-management/src/lib/object-management-routing.module.ts","../../../../projects/valtimo/object-management/src/lib/object-management.module.ts","../../../../projects/valtimo/object-management/src/public-api.ts","../../../../projects/valtimo/object-management/src/valtimo-object-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 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\ninterface Objecttype {\n id: string;\n title: string;\n objecttypenApiPluginConfigurationId: string;\n objecttypeId: string;\n objecttypeVersion: number;\n objectenApiPluginConfigurationId: string;\n showInDataMenu: boolean;\n formDefinitionView?: string;\n formDefinitionEdit?: string;\n}\n\nexport interface SearchListColumn {\n ownerId?: string;\n title: string;\n key: string;\n path: string;\n displayType: DisplayType;\n sortable: boolean;\n defaultSort: string;\n}\n\nexport interface SearchColumn {\n propertyName: string;\n translationKey: string;\n sortable?: boolean;\n viewType?: string;\n default?: boolean | string;\n enum?: Array<string> | {[key: string]: string};\n title?: string;\n format?: string;\n key?: string;\n}\n\nexport interface SearchListColumnView {\n title: string;\n key: string;\n path: string;\n displayType: string;\n displayTypeParameters: string;\n sortable: boolean;\n defaultSort: string;\n}\n\nexport interface DisplayType {\n type: string;\n displayTypeParameters: DisplayTypeParameters;\n}\n\nexport interface DisplayTypeParameters {\n enum?: {\n [key: string]: string;\n };\n dateFormat?: string;\n}\n\ntype ObjecttypeKeys = keyof Objecttype;\n\nexport {Objecttype, ObjecttypeKeys};\n","/*\n * Copyright 2015-2025 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\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService, SearchField} from '@valtimo/shared';\nimport {Objecttype, SearchListColumn} from '../models/object-management.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectManagementService {\n private valtimoEndpointUri: string;\n\n constructor(\n private http: HttpClient,\n configService: ConfigService\n ) {\n this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n }\n\n public getAllObjects(): Observable<Objecttype[]> {\n return this.http.get<Objecttype[]>(\n `${this.valtimoEndpointUri}v1/object/management/configuration`\n );\n }\n\n public getObjectById(id: string): Observable<Objecttype> {\n return this.http.get<Objecttype>(\n `${this.valtimoEndpointUri}v1/object/management/configuration/${id}`\n );\n }\n\n public createObject(payload: Objecttype): Observable<Objecttype> {\n return this.http.post<Objecttype>(\n `${this.valtimoEndpointUri}v1/object/management/configuration`,\n payload\n );\n }\n\n public editObject(payload: Objecttype): Observable<Objecttype> {\n return this.http.put<Objecttype>(\n `${this.valtimoEndpointUri}v1/object/management/configuration`,\n payload\n );\n }\n\n getSearchList(ownerId: string): Observable<Array<SearchListColumn>> {\n return this.http.get<Array<SearchListColumn>>(\n `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}`\n );\n }\n\n postSearchList(ownerId: string, request: SearchListColumn): Observable<SearchListColumn> {\n return this.http.post<SearchListColumn>(\n `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}`,\n {...request, ownerId}\n );\n }\n\n putSearchList(\n ownerId: string,\n columnKey: string,\n request: SearchListColumn\n ): Observable<Array<SearchListColumn>> {\n return this.http.put<Array<SearchListColumn>>(\n `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}/${columnKey}`,\n {...request, ownerId}\n );\n }\n\n putSearchListColumns(\n ownerId: string,\n request: Array<SearchListColumn>\n ): Observable<Array<SearchListColumn>> {\n return this.http.put<Array<SearchListColumn>>(\n `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}/search-list-columns`,\n [...request]\n );\n }\n\n deleteSearchList(ownerId: string, columnKey: string): Observable<SearchListColumn> {\n return this.http.delete<SearchListColumn>(\n `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}/${columnKey}`\n );\n }\n\n getSearchField(ownerId: string): Observable<Array<SearchField>> {\n return this.http.get<Array<SearchField>>(\n `${this.valtimoEndpointUri}v1/search/field/Legacy/${ownerId}`\n );\n }\n\n postSearchField(ownerId: string, request: SearchField): Observable<SearchField> {\n return this.http.post<SearchField>(`${this.valtimoEndpointUri}v1/search/field/${ownerId}`, {\n ...request,\n ownerId,\n });\n }\n\n putSearchField(\n ownerId: string,\n key: string,\n request: SearchField\n ): Observable<Array<SearchField>> {\n return this.http.put<Array<SearchField>>(\n `${this.valtimoEndpointUri}v1/search/field/${ownerId}/${key}`,\n {...request, ownerId}\n );\n }\n\n putSearchFields(ownerId: string, request: Array<SearchField>): Observable<Array<SearchField>> {\n return this.http.put<Array<SearchField>>(\n `${this.valtimoEndpointUri}v1/search/field/${ownerId}/fields`,\n [...request]\n );\n }\n\n deleteSearchField(ownerId: string, key: string): Observable<SearchField> {\n return this.http.delete<SearchField>(\n `${this.valtimoEndpointUri}v1/search/field/Legacy/${ownerId}/${key}`\n );\n }\n}\n","/*\n * Copyright 2015-2025 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\nexport enum TabEnum {\n GENERAL = 'general',\n LIST = 'list',\n SEARCH = 'search',\n}\n","/*\n * Copyright 2015-2025 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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectManagementStateService {\n private readonly _showModal$ = new Subject();\n private readonly _hideModal$ = new Subject();\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n private readonly _modalType$ = new BehaviorSubject<any>('add');\n\n constructor() {}\n\n get showModal$(): Observable<any> {\n return this._showModal$.asObservable();\n }\n\n get hideModal$(): Observable<any> {\n return this._hideModal$.asObservable();\n }\n\n get refresh$(): Observable<any> {\n return this._refresh$.asObservable();\n }\n\n get modalType$(): Observable<any> {\n return this._modalType$.asObservable();\n }\n\n showModal(): void {\n this._showModal$.next(null);\n }\n\n hideModal(): void {\n this._hideModal$.next(null);\n }\n\n refresh(): void {\n this._refresh$.next(null);\n }\n\n setModalType(type: any): void {\n this._modalType$.next(type);\n }\n}\n","/*\n * Copyright 2015-2025 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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TabEnum} from './tab.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabService {\n private _currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.GENERAL);\n\n public get currentTab$(): Observable<TabEnum> {\n return this._currentTab$.asObservable();\n }\n\n public set currentTab(tab: TabEnum) {\n this._currentTab$.next(tab);\n }\n}\n","/*\n * Copyright 2015-2025 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\nimport {AfterViewInit, Component, Input, OnDestroy, ViewChild} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {PluginConfiguration, PluginManagementService} from '@valtimo/plugin';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {Objecttype} from '../../models/object-management.model';\nimport {FormService} from '@valtimo/form';\nimport {VModalComponent, ModalService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-modal',\n templateUrl: './object-management-modal.component.html',\n styleUrls: ['./object-management-modal.component.scss'],\n})\nexport class ObjectManagementModalComponent implements AfterViewInit, OnDestroy {\n @ViewChild('objectManagementModal') objectManagementModal: VModalComponent;\n @Input() prefillObject$!: Observable<Objecttype>;\n\n readonly disabled$!: Observable<boolean>;\n readonly valid$ = new BehaviorSubject<boolean>(false);\n readonly showForm$: Observable<boolean> = this.modalService.modalVisible$;\n readonly modalType$: Observable<any> = this.objectManagementState.modalType$;\n readonly formData$ = new BehaviorSubject<any>(null);\n\n showSubscription!: Subscription;\n hideSubscription!: Subscription;\n\n readonly selectedObjecttype$ = new BehaviorSubject<string | null>(null);\n\n readonly formDefinitions$: Observable<Array<{id: string; text: string}>> = this.formService\n .getAllUnlinkedFormDefinitions()\n .pipe(\n map(results =>\n results?.map(configuration => ({\n id: configuration.name,\n text: configuration.name,\n }))\n )\n );\n\n readonly configurationInstances$: Observable<Array<PluginConfiguration>> =\n this.pluginManagementService\n .getAllPluginConfigurations()\n .pipe(map(configurations => configurations));\n\n readonly objectsApiConfigurations$: Observable<any> = this.configurationInstances$.pipe(\n map(configurations => {\n const filteredObjectsApiConfigurations = configurations.filter(\n configuration => configuration?.pluginDefinition?.key === 'objectenapi'\n );\n return filteredObjectsApiConfigurations.map(configuration => ({\n id: configuration.id,\n text: configuration.title,\n }));\n })\n );\n\n readonly objecttypesApiConfigurations$: Observable<any> = this.configurationInstances$.pipe(\n map(configurations => {\n const filteredObjecttypesApiConfigurations = configurations.filter(\n configuration => configuration?.pluginDefinition?.key === 'objecttypenapi'\n );\n return filteredObjecttypesApiConfigurations.map(configuration => ({\n id: configuration.id,\n text: configuration.title,\n properties: configuration.properties,\n }));\n })\n );\n\n constructor(\n private readonly objectManagementState: ObjectManagementStateService,\n private readonly objectManagementService: ObjectManagementService,\n private readonly formService: FormService,\n private readonly pluginManagementService: PluginManagementService,\n private readonly modalService: ModalService\n ) {}\n\n ngAfterViewInit(): void {\n this.openShowSubscription();\n this.openHideSubscription();\n }\n\n ngOnDestroy(): void {\n this.showSubscription?.unsubscribe();\n this.hideSubscription?.unsubscribe();\n }\n\n hide(): void {\n this.formData$.next(null);\n this.valid$.next(false);\n this.modalService.closeModal();\n }\n\n cancel(): void {\n this.hide();\n }\n\n save(): void {\n combineLatest([this.valid$, this.formData$, this.modalType$])\n .pipe(take(1))\n .subscribe(([valid, formData, modalType]) => {\n if (valid) {\n if (modalType === 'add') {\n this.objectManagementService.createObject({...formData}).subscribe(() => {\n this.objectManagementState.refresh();\n this.objectManagementState.hideModal();\n });\n } else if (modalType === 'edit') {\n this.objectManagementService.editObject({...formData}).subscribe(() => {\n this.objectManagementState.refresh();\n this.objectManagementState.hideModal();\n });\n }\n }\n });\n }\n\n private openShowSubscription(): void {\n this.showSubscription = this.objectManagementState.showModal$.subscribe(() => {\n this.show();\n });\n }\n\n private openHideSubscription(): void {\n this.hideSubscription = this.objectManagementState.hideModal$.subscribe(() => {\n this.hide();\n });\n }\n\n private show(): void {\n this.objectManagementState.modalType$.pipe(take(1)).subscribe(modalType => {\n if (modalType === 'edit' || modalType === 'add') {\n this.modalService.openModal(this.objectManagementModal);\n }\n });\n }\n\n formValueChange(data: any): void {\n if (data.showInDataMenu === '') {\n data.showInDataMenu = false;\n }\n this.formData$.next(data);\n this.setValid(data);\n }\n\n private setValid(data: any): void {\n this.valid$.next(\n !!(\n data.title &&\n data.objectenApiPluginConfigurationId &&\n data.objecttypenApiPluginConfigurationId &&\n data.objecttypeId &&\n data.objecttypeVersion\n )\n );\n }\n\n selectObjectType(objecttype): void {\n this.selectedObjecttype$.next(objecttype);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 <h4>\n {{\n (obs.modalType === 'add'\n ? 'objectManagement.createObjecttype'\n : 'objectManagement.editObjecttype'\n ) | translate\n }}\n </h4>\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 <button cdsButton=\"secondary\" (click)=\"cancel()\" [disabled]=\"obs.disabled\">\n {{ 'objectManagement.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" (click)=\"save()\" [disabled]=\"obs.disabled || !obs.valid\">\n {{\n (obs.modalType === 'add' ? 'objectManagement.add' : 'objectManagement.edit') | translate\n }}\n </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","/*\n * Copyright 2015-2025 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\nimport {Component, Input} from '@angular/core';\nimport {Objecttype} from '../../../../models/object-management.model';\nimport {ObjectManagementService} from '../../../../services/object-management.service';\nimport {ObjectManagementStateService} from '../../../../services/object-management-state.service';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-detail',\n templateUrl: './object-management-detail.component.html',\n styleUrls: ['./object-management-detail.component.scss'],\n})\nexport class ObjectManagementDetailComponent {\n @Input() object$: Observable<Objecttype>;\n readonly loading$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly objectManagementService: ObjectManagementService,\n private readonly objectManagementState: ObjectManagementStateService\n ) {}\n\n downloadDefinition(object): void {\n this.loading$.next(true);\n const dataString =\n 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(object, null, 2));\n const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n downloadAnchorElement.setAttribute('href', dataString);\n downloadAnchorElement.setAttribute('download', `${object.id}.json`);\n downloadAnchorElement.click();\n this.loading$.next(false);\n }\n\n showEditModal(): void {\n this.loading$.next(true);\n this.objectManagementState.setModalType('edit');\n this.objectManagementState.showModal();\n this.loading$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<div\n id=\"object-datail-content\"\n class=\"pt-0\"\n *ngIf=\"{\n object: object$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container\n *ngTemplateOutlet=\"buttons; context: {object: obs.object, loading: obs.loading}\"\n ></ng-container>\n <div class=\"clearfix\"></div>\n <ng-container\n *ngTemplateOutlet=\"widget; context: {object: obs.object, loading: obs.loading}\"\n ></ng-container>\n</div>\n\n<ng-template #buttons let-object=\"object\" let-loading=\"loading\">\n <div class=\"btn-group mt-m3px mb-3 pr-2 float-right\">\n <button\n (click)=\"downloadDefinition(object)\"\n cdsButton=\"secondary\"\n size=\"md\"\n [disabled]=\"loading\"\n class=\"ml-3\"\n >\n {{ 'objectManagement.download' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n <a id=\"downloadAnchorElement\" class=\"d-none\"></a>\n <button\n (click)=\"showEditModal()\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"loading\"\n class=\"ml-3\"\n >\n {{ 'objectManagement.editObjecttype' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-template #widget let-object=\"object\">\n <valtimo-widget>\n <div class=\"row bg-white mt-5 mb-2 pl-2 pr-2\">\n <div class=\"col-5 bg-red\">\n <textarea class=\"w-100 object-schema\" disabled rows=\"25\">{{ object | json }}</textarea>\n </div>\n </div>\n </valtimo-widget>\n</ng-template>\n\n<valtimo-object-management-modal [prefillObject$]=\"object$\"></valtimo-object-management-modal>\n","/*\n * Copyright 2015-2025 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\nimport {Component, TemplateRef, ViewChild} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n filter,\n map,\n Observable,\n of,\n startWith,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {ConfigService, DefinitionColumn} from '@valtimo/shared';\nimport {ListField, MultiInputValues} from '@valtimo/components';\nimport {catchError, take} from 'rxjs/operators';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {ListItem} from 'carbon-components-angular';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListColumnModal} from '@valtimo/case-management';\nimport {ObjectManagementService} from '../../../../services/object-management.service';\nimport {\n DisplayTypeParameters,\n SearchListColumn,\n SearchListColumnView,\n} from '../../../../models/object-management.model';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-list-columns',\n templateUrl: './object-management-list-columns.component.html',\n styleUrls: ['./object-management-list-columns.component.scss'],\n})\nexport class ObjectManagementListColumnsComponent {\n @ViewChild('moveRowButtons') public moveRowButtonsTemplateRef: TemplateRef<any>;\n readonly downloadName$ = new BehaviorSubject<string>('');\n readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n readonly loading$ = new BehaviorSubject<boolean>(true);\n readonly currentModalType$ = new BehaviorSubject<ListColumnModal>('create');\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n readonly modalShowing$ = this.showModal$.pipe(delay(250));\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n readonly showDeleteModal$ = new Subject<boolean>();\n readonly deleteRowIndex$ = new BehaviorSubject<number>(0);\n readonly defaultEnumValues$ = new BehaviorSubject<MultiInputValues>(undefined);\n\n readonly INVALID_KEY = 'invalid';\n readonly formGroup = new FormGroup({\n title: new FormControl(''),\n key: new FormControl('', Validators.required),\n path: new FormControl('', Validators.required),\n dateFormat: new FormControl(''),\n displayType: new FormControl({\n key: this.INVALID_KEY,\n }),\n sortable: new FormControl(false),\n defaultSort: new FormControl({\n key: this.INVALID_KEY,\n }),\n enum: new FormControl([]),\n });\n readonly DISPLAY_TYPES: Array<string> = [\n 'string',\n 'date',\n 'boolean',\n 'enum',\n 'arrayCount',\n 'underscoresToSpaces',\n ];\n\n private readonly COLUMNS: Array<DefinitionColumn> = [\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'title',\n translationKey: 'title',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'key',\n translationKey: 'key',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'path',\n translationKey: 'path',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'displayType',\n translationKey: 'displayType',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'displayTypeParameters',\n translationKey: 'displayTypeParameters',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'sortable',\n translationKey: 'sortable',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'defaultSort',\n translationKey: 'defaultSort',\n },\n ];\n private cachedObjectManagementListColumns: Array<SearchListColumn> = [];\n private readonly refreshObjectManagementListColumns$ = new BehaviorSubject<null>(null);\n\n readonly objectManagementFields$: Observable<Array<ListField>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.COLUMNS.map(column => ({\n key: column.propertyName,\n label: this.translateService.instant(`listColumn.${column.translationKey}`),\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n }))\n )\n );\n\n readonly objectId$: Observable<string> = this.route.params.pipe(\n map(params => params.id || ''),\n filter(objectId => !!objectId)\n );\n\n private readonly objectManagementListColumns$: Observable<Array<any>> = combineLatest([\n this.objectId$,\n this.refreshObjectManagementListColumns$,\n ]).pipe(\n switchMap(([objectId]) => this.objectManagementService.getSearchList(objectId)),\n tap(objectManagementListColumns => {\n this.objectId$.pipe(take(1)).subscribe(objectId => {\n if (\n objectManagementListColumns &&\n Array.isArray(objectManagementListColumns) &&\n objectManagementListColumns.length > 0\n ) {\n this.setDownload(objectId, objectManagementListColumns);\n }\n });\n }),\n tap(objectManagementListColumns => {\n this.cachedObjectManagementListColumns = objectManagementListColumns;\n this.loading$.next(false);\n this.enableInput();\n })\n );\n\n readonly translatedObjectManagementListColumns$: Observable<Array<SearchListColumnView>> =\n combineLatest([this.objectManagementListColumns$, this.translateService.stream('key')]).pipe(\n map(([columns]) =>\n columns.map(column => ({\n ...column,\n title: column.title || '-',\n sortable: column.sortable\n ? this.translateService.instant('listColumn.sortableYes')\n : this.translateService.instant('listColumn.sortableNo'),\n defaultSort:\n (column.defaultSort === 'ASC' &&\n this.translateService.instant('listColumn.sortableAsc')) ||\n (column.defaultSort === 'DESC' &&\n this.translateService.instant('listColumn.sortableDesc')) ||\n '-',\n displayType: this.translateService.instant(\n `listColumnDisplayType.${column?.displayType?.type}`\n ),\n displayTypeParameters: this.getDisplayTypeParametersView(\n column.displayType.displayTypeParameters\n ),\n }))\n )\n );\n\n readonly disableDefaultSort$ = combineLatest([\n this.currentModalType$,\n this.formGroup.valueChanges,\n ]).pipe(\n map(\n ([currentModalType]) =>\n currentModalType === 'create' &&\n this.cachedObjectManagementListColumns.find(column => !!column.defaultSort)\n ),\n startWith(false)\n );\n\n readonly showDateFormat$ = this.formGroup.valueChanges.pipe(\n map(formValues => formValues.displayType?.key === this.DISPLAY_TYPES[1]),\n tap(showDateFormat => {\n if (showDateFormat === false && !!this.formGroup.value.dateFormat) {\n this.formGroup.patchValue({dateFormat: ''});\n }\n }),\n startWith(false)\n );\n\n readonly showEnum$ = this.formGroup.valueChanges.pipe(\n map(\n formValues =>\n !!(\n formValues.displayType?.key === this.DISPLAY_TYPES[3] ||\n formValues.displayType?.key === this.DISPLAY_TYPES[2]\n )\n ),\n tap(showEnum => {\n const enumValue = this.formGroup.value.enum;\n if (showEnum === false && Array.isArray(enumValue) && enumValue.length > 0) {\n this.formGroup.patchValue({enum: []});\n }\n }),\n startWith(false)\n );\n\n readonly isYesNo$ = this.formGroup.valueChanges.pipe(\n map(formValues => formValues.displayType?.key === this.DISPLAY_TYPES[2])\n );\n\n readonly selectedViewTypeItemIndex$ = new BehaviorSubject<number>(0);\n\n readonly viewTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedViewTypeItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedViewTypeItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumnDisplayType.select`),\n key: this.INVALID_KEY,\n },\n ...this.DISPLAY_TYPES.map(type => ({\n content: this.translateService.instant(`listColumnDisplayType.${type}`),\n key: type,\n })),\n ].map((item, index) => ({\n ...item,\n selected: index === selectedViewTypeItemIndex,\n }))\n )\n );\n\n readonly selectedSortItemIndex$ = new BehaviorSubject<number>(0);\n\n readonly sortItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedSortItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedSortItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumn.selectDefaultSort`),\n key: this.INVALID_KEY,\n },\n {\n content: this.translateService.instant(`listColumn.sortableAsc`),\n key: 'ASC',\n },\n {\n content: this.translateService.instant(`listColumn.sortableDesc`),\n key: 'DESC',\n },\n ].map((item, index) => ({\n ...item,\n selected: index === selectedSortItemIndex,\n }))\n )\n );\n\n readonly validKey$ = combineLatest([this.formGroup.valueChanges, this.currentModalType$]).pipe(\n map(([formValues, currentModalType]) => {\n const existingKeys = this.cachedObjectManagementListColumns.map(column => column.key);\n return currentModalType === 'create' ? !existingKeys.includes(formValues.key) : true;\n }),\n startWith(false)\n );\n\n readonly valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(\n map(\n ([formValues, validKey]) =>\n !!(\n formValues.displayType?.key !== this.INVALID_KEY &&\n formValues.path &&\n validKey &&\n (formValues.displayType.key === 'enum' ? formValues.enum?.length > 0 : true)\n )\n ),\n startWith(false)\n );\n\n constructor(\n private readonly objectManagementService: ObjectManagementService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService,\n private readonly sanitizer: DomSanitizer\n ) {}\n\n openModal(modalType: ListColumnModal): void {\n this.showModal$.next(true);\n this.currentModalType$.next(modalType);\n\n if (modalType === 'create') {\n this.formGroup.controls['key'].enable();\n this.resetFormGroup();\n } else if (modalType === 'edit') {\n this.formGroup.controls['key'].disable();\n }\n }\n\n closeModal(): void {\n this.showModal$.next(false);\n }\n\n deleteRow(searchListColumnRowIndex: number, clickEvent: MouseEvent): void {\n clickEvent.stopPropagation();\n\n this.showDeleteModal$.next(true);\n this.deleteRowIndex$.next(searchListColumnRowIndex);\n }\n\n deleteRowConfirmation(searchListColumnRowIndex: number): void {\n const columnKey = this.getColumnKey(searchListColumnRowIndex);\n\n if (columnKey) {\n this.disableInput();\n\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId => this.objectManagementService.deleteSearchList(objectId, columnKey)),\n tap(() => this.refreshObjectManagementListColumns()),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n }\n\n getColumnKey(searchListColumnRowIndex: number) {\n return this.cachedObjectManagementListColumns[searchListColumnRowIndex]?.key;\n }\n\n moveRow(\n searchListColumnRowIndex: number,\n moveUp: boolean,\n clickEvent: MouseEvent,\n objectId: string\n ): void {\n const objectManagementListColumns = [...this.cachedObjectManagementListColumns];\n const searchListColumnRow = objectManagementListColumns[searchListColumnRowIndex];\n\n clickEvent.stopPropagation();\n const searchListColumnIndex = objectManagementListColumns.findIndex(\n field => field.key === searchListColumnRow.key\n );\n const foundSearchListColumn = {...objectManagementListColumns[searchListColumnIndex]};\n const filteredSearchListColumns = objectManagementListColumns.filter(\n field => field.key !== searchListColumnRow.key\n );\n const multipleSearchListColumns = objectManagementListColumns.length > 1;\n\n if (multipleSearchListColumns && moveUp && searchListColumnIndex > 0) {\n const searchListColumnBeforeKey = `${\n objectManagementListColumns[searchListColumnIndex - 1].key\n }`;\n const searchListColumnBeforeIndex = filteredSearchListColumns.findIndex(\n field => field.key === searchListColumnBeforeKey\n );\n filteredSearchListColumns.splice(searchListColumnBeforeIndex, 0, foundSearchListColumn);\n this.updateObjectManagementListColumn(objectId, filteredSearchListColumns);\n } else if (\n multipleSearchListColumns &&\n !moveUp &&\n searchListColumnIndex < objectManagementListColumns.length\n ) {\n const caseListColumnAfterKey = `${\n objectManagementListColumns[searchListColumnIndex + 1].key\n }`;\n const caseListColumnAfterIndex = filteredSearchListColumns.findIndex(\n field => field.key === caseListColumnAfterKey\n );\n filteredSearchListColumns.splice(caseListColumnAfterIndex + 1, 0, foundSearchListColumn);\n this.updateObjectManagementListColumn(objectId, filteredSearchListColumns);\n }\n }\n\n saveCasListColumns(): void {\n this.disableInput();\n\n this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {\n if (currentModalType === 'create') {\n this.addColumn();\n } else {\n this.updateColumn();\n }\n });\n }\n\n enumValueChange(value: Array<{[key: string]: string}>): void {\n this.formGroup.patchValue({enum: value});\n }\n\n columnRowClicked(row: {key: string}): void {\n this.resetFormGroup();\n\n combineLatest([this.viewTypeItems$, this.sortItems$])\n .pipe(take(1))\n .subscribe(([viewTypeItems, sortItems]) => {\n const column = this.cachedObjectManagementListColumns.find(\n cachedColumn => cachedColumn.key === row.key\n );\n const viewTypeItem = viewTypeItems.find(item => item.key === column.displayType.type);\n const viewTypeItemIndex = viewTypeItems.findIndex(\n item => item.key === column.displayType.type\n );\n const sortItem = sortItems.find(item => item.key === column.defaultSort);\n const sortItemIndex = sortItems.findIndex(item => item.key === column.defaultSort);\n const enumValues = column?.displayType?.displayTypeParameters?.enum;\n const mappedEnumValues: MultiInputValues = [];\n const columnDateFormat = column?.displayType?.displayTypeParameters?.dateFormat;\n\n this.selectedViewTypeItemIndex$.next(viewTypeItemIndex);\n\n if (sortItem) {\n this.selectedSortItemIndex$.next(sortItemIndex);\n }\n\n if (enumValues) {\n Object.keys(enumValues).forEach(key => {\n mappedEnumValues.push({key, value: enumValues[key]});\n });\n this.defaultEnumValues$.next(mappedEnumValues);\n } else {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n }\n\n this.formGroup.patchValue({\n key: column.key,\n title: column.title,\n path: column.path,\n sortable: column.sortable,\n // @ts-ignore\n displayType: {...viewTypeItem},\n // @ts-ignore\n defaultSort: sortItem ? {...sortItem} : {...sortItems[0]},\n ...(columnDateFormat && {\n dateFormat: columnDateFormat,\n }),\n });\n\n this.openModal('edit');\n });\n }\n\n private updateObjectManagementListColumn(\n objectId: string,\n listColumn: Array<SearchListColumn>\n ): void {\n this.disableInput();\n this.objectManagementService\n .putSearchListColumns(objectId, listColumn)\n .pipe(\n tap(() => {\n this.refreshObjectManagementListColumns();\n localStorage.setItem(`list-search-${objectId}`, null);\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private addColumn(): void {\n const formValue = this.formGroup.value;\n\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId =>\n this.objectManagementService.postSearchList(\n objectId,\n this.mapFormValuesToColumn(formValue)\n )\n ),\n tap(() => {\n this.closeModal();\n this.refreshObjectManagementListColumns();\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private getDisplayTypeParametersView(displayTypeParameters: DisplayTypeParameters): string {\n if (displayTypeParameters?.dateFormat) {\n return displayTypeParameters.dateFormat;\n } else if (displayTypeParameters?.enum) {\n return Object.keys(displayTypeParameters.enum).reduce((acc, curr) => {\n const keyValuePairString = `${curr}: ${displayTypeParameters.enum[curr]}`;\n if (!acc) {\n return `${keyValuePairString}`;\n }\n\n return `${acc}, ${keyValuePairString}`;\n }, '');\n }\n\n return '-';\n }\n\n private updateColumn(): void {\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId =>\n this.objectManagementService.putSearchList(\n objectId,\n this.formGroup.value.key,\n this.mapFormValuesToColumn(this.formGroup.value)\n )\n ),\n tap(() => {\n this.closeModal();\n this.refreshObjectManagementListColumns();\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private setDownload(\n objectId: string,\n ObjectManagementListColumns: Array<SearchListColumn>\n ): void {\n this.downloadName$.next(`${objectId}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify(ObjectManagementListColumns, null, 2))\n )\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n this.formGroup.disable();\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n this.formGroup.enable();\n }\n\n private refreshObjectManagementListColumns(): void {\n this.refreshObjectManagementListColumns$.next(null);\n }\n\n private resetFormGroup(): void {\n this.formGroup.reset();\n combineLatest([this.sortItems$, this.viewTypeItems$])\n .pipe(take(1))\n .subscribe(([sortItems, viewTypeItems]) => {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n this.selectedViewTypeItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({displayType: viewTypeItems[0]});\n this.selectedSortItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({defaultSort: sortItems[0]});\n });\n }\n\n private mapFormValuesToColumn(formValue: any): SearchListColumn {\n return {\n key: formValue.key,\n sortable: formValue.sortable,\n ...(formValue.defaultSort?.key !== this.INVALID_KEY && {\n defaultSort: formValue.defaultSort?.key,\n }),\n title: formValue.title || '',\n path: formValue.path,\n displayType: {\n type: formValue.displayType?.key,\n displayTypeParameters: {\n ...(formValue.dateFormat && {dateFormat: formValue.dateFormat}),\n ...(Array.isArray(formValue.enum) &&\n formValue.enum.length > 0 && {\n enum: formValue.enum.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\n }),\n },\n },\n };\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<ng-container\n *ngIf=\"{\n listColumn: translatedObjectManagementListColumns$ | async,\n fields: objectManagementFields$ | async,\n objectId: objectId$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3 mr-2\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!obs.loading; else loading\">\n <ng-container *ngIf=\"obs.listColumn?.length > 0; else noConfigWarning\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <a\n cdsLink\n class=\"center-link\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.listColumn?.length < 1 ||\n obs.disableInput ||\n obs.loading\n \"\n >\n {{ 'listColumn.downloadButtonText' | translate }}\n </a>\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"obs.loading\"\n class=\"ml-3\"\n >\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n objectId: objectId$ | async,\n } as obs\"\n >\n <i\n class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n (click)=\"deleteRow(index, $event)\"\n [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.objectId)\"\n [ngClass]=\"{\n 'disabled disabled-move-row-button': index === length - 1 || obs.disableInput,\n }\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.listColumn\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n *ngIf=\"obs.listColumn; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n showEnum: showEnum$ | async,\n isYesNo: isYesNo$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.objectsApiPathTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"displayType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"viewTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"showDateFormat$ | async\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"dateFormat\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"modalObs.showEnum || modalObs.isYesNo\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{\n modalObs.isYesNo\n ? ('listColumn.enumTitleOptional' | translate)\n : ('listColumn.enumTitle' | translate)\n }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <valtimo-carbon-multi-input\n *ngIf=\"(showModal$ | async) || (modalShowing$ | async)\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n [defaultValues]=\"defaultEnumValues$ | async\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-checkbox formControlName=\"sortable\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown\n formControlName=\"defaultSort\"\n [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\"\n >\n <cds-dropdown-list [items]=\"sortItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'listColumn.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveCasListColumns()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n >\n {{ 'listColumn.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowIndex$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'listColumn.noConfigWarningTitle' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n","/*\n * Copyright 2015-2025 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\nimport {Component, TemplateRef, ViewChild} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n startWith,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {\n ConfigService,\n DefinitionColumn,\n SearchField,\n SearchFieldColumnView,\n SearchFieldDataType,\n SearchFieldFieldType,\n} from '@valtimo/shared';\nimport {ListField} from '@valtimo/components';\nimport {catchError, take} from 'rxjs/operators';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {ListItem} from 'carbon-components-angular';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ObjectManagementService} from '../../../../services/object-management.service';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-list-search-fields',\n templateUrl: './object-management-list-search-fields.component.html',\n styleUrls: ['./object-management-list-search-fields.component.scss'],\n})\nexport class ObjectManagementListSearchFieldsComponent {\n @ViewChild('moveRowButtons') public moveRowButtonsTemplateRef: TemplateRef<any>;\n readonly downloadName$ = new BehaviorSubject<string>('');\n readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n readonly loading$ = new BehaviorSubject<boolean>(true);\n readonly currentModalType$ = new BehaviorSubject<string>('create');\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n readonly showDeleteModal$ = new Subject<boolean>();\n readonly deleteRowIndex$ = new BehaviorSubject<number>(0);\n\n readonly INVALID_KEY = 'invalid';\n readonly formGroup = new FormGroup({\n title: new FormControl(''),\n key: new FormControl('', Validators.required),\n path: new FormControl('', Validators.required),\n dataType: new FormControl({\n key: this.INVALID_KEY,\n }),\n fieldType: new FormControl({\n key: this.INVALID_KEY,\n }),\n });\n private readonly COLUMNS: Array<DefinitionColumn> = [\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'title',\n translationKey: 'title',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'key',\n translationKey: 'key',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'path',\n translationKey: 'path',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'dataType',\n translationKey: 'dataType',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'fieldType',\n translationKey: 'fieldType',\n },\n ];\n readonly DATA_TYPES: Array<SearchFieldDataType> = [\n 'text',\n 'number',\n 'date',\n 'datetime',\n 'boolean',\n ];\n private readonly FIELD_TYPES: Array<SearchFieldFieldType> = ['single', 'range'];\n private cachedObjectManagementListSearchFields: Array<SearchField> = [];\n private readonly refreshObjectManagementListSearchFields$ = new BehaviorSubject<null>(null);\n\n readonly objectManagementFields$: Observable<Array<ListField>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.COLUMNS.map(column => ({\n key: column.propertyName,\n label: this.translateService.instant(`searchFieldsOverview.${column.translationKey}`),\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n }))\n )\n );\n\n readonly objectId$: Observable<string> = this.route.params.pipe(\n map(params => params.id || ''),\n filter(objectId => !!objectId)\n );\n\n private readonly objectManagementListSearchFields$: Observable<Array<any>> = combineLatest([\n this.objectId$,\n this.refreshObjectManagementListSearchFields$,\n ]).pipe(\n switchMap(([objectId]) => this.objectManagementService.getSearchField(objectId)),\n tap(objectManagementListSearchFields => {\n this.objectId$.pipe(take(1)).subscribe(objectId => {\n if (\n objectManagementListSearchFields &&\n Array.isArray(objectManagementListSearchFields) &&\n objectManagementListSearchFields.length > 0\n ) {\n this.setDownload(objectId, objectManagementListSearchFields);\n }\n });\n }),\n tap(objectManagementListSearchFields => {\n this.cachedObjectManagementListSearchFields = objectManagementListSearchFields;\n this.loading$.next(false);\n this.enableInput();\n })\n );\n\n readonly translatedObjectManagementListSearchFields$: Observable<Array<SearchFieldColumnView>> =\n combineLatest([\n this.objectManagementListSearchFields$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([columns]) =>\n columns.map(column => ({\n ...column,\n title: column.title || '-',\n dataType: this.translateService.instant(\n `searchFields.${column?.dataType?.toLowerCase()}`\n ),\n fieldType: this.translateService.instant(\n `searchFieldsOverview.${column?.fieldType?.toLowerCase()}`\n ),\n }))\n )\n );\n\n readonly selectedDataTypeItemIndex$ = new BehaviorSubject<number>(0);\n\n readonly dataTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedDataTypeItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedDataTypeItemIndex]) =>\n [\n {\n content: this.translateService.instant(`searchFieldDataType.select`),\n key: this.INVALID_KEY,\n },\n ...this.DATA_TYPES.map(type => ({\n content: this.translateService.instant(`searchFields.${type}`),\n key: type.toUpperCase(),\n })),\n ].map((item, index) => ({\n ...item,\n selected: index === selectedDataTypeItemIndex,\n }))\n )\n );\n\n readonly selectedFieldTypeItemIndex$ = new BehaviorSubject<number>(0);\n readonly fieldTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedFieldTypeItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedFieldTypeItemIndex]) =>\n [\n {\n content: this.translateService.instant(`searchFieldFieldType.select`),\n key: this.INVALID_KEY,\n },\n ...this.FIELD_TYPES.map(type => ({\n content: this.translateService.instant(`searchFieldsOverview.${type}`),\n key: type.toUpperCase(),\n })),\n ].map((item, index) => ({\n ...item,\n selected: index === selectedFieldTypeItemIndex,\n }))\n )\n );\n\n readonly validKey$ = combineLatest([this.formGroup.valueChanges, this.currentModalType$]).pipe(\n map(([formValues, currentModalType]) => {\n const existingKeys = this.cachedObjectManagementListSearchFields.map(column => column.key);\n return currentModalType === 'create' ? !existingKeys.includes(formValues.key) : true;\n }),\n startWith(false)\n );\n\n readonly valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(\n map(([formValues, validKey]) => !!(formValues.path && validKey)),\n startWith(false)\n );\n\n constructor(\n private readonly objectManagementService: ObjectManagementService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService,\n private readonly sanitizer: DomSanitizer\n ) {}\n\n openModal(modalType: string): void {\n this.showModal$.next(true);\n this.currentModalType$.next(modalType);\n\n if (modalType === 'create') {\n this.formGroup.controls['key'].enable();\n this.resetFormGroup();\n } else if (modalType === 'edit') {\n this.formGroup.controls['key'].disable();\n }\n }\n\n closeModal(): void {\n this.showModal$.next(false);\n }\n\n deleteRow(listSearchFieldRowIndex: number, clickEvent: MouseEvent): void {\n clickEvent.stopPropagation();\n\n this.showDeleteModal$.next(true);\n this.deleteRowIndex$.next(listSearchFieldRowIndex);\n }\n\n deleteRowConfirmation(listSearchFieldRowIndex: number): void {\n const columnKey = this.getColumnKey(listSearchFieldRowIndex);\n\n if (columnKey) {\n this.disableInput();\n\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId =>\n this.objectManagementService.deleteSearchField(objectId, columnKey)\n ),\n tap(() => this.refreshObjectManagementListSearchFields()),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n }\n\n getColumnKey(listSearchFieldRowIndex: number) {\n return this.cachedObjectManagementListSearchFields[listSearchFieldRowIndex]?.key;\n }\n\n moveRow(\n listSearchFieldRowIndex: number,\n moveUp: boolean,\n clickEvent: MouseEvent,\n objectId: string\n ): void {\n const objectManagementListSearchFields = [...this.cachedObjectManagementListSearchFields];\n const listSearchFieldRow = objectManagementListSearchFields[listSearchFieldRowIndex];\n\n clickEvent.stopPropagation();\n const listSearchFieldIndex = objectManagementListSearchFields.findIndex(\n field => field.key === listSearchFieldRow.key\n );\n const foundListSearchField = {...objectManagementListSearchFields[listSearchFieldIndex]};\n const filteredListSearchField = objectManagementListSearchFields.filter(\n field => field.key !== listSearchFieldRow.key\n );\n const multipleListSearchFields = objectManagementListSearchFields.length > 1;\n\n if (multipleListSearchFields && moveUp && listSearchFieldIndex > 0) {\n const listSearchFieldBeforeKey = `${\n objectManagementListSearchFields[listSearchFieldIndex - 1].key\n }`;\n const listSearchFieldBeforeIndex = filteredListSearchField.findIndex(\n field => field.key === listSearchFieldBeforeKey\n );\n filteredListSearchField.splice(listSearchFieldBeforeIndex, 0, foundListSearchField);\n this.updateObjectManagementListSearchField(objectId, filteredListSearchField);\n } else if (\n multipleListSearchFields &&\n !moveUp &&\n listSearchFieldIndex < objectManagementListSearchFields.length\n ) {\n const caseListColumnAfterKey = `${\n objectManagementListSearchFields[listSearchFieldIndex + 1].key\n }`;\n const caseListColumnAfterIndex = filteredListSearchField.findIndex(\n field => field.key === caseListColumnAfterKey\n );\n filteredListSearchField.splice(caseListColumnAfterIndex + 1, 0, foundListSearchField);\n this.updateObjectManagementListSearchField(objectId, filteredListSearchField);\n }\n }\n\n saveListSearchFields(): void {\n this.disableInput();\n\n this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {\n if (currentModalType === 'create') {\n this.addSearchField();\n } else {\n this.updateSearchField();\n }\n });\n }\n\n columnRowClicked(row: {key: string}): void {\n this.resetFormGroup();\n\n combineLatest([this.dataTypeItems$, this.fieldTypeItems$])\n .pipe(take(1))\n .subscribe(([dataTypeItems, fieldTypeItems]) => {\n const column = this.cachedObjectManagementListSearchFields.find(\n cachedColumn => cachedColumn.key === row.key\n );\n const dataTypeItem = dataTypeItems.find(item => item.key === column.dataType);\n const dataTypeItemIndex = dataTypeItems.findIndex(item => item.key === column.dataType);\n\n const fieldTypeItem = fieldTypeItems.find(item => item.key === column.fieldType);\n const fieldTypeItemIndex = fieldTypeItems.findIndex(item => item.key === column.fieldType);\n\n this.selectedDataTypeItemIndex$.next(dataTypeItemIndex);\n this.selectedFieldTypeItemIndex$.next(fieldTypeItemIndex);\n\n this.formGroup.patchValue({\n key: column.key,\n title: column.title,\n path: column.path,\n // @ts-ignore\n dataType: {...dataTypeItem},\n // @ts-ignore\n fieldType: {...fieldTypeItem},\n });\n\n this.openModal('edit');\n });\n }\n\n private updateObjectManagementListSearchField(\n objectId: string,\n searchField: Array<SearchField>\n ): void {\n this.disableInput();\n this.objectManagementService\n .putSearchFields(objectId, searchField)\n .pipe(\n tap(() => {\n this.refreshObjectManagementListSearchFields();\n localStorage.setItem(`list-search-fields${objectId}`, null);\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private addSearchField(): void {\n const formValue = this.formGroup.value;\n\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId =>\n this.objectManagementService.postSearchField(\n objectId,\n this.mapFormValuesToColumn(formValue)\n )\n ),\n tap(() => {\n this.closeModal();\n this.refreshObjectManagementListSearchFields();\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private updateSearchField(): void {\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId =>\n this.objectManagementService.putSearchField(\n objectId,\n this.formGroup.value.key,\n this.mapFormValuesToColumn(this.formGroup.value)\n )\n ),\n tap(() => {\n this.closeModal();\n this.refreshObjectManagementListSearchFields();\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private setDownload(objectId: string, ObjectManagementSearchFields: Array<SearchField>): void {\n this.downloadName$.next(`${objectId}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify(ObjectManagementSearchFields, null, 2))\n )\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n this.formGroup.disable();\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n this.formGroup.enable();\n }\n\n private refreshObjectManagementListSearchFields(): void {\n this.refreshObjectManagementListSearchFields$.next(null);\n }\n\n private resetFormGroup(): void {\n this.formGroup.reset();\n this.selectedDataTypeItemIndex$.next(0);\n this.selectedFieldTypeItemIndex$.next(0);\n }\n\n private mapFormValuesToColumn(formValue: any): SearchField {\n return {\n key: formValue.key,\n title: formValue.title || '',\n path: formValue.path,\n dataType: formValue.dataType.key,\n fieldType: formValue.fieldType.key,\n };\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<ng-container\n *ngIf=\"{\n searchFields: translatedObjectManagementListSearchFields$ | async,\n fields: objectManagementFields$ | async,\n objectId: objectId$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3 mr-2\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!obs.loading; else loading\">\n <ng-container *ngIf=\"obs.searchFields?.length > 0; else noConfigWarning\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <a\n cdsLink\n class=\"center-link\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.searchFields?.length < 1 ||\n obs.disableInput ||\n obs.loading\n \"\n >\n {{ 'searchFieldsOverview.download' | translate }}\n </a>\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"obs.loading\"\n class=\"ml-3\"\n >\n {{ 'searchFieldsOverview.add' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n objectId: objectId$ | async,\n } as obs\"\n >\n <i\n class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n (click)=\"deleteRow(index, $event)\"\n [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === length - 1 || obs.disableInput}\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n *ngIf=\"obs.searchFields; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('searchFieldsOverview.add' | translate)\n : ('searchFieldsOverview.edit' | translate)\n }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.title' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'searchFieldsOverview.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.key' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.path' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.objectsApiPath' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.dataType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"dataType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.fieldType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"fieldType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'searchFieldsOverview.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveListSearchFields()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n >\n {{ 'searchFieldsOverview.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowIndex$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n titleTranslationKey=\"searchFieldsOverview.searchField\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'searchFieldsOverview.noSearchFieldsConfiguredWarningTitle' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n","/*\n * Copyright 2015-2025 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\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {combineLatest, filter, map, Observable, Subscription, switchMap} from 'rxjs';\nimport {ConfigService} from '@valtimo/shared';\nimport {TabService} from '../../services/tab.service';\nimport {TabEnum} from '../../services/tab.enum';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {PageTitleService} from '@valtimo/components';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-detail-container',\n templateUrl: './object-management-detail-container.component.html',\n styleUrls: ['./object-management-detail-container.component.css'],\n})\nexport class ObjectManagementDetailContainerComponent implements OnInit, OnDestroy {\n public currentTab: TabEnum;\n public caseListColumn!: boolean;\n\n private tabSubscription: Subscription;\n\n readonly TabEnum = TabEnum;\n\n readonly objectId$: Observable<string> = this.route.params.pipe(\n map(params => params.id || ''),\n filter(id => !!id)\n );\n\n readonly object$ = combineLatest([this.objectId$, this.objectManagementState.refresh$]).pipe(\n switchMap(([object]) => this.objectManagementService.getObjectById(object)),\n tap(object => {\n this.pageTitleService.setCustomPageTitle(object.title);\n })\n );\n\n constructor(\n private readonly objectManagementState: ObjectManagementStateService,\n private readonly objectManagementService: ObjectManagementService,\n private readonly route: ActivatedRoute,\n private readonly configService: ConfigService,\n private readonly tabService: TabService,\n private readonly pageTitleService: PageTitleService\n ) {\n this.caseListColumn = this.configService.config.featureToggles?.caseListColumn ?? true;\n }\n\n ngOnInit(): void {\n this.openCurrentTabSubscription();\n }\n\n displayBodyComponent(tab: TabEnum): void {\n this.tabService.currentTab = tab;\n }\n\n openCurrentTabSubscription(): void {\n this.tabSubscription = this.tabService.currentTab$.subscribe(\n value => (this.currentTab = value)\n );\n }\n\n ngOnDestroy(): void {\n this.tabService.currentTab = TabEnum.GENERAL;\n this.tabSubscription?.unsubscribe();\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabContent\"></ng-container>\n </valtimo-widget>\n </div>\n </div>\n</div>\n\n<ng-template #title>\n <ng-container *ngIf=\"object$ | async as object\">\n <div class=\"bg-light dossier-header\" *ngIf=\"object.showInDataMenu\">\n <h3 class=\"dossier-title\">\n <div *ngIf=\"object.showInDataMenu\" class=\"pull-right\">\n <span class=\"badge badge-pill badge-info increase-size\">{{\n 'objectManagement.visibleInMenu' | translate\n }}</span>\n </div>\n </h3>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tabs>\n <ul class=\"nav nav-tabs\">\n <li class=\"nav-item\">\n <a\n id=\"general-tab\"\n class=\"nav-link clickable active\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.GENERAL)\"\n >\n {{ 'objectManagement.tabs.general' | translate }}\n </a>\n </li>\n <li class=\"nav-item\">\n <a\n id=\"search-tab\"\n class=\"nav-link clickable\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.SEARCH)\"\n >\n {{ 'objectManagement.tabs.searchFields' | translate }}\n </a>\n </li>\n <li class=\"nav-item\" *ngIf=\"caseListColumn\">\n <a\n id=\"list-tab\"\n class=\"nav-link clickable\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.LIST)\"\n >\n {{ 'objectManagement.tabs.list' | translate }}\n </a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabContent>\n <div class=\"pt-3 bg-white position-relative tab-container\">\n <div *ngIf=\"currentTab && currentTab === TabEnum.GENERAL\">\n <valtimo-object-management-detail [object$]=\"object$\"></valtimo-object-management-detail>\n </div>\n <div *ngIf=\"currentTab && currentTab === TabEnum.SEARCH\">\n <valtimo-object-management-list-search-fields></valtimo-object-management-list-search-fields>\n </div>\n <div *ngIf=\"currentTab && currentTab === TabEnum.LIST\">\n <valtimo-object-management-list-columns></valtimo-object-management-list-columns>\n </div>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 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\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {FormManagementService} from '@valtimo/form-management';\nimport {PluginManagementService} from '@valtimo/plugin';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Objecttype, ObjecttypeKeys} from '../../models/object-management.model';\nimport {VModalComponent, ModalService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-upload-modal',\n templateUrl: './object-management-upload-modal.component.html',\n styleUrls: ['./object-management-upload-modal.component.scss'],\n})\nexport class ObjectManagementUploadModalComponent implements AfterViewInit, OnDestroy {\n @ViewChild('objectManagementUploadModal') objectManagementUploadModal: VModalComponent;\n @Input() objecttypes?: Objecttype[];\n\n readonly clear$ = new Subject();\n readonly jsonString$ = new BehaviorSubject<string>('');\n readonly error$ = new BehaviorSubject<string>('');\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n readonly showForm$: Observable<boolean> = this.modalService.modalVisible$;\n\n private readonly file$ = new BehaviorSubject<File>(undefined);\n\n private showSubscription!: Subscription;\n private hideSubscription!: Subscription;\n private fileSubscription: Subscription;\n private errorSubscription: Subscription;\n\n constructor(\n private readonly objectManagementState: ObjectManagementStateService,\n private readonly objectManagementService: ObjectManagementService,\n private readonly formManagementService: FormManagementService,\n private readonly pluginManagementService: PluginManagementService,\n private readonly modalService: ModalService,\n private readonly translateService: TranslateService\n ) {}\n\n ngAfterViewInit(): void {\n this.openShowSubscription();\n this.openFileSubscription();\n this.openHideSubscription();\n }\n\n ngOnDestroy(): void {\n this.showSubscription?.unsubscribe();\n this.hideSubscription?.unsubscribe();\n this.fileSubscription.unsubscribe();\n }\n\n hide(): void {\n this.modalService.closeModal();\n }\n\n cancel(): void {\n this.hide();\n }\n\n setFile(file: File): void {\n this.clearError();\n this.file$.next(file);\n }\n\n uploadDefinition(): void {\n this.disable();\n\n this.jsonString$.pipe(take(1)).subscribe(objecttypeDefinition => {\n this.objectManagementService\n .createObject({...JSON.parse(objecttypeDefinition)})\n .subscribe(() => {\n this.objectManagementState.refresh();\n this.objectManagementState.hideModal();\n });\n this.closeErrorSubscription();\n this.clearError();\n this.enable();\n this.hide();\n });\n }\n\n private openErrorSubscription(errorCode: string): void {\n this.closeErrorSubscription();\n this.errorSubscription = this.translateService.stream(errorCode).subscribe(error => {\n this.error$.next(error);\n });\n }\n\n private closeErrorSubscription(): void {\n if (this.errorSubscription) {\n this.errorSubscription.unsubscribe();\n }\n }\n\n private openFileSubscription(): void {\n this.fileSubscription = this.file$.subscribe(file => {\n if (file) {\n const reader = new FileReader();\n\n reader.onloadend = () => {\n const result = reader.result.toString();\n if (this.isValidJsonObjecttype(result)) {\n this.jsonString$.next(result);\n } else {\n this.clearJsonString();\n }\n };\n\n reader.readAsText(file);\n } else {\n this.clearJsonString();\n }\n });\n }\n\n private openShowSubscription(): void {\n this.showSubscription = this.objectManagementState.showModal$.subscribe(() => {\n this.show();\n\n this.clearJsonString();\n this.clearError();\n this.clearDropzone();\n });\n }\n\n private openHideSubscription(): void {\n this.hideSubscription = this.objectManagementState.hideModal$.subscribe(() => {\n this.hide();\n });\n }\n\n private show(): void {\n this.objectManagementState.modalType$.pipe(take(1)).subscribe(modalType => {\n if (modalType === 'upload') {\n this.modalService.openModal(this.objectManagementUploadModal);\n }\n });\n }\n\n private clearError(): void {\n this.error$.next('');\n }\n\n private clearJsonString(): void {\n this.jsonString$.next('');\n }\n\n private clearDropzone(): void {\n this.clear$.next(null);\n }\n\n private isValidJsonObjecttype(string: string) {\n const jsonObjecttype = JSON.parse(string);\n const isValid = this.validateObject(jsonObjecttype, [\n 'title',\n 'objecttypenApiPluginConfigurationId',\n 'objecttypeId',\n 'objecttypeVersion',\n 'objectenApiPluginConfigurationId',\n 'showInDataMenu',\n ]);\n const isObjecttypeTitleUnique = !this.objecttypes?.find(\n objecttype => objecttype.title === jsonObjecttype.title\n );\n if (isValid && isObjecttypeTitleUnique) {\n return true;\n } else if (isValid && !isObjecttypeTitleUnique) {\n this.clearDropzone();\n this.openErrorSubscription('dropzone.error.objecttypeAlreadyExists');\n return false;\n } else if (!isValid && isObjecttypeTitleUnique) {\n this.clearDropzone();\n this.openErrorSubscription('dropzone.error.invalidObjecttypeDef');\n return false;\n }\n }\n\n validateObject(obj: object, requiredKeys: ObjecttypeKeys[]) {\n const objKeys = Object.keys(obj);\n return requiredKeys.every(key => objKeys.includes(key));\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 <h4>{{ 'objectManagement.uploadObjecttype' | translate }}</h4>\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 <button cdsButton=\"secondary\" (click)=\"cancel()\" [disabled]=\"obs.disabled\">\n {{ 'objectManagement.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n (click)=\"uploadDefinition()\"\n [disabled]=\"obs.jsonString === '' || obs.disabled\"\n >\n {{ 'Upload' | translate }}\n </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","/*\n * Copyright 2015-2025 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\nimport {Component} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {switchMap, tap} from 'rxjs/operators';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {Objecttype} from '../../models/object-management.model';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {Router} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-list',\n templateUrl: './object-management-list.component.html',\n styleUrls: ['./object-management-list.component.scss'],\n})\nexport class ObjectManagementListComponent {\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly fields$ = new BehaviorSubject<Array<{key: string; label: string}>>([]);\n\n readonly objecttypesInstances$: Observable<Array<Objecttype>> = combineLatest([\n this.translateService.stream('key'),\n this.objectManagementState.refresh$,\n ]).pipe(\n tap(() => this.setFields()),\n switchMap(() => this.objectManagementService.getAllObjects()),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly objectManagementService: ObjectManagementService,\n private readonly objectManagementState: ObjectManagementStateService,\n private readonly translateService: TranslateService,\n private router: Router\n ) {}\n\n showAddModal(): void {\n this.objectManagementState.setModalType('add');\n this.objectManagementState.showModal();\n }\n\n showUploadModal(): void {\n this.objectManagementState.setModalType('upload');\n this.objectManagementState.showModal();\n }\n\n redirectToDetails(objectManagement: Objecttype) {\n this.router.navigate(['/object-management/object', objectManagement.id]);\n }\n\n private setFields(): void {\n const keys: Array<string> = ['title'];\n this.fields$.next(\n keys.map(key => ({\n label: `${this.translateService.instant(`objectManagement.labels.${key}`)}`,\n key,\n }))\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<div class=\"main-content pt-0\" *ngIf=\"{loading: loading$ | async} as obs\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <div class=\"text-right mt-m3px mb-3\">\n <button (click)=\"showUploadModal()\" class=\"btn btn-secondary btn-space\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'objectManagement.uploadObjecttype' | translate }}\n </button>\n <button (click)=\"showAddModal()\" type=\"button\" class=\"btn btn-space btn-primary mr-0\">\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'objectManagement.createObjecttype' | translate }}\n </button>\n </div>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #list let-obs=\"obs\">\n <ng-container *ngIf=\"fields$ | async as fields\">\n <ng-container *ngIf=\"objecttypesInstances$ | async as objecttypesInstances\">\n <valtimo-widget *ngIf=\"obs.loading === false\">\n <valtimo-carbon-list\n [items]=\"objecttypesInstances\"\n [fields]=\"fields\"\n [viewMode]=\"true\"\n [header]=\"true\"\n paginationIdentifier=\"objecttypesList\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">\n {{ 'objectManagement.title' | translate }}\n <sup class=\"ml-1 badge badge-pill badge-primary\">{{\n objecttypesInstances?.length || 0\n }}</sup>\n </h3>\n </div>\n </valtimo-carbon-list>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<valtimo-object-management-upload-modal\n [objecttypes]=\"objecttypesInstances$ | async\"\n></valtimo-object-management-upload-modal>\n<valtimo-object-management-modal></valtimo-object-management-modal>\n","/*\n * Copyright 2015-2025 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\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {ObjectManagementDetailContainerComponent} from './components/object-management-detail-container/object-management-detail-container.component';\nimport {ObjectManagementListComponent} from './components/object-management-list/object-management-list.component';\n\nconst routes: Routes = [\n {\n path: 'object-management',\n canActivate: [AuthGuardService],\n component: ObjectManagementListComponent,\n data: {title: 'Objects', roles: [ROLE_ADMIN]},\n },\n {\n path: 'object-management/object/:id',\n canActivate: [AuthGuardService],\n component: ObjectManagementDetailContainerComponent,\n data: {title: 'Object', roles: [ROLE_ADMIN], customPageTitle: true},\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class ObjectManagementRoutingModule {}\n","/*\n * Copyright 2015-2025 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\nimport {NgModule} from '@angular/core';\nimport {ObjectManagementRoutingModule} from './object-management-routing.module';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n CarbonMultiInputModule,\n ConfirmationModalModule,\n DropzoneModule,\n FormModule,\n InputModule,\n ModalModule,\n SelectModule,\n SpinnerModule,\n TooltipIconModule,\n ValtimoCdsModalDirective,\n VModalModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ObjectManagementDetailContainerComponent} from './components/object-management-detail-container/object-management-detail-container.component';\nimport {ObjectManagementDetailComponent} from './components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component';\nimport {ObjectManagementListComponent} from './components/object-management-list/object-management-list.component';\nimport {ObjectManagementUploadModalComponent} from './components/object-management-upload-modal/object-management-upload-modal.component';\nimport {ObjectManagementModalComponent} from './components/object-management-modal/object-management-modal.component';\nimport {ObjectManagementListColumnsComponent} from './components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component';\nimport {\n ButtonModule as CarbonButtonModule,\n CheckboxModule,\n DropdownModule,\n IconModule,\n InputModule as CarbonInputModule,\n LinkModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n} from 'carbon-components-angular';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ObjectManagementListSearchFieldsComponent} from './components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component';\n\n@NgModule({\n declarations: [\n ObjectManagementListComponent,\n ObjectManagementDetailContainerComponent,\n ObjectManagementDetailComponent,\n ObjectManagementListColumnsComponent,\n ObjectManagementModalComponent,\n ObjectManagementUploadModalComponent,\n ObjectManagementListSearchFieldsComponent,\n ],\n imports: [\n CommonModule,\n DropzoneModule,\n WidgetModule,\n TranslateModule,\n ObjectManagementRoutingModule,\n VModalModule,\n FormModule,\n InputModule,\n SelectModule,\n CarbonInputModule,\n CarbonButtonModule,\n TooltipIconModule,\n CarbonMultiInputModule,\n CarbonModalModule,\n NotificationModule,\n LoadingModule,\n DropdownModule,\n CheckboxModule,\n LinkModule,\n IconModule,\n ReactiveFormsModule,\n ConfirmationModalModule,\n SpinnerModule,\n ModalModule,\n ValtimoCdsModalDirective,\n CarbonListModule,\n ],\n exports: [],\n})\nexport class ObjectManagementModule {}\n","/*\n * Copyright 2015-2025 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/*\n * Public API Surface of object-management\n */\n\nexport * from './lib/models/object-management.model';\nexport * from './lib/services/object-management.service';\nexport * from './lib/object-management.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1.ObjectManagementStateService","i2.ObjectManagementService","i4","i8","i1.ObjectManagementService","i2.ObjectManagementStateService","i3","i5","i6.ObjectManagementModalComponent","i7","tap","i5.TabService","i6","i8.ObjectManagementDetailComponent","i9.ObjectManagementListColumnsComponent","i10.ObjectManagementListSearchFieldsComponent","i11","switchMap","i7.ObjectManagementModalComponent","i8.ObjectManagementUploadModalComponent","i1","CarbonInputModule","CarbonButtonModule","CarbonModalModule","ModalModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAWU,uBAAuB,CAAA;IAGlC,WACU,CAAA,IAAgB,EACxB,aAA4B,EAAA;QADpB,IAAI,CAAA,IAAA,GAAJ,IAAI;QAGZ,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW;;IAGhE,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAG,EAAA,IAAI,CAAC,kBAAkB,CAAoC,kCAAA,CAAA,CAC/D;;AAGI,IAAA,aAAa,CAAC,EAAU,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,mCAAA,EAAsC,EAAE,CAAA,CAAE,CACrE;;AAGI,IAAA,YAAY,CAAC,OAAmB,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,kCAAA,CAAoC,EAC9D,OAAO,CACR;;AAGI,IAAA,UAAU,CAAC,OAAmB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,kCAAA,CAAoC,EAC9D,OAAO,CACR;;AAGH,IAAA,aAAa,CAAC,OAAe,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,sBAAA,EAAyB,OAAO,CAAA,CAAE,CAC7D;;IAGH,cAAc,CAAC,OAAe,EAAE,OAAyB,EAAA;QACvD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,kBAAkB,yBAAyB,OAAO,CAAA,CAAE,EAC5D,EAAC,GAAG,OAAO,EAAE,OAAO,EAAC,CACtB;;AAGH,IAAA,aAAa,CACX,OAAe,EACf,SAAiB,EACjB,OAAyB,EAAA;QAEzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,sBAAA,EAAyB,OAAO,CAAI,CAAA,EAAA,SAAS,CAAE,CAAA,EACzE,EAAC,GAAG,OAAO,EAAE,OAAO,EAAC,CACtB;;IAGH,oBAAoB,CAClB,OAAe,EACf,OAAgC,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,GAAG,IAAI,CAAC,kBAAkB,CAAyB,sBAAA,EAAA,OAAO,sBAAsB,EAChF,CAAC,GAAG,OAAO,CAAC,CACb;;IAGH,gBAAgB,CAAC,OAAe,EAAE,SAAiB,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,CAAG,EAAA,IAAI,CAAC,kBAAkB,yBAAyB,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAC1E;;AAGH,IAAA,cAAc,CAAC,OAAe,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,uBAAA,EAA0B,OAAO,CAAA,CAAE,CAC9D;;IAGH,eAAe,CAAC,OAAe,EAAE,OAAoB,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,CAAG,EAAA,IAAI,CAAC,kBAAkB,CAAmB,gBAAA,EAAA,OAAO,EAAE,EAAE;AACzF,YAAA,GAAG,OAAO;YACV,OAAO;AACR,SAAA,CAAC;;AAGJ,IAAA,cAAc,CACZ,OAAe,EACf,GAAW,EACX,OAAoB,EAAA;QAEpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,gBAAA,EAAmB,OAAO,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA,EAC7D,EAAC,GAAG,OAAO,EAAE,OAAO,EAAC,CACtB;;IAGH,eAAe,CAAC,OAAe,EAAE,OAA2B,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,GAAG,IAAI,CAAC,kBAAkB,CAAmB,gBAAA,EAAA,OAAO,SAAS,EAC7D,CAAC,GAAG,OAAO,CAAC,CACb;;IAGH,iBAAiB,CAAC,OAAe,EAAE,GAAW,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,CAAG,EAAA,IAAI,CAAC,kBAAkB,0BAA0B,OAAO,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CACrE;;+GA9GQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;4FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACxBD;;;;;;;;;;;;;;AAcG;AAEH,IAAY,OAIX;AAJD,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,OAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,OAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAJW,OAAO,KAAP,OAAO,GAIlB,EAAA,CAAA,CAAA;;ACpBD;;;;;;;;;;;;;;AAcG;MAQU,4BAA4B,CAAA;AAMvC,IAAA,WAAA,GAAA;AALiB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAE;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAE;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAM,KAAK,CAAC;;AAI9D,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAGxC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAGxC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;;AAGtC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;IAGxC,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG3B,IAAA,YAAY,CAAC,IAAS,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;+GArClB,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cAF3B,MAAM,EAAA,CAAA,CAAA;;4FAEP,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACrBD;;;;;;;;;;;;;;AAcG;MASU,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;QAIU,IAAY,CAAA,YAAA,GAAG,IAAI,eAAe,CAAU,OAAO,CAAC,OAAO,CAAC;AASrE;AAPC,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;IAGzC,IAAW,UAAU,CAAC,GAAY,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;;+GARlB,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;4FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACtBD;;;;;;;;;;;;;;AAcG;MAkBU,8BAA8B,CAAA;IAwDzC,WACmB,CAAA,qBAAmD,EACnD,uBAAgD,EAChD,WAAwB,EACxB,uBAAgD,EAChD,YAA0B,EAAA;QAJ1B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAY,CAAA,YAAA,GAAZ,YAAY;AAxDtB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC5C,QAAA,IAAA,CAAA,SAAS,GAAwB,IAAI,CAAC,YAAY,CAAC,aAAa;AAChE,QAAA,IAAA,CAAA,UAAU,GAAoB,IAAI,CAAC,qBAAqB,CAAC,UAAU;AACnE,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC;AAK1C,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;QAE9D,IAAgB,CAAA,gBAAA,GAAkD,IAAI,CAAC;AAC7E,aAAA,6BAA6B;AAC7B,aAAA,IAAI,CACH,GAAG,CAAC,OAAO,IACT,OAAO,EAAE,GAAG,CAAC,aAAa,KAAK;YAC7B,EAAE,EAAE,aAAa,CAAC,IAAI;YACtB,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB,CAAC,CAAC,CACJ,CACF;QAEM,IAAuB,CAAA,uBAAA,GAC9B,IAAI,CAAC;AACF,aAAA,0BAA0B;aAC1B,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC,CAAC;QAEvC,IAAyB,CAAA,yBAAA,GAAoB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CACrF,GAAG,CAAC,cAAc,IAAG;AACnB,YAAA,MAAM,gCAAgC,GAAG,cAAc,CAAC,MAAM,CAC5D,aAAa,IAAI,aAAa,EAAE,gBAAgB,EAAE,GAAG,KAAK,aAAa,CACxE;YACD,OAAO,gCAAgC,CAAC,GAAG,CAAC,aAAa,KAAK;gBAC5D,EAAE,EAAE,aAAa,CAAC,EAAE;gBACpB,IAAI,EAAE,aAAa,CAAC,KAAK;AAC1B,aAAA,CAAC,CAAC;SACJ,CAAC,CACH;QAEQ,IAA6B,CAAA,6BAAA,GAAoB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CACzF,GAAG,CAAC,cAAc,IAAG;AACnB,YAAA,MAAM,oCAAoC,GAAG,cAAc,CAAC,MAAM,CAChE,aAAa,IAAI,aAAa,EAAE,gBAAgB,EAAE,GAAG,KAAK,gBAAgB,CAC3E;YACD,OAAO,oCAAoC,CAAC,GAAG,CAAC,aAAa,KAAK;gBAChE,EAAE,EAAE,aAAa,CAAC,EAAE;gBACpB,IAAI,EAAE,aAAa,CAAC,KAAK;gBACzB,UAAU,EAAE,aAAa,CAAC,UAAU;AACrC,aAAA,CAAC,CAAC;SACJ,CAAC,CACH;;IAUD,eAAe,GAAA;QACb,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,oBAAoB,EAAE;;IAG7B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;AACpC,QAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;;IAGtC,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;;IAGhC,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,EAAE;;IAGb,IAAI,GAAA;AACF,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;AACzD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAI;YAC1C,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,SAAS,KAAK,KAAK,EAAE;AACvB,oBAAA,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAC,GAAG,QAAQ,EAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACtE,wBAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;AACpC,wBAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE;AACxC,qBAAC,CAAC;;AACG,qBAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AAC/B,oBAAA,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAC,GAAG,QAAQ,EAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACpE,wBAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;AACpC,wBAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE;AACxC,qBAAC,CAAC;;;AAGR,SAAC,CAAC;;IAGE,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC3E,IAAI,CAAC,IAAI,EAAE;AACb,SAAC,CAAC;;IAGI,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC3E,IAAI,CAAC,IAAI,EAAE;AACb,SAAC,CAAC;;IAGI,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,IAAG;YACxE,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,EAAE;gBAC/C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC;;AAE3D,SAAC,CAAC;;AAGJ,IAAA,eAAe,CAAC,IAAS,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,EAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAE7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAGb,IAAA,QAAQ,CAAC,IAAS,EAAA;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,CAAC,EACC,IAAI,CAAC,KAAK;AACV,YAAA,IAAI,CAAC,gCAAgC;AACrC,YAAA,IAAI,CAAC,mCAAmC;AACxC,YAAA,IAAI,CAAC,YAAY;AACjB,YAAA,IAAI,CAAC,iBAAiB,CACvB,CACF;;AAGH,IAAA,gBAAgB,CAAC,UAAU,EAAA;AACzB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;;+GAjJhC,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,0QChC3C,6tLAqKA,EAAA,MAAA,EAAA,CAAA,otBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDrIa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,iCAAiC,EAAA,QAAA,EAAA,6tLAAA,EAAA,MAAA,EAAA,CAAA,otBAAA,CAAA,EAAA;8NAKP,qBAAqB,EAAA,CAAA;sBAAxD,SAAS;uBAAC,uBAAuB;gBACzB,cAAc,EAAA,CAAA;sBAAtB;;;AElCH;;;;;;;;;;;;;;AAcG;MAcU,+BAA+B,CAAA;IAI1C,WACmB,CAAA,uBAAgD,EAChD,qBAAmD,EAAA;QADnD,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;AAJ/B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;;AAOvD,IAAA,kBAAkB,CAAC,MAAM,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,MAAM,UAAU,GACd,+BAA+B,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvF,MAAM,qBAAqB,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC;AAC9E,QAAA,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;QACtD,qBAAqB,CAAC,YAAY,CAAC,UAAU,EAAE,CAAG,EAAA,MAAM,CAAC,EAAE,CAAO,KAAA,CAAA,CAAC;QACnE,qBAAqB,CAAC,KAAK,EAAE;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG3B,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC;AAC/C,QAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;+GAxBhB,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,6HC5B5C,2yEAqEA,EAAA,MAAA,EAAA,CAAA,8uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDzCa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,kCAAkC,EAAA,QAAA,EAAA,2yEAAA,EAAA,MAAA,EAAA,CAAA,8uBAAA,CAAA,EAAA;iIAKnC,OAAO,EAAA,CAAA;sBAAf;;;AE7BH;;;;;;;;;;;;;;AAcG;MAsCU,oCAAoC,CAAA;IAyQ/C,WACmB,CAAA,uBAAgD,EAChD,KAAqB,EACrB,gBAAkC,EAClC,aAA4B,EAC5B,SAAuB,EAAA;QAJvB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAS,CAAA,SAAA,GAAT,SAAS;AA5QnB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,SAAS,CAAC;AACtD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAC7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAkB,QAAQ,CAAC;AAClE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAW;AACzC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAmB,SAAS,CAAC;QAErE,IAAW,CAAA,WAAA,GAAG,SAAS;QACvB,IAAS,CAAA,SAAA,GAAG,IAAI,SAAS,CAAC;AACjC,YAAA,KAAK,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;YAC1B,GAAG,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC7C,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC9C,YAAA,UAAU,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;YAC/B,WAAW,EAAE,IAAI,WAAW,CAAC;gBAC3B,GAAG,EAAE,IAAI,CAAC,WAAW;aACtB,CAAC;AACF,YAAA,QAAQ,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC;YAChC,WAAW,EAAE,IAAI,WAAW,CAAC;gBAC3B,GAAG,EAAE,IAAI,CAAC,WAAW;aACtB,CAAC;AACF,YAAA,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;AAC1B,SAAA,CAAC;AACO,QAAA,IAAA,CAAA,aAAa,GAAkB;YACtC,QAAQ;YACR,MAAM;YACN,SAAS;YACT,MAAM;YACN,YAAY;YACZ,qBAAqB;SACtB;AAEgB,QAAA,IAAA,CAAA,OAAO,GAA4B;AAClD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,cAAc,EAAE,OAAO;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,cAAc,EAAE,KAAK;AACtB,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,MAAM;AACpB,gBAAA,cAAc,EAAE,MAAM;AACvB,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,aAAa;AAC3B,gBAAA,cAAc,EAAE,aAAa;AAC9B,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,uBAAuB;AACrC,gBAAA,cAAc,EAAE,uBAAuB;AACxC,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,UAAU;AACxB,gBAAA,cAAc,EAAE,UAAU;AAC3B,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,aAAa;AAC3B,gBAAA,cAAc,EAAE,aAAa;AAC9B,aAAA;SACF;QACO,IAAiC,CAAA,iCAAA,GAA4B,EAAE;AACtD,QAAA,IAAA,CAAA,mCAAmC,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAE7E,IAAuB,CAAA,uBAAA,GAAiC,IAAI,CAAC;aACnE,MAAM,CAAC,KAAK;AACZ,aAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK;YAC1B,GAAG,EAAE,MAAM,CAAC,YAAY;AACxB,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,WAAA,EAAc,MAAM,CAAC,cAAc,CAAA,CAAE,CAAC;YAC3E,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,YAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAC,CAAC;AACnD,YAAA,IAAI,MAAM,CAAC,IAAI,IAAI,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC;SACxC,CAAC,CAAC,CACJ,CACF;AAEM,QAAA,IAAA,CAAA,SAAS,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAC7D,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAC9B,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAC/B;QAEgB,IAA4B,CAAA,4BAAA,GAA2B,aAAa,CAAC;AACpF,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,mCAAmC;SACzC,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAC/E,GAAG,CAAC,2BAA2B,IAAG;AAChC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAChD,gBAAA,IACE,2BAA2B;AAC3B,oBAAA,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC;AAC1C,oBAAA,2BAA2B,CAAC,MAAM,GAAG,CAAC,EACtC;AACA,oBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,2BAA2B,CAAC;;AAE3D,aAAC,CAAC;AACJ,SAAC,CAAC,EACF,GAAG,CAAC,2BAA2B,IAAG;AAChC,YAAA,IAAI,CAAC,iCAAiC,GAAG,2BAA2B;AACpE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,WAAW,EAAE;SACnB,CAAC,CACH;AAEQ,QAAA,IAAA,CAAA,sCAAsC,GAC7C,aAAa,CAAC,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAC1F,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KACZ,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK;AACrB,YAAA,GAAG,MAAM;AACT,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG;YAC1B,QAAQ,EAAE,MAAM,CAAC;kBACb,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB;kBACtD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAC1D,YAAA,WAAW,EACT,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK;AAC3B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,CAAC;AACzD,iBAAC,MAAM,CAAC,WAAW,KAAK,MAAM;AAC5B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;gBAC3D,GAAG;AACL,YAAA,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACxC,CAAyB,sBAAA,EAAA,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CACrD;YACD,qBAAqB,EAAE,IAAI,CAAC,4BAA4B,CACtD,MAAM,CAAC,WAAW,CAAC,qBAAqB,CACzC;SACF,CAAC,CAAC,CACJ,CACF;QAEM,IAAmB,CAAA,mBAAA,GAAG,aAAa,CAAC;AAC3C,YAAA,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,SAAS,CAAC,YAAY;AAC5B,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,gBAAgB,CAAC,KACjB,gBAAgB,KAAK,QAAQ;YAC7B,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAC9E,EACD,SAAS,CAAC,KAAK,CAAC,CACjB;AAEQ,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CACzD,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EACxE,GAAG,CAAC,cAAc,IAAG;AACnB,YAAA,IAAI,cAAc,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE;gBACjE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,UAAU,EAAE,EAAE,EAAC,CAAC;;AAE/C,SAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,CACjB;AAEQ,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CACnD,GAAG,CACD,UAAU,IACR,CAAC,EACC,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AACrD,YAAA,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CACtD,CACJ,EACD,GAAG,CAAC,QAAQ,IAAG;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;AAC3C,YAAA,IAAI,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,EAAE,EAAC,CAAC;;AAEzC,SAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,CACjB;AAEQ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAClD,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACzE;AAEQ,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QAE3D,IAAc,CAAA,cAAA,GAAgC,aAAa,CAAC;AACnE,YAAA,IAAI,CAAC,0BAA0B;AAC/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAC9B;AACE,YAAA;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8BAA8B,CAAC;gBACtE,GAAG,EAAE,IAAI,CAAC,WAAW;AACtB,aAAA;YACD,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK;gBACjC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAA,CAAE,CAAC;AACvE,gBAAA,GAAG,EAAE,IAAI;AACV,aAAA,CAAC,CAAC;SACJ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;AACtB,YAAA,GAAG,IAAI;YACP,QAAQ,EAAE,KAAK,KAAK,yBAAyB;SAC9C,CAAC,CAAC,CACJ,CACF;AAEQ,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QAEvD,IAAU,CAAA,UAAA,GAAgC,aAAa,CAAC;AAC/D,YAAA,IAAI,CAAC,sBAAsB;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAC1B;AACE,YAAA;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8BAA8B,CAAC;gBACtE,GAAG,EAAE,IAAI,CAAC,WAAW;AACtB,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,CAAC;AAChE,gBAAA,GAAG,EAAE,KAAK;AACX,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,yBAAyB,CAAC;AACjE,gBAAA,GAAG,EAAE,MAAM;AACZ,aAAA;SACF,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;AACtB,YAAA,GAAG,IAAI;YACP,QAAQ,EAAE,KAAK,KAAK,qBAAqB;SAC1C,CAAC,CAAC,CACJ,CACF;QAEQ,IAAS,CAAA,SAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAC5F,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,KAAI;AACrC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC;AACrF,YAAA,OAAO,gBAAgB,KAAK,QAAQ,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI;AACtF,SAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,CACjB;AAEQ,QAAA,IAAA,CAAA,MAAM,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACjF,GAAG,CACD,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,KACrB,CAAC,EACC,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,WAAW;AAChD,YAAA,UAAU,CAAC,IAAI;YACf,QAAQ;AACR,aAAC,UAAU,CAAC,WAAW,CAAC,GAAG,KAAK,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAC7E,CACJ,EACD,SAAS,CAAC,KAAK,CAAC,CACjB;;AAUD,IAAA,SAAS,CAAC,SAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;AAEtC,QAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;YACvC,IAAI,CAAC,cAAc,EAAE;;AAChB,aAAA,IAAI,SAAS,KAAK,MAAM,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;;;IAI5C,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG7B,SAAS,CAAC,wBAAgC,EAAE,UAAsB,EAAA;QAChE,UAAU,CAAC,eAAe,EAAE;AAE5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC;;AAGrD,IAAA,qBAAqB,CAAC,wBAAgC,EAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC;QAE7D,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,YAAY,EAAE;AAEnB,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EACzF,GAAG,CAAC,MAAM,IAAI,CAAC,kCAAkC,EAAE,CAAC,EACpD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,aAAC,CAAC;AAEH,iBAAA,SAAS,EAAE;;;AAIlB,IAAA,YAAY,CAAC,wBAAgC,EAAA;QAC3C,OAAO,IAAI,CAAC,iCAAiC,CAAC,wBAAwB,CAAC,EAAE,GAAG;;AAG9E,IAAA,OAAO,CACL,wBAAgC,EAChC,MAAe,EACf,UAAsB,EACtB,QAAgB,EAAA;QAEhB,MAAM,2BAA2B,GAAG,CAAC,GAAG,IAAI,CAAC,iCAAiC,CAAC;AAC/E,QAAA,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,wBAAwB,CAAC;QAEjF,UAAU,CAAC,eAAe,EAAE;AAC5B,QAAA,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,SAAS,CACjE,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,mBAAmB,CAAC,GAAG,CAC/C;QACD,MAAM,qBAAqB,GAAG,EAAC,GAAG,2BAA2B,CAAC,qBAAqB,CAAC,EAAC;AACrF,QAAA,MAAM,yBAAyB,GAAG,2BAA2B,CAAC,MAAM,CAClE,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,mBAAmB,CAAC,GAAG,CAC/C;AACD,QAAA,MAAM,yBAAyB,GAAG,2BAA2B,CAAC,MAAM,GAAG,CAAC;QAExE,IAAI,yBAAyB,IAAI,MAAM,IAAI,qBAAqB,GAAG,CAAC,EAAE;AACpE,YAAA,MAAM,yBAAyB,GAAG,CAChC,EAAA,2BAA2B,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,GACzD,CAAA,CAAE;AACF,YAAA,MAAM,2BAA2B,GAAG,yBAAyB,CAAC,SAAS,CACrE,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,yBAAyB,CACjD;YACD,yBAAyB,CAAC,MAAM,CAAC,2BAA2B,EAAE,CAAC,EAAE,qBAAqB,CAAC;AACvF,YAAA,IAAI,CAAC,gCAAgC,CAAC,QAAQ,EAAE,yBAAyB,CAAC;;AACrE,aAAA,IACL,yBAAyB;AACzB,YAAA,CAAC,MAAM;AACP,YAAA,qBAAqB,GAAG,2BAA2B,CAAC,MAAM,EAC1D;AACA,YAAA,MAAM,sBAAsB,GAAG,CAC7B,EAAA,2BAA2B,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,GACzD,CAAA,CAAE;AACF,YAAA,MAAM,wBAAwB,GAAG,yBAAyB,CAAC,SAAS,CAClE,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,sBAAsB,CAC9C;YACD,yBAAyB,CAAC,MAAM,CAAC,wBAAwB,GAAG,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC;AACxF,YAAA,IAAI,CAAC,gCAAgC,CAAC,QAAQ,EAAE,yBAAyB,CAAC;;;IAI9E,kBAAkB,GAAA;QAChB,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,IAAG;AAChE,YAAA,IAAI,gBAAgB,KAAK,QAAQ,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE;;iBACX;gBACL,IAAI,CAAC,YAAY,EAAE;;AAEvB,SAAC,CAAC;;AAGJ,IAAA,eAAe,CAAC,KAAqC,EAAA;QACnD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;;AAG1C,IAAA,gBAAgB,CAAC,GAAkB,EAAA;QACjC,IAAI,CAAC,cAAc,EAAE;QAErB,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC;AACjD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,KAAI;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,iCAAiC,CAAC,IAAI,CACxD,YAAY,IAAI,YAAY,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAC7C;YACD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;YACrF,MAAM,iBAAiB,GAAG,aAAa,CAAC,SAAS,CAC/C,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC,IAAI,CAC7C;AACD,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC;AACxE,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC;YAClF,MAAM,UAAU,GAAG,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI;YACnE,MAAM,gBAAgB,GAAqB,EAAE;YAC7C,MAAM,gBAAgB,GAAG,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,UAAU;AAE/E,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAEvD,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC;;YAGjD,IAAI,UAAU,EAAE;gBACd,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACpC,oBAAA,gBAAgB,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAC,CAAC;AACtD,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;;iBACzC;AACL,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;;AAGtD,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;gBACxB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;;AAEzB,gBAAA,WAAW,EAAE,EAAC,GAAG,YAAY,EAAC;;AAE9B,gBAAA,WAAW,EAAE,QAAQ,GAAG,EAAC,GAAG,QAAQ,EAAC,GAAG,EAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAC;gBACzD,IAAI,gBAAgB,IAAI;AACtB,oBAAA,UAAU,EAAE,gBAAgB;iBAC7B,CAAC;AACH,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACxB,SAAC,CAAC;;IAGE,gCAAgC,CACtC,QAAgB,EAChB,UAAmC,EAAA;QAEnC,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC;AACF,aAAA,oBAAoB,CAAC,QAAQ,EAAE,UAAU;AACzC,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,kCAAkC,EAAE;YACzC,YAAY,CAAC,OAAO,CAAC,CAAA,YAAA,EAAe,QAAQ,CAAE,CAAA,EAAE,IAAI,CAAC;AACvD,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,SAAC,CAAC;AAEH,aAAA,SAAS,EAAE;;IAGR,SAAS,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;AAEtC,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,QAAQ,IAChB,IAAI,CAAC,uBAAuB,CAAC,cAAc,CACzC,QAAQ,EACR,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CACtC,CACF,EACD,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,kCAAkC,EAAE;AAC3C,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,SAAC,CAAC;AAEH,aAAA,SAAS,EAAE;;AAGR,IAAA,4BAA4B,CAAC,qBAA4C,EAAA;AAC/E,QAAA,IAAI,qBAAqB,EAAE,UAAU,EAAE;YACrC,OAAO,qBAAqB,CAAC,UAAU;;AAClC,aAAA,IAAI,qBAAqB,EAAE,IAAI,EAAE;AACtC,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AAClE,gBAAA,MAAM,kBAAkB,GAAG,CAAG,EAAA,IAAI,CAAK,EAAA,EAAA,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE;gBACzE,IAAI,CAAC,GAAG,EAAE;oBACR,OAAO,CAAA,EAAG,kBAAkB,CAAA,CAAE;;AAGhC,gBAAA,OAAO,CAAG,EAAA,GAAG,CAAK,EAAA,EAAA,kBAAkB,EAAE;aACvC,EAAE,EAAE,CAAC;;AAGR,QAAA,OAAO,GAAG;;IAGJ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC;aACF,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,QAAQ,IAChB,IAAI,CAAC,uBAAuB,CAAC,aAAa,CACxC,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EACxB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACjD,CACF,EACD,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,kCAAkC,EAAE;AAC3C,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,SAAC,CAAC;AAEH,aAAA,SAAS,EAAE;;IAGR,WAAW,CACjB,QAAgB,EAChB,2BAAoD,EAAA;QAEpD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAG,EAAA,QAAQ,CAAO,KAAA,CAAA,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,IAAI,CAAC,SAAS,CAAC,sBAAsB,CACnC,+BAA+B;AAC7B,YAAA,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC3E,CACF;;IAGK,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;;IAGlB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;;IAGjB,kCAAkC,GAAA;AACxC,QAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7C,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QACtB,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC;AACjD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,KAAI;AACxC,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;;AAEvC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,EAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;;AAEnC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC;AACxD,SAAC,CAAC;;AAGE,IAAA,qBAAqB,CAAC,SAAc,EAAA;QAC1C,OAAO;YACL,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,WAAW,IAAI;AACrD,gBAAA,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG;aACxC,CAAC;AACF,YAAA,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;AACpB,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG;AAChC,gBAAA,qBAAqB,EAAE;AACrB,oBAAA,IAAI,SAAS,CAAC,UAAU,IAAI,EAAC,UAAU,EAAE,SAAS,CAAC,UAAU,EAAC,CAAC;oBAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,wBAAA,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI;AAC3B,wBAAA,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,EAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAC,CAAC,EAAE,EAAE,CAAC;qBACnF,CAAC;AACL,iBAAA;AACF,aAAA;SACF;;+GAjkBQ,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,gOCpDjD,y5VAoTA,EAAA,MAAA,EAAA,CAAA,6rCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,oCAAA,EAAA,2BAAA,EAAA,6CAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,IAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDhQa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,wCAAwC,EAAA,QAAA,EAAA,y5VAAA,EAAA,MAAA,EAAA,CAAA,6rCAAA,CAAA,EAAA;gNAKd,yBAAyB,EAAA,CAAA;sBAA5D,SAAS;uBAAC,gBAAgB;;;AErD7B;;;;;;;;;;;;;;AAcG;MAsCU,yCAAyC,CAAA;IAwLpD,WACmB,CAAA,uBAAgD,EAChD,KAAqB,EACrB,gBAAkC,EAClC,aAA4B,EAC5B,SAAuB,EAAA;QAJvB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAS,CAAA,SAAA,GAAT,SAAS;AA3LnB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,SAAS,CAAC;AACtD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAC7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAS,QAAQ,CAAC;AACzD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAW;AACzC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QAEhD,IAAW,CAAA,WAAA,GAAG,SAAS;QACvB,IAAS,CAAA,SAAA,GAAG,IAAI,SAAS,CAAC;AACjC,YAAA,KAAK,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;YAC1B,GAAG,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC7C,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC9C,QAAQ,EAAE,IAAI,WAAW,CAAC;gBACxB,GAAG,EAAE,IAAI,CAAC,WAAW;aACtB,CAAC;YACF,SAAS,EAAE,IAAI,WAAW,CAAC;gBACzB,GAAG,EAAE,IAAI,CAAC,WAAW;aACtB,CAAC;AACH,SAAA,CAAC;AACe,QAAA,IAAA,CAAA,OAAO,GAA4B;AAClD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,cAAc,EAAE,OAAO;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,cAAc,EAAE,KAAK;AACtB,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,MAAM;AACpB,gBAAA,cAAc,EAAE,MAAM;AACvB,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,UAAU;AACxB,gBAAA,cAAc,EAAE,UAAU;AAC3B,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,WAAW;AACzB,gBAAA,cAAc,EAAE,WAAW;AAC5B,aAAA;SACF;AACQ,QAAA,IAAA,CAAA,UAAU,GAA+B;YAChD,MAAM;YACN,QAAQ;YACR,MAAM;YACN,UAAU;YACV,SAAS;SACV;AACgB,QAAA,IAAA,CAAA,WAAW,GAAgC,CAAC,QAAQ,EAAE,OAAO,CAAC;QACvE,IAAsC,CAAA,sCAAA,GAAuB,EAAE;AACtD,QAAA,IAAA,CAAA,wCAAwC,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAElF,IAAuB,CAAA,uBAAA,GAAiC,IAAI,CAAC;aACnE,MAAM,CAAC,KAAK;AACZ,aAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK;YAC1B,GAAG,EAAE,MAAM,CAAC,YAAY;AACxB,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,MAAM,CAAC,cAAc,CAAA,CAAE,CAAC;YACrF,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,YAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAC,CAAC;SACpD,CAAC,CAAC,CACJ,CACF;AAEM,QAAA,IAAA,CAAA,SAAS,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAC7D,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAC9B,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAC/B;QAEgB,IAAiC,CAAA,iCAAA,GAA2B,aAAa,CAAC;AACzF,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,wCAAwC;SAC9C,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAChF,GAAG,CAAC,gCAAgC,IAAG;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAChD,gBAAA,IACE,gCAAgC;AAChC,oBAAA,KAAK,CAAC,OAAO,CAAC,gCAAgC,CAAC;AAC/C,oBAAA,gCAAgC,CAAC,MAAM,GAAG,CAAC,EAC3C;AACA,oBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,gCAAgC,CAAC;;AAEhE,aAAC,CAAC;AACJ,SAAC,CAAC,EACF,GAAG,CAAC,gCAAgC,IAAG;AACrC,YAAA,IAAI,CAAC,sCAAsC,GAAG,gCAAgC;AAC9E,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,WAAW,EAAE;SACnB,CAAC,CACH;QAEQ,IAA2C,CAAA,2CAAA,GAClD,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,iCAAiC;AACtC,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KACZ,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK;AACrB,YAAA,GAAG,MAAM;AACT,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG;AAC1B,YAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACrC,CAAgB,aAAA,EAAA,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,CAClD;AACD,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACtC,CAAwB,qBAAA,EAAA,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,CAC3D;SACF,CAAC,CAAC,CACJ,CACF;AAEM,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QAE3D,IAAc,CAAA,cAAA,GAAgC,aAAa,CAAC;AACnE,YAAA,IAAI,CAAC,0BAA0B;AAC/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAC9B;AACE,YAAA;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,4BAA4B,CAAC;gBACpE,GAAG,EAAE,IAAI,CAAC,WAAW;AACtB,aAAA;YACD,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK;gBAC9B,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAA,CAAE,CAAC;AAC9D,gBAAA,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE;AACxB,aAAA,CAAC,CAAC;SACJ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;AACtB,YAAA,GAAG,IAAI;YACP,QAAQ,EAAE,KAAK,KAAK,yBAAyB;SAC9C,CAAC,CAAC,CACJ,CACF;AAEQ,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QAC5D,IAAe,CAAA,eAAA,GAAgC,aAAa,CAAC;AACpE,YAAA,IAAI,CAAC,2BAA2B;AAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,0BAA0B,CAAC,KAC/B;AACE,YAAA;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,6BAA6B,CAAC;gBACrE,GAAG,EAAE,IAAI,CAAC,WAAW;AACtB,aAAA;YACD,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,KAAK;gBAC/B,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAE,CAAC;AACtE,gBAAA,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE;AACxB,aAAA,CAAC,CAAC;SACJ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;AACtB,YAAA,GAAG,IAAI;YACP,QAAQ,EAAE,KAAK,KAAK,0BAA0B;SAC/C,CAAC,CAAC,CACJ,CACF;QAEQ,IAAS,CAAA,SAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAC5F,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,KAAI;AACrC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sCAAsC,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC;AAC1F,YAAA,OAAO,gBAAgB,KAAK,QAAQ,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI;AACtF,SAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,CACjB;QAEQ,IAAM,CAAA,MAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACjF,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,EAChE,SAAS,CAAC,KAAK,CAAC,CACjB;;AAUD,IAAA,SAAS,CAAC,SAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;AAEtC,QAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;YACvC,IAAI,CAAC,cAAc,EAAE;;AAChB,aAAA,IAAI,SAAS,KAAK,MAAM,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;;;IAI5C,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG7B,SAAS,CAAC,uBAA+B,EAAE,UAAsB,EAAA;QAC/D,UAAU,CAAC,eAAe,EAAE;AAE5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC;;AAGpD,IAAA,qBAAqB,CAAC,uBAA+B,EAAA;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC;QAE5D,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,YAAY,EAAE;AAEnB,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,QAAQ,IAChB,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CACpE,EACD,GAAG,CAAC,MAAM,IAAI,CAAC,uCAAuC,EAAE,CAAC,EACzD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,aAAC,CAAC;AAEH,iBAAA,SAAS,EAAE;;;AAIlB,IAAA,YAAY,CAAC,uBAA+B,EAAA;QAC1C,OAAO,IAAI,CAAC,sCAAsC,CAAC,uBAAuB,CAAC,EAAE,GAAG;;AAGlF,IAAA,OAAO,CACL,uBAA+B,EAC/B,MAAe,EACf,UAAsB,EACtB,QAAgB,EAAA;QAEhB,MAAM,gCAAgC,GAAG,CAAC,GAAG,IAAI,CAAC,sCAAsC,CAAC;AACzF,QAAA,MAAM,kBAAkB,GAAG,gCAAgC,CAAC,uBAAuB,CAAC;QAEpF,UAAU,CAAC,eAAe,EAAE;AAC5B,QAAA,MAAM,oBAAoB,GAAG,gCAAgC,CAAC,SAAS,CACrE,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,CAAC,GAAG,CAC9C;QACD,MAAM,oBAAoB,GAAG,EAAC,GAAG,gCAAgC,CAAC,oBAAoB,CAAC,EAAC;AACxF,QAAA,MAAM,uBAAuB,GAAG,gCAAgC,CAAC,MAAM,CACrE,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,CAAC,GAAG,CAC9C;AACD,QAAA,MAAM,wBAAwB,GAAG,gCAAgC,CAAC,MAAM,GAAG,CAAC;QAE5E,IAAI,wBAAwB,IAAI,MAAM,IAAI,oBAAoB,GAAG,CAAC,EAAE;AAClE,YAAA,MAAM,wBAAwB,GAAG,CAC/B,EAAA,gCAAgC,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAC7D,CAAA,CAAE;AACF,YAAA,MAAM,0BAA0B,GAAG,uBAAuB,CAAC,SAAS,CAClE,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,wBAAwB,CAChD;YACD,uBAAuB,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,EAAE,oBAAoB,CAAC;AACnF,YAAA,IAAI,CAAC,qCAAqC,CAAC,QAAQ,EAAE,uBAAuB,CAAC;;AACxE,aAAA,IACL,wBAAwB;AACxB,YAAA,CAAC,MAAM;AACP,YAAA,oBAAoB,GAAG,gCAAgC,CAAC,MAAM,EAC9D;AACA,YAAA,MAAM,sBAAsB,GAAG,CAC7B,EAAA,gCAAgC,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAC7D,CAAA,CAAE;AACF,YAAA,MAAM,wBAAwB,GAAG,uBAAuB,CAAC,SAAS,CAChE,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,sBAAsB,CAC9C;YACD,uBAAuB,CAAC,MAAM,CAAC,wBAAwB,GAAG,CAAC,EAAE,CAAC,EAAE,oBAAoB,CAAC;AACrF,YAAA,IAAI,CAAC,qCAAqC,CAAC,QAAQ,EAAE,uBAAuB,CAAC;;;IAIjF,oBAAoB,GAAA;QAClB,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,IAAG;AAChE,YAAA,IAAI,gBAAgB,KAAK,QAAQ,EAAE;gBACjC,IAAI,CAAC,cAAc,EAAE;;iBAChB;gBACL,IAAI,CAAC,iBAAiB,EAAE;;AAE5B,SAAC,CAAC;;AAGJ,IAAA,gBAAgB,CAAC,GAAkB,EAAA;QACjC,IAAI,CAAC,cAAc,EAAE;QAErB,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC;AACtD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC,KAAI;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAC7D,YAAY,IAAI,YAAY,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAC7C;AACD,YAAA,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,QAAQ,CAAC;AAC7E,YAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,QAAQ,CAAC;AAEvF,YAAA,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,SAAS,CAAC;AAChF,YAAA,MAAM,kBAAkB,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,SAAS,CAAC;AAE1F,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACvD,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAEzD,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;gBACxB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;;AAEjB,gBAAA,QAAQ,EAAE,EAAC,GAAG,YAAY,EAAC;;AAE3B,gBAAA,SAAS,EAAE,EAAC,GAAG,aAAa,EAAC;AAC9B,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACxB,SAAC,CAAC;;IAGE,qCAAqC,CAC3C,QAAgB,EAChB,WAA+B,EAAA;QAE/B,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC;AACF,aAAA,eAAe,CAAC,QAAQ,EAAE,WAAW;AACrC,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,uCAAuC,EAAE;YAC9C,YAAY,CAAC,OAAO,CAAC,CAAA,kBAAA,EAAqB,QAAQ,CAAE,CAAA,EAAE,IAAI,CAAC;AAC7D,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,SAAC,CAAC;AAEH,aAAA,SAAS,EAAE;;IAGR,cAAc,GAAA;AACpB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;AAEtC,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,QAAQ,IAChB,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAC1C,QAAQ,EACR,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CACtC,CACF,EACD,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,uCAAuC,EAAE;AAChD,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,SAAC,CAAC;AAEH,aAAA,SAAS,EAAE;;IAGR,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC;aACF,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,QAAQ,IAChB,IAAI,CAAC,uBAAuB,CAAC,cAAc,CACzC,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EACxB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACjD,CACF,EACD,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,uCAAuC,EAAE;AAChD,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,SAAC,CAAC;AAEH,aAAA,SAAS,EAAE;;IAGR,WAAW,CAAC,QAAgB,EAAE,4BAAgD,EAAA;QACpF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAG,EAAA,QAAQ,CAAO,KAAA,CAAA,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,IAAI,CAAC,SAAS,CAAC,sBAAsB,CACnC,+BAA+B;AAC7B,YAAA,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC5E,CACF;;IAGK,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;;IAGlB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;;IAGjB,uCAAuC,GAAA;AAC7C,QAAA,IAAI,CAAC,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGlD,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC;;AAGlC,IAAA,qBAAqB,CAAC,SAAc,EAAA;QAC1C,OAAO;YACL,GAAG,EAAE,SAAS,CAAC,GAAG;AAClB,YAAA,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;AACpB,YAAA,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG;AAChC,YAAA,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG;SACnC;;+GAjbQ,yCAAyC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yCAAyC,sOCpDtD,8zSAuQA,EAAA,MAAA,EAAA,CAAA,6rCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDnNa,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBANrD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,8CAA8C,EAAA,QAAA,EAAA,8zSAAA,EAAA,MAAA,EAAA,CAAA,6rCAAA,CAAA,EAAA;gNAKpB,yBAAyB,EAAA,CAAA;sBAA5D,SAAS;uBAAC,gBAAgB;;;AErD7B;;;;;;;;;;;;;;AAcG;MAmBU,wCAAwC,CAAA;IAoBnD,WACmB,CAAA,qBAAmD,EACnD,uBAAgD,EAChD,KAAqB,EACrB,aAA4B,EAC5B,UAAsB,EACtB,gBAAkC,EAAA;QALlC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QApB1B,IAAO,CAAA,OAAA,GAAG,OAAO;AAEjB,QAAA,IAAA,CAAA,SAAS,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAC7D,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAC9B,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CACnB;AAEQ,QAAA,IAAA,CAAA,OAAO,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC1F,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAC3EI,KAAG,CAAC,MAAM,IAAG;YACX,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC;SACvD,CAAC,CACH;AAUC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,IAAI,IAAI;;IAGxF,QAAQ,GAAA;QACN,IAAI,CAAC,0BAA0B,EAAE;;AAGnC,IAAA,oBAAoB,CAAC,GAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG;;IAGlC,0BAA0B,GAAA;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAC1D,KAAK,KAAK,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CACnC;;IAGH,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO;AAC5C,QAAA,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE;;+GA/C1B,wCAAwC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAV,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wCAAwC,uGCjCrD,ujGA0FA,EAAA,MAAA,EAAA,CAAA,6MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oCAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yCAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDzDa,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBANpD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,4CAA4C,EAAA,QAAA,EAAA,ujGAAA,EAAA,MAAA,EAAA,CAAA,6MAAA,CAAA,EAAA;;;AE7BxD;;;;;;;;;;;;;;AAcG;MA2BU,oCAAoC,CAAA;IAiB/C,WACmB,CAAA,qBAAmD,EACnD,uBAAgD,EAChD,qBAA4C,EAC5C,uBAAgD,EAChD,YAA0B,EAC1B,gBAAkC,EAAA;QALlC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAnB1B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAE;AACtB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AACxC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC/C,QAAA,IAAA,CAAA,SAAS,GAAwB,IAAI,CAAC,YAAY,CAAC,aAAa;AAExD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAO,SAAS,CAAC;;IAgB7D,eAAe,GAAA;QACb,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,oBAAoB,EAAE;;IAG7B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;AACpC,QAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;;IAGrC,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;;IAGhC,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,EAAE;;AAGb,IAAA,OAAO,CAAC,IAAU,EAAA;QAChB,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGvB,gBAAgB,GAAA;QACd,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,IAAG;AAC9D,YAAA,IAAI,CAAC;iBACF,YAAY,CAAC,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAC;iBAClD,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;AACpC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE;AACxC,aAAC,CAAC;YACJ,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,IAAI,EAAE;AACb,SAAC,CAAC;;AAGI,IAAA,qBAAqB,CAAC,SAAiB,EAAA;QAC7C,IAAI,CAAC,sBAAsB,EAAE;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACjF,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,SAAC,CAAC;;IAGI,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;;;IAIhC,oBAAoB,GAAA;QAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAG;YAClD,IAAI,IAAI,EAAE;AACR,gBAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAE/B,gBAAA,MAAM,CAAC,SAAS,GAAG,MAAK;oBACtB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvC,oBAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE;AACtC,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;;yBACxB;wBACL,IAAI,CAAC,eAAe,EAAE;;AAE1B,iBAAC;AAED,gBAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;;iBAClB;gBACL,IAAI,CAAC,eAAe,EAAE;;AAE1B,SAAC,CAAC;;IAGI,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC3E,IAAI,CAAC,IAAI,EAAE;YAEX,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,aAAa,EAAE;AACtB,SAAC,CAAC;;IAGI,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC3E,IAAI,CAAC,IAAI,EAAE;AACb,SAAC,CAAC;;IAGI,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,IAAG;AACxE,YAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAC1B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC;;AAEjE,SAAC,CAAC;;IAGI,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;;IAGd,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;;IAGnB,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGhB,IAAA,qBAAqB,CAAC,MAAc,EAAA;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;YAClD,OAAO;YACP,qCAAqC;YACrC,cAAc;YACd,mBAAmB;YACnB,kCAAkC;YAClC,gBAAgB;AACjB,SAAA,CAAC;QACF,MAAM,uBAAuB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CACrD,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK,CACxD;AACD,QAAA,IAAI,OAAO,IAAI,uBAAuB,EAAE;AACtC,YAAA,OAAO,IAAI;;AACN,aAAA,IAAI,OAAO,IAAI,CAAC,uBAAuB,EAAE;YAC9C,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,qBAAqB,CAAC,wCAAwC,CAAC;AACpE,YAAA,OAAO,KAAK;;AACP,aAAA,IAAI,CAAC,OAAO,IAAI,uBAAuB,EAAE;YAC9C,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,qBAAqB,CAAC,qCAAqC,CAAC;AACjE,YAAA,OAAO,KAAK;;;IAIhB,cAAc,CAAC,GAAW,EAAE,YAA8B,EAAA;QACxD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAChC,QAAA,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAGjD,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGnB,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;+GA9KjB,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhB,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,uRCzCjD,u4DA6DA,EAAA,MAAA,EAAA,CAAA,+sBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDpBa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,wCAAwC,EAAA,QAAA,EAAA,u4DAAA,EAAA,MAAA,EAAA,CAAA,+sBAAA,CAAA,EAAA;2QAKR,2BAA2B,EAAA,CAAA;sBAApE,SAAS;uBAAC,6BAA6B;gBAC/B,WAAW,EAAA,CAAA;sBAAnB;;;AE3CH;;;;;;;;;;;;;;AAcG;MAiBU,6BAA6B,CAAA;AAcxC,IAAA,WAAA,CACmB,uBAAgD,EAChD,qBAAmD,EACnD,gBAAkC,EAC3C,MAAc,EAAA;QAHL,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QACzB,IAAM,CAAA,MAAA,GAAN,MAAM;AAjBP,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAE7C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAsC,EAAE,CAAC;QAEtE,IAAqB,CAAA,qBAAA,GAAkC,aAAa,CAAC;AAC5E,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,qBAAqB,CAAC,QAAQ;AACpC,SAAA,CAAC,CAAC,IAAI,CACLF,KAAG,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,EAC3BO,WAAS,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,CAAC,EAC7DP,KAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACrC;;IASD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC;AAC9C,QAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE;;IAGxC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,QAAQ,CAAC;AACjD,QAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE;;AAGxC,IAAA,iBAAiB,CAAC,gBAA4B,EAAA;AAC5C,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,2BAA2B,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;;IAGlE,SAAS,GAAA;AACf,QAAA,MAAM,IAAI,GAAkB,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;AACf,YAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAA2B,wBAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAE,CAAA;YAC3E,GAAG;SACJ,CAAC,CAAC,CACJ;;+GA1CQ,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,2FC/B1C,iiFAgEA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,8BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oCAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjCa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,gCAAgC,EAAA,QAAA,EAAA,iiFAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;;;AE3B5C;;;;;;;;;;;;;;AAcG;AAUH,MAAM,MAAM,GAAW;AACrB,IAAA;AACE,QAAA,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,SAAS,EAAE,6BAA6B;QACxC,IAAI,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAC;AAC9C,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,SAAS,EAAE,wCAAwC;AACnD,QAAA,IAAI,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,IAAI,EAAC;AACpE,KAAA;CACF;MAOY,6BAA6B,CAAA;+GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAA7B,6BAA6B,EAAA,OAAA,EAAA,CAJ9B,YAAY,EAAAc,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CACZ,YAAY,CAAA,EAAA,CAAA,CAAA;gHAGX,6BAA6B,EAAA,OAAA,EAAA,CAJ9B,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC3C,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACtD,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,EAAE;AACjB,iBAAA;;;AC3CD;;;;;;;;;;;;;;AAcG;MAiFU,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,iBAtC/B,6BAA6B;YAC7B,wCAAwC;YACxC,+BAA+B;YAC/B,oCAAoC;YACpC,8BAA8B;YAC9B,oCAAoC;AACpC,YAAA,yCAAyC,aAGzC,YAAY;YACZ,cAAc;YACd,YAAY;YACZ,eAAe;YACf,6BAA6B;YAC7B,YAAY;YACZ,UAAU;YACV,WAAW;YACX,YAAY;YACZC,aAAiB;YACjBC,YAAkB;YAClB,iBAAiB;YACjB,sBAAsB;YACtBC,WAAiB;YACjB,kBAAkB;YAClB,aAAa;YACb,cAAc;YACd,cAAc;YACd,UAAU;YACV,UAAU;YACV,mBAAmB;YACnB,uBAAuB;YACvB,aAAa;YACbC,aAAW;YACX,wBAAwB;YACxB,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAIP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YA7B/B,YAAY;YACZ,cAAc;YACd,YAAY;YACZ,eAAe;YACf,6BAA6B;YAC7B,YAAY;YACZ,UAAU;YACV,WAAW;YACX,YAAY;YACZH,aAAiB;YACjBC,YAAkB;YAClB,iBAAiB;YACjB,sBAAsB;YACtBC,WAAiB;YACjB,kBAAkB;YAClB,aAAa;YACb,cAAc;YACd,cAAc;YACd,UAAU;YACV,UAAU;YACV,mBAAmB;YACnB,uBAAuB;YACvB,aAAa;YACbC,aAAW;YAEX,gBAAgB,CAAA,EAAA,CAAA,CAAA;;4FAIP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAxClC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,6BAA6B;wBAC7B,wCAAwC;wBACxC,+BAA+B;wBAC/B,oCAAoC;wBACpC,8BAA8B;wBAC9B,oCAAoC;wBACpC,yCAAyC;AAC1C,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd,YAAY;wBACZ,eAAe;wBACf,6BAA6B;wBAC7B,YAAY;wBACZ,UAAU;wBACV,WAAW;wBACX,YAAY;wBACZH,aAAiB;wBACjBC,YAAkB;wBAClB,iBAAiB;wBACjB,sBAAsB;wBACtBC,WAAiB;wBACjB,kBAAkB;wBAClB,aAAa;wBACb,cAAc;wBACd,cAAc;wBACd,UAAU;wBACV,UAAU;wBACV,mBAAmB;wBACnB,uBAAuB;wBACvB,aAAa;wBACbC,aAAW;wBACX,wBAAwB;wBACxB,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA;;;AC9FD;;;;;;;;;;;;;;AAcG;AAEH;;AAEG;;AClBH;;AAEG;;;;"}
1
+ {"version":3,"file":"valtimo-object-management.mjs","sources":["../../../../projects/valtimo/object-management/src/lib/models/object-management.model.ts","../../../../projects/valtimo/object-management/src/lib/services/object-management.service.ts","../../../../projects/valtimo/object-management/src/lib/services/tab.enum.ts","../../../../projects/valtimo/object-management/src/lib/services/object-management-state.service.ts","../../../../projects/valtimo/object-management/src/lib/services/tab.service.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-modal/object-management-modal.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-modal/object-management-modal.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/object-management-detail-container.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/object-management-detail-container.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-upload-modal/object-management-upload-modal.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-upload-modal/object-management-upload-modal.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-list/object-management-list.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-list/object-management-list.component.html","../../../../projects/valtimo/object-management/src/lib/object-management-routing.module.ts","../../../../projects/valtimo/object-management/src/lib/object-management.module.ts","../../../../projects/valtimo/object-management/src/public-api.ts","../../../../projects/valtimo/object-management/src/valtimo-object-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 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\ninterface Objecttype {\n id: string;\n title: string;\n objecttypenApiPluginConfigurationId: string;\n objecttypeId: string;\n objecttypeVersion: number;\n objectenApiPluginConfigurationId: string;\n showInDataMenu: boolean;\n formDefinitionView?: string;\n formDefinitionEdit?: string;\n}\n\nexport interface SearchListColumn {\n ownerId?: string;\n title: string;\n key: string;\n path: string;\n displayType: DisplayType;\n sortable: boolean;\n defaultSort: string;\n}\n\nexport interface SearchColumn {\n propertyName: string;\n translationKey: string;\n sortable?: boolean;\n viewType?: string;\n default?: boolean | string;\n enum?: Array<string> | {[key: string]: string};\n title?: string;\n format?: string;\n key?: string;\n}\n\nexport interface SearchListColumnView {\n title: string;\n key: string;\n path: string;\n displayType: string;\n displayTypeParameters: string;\n sortable: boolean;\n defaultSort: string;\n}\n\nexport interface DisplayType {\n type: string;\n displayTypeParameters: DisplayTypeParameters;\n}\n\nexport interface DisplayTypeParameters {\n enum?: {\n [key: string]: string;\n };\n dateFormat?: string;\n}\n\ntype ObjecttypeKeys = keyof Objecttype;\n\nexport {Objecttype, ObjecttypeKeys};\n","/*\n * Copyright 2015-2025 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\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService, SearchField} from '@valtimo/shared';\nimport {Objecttype, SearchListColumn} from '../models/object-management.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectManagementService {\n private valtimoEndpointUri: string;\n\n constructor(\n private http: HttpClient,\n configService: ConfigService\n ) {\n this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n }\n\n public getAllObjects(): Observable<Objecttype[]> {\n return this.http.get<Objecttype[]>(\n `${this.valtimoEndpointUri}v1/object/management/configuration`\n );\n }\n\n public getObjectById(id: string): Observable<Objecttype> {\n return this.http.get<Objecttype>(\n `${this.valtimoEndpointUri}v1/object/management/configuration/${id}`\n );\n }\n\n public createObject(payload: Objecttype): Observable<Objecttype> {\n return this.http.post<Objecttype>(\n `${this.valtimoEndpointUri}v1/object/management/configuration`,\n payload\n );\n }\n\n public editObject(payload: Objecttype): Observable<Objecttype> {\n return this.http.put<Objecttype>(\n `${this.valtimoEndpointUri}v1/object/management/configuration`,\n payload\n );\n }\n\n getSearchList(ownerId: string): Observable<Array<SearchListColumn>> {\n return this.http.get<Array<SearchListColumn>>(\n `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}`\n );\n }\n\n postSearchList(ownerId: string, request: SearchListColumn): Observable<SearchListColumn> {\n return this.http.post<SearchListColumn>(\n `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}`,\n {...request, ownerId}\n );\n }\n\n putSearchList(\n ownerId: string,\n columnKey: string,\n request: SearchListColumn\n ): Observable<Array<SearchListColumn>> {\n return this.http.put<Array<SearchListColumn>>(\n `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}/${columnKey}`,\n {...request, ownerId}\n );\n }\n\n putSearchListColumns(\n ownerId: string,\n request: Array<SearchListColumn>\n ): Observable<Array<SearchListColumn>> {\n return this.http.put<Array<SearchListColumn>>(\n `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}/search-list-columns`,\n [...request]\n );\n }\n\n deleteSearchList(ownerId: string, columnKey: string): Observable<SearchListColumn> {\n return this.http.delete<SearchListColumn>(\n `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}/${columnKey}`\n );\n }\n\n getSearchField(ownerId: string): Observable<Array<SearchField>> {\n return this.http.get<Array<SearchField>>(\n `${this.valtimoEndpointUri}v1/search/field/Legacy/${ownerId}`\n );\n }\n\n postSearchField(ownerId: string, request: SearchField): Observable<SearchField> {\n return this.http.post<SearchField>(`${this.valtimoEndpointUri}v1/search/field/${ownerId}`, {\n ...request,\n ownerId,\n });\n }\n\n putSearchField(\n ownerId: string,\n key: string,\n request: SearchField\n ): Observable<Array<SearchField>> {\n return this.http.put<Array<SearchField>>(\n `${this.valtimoEndpointUri}v1/search/field/${ownerId}/${key}`,\n {...request, ownerId}\n );\n }\n\n putSearchFields(ownerId: string, request: Array<SearchField>): Observable<Array<SearchField>> {\n return this.http.put<Array<SearchField>>(\n `${this.valtimoEndpointUri}v1/search/field/${ownerId}/fields`,\n [...request]\n );\n }\n\n deleteSearchField(ownerId: string, key: string): Observable<SearchField> {\n return this.http.delete<SearchField>(\n `${this.valtimoEndpointUri}v1/search/field/Legacy/${ownerId}/${key}`\n );\n }\n}\n","/*\n * Copyright 2015-2025 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\nexport enum TabEnum {\n GENERAL = 'general',\n LIST = 'list',\n SEARCH = 'search',\n}\n","/*\n * Copyright 2015-2025 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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectManagementStateService {\n private readonly _showModal$ = new Subject();\n private readonly _hideModal$ = new Subject();\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n private readonly _modalType$ = new BehaviorSubject<any>('add');\n\n constructor() {}\n\n get showModal$(): Observable<any> {\n return this._showModal$.asObservable();\n }\n\n get hideModal$(): Observable<any> {\n return this._hideModal$.asObservable();\n }\n\n get refresh$(): Observable<any> {\n return this._refresh$.asObservable();\n }\n\n get modalType$(): Observable<any> {\n return this._modalType$.asObservable();\n }\n\n showModal(): void {\n this._showModal$.next(null);\n }\n\n hideModal(): void {\n this._hideModal$.next(null);\n }\n\n refresh(): void {\n this._refresh$.next(null);\n }\n\n setModalType(type: any): void {\n this._modalType$.next(type);\n }\n}\n","/*\n * Copyright 2015-2025 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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TabEnum} from './tab.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabService {\n private _currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.GENERAL);\n\n public get currentTab$(): Observable<TabEnum> {\n return this._currentTab$.asObservable();\n }\n\n public set currentTab(tab: TabEnum) {\n this._currentTab$.next(tab);\n }\n}\n","/*\n * Copyright 2015-2025 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\nimport {AfterViewInit, Component, Input, OnDestroy, ViewChild} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {PluginConfiguration, PluginManagementService} from '@valtimo/plugin';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {Objecttype} from '../../models/object-management.model';\nimport {FormService} from '@valtimo/form';\nimport {VModalComponent, ModalService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-modal',\n templateUrl: './object-management-modal.component.html',\n styleUrls: ['./object-management-modal.component.scss'],\n})\nexport class ObjectManagementModalComponent implements AfterViewInit, OnDestroy {\n @ViewChild('objectManagementModal') objectManagementModal: VModalComponent;\n @Input() prefillObject$!: Observable<Objecttype>;\n\n readonly disabled$!: Observable<boolean>;\n readonly valid$ = new BehaviorSubject<boolean>(false);\n readonly showForm$: Observable<boolean> = this.modalService.modalVisible$;\n readonly modalType$: Observable<any> = this.objectManagementState.modalType$;\n readonly formData$ = new BehaviorSubject<any>(null);\n\n showSubscription!: Subscription;\n hideSubscription!: Subscription;\n\n readonly selectedObjecttype$ = new BehaviorSubject<string | null>(null);\n\n readonly formDefinitions$: Observable<Array<{id: string; text: string}>> = this.formService\n .getAllUnlinkedFormDefinitions()\n .pipe(\n map(results =>\n results?.map(configuration => ({\n id: configuration.name,\n text: configuration.name,\n }))\n )\n );\n\n readonly configurationInstances$: Observable<Array<PluginConfiguration>> =\n this.pluginManagementService\n .getAllPluginConfigurations()\n .pipe(map(configurations => configurations));\n\n readonly objectsApiConfigurations$: Observable<any> = this.configurationInstances$.pipe(\n map(configurations => {\n const filteredObjectsApiConfigurations = configurations.filter(\n configuration => configuration?.pluginDefinition?.key === 'objectenapi'\n );\n return filteredObjectsApiConfigurations.map(configuration => ({\n id: configuration.id,\n text: configuration.title,\n }));\n })\n );\n\n readonly objecttypesApiConfigurations$: Observable<any> = this.configurationInstances$.pipe(\n map(configurations => {\n const filteredObjecttypesApiConfigurations = configurations.filter(\n configuration => configuration?.pluginDefinition?.key === 'objecttypenapi'\n );\n return filteredObjecttypesApiConfigurations.map(configuration => ({\n id: configuration.id,\n text: configuration.title,\n properties: configuration.properties,\n }));\n })\n );\n\n constructor(\n private readonly objectManagementState: ObjectManagementStateService,\n private readonly objectManagementService: ObjectManagementService,\n private readonly formService: FormService,\n private readonly pluginManagementService: PluginManagementService,\n private readonly modalService: ModalService\n ) {}\n\n ngAfterViewInit(): void {\n this.openShowSubscription();\n this.openHideSubscription();\n }\n\n ngOnDestroy(): void {\n this.showSubscription?.unsubscribe();\n this.hideSubscription?.unsubscribe();\n }\n\n hide(): void {\n this.formData$.next(null);\n this.valid$.next(false);\n this.modalService.closeModal();\n }\n\n cancel(): void {\n this.hide();\n }\n\n save(): void {\n combineLatest([this.valid$, this.formData$, this.modalType$])\n .pipe(take(1))\n .subscribe(([valid, formData, modalType]) => {\n if (valid) {\n if (modalType === 'add') {\n this.objectManagementService.createObject({...formData}).subscribe(() => {\n this.objectManagementState.refresh();\n this.objectManagementState.hideModal();\n });\n } else if (modalType === 'edit') {\n this.objectManagementService.editObject({...formData}).subscribe(() => {\n this.objectManagementState.refresh();\n this.objectManagementState.hideModal();\n });\n }\n }\n });\n }\n\n private openShowSubscription(): void {\n this.showSubscription = this.objectManagementState.showModal$.subscribe(() => {\n this.show();\n });\n }\n\n private openHideSubscription(): void {\n this.hideSubscription = this.objectManagementState.hideModal$.subscribe(() => {\n this.hide();\n });\n }\n\n private show(): void {\n this.objectManagementState.modalType$.pipe(take(1)).subscribe(modalType => {\n if (modalType === 'edit' || modalType === 'add') {\n this.modalService.openModal(this.objectManagementModal);\n }\n });\n }\n\n formValueChange(data: any): void {\n if (data.showInDataMenu === '') {\n data.showInDataMenu = false;\n }\n this.formData$.next(data);\n this.setValid(data);\n }\n\n private setValid(data: any): void {\n this.valid$.next(\n !!(\n data.title &&\n data.objectenApiPluginConfigurationId &&\n data.objecttypenApiPluginConfigurationId &&\n data.objecttypeId &&\n data.objecttypeVersion\n )\n );\n }\n\n selectObjectType(objecttype): void {\n this.selectedObjecttype$.next(objecttype);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 <h4>\n {{\n (obs.modalType === 'add'\n ? 'objectManagement.createObjecttype'\n : 'objectManagement.editObjecttype'\n ) | translate\n }}\n </h4>\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 <button cdsButton=\"secondary\" (click)=\"cancel()\" [disabled]=\"obs.disabled\">\n {{ 'objectManagement.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" (click)=\"save()\" [disabled]=\"obs.disabled || !obs.valid\">\n {{\n (obs.modalType === 'add' ? 'objectManagement.add' : 'objectManagement.edit') | translate\n }}\n </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","/*\n * Copyright 2015-2025 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\nimport {Component, Input} from '@angular/core';\nimport {Objecttype} from '../../../../models/object-management.model';\nimport {ObjectManagementService} from '../../../../services/object-management.service';\nimport {ObjectManagementStateService} from '../../../../services/object-management-state.service';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-detail',\n templateUrl: './object-management-detail.component.html',\n styleUrls: ['./object-management-detail.component.scss'],\n})\nexport class ObjectManagementDetailComponent {\n @Input() object$: Observable<Objecttype>;\n readonly loading$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly objectManagementService: ObjectManagementService,\n private readonly objectManagementState: ObjectManagementStateService\n ) {}\n\n downloadDefinition(object): void {\n this.loading$.next(true);\n const dataString =\n 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(object, null, 2));\n const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n downloadAnchorElement.setAttribute('href', dataString);\n downloadAnchorElement.setAttribute('download', `${object.id}.json`);\n downloadAnchorElement.click();\n this.loading$.next(false);\n }\n\n showEditModal(): void {\n this.loading$.next(true);\n this.objectManagementState.setModalType('edit');\n this.objectManagementState.showModal();\n this.loading$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<div\n id=\"object-datail-content\"\n class=\"pt-0\"\n *ngIf=\"{\n object: object$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container\n *ngTemplateOutlet=\"buttons; context: {object: obs.object, loading: obs.loading}\"\n ></ng-container>\n <div class=\"clearfix\"></div>\n <ng-container\n *ngTemplateOutlet=\"widget; context: {object: obs.object, loading: obs.loading}\"\n ></ng-container>\n</div>\n\n<ng-template #buttons let-object=\"object\" let-loading=\"loading\">\n <div class=\"btn-group mt-m3px mb-3 pr-2 float-right\">\n <button\n (click)=\"downloadDefinition(object)\"\n cdsButton=\"secondary\"\n size=\"md\"\n [disabled]=\"loading\"\n class=\"ml-3\"\n >\n {{ 'objectManagement.download' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n <a id=\"downloadAnchorElement\" class=\"d-none\"></a>\n <button\n (click)=\"showEditModal()\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"loading\"\n class=\"ml-3\"\n >\n {{ 'objectManagement.editObjecttype' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-template #widget let-object=\"object\">\n <valtimo-widget>\n <div class=\"row bg-white mt-5 mb-2 pl-2 pr-2\">\n <div class=\"col-5 bg-red\">\n <textarea class=\"w-100 object-schema\" disabled rows=\"25\">{{ object | json }}</textarea>\n </div>\n </div>\n </valtimo-widget>\n</ng-template>\n\n<valtimo-object-management-modal [prefillObject$]=\"object$\"></valtimo-object-management-modal>\n","/*\n * Copyright 2015-2025 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\nimport {Component, TemplateRef, ViewChild} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n filter,\n map,\n Observable,\n of,\n startWith,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {ConfigService, DefinitionColumn} from '@valtimo/shared';\nimport {ListField, MultiInputValues} from '@valtimo/components';\nimport {catchError, take} from 'rxjs/operators';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {ListItem} from 'carbon-components-angular';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListColumnModal} from '@valtimo/case-management';\nimport {ObjectManagementService} from '../../../../services/object-management.service';\nimport {\n DisplayTypeParameters,\n SearchListColumn,\n SearchListColumnView,\n} from '../../../../models/object-management.model';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-list-columns',\n templateUrl: './object-management-list-columns.component.html',\n styleUrls: ['./object-management-list-columns.component.scss'],\n})\nexport class ObjectManagementListColumnsComponent {\n @ViewChild('moveRowButtons') public moveRowButtonsTemplateRef: TemplateRef<any>;\n readonly downloadName$ = new BehaviorSubject<string>('');\n readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n readonly loading$ = new BehaviorSubject<boolean>(true);\n readonly currentModalType$ = new BehaviorSubject<ListColumnModal>('create');\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n readonly modalShowing$ = this.showModal$.pipe(delay(250));\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n readonly showDeleteModal$ = new Subject<boolean>();\n readonly deleteRowIndex$ = new BehaviorSubject<number>(0);\n readonly defaultEnumValues$ = new BehaviorSubject<MultiInputValues>(undefined);\n\n readonly INVALID_KEY = 'invalid';\n readonly formGroup = new FormGroup({\n title: new FormControl(''),\n key: new FormControl('', Validators.required),\n path: new FormControl('', Validators.required),\n dateFormat: new FormControl(''),\n displayType: new FormControl({\n key: this.INVALID_KEY,\n }),\n sortable: new FormControl(false),\n defaultSort: new FormControl({\n key: this.INVALID_KEY,\n }),\n enum: new FormControl([]),\n });\n readonly DISPLAY_TYPES: Array<string> = [\n 'string',\n 'date',\n 'boolean',\n 'enum',\n 'arrayCount',\n 'underscoresToSpaces',\n ];\n\n private readonly COLUMNS: Array<DefinitionColumn> = [\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'title',\n translationKey: 'title',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'key',\n translationKey: 'key',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'path',\n translationKey: 'path',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'displayType',\n translationKey: 'displayType',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'displayTypeParameters',\n translationKey: 'displayTypeParameters',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'sortable',\n translationKey: 'sortable',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'defaultSort',\n translationKey: 'defaultSort',\n },\n ];\n private cachedObjectManagementListColumns: Array<SearchListColumn> = [];\n private readonly refreshObjectManagementListColumns$ = new BehaviorSubject<null>(null);\n\n readonly objectManagementFields$: Observable<Array<ListField>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.COLUMNS.map(column => ({\n key: column.propertyName,\n label: this.translateService.instant(`listColumn.${column.translationKey}`),\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n }))\n )\n );\n\n readonly objectId$: Observable<string> = this.route.params.pipe(\n map(params => params.id || ''),\n filter(objectId => !!objectId)\n );\n\n private readonly objectManagementListColumns$: Observable<Array<any>> = combineLatest([\n this.objectId$,\n this.refreshObjectManagementListColumns$,\n ]).pipe(\n switchMap(([objectId]) => this.objectManagementService.getSearchList(objectId)),\n tap(objectManagementListColumns => {\n this.objectId$.pipe(take(1)).subscribe(objectId => {\n if (\n objectManagementListColumns &&\n Array.isArray(objectManagementListColumns) &&\n objectManagementListColumns.length > 0\n ) {\n this.setDownload(objectId, objectManagementListColumns);\n }\n });\n }),\n tap(objectManagementListColumns => {\n this.cachedObjectManagementListColumns = objectManagementListColumns;\n this.loading$.next(false);\n this.enableInput();\n })\n );\n\n readonly translatedObjectManagementListColumns$: Observable<Array<SearchListColumnView>> =\n combineLatest([this.objectManagementListColumns$, this.translateService.stream('key')]).pipe(\n map(([columns]) =>\n columns.map(column => ({\n ...column,\n title: column.title || '-',\n sortable: column.sortable\n ? this.translateService.instant('listColumn.sortableYes')\n : this.translateService.instant('listColumn.sortableNo'),\n defaultSort:\n (column.defaultSort === 'ASC' &&\n this.translateService.instant('listColumn.sortableAsc')) ||\n (column.defaultSort === 'DESC' &&\n this.translateService.instant('listColumn.sortableDesc')) ||\n '-',\n displayType: this.translateService.instant(\n `listColumnDisplayType.${column?.displayType?.type}`\n ),\n displayTypeParameters: this.getDisplayTypeParametersView(\n column.displayType.displayTypeParameters\n ),\n }))\n )\n );\n\n readonly disableDefaultSort$ = combineLatest([\n this.currentModalType$,\n this.formGroup.valueChanges,\n ]).pipe(\n map(\n ([currentModalType]) =>\n currentModalType === 'create' &&\n this.cachedObjectManagementListColumns.find(column => !!column.defaultSort)\n ),\n startWith(false)\n );\n\n readonly showDateFormat$ = this.formGroup.valueChanges.pipe(\n map(formValues => formValues.displayType?.key === this.DISPLAY_TYPES[1]),\n tap(showDateFormat => {\n if (showDateFormat === false && !!this.formGroup.value.dateFormat) {\n this.formGroup.patchValue({dateFormat: ''});\n }\n }),\n startWith(false)\n );\n\n readonly showEnum$ = this.formGroup.valueChanges.pipe(\n map(\n formValues =>\n !!(\n formValues.displayType?.key === this.DISPLAY_TYPES[3] ||\n formValues.displayType?.key === this.DISPLAY_TYPES[2]\n )\n ),\n tap(showEnum => {\n const enumValue = this.formGroup.value.enum;\n if (showEnum === false && Array.isArray(enumValue) && enumValue.length > 0) {\n this.formGroup.patchValue({enum: []});\n }\n }),\n startWith(false)\n );\n\n readonly isYesNo$ = this.formGroup.valueChanges.pipe(\n map(formValues => formValues.displayType?.key === this.DISPLAY_TYPES[2])\n );\n\n readonly selectedViewTypeItemIndex$ = new BehaviorSubject<number>(0);\n\n readonly viewTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedViewTypeItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedViewTypeItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumnDisplayType.select`),\n key: this.INVALID_KEY,\n },\n ...this.DISPLAY_TYPES.map(type => ({\n content: this.translateService.instant(`listColumnDisplayType.${type}`),\n key: type,\n })),\n ].map((item, index) => ({\n ...item,\n selected: index === selectedViewTypeItemIndex,\n }))\n )\n );\n\n readonly selectedSortItemIndex$ = new BehaviorSubject<number>(0);\n\n readonly sortItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedSortItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedSortItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumn.selectDefaultSort`),\n key: this.INVALID_KEY,\n },\n {\n content: this.translateService.instant(`listColumn.sortableAsc`),\n key: 'ASC',\n },\n {\n content: this.translateService.instant(`listColumn.sortableDesc`),\n key: 'DESC',\n },\n ].map((item, index) => ({\n ...item,\n selected: index === selectedSortItemIndex,\n }))\n )\n );\n\n readonly validKey$ = combineLatest([this.formGroup.valueChanges, this.currentModalType$]).pipe(\n map(([formValues, currentModalType]) => {\n const existingKeys = this.cachedObjectManagementListColumns.map(column => column.key);\n return currentModalType === 'create' ? !existingKeys.includes(formValues.key) : true;\n }),\n startWith(false)\n );\n\n readonly valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(\n map(\n ([formValues, validKey]) =>\n !!(\n formValues.displayType?.key !== this.INVALID_KEY &&\n formValues.path &&\n validKey &&\n (formValues.displayType.key === 'enum' ? formValues.enum?.length > 0 : true)\n )\n ),\n startWith(false)\n );\n\n constructor(\n private readonly objectManagementService: ObjectManagementService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService,\n private readonly sanitizer: DomSanitizer\n ) {}\n\n openModal(modalType: ListColumnModal): void {\n this.showModal$.next(true);\n this.currentModalType$.next(modalType);\n\n if (modalType === 'create') {\n this.formGroup.controls['key'].enable();\n this.resetFormGroup();\n } else if (modalType === 'edit') {\n this.formGroup.controls['key'].disable();\n }\n }\n\n closeModal(): void {\n this.showModal$.next(false);\n }\n\n deleteRow(searchListColumnRowIndex: number, clickEvent: MouseEvent): void {\n clickEvent.stopPropagation();\n\n this.showDeleteModal$.next(true);\n this.deleteRowIndex$.next(searchListColumnRowIndex);\n }\n\n deleteRowConfirmation(searchListColumnRowIndex: number): void {\n const columnKey = this.getColumnKey(searchListColumnRowIndex);\n\n if (columnKey) {\n this.disableInput();\n\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId => this.objectManagementService.deleteSearchList(objectId, columnKey)),\n tap(() => this.refreshObjectManagementListColumns()),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n }\n\n getColumnKey(searchListColumnRowIndex: number) {\n return this.cachedObjectManagementListColumns[searchListColumnRowIndex]?.key;\n }\n\n moveRow(\n searchListColumnRowIndex: number,\n moveUp: boolean,\n clickEvent: MouseEvent,\n objectId: string\n ): void {\n const objectManagementListColumns = [...this.cachedObjectManagementListColumns];\n const searchListColumnRow = objectManagementListColumns[searchListColumnRowIndex];\n\n clickEvent.stopPropagation();\n const searchListColumnIndex = objectManagementListColumns.findIndex(\n field => field.key === searchListColumnRow.key\n );\n const foundSearchListColumn = {...objectManagementListColumns[searchListColumnIndex]};\n const filteredSearchListColumns = objectManagementListColumns.filter(\n field => field.key !== searchListColumnRow.key\n );\n const multipleSearchListColumns = objectManagementListColumns.length > 1;\n\n if (multipleSearchListColumns && moveUp && searchListColumnIndex > 0) {\n const searchListColumnBeforeKey = `${\n objectManagementListColumns[searchListColumnIndex - 1].key\n }`;\n const searchListColumnBeforeIndex = filteredSearchListColumns.findIndex(\n field => field.key === searchListColumnBeforeKey\n );\n filteredSearchListColumns.splice(searchListColumnBeforeIndex, 0, foundSearchListColumn);\n this.updateObjectManagementListColumn(objectId, filteredSearchListColumns);\n } else if (\n multipleSearchListColumns &&\n !moveUp &&\n searchListColumnIndex < objectManagementListColumns.length\n ) {\n const caseListColumnAfterKey = `${\n objectManagementListColumns[searchListColumnIndex + 1].key\n }`;\n const caseListColumnAfterIndex = filteredSearchListColumns.findIndex(\n field => field.key === caseListColumnAfterKey\n );\n filteredSearchListColumns.splice(caseListColumnAfterIndex + 1, 0, foundSearchListColumn);\n this.updateObjectManagementListColumn(objectId, filteredSearchListColumns);\n }\n }\n\n saveCasListColumns(): void {\n this.disableInput();\n\n this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {\n if (currentModalType === 'create') {\n this.addColumn();\n } else {\n this.updateColumn();\n }\n });\n }\n\n enumValueChange(value: Array<{[key: string]: string}>): void {\n this.formGroup.patchValue({enum: value});\n }\n\n columnRowClicked(row: {key: string}): void {\n this.resetFormGroup();\n\n combineLatest([this.viewTypeItems$, this.sortItems$])\n .pipe(take(1))\n .subscribe(([viewTypeItems, sortItems]) => {\n const column = this.cachedObjectManagementListColumns.find(\n cachedColumn => cachedColumn.key === row.key\n );\n const viewTypeItem = viewTypeItems.find(item => item.key === column.displayType.type);\n const viewTypeItemIndex = viewTypeItems.findIndex(\n item => item.key === column.displayType.type\n );\n const sortItem = sortItems.find(item => item.key === column.defaultSort);\n const sortItemIndex = sortItems.findIndex(item => item.key === column.defaultSort);\n const enumValues = column?.displayType?.displayTypeParameters?.enum;\n const mappedEnumValues: MultiInputValues = [];\n const columnDateFormat = column?.displayType?.displayTypeParameters?.dateFormat;\n\n this.selectedViewTypeItemIndex$.next(viewTypeItemIndex);\n\n if (sortItem) {\n this.selectedSortItemIndex$.next(sortItemIndex);\n }\n\n if (enumValues) {\n Object.keys(enumValues).forEach(key => {\n mappedEnumValues.push({key, value: enumValues[key]});\n });\n this.defaultEnumValues$.next(mappedEnumValues);\n } else {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n }\n\n this.formGroup.patchValue({\n key: column.key,\n title: column.title,\n path: column.path,\n sortable: column.sortable,\n // @ts-ignore\n displayType: {...viewTypeItem},\n // @ts-ignore\n defaultSort: sortItem ? {...sortItem} : {...sortItems[0]},\n ...(columnDateFormat && {\n dateFormat: columnDateFormat,\n }),\n });\n\n this.openModal('edit');\n });\n }\n\n private updateObjectManagementListColumn(\n objectId: string,\n listColumn: Array<SearchListColumn>\n ): void {\n this.disableInput();\n this.objectManagementService\n .putSearchListColumns(objectId, listColumn)\n .pipe(\n tap(() => {\n this.refreshObjectManagementListColumns();\n localStorage.setItem(`list-search-${objectId}`, null);\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private addColumn(): void {\n const formValue = this.formGroup.value;\n\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId =>\n this.objectManagementService.postSearchList(\n objectId,\n this.mapFormValuesToColumn(formValue)\n )\n ),\n tap(() => {\n this.closeModal();\n this.refreshObjectManagementListColumns();\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private getDisplayTypeParametersView(displayTypeParameters: DisplayTypeParameters): string {\n if (displayTypeParameters?.dateFormat) {\n return displayTypeParameters.dateFormat;\n } else if (displayTypeParameters?.enum) {\n return Object.keys(displayTypeParameters.enum).reduce((acc, curr) => {\n const keyValuePairString = `${curr}: ${displayTypeParameters.enum[curr]}`;\n if (!acc) {\n return `${keyValuePairString}`;\n }\n\n return `${acc}, ${keyValuePairString}`;\n }, '');\n }\n\n return '-';\n }\n\n private updateColumn(): void {\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId =>\n this.objectManagementService.putSearchList(\n objectId,\n this.formGroup.value.key,\n this.mapFormValuesToColumn(this.formGroup.value)\n )\n ),\n tap(() => {\n this.closeModal();\n this.refreshObjectManagementListColumns();\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private setDownload(\n objectId: string,\n ObjectManagementListColumns: Array<SearchListColumn>\n ): void {\n this.downloadName$.next(`${objectId}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify(ObjectManagementListColumns, null, 2))\n )\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n this.formGroup.disable();\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n this.formGroup.enable();\n }\n\n private refreshObjectManagementListColumns(): void {\n this.refreshObjectManagementListColumns$.next(null);\n }\n\n private resetFormGroup(): void {\n this.formGroup.reset();\n combineLatest([this.sortItems$, this.viewTypeItems$])\n .pipe(take(1))\n .subscribe(([sortItems, viewTypeItems]) => {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n this.selectedViewTypeItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({displayType: viewTypeItems[0]});\n this.selectedSortItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({defaultSort: sortItems[0]});\n });\n }\n\n private mapFormValuesToColumn(formValue: any): SearchListColumn {\n return {\n key: formValue.key,\n sortable: formValue.sortable,\n ...(formValue.defaultSort?.key !== this.INVALID_KEY && {\n defaultSort: formValue.defaultSort?.key,\n }),\n title: formValue.title || '',\n path: formValue.path,\n displayType: {\n type: formValue.displayType?.key,\n displayTypeParameters: {\n ...(formValue.dateFormat && {dateFormat: formValue.dateFormat}),\n ...(Array.isArray(formValue.enum) &&\n formValue.enum.length > 0 && {\n enum: formValue.enum.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\n }),\n },\n },\n };\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<ng-container\n *ngIf=\"{\n listColumn: translatedObjectManagementListColumns$ | async,\n fields: objectManagementFields$ | async,\n objectId: objectId$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3 mr-2\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!obs.loading; else loading\">\n <ng-container *ngIf=\"obs.listColumn?.length > 0; else noConfigWarning\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <a\n cdsLink\n class=\"center-link\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.listColumn?.length < 1 ||\n obs.disableInput ||\n obs.loading\n \"\n >\n {{ 'listColumn.downloadButtonText' | translate }}\n </a>\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"obs.loading\"\n class=\"ml-3\"\n >\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n objectId: objectId$ | async,\n } as obs\"\n >\n <i\n class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n (click)=\"deleteRow(index, $event)\"\n [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.objectId)\"\n [ngClass]=\"{\n 'disabled disabled-move-row-button': index === length - 1 || obs.disableInput,\n }\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.listColumn\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n *ngIf=\"obs.listColumn; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n showEnum: showEnum$ | async,\n isYesNo: isYesNo$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.objectsApiPathTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"displayType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"viewTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"showDateFormat$ | async\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"dateFormat\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"modalObs.showEnum || modalObs.isYesNo\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{\n modalObs.isYesNo\n ? ('listColumn.enumTitleOptional' | translate)\n : ('listColumn.enumTitle' | translate)\n }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <valtimo-carbon-multi-input\n *ngIf=\"(showModal$ | async) || (modalShowing$ | async)\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n [defaultValues]=\"defaultEnumValues$ | async\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-checkbox formControlName=\"sortable\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown\n formControlName=\"defaultSort\"\n [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\"\n >\n <cds-dropdown-list [items]=\"sortItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'listColumn.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveCasListColumns()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n >\n {{ 'listColumn.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowIndex$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'listColumn.noConfigWarningTitle' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n","/*\n * Copyright 2015-2025 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\nimport {Component, TemplateRef, ViewChild} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n startWith,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {\n ConfigService,\n DefinitionColumn,\n SearchField,\n SearchFieldColumnView,\n SearchFieldDataType,\n SearchFieldFieldType,\n} from '@valtimo/shared';\nimport {ListField} from '@valtimo/components';\nimport {catchError, take} from 'rxjs/operators';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {ListItem} from 'carbon-components-angular';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ObjectManagementService} from '../../../../services/object-management.service';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-list-search-fields',\n templateUrl: './object-management-list-search-fields.component.html',\n styleUrls: ['./object-management-list-search-fields.component.scss'],\n})\nexport class ObjectManagementListSearchFieldsComponent {\n @ViewChild('moveRowButtons') public moveRowButtonsTemplateRef: TemplateRef<any>;\n readonly downloadName$ = new BehaviorSubject<string>('');\n readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n readonly loading$ = new BehaviorSubject<boolean>(true);\n readonly currentModalType$ = new BehaviorSubject<string>('create');\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n readonly showDeleteModal$ = new Subject<boolean>();\n readonly deleteRowIndex$ = new BehaviorSubject<number>(0);\n\n readonly INVALID_KEY = 'invalid';\n readonly formGroup = new FormGroup({\n title: new FormControl(''),\n key: new FormControl('', Validators.required),\n path: new FormControl('', Validators.required),\n dataType: new FormControl({\n key: this.INVALID_KEY,\n }),\n fieldType: new FormControl({\n key: this.INVALID_KEY,\n }),\n });\n private readonly COLUMNS: Array<DefinitionColumn> = [\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'title',\n translationKey: 'title',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'key',\n translationKey: 'key',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'path',\n translationKey: 'path',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'dataType',\n translationKey: 'dataType',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'fieldType',\n translationKey: 'fieldType',\n },\n ];\n readonly DATA_TYPES: Array<SearchFieldDataType> = [\n 'text',\n 'number',\n 'date',\n 'datetime',\n 'boolean',\n ];\n private readonly FIELD_TYPES: Array<SearchFieldFieldType> = ['single', 'range'];\n private cachedObjectManagementListSearchFields: Array<SearchField> = [];\n private readonly refreshObjectManagementListSearchFields$ = new BehaviorSubject<null>(null);\n\n readonly objectManagementFields$: Observable<Array<ListField>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.COLUMNS.map(column => ({\n key: column.propertyName,\n label: this.translateService.instant(`searchFieldsOverview.${column.translationKey}`),\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n }))\n )\n );\n\n readonly objectId$: Observable<string> = this.route.params.pipe(\n map(params => params.id || ''),\n filter(objectId => !!objectId)\n );\n\n private readonly objectManagementListSearchFields$: Observable<Array<any>> = combineLatest([\n this.objectId$,\n this.refreshObjectManagementListSearchFields$,\n ]).pipe(\n switchMap(([objectId]) => this.objectManagementService.getSearchField(objectId)),\n tap(objectManagementListSearchFields => {\n this.objectId$.pipe(take(1)).subscribe(objectId => {\n if (\n objectManagementListSearchFields &&\n Array.isArray(objectManagementListSearchFields) &&\n objectManagementListSearchFields.length > 0\n ) {\n this.setDownload(objectId, objectManagementListSearchFields);\n }\n });\n }),\n tap(objectManagementListSearchFields => {\n this.cachedObjectManagementListSearchFields = objectManagementListSearchFields;\n this.loading$.next(false);\n this.enableInput();\n })\n );\n\n readonly translatedObjectManagementListSearchFields$: Observable<Array<SearchFieldColumnView>> =\n combineLatest([\n this.objectManagementListSearchFields$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([columns]) =>\n columns.map(column => ({\n ...column,\n title: column.title || '-',\n dataType: this.translateService.instant(\n `searchFields.${column?.dataType?.toLowerCase()}`\n ),\n fieldType: this.translateService.instant(\n `searchFieldsOverview.${column?.fieldType?.toLowerCase()}`\n ),\n }))\n )\n );\n\n readonly selectedDataTypeItemIndex$ = new BehaviorSubject<number>(0);\n\n readonly dataTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedDataTypeItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedDataTypeItemIndex]) =>\n [\n {\n content: this.translateService.instant(`searchFieldDataType.select`),\n key: this.INVALID_KEY,\n },\n ...this.DATA_TYPES.map(type => ({\n content: this.translateService.instant(`searchFields.${type}`),\n key: type.toUpperCase(),\n })),\n ].map((item, index) => ({\n ...item,\n selected: index === selectedDataTypeItemIndex,\n }))\n )\n );\n\n readonly selectedFieldTypeItemIndex$ = new BehaviorSubject<number>(0);\n readonly fieldTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedFieldTypeItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedFieldTypeItemIndex]) =>\n [\n {\n content: this.translateService.instant(`searchFieldFieldType.select`),\n key: this.INVALID_KEY,\n },\n ...this.FIELD_TYPES.map(type => ({\n content: this.translateService.instant(`searchFieldsOverview.${type}`),\n key: type.toUpperCase(),\n })),\n ].map((item, index) => ({\n ...item,\n selected: index === selectedFieldTypeItemIndex,\n }))\n )\n );\n\n readonly validKey$ = combineLatest([this.formGroup.valueChanges, this.currentModalType$]).pipe(\n map(([formValues, currentModalType]) => {\n const existingKeys = this.cachedObjectManagementListSearchFields.map(column => column.key);\n return currentModalType === 'create' ? !existingKeys.includes(formValues.key) : true;\n }),\n startWith(false)\n );\n\n readonly valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(\n map(([formValues, validKey]) => !!(formValues.path && validKey)),\n startWith(false)\n );\n\n constructor(\n private readonly objectManagementService: ObjectManagementService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService,\n private readonly sanitizer: DomSanitizer\n ) {}\n\n openModal(modalType: string): void {\n this.showModal$.next(true);\n this.currentModalType$.next(modalType);\n\n if (modalType === 'create') {\n this.formGroup.controls['key'].enable();\n this.resetFormGroup();\n } else if (modalType === 'edit') {\n this.formGroup.controls['key'].disable();\n }\n }\n\n closeModal(): void {\n this.showModal$.next(false);\n }\n\n deleteRow(listSearchFieldRowIndex: number, clickEvent: MouseEvent): void {\n clickEvent.stopPropagation();\n\n this.showDeleteModal$.next(true);\n this.deleteRowIndex$.next(listSearchFieldRowIndex);\n }\n\n deleteRowConfirmation(listSearchFieldRowIndex: number): void {\n const columnKey = this.getColumnKey(listSearchFieldRowIndex);\n\n if (columnKey) {\n this.disableInput();\n\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId =>\n this.objectManagementService.deleteSearchField(objectId, columnKey)\n ),\n tap(() => this.refreshObjectManagementListSearchFields()),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n }\n\n getColumnKey(listSearchFieldRowIndex: number) {\n return this.cachedObjectManagementListSearchFields[listSearchFieldRowIndex]?.key;\n }\n\n moveRow(\n listSearchFieldRowIndex: number,\n moveUp: boolean,\n clickEvent: MouseEvent,\n objectId: string\n ): void {\n const objectManagementListSearchFields = [...this.cachedObjectManagementListSearchFields];\n const listSearchFieldRow = objectManagementListSearchFields[listSearchFieldRowIndex];\n\n clickEvent.stopPropagation();\n const listSearchFieldIndex = objectManagementListSearchFields.findIndex(\n field => field.key === listSearchFieldRow.key\n );\n const foundListSearchField = {...objectManagementListSearchFields[listSearchFieldIndex]};\n const filteredListSearchField = objectManagementListSearchFields.filter(\n field => field.key !== listSearchFieldRow.key\n );\n const multipleListSearchFields = objectManagementListSearchFields.length > 1;\n\n if (multipleListSearchFields && moveUp && listSearchFieldIndex > 0) {\n const listSearchFieldBeforeKey = `${\n objectManagementListSearchFields[listSearchFieldIndex - 1].key\n }`;\n const listSearchFieldBeforeIndex = filteredListSearchField.findIndex(\n field => field.key === listSearchFieldBeforeKey\n );\n filteredListSearchField.splice(listSearchFieldBeforeIndex, 0, foundListSearchField);\n this.updateObjectManagementListSearchField(objectId, filteredListSearchField);\n } else if (\n multipleListSearchFields &&\n !moveUp &&\n listSearchFieldIndex < objectManagementListSearchFields.length\n ) {\n const caseListColumnAfterKey = `${\n objectManagementListSearchFields[listSearchFieldIndex + 1].key\n }`;\n const caseListColumnAfterIndex = filteredListSearchField.findIndex(\n field => field.key === caseListColumnAfterKey\n );\n filteredListSearchField.splice(caseListColumnAfterIndex + 1, 0, foundListSearchField);\n this.updateObjectManagementListSearchField(objectId, filteredListSearchField);\n }\n }\n\n saveListSearchFields(): void {\n this.disableInput();\n\n this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {\n if (currentModalType === 'create') {\n this.addSearchField();\n } else {\n this.updateSearchField();\n }\n });\n }\n\n columnRowClicked(row: {key: string}): void {\n this.resetFormGroup();\n\n combineLatest([this.dataTypeItems$, this.fieldTypeItems$])\n .pipe(take(1))\n .subscribe(([dataTypeItems, fieldTypeItems]) => {\n const column = this.cachedObjectManagementListSearchFields.find(\n cachedColumn => cachedColumn.key === row.key\n );\n const dataTypeItem = dataTypeItems.find(item => item.key === column.dataType);\n const dataTypeItemIndex = dataTypeItems.findIndex(item => item.key === column.dataType);\n\n const fieldTypeItem = fieldTypeItems.find(item => item.key === column.fieldType);\n const fieldTypeItemIndex = fieldTypeItems.findIndex(item => item.key === column.fieldType);\n\n this.selectedDataTypeItemIndex$.next(dataTypeItemIndex);\n this.selectedFieldTypeItemIndex$.next(fieldTypeItemIndex);\n\n this.formGroup.patchValue({\n key: column.key,\n title: column.title,\n path: column.path,\n // @ts-ignore\n dataType: {...dataTypeItem},\n // @ts-ignore\n fieldType: {...fieldTypeItem},\n });\n\n this.openModal('edit');\n });\n }\n\n private updateObjectManagementListSearchField(\n objectId: string,\n searchField: Array<SearchField>\n ): void {\n this.disableInput();\n this.objectManagementService\n .putSearchFields(objectId, searchField)\n .pipe(\n tap(() => {\n this.refreshObjectManagementListSearchFields();\n localStorage.setItem(`list-search-fields${objectId}`, null);\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private addSearchField(): void {\n const formValue = this.formGroup.value;\n\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId =>\n this.objectManagementService.postSearchField(\n objectId,\n this.mapFormValuesToColumn(formValue)\n )\n ),\n tap(() => {\n this.closeModal();\n this.refreshObjectManagementListSearchFields();\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private updateSearchField(): void {\n this.objectId$\n .pipe(\n take(1),\n switchMap(objectId =>\n this.objectManagementService.putSearchField(\n objectId,\n this.formGroup.value.key,\n this.mapFormValuesToColumn(this.formGroup.value)\n )\n ),\n tap(() => {\n this.closeModal();\n this.refreshObjectManagementListSearchFields();\n }),\n catchError(() => {\n this.enableInput();\n return of(null);\n })\n )\n .subscribe();\n }\n\n private setDownload(objectId: string, ObjectManagementSearchFields: Array<SearchField>): void {\n this.downloadName$.next(`${objectId}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify(ObjectManagementSearchFields, null, 2))\n )\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n this.formGroup.disable();\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n this.formGroup.enable();\n }\n\n private refreshObjectManagementListSearchFields(): void {\n this.refreshObjectManagementListSearchFields$.next(null);\n }\n\n private resetFormGroup(): void {\n this.formGroup.reset();\n this.selectedDataTypeItemIndex$.next(0);\n this.selectedFieldTypeItemIndex$.next(0);\n }\n\n private mapFormValuesToColumn(formValue: any): SearchField {\n return {\n key: formValue.key,\n title: formValue.title || '',\n path: formValue.path,\n dataType: formValue.dataType.key,\n fieldType: formValue.fieldType.key,\n };\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<ng-container\n *ngIf=\"{\n searchFields: translatedObjectManagementListSearchFields$ | async,\n fields: objectManagementFields$ | async,\n objectId: objectId$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3 mr-2\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!obs.loading; else loading\">\n <ng-container *ngIf=\"obs.searchFields?.length > 0; else noConfigWarning\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <a\n cdsLink\n class=\"center-link\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.searchFields?.length < 1 ||\n obs.disableInput ||\n obs.loading\n \"\n >\n {{ 'searchFieldsOverview.download' | translate }}\n </a>\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"obs.loading\"\n class=\"ml-3\"\n >\n {{ 'searchFieldsOverview.add' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n objectId: objectId$ | async,\n } as obs\"\n >\n <i\n class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n (click)=\"deleteRow(index, $event)\"\n [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === length - 1 || obs.disableInput}\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n *ngIf=\"obs.searchFields; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('searchFieldsOverview.add' | translate)\n : ('searchFieldsOverview.edit' | translate)\n }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.title' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'searchFieldsOverview.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.key' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.path' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.objectsApiPath' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.dataType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"dataType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.fieldType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"fieldType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'searchFieldsOverview.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveListSearchFields()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n >\n {{ 'searchFieldsOverview.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowIndex$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n titleTranslationKey=\"searchFieldsOverview.searchField\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'searchFieldsOverview.noSearchFieldsConfiguredWarningTitle' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n","/*\n * Copyright 2015-2025 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\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {combineLatest, filter, map, Observable, Subscription, switchMap} from 'rxjs';\nimport {ConfigService} from '@valtimo/shared';\nimport {TabService} from '../../services/tab.service';\nimport {TabEnum} from '../../services/tab.enum';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {PageTitleService} from '@valtimo/components';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-detail-container',\n templateUrl: './object-management-detail-container.component.html',\n styleUrls: ['./object-management-detail-container.component.css'],\n})\nexport class ObjectManagementDetailContainerComponent implements OnInit, OnDestroy {\n public currentTab: TabEnum;\n public caseListColumn!: boolean;\n\n private tabSubscription: Subscription;\n\n readonly TabEnum = TabEnum;\n\n readonly objectId$: Observable<string> = this.route.params.pipe(\n map(params => params.id || ''),\n filter(id => !!id)\n );\n\n readonly object$ = combineLatest([this.objectId$, this.objectManagementState.refresh$]).pipe(\n switchMap(([object]) => this.objectManagementService.getObjectById(object)),\n tap(object => {\n this.pageTitleService.setCustomPageTitle(object.title);\n })\n );\n\n constructor(\n private readonly objectManagementState: ObjectManagementStateService,\n private readonly objectManagementService: ObjectManagementService,\n private readonly route: ActivatedRoute,\n private readonly configService: ConfigService,\n private readonly tabService: TabService,\n private readonly pageTitleService: PageTitleService\n ) {\n this.caseListColumn = this.configService.config.featureToggles?.caseListColumn ?? true;\n }\n\n ngOnInit(): void {\n this.openCurrentTabSubscription();\n }\n\n displayBodyComponent(tab: TabEnum): void {\n this.tabService.currentTab = tab;\n }\n\n openCurrentTabSubscription(): void {\n this.tabSubscription = this.tabService.currentTab$.subscribe(\n value => (this.currentTab = value)\n );\n }\n\n ngOnDestroy(): void {\n this.tabService.currentTab = TabEnum.GENERAL;\n this.tabSubscription?.unsubscribe();\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabContent\"></ng-container>\n </valtimo-widget>\n </div>\n </div>\n</div>\n\n<ng-template #title>\n <ng-container *ngIf=\"object$ | async as object\">\n <div class=\"bg-light dossier-header\" *ngIf=\"object.showInDataMenu\">\n <h3 class=\"dossier-title\">\n <div *ngIf=\"object.showInDataMenu\" class=\"pull-right\">\n <span class=\"badge badge-pill badge-info increase-size\">{{\n 'objectManagement.visibleInMenu' | translate\n }}</span>\n </div>\n </h3>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tabs>\n <ul class=\"nav nav-tabs\">\n <li class=\"nav-item\">\n <a\n id=\"general-tab\"\n class=\"nav-link clickable active\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.GENERAL)\"\n >\n {{ 'objectManagement.tabs.general' | translate }}\n </a>\n </li>\n <li class=\"nav-item\">\n <a\n id=\"search-tab\"\n class=\"nav-link clickable\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.SEARCH)\"\n >\n {{ 'objectManagement.tabs.searchFields' | translate }}\n </a>\n </li>\n <li class=\"nav-item\" *ngIf=\"caseListColumn\">\n <a\n id=\"list-tab\"\n class=\"nav-link clickable\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.LIST)\"\n >\n {{ 'objectManagement.tabs.list' | translate }}\n </a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabContent>\n <div class=\"pt-3 bg-white position-relative tab-container\">\n <div *ngIf=\"currentTab && currentTab === TabEnum.GENERAL\">\n <valtimo-object-management-detail [object$]=\"object$\"></valtimo-object-management-detail>\n </div>\n <div *ngIf=\"currentTab && currentTab === TabEnum.SEARCH\">\n <valtimo-object-management-list-search-fields></valtimo-object-management-list-search-fields>\n </div>\n <div *ngIf=\"currentTab && currentTab === TabEnum.LIST\">\n <valtimo-object-management-list-columns></valtimo-object-management-list-columns>\n </div>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 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\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {FormManagementService} from '@valtimo/form-management';\nimport {PluginManagementService} from '@valtimo/plugin';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Objecttype, ObjecttypeKeys} from '../../models/object-management.model';\nimport {VModalComponent, ModalService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-upload-modal',\n templateUrl: './object-management-upload-modal.component.html',\n styleUrls: ['./object-management-upload-modal.component.scss'],\n})\nexport class ObjectManagementUploadModalComponent implements AfterViewInit, OnDestroy {\n @ViewChild('objectManagementUploadModal') objectManagementUploadModal: VModalComponent;\n @Input() objecttypes?: Objecttype[];\n\n readonly clear$ = new Subject();\n readonly jsonString$ = new BehaviorSubject<string>('');\n readonly error$ = new BehaviorSubject<string>('');\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n readonly showForm$: Observable<boolean> = this.modalService.modalVisible$;\n\n private readonly file$ = new BehaviorSubject<File>(undefined);\n\n private showSubscription!: Subscription;\n private hideSubscription!: Subscription;\n private fileSubscription: Subscription;\n private errorSubscription: Subscription;\n\n constructor(\n private readonly objectManagementState: ObjectManagementStateService,\n private readonly objectManagementService: ObjectManagementService,\n private readonly formManagementService: FormManagementService,\n private readonly pluginManagementService: PluginManagementService,\n private readonly modalService: ModalService,\n private readonly translateService: TranslateService\n ) {}\n\n ngAfterViewInit(): void {\n this.openShowSubscription();\n this.openFileSubscription();\n this.openHideSubscription();\n }\n\n ngOnDestroy(): void {\n this.showSubscription?.unsubscribe();\n this.hideSubscription?.unsubscribe();\n this.fileSubscription.unsubscribe();\n }\n\n hide(): void {\n this.modalService.closeModal();\n }\n\n cancel(): void {\n this.hide();\n }\n\n setFile(file: File): void {\n this.clearError();\n this.file$.next(file);\n }\n\n uploadDefinition(): void {\n this.disable();\n\n this.jsonString$.pipe(take(1)).subscribe(objecttypeDefinition => {\n this.objectManagementService\n .createObject({...JSON.parse(objecttypeDefinition)})\n .subscribe(() => {\n this.objectManagementState.refresh();\n this.objectManagementState.hideModal();\n });\n this.closeErrorSubscription();\n this.clearError();\n this.enable();\n this.hide();\n });\n }\n\n private openErrorSubscription(errorCode: string): void {\n this.closeErrorSubscription();\n this.errorSubscription = this.translateService.stream(errorCode).subscribe(error => {\n this.error$.next(error);\n });\n }\n\n private closeErrorSubscription(): void {\n if (this.errorSubscription) {\n this.errorSubscription.unsubscribe();\n }\n }\n\n private openFileSubscription(): void {\n this.fileSubscription = this.file$.subscribe(file => {\n if (file) {\n const reader = new FileReader();\n\n reader.onloadend = () => {\n const result = reader.result.toString();\n if (this.isValidJsonObjecttype(result)) {\n this.jsonString$.next(result);\n } else {\n this.clearJsonString();\n }\n };\n\n reader.readAsText(file);\n } else {\n this.clearJsonString();\n }\n });\n }\n\n private openShowSubscription(): void {\n this.showSubscription = this.objectManagementState.showModal$.subscribe(() => {\n this.show();\n\n this.clearJsonString();\n this.clearError();\n this.clearDropzone();\n });\n }\n\n private openHideSubscription(): void {\n this.hideSubscription = this.objectManagementState.hideModal$.subscribe(() => {\n this.hide();\n });\n }\n\n private show(): void {\n this.objectManagementState.modalType$.pipe(take(1)).subscribe(modalType => {\n if (modalType === 'upload') {\n this.modalService.openModal(this.objectManagementUploadModal);\n }\n });\n }\n\n private clearError(): void {\n this.error$.next('');\n }\n\n private clearJsonString(): void {\n this.jsonString$.next('');\n }\n\n private clearDropzone(): void {\n this.clear$.next(null);\n }\n\n private isValidJsonObjecttype(string: string) {\n const jsonObjecttype = JSON.parse(string);\n const isValid = this.validateObject(jsonObjecttype, [\n 'title',\n 'objecttypenApiPluginConfigurationId',\n 'objecttypeId',\n 'objecttypeVersion',\n 'objectenApiPluginConfigurationId',\n 'showInDataMenu',\n ]);\n const isObjecttypeTitleUnique = !this.objecttypes?.find(\n objecttype => objecttype.title === jsonObjecttype.title\n );\n if (isValid && isObjecttypeTitleUnique) {\n return true;\n } else if (isValid && !isObjecttypeTitleUnique) {\n this.clearDropzone();\n this.openErrorSubscription('dropzone.error.objecttypeAlreadyExists');\n return false;\n } else if (!isValid && isObjecttypeTitleUnique) {\n this.clearDropzone();\n this.openErrorSubscription('dropzone.error.invalidObjecttypeDef');\n return false;\n }\n }\n\n validateObject(obj: object, requiredKeys: ObjecttypeKeys[]) {\n const objKeys = Object.keys(obj);\n return requiredKeys.every(key => objKeys.includes(key));\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 <h4>{{ 'objectManagement.uploadObjecttype' | translate }}</h4>\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 <button cdsButton=\"secondary\" (click)=\"cancel()\" [disabled]=\"obs.disabled\">\n {{ 'objectManagement.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n (click)=\"uploadDefinition()\"\n [disabled]=\"obs.jsonString === '' || obs.disabled\"\n >\n {{ 'Upload' | translate }}\n </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","/*\n * Copyright 2015-2025 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\nimport {Component} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {switchMap, tap} from 'rxjs/operators';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {Objecttype} from '../../models/object-management.model';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {Router} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-management-list',\n templateUrl: './object-management-list.component.html',\n styleUrls: ['./object-management-list.component.scss'],\n})\nexport class ObjectManagementListComponent {\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly fields$ = new BehaviorSubject<Array<{key: string; label: string}>>([]);\n\n readonly objecttypesInstances$: Observable<Array<Objecttype>> = combineLatest([\n this.translateService.stream('key'),\n this.objectManagementState.refresh$,\n ]).pipe(\n tap(() => this.setFields()),\n switchMap(() => this.objectManagementService.getAllObjects()),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly objectManagementService: ObjectManagementService,\n private readonly objectManagementState: ObjectManagementStateService,\n private readonly translateService: TranslateService,\n private router: Router\n ) {}\n\n showAddModal(): void {\n this.objectManagementState.setModalType('add');\n this.objectManagementState.showModal();\n }\n\n showUploadModal(): void {\n this.objectManagementState.setModalType('upload');\n this.objectManagementState.showModal();\n }\n\n redirectToDetails(objectManagement: Objecttype) {\n this.router.navigate(['/object-management/object', objectManagement.id]);\n }\n\n private setFields(): void {\n const keys: Array<string> = ['title'];\n this.fields$.next(\n keys.map(key => ({\n label: `${this.translateService.instant(`objectManagement.labels.${key}`)}`,\n key,\n }))\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<div class=\"main-content pt-0\" *ngIf=\"{loading: loading$ | async} as obs\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <div class=\"text-right mt-m3px mb-3\">\n <button (click)=\"showUploadModal()\" class=\"btn btn-secondary btn-space\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'objectManagement.uploadObjecttype' | translate }}\n </button>\n <button (click)=\"showAddModal()\" type=\"button\" class=\"btn btn-space btn-primary mr-0\">\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'objectManagement.createObjecttype' | translate }}\n </button>\n </div>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #list let-obs=\"obs\">\n <ng-container *ngIf=\"fields$ | async as fields\">\n <ng-container *ngIf=\"objecttypesInstances$ | async as objecttypesInstances\">\n <valtimo-widget *ngIf=\"obs.loading === false\">\n <valtimo-carbon-list\n [items]=\"objecttypesInstances\"\n [fields]=\"fields\"\n [viewMode]=\"true\"\n [header]=\"true\"\n paginationIdentifier=\"objecttypesList\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">\n {{ 'objectManagement.title' | translate }}\n <sup class=\"ml-1 badge badge-pill badge-primary\">{{\n objecttypesInstances?.length || 0\n }}</sup>\n </h3>\n </div>\n </valtimo-carbon-list>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<valtimo-object-management-upload-modal\n [objecttypes]=\"objecttypesInstances$ | async\"\n></valtimo-object-management-upload-modal>\n<valtimo-object-management-modal></valtimo-object-management-modal>\n","/*\n * Copyright 2015-2025 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\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {ObjectManagementDetailContainerComponent} from './components/object-management-detail-container/object-management-detail-container.component';\nimport {ObjectManagementListComponent} from './components/object-management-list/object-management-list.component';\n\nconst routes: Routes = [\n {\n path: 'object-management',\n canActivate: [AuthGuardService],\n component: ObjectManagementListComponent,\n data: {title: 'Objects', roles: [ROLE_ADMIN]},\n },\n {\n path: 'object-management/object/:id',\n canActivate: [AuthGuardService],\n component: ObjectManagementDetailContainerComponent,\n data: {title: 'Object', roles: [ROLE_ADMIN], customPageTitle: true},\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class ObjectManagementRoutingModule {}\n","/*\n * Copyright 2015-2025 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\nimport {NgModule} from '@angular/core';\nimport {ObjectManagementRoutingModule} from './object-management-routing.module';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n CarbonMultiInputModule,\n ConfirmationModalModule,\n DropzoneModule,\n FormModule,\n InputModule,\n ModalModule,\n SelectModule,\n SpinnerModule,\n TooltipIconModule,\n ValtimoCdsModalDirective,\n VModalModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ObjectManagementDetailContainerComponent} from './components/object-management-detail-container/object-management-detail-container.component';\nimport {ObjectManagementDetailComponent} from './components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component';\nimport {ObjectManagementListComponent} from './components/object-management-list/object-management-list.component';\nimport {ObjectManagementUploadModalComponent} from './components/object-management-upload-modal/object-management-upload-modal.component';\nimport {ObjectManagementModalComponent} from './components/object-management-modal/object-management-modal.component';\nimport {ObjectManagementListColumnsComponent} from './components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component';\nimport {\n ButtonModule as CarbonButtonModule,\n CheckboxModule,\n DropdownModule,\n IconModule,\n InputModule as CarbonInputModule,\n LinkModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n} from 'carbon-components-angular';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ObjectManagementListSearchFieldsComponent} from './components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component';\n\n@NgModule({\n declarations: [\n ObjectManagementListComponent,\n ObjectManagementDetailContainerComponent,\n ObjectManagementDetailComponent,\n ObjectManagementListColumnsComponent,\n ObjectManagementModalComponent,\n ObjectManagementUploadModalComponent,\n ObjectManagementListSearchFieldsComponent,\n ],\n imports: [\n CommonModule,\n DropzoneModule,\n WidgetModule,\n TranslateModule,\n ObjectManagementRoutingModule,\n VModalModule,\n FormModule,\n InputModule,\n SelectModule,\n CarbonInputModule,\n CarbonButtonModule,\n TooltipIconModule,\n CarbonMultiInputModule,\n CarbonModalModule,\n NotificationModule,\n LoadingModule,\n DropdownModule,\n CheckboxModule,\n LinkModule,\n IconModule,\n ReactiveFormsModule,\n ConfirmationModalModule,\n SpinnerModule,\n ModalModule,\n ValtimoCdsModalDirective,\n CarbonListModule,\n ],\n exports: [],\n})\nexport class ObjectManagementModule {}\n","/*\n * Copyright 2015-2025 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/*\n * Public API Surface of object-management\n */\n\nexport * from './lib/models/object-management.model';\nexport * from './lib/services/object-management.service';\nexport * from './lib/object-management.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1.ObjectManagementStateService","i2.ObjectManagementService","i4","i8","i1.ObjectManagementService","i2.ObjectManagementStateService","i3","i5","i6.ObjectManagementModalComponent","i7","tap","i5.TabService","i6","i8.ObjectManagementDetailComponent","i9.ObjectManagementListColumnsComponent","i10.ObjectManagementListSearchFieldsComponent","i11","switchMap","i7.ObjectManagementModalComponent","i8.ObjectManagementUploadModalComponent","i1","CarbonInputModule","CarbonButtonModule","CarbonModalModule","ModalModule"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@valtimo/object-management",
3
3
  "license": "EUPL-1.2",
4
- "version": "13.0.0",
4
+ "version": "13.1.0",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^19.2.8",
7
7
  "@angular/core": "^19.2.8"