@valtimo/dossier-management 12.8.0 → 12.10.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-dossier-management.mjs","sources":["../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-assignee/dossier-management-assignee.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-assignee/dossier-management-assignee.component.html","../../../../projects/valtimo/dossier-management/src/lib/services/dossier-detail.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/dossier-export.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/tab-management.service.ts","../../../../projects/valtimo/dossier-management/src/lib/models/tab.enum.ts","../../../../projects/valtimo/dossier-management/src/lib/services/tab.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/widget-json-editor.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/widget-tab-management.service.ts","../../../../projects/valtimo/dossier-management/src/lib/models/list-column.model.ts","../../../../projects/valtimo/dossier-management/src/lib/models/status.model.ts","../../../../projects/valtimo/dossier-management/src/lib/models/widget-content.model.ts","../../../../projects/valtimo/dossier-management/src/lib/models/widget-editor.model.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/process-selector/dossier-management-widget-process-selector.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/process-selector/dossier-management-widget-process-selector.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/index.ts","../../../../projects/valtimo/dossier-management/src/lib/models/widget-wizard.model.ts","../../../../projects/valtimo/dossier-management/src/lib/models/index.ts","../../../../projects/valtimo/dossier-management/src/lib/services/widget-wizard.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/widget-fields.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/index.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail/dossier-management-detail.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail/dossier-management-detail.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/tab-form/tab-form.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/tab-form/tab-form.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-tabs.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-tabs.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-processes/dossier-management-processes.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-processes/dossier-management-processes.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-statuses/dossier-management-statuses.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-statuses/dossier-management-statuses.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.constants.ts","../../../../projects/valtimo/dossier-management/src/lib/services/dossier-management.service.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-create/dossier-management-create.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-create/dossier-management-create.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list/dossier-management-list.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list/dossier-management-list.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/index.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.html","../../../../projects/valtimo/dossier-management/src/lib/dossier-management-routing.module.ts","../../../../projects/valtimo/dossier-management/src/lib/dossier-management.module.ts","../../../../projects/valtimo/dossier-management/src/public-api.ts","../../../../projects/valtimo/dossier-management/src/valtimo-dossier-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 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 {CaseSettings, DocumentService} from '@valtimo/document';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dossier-management-assignee',\n templateUrl: './dossier-management-assignee.component.html',\n styleUrls: ['./dossier-management-assignee.component.css'],\n})\nexport class DossierManagementAssigneeComponent {\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || '')\n );\n\n readonly currentValue$: Observable<CaseSettings> = this._refresh$.pipe(\n switchMap(() => this.documentDefinitionName$),\n switchMap(documentDefinitionName =>\n this.documentService.getCaseSettingsForManagement(documentDefinitionName)\n ),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private route: ActivatedRoute\n ) {\n this.disabled$ = new BehaviorSubject<boolean>(false);\n }\n\n updateCaseSettings(caseSettings: CaseSettings, documentDefinitionName: string): void {\n this.disableInput();\n\n this.documentService\n .patchCaseSettingsForManagement(documentDefinitionName, caseSettings)\n .subscribe(\n () => {\n this.enableInput();\n this.refreshSettings();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n disableInput(): void {\n this.disabled$.next(true);\n }\n\n enableInput(): void {\n this.disabled$.next(false);\n }\n\n private refreshSettings(): void {\n this._refresh$.next(null);\n }\n\n toggleAssignee(currentSettings: CaseSettings, documentDefinitionName: string) {\n this.updateCaseSettings(\n {\n canHaveAssignee: !currentSettings?.canHaveAssignee,\n autoAssignTasks: currentSettings.autoAssignTasks,\n },\n documentDefinitionName\n );\n }\n\n toggleTaskAssignment(currentSettings: CaseSettings, documentDefinitionName: string) {\n this.updateCaseSettings(\n {\n canHaveAssignee: currentSettings?.canHaveAssignee,\n autoAssignTasks: !currentSettings.autoAssignTasks,\n },\n documentDefinitionName\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<h2 class=\"mb-4\">{{ 'dossierManagement.toggleAssignee.title' | translate }}</h2>\n\n<ng-container\n *ngIf=\"{\n currentValue: currentValue$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n loading: loading$ | async,\n disabled: disabled$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs?.currentValue?.canHaveAssignee\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleAssignee(obs?.currentValue, obs.documentDefinitionName)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'dossierManagement.toggleAssignee.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n <ng-container *ngIf=\"obs?.currentValue?.canHaveAssignee\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs?.currentValue?.autoAssignTasks\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleTaskAssignment(obs?.currentValue, obs?.documentDefinitionName)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'dossierManagement.toggleAutoAssignTasks.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <valtimo-spinner></valtimo-spinner>\n</ng-template>\n","/*\n * Copyright 2015-2024 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, OnDestroy} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {DocumentDefinition, DocumentService} from '@valtimo/document';\nimport {EditorModel, PageTitleService} from '@valtimo/components';\n\n@Injectable()\nexport class DossierDetailService implements OnDestroy {\n private readonly _loadingDocumentDefinition$ = new BehaviorSubject<boolean>(true);\n private readonly _previousSelectedVersionNumber$ = new BehaviorSubject<number | null>(null);\n private readonly _selectedVersionNumber$ = new BehaviorSubject<number | null>(null);\n private readonly _selectedDocumentDefinitionName$ = new BehaviorSubject<string>('');\n private readonly _documentDefinition$ = new BehaviorSubject<DocumentDefinition | null>(null);\n private readonly _documentDefinitionModel$: Observable<EditorModel> =\n this.documentDefinition$.pipe(\n map((definition: DocumentDefinition) => ({\n value: JSON.stringify(definition.schema, null, 2),\n language: 'json',\n }))\n );\n\n public get selectedVersionNumber$(): Observable<number | null> {\n return this._selectedVersionNumber$.pipe(filter(version => typeof version === 'number'));\n }\n\n public get previousSelectedVersionNumber$(): Observable<number | null> {\n return this._previousSelectedVersionNumber$.asObservable();\n }\n\n public get selectedDocumentDefinitionName$(): Observable<string> {\n return this._selectedDocumentDefinitionName$.pipe(filter(name => !!name));\n }\n\n public get selectedDocumentDefinitionIsReadOnly$(): Observable<boolean> {\n return this.documentDefinition$.pipe(\n map(definition => definition.readOnly),\n distinctUntilChanged()\n );\n }\n\n public get loadingDocumentDefinition$(): Observable<boolean> {\n return this._loadingDocumentDefinition$.asObservable();\n }\n\n public get documentDefinition$(): Observable<DocumentDefinition> {\n return this._documentDefinition$.pipe(filter(def => !!def));\n }\n\n public get documentDefinitionModel$(): Observable<EditorModel> {\n return this._documentDefinitionModel$;\n }\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly pageTitleService: PageTitleService\n ) {\n this.openDocumentDefinitionSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setSelectedVersionNumber(versionNumber: number): void {\n this._selectedVersionNumber$.next(versionNumber);\n }\n\n public setPreviousSelectedVersionNumber(versionNumber: number | null): void {\n this._previousSelectedVersionNumber$.next(versionNumber);\n }\n\n public setSelectedDocumentDefinitionName(name: string): void {\n this._selectedDocumentDefinitionName$.next(name);\n }\n\n public setLoadingDocumentDefinition(loading: boolean): void {\n this._loadingDocumentDefinition$.next(loading);\n }\n private openDocumentDefinitionSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.selectedVersionNumber$, this.selectedDocumentDefinitionName$])\n .pipe(\n tap(() => {\n this.pageTitleService.setCustomPageTitleSet(false);\n this.setLoadingDocumentDefinition(true);\n }),\n switchMap(([selectedVersion, selectedDocumentDefinitionName]) =>\n this.documentService.getDocumentDefinitionByVersion(\n selectedDocumentDefinitionName,\n selectedVersion\n )\n ),\n tap(res => {\n this._documentDefinition$.next(res);\n this.pageTitleService.setCustomPageTitle(res?.schema?.title || '-', true);\n this.setLoadingDocumentDefinition(false);\n })\n )\n .subscribe()\n );\n }\n}\n","/*\n * Copyright 2015-2024 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 {HttpClient, HttpResponse} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\nimport {InterceptorSkipHeader} from '@valtimo/security';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierExportService {\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this.valtimoEndpointUri = this.configService.config.valtimoApi.endpointUri;\n }\n\n public exportDocumentDefinition(\n documentDefinitionName: string,\n version = 1\n ): Observable<HttpResponse<Blob>> {\n return this.http.get<Blob>(\n `${this.valtimoEndpointUri}management/v1/case/${documentDefinitionName}/${version}/export`,\n {observe: 'response', responseType: 'blob' as 'json', headers: InterceptorSkipHeader}\n );\n }\n}\n","/*\n * Copyright 2015-2024 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 */\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/config';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {BehaviorSubject, catchError, Observable, of, switchMap, take, tap} from 'rxjs';\n\n@Injectable()\nexport class TabManagementService {\n private _valtimoEndpointUri: string;\n private _caseDefinitionId: string;\n\n public readonly tabs$ = new BehaviorSubject<ApiTabItem[]>([]);\n\n public readonly loading$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this._valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/v1/case-definition`;\n }\n\n public loadTabs(): void {\n this.loading$.next(true);\n this.getTabList()\n .pipe(take(1))\n .subscribe({\n next: (items: ApiTabItem[]) => {\n this.tabs$.next(items);\n this.loading$.next(false);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n public dispatchAction(actionResult: Observable<ApiTabItem | ApiTabItem[] | null>): void {\n actionResult\n .pipe(\n tap(() => {\n this.loading$.next(true);\n this.tabs$.next([]);\n }),\n switchMap((result: ApiTabItem | ApiTabItem[] | null) =>\n Array.isArray(result) ? of(result) : this.getTabList()\n ),\n take(1),\n catchError(error => of(error))\n )\n .subscribe({\n next: (tabs: ApiTabItem[]) => {\n this.loading$.next(false);\n this.tabs$.next(tabs);\n },\n error: error => {\n console.log(error);\n },\n });\n }\n\n public addTab(tab: Partial<ApiTabItem>): Observable<ApiTabItem> {\n return this.http.post<ApiTabItem>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`,\n this.getTabDto(tab)\n );\n }\n\n public deleteTab(tabKey: string): Observable<null> {\n return this.http.delete<null>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab/${tabKey}`\n );\n }\n\n public editTab(tab: Partial<ApiTabItem>, tabKey: string): Observable<ApiTabItem> {\n return this.http.put<ApiTabItem>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab/${tabKey}`,\n this.getTabDto(tab)\n );\n }\n\n public editTabsOrder(tabList: ApiTabItem[]): Observable<ApiTabItem[]> {\n return this.http.put<ApiTabItem[]>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`,\n tabList\n );\n }\n\n public setCaseDefinitionId(caseDefinitionId: string): void {\n this._caseDefinitionId = caseDefinitionId;\n }\n\n public getTab(tabKey: string): Observable<ApiTabItem> {\n return this.http.get<ApiTabItem>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab/${tabKey}`\n );\n }\n\n private getTabList(): Observable<ApiTabItem[]> {\n return this.http.get<ApiTabItem[]>(`${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`);\n }\n\n private getTabDto(tab: Partial<ApiTabItem>): Partial<ApiTabItem> {\n if (tab.name === '') {\n delete tab.name;\n }\n\n return tab;\n }\n}\n","/*\n * Copyright 2015-2024 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 DOCUMENT = 'document',\n CASE = 'case',\n PROCESSES = 'processes',\n SEARCH = 'search',\n LIST = 'list',\n TABS = 'tabs',\n STATUSES = 'statuses',\n}\n","/*\n * Copyright 2015-2024 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 */\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CASE_TAB_TOKEN, CaseTabConfig, DefaultTabs} from '@valtimo/dossier';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\nimport {ListItem} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\nimport {TabEnum} from '../models/tab.enum';\nimport {CASE_MANAGEMENT_TAB_TOKEN, CaseManagementTabConfig} from '@valtimo/config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabService {\n public configuredTabKeys: string[];\n\n private _injectedCaseManagementTabs$ = new BehaviorSubject<CaseManagementTabConfig[]>([]);\n\n public get injectedCaseManagementTabs$(): Observable<CaseManagementTabConfig[]> {\n return this._injectedCaseManagementTabs$.asObservable();\n }\n\n private _currentTab$ = new BehaviorSubject<TabEnum | string>(TabEnum.DOCUMENT);\n public get currentTab$(): Observable<TabEnum | string> {\n return this._currentTab$.asObservable();\n }\n public set currentTab(tab: TabEnum | string) {\n this._currentTab$.next(tab);\n }\n\n private _configuredContentKeys$ = new BehaviorSubject<string[]>([]);\n public get configuredContentKeys$(): Observable<string[]> {\n return this._configuredContentKeys$.asObservable();\n }\n public set configuredContentKeys(value: string[]) {\n this._configuredContentKeys$.next(value);\n }\n\n public readonly formDefinitions$: Observable<ListItem[]> = this.formService\n .getAllFormDefinitions()\n .pipe(\n map((formDefinitions: FormDefinitionOption[]) =>\n formDefinitions.map((formDefinition: FormDefinitionOption) => ({\n contentKey: formDefinition.name,\n content: formDefinition.name,\n selected: false,\n }))\n )\n );\n\n public readonly customComponentKeys$ = new BehaviorSubject<ListItem[]>(\n !this.caseTabConfig\n ? []\n : Object.keys(this.caseTabConfig).map((contentKey: string) => ({\n contentKey,\n content: contentKey,\n selected: false,\n }))\n );\n\n public readonly defaultTabs$: Observable<ListItem[]> = this.translateService.stream('key').pipe(\n map(() =>\n Object.values(DefaultTabs).map((key: string) => ({\n contentKey: key,\n content: this.translateService.instant(`dossier.tabs.${key}`),\n selected: false,\n }))\n )\n );\n\n public readonly disableAddTabs$: Observable<{\n standard: boolean;\n custom: boolean;\n formIO: boolean;\n widgets: boolean;\n }> = combineLatest([\n this.configuredContentKeys$,\n this.formDefinitions$,\n this.defaultTabs$,\n this.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => ({\n standard: defaultTabs.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n custom:\n !customComponentKeys.length ||\n customComponentKeys.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n formIO:\n !formDefinitions.length ||\n formDefinitions.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n widgets: false,\n }))\n );\n\n constructor(\n @Optional() @Inject(CASE_TAB_TOKEN) private readonly caseTabConfig: CaseTabConfig,\n @Optional()\n @Inject(CASE_MANAGEMENT_TAB_TOKEN)\n private readonly caseManagementTabConfig: CaseManagementTabConfig[],\n private readonly formService: FormService,\n private readonly translateService: TranslateService\n ) {\n this.setInjectedCaseManagementTabs(this.caseManagementTabConfig);\n }\n\n private setInjectedCaseManagementTabs(\n caseManagementTabConfig?: CaseManagementTabConfig[] | CaseManagementTabConfig\n ): void {\n if (!caseManagementTabConfig) return;\n\n this._injectedCaseManagementTabs$.next(\n Array.isArray(caseManagementTabConfig) ? caseManagementTabConfig : [caseManagementTabConfig]\n );\n }\n}\n","/*\n * Copyright 2015-2024 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, signal} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetJsonEditorService {\n public readonly showPendingModal = signal<boolean>(false);\n}\n","/*\n * Copyright 2015-2024 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 */\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/config';\nimport {CaseWidgetsRes} from '@valtimo/dossier';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetTabManagementService {\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this.valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}`;\n }\n\n public getWidgetTabConfiguration(\n caseDefinitionName: string,\n widgetTabKey: string\n ): Observable<CaseWidgetsRes> {\n return this.http.get<CaseWidgetsRes>(\n `${this.valtimoEndpointUri}management/v1/case-definition/${caseDefinitionName}/widget-tab/${widgetTabKey}`\n );\n }\n\n public updateWidgets(tab: CaseWidgetsRes): Observable<any> {\n return this.http.post<any>(\n `${this.valtimoEndpointUri}management/v1/case-definition/${tab.caseDefinitionName}/widget-tab/${tab.key}`,\n tab\n );\n }\n}\n","/*\n * Copyright 2015-2024 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\ntype ListColumnModal = 'create' | 'edit';\n\nexport {ListColumnModal};\n","/*\n * Copyright 2015-2024 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\ntype StatusModalType = 'edit' | 'add' | 'closed';\n\ntype StatusModalCloseEvent = 'close' | 'closeAndRefresh';\n\nexport {StatusModalType, StatusModalCloseEvent};\n","/*\n * Copyright 2015-2024 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 {EventEmitter} from '@angular/core';\n\nexport interface WidgetContentComponent {\n changeValidEvent: EventEmitter<boolean>;\n}\n","/*\n * Copyright 2015-2024 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 {CaseWidgetType} from '@valtimo/dossier';\nimport {TagType} from 'carbon-components-angular';\n\nenum WidgetEditorTab {\n VISUAL = 'visual',\n JSON = 'json',\n}\n\nconst WidgetTypeTags: {[key: string]: TagType} = {\n [CaseWidgetType.COLLECTION]: 'teal',\n [CaseWidgetType.CUSTOM]: 'magenta',\n [CaseWidgetType.FIELDS]: 'blue',\n [CaseWidgetType.FORMIO]: 'green',\n [CaseWidgetType.TABLE]: 'purple',\n};\n\nexport {WidgetEditorTab, WidgetTypeTags};\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TrashCan16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n} from '@valtimo/components';\nimport {\n CaseWidgetCurrencyDisplayType,\n CaseWidgetDateDisplayType,\n CaseWidgetDateTimeDisplayType,\n CaseWidgetDisplayTypeKey,\n CaseWidgetEnumDisplayType,\n CaseWidgetNumberDisplayType,\n CaseWidgetTextDisplayType,\n CaseWidgetType,\n FieldsCaseWidgetValue,\n} from '@valtimo/dossier';\nimport {\n AccordionModule,\n ButtonModule,\n CheckboxModule,\n Dropdown,\n DropdownModule,\n IconModule,\n IconService,\n InputModule,\n ListItem,\n} from 'carbon-components-angular';\nimport {debounceTime, Observable, Subscription} from 'rxjs';\nimport {WidgetFieldsService, WidgetWizardService} from '../../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-widget-fields-column',\n templateUrl: './dossier-management-widget-fields-column.component.html',\n styleUrls: ['./dossier-management-widget-fields-column.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n DropdownModule,\n InputModule,\n ReactiveFormsModule,\n IconModule,\n AccordionModule,\n InputLabelModule,\n ValuePathSelectorComponent,\n CheckboxModule,\n ],\n})\nexport class DossierManagementWidgetFieldsColumnComponent implements OnInit, OnDestroy {\n @HostBinding('class') public readonly class = 'valtimo-dossier-management-widget-field-column';\n @Input({required: true}) public columnData: FieldsCaseWidgetValue[];\n @Input() public addTranslateKey = 'widgetTabManagement.content.fields.add';\n @Input() public isFieldWidget = false;\n @Input() public documentDefinitionName?: string;\n @Input() public fieldWidthDropdown?: TemplateRef<Dropdown>;\n @Input() public selectedCollection?: ValuePathItem;\n @Input() public showHideWhenEmptyCheckbox = false;\n\n @Output() public columnUpdateEvent = new EventEmitter<{\n data: FieldsCaseWidgetValue[];\n valid: boolean;\n }>();\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n public formGroup = this.fb.group({\n rows: this.fb.array<any>([]),\n });\n\n public get formRows(): FormArray | undefined {\n if (!this.formGroup.get('rows')) return undefined;\n\n return this.formGroup.get('rows') as FormArray;\n }\n\n public displayTypeItems: ListItem[] = this.widgetFieldsService.displayTypeItems;\n\n public getDisplayItemsSelected(row: AbstractControl): ListItem[] {\n return this.widgetFieldsService.getDisplayItemsSelected(row);\n }\n\n public readonly CaseWidgetDisplayTypeKey = CaseWidgetDisplayTypeKey;\n public readonly widgetType: Signal<CaseWidgetType> = computed(\n () => this.widgetWizardService.selectedWidget()?.type ?? CaseWidgetType.FIELDS\n );\n\n public readonly inputTheme$: Observable<CurrentCarbonTheme> = this.cdsThemeService.currentTheme$;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly cdr: ChangeDetectorRef,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService,\n private readonly widgetFieldsService: WidgetFieldsService,\n private readonly widgetWizardService: WidgetWizardService\n ) {\n this.iconService.register(TrashCan16);\n }\n\n public ngOnInit(): void {\n this.initForm();\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.formGroup.reset();\n }\n\n public addField(): void {\n if (!this.formRows) return;\n\n this.formRows.push(\n this.fb.group({\n type: this.fb.control<ListItem>({content: '', selected: false}, [\n Validators.required,\n this.typeSelectValidator,\n ]),\n title: this.fb.control<string>('', Validators.required),\n content: this.fb.control<string>('', Validators.required),\n ellipsisCharacterLimit: this.fb.control<number | null>(\n null,\n Validators.pattern('[1-9][0-9]*')\n ),\n hideWhenEmpty: this.fb.control<boolean | false>(false),\n })\n );\n }\n\n public onDeleteRowClick(event: Event, formArray: FormArray, index: number): void {\n event.stopImmediatePropagation();\n if (!formArray) return;\n\n formArray.removeAt(index);\n }\n\n public onTypeSelected(formRow: FormGroup, event: {item: ListItem}): void {\n this.widgetFieldsService.onDisplayTypeSelected(['title', 'content', 'type'], formRow, event);\n }\n\n public onAddEnumValueClick(valuesFormArray: FormArray): void {\n valuesFormArray.push(\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n })\n );\n }\n\n private typeSelectValidator(control: AbstractControl): null | {[key: string]: string} {\n const controlValue: ListItem | undefined = control.value;\n if (!controlValue || !controlValue.selected) return {error: 'Type is not selected'};\n\n return null;\n }\n\n private getRowForm(row: FieldsCaseWidgetValue): FormGroup {\n return this.fb.group({\n type: this.fb.control<ListItem>(\n {\n content: this.translateService.instant(\n this.translateService.instant(\n `widgetTabManagement.content.displayType.${row.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT}`\n )\n ),\n id: row.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n Validators.required\n ),\n title: this.fb.control<string>(row.title, Validators.required),\n content: this.fb.control<string>(row.value, Validators.required),\n ...((!row.displayProperties ||\n row.displayProperties?.type === CaseWidgetDisplayTypeKey.TEXT) && {\n ellipsisCharacterLimit: this.fb.control<number | null>(\n (row.displayProperties as CaseWidgetTextDisplayType)?.ellipsisCharacterLimit ?? null,\n Validators.pattern('[1-9][0-9]*')\n ),\n }),\n hideWhenEmpty: this.fb.control(\n (row.displayProperties as CaseWidgetTextDisplayType)?.hideWhenEmpty ?? false\n ),\n ...([CaseWidgetDisplayTypeKey.NUMBER, CaseWidgetDisplayTypeKey.PERCENT].includes(\n row.displayProperties?.type as CaseWidgetDisplayTypeKey\n ) && {\n digitsInfo: this.fb.control<string>(\n (row.displayProperties as CaseWidgetNumberDisplayType).digitsInfo ?? ''\n ),\n }),\n ...(row.displayProperties?.type === CaseWidgetDisplayTypeKey.CURRENCY && {\n digitsInfo: this.fb.control<string>(\n (row.displayProperties as CaseWidgetCurrencyDisplayType).digitsInfo ?? ''\n ),\n currencyCode: this.fb.control<string>(\n (row.displayProperties as CaseWidgetCurrencyDisplayType).currencyCode ?? ''\n ),\n display: this.fb.control<string>(\n (row.displayProperties as CaseWidgetCurrencyDisplayType).display ?? ''\n ),\n }),\n ...(row.displayProperties?.type === CaseWidgetDisplayTypeKey.DATE && {\n format: this.fb.control<string>(\n (row.displayProperties as CaseWidgetDateDisplayType).format ?? ''\n ),\n }),\n ...(row.displayProperties?.type === CaseWidgetDisplayTypeKey.DATE_TIME && {\n format: this.fb.control<string>(\n (row.displayProperties as CaseWidgetDateTimeDisplayType).format ?? ''\n ),\n }),\n ...(row.displayProperties?.type === CaseWidgetDisplayTypeKey.ENUM && {\n values: this.fb.array(\n Object.entries((row.displayProperties as CaseWidgetEnumDisplayType).values).map(\n ([key, value]) =>\n this.fb.group({\n key: this.fb.control<string>(key, Validators.required),\n value: this.fb.control<string>(value as string, Validators.required),\n })\n )\n ),\n }),\n });\n }\n\n private initForm(): void {\n if (!this.columnData) {\n this.addField();\n return;\n }\n\n const rowsControl = this.formGroup.get('rows') as FormArray;\n if (!rowsControl) return;\n\n this.columnData.forEach((row: FieldsCaseWidgetValue) => {\n rowsControl.push(this.getRowForm(row), {emitEvent: false});\n });\n\n this.columnUpdateEvent.emit({data: this.columnData, valid: true});\n this.cdr.detectChanges();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.formRows?.valueChanges.pipe(debounceTime(100)).subscribe((rows: any) => {\n const mappedRows: FieldsCaseWidgetValue[] = rows.map((row: any | null) => ({\n key: row.title.replace(/\\W+/g, '-').replace(/\\-$/, '').toLowerCase(),\n title: row.title,\n value: row.content,\n ...(!!row?.type.id && {\n displayProperties: {\n type: row.type.id,\n ...(!!row?.ellipsisCharacterLimit && {\n ellipsisCharacterLimit: row.ellipsisCharacterLimit,\n }),\n ...(!!row?.hideWhenEmpty && {hideWhenEmpty: row.hideWhenEmpty}),\n ...(!!row?.currencyCode && {currencyCode: row.currencyCode}),\n ...(!!row?.display && {display: row.display}),\n ...(!!row?.digitsInfo && {digitsInfo: row.digitsInfo}),\n ...(!!row?.format && {format: row.format}),\n ...(!!row?.values && {\n values: row.values?.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\n }),\n },\n }),\n }));\n this.columnUpdateEvent.emit({data: mappedRows, valid: this.formGroup.valid});\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<form\n *ngIf=\"inputTheme$ | async as inputTheme\"\n class=\"valtimo-dossier-management-widget-field-column\"\n [formGroup]=\"formGroup\"\n>\n <cds-accordion formArrayName=\"rows\" align=\"start\" size=\"sm\">\n @for (formRow of formRows.controls; track $index) {\n <cds-accordion-item\n [title]=\"fieldTitle\"\n [context]=\"{count: $count, index: $index, title: formRow.get('title')?.value}\"\n [expanded]=\"$index === 0\"\n class=\"valtimo-dossier-management-widget-field-column__item\"\n >\n <form\n [formGroup]=\"formRow\"\n class=\"valtimo-dossier-management-widget-field-column__container\"\n >\n <div\n class=\"valtimo-dossier-management-widget-field-column__content\"\n [class.valtimo-dossier-management-widget-field-column__content--collection]=\"\n !!fieldWidthDropdown\n \"\n >\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.title' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.' + widgetType() + '.titleTooltip' | translate\n \"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.titlePlaceholder' | translate\"\n type=\"text\"\n formControlName=\"title\"\n />\n </cds-text-label>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"inputTheme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(formRow, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(formRow)\"></cds-dropdown-list>\n </cds-dropdown>\n\n <ng-container\n *ngTemplateOutlet=\"fieldWidthDropdown; context: {index: $index}\"\n ></ng-container>\n\n <div class=\"valtimo-dossier-management-widget-field-column__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.' + widgetType() + '.valueTooltip' | translate\n \"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"content\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [parentItem]=\"selectedCollection\"\n ></valtimo-value-path-selector>\n </div>\n </div>\n\n <div class=\"valtimo-dossier-management-widget-field-column__options\">\n @switch (formRow.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.displayPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.formatPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.formatPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div\n class=\"valtimo-dossier-management-widget-field-column__enum\"\n formArrayName=\"values\"\n >\n @for (rowValue of formRow.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-field-column__enum-form\"\n >\n <cds-text-label>\n <v-input-label\n *ngIf=\"$index === 0\"\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.enumValueTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"inputTheme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n *ngIf=\"$index === 0\"\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.enumDisplay' | translate\n \"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick($event, formRow.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(formRow.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n\n <cds-text-label\n *ngIf=\"\n formRow.get('type').value.id === CaseWidgetDisplayTypeKey.TEXT && isFieldWidget\n \"\n >\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.ellipsisCharacterLimit' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.ellipsisCharacterLimitTooltip' | translate\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.ellipsisCharacterLimitPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"ellipsisCharacterLimit\"\n />\n </cds-text-label>\n\n <cds-checkbox *ngIf=\"showHideWhenEmptyCheckbox\" formControlName=\"hideWhenEmpty\">\n {{ 'widgetTabManagement.content.hideWhenEmpty' | translate }}\n </cds-checkbox>\n </div>\n </form>\n </cds-accordion-item>\n }\n </cds-accordion>\n\n <button cdsButton=\"primary\" size=\"sm\" (click)=\"addField()\">\n {{ addTranslateKey | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</form>\n\n<ng-template #fieldTitle let-count=\"count\" let-index=\"index\" let-title=\"title\">\n <div class=\"valtimo-dossier-management-widget-field-column__title\">\n {{ title || ('widgetTabManagement.content.fields.titlePlaceholder' | translate) }}\n\n <button\n cdsButton=\"danger\"\n [disabled]=\"count === 1\"\n [iconOnly]=\"true\"\n (click)=\"onDeleteRowClick($event, formRows, index)\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n","import {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {CaseWidgetAction} from '@valtimo/dossier';\nimport {DropdownModule, InputModule, ListItem} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n debounceTime,\n map,\n Observable,\n startWith,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {WidgetWizardService} from '../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-widget-process-selector',\n templateUrl: './dossier-management-widget-process-selector.component.html',\n styleUrl: './dossier-management-widget-process-selector.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, DropdownModule, InputModule, ReactiveFormsModule],\n})\nexport class DossierManagementWidgetProcessSelectorComponent implements OnInit {\n private readonly _documentDefinitionName$ = new BehaviorSubject<string | null>(null);\n @Input() public set documentDefinitionName(value: string) {\n this._documentDefinitionName$.next(value);\n }\n\n public readonly formGroup = this.fb.group({\n name: this.fb.control<string>({\n value: this.widgetWizardService.widgetActions()?.[0]?.name ?? '',\n disabled: !this.widgetWizardService.widgetActions()?.length,\n }),\n processDefinitionKey: this.fb.control<ListItem>({\n content: '',\n key: this.widgetWizardService.widgetActions()?.[0]?.processDefinitionKey,\n selected: false,\n }),\n });\n\n public readonly processDefinitionItems$: Observable<ListItem[]> =\n this._documentDefinitionName$.pipe(\n switchMap((documentDefinitionName: string | null) =>\n this.documentService.findProcessDocumentDefinitionsByStartableByUser(\n documentDefinitionName ?? '',\n true\n )\n ),\n map((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n const selectedProcessKey: string | undefined = this.widgetWizardService.editMode()\n ? this.widgetWizardService.widgetActions()?.[0]?.processDefinitionKey\n : undefined;\n\n return processDocumentDefinitions.map((definition: ProcessDocumentDefinition) => {\n const mappedItem: ListItem = {\n content: definition.processName,\n key: definition.id.processDefinitionKey,\n selected: selectedProcessKey === definition.id.processDefinitionKey,\n };\n\n if (mappedItem.selected)\n this.formGroup.patchValue({processDefinitionKey: mappedItem}, {emitEvent: false});\n\n return mappedItem;\n });\n }),\n startWith([])\n );\n\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly documentService: DocumentService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.formGroup.valueChanges\n .pipe(debounceTime(100))\n .subscribe(\n (changes: Partial<{name: string | null; processDefinitionKey: ListItem | null}>) => {\n const {name, processDefinitionKey} = changes;\n this.widgetWizardService.widgetActions.update(\n (value: CaseWidgetAction[] | undefined) => {\n if (!value)\n return [\n {\n name: !name ? processDefinitionKey?.content : name,\n processDefinitionKey: processDefinitionKey?.key,\n },\n ];\n\n const edittedProcess = value.find(\n (process: CaseWidgetAction) =>\n process.processDefinitionKey === processDefinitionKey?.key\n );\n\n return !!edittedProcess\n ? value.map((process: CaseWidgetAction) =>\n process.processDefinitionKey === edittedProcess.processDefinitionKey\n ? {\n ...process,\n name: !name ? processDefinitionKey?.content : name,\n }\n : process\n )\n : [\n ...value,\n {\n name: !name ? processDefinitionKey?.content : name,\n processDefinitionKey: processDefinitionKey?.key,\n },\n ];\n }\n );\n }\n )\n );\n }\n\n public onProcessSelected(): void {\n if (!this.formGroup.get('name')?.disabled) return;\n\n this.formGroup.get('name')?.enable();\n }\n}\n","<form\n [attr.data-carbon-theme]=\"theme$ | async\"\n [formGroup]=\"formGroup\"\n class=\"valtimo-dossier-management-widget-process-selector\"\n>\n <cds-dropdown\n [label]=\"'widgetTabManagement.processes.buttonTextLabel' | translate\"\n [placeholder]=\"'widgetTabManagement.processes.selectorPlaceholder' | translate\"\n formControlName=\"processDefinitionKey\"\n (selected)=\"onProcessSelected()\"\n >\n <cds-dropdown-list [items]=\"processDefinitionItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-text-label>\n {{ 'widgetTabManagement.processes.buttonTextLabel' | translate }}\n\n <input\n cdsText\n type=\"text\"\n formControlName=\"name\"\n [placeholder]=\"'widgetTabManagement.processes.buttonTextPlaceholder' | translate\"\n />\n </cds-text-label>\n</form>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n ValuePathType,\n} from '@valtimo/components';\nimport {\n CaseWidgetCurrencyDisplayType,\n CaseWidgetDateDisplayType,\n CaseWidgetDateTimeDisplayType,\n CaseWidgetDisplayTypeKey,\n CaseWidgetEnumDisplayType,\n CollectionFieldWidth,\n FieldsCaseWidgetValue,\n WidgetCollectionContent,\n WidgetContentProperties,\n} from '@valtimo/dossier';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n InputModule,\n ListItem,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, debounceTime, map, Observable, Subscription} from 'rxjs';\nimport {WidgetContentComponent} from '../../../models';\nimport {WidgetFieldsService, WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetFieldsColumnComponent} from '../fields/column/dossier-management-widget-fields-column.component';\nimport {DossierManagementWidgetProcessSelectorComponent} from '../process-selector/dossier-management-widget-process-selector.component';\n\n@Component({\n templateUrl: './dossier-management-widget-collection.component.html',\n styleUrl: './dossier-management-widget-collection.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n DossierManagementWidgetFieldsColumnComponent,\n ReactiveFormsModule,\n InputModule,\n DropdownModule,\n ButtonModule,\n IconModule,\n InputLabelModule,\n DossierManagementWidgetProcessSelectorComponent,\n ValuePathSelectorComponent,\n ],\n})\nexport class DossierManagementWidgetCollectionComponent\n implements WidgetContentComponent, OnInit, OnDestroy\n{\n @HostBinding('class') public readonly class = 'valtimo-dossier-management-widget-collection';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly widgetForm = this.fb.group({\n title: this.fb.control(this.widgetWizardService.widgetTitle() ?? '', Validators.required),\n defaultPageSize: this.fb.control(\n (this.widgetWizardService.widgetContent() as WidgetCollectionContent)?.defaultPageSize ?? 5,\n Validators.required\n ),\n collection: this.fb.control(\n (this.widgetWizardService.widgetContent() as WidgetCollectionContent)?.collection ?? '',\n Validators.required\n ),\n });\n\n public readonly cardForm = this.fb.group<any>({\n value: this.fb.control(\n (this.widgetWizardService.widgetContent() as WidgetCollectionContent)?.title?.value ?? '',\n Validators.required\n ),\n type: this.fb.control<ListItem>(\n {\n content: this.translateService.instant(\n this.translateService.instant(\n `widgetTabManagement.content.displayType.${(this.widgetWizardService.widgetContent() as WidgetCollectionContent)?.title?.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT}`\n )\n ),\n id:\n (this.widgetWizardService.widgetContent() as WidgetCollectionContent)?.title\n ?.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n Validators.required\n ),\n });\n\n public readonly theme$: Observable<CARBON_THEME> = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n public readonly ValuePathType = ValuePathType;\n public readonly CaseWidgetDisplayTypeKey = CaseWidgetDisplayTypeKey;\n public readonly content = this.widgetWizardService\n .widgetContent as WritableSignal<WidgetCollectionContent>;\n public readonly displayTypeItems: ListItem[] = this.widgetFieldsService.displayTypeItems;\n\n public readonly selectedCollection$ = new BehaviorSubject<ValuePathItem | null>(null);\n public readonly documentDefinitionName$: Observable<string> = this.route.paramMap.pipe(\n map((paramMap: ParamMap) => paramMap.get('name') ?? '')\n );\n\n public WIDTH_ITEMS: ListItem[] = [\n {\n content: this.translateService.instant('widgetTabManagement.width.fullWidth'),\n id: 'full',\n selected: true,\n },\n {\n content: this.translateService.instant('widgetTabManagement.width.half'),\n id: 'half',\n selected: false,\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n private readonly _contentValid = signal<boolean>(false);\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService,\n private readonly widgetWizardService: WidgetWizardService,\n private readonly widgetFieldsService: WidgetFieldsService,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this.openWidgetFormSubscription();\n this.openCardFormSubscription();\n this.initForm();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onAddEnumValueClick(valuesFormArray: FormArray): void {\n valuesFormArray.push(\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n })\n );\n }\n\n public getDisplayItemsSelected(control: AbstractControl): ListItem[] {\n return this.widgetFieldsService.getDisplayItemsSelected(control);\n }\n\n public getSelectedWidthItem(fieldIndex: number): ListItem[] {\n const widgetContent: WidgetCollectionContent | null =\n this.widgetWizardService.widgetContent() as WidgetCollectionContent;\n\n return !widgetContent\n ? this.WIDTH_ITEMS\n : this.WIDTH_ITEMS.map((item: ListItem) => ({\n ...item,\n selected: widgetContent.fields?.[fieldIndex]?.width === item.id,\n }));\n }\n\n public onColumnUpdateEvent(event: {data: FieldsCaseWidgetValue[]; valid: boolean}): void {\n const {data, valid} = event;\n this.widgetWizardService.widgetContent.update((content: WidgetContentProperties | null) => {\n const existingFields = (content as WidgetCollectionContent)?.fields;\n\n return {\n ...content,\n fields: data.map((item, index) => ({\n ...item,\n width: existingFields?.[index]?.width ?? 'full',\n })),\n } as WidgetCollectionContent;\n });\n this._contentValid.set(valid);\n this.changeValidEvent.emit(valid && this.widgetForm.valid);\n }\n\n public onDeleteRowClick(formArray: FormArray, index: number): void {\n if (!formArray) return;\n\n formArray.removeAt(index);\n }\n\n public onTypeSelected(formGroup: FormGroup, event: {item: ListItem}): void {\n this.widgetFieldsService.onDisplayTypeSelected(['value', 'type'], formGroup, event);\n }\n\n public onWidthSelected(event: {item: ListItem}, fieldIndex: number): void {\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n fields: (content as WidgetCollectionContent)?.fields.map(\n (field: FieldsCaseWidgetValue & {width: CollectionFieldWidth}, index: number) =>\n index === fieldIndex ? {...field, width: event.item.id} : field\n ),\n }) as WidgetCollectionContent\n );\n }\n\n public onCollectionSelected(item: ValuePathItem): void {\n this.selectedCollection$.next(item);\n }\n\n private initForm(): void {\n if (!this.widgetWizardService.widgetContent()) return;\n\n const title = (this.widgetWizardService.widgetContent() as WidgetCollectionContent).title;\n if (!title) return;\n this.onTypeSelected(this.cardForm, {\n item: {id: title.displayProperties?.type ?? '', content: '', selected: true},\n });\n\n this.cardForm.patchValue(\n {\n ...([\n CaseWidgetDisplayTypeKey.NUMBER,\n CaseWidgetDisplayTypeKey.PERCENT,\n CaseWidgetDisplayTypeKey.CURRENCY,\n ].includes(title.displayProperties?.type as CaseWidgetDisplayTypeKey) && {\n digitsInfo: (title.displayProperties as CaseWidgetCurrencyDisplayType).digitsInfo,\n }),\n ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.CURRENCY && {\n currencyCode: (title.displayProperties as CaseWidgetCurrencyDisplayType).currencyCode,\n display: (title.displayProperties as CaseWidgetCurrencyDisplayType).display,\n }),\n ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.DATE && {\n format: (title.displayProperties as CaseWidgetDateDisplayType).format,\n }),\n ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.DATE_TIME && {\n format: (title.displayProperties as CaseWidgetDateTimeDisplayType).format,\n }),\n ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.ENUM && {\n values: Object.entries((title.displayProperties as CaseWidgetEnumDisplayType).values).map(\n ([key, value]) => ({key, value})\n ),\n }),\n },\n {emitEvent: false}\n );\n }\n\n private openWidgetFormSubscription(): void {\n this._subscriptions.add(\n this.widgetForm.valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.widgetWizardService.widgetTitle.set(value?.title ?? '');\n\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n collection: value?.collection || '',\n defaultPageSize: value?.defaultPageSize || 5,\n }) as WidgetCollectionContent\n );\n\n this.changeValidEvent.emit(\n this.widgetForm.valid && this.cardForm.valid && this._contentValid()\n );\n })\n );\n }\n\n private openCardFormSubscription(): void {\n this._subscriptions.add(\n this.cardForm.valueChanges.pipe(debounceTime(500)).subscribe(formValue => {\n let {value, ...displayProperties} = formValue;\n displayProperties = {\n ...displayProperties,\n ...(!!displayProperties.type && {\n type: (displayProperties.type as ListItem).id,\n }),\n ...(!!formValue.values && {\n values: (formValue.values as Array<{[key: string]: string}>)?.reduce(\n (acc, curr) => ({...acc, [curr.key]: curr.value}),\n {}\n ),\n }),\n };\n\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n title: {\n value,\n ...(displayProperties.type !== CaseWidgetDisplayTypeKey.TEXT && {\n displayProperties,\n }),\n },\n }) as any\n );\n\n this.changeValidEvent.emit(\n this.widgetForm.valid && this.cardForm.valid && this._contentValid()\n );\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-container *ngIf=\"{theme: theme$ | async} as obs\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-dossier-management-widget-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <div class=\"valtimo-dossier-management-widget-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"collection\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [type]=\"ValuePathType.COLLECTION\"\n (collectionSelected)=\"onCollectionSelected($event)\"\n ></valtimo-value-path-selector>\n </div>\n </form>\n\n <valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-widget-process-selector>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-dossier-management-widget-collection__card\">\n <section class=\"valtimo-dossier-management-widget-collection__card-title\">\n <div class=\"valtimo-dossier-management-widget-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.valueTooltip' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"value\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [parentItem]=\"selectedCollection$ | async\"\n ></valtimo-value-path-selector>\n </div>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"obs.theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-dossier-management-widget-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-dossier-management-widget-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-collection__enum-form\"\n >\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumValueTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"obs.theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-dossier-management-widget-fields-column\n [columnData]=\"content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [selectedCollection]=\"selectedCollection$ | async\"\n [showHideWhenEmptyCheckbox]=\"true\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n </valtimo-dossier-management-widget-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {\n CUSTOM_CASE_WIDGET_TOKEN,\n CustomCaseWidgetConfig,\n WidgetCustomContent,\n} from '@valtimo/dossier';\nimport {DropdownModule, InputModule, SelectModule} from 'carbon-components-angular';\nimport {ListItem} from 'carbon-components-angular/dropdown/list-item.interface';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, Subscription} from 'rxjs';\nimport {WidgetContentComponent} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetProcessSelectorComponent} from '../process-selector/dossier-management-widget-process-selector.component';\n\n@Component({\n templateUrl: './dossier-management-widget-custom.component.html',\n styleUrls: ['./dossier-management-widget-custom.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n InputModule,\n ReactiveFormsModule,\n SelectModule,\n DropdownModule,\n DossierManagementWidgetProcessSelectorComponent,\n ],\n})\nexport class DossierManagementWidgetCustomComponent\n implements WidgetContentComponent, OnDestroy, OnInit\n{\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly form = this.fb.group({\n widgetTitle: this.fb.control(this.widgetWizardService.widgetTitle(), Validators.required),\n });\n\n public get widgetTitle(): AbstractControl<string> {\n return this.form.get('widgetTitle');\n }\n\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n public readonly documentDefinitionName$: Observable<string> = this.route.paramMap.pipe(\n map((paramMap: ParamMap) => paramMap.get('name') ?? '')\n );\n\n private readonly _selectedCustomComponentKey$ = new BehaviorSubject<string | null>(null);\n private readonly _customCaseWidgetConfig$ = new BehaviorSubject<CustomCaseWidgetConfig>({});\n\n public readonly componentListItems$: Observable<ListItem[]> = combineLatest([\n this._customCaseWidgetConfig$,\n this._selectedCustomComponentKey$,\n ]).pipe(\n filter(([config]) => !!config),\n map(([config, selectedKey]) =>\n Object.keys(config).reduce(\n (acc, curr) => [...acc, {content: curr, selected: curr === selectedKey}],\n []\n )\n )\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n @Optional()\n @Inject(CUSTOM_CASE_WIDGET_TOKEN)\n private readonly customCaseWidgetConfig: CustomCaseWidgetConfig,\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService,\n private readonly route: ActivatedRoute\n ) {\n if (customCaseWidgetConfig) this._customCaseWidgetConfig$.next(customCaseWidgetConfig);\n }\n\n public componentDropDownChange(event: {\n item: {content: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const componentKey = event?.item?.content;\n\n if (!componentKey) return;\n\n this._selectedCustomComponentKey$.next(componentKey);\n this.widgetWizardService.widgetContent.set({componentKey});\n this.changeValidEvent.emit(true);\n }\n\n public ngOnInit(): void {\n this.openTitleSubscription();\n this.prefill();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openTitleSubscription(): void {\n this._subscriptions.add(\n this.widgetTitle.valueChanges.subscribe(title => {\n this.widgetWizardService.widgetTitle.set(title);\n })\n );\n }\n\n private prefill(): void {\n const componentKey = (this.widgetWizardService.widgetContent() as WidgetCustomContent)\n ?.componentKey;\n\n if (!componentKey || Object.keys(this.customCaseWidgetConfig || {}).length === 0) return;\n\n this._selectedCustomComponentKey$.next(componentKey);\n this.changeValidEvent.emit(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<form\n class=\"valtimo-dossier-management-widget-custom\"\n [formGroup]=\"form\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n>\n <cds-text-label class=\"valtimo-dossier-management-widget-field__input\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-widget-process-selector>\n\n <cds-label class=\"dropdown-label\">\n {{ 'widgetTabManagement.content.custom.selectComponent' | translate }}\n\n <cds-dropdown\n *ngIf=\"componentListItems$ | async as componentListItems\"\n [appendInline]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.custom.placeholder' | translate\"\n [disabled]=\"componentListItems.length === 0\"\n (selected)=\"componentDropDownChange($event)\"\n >\n <cds-dropdown-list [items]=\"componentListItems\"> </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n</form>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n} from '@valtimo/components';\nimport {FieldsCaseWidgetValue, WidgetFieldsContent} from '@valtimo/dossier';\nimport {ButtonModule, IconModule, InputModule, Tab, TabsModule} from 'carbon-components-angular';\nimport {debounceTime, map, Observable, Subscription} from 'rxjs';\n\nimport {WidgetContentComponent} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetProcessSelectorComponent} from '../process-selector/dossier-management-widget-process-selector.component';\nimport {DossierManagementWidgetFieldsColumnComponent} from './column/dossier-management-widget-fields-column.component';\n\n@Component({\n templateUrl: './dossier-management-widget-fields.component.html',\n styleUrls: ['./dossier-management-widget-fields.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n InputModule,\n TabsModule,\n IconModule,\n ReactiveFormsModule,\n ButtonModule,\n DossierManagementWidgetFieldsColumnComponent,\n DossierManagementWidgetProcessSelectorComponent,\n InputLabelModule,\n ],\n})\nexport class DossierManagementWidgetFieldsComponent\n implements WidgetContentComponent, OnDestroy, OnInit, AfterViewInit\n{\n @HostBinding('class') public readonly class = 'valtimo-dossier-management-widget-field';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n @ViewChild(Tab) private readonly _tab: Tab;\n\n public form = this.fb.group({\n widgetTitle: this.fb.control(this.widgetWizardService.widgetTitle(), Validators.required),\n });\n\n public readonly columns = signal<null[]>([null]);\n public readonly widgetWidth = this.widgetWizardService.widgetWidth();\n public readonly selectedTabIndex = -1;\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n public readonly selectedWidgetContent = computed(() =>\n (this.widgetWizardService.widgetContent() as WidgetFieldsContent)?.columns.reduce(\n (acc, curr, index) => ({\n ...acc,\n [index]: curr,\n }),\n {}\n )\n );\n public readonly activeTab = signal<number>(0);\n public readonly documentDefinitionName$: Observable<string> = this.route.paramMap.pipe(\n map((paramMap: ParamMap) => paramMap.get('name') ?? '')\n );\n\n private readonly _subscriptions = new Subscription();\n private readonly _contentValid = signal<boolean>(false);\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly route: ActivatedRoute,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(debounceTime(100)).subscribe(formValue => {\n this.widgetWizardService.widgetTitle.set(formValue.widgetTitle ?? '');\n this.changeValidEvent.emit(this.form.valid && this._contentValid());\n })\n );\n const widgetContent = (this.widgetWizardService.widgetContent() as WidgetFieldsContent)\n ?.columns;\n if (!widgetContent) return;\n\n this.columns.set(Object.keys(widgetContent).map(() => null));\n }\n\n public ngAfterViewInit(): void {\n this._tab.tabIndex = -1;\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.changeValidEvent.emit(false);\n this.form.reset();\n this._contentValid.set(false);\n }\n\n public onAddColumnClick(): void {\n this.columns.update(value => [...value, null]);\n this.activeTab.set(this.columns().length - 1);\n this.changeValidEvent.emit(false);\n }\n\n public onTabSelected(index: number): void {\n this.activeTab.set(index);\n }\n\n public onDeleteColumnClick(index: number): void {\n this.widgetWizardService.widgetContent.update(content => {\n if (!content) return null;\n\n const widgetContent = content as WidgetFieldsContent;\n\n let tempIndex = index;\n let tempContent = {...widgetContent};\n while (tempIndex < this.columns().length - 1) {\n tempContent.columns[tempIndex] = tempContent.columns[tempIndex + 1];\n tempIndex++;\n }\n tempContent.columns.splice(tempIndex, 1);\n\n return tempContent;\n });\n\n this.columns.update((columns: null[]) => {\n const temp = columns;\n temp.splice(index, 1);\n\n return temp;\n });\n\n if (this.activeTab() !== index) return;\n\n this.activeTab.set(-1);\n }\n\n public onColumnUpdateEvent(\n event: {\n data: FieldsCaseWidgetValue[];\n valid: boolean;\n },\n columnIndex: number\n ): void {\n this.widgetWizardService.widgetContent.update(content => {\n if (!content) return {columns: [event.data]};\n\n const columns = (content as WidgetFieldsContent)?.columns.map((column, index) =>\n index === columnIndex ? event.data : column\n );\n return {\n columns: columnIndex > columns.length - 1 ? [...columns, event.data] : columns,\n };\n });\n this._contentValid.set(event.valid);\n this.changeValidEvent.emit(event.valid && this.form.valid);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<p>{{ 'widgetTabManagement.content.description' | translate }}</p>\n\n<form [formGroup]=\"form\">\n <cds-text-label\n [attr.data-carbon-theme]=\"theme$ | async\"\n class=\"valtimo-dossier-management-widget-field__input\"\n >\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n</form>\n\n<valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n></valtimo-dossier-management-widget-process-selector>\n\n<cds-tabs type=\"contained\">\n @for (column of columns(); track $index) {\n <cds-tab\n [active]=\"activeTab() === $index\"\n [heading]=\"columnHeading\"\n [context]=\"{index: $index, count: $count}\"\n (selected)=\"onTabSelected($index)\"\n >\n <valtimo-dossier-management-widget-fields-column\n *ngIf=\"activeTab() === $index\"\n [isFieldWidget]=\"true\"\n [columnData]=\"selectedWidgetContent()?.[$index]\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [showHideWhenEmptyCheckbox]=\"true\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event, $index)\"\n ></valtimo-dossier-management-widget-fields-column>\n </cds-tab>\n }\n <cds-tab\n *ngIf=\"columns().length < widgetWidth\"\n [heading]=\"addColumn\"\n [id]=\"'addColumn'\"\n class=\"valtimo-dossier-management-widget-field__add\"\n ></cds-tab>\n</cds-tabs>\n\n<ng-template #addColumn>\n <button\n cdsButton=\"ghost\"\n [iconOnly]=\"true\"\n (click)=\"$event.stopImmediatePropagation(); onAddColumnClick()\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #columnHeading let-data>\n <div class=\"valtimo-dossier-management-widget-field__heading\">\n {{ 'widgetTabManagement.content.column' | translate: {number: data.index + 1} }}\n\n <button\n cdsButton=\"ghost\"\n [disabled]=\"data.count === 1\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onDeleteColumnClick(data.index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {WidgetFormioContent} from '@valtimo/dossier';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\nimport {DropdownModule, InputModule, SelectModule} from 'carbon-components-angular';\nimport {ListItem} from 'carbon-components-angular/dropdown/list-item.interface';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, Subscription} from 'rxjs';\nimport {WidgetContentComponent} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetProcessSelectorComponent} from '../process-selector/dossier-management-widget-process-selector.component';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\n\n@Component({\n templateUrl: './dossier-management-widget-formio.component.html',\n styleUrls: ['./dossier-management-widget-formio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n InputModule,\n ReactiveFormsModule,\n SelectModule,\n DropdownModule,\n DossierManagementWidgetProcessSelectorComponent,\n ],\n})\nexport class DossierManagementWidgetFormioComponent\n implements WidgetContentComponent, OnDestroy, OnInit\n{\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly form = this.fb.group({\n widgetTitle: this.fb.control(this.widgetWizardService.widgetTitle(), Validators.required),\n });\n\n public get widgetTitle(): AbstractControl<string | null> | null {\n return this.form.get('widgetTitle');\n }\n\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n private readonly _selectedFormDefinitionId$ = new BehaviorSubject<string | null>(null);\n\n private readonly _formDefinitionOptions$ = new BehaviorSubject<FormDefinitionOption[]>([]);\n\n public readonly documentDefinitionName$: Observable<string> = this.route.paramMap.pipe(\n map((paramMap: ParamMap) => paramMap.get('name') ?? '')\n );\n public readonly formListItems$: Observable<ListItem[]> = combineLatest([\n this._formDefinitionOptions$,\n this._selectedFormDefinitionId$,\n ]).pipe(\n filter(([options]) => !!options),\n map(([options, selectedFormId]) =>\n options.map(option => ({\n content: option.name,\n id: option.name,\n selected: option.name === selectedFormId,\n }))\n )\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService,\n private readonly formService: FormService,\n private readonly route: ActivatedRoute\n ) {}\n\n public componentDropDownChange(event: {\n item: {id: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const formDefinitionId = event?.item?.id;\n\n if (!formDefinitionId) return;\n\n this._selectedFormDefinitionId$.next(formDefinitionId);\n this.widgetWizardService.widgetContent.set({formDefinitionName: formDefinitionId});\n this.changeValidEvent.emit(true);\n }\n\n public ngOnInit(): void {\n this.fetchFormDefinition();\n this.openTitleSubscription();\n this.prefill();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openTitleSubscription(): void {\n this._subscriptions.add(\n this.widgetTitle?.valueChanges.subscribe(title => {\n this.widgetWizardService.widgetTitle.set(title);\n })\n );\n }\n\n private fetchFormDefinition(): void {\n this.formService.getAllFormDefinitions().subscribe(definitions => {\n this._formDefinitionOptions$.next(definitions);\n });\n }\n\n private prefill(): void {\n const formDefinitionId = (this.widgetWizardService.widgetContent() as WidgetFormioContent)\n ?.formDefinitionName;\n\n if (!formDefinitionId) return;\n\n this._selectedFormDefinitionId$.next(formDefinitionId);\n this.changeValidEvent.emit(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<form\n class=\"valtimo-dossier-management-widget-formio\"\n [formGroup]=\"form\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n>\n <cds-text-label class=\"valtimo-dossier-management-widget-field__input\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-widget-process-selector>\n\n <cds-label class=\"dropdown-label\">\n {{ 'widgetTabManagement.content.formio.selectForm' | translate }}\n\n <cds-dropdown\n *ngIf=\"formListItems$ | async as formListItems\"\n [appendInline]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.formio.placeholder' | translate\"\n [disabled]=\"formListItems.length === 0\"\n [dropUp]=\"false\"\n (selected)=\"componentDropDownChange($event)\"\n >\n <cds-dropdown-list [items]=\"formListItems\"> </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n</form>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {FormBuilder, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n ValuePathType,\n} from '@valtimo/components';\nimport {FieldsCaseWidgetValue, WidgetContentProperties, WidgetTableContent} from '@valtimo/dossier';\nimport {ButtonModule, InputModule, ToggleModule} from 'carbon-components-angular';\nimport {BehaviorSubject, debounceTime, map, Observable, Subscription} from 'rxjs';\nimport {WidgetContentComponent} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetFieldsColumnComponent} from '../fields/column/dossier-management-widget-fields-column.component';\nimport {DossierManagementWidgetProcessSelectorComponent} from '../process-selector/dossier-management-widget-process-selector.component';\n\n@Component({\n templateUrl: './dossier-management-widget-table.component.html',\n styleUrl: './dossier-management-widget-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n TranslateModule,\n DossierManagementWidgetFieldsColumnComponent,\n ReactiveFormsModule,\n InputModule,\n ToggleModule,\n ButtonModule,\n InputLabelModule,\n DossierManagementWidgetProcessSelectorComponent,\n ValuePathSelectorComponent,\n ],\n})\nexport class DossierManagementWidgetTableComponent\n implements WidgetContentComponent, OnInit, OnDestroy\n{\n @HostBinding('class') public readonly class = 'valtimo-dossier-management-widget-table';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly form: FormGroup = this.fb.group({\n title: this.fb.control<string>(\n this.widgetWizardService.widgetTitle() ?? '',\n Validators.required\n ),\n collection: this.fb.control<string>(\n (this.widgetWizardService.widgetContent() as WidgetTableContent)?.collection ?? '',\n Validators.required\n ),\n defaultPageSize: this.fb.control<number>(\n (this.widgetWizardService.widgetContent() as WidgetTableContent)?.defaultPageSize ?? 5,\n Validators.required\n ),\n });\n\n public readonly theme$: Observable<CARBON_THEME> = this.cdsThemeService.currentTheme$.pipe(\n map((currentTheme: CurrentCarbonTheme) =>\n currentTheme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n public readonly content = this.widgetWizardService\n .widgetContent as WritableSignal<WidgetTableContent>;\n public readonly checked = computed(\n () =>\n (this.widgetWizardService.widgetContent() as WidgetTableContent)?.firstColumnAsTitle || false\n );\n\n public readonly selectedCollection$ = new BehaviorSubject<ValuePathItem | null>(null);\n public readonly documentDefinitionName$: Observable<string> = this.route.paramMap.pipe(\n map((paramMap: ParamMap) => paramMap.get('name') ?? '')\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n public readonly ValuePathType = ValuePathType;\n\n private readonly _contentValid = signal<boolean>(this.widgetWizardService.editMode());\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.widgetWizardService.widgetTitle.set(value?.title ?? '');\n\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n collection: value?.collection || '',\n defaultPageSize: value?.defaultPageSize || 5,\n }) as WidgetTableContent\n );\n\n this.changeValidEvent.emit(this.form.valid && this._contentValid());\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._contentValid.set(false);\n this._subscriptions.unsubscribe();\n this.changeValidEvent.emit(false);\n this.form.reset();\n }\n\n public onColumnUpdateEvent(event: {data: FieldsCaseWidgetValue[]; valid: boolean}): void {\n const {data, valid} = event;\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({...content, columns: data}) as WidgetTableContent\n );\n this._contentValid.set(valid);\n this.changeValidEvent.emit(valid && this.form.valid);\n }\n\n public onCheckedChange(firstColumnAsTitle: boolean): void {\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({...content, firstColumnAsTitle}) as WidgetTableContent\n );\n }\n\n public onCollectionSelected(item: ValuePathItem): void {\n this.selectedCollection$.next(item);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<form\n *ngIf=\"{theme: theme$ | async} as obs\"\n [formGroup]=\"form\"\n class=\"valtimo-dossier-management-widget-table__form\"\n>\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.defaultPageSizePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <div class=\"valtimo-dossier-management-widget-table__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"collection\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [type]=\"ValuePathType.COLLECTION\"\n (collectionSelected)=\"onCollectionSelected($event)\"\n ></valtimo-value-path-selector>\n </div>\n</form>\n\n<valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n></valtimo-dossier-management-widget-process-selector>\n\n<span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.columns' | translate }}\n</span>\n\n<valtimo-dossier-management-widget-fields-column\n [addTranslateKey]=\"'widgetTabManagement.content.table.addColumn'\"\n [columnData]=\"content()?.columns\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [selectedCollection]=\"selectedCollection$ | async\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n></valtimo-dossier-management-widget-fields-column>\n\n<section class=\"valtimo-dossier-management-widget-table__toggle\">\n <span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.options' | translate }}\n </span>\n\n <cds-toggle\n [checked]=\"checked()\"\n [label]=\"'widgetTabManagement.content.table.firstColumnAsTitle' | translate\"\n [onText]=\"'interface.yes' | translate\"\n [offText]=\"'interface.no' | translate\"\n (checkedChange)=\"onCheckedChange($event)\"\n ></cds-toggle>\n</section>\n","/*\n * Copyright 2015-2024 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 * from './collection/dossier-management-widget-collection.component';\nexport * from './custom/dossier-management-widget-custom.component';\nexport * from './fields/dossier-management-widget-fields.component';\nexport * from './formio/dossier-management-widget-formio.component';\nexport * from './process-selector/dossier-management-widget-process-selector.component';\nexport * from './table/dossier-management-widget-table.component';\n","/*\n * Copyright 2015-2024 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 {Type} from '@angular/core';\nimport {WidgetContentComponent} from './widget-content.model';\nimport {CaseWidgetType} from '@valtimo/dossier';\nimport {\n DossierManagementWidgetCollectionComponent,\n DossierManagementWidgetCustomComponent,\n DossierManagementWidgetFieldsComponent,\n DossierManagementWidgetFormioComponent,\n DossierManagementWidgetTableComponent,\n} from '../components/dossier-management-widget-configurators';\n\nenum WidgetWizardStep {\n TYPE,\n WIDTH,\n STYLE,\n CONTENT,\n}\n\nenum WidgetStyle {\n DEFAULT = 'default',\n HIGH_CONTRAST = 'high-contrast',\n}\n\ninterface WidgetTypeSelection {\n titleKey: string;\n descriptionKey: string;\n illustrationUrl: string;\n type: CaseWidgetType;\n component: Type<WidgetContentComponent>;\n}\n\nconst AVAILABLE_WIDGETS: WidgetTypeSelection[] = [\n {\n titleKey: 'widgetTabManagement.types.fields.title',\n descriptionKey: 'widgetTabManagement.types.fields.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/fields.svg',\n type: CaseWidgetType.FIELDS,\n component: DossierManagementWidgetFieldsComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.custom.title',\n descriptionKey: 'widgetTabManagement.types.custom.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/angular.svg',\n type: CaseWidgetType.CUSTOM,\n component: DossierManagementWidgetCustomComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.formio.title',\n descriptionKey: 'widgetTabManagement.types.formio.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/formio.svg',\n type: CaseWidgetType.FORMIO,\n component: DossierManagementWidgetFormioComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.table.title',\n descriptionKey: 'widgetTabManagement.types.table.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/table.svg',\n type: CaseWidgetType.TABLE,\n component: DossierManagementWidgetTableComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.collection.title',\n descriptionKey: 'widgetTabManagement.types.collection.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/collection.svg',\n type: CaseWidgetType.COLLECTION,\n component: DossierManagementWidgetCollectionComponent,\n },\n];\n\nconst WIDGET_WIDTH_LABELS: {[key: number]: string} = {\n 1: 'widgetTabManagement.width.small.title',\n 2: 'widgetTabManagement.width.medium.title',\n 3: 'widgetTabManagement.width.large.title',\n 4: 'widgetTabManagement.width.xtraLarge.title',\n};\n\nconst WIDGET_STYLE_LABELS: {[key: string]: string} = {\n [WidgetStyle.DEFAULT]: 'widgetTabManagement.style.default.title',\n [WidgetStyle.HIGH_CONTRAST]: 'widgetTabManagement.style.highContrast.title',\n};\n\nexport {\n WidgetWizardStep,\n WidgetTypeSelection,\n AVAILABLE_WIDGETS,\n WidgetStyle,\n WIDGET_WIDTH_LABELS,\n WIDGET_STYLE_LABELS,\n};\n","/*\n * Copyright 2015-2024 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 * from './list-column.model';\nexport * from './status.model';\nexport * from './tab.enum';\nexport * from './widget-content.model';\nexport * from './widget-editor.model';\nexport * from './widget-wizard.model';\n","import {computed, Injectable, Signal, signal, WritableSignal} from '@angular/core';\nimport {\n BasicCaseWidget,\n CaseWidgetAction,\n CaseWidgetType,\n CaseWidgetWidth,\n WidgetContentProperties,\n} from '@valtimo/dossier';\nimport {WidgetStyle, WidgetTypeSelection} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetWizardService {\n public readonly selectedWidget: WritableSignal<WidgetTypeSelection | null> = signal(null);\n\n public readonly widgetWidth: WritableSignal<CaseWidgetWidth | null> = signal(null);\n\n public readonly widgetStyle: WritableSignal<WidgetStyle | null> = signal(null);\n\n public readonly widgetContent: WritableSignal<WidgetContentProperties | null> = signal(null);\n\n public readonly widgetTitle: WritableSignal<string | null> = signal(null);\n\n public readonly widgetKey: WritableSignal<string | null> = signal(null);\n\n public readonly widgetActions: WritableSignal<CaseWidgetAction[] | undefined> = signal(undefined);\n\n public readonly widgetsConfig: Signal<BasicCaseWidget> = computed(() => ({\n key: this.widgetKey() ?? '',\n title: this.widgetTitle() ?? '',\n type: this.selectedWidget()?.type ?? CaseWidgetType.FIELDS,\n width: this.widgetWidth() ?? 4,\n highContrast: (this.widgetStyle() ?? WidgetStyle.DEFAULT) === WidgetStyle.HIGH_CONTRAST,\n properties: this.widgetContent() ?? ({} as any),\n actions: this.widgetActions() ?? [],\n }));\n\n public readonly editMode: WritableSignal<boolean> = signal(false);\n\n public resetWizard(): void {\n this.selectedWidget.set(null);\n this.widgetWidth.set(null);\n this.widgetStyle.set(null);\n this.widgetContent.set(null);\n this.widgetTitle.set(null);\n this.widgetKey.set(null);\n this.widgetActions.set(undefined);\n this.editMode.set(false);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CaseWidgetDisplayTypeKey} from '@valtimo/dossier';\nimport {ListItem} from 'carbon-components-angular';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetFieldsService {\n public readonly displayTypeItems: ListItem[] = [\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.TEXT}`\n ),\n id: CaseWidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.BOOLEAN}`\n ),\n id: CaseWidgetDisplayTypeKey.BOOLEAN,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.CURRENCY}`\n ),\n id: CaseWidgetDisplayTypeKey.CURRENCY,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.DATE}`\n ),\n id: CaseWidgetDisplayTypeKey.DATE,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.DATE_TIME}`\n ),\n id: CaseWidgetDisplayTypeKey.DATE_TIME,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.ENUM}`\n ),\n id: CaseWidgetDisplayTypeKey.ENUM,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.NUMBER}`\n ),\n id: CaseWidgetDisplayTypeKey.NUMBER,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.PERCENT}`\n ),\n id: CaseWidgetDisplayTypeKey.PERCENT,\n selected: false,\n },\n ];\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService\n ) {}\n\n public getDisplayItemsSelected(control: AbstractControl): ListItem[] {\n const typeControlValue: ListItem = control.get('type')?.value;\n\n if (!typeControlValue) return this.displayTypeItems;\n\n return this.displayTypeItems.map((item: ListItem) => ({\n ...item,\n selected: typeControlValue.id === item.id && typeControlValue.selected,\n }));\n }\n\n public onDisplayTypeSelected(\n mainKeysArray: string[],\n formGroup: FormGroup,\n event: {item: ListItem}\n ): void {\n const extraControlKeys = Object.keys(formGroup.controls).filter(\n (key: string) => !mainKeysArray.includes(key)\n );\n\n extraControlKeys.forEach((controlKey: string) => formGroup.removeControl(controlKey));\n\n switch (event.item.id) {\n case CaseWidgetDisplayTypeKey.BOOLEAN:\n break;\n case CaseWidgetDisplayTypeKey.TEXT:\n formGroup.addControl('ellipsisCharacterLimit', this.fb.control(''));\n break;\n case CaseWidgetDisplayTypeKey.CURRENCY:\n formGroup.addControl('currencyCode', this.fb.control(''));\n formGroup.addControl('display', this.fb.control(''));\n formGroup.addControl('digitsInfo', this.fb.control(''));\n break;\n case CaseWidgetDisplayTypeKey.DATE:\n formGroup.addControl('format', this.fb.control(''));\n break;\n case CaseWidgetDisplayTypeKey.DATE_TIME:\n formGroup.addControl('format', this.fb.control(''));\n break;\n case CaseWidgetDisplayTypeKey.ENUM:\n formGroup.addControl(\n 'values',\n this.fb.array(\n [\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n }),\n ],\n Validators.required\n )\n );\n break;\n default:\n formGroup.addControl('digitsInfo', this.fb.control(''));\n break;\n }\n }\n}\n","/*\n * Copyright 2015-2024 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 * from './dossier-detail.service';\nexport * from './dossier-export.service';\nexport * from './tab-management.service';\nexport * from './tab.service';\nexport * from './widget-json-editor.service';\nexport * from './widget-tab-management.service';\nexport * from './widget-wizard.service';\nexport * from './widget-fields.service';\n","/*\n * Copyright 2015-2024 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 */\nimport {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ModalComponent} from '@valtimo/components';\nimport {\n DocumentDefinition,\n DocumentService,\n ProcessDocumentDefinition,\n ProcessDocumentDefinitionRequest,\n} from '@valtimo/document';\nimport {ProcessDefinition, ProcessService} from '@valtimo/process';\nimport {NotificationService} from 'carbon-components-angular';\nimport {switchMap, take} from 'rxjs';\nimport {DossierDetailService} from '../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-connect-modal',\n templateUrl: './dossier-management-connect-modal.component.html',\n styleUrls: ['./dossier-management-connect-modal.component.scss'],\n providers: [NotificationService],\n})\nexport class DossierManagementConnectModalComponent implements OnInit {\n @ViewChild('dossierConnectModal') private readonly _modal: ModalComponent;\n @Output() public reloadProcessDocumentDefinitions = new EventEmitter<any>();\n\n public documentDefinition: DocumentDefinition | null = null;\n public processDefinitions: ProcessDefinition[];\n public newDocumentProcessDefinition: ProcessDefinition | null = null;\n public newDocumentProcessDefinitionInit = true;\n public newDocumentProcessDefinitionStartableByUser = false;\n public processDocumentDefinitionExists: any = {};\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly dossierDetailService: DossierDetailService,\n private readonly notificationService: NotificationService,\n private readonly processService: ProcessService,\n private readonly translateService: TranslateService\n ) {}\n\n public loadProcessDocumentDefinitions(): void {\n if (!this.documentDefinition) {\n return;\n }\n const {name, version} = this.documentDefinition.id;\n this.processDocumentDefinitionExists = {};\n this.documentService\n .findProcessDocumentDefinitionsByVersion(name, version)\n .subscribe((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n processDocumentDefinitions.forEach(\n (processDocumentDefinition: ProcessDocumentDefinition) => {\n this.processDocumentDefinitionExists[\n processDocumentDefinition.id.processDefinitionKey\n ] = true;\n }\n );\n });\n }\n\n public loadProcessDefinitions(): void {\n this.processService\n .getProcessDefinitions()\n .subscribe((processDefinitions: ProcessDefinition[]) => {\n this.processDefinitions = processDefinitions;\n });\n }\n\n public ngOnInit(): void {\n this.loadProcessDefinitions();\n }\n\n public openModal(dossier: DocumentDefinition): void {\n this.documentDefinition = dossier;\n this.newDocumentProcessDefinition = null;\n this.newDocumentProcessDefinitionInit = true;\n this.newDocumentProcessDefinitionStartableByUser = false;\n this.loadProcessDocumentDefinitions();\n this._modal.show();\n }\n\n public submit(): void {\n if (!this.documentDefinition || !this.newDocumentProcessDefinition) {\n return;\n }\n\n const request: ProcessDocumentDefinitionRequest = {\n canInitializeDocument: this.newDocumentProcessDefinitionInit,\n documentDefinitionName: this.documentDefinition.id.name,\n documentDefinitionVersion: this.documentDefinition.id.version,\n processDefinitionKey: this.newDocumentProcessDefinition.key,\n startableByUser: this.newDocumentProcessDefinitionStartableByUser,\n };\n\n this.dossierDetailService.selectedVersionNumber$\n .pipe(\n switchMap((documentDefinitionVersion: number) =>\n this.documentService.createProcessDocumentDefinition({\n ...request,\n documentDefinitionVersion,\n })\n ),\n take(1)\n )\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.linkSuccess'\n ),\n duration: 5000,\n });\n this.reloadProcessDocumentDefinitions.emit();\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.linkFailure'\n ),\n duration: 5000,\n });\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-modal\n #dossierConnectModal\n elementId=\"dossierConnectModal\"\n [title]=\"documentDefinition ? documentDefinition.schema.title : 'Document definition'\"\n subtitle=\"Connect document definition to process definition\"\n showFooter=\"true\"\n>\n <div body *ngIf=\"documentDefinition\">\n <p>\n {{ 'Select process definition for document definition' | translate }}\n <strong>{{ documentDefinition.id.name }} *</strong>\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <select class=\"form-control\" [(ngModel)]=\"newDocumentProcessDefinition\">\n <option [ngValue]=\"null\">{{ 'dossierManagement.selectProcessDef' | translate }}</option>\n <option\n *ngFor=\"let processDefinition of processDefinitions\"\n [disabled]=\"processDocumentDefinitionExists[processDefinition.key]\"\n [ngValue]=\"processDefinition\"\n >\n {{ processDefinition.name }} ({{ processDefinition.key }})\n </option>\n </select>\n </div>\n <p>\n {{ 'Select options for the selected process' | translate }}\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.processCreatesCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionInit\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.processCreatesCase' | translate\n }}</span>\n </label>\n <label\n class=\"custom-control custom-checkbox custom-control-inline ml-2 pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.startableWithinCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionStartableByUser\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.startableWithinCase' | translate\n }}</span>\n </label>\n </div>\n </div>\n <div footer>\n <button\n (click)=\"submit()\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\"\n [disabled]=\"!newDocumentProcessDefinition\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2024 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, ViewChild} from '@angular/core';\nimport {\n DocumentService,\n DocumentDefinition,\n UndeployDocumentDefinitionResult,\n} from '@valtimo/document';\nimport {MenuService, ModalComponent} from '@valtimo/components';\nimport {ToastrService} from 'ngx-toastr';\nimport {Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-dossier-management-remove-modal',\n templateUrl: './dossier-management-remove-modal.component.html',\n styleUrls: ['./dossier-management-remove-modal.component.scss'],\n})\nexport class DossierManagementRemoveModalComponent {\n public documentDefinition: DocumentDefinition | null = null;\n public errors: string[] = [];\n @ViewChild('documentDefinitionRemoveModal') modal: ModalComponent;\n\n constructor(\n private documentService: DocumentService,\n private toasterService: ToastrService,\n private router: Router,\n private translateService: TranslateService,\n private menuService: MenuService\n ) {}\n\n openModal(documentDefinition: DocumentDefinition) {\n this.documentDefinition = documentDefinition;\n this.modal.show();\n }\n\n removeDocumentDefinition() {\n this.documentService\n .removeDocumentDefinitionForManagement(this.documentDefinition.id.name)\n .subscribe(\n () => {\n this.menuService.reload();\n this.router.navigate(['/dossier-management']);\n this.toasterService.success(\n this.translateService.instant('remove-document-definition-success')\n );\n },\n (result: UndeployDocumentDefinitionResult) => {\n this.errors = result.errors;\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-modal\n #documentDefinitionRemoveModal\n elementId=\"documentDefinitionRemoveModal\"\n [title]=\"documentDefinition ? documentDefinition.schema.title : 'Document definition'\"\n subtitle=\"{{ 'Remove document definition' | translate }}\"\n showFooter=\"true\"\n>\n <div body *ngIf=\"documentDefinition\">\n <div class=\"alert alert-contrast alert-danger mt-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div\n class=\"message\"\n [innerHTML]=\"'remove-document-definition-confirmation' | translate\"\n ></div>\n </div>\n <div *ngIf=\"errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n </div>\n <div footer>\n <button (click)=\"removeDocumentDefinition()\" class=\"btn btn-primary\" data-dismiss=\"modal\">\n {{ 'remove-document-definition-confirmation-button' | translate }}\n </button>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2024 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 ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, tap} from 'rxjs';\nimport {ListItem, Notification, NotificationService} from 'carbon-components-angular';\nimport {DossierDetailService, DossierExportService} from '../../services';\nimport {TranslateService} from '@ngx-translate/core';\nimport {DOCUMENT} from '@angular/common';\nimport {HttpResponse} from '@angular/common/http';\nimport {DocumentService} from '@valtimo/document';\nimport {take} from 'rxjs/operators';\nimport {DossierManagementRemoveModalComponent} from '../dossier-management-remove-modal/dossier-management-remove-modal.component';\nimport {PageHeaderService} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-dossier-management-detail-container-actions',\n templateUrl: './dossier-management-detail-container-actions.component.html',\n styleUrls: ['./dossier-management-detail-container-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [NotificationService],\n})\nexport class DossierManagementDetailContainerActionsComponent {\n @ViewChild('exportingMessage')\n private readonly _exportMessageTemplateRef: TemplateRef<HTMLDivElement>;\n @ViewChild('dossierRemoveModal')\n private readonly _dossierRemoveModal: DossierManagementRemoveModalComponent;\n\n @Input() public documentDefinitionTitle = '';\n @Input() public set documentDefinitionName(value: string) {\n this.dossierDetailService.setSelectedDocumentDefinitionName(value);\n }\n @Output() public versionSet = new EventEmitter<number>();\n\n public readonly CARBON_THEME = 'g10';\n\n public readonly exporting$ = new BehaviorSubject<boolean>(false);\n public readonly selectedVersionNumber$ = this.dossierDetailService.selectedVersionNumber$;\n private readonly _previousSelectedVersionNumber$ =\n this.dossierDetailService.previousSelectedVersionNumber$;\n private readonly _documentDefinitionName$ =\n this.dossierDetailService.selectedDocumentDefinitionName$;\n public readonly loadingVersion$ = new BehaviorSubject<boolean>(true);\n private readonly _documentDefinitionVersions$ = this._documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getDocumentDefinitionVersions(documentDefinitionName)\n ),\n tap(res => {\n this.dossierDetailService.setSelectedVersionNumber(this.findLargestInArray(res.versions));\n this.loadingVersion$.next(false);\n })\n );\n\n public readonly versionListItems$: Observable<Array<ListItem>> = combineLatest([\n this._documentDefinitionVersions$,\n this.selectedVersionNumber$,\n this._previousSelectedVersionNumber$,\n this.translateService.stream('key'),\n ]).pipe(\n map(\n ([versionsRes, selectVersionNumber, previousVersionNumber]) =>\n versionsRes?.versions?.map(version => ({\n content: `${this.translateService.instant('dossierManagement.version')}${version}`,\n selected: selectVersionNumber === version || previousVersionNumber === version,\n id: `${version}`,\n })) || []\n )\n );\n public readonly selectedDocumentDefinition$ = this.dossierDetailService.documentDefinition$;\n\n public readonly selectedDocumentDefinitionIsReadOnly$ =\n this.dossierDetailService.selectedDocumentDefinitionIsReadOnly$;\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n private _currentNotification!: Notification;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private readonly notificationService: NotificationService,\n private readonly dossierExportService: DossierExportService,\n private readonly translateService: TranslateService,\n private readonly documentService: DocumentService,\n private readonly dossierDetailService: DossierDetailService,\n private readonly pageHeaderService: PageHeaderService\n ) {}\n\n public export(): void {\n this.closeCurrentNotification();\n\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._exportMessageTemplateRef,\n });\n let selectedVersionNumber!: number;\n\n this.startExporting();\n\n combineLatest([this.selectedVersionNumber$, this._documentDefinitionName$])\n .pipe(\n take(1),\n tap(([selectedVersion]) => (selectedVersionNumber = selectedVersion)),\n switchMap(([selectedVersion, documentDefinitionName]) =>\n this.dossierExportService.exportDocumentDefinition(\n documentDefinitionName,\n selectedVersion\n )\n )\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('dossierManagement.exportSuccessTitle'),\n duration: 5000,\n });\n this.downloadZip(response, selectedVersionNumber);\n this.stopExporting();\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('dossierManagement.exportErrorTitle'),\n message: this.translateService.instant('dossierManagement.exportErrorMessage'),\n duration: 5000,\n });\n this.stopExporting();\n },\n });\n }\n\n public setVersion(version: any): void {\n this.versionSet.emit(Number(version.item.id));\n }\n\n public openDossierRemoveModal(): void {\n this.selectedDocumentDefinition$.pipe(take(1)).subscribe(definition => {\n this._dossierRemoveModal.openModal(definition);\n });\n }\n\n private startExporting(): void {\n this.exporting$.next(true);\n }\n\n private stopExporting(): void {\n this.exporting$.next(false);\n }\n\n private downloadZip(response: HttpResponse<Blob>, versionNumber: number): void {\n const link = document.createElement('a');\n const contentDisposition = response.headers.get('content-disposition');\n const splitContentDisposition = contentDisposition.split('filename=');\n const fileName = splitContentDisposition.length > 1 && splitContentDisposition[1];\n\n link.href = this.document.defaultView.URL.createObjectURL(response.body);\n link.download = fileName || `${this.documentDefinitionName}_${versionNumber}.valtimo.zip`;\n link.target = '_blank';\n link.click();\n link.remove();\n }\n\n private closeCurrentNotification(): void {\n if (this._currentNotification) {\n this.notificationService.close(this._currentNotification);\n }\n }\n\n private findLargestInArray(array: Array<number>): number {\n return array.reduce(function (a, b) {\n return a > b ? a : b;\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 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\n class=\"dossier-actions\"\n *ngIf=\"{\n exporting: exporting$ | async,\n loadingVersion: loadingVersion$ | async,\n versionListItems: versionListItems$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n selectedDocumentDefinitionIsReadOnly: selectedDocumentDefinitionIsReadOnly$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n [ngClass]=\"{'--compact': obs.compactMode}\"\n>\n <div class=\"dossier-metadata\">\n <ng-container *ngTemplateOutlet=\"versionSelection; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"readOnly; context: {obs: obs}\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"exportMenu; context: {obs: obs}\"></ng-container>\n</div>\n\n<ng-template #versionSelection let-obs=\"obs\">\n <cds-dropdown\n class=\"version-selection\"\n [disabled]=\"obs.loadingVersion || (obs.versionListItems.length || []) === 1\"\n [skeleton]=\"obs.loadingVersion\"\n (selected)=\"setVersion($event)\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n >\n <cds-dropdown-list [items]=\"obs.versionListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n</ng-template>\n\n<ng-template #exportMenu let-obs=\"obs\">\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [width]=\"250\"\n [customTrigger]=\"customTrigger\"\n [offset]=\"{y: 48, x: 37}\"\n class=\"overflow-button\"\n >\n <cds-overflow-menu-option\n [id]=\"'exportDocumentDefinition'\"\n [disabled]=\"obs.exporting || obs.loadingVersion\"\n (selected)=\"export()\"\n >{{\n 'dossierManagement.export' | translate: {value: documentDefinitionTitle}\n }}</cds-overflow-menu-option\n >\n\n <cds-overflow-menu-option\n *ngIf=\"obs.selectedDocumentDefinition && !obs.selectedDocumentDefinition.readOnly\"\n [id]=\"'removeDocumentDefinition'\"\n [disabled]=\"obs.exporting || obs.loadingVersion\"\n (selected)=\"openDossierRemoveModal()\"\n >{{ 'Remove document definition' | translate }}</cds-overflow-menu-option\n >\n </cds-overflow-menu>\n</ng-template>\n\n<ng-template #customTrigger>\n <button cdsButton=\"tertiary\" [size]=\"(compactMode$ | async) ? 'sm' : 'md'\">\n {{ 'dossierManagement.more' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"overflow-menu--vertical\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #exportingMessage>\n <div class=\"exporting-message\">\n <span class=\"cds--inline-notification__title\">{{\n 'dossierManagement.preparingDownload' | translate\n }}</span>\n\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #readOnly let-obs=\"obs\">\n <cds-tag *ngIf=\"obs.selectedDocumentDefinitionIsReadOnly\" type=\"blue\">{{\n 'dossierManagement.readonly' | translate\n }}</cds-tag>\n</ng-template>\n\n<valtimo-dossier-management-remove-modal\n #dossierRemoveModal\n></valtimo-dossier-management-remove-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {Edit16, Save16} from '@carbon/icons';\nimport {ConfirmationModalComponent, EditorModel, PageHeaderService} from '@valtimo/components';\nimport {\n DocumentDefinition,\n DocumentDefinitionCreateRequest,\n DocumentService,\n} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {map, switchMap, take, tap} from 'rxjs/operators';\nimport {DossierDetailService} from '../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-document-definition',\n templateUrl: './dossier-management-document-definition.component.html',\n styleUrls: ['./dossier-management-document-definition.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementDocumentDefinitionComponent {\n @ViewChild('cancelModal') public cancelModal: ConfirmationModalComponent;\n @Input() documentDefinitionName: string;\n @Output() cancelRedirect = new EventEmitter();\n @Output() confirmRedirect = new EventEmitter();\n @Output() pendingChangesUpdate = new EventEmitter<boolean>();\n\n public readonly loadingDocumentDefinition$ = this.dossierDetailService.loadingDocumentDefinition$;\n private readonly _refreshEditor$ = new BehaviorSubject<null>(null);\n public readonly documentDefinitionModel$: Observable<EditorModel> = this._refreshEditor$.pipe(\n switchMap(() => this.dossierDetailService.documentDefinitionModel$)\n );\n\n private readonly _pendingChanges$ = new BehaviorSubject<boolean>(false);\n public readonly pendingChanges$: Observable<boolean> = this._pendingChanges$.pipe(\n tap((pendingChanges: boolean) => {\n this.pendingChangesUpdate.emit(pendingChanges);\n })\n );\n public readonly editActive$ = new BehaviorSubject<boolean>(false);\n public readonly showSaveConfirmation$ = new BehaviorSubject<boolean>(false);\n public readonly showCancelConfirmation$ = new BehaviorSubject<boolean>(false);\n public readonly selectedDocumentDefinition$ = this.dossierDetailService.documentDefinition$.pipe(\n tap(\n (documentDefinition: DocumentDefinition) => (this._initialId = documentDefinition.schema.$id)\n )\n );\n private readonly _changeIsValid$ = new BehaviorSubject<boolean>(false);\n private readonly _idChanged$ = new BehaviorSubject<boolean>(false);\n\n public readonly saveButtonDisabled$ = combineLatest([\n this.pendingChanges$,\n this._changeIsValid$,\n this._idChanged$,\n ]).pipe(\n map(\n ([pendingChanges, changeIsValid, idChanged]) => !pendingChanges || !changeIsValid || idChanged\n )\n );\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n private _changesToSave: any;\n private _initialId: string;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly dossierDetailService: DossierDetailService,\n private readonly iconService: IconService,\n private readonly pageHeaderService: PageHeaderService\n ) {\n this.iconService.registerAll([Edit16, Save16]);\n }\n\n public downloadDefinition(): void {\n this.selectedDocumentDefinition$.pipe(take(1)).subscribe(definition => {\n const dataString =\n 'data:text/json;charset=utf-8,' +\n encodeURIComponent(JSON.stringify(definition.schema, null, 2));\n const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n if (!downloadAnchorElement) {\n return;\n }\n\n downloadAnchorElement.setAttribute('href', dataString);\n downloadAnchorElement.setAttribute(\n 'download',\n `${definition.id.name}-v${definition.id.version}.json`\n );\n downloadAnchorElement.click();\n });\n }\n\n public discardChanges(): void {\n this.showCancelConfirmation$.next(false);\n this.confirmRedirect.emit();\n this.resetEditorState();\n }\n\n public keepEditingDefinition(): void {\n this.cancelRedirect.emit();\n this.showSaveConfirmation$.next(false);\n this.showCancelConfirmation$.next(false);\n }\n\n public onCancelClick(pendingChanges: boolean): void {\n if (pendingChanges) {\n this.showCancelConfirmation$.next(true);\n return;\n }\n\n this.resetEditorState();\n }\n\n public saveDefinition(): void {\n this.showSaveConfirmation$.next(false);\n this.editActive$.next(false);\n const newDocumentDefinition = new DocumentDefinitionCreateRequest(\n JSON.stringify(this._changesToSave)\n );\n\n this.documentService\n .createDocumentDefinitionForManagement(newDocumentDefinition)\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.dossierDetailService.setSelectedDocumentDefinitionName(this.documentDefinitionName);\n this.confirmRedirect.emit();\n this._pendingChanges$.next(false);\n },\n error: () => {\n this.cancelRedirect.emit();\n },\n });\n }\n\n public onEditClick(): void {\n this.editActive$.next(true);\n }\n\n public onSaveClick(): void {\n this.showSaveConfirmation$.next(true);\n }\n\n public onValueChangeEvent(value: string): void {\n this._pendingChanges$.next(true);\n this._changesToSave = JSON.parse(value);\n const id: string = this._changesToSave.$id;\n this._idChanged$.next(this._initialId !== id);\n }\n\n public onValidEvent(valid: boolean): void {\n this._changeIsValid$.next(valid);\n }\n\n public onCanDeactivate(): void {\n this.showCancelConfirmation$.next(true);\n }\n\n private resetEditorState(): void {\n this._refreshEditor$.next(null);\n this.editActive$.next(false);\n this._pendingChanges$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-container\n *ngIf=\"{\n documentDefinitionModel: documentDefinitionModel$ | async,\n editActive: editActive$ | async,\n loadingDocumentDefinition: loadingDocumentDefinition$ | async,\n pendingChanges: pendingChanges$ | async,\n saveButtonDisabled: saveButtonDisabled$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n>\n <div class=\"cds--toolbar-content\">\n <ng-container *ngIf=\"!obs.editActive; else editActive\">\n <button\n cdsButton=\"ghost\"\n (click)=\"downloadDefinition()\"\n [disabled]=\"obs.loadingDocumentDefinition || !obs.selectedDocumentDefinition\"\n >\n {{ 'interface.download' | translate }}\n\n <svg cdsIcon=\"download\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"obs.selectedDocumentDefinition?.readOnly\"\n (click)=\"onEditClick()\"\n >\n {{ 'interface.edit' | translate }}\n\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </ng-container>\n </div>\n\n <valtimo-editor\n *ngIf=\"!obs.loadingDocumentDefinition; else loading\"\n [model]=\"obs.documentDefinitionModel\"\n [disabled]=\"!obs.editActive\"\n (validEvent)=\"onValidEvent($event)\"\n (valueChangeEvent)=\"onValueChangeEvent($event)\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"96\"\n >\n </valtimo-editor>\n\n <a id=\"downloadAnchorElement\" style=\"display: none\"></a>\n\n <ng-template #editActive>\n <button cdsButton=\"secondary\" (click)=\"onCancelClick(obs.pendingChanges)\">\n {{ 'interface.cancel' | translate }}\n\n <svg cdsIcon=\"close\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"obs.saveButtonDisabled\" (click)=\"onSaveClick()\">\n {{ 'interface.save' | translate }}\n\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </ng-template>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showSaveConfirmation$\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n confirmButtonTextTranslationKey=\"interface.save\"\n contentTranslationKey=\"dossierManagement.documentDefinition.saveModalContent\"\n titleTranslationKey=\"interface.save\"\n (cancelEvent)=\"keepEditing()\"\n (confirmEvent)=\"saveDefinition()\"\n ></valtimo-confirmation-modal>\n\n <valtimo-confirmation-modal\n #cancelModal\n [showModalSubject$]=\"showCancelConfirmation$\"\n cancelButtonTextTranslationKey=\"interface.pendingChanges.keepEditing\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.discard\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.documentDefinition.cancelModal.content\"\n optionalButtonTextTranslationKey=\"interface.save\"\n optionalButtonType=\"secondary\"\n titleTranslationKey=\"dossierManagement.documentDefinition.cancelModal.title\"\n showOptionalButton=\"true\"\n spacerAfterCancelButton=\"true\"\n (cancelEvent)=\"keepEditingDefinition()\"\n (confirmEvent)=\"discardChanges()\"\n (optionalEvent)=\"saveDefinition()\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Inject,\n Optional,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {ZGW_CASE_CONFIGURATION_EXTENSIONS_TOKEN} from '@valtimo/config';\nimport {DocumentDefinition, DocumentService} from '@valtimo/document';\nimport {Observable, switchMap} from 'rxjs';\n\n@Component({\n selector: 'valtimo-dossier-management-detail',\n templateUrl: './dossier-management-detail.component.html',\n styleUrls: ['./dossier-management-detail.component.scss'],\n})\nexport class DossierManagementDetailComponent implements AfterViewInit {\n @ViewChild('extensions', {read: ViewContainerRef})\n private _extensions: ViewContainerRef;\n\n public readonly documentDefinition$: Observable<DocumentDefinition> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.documentService.getDocumentDefinitionForManagement(params.get('name') ?? '')\n )\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n @Optional()\n @Inject(ZGW_CASE_CONFIGURATION_EXTENSIONS_TOKEN)\n private readonly zgwCaseConfigurationExtensionComponents: Type<any>[],\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n public ngAfterViewInit(): void {\n this.renderExtensions();\n }\n\n private renderExtensions(): void {\n if (\n !Array.isArray(this.zgwCaseConfigurationExtensionComponents) ||\n this.zgwCaseConfigurationExtensionComponents.length === 0\n ) {\n return;\n }\n\n this.zgwCaseConfigurationExtensionComponents.forEach(extensionComponent => {\n this._extensions.createComponent(extensionComponent);\n });\n\n this.cdr.detectChanges();\n }\n}\n","<!--\n ~ Copyright 2015-2024 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=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"row pt-4 mb-5 pb-4 pl-2 pr-2\">\n <div class=\"col-10 offset-1\">\n <ng-template #extensions></ng-template>\n\n <valtimo-dossier-management-assignee\n *ngIf=\"documentDefinition$ | async\"\n ></valtimo-dossier-management-assignee>\n </div>\n </div>\n </valtimo-widget>\n</div>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {ActivatedRoute} from '@angular/router';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CARBON_CONSTANTS,\n ColumnConfig,\n MoveRowDirection,\n MoveRowEvent,\n MultiInputOutput,\n MultiInputValues,\n SelectItem,\n TableColumn,\n ValuePathSelectorPrefix,\n ViewType,\n} from '@valtimo/components';\nimport {\n SearchField,\n SearchFieldDataType,\n SearchFieldFieldType,\n SearchFieldMatchType,\n} from '@valtimo/config';\nimport {DocumentService} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\n\n@Component({\n selector: 'valtimo-dossier-management-search-fields',\n templateUrl: './dossier-management-search-fields.component.html',\n styleUrls: ['./dossier-management-search-fields.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementSearchFieldsComponent implements OnInit, OnDestroy, AfterViewInit {\n @Output() searchField: EventEmitter<SearchField> = new EventEmitter();\n\n public readonly downloadName$ = new BehaviorSubject<string>('');\n public readonly downloadUrl$ = new BehaviorSubject<SafeUrl | undefined>(undefined);\n public readonly disableInput$ = new BehaviorSubject<boolean>(false);\n public readonly selectedSearchField$ = new BehaviorSubject<SearchField | undefined>(undefined);\n public readonly selectedDeleteSearchField$ = new BehaviorSubject<SearchField | undefined>(\n undefined\n );\n public readonly formData$ = new BehaviorSubject<SearchField | null>(null);\n public readonly valid$ = new BehaviorSubject<boolean>(false);\n public readonly showFields$ = new BehaviorSubject<boolean>(false);\n public readonly modalShowing$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n private _subscriptions = new Subscription();\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.showEditModal.bind(this),\n type: 'normal',\n },\n {\n callback: this.showDeleteModal.bind(this),\n label: 'interface.delete',\n type: 'danger',\n },\n ];\n public readonly fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'title',\n label: 'searchFieldsOverview.title',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'key',\n label: 'searchFieldsOverview.key',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'path',\n label: 'searchFieldsOverview.path',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'dataType',\n label: 'searchFieldsOverview.dataType',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'fieldType',\n label: 'searchFieldsOverview.fieldType',\n },\n ];\n\n public readonly dropdownColumns$ = new BehaviorSubject<Array<TableColumn>>([\n {\n labelTranslationKey: 'searchFieldsOverview.id',\n dataKey: 'key',\n },\n {\n labelTranslationKey: 'searchFieldsOverview.text',\n dataKey: 'value',\n },\n ]);\n\n private readonly DATA_TYPES: Array<SearchFieldDataType> = [\n 'text',\n 'number',\n 'date',\n 'datetime',\n 'boolean',\n ];\n\n public readonly dataTypeItems$: Observable<Array<SelectItem>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.DATA_TYPES.map(dataType => ({\n id: dataType,\n text: this.translateService.instant(`searchFields.${dataType}`),\n }))\n )\n );\n\n public readonly dataTypeIsBoolean$ = new BehaviorSubject<boolean>(false);\n private readonly dataTypeIsText$ = new BehaviorSubject<boolean>(false);\n private readonly ALL_FIELD_TYPES: Array<SearchFieldFieldType> = [\n 'single',\n 'range',\n 'single-select-dropdown',\n 'multi-select-dropdown',\n ];\n private readonly NON_TEXT_FIELD_TYPES: Array<SearchFieldFieldType> = ['single', 'range'];\n private readonly BOOLEAN_FIELD_TYPES: Array<SearchFieldFieldType> = ['single'];\n public readonly fieldTypeItems$: Observable<Array<SelectItem>> = combineLatest([\n this.dataTypeIsBoolean$,\n this.dataTypeIsText$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeIsBoolean, dataTypeIsText]) => {\n if (dataTypeIsBoolean) {\n return this.BOOLEAN_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n } else if (!dataTypeIsText) {\n return this.NON_TEXT_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n }\n\n return this.ALL_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n })\n );\n\n private readonly MATCH_TYPES: Array<SearchFieldMatchType> = ['exact', 'like'];\n public readonly matchTypeItems$: Observable<Array<SelectItem>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.MATCH_TYPES.map(matchType => ({\n id: matchType,\n text: this.translateService.instant(`searchFieldsOverview.${matchType}`),\n }))\n )\n );\n\n private _documentDefinitionName: string;\n public readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName),\n tap((documentDefinitionName: string) => (this._documentDefinitionName = documentDefinitionName))\n );\n\n private cachedSearchFields!: Array<SearchField>;\n\n public searchFieldActionTypeIsAdd: boolean;\n public loadingSearchFields = true;\n\n private readonly refreshSearchFields$ = new BehaviorSubject<null>(null);\n\n private readonly searchFields$: Observable<Array<SearchField>> = combineLatest([\n this.documentDefinitionName$,\n this.refreshSearchFields$,\n ]).pipe(\n switchMap(([documentDefinitionName]) =>\n this.documentService.getDocumentSearchFields(documentDefinitionName)\n ),\n tap(searchFields => {\n this.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {\n if (searchFields && Array.isArray(searchFields) && searchFields?.length > 0) {\n this.setDownload(documentDefinitionName, searchFields);\n }\n });\n }),\n tap(searchFields => {\n this.cachedSearchFields = searchFields;\n this.loadingSearchFields = false;\n })\n );\n\n public readonly translatedSearchFields$: Observable<Array<SearchField>> = combineLatest([\n this.searchFields$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([searchFields]) =>\n searchFields.map(searchField => ({\n ...searchField,\n title: searchField.title ? searchField.title : '',\n dataType: this.translateService.instant(`searchFields.${searchField.dataType}`),\n matchType: this.translateService.instant(`searchFieldsOverview.${searchField.matchType}`),\n fieldType: this.translateService.instant(`searchFieldsOverview.${searchField.fieldType}`),\n }))\n )\n );\n\n public readonly fieldTypeIsDropdown$ = new BehaviorSubject<boolean>(false);\n\n public readonly dropdownDataProviderNames$: Observable<Array<SelectItem>> = combineLatest([\n this.documentService.getDropdownDataProviders(),\n this.translateService.stream('key'),\n ]).pipe(\n map(([providers]) =>\n providers.map(provider => ({\n id: provider,\n text: this.translateService.instant(`searchFieldsOverview.${provider}`),\n }))\n )\n );\n\n private readonly modifiedDropdownValues$ = new BehaviorSubject<MultiInputValues>([]);\n\n public readonly initialDropdownValues$: Observable<MultiInputValues> = combineLatest([\n this.documentDefinitionName$,\n this.formData$,\n ]).pipe(\n distinctUntilChanged(\n ([prevDocumentDefinitionName, prevFormData], [currDocumentDefinitionName, currFormData]) =>\n prevDocumentDefinitionName === currDocumentDefinitionName &&\n prevFormData?.dropdownDataProvider === currFormData?.dropdownDataProvider &&\n prevFormData?.key === currFormData?.key\n ),\n switchMap(([documentDefinitionName, formData]) => {\n if (!formData || !formData.dropdownDataProvider) {\n return of([]);\n }\n\n return this.documentService\n .getDropdownData(formData.dropdownDataProvider, documentDefinitionName, formData.key)\n .pipe(\n map(dropdownData =>\n dropdownData\n ? Object.keys(dropdownData).map(dropdownFieldKey => ({\n key: dropdownFieldKey,\n value: dropdownData[dropdownFieldKey],\n }))\n : []\n )\n );\n })\n );\n\n public readonly showMatchTypes$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n ]).pipe(map(([dataTypeIsText, fieldTypeIsDropdown]) => dataTypeIsText && !fieldTypeIsDropdown));\n\n public readonly showReadonlyDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n !!formData?.dropdownDataProvider &&\n !this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n public readonly showInputDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n !!formData?.dropdownDataProvider &&\n this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n public readonly CARBON_THEME = 'white';\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly sanitizer: DomSanitizer,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n }\n\n public ngOnInit(): void {\n this.openSelectedSearchFieldSubscription();\n }\n\n public ngAfterViewInit(): void {\n this.openModalShowingSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public searchFieldClicked(searchField: SearchField, searchFieldActionTypeIsAdd: boolean): void {\n this.disableInput$.pipe(take(1)).subscribe(inputDisabled => {\n if (!inputDisabled) {\n this.searchFieldActionTypeIsAdd = searchFieldActionTypeIsAdd;\n const searchFieldToSelect = this.cachedSearchFields.find(\n field => field.key === searchField.key\n );\n this.selectedSearchField$.next(searchFieldToSelect || ({} as SearchField));\n this.showModal();\n }\n });\n }\n\n public formValueChange(data: SearchField): void {\n setTimeout(() => {\n this.nextIfChanged(this.dataTypeIsText$, data.dataType === 'text');\n this.nextIfChanged(this.dataTypeIsBoolean$, data.dataType === 'boolean');\n this.nextIfChanged(this.fieldTypeIsDropdown$, this.isFieldTypeDropdown(data.fieldType));\n this.nextIfChanged(this.formData$, data);\n this.nextIfChanged(this.valid$, this.isValid(data));\n }, 0);\n }\n\n public pathValueChange(path: string): void {\n this.formData$.pipe(take(1)).subscribe(currentData => {\n const newData = {...currentData, path};\n this.nextIfChanged(this.formData$, newData);\n this.nextIfChanged(this.valid$, this.isValid(newData));\n });\n }\n\n public dropdownDatalistChange(data: MultiInputOutput): void {\n this.modifiedDropdownValues$.next(data as MultiInputValues);\n }\n\n public onMoveRowClick(moveEvent: MoveRowEvent, documentDefinitionName: string): void {\n const {index, direction} = moveEvent;\n const moveUp = direction === MoveRowDirection.UP;\n const searchFields = [...this.cachedSearchFields];\n const searchFieldRow = searchFields[index];\n\n const searchFieldIndex = searchFields.findIndex(field => field.key === searchFieldRow.key);\n const foundSearchField = {...searchFields[searchFieldIndex]};\n const filteredSearchFields = searchFields.filter(field => field.key !== searchFieldRow.key);\n const multipleSearchFields = searchFields?.length > 1;\n\n if (multipleSearchFields && moveUp && searchFieldIndex > 0) {\n const searchFieldBeforeKey = `${searchFields[searchFieldIndex - 1].key}`;\n const searchFieldBeforeIndex = filteredSearchFields.findIndex(\n field => field.key === searchFieldBeforeKey\n );\n filteredSearchFields.splice(searchFieldBeforeIndex, 0, foundSearchField);\n this.updateSearchFields(documentDefinitionName, filteredSearchFields);\n } else if (multipleSearchFields && !moveUp && searchFieldIndex < searchFields?.length) {\n const searchFieldAfterKey = `${searchFields[searchFieldIndex + 1].key}`;\n const searchFieldAfterIndex = filteredSearchFields.findIndex(\n field => field.key === searchFieldAfterKey\n );\n filteredSearchFields.splice(searchFieldAfterIndex + 1, 0, foundSearchField);\n this.updateSearchFields(documentDefinitionName, filteredSearchFields);\n }\n }\n\n public onDeleteSelectedSearchFieldConfirm(selectedSearchField: SearchField): void {\n this.disableInput();\n\n if (this.dropdownDataProviderSupportsUpdates(selectedSearchField?.dropdownDataProvider)) {\n this.documentService\n .deleteDropdownData(\n selectedSearchField?.dropdownDataProvider ?? '',\n this._documentDefinitionName,\n selectedSearchField.key\n )\n .subscribe();\n }\n\n this.documentService\n .deleteDocumentSearch(this._documentDefinitionName, selectedSearchField.key)\n .subscribe({\n next: () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public saveSearchField(documentDefinitionName: string): void {\n this.disableInput();\n\n this.formData$.pipe(take(1)).subscribe(formData => {\n if (!formData) {\n return;\n }\n const mappedFormData: SearchField = {\n ...formData,\n matchType:\n !this.isFieldTypeDropdown(formData?.fieldType) && formData?.dataType === 'text'\n ? formData.matchType\n : 'exact',\n fieldType: formData.dataType !== 'boolean' ? formData.fieldType : 'single',\n };\n\n const prevFormData = this.selectedSearchField$.value;\n if (\n this.dropdownDataProviderSupportsUpdates(prevFormData?.dropdownDataProvider) &&\n prevFormData?.dropdownDataProvider !== mappedFormData?.dropdownDataProvider\n ) {\n this.documentService\n .deleteDropdownData(\n prevFormData?.dropdownDataProvider ?? '',\n documentDefinitionName,\n prevFormData?.key ?? ''\n )\n .subscribe();\n }\n\n if (this.dropdownDataProviderSupportsUpdates(mappedFormData.dropdownDataProvider)) {\n this.modifiedDropdownValues$.pipe(take(1)).subscribe(dropdownValues => {\n const request = dropdownValues.reduce(\n (acc, keyValue) => ({...acc, [keyValue.key]: keyValue.value}),\n {}\n );\n this.documentService\n .postDropdownData(\n mappedFormData.dropdownDataProvider ?? '',\n documentDefinitionName,\n mappedFormData.key,\n request\n )\n .subscribe();\n });\n }\n\n if (this.searchFieldActionTypeIsAdd) {\n this.documentService.postDocumentSearch(documentDefinitionName, mappedFormData).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n } else {\n const newFields = [...this.cachedSearchFields];\n const indexToReplace = newFields.findIndex(field => field.key === mappedFormData.key);\n const filteredFields = newFields.filter(field => field.key !== mappedFormData.key);\n\n filteredFields.splice(indexToReplace, 0, mappedFormData);\n this.updateSearchFields(documentDefinitionName, filteredFields);\n }\n });\n }\n\n public updateSearchFields(\n documentDefinitionName: string,\n newSearchFields: Array<SearchField>\n ): void {\n this.disableInput();\n\n this.documentService.putDocumentSearch(documentDefinitionName, newSearchFields).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n public onModalClose(): void {\n this.hideModal();\n }\n\n private nextIfChanged(behaviourSubject$: BehaviorSubject<any>, value: any) {\n if (JSON.stringify(behaviourSubject$.value) !== JSON.stringify(value)) {\n behaviourSubject$.next(value);\n }\n }\n\n private isValid(data: SearchField): boolean {\n const validMatchType =\n data.dataType === 'text' && !this.isFieldTypeDropdown(data.fieldType) ? data.matchType : true;\n const validDropdownDataProvider = this.isFieldTypeDropdown(data.fieldType)\n ? data.dropdownDataProvider\n : true;\n const containsAllValues = !!(\n data.key &&\n data.dataType &&\n validMatchType &&\n validDropdownDataProvider &&\n data.path &&\n data.fieldType\n );\n const keyIsUnique =\n !this.searchFieldActionTypeIsAdd ||\n this.cachedSearchFields.findIndex(field => field.key === data.key) === -1;\n\n return containsAllValues && keyIsUnique;\n }\n\n private isFieldTypeDropdown(fieldType?: SearchFieldFieldType): boolean {\n return fieldType === 'single-select-dropdown' || fieldType === 'multi-select-dropdown';\n }\n\n private dropdownDataProviderSupportsUpdates(dropdownDataProvider?: string): boolean {\n return dropdownDataProvider === 'dropdownDatabaseDataProvider';\n }\n\n private openSelectedSearchFieldSubscription(): void {\n this._subscriptions.add(\n this.selectedSearchField$.subscribe(selectedSearchField => {\n if (selectedSearchField) this.showModal();\n })\n );\n }\n\n private openModalShowingSubscription(): void {\n this._subscriptions.add(\n this.modalShowing$.subscribe(modalShowing => {\n if (modalShowing) {\n setTimeout(() => {\n this.showFields$.next(true);\n }, 0);\n } else {\n setTimeout(() => {\n this.showFields$.next(false);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n })\n );\n }\n\n private setDownload(documentDefinitionName: string, searchFields: Array<SearchField>): void {\n this.downloadName$.next(`${documentDefinitionName}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify({searchFields}, null, 2))\n )\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n }\n\n private showModal(): void {\n this.modalShowing$.next(true);\n }\n\n private hideModal(): void {\n this.modalShowing$.next(false);\n }\n\n private refreshSearchFields(): void {\n this.refreshSearchFields$.next(null);\n }\n\n private showDeleteModal(searchField: SearchField): void {\n this.selectedDeleteSearchField$.next(searchField);\n this.showDeleteModal$.next(true);\n }\n\n private showEditModal(searchField: SearchField): void {\n this.searchFieldClicked(searchField, false);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-container\n *ngIf=\"{\n searchFields: translatedSearchFields$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.statuses.deleteText\"\n [outputOnConfirm]=\"selectedDeleteSearchField$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteSelectedSearchFieldConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #buttons let-obs=\"obs\">\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n data-testid=\"dossier-management-search-download\"\n [disabled]=\"\n !obs.downloadUrl || !obs.downloadName || obs.searchFields?.length <= 0 || obs.disableInput\n \"\n [download]=\"obs.downloadName\"\n [href]=\"obs.downloadUrl\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n data-testid=\"dossier-management-search-add\"\n [disabled]=\"loadingSearchFields || obs.disableInput\"\n (click)=\"searchFieldClicked($event, true)\"\n >\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFieldsOverview.addRow' | translate }}\n </button>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.searchFields\"\n [loading]=\"!obs.searchFields\"\n [movingRowsEnabled]=\"true\"\n (rowClicked)=\"searchFieldClicked($event, false)\"\n (moveRow)=\"onMoveRowClick($event, obs.documentDefinitionName)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [title]=\"'searchFieldsOverview.noSearchfieldsTitle' | translate\"\n [description]=\"'searchFieldsOverview.noSearchfieldsDescription' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <cds-modal\n valtimoCdsModal\n [title]=\"\n searchFieldActionTypeIsAdd\n ? ('searchFieldsOverview.addRow' | translate)\n : ('searchFieldsOverview.edit' | translate)\n \"\n [open]=\"modalShowing$ | async\"\n [showFooter]=\"true\"\n size=\"sm\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onModalClose()\">\n <h3 cdsModalHeaderHeading>\n {{\n (searchFieldActionTypeIsAdd ? 'searchFieldsOverview.addRow' : 'searchFieldsOverview.edit')\n | translate\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"\n (showFields$ | async) && {\n searchField: selectedSearchField$ | async,\n } as searchObs\n \"\n >\n <v-input\n name=\"title\"\n dataTestId=\"dossier-management-search-title\"\n [title]=\"'searchFieldsOverview.title' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.title\"\n [disabled]=\"obs.disableInput\"\n [required]=\"false\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </v-input>\n\n <v-input\n name=\"key\"\n dataTestId=\"dossier-management-search-key\"\n [title]=\"'searchFieldsOverview.key' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.key\"\n [disabled]=\"obs.disableInput || !searchFieldActionTypeIsAdd\"\n [required]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </v-input>\n\n <valtimo-value-path-selector\n name=\"path\"\n [label]=\"'searchFieldsOverview.path' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n [marginXl]=\"true\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [defaultValue]=\"searchObs.searchField?.path\"\n [disabled]=\"obs.disableInput\"\n ></valtimo-value-path-selector>\n\n <v-select\n *ngIf=\"dataTypeItems$ | async as dataTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"dataTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"dataType\"\n [defaultSelectionId]=\"searchObs.searchField?.dataType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"dossier-management-search-dataTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"(showMatchTypes$ | async) && (matchTypeItems$ | async) as matchTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"matchTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"matchType\"\n [defaultSelectionId]=\"searchObs.searchField?.matchType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"dossier-management-search-matchTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"fieldTypeItems$ | async as fieldTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"fieldTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"fieldType\"\n [defaultSelectionId]=\"searchObs.searchField?.fieldType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"dossier-management-search-fieldTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"\n (fieldTypeIsDropdown$ | async) &&\n (dropdownDataProviderNames$ | async) as dropdownDataProviderNames\n \"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"dropdownDataProviderNames\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"false\"\n name=\"dropdownDataProvider\"\n [defaultSelectionId]=\"searchObs.searchField?.dropdownDataProvider\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"dossier-management-search-dropdownDataProvider\"\n ></v-select>\n\n <valtimo-carbon-multi-input\n *ngIf=\"\n (showInputDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n name=\"dropdownValues\"\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n type=\"keyValue\"\n [disabled]=\"obs.disableInput\"\n [defaultValues]=\"initialDropdownValues\"\n [margin]=\"true\"\n [required]=\"false\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n (valueChange)=\"dropdownDatalistChange($event)\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </valtimo-carbon-multi-input>\n\n <v-table\n *ngIf=\"\n (showReadonlyDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n [items]=\"initialDropdownValues\"\n [columns]=\"dropdownColumns$ | async\"\n [showEditButtons]=\"false\"\n [itemsTranslationKey]=\"'searchFieldsOverview'\"\n [showPagination]=\"false\"\n [mobileBreakpointPx]=\"200\"\n [carbonTheme]=\"CARBON_THEME\"\n ></v-table>\n </v-form>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n </cds-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <button\n data-testid=\"dossier-management-search-close\"\n cdsButton=\"secondary\"\n (click)=\"onModalClose()\"\n [disabled]=\"obs.disableInput\"\n >\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-testid=\"dossier-management-search-save\"\n cdsButton=\"primary\"\n [disabled]=\"obs.disableInput || !obs.valid\"\n (click)=\"saveSearchField(obs.documentDefinitionName)\"\n >\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {AfterViewInit, Component} from '@angular/core';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {ActivatedRoute} from '@angular/router';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n ColumnConfig,\n MoveRowDirection,\n MoveRowEvent,\n MultiInputValues,\n ValuePathSelectorPrefix,\n ViewType,\n} from '@valtimo/components';\nimport {ConfigService} from '@valtimo/config';\nimport {\n CaseListColumn,\n CaseListColumnView,\n DisplayTypeParameters,\n DocumentService,\n} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {ListItem} from 'carbon-components-angular/dropdown/list-item.interface';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n filter,\n map,\n Observable,\n startWith,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ListColumnModal} from '../../models';\n\n@Component({\n selector: 'valtimo-dossier-management-list-columns',\n templateUrl: './dossier-management-list-columns.component.html',\n styleUrls: ['./dossier-management-list-columns.component.scss'],\n})\nexport class DossierManagementListColumnsComponent implements AfterViewInit {\n readonly downloadName$ = new BehaviorSubject<string>('');\n readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'interface.delete',\n callback: this.deleteRow.bind(this),\n type: 'danger',\n },\n ];\n public readonly loadingCaseListColumns$ = new BehaviorSubject<boolean>(true);\n\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n public readonly fields: Array<ColumnConfig> = [\n {\n viewType: 'string',\n sortable: false,\n key: 'title',\n label: 'listColumn.title',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'key',\n label: 'listColumn.key',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'path',\n label: 'listColumn.path',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'displayType',\n label: 'listColumn.displayType',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'displayTypeParameters',\n label: 'listColumn.displayTypeParameters',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'sortable',\n label: 'listColumn.sortable',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'defaultSort',\n label: 'listColumn.defaultSort',\n },\n ];\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName)\n );\n\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n\n readonly hasEnvironmentConfig$: Observable<boolean> = this.documentDefinitionName$.pipe(\n map(\n documentDefinitionName =>\n !!this.configService?.config?.customDefinitionTables[documentDefinitionName]\n )\n );\n\n private cachedCaseListColumns: Array<CaseListColumn> = [];\n\n private readonly refreshCaseListcolumns$ = new BehaviorSubject<null>(null);\n\n private readonly caseListColumns$: Observable<Array<CaseListColumn>> = combineLatest([\n this.documentDefinitionName$,\n this.refreshCaseListcolumns$,\n ]).pipe(\n switchMap(([documentDefinitionName]) =>\n this.documentService.getCaseListForManagement(documentDefinitionName)\n ),\n tap(caseListColumns => {\n this.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {\n if (caseListColumns && Array.isArray(caseListColumns) && caseListColumns.length > 0) {\n this.setDownload(documentDefinitionName, caseListColumns);\n }\n });\n }),\n tap(caseListColumns => {\n this.lastItemIndex$.next(caseListColumns.length - 1);\n this.cachedCaseListColumns = caseListColumns;\n this.loadingCaseListColumns$.next(false);\n this.enableInput();\n })\n );\n\n readonly translatedCaseListColumns$: Observable<Array<CaseListColumnView>> = combineLatest([\n this.caseListColumns$,\n this.translateService.stream('key'),\n ]).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 currentModalType$ = new BehaviorSubject<ListColumnModal>('create');\n\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n\n readonly modalShowing$ = this.showModal$.pipe(delay(250));\n\n readonly INVALID_KEY = 'invalid';\n\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\n readonly disableDefaultSort$ = combineLatest([\n this.currentModalType$,\n this.formGroup.valueChanges,\n ]).pipe(\n map(\n ([currentModalType]) =>\n currentModalType === 'create' &&\n this.cachedCaseListColumns.find(column => !!column.defaultSort)\n ),\n startWith(false)\n );\n\n readonly DISPLAY_TYPES: Array<ViewType> = [\n ViewType.TEXT,\n ViewType.DATE,\n ViewType.BOOLEAN,\n ViewType.ENUM,\n ViewType.ARRAY_COUNT,\n ViewType.UNDERSCORES_TO_SPACES,\n ViewType.TAGS,\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.cachedCaseListColumns.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 readonly showDeleteModal$ = new Subject<boolean>();\n\n readonly deleteRowKey$ = new BehaviorSubject<string>('');\n\n readonly defaultEnumValues$ = new BehaviorSubject<MultiInputValues>(undefined);\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService,\n private readonly sanitizer: DomSanitizer,\n private readonly iconService: IconService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\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(caseListColumn: CaseListColumn): void {\n this.showDeleteModal$.next(true);\n this.deleteRowKey$.next(caseListColumn.key);\n }\n\n deleteRowConfirmation(columnKey: string): void {\n if (columnKey) {\n this.disableInput();\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService.deleteCaseListForManagement(docDefName, columnKey).subscribe(\n () => {\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\n }\n }\n\n onMoveRowEvent(event: MoveRowEvent, documentDefinitionName: string): void {\n const caseListColumns = [...this.cachedCaseListColumns];\n const caseListColumnRow = caseListColumns[event.index];\n const moveUp: boolean = event.direction === MoveRowDirection.UP;\n\n const caseListColumnIndex = caseListColumns.findIndex(\n field => field.key === caseListColumnRow.key\n );\n const foundCaseListColumn = {...caseListColumns[caseListColumnIndex]};\n const filteredCaseListColumns = caseListColumns.filter(\n field => field.key !== caseListColumnRow.key\n );\n const multipleCaseListColumns = caseListColumns.length > 1;\n\n if (multipleCaseListColumns && moveUp && caseListColumnIndex > 0) {\n const caseListColumnBeforeKey = `${caseListColumns[caseListColumnIndex - 1].key}`;\n const caseListColumnBeforeIndex = filteredCaseListColumns.findIndex(\n field => field.key === caseListColumnBeforeKey\n );\n filteredCaseListColumns.splice(caseListColumnBeforeIndex, 0, foundCaseListColumn);\n this.updateCaseListColumns(documentDefinitionName, filteredCaseListColumns);\n } else if (multipleCaseListColumns && !moveUp && caseListColumnIndex < caseListColumns.length) {\n const caseListColumnAfterKey = `${caseListColumns[caseListColumnIndex + 1].key}`;\n const caseListColumnAfterIndex = filteredCaseListColumns.findIndex(\n field => field.key === caseListColumnAfterKey\n );\n filteredCaseListColumns.splice(caseListColumnAfterIndex + 1, 0, foundCaseListColumn);\n this.updateCaseListColumns(documentDefinitionName, filteredCaseListColumns);\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.cachedCaseListColumns.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 updateCaseListColumns(\n documentDefinitionName: string,\n newCaseListColumns: Array<CaseListColumn>\n ): void {\n this.disableInput();\n\n this.documentService\n .putCaseListForManagement(documentDefinitionName, newCaseListColumns)\n .subscribe(\n () => {\n this.refreshCaseListColumns();\n localStorage.setItem(`list-search-${documentDefinitionName}`, null);\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n private addColumn(): void {\n const formValue = this.formGroup.value;\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService\n .postCaseListForManagement(docDefName, this.mapFormValuesToColumn(formValue))\n .subscribe(\n () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\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 const updatedColumnFormValue = this.formGroup.value;\n const mappedUpdatedColumn = this.mapFormValuesToColumn(updatedColumnFormValue);\n const currentColumns = this.cachedCaseListColumns;\n const mappedCurrentColumns = currentColumns.map(column => {\n const columnCopy = {...column};\n if (columnCopy.key === updatedColumnFormValue.key) {\n const changedColumn = {...columnCopy, ...mappedUpdatedColumn};\n if (!mappedUpdatedColumn.defaultSort) {\n delete changedColumn.defaultSort;\n }\n return changedColumn;\n }\n if (mappedUpdatedColumn.defaultSort) {\n delete columnCopy.defaultSort;\n }\n return columnCopy;\n });\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService.putCaseListForManagement(docDefName, mappedCurrentColumns).subscribe(\n () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\n }\n\n private setDownload(\n documentDefinitionName: string,\n caseListColumns: Array<CaseListColumn>\n ): void {\n this.downloadName$.next(`${documentDefinitionName}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify(caseListColumns, 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 refreshCaseListColumns(): void {\n this.refreshCaseListcolumns$.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): CaseListColumn {\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-2024 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<ng-container\n *ngIf=\"{\n caseListColumn: translatedCaseListColumns$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n hasEnvironmentConfig: hasEnvironmentConfig$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loadingCaseListColumns: loadingCaseListColumns$ | async,\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [loading]=\"obs.loadingCaseListColumns\"\n [items]=\"obs.caseListColumn\"\n [fields]=\"fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n [movingRowsEnabled]=\"true\"\n (moveRow)=\"onMoveRowEvent($event, obs.documentDefinitionName)\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n *ngIf=\"!obs.hasEnvironmentConfig\"\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"obs.hasEnvironmentConfig\"\n [title]=\"'listColumn.hasEnvConfigWarningTitle' | translate\"\n [description]=\"'listColumn.hasEnvConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-error.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n obs.hasEnvironmentConfig ||\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.caseListColumn?.length < 1 ||\n obs.disableInput ||\n loadingCaseListColumns\n \"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n [disabled]=\"obs.hasEnvironmentConfig || loadingCaseListColumns\"\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 #environmentConfigWarning>\n <div class=\"pl-2 pr-2 pb-2 pt-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'warning',\n title: 'listColumn.hasEnvConfigWarningTitle' | translate,\n message: 'listColumn.hasEnvConfigWarning' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2 pt-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'listColumn.noConfigWarningTitle' | translate,\n message: 'listColumn.noConfigWarning' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\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 disableDefaultSort: disableDefaultSort$ | async,\n showEnum: showEnum$ | async,\n isYesNo: isYesNo$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n size=\"sm\"\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 <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"title\" />\n </cds-label>\n\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\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n ></valtimo-value-path-selector>\n </cds-label>\n\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\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\n <cds-label *ngIf=\"showDateFormat$ | async\" [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"dateFormat\" />\n </cds-label>\n\n <cds-label *ngIf=\"modalObs.showEnum || modalObs.isYesNo\" [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\n <v-tooltip-icon\n [tooltip]=\"\n modalObs.isYesNo\n ? ('listColumn.enumTooltipOptional' | translate)\n : ('listColumn.enumTooltip' | translate)\n \"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"(showModal$ | async) || (modalShowing$ | async)\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n [defaultValues]=\"defaultEnumValues$ | async\"\n [hideAddButton]=\"modalObs.isYesNo\"\n [hideDeleteButton]=\"modalObs.isYesNo\"\n [maxRows]=\"modalObs.isYesNo ? 1 : null\"\n [keyColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.Yes' | translate)\"\n [valueColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.No' | translate)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n\n <cds-checkbox formControlName=\"sortable\">{{ 'listColumn.sortable' | translate }} </cds-checkbox>\n\n <cds-label [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\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 </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\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]=\"deleteRowKey$ | 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 * Copyright 2015-2024 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 */\nimport {ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {AbstractControl, FormGroup, FormGroupDirective} from '@angular/forms';\nimport {ApiTabType, DefaultTabs} from '@valtimo/dossier';\nimport {ListItem} from 'carbon-components-angular';\nimport {combineLatest, map, startWith, Subscription} from 'rxjs';\nimport {TabService} from '../../../services';\nimport {ConfigService} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-tab-form',\n templateUrl: './tab-form.component.html',\n styleUrls: ['./tab-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabFormComponent implements OnInit, OnDestroy {\n @Input() public tabType: ApiTabType;\n\n public disableTaskListVisibleToggle = signal(false);\n\n public readonly listItems$ = combineLatest([\n this.tabService.configuredContentKeys$,\n this.tabService.formDefinitions$,\n this.tabService.defaultTabs$,\n this.tabService.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => {\n switch (this.tabType) {\n case ApiTabType.STANDARD:\n return this.getListItems(defaultTabs, tabKeys);\n case ApiTabType.CUSTOM:\n return this.getListItems(customComponentKeys, tabKeys);\n case ApiTabType.FORMIO:\n return this.getListItems(formDefinitions, tabKeys);\n case ApiTabType.WIDGETS:\n return [];\n }\n }),\n startWith([])\n );\n\n public form!: FormGroup;\n\n public showTasks!: AbstractControl<boolean>;\n\n private _searchActive: boolean;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly configService: ConfigService,\n private readonly tabService: TabService,\n private readonly formGroupDirective: FormGroupDirective\n ) {}\n\n public ngOnInit(): void {\n this.form = this.formGroupDirective.control;\n this.showTasks = this.form.get('showTasks');\n this.openTaskListToggleSubscription();\n\n if (this.tabType == ApiTabType.WIDGETS) {\n this.form.get('contentKey')?.disable();\n } else {\n this.form.get('contentKey')?.enable();\n }\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public isKeyError(): boolean {\n return this.form.get('key')?.hasError('uniqueKey') || this.form.get('key')?.hasError('pattern');\n }\n\n public getKeyErrorMessage(): string {\n if (this.form.get('key')?.hasError('uniqueKey'))\n return 'dossierManagement.tabManagement.addModal.uniqueKeyError';\n if (this.form.get('key')?.hasError('pattern'))\n return 'dossierManagement.tabManagement.addModal.invalidKeyError';\n return '';\n }\n\n public onSearch(): void {\n if (this._searchActive) {\n return;\n }\n\n this._searchActive = true;\n this.form.get('contentKey')?.reset('');\n }\n\n public onSelected(): void {\n this._searchActive = false;\n }\n\n public toggleCheckedChange(event: boolean): void {\n this.showTasks?.patchValue(!!event);\n }\n\n private openTaskListToggleSubscription(): void {\n this.form.get('contentKey').valueChanges.subscribe(contentKey => {\n const summarySelected = contentKey === DefaultTabs.summary;\n\n if (summarySelected) {\n this.toggleCheckedChange(true);\n this.disableTaskListVisibleToggle.set(true);\n } else {\n this.disableTaskListVisibleToggle.set(false);\n }\n });\n }\n\n private getListItems(tabItems: ListItem[], configuredContentKeys: string[]): ListItem[] {\n return tabItems\n .filter(\n (tabItem: ListItem) =>\n !configuredContentKeys.includes(tabItem.contentKey) ||\n this.form?.get('contentKey')?.value === tabItem.contentKey\n )\n .map((tabItem: ListItem) => ({\n ...tabItem,\n selected: this.form?.get('contentKey')?.value === tabItem.contentKey,\n }));\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<form *ngIf=\"form\" [formGroup]=\"form\" class=\"valtimo-tab-form-modal\">\n <cds-label>\n {{ 'dossierManagement.tabManagement.addModal.tabNameLabel' | translate }}\n\n <input cdsText formControlName=\"name\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label [invalid]=\"!!isKeyError()\" [invalidText]=\"getKeyErrorMessage() | translate\">\n {{ 'dossierManagement.tabManagement.addModal.tabKeyLabel' | translate }}\n\n <input\n cdsText\n formControlName=\"key\"\n pattern=\"[a-zA-Z0-9\\-]+\"\n [invalid]=\"!!isKeyError()\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-combo-box\n *ngIf=\"tabType !== 'widgets'\"\n [dropUp]=\"false\"\n formControlName=\"contentKey\"\n [items]=\"listItems$ | async\"\n itemValueKey=\"contentKey\"\n [label]=\"'dossierManagement.tabManagement.contentLabels.' + tabType | translate\"\n (search)=\"onSearch($event)\"\n (selected)=\"onSelected($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-toggle\n [label]=\"'dossierManagement.tabManagement.addModal.visibleTitle' | translate\"\n [onText]=\"'dossierManagement.tabManagement.addModal.visible' | translate\"\n [offText]=\"'dossierManagement.tabManagement.addModal.invisible' | translate\"\n [checked]=\"showTasks?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n [disabled]=\"disableTaskListVisibleToggle()\"\n ></cds-toggle>\n</form>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {Code16, Development16, TableBuilt16, WatsonHealthPageScroll16} from '@carbon/icons';\nimport {ApiTabItem, ApiTabType, TabSelectItem} from '@valtimo/dossier';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\nimport {TabService} from '../../../services';\nimport {ConfigService} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-dossier-management-add-tab-modal',\n templateUrl: './dossier-management-add-tab-modal.component.html',\n styleUrls: ['./dossier-management-add-tab-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierManagementAddTabModalComponent {\n @Input() documentDefinitionName: string;\n @Input() open = false;\n\n @Output() closeModalEvent = new EventEmitter<Partial<ApiTabItem> | null>();\n\n public readonly ApiTabType = ApiTabType;\n\n public readonly tabTypes$: Observable<TabSelectItem[]> = combineLatest([\n this.tabService.disableAddTabs$,\n this.configService.featureToggles$,\n ]).pipe(\n map(([disabled, featureToggles]) => [\n {\n icon: 'development',\n title: 'dossierManagement.tabManagement.addModal.standardTab',\n type: ApiTabType.STANDARD,\n disabled: disabled.standard,\n disabledTooltipTranslationKey:\n 'dossierManagement.tabManagement.addModal.standardTabDisabled',\n },\n {\n icon: 'page-scroll',\n title: 'dossierManagement.tabManagement.addModal.formIOComponent',\n type: ApiTabType.FORMIO,\n disabled: disabled.formIO,\n disabledTooltipTranslationKey:\n 'dossierManagement.tabManagement.addModal.formIOComponentDisabled',\n },\n {\n icon: 'code',\n title: 'dossierManagement.tabManagement.addModal.customComponent',\n type: ApiTabType.CUSTOM,\n disabled: disabled.custom,\n disabledTooltipTranslationKey:\n 'dossierManagement.tabManagement.addModal.customComponentDisabled',\n },\n {\n icon: 'table--built',\n title: 'dossierManagement.tabManagement.addModal.widgetsComponent',\n type: ApiTabType.WIDGETS,\n disabled: disabled.widgets,\n },\n ])\n );\n\n public readonly form = this.fb.group({\n name: this.fb.control(null),\n key: this.fb.control('', [Validators.required, this.uniqueKeyValidator()]),\n contentKey: this.fb.control('', Validators.required),\n showTasks: this.fb.control(false, Validators.required),\n });\n public readonly selectedTabType$ = new BehaviorSubject<ApiTabType | null>(null);\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly tabService: TabService,\n private readonly configService: ConfigService\n ) {\n this.iconService.registerAll([Code16, Development16, TableBuilt16, WatsonHealthPageScroll16]);\n }\n\n public addTab(type: ApiTabType): void {\n let {contentKey, key, name, showTasks} = this.form.getRawValue();\n if (!contentKey) {\n contentKey = '-';\n }\n\n if (!key) {\n return;\n }\n this.closeModalEvent.emit({name, key, contentKey, type, showTasks});\n }\n\n public backClick(): void {\n this.resetModal();\n }\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n this.resetModal();\n }\n\n public onTabTypeSelect(type: ApiTabType): void {\n this.selectedTabType$.next(type);\n }\n\n private resetModal(): void {\n this.selectedTabType$.next(null);\n this.form.reset();\n }\n\n private uniqueKeyValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null =>\n this.tabService.configuredTabKeys.every((key: string) => key !== control.value)\n ? null\n : {uniqueKey: {value: control.value}};\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal valtimoCdsModal *ngIf=\"{selectedTabType: selectedTabType$ | async} as obs\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n !obs.selectedTabType\n ? ('dossierManagement.tabManagement.addModal.title'\n | translate: {documentDefinitionName: (documentDefinitionName | titlecase)})\n : ('dossierManagement.tabManagement.titles.' + obs.selectedTabType | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent class=\"valtimo-add-tab-modal__content\">\n <valtimo-tab-form\n *ngIf=\"obs.selectedTabType; else tabTypeSelection\"\n [tabType]=\"obs.selectedTabType\"\n ></valtimo-tab-form>\n\n <ng-template #tabTypeSelection>\n <span> {{ 'dossierManagement.tabManagement.addModal.description' | translate }} </span>\n\n <div *ngIf=\"tabTypes$ | async as tabTypes\" class=\"valtimo-add-tab-modal__types\">\n <cds-tooltip\n *ngFor=\"let tabType of tabTypes\"\n [caret]=\"true\"\n enterDelayMs=\"0\"\n leaveDelayMs=\"0\"\n [description]=\"tabType.disabledTooltipTranslationKey | translate\"\n [disabled]=\"!tabType.disabled\"\n align=\"bottom\"\n >\n <button\n cdsButton=\"secondary\"\n [disabled]=\"tabType.disabled\"\n (click)=\"onTabTypeSelect(tabType.type)\"\n >\n {{ tabType.title | translate }}\n\n <svg [cdsIcon]=\"tabType.icon\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </cds-tooltip>\n </div>\n </ng-template>\n </section>\n\n <cds-modal-footer class=\"valtimo-add-tab-modal__footer\">\n <button class=\"valtimo-add-tab-modal__cancel\" cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <div class=\"valtimo-add-tab-modal__actions\" *ngIf=\"obs.selectedTabType\">\n <button cdsButton=\"secondary\" (click)=\"backClick()\">\n {{ 'interface.back' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"addTab(obs.selectedTabType)\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {TabService} from '../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-edit-tab-modal',\n templateUrl: './dossier-management-edit-tab-modal.component.html',\n})\nexport class DossierManagementEditTabModalComponent {\n @Input() open: boolean;\n\n private _tab: ApiTabItem;\n @Input() public set tab(value: ApiTabItem) {\n if (!value) {\n return;\n }\n\n if (!!this.tabService.configuredContentKeys) {\n this.configuredKeysForEdit = this.tabService.configuredContentKeys.filter(\n (tabKey: string) => tabKey !== value.contentKey\n );\n }\n\n this._tab = value;\n this.form = this.fb.group({\n name: this.fb.control(value.name),\n key: this.fb.control({value: value.key, disabled: true}, Validators.required),\n contentKey: this.fb.control(value.contentKey, Validators.required),\n showTasks: this.fb.control(value.showTasks, Validators.required),\n });\n }\n public get tab(): ApiTabItem {\n return this._tab;\n }\n\n @Output() closeModalEvent = new EventEmitter<ApiTabItem | null>();\n\n public form: FormGroup;\n public configuredKeysForEdit: string[];\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly tabService: TabService\n ) {}\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n }\n\n public editTab(): void {\n const {contentKey, name, showTasks} = this.form.getRawValue();\n\n if (!contentKey) {\n return;\n }\n\n this.closeModalEvent.emit({...this.tab, name, contentKey, showTasks});\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal valtimoCdsModal *ngIf=\"form\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n 'dossierManagement.tabManagement.editModal.title'\n | translate: {name: tab?.name ?? 'dossier.tabs.' + tab.key | translate}\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent>\n <valtimo-tab-form\n [configuredContentKeys]=\"configuredKeysForEdit\"\n [tabType]=\"tab?.type\"\n ></valtimo-tab-form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"editTab()\">\n {{ 'dossierManagement.tabManagement.editModal.updateTab' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n signal,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {ApiTabItem, ApiTabType} from '@valtimo/dossier';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, map, Observable, tap} from 'rxjs';\nimport {TabManagementService, TabService} from '../../services';\nimport {Router} from '@angular/router';\nimport {ConfigService} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-dossier-management-tabs',\n templateUrl: './dossier-management-tabs.component.html',\n styleUrls: ['./dossier-management-tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierManagementTabsComponent implements AfterViewInit {\n @ViewChild('tabContentColumn') tabContentColumnTemplate: TemplateRef<any>;\n @ViewChild('tabTypeColumn') tabTypeColumnTemplate: TemplateRef<any>;\n @ViewChild('moveButtonsTemplate') moveButtonsTemplate: TemplateRef<any>;\n\n private _documentDefinitionName: string;\n @Input() public set documentDefinitionName(value: string) {\n if (!value) {\n return;\n }\n this._documentDefinitionName = value;\n this.tabManagementService.setCaseDefinitionId(value);\n this.tabManagementService.loadTabs();\n }\n public get documentDefinitionName(): string {\n return this._documentDefinitionName;\n }\n\n public actionItems: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.openDeleteConfirmationModal.bind(this),\n type: 'danger',\n },\n ];\n public readonly deleteRowKey$ = new BehaviorSubject<string | null>(null);\n public readonly showDeleteModal$: Observable<boolean> = this.deleteRowKey$.pipe(\n map((key: string | null) => !!key)\n );\n public readonly openEditModal$ = new BehaviorSubject<boolean>(false);\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n public readonly loading$: Observable<boolean> = this.tabManagementService.loading$;\n public readonly openAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n public readonly tabs$: Observable<ApiTabItem[]> = this.tabManagementService.tabs$.pipe(\n tap(tabs => {\n this.tabService.configuredContentKeys = tabs.map((tab: ApiTabItem) => tab.contentKey);\n this.tabService.configuredTabKeys = tabs.map((tab: ApiTabItem) => tab.key);\n this.lastItemIndex$.next(tabs.length - 1);\n this.dragAndDropDisabled.set(false);\n })\n );\n public readonly tab$ = new BehaviorSubject<ApiTabItem | null>(null);\n public readonly dragAndDropDisabled = signal(false);\n\n constructor(\n private readonly cd: ChangeDetectorRef,\n private readonly iconService: IconService,\n private readonly tabManagementService: TabManagementService,\n private readonly tabService: TabService,\n private readonly translateService: TranslateService,\n private readonly router: Router,\n private readonly configService: ConfigService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n\n this.fields$.next([\n {\n key: 'name',\n label: 'dossierManagement.tabManagement.columns.name',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'dossierManagement.tabManagement.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabTypeColumnTemplate,\n key: '',\n label: 'dossierManagement.tabManagement.columns.type',\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabContentColumnTemplate,\n key: '',\n label: 'dossierManagement.tabManagement.columns.content',\n },\n {\n viewType: ViewType.BOOLEAN,\n key: 'showTasks',\n label: 'dossierManagement.tabManagement.columns.showTasks',\n },\n ]);\n\n this.cd.detectChanges();\n }\n\n public isTranslated(key: string): boolean {\n return this.translateService.instant(key) !== key;\n }\n\n public openAddTabModal(): void {\n this.openAddModal$.next(true);\n }\n\n public openEditModal(tab: ApiTabItem): void {\n this.tab$.next(tab);\n this.openEditModal$.next(true);\n }\n\n public onRowClicked(tab: ApiTabItem): void {\n this.tab$.next(tab);\n if (tab.type === ApiTabType.WIDGETS) {\n this.router.navigate([\n `/dossier-management/dossier/${this._documentDefinitionName}/widget-tab/${tab.key}`,\n ]);\n } else {\n this.openEditModal$.next(true);\n }\n }\n\n public onCloseAddModalEvent(tab: ApiTabItem | null): void {\n this.openAddModal$.next(false);\n\n if (!tab) {\n return;\n }\n\n this.addTab(tab);\n }\n\n public onCloseEditModalEvent(tab: ApiTabItem | null): void {\n this.openEditModal$.next(false);\n this.tab$.next(null);\n\n if (!tab) {\n return;\n }\n\n this.editTab(tab);\n }\n\n public openDeleteConfirmationModal(tab: ApiTabItem): void {\n this.deleteRowKey$.next(tab.key);\n }\n\n public onConfirmEvent(tabKey: string): void {\n this.deleteTab(tabKey);\n }\n\n public onItemsReorderedEvent(reorderedItems: ApiTabItem[]): void {\n if (!reorderedItems) return;\n\n this.dragAndDropDisabled.set(true);\n\n this.tabManagementService.dispatchAction(\n this.tabManagementService.editTabsOrder(reorderedItems)\n );\n }\n\n private addTab(tab: Partial<ApiTabItem>): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.addTab(tab));\n }\n\n private deleteTab(tabKey: string): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.deleteTab(tabKey));\n }\n\n private editTab(tab: ApiTabItem): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.editTab(tab, tab.key));\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-carbon-list\n *ngIf=\"{fields: fields$ | async, loading: loading$ | async, tabs: tabs$ | async} as obs\"\n [actionItems]=\"actionItems\"\n [items]=\"obs.tabs\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n (rowClicked)=\"onRowClicked($event)\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"dragAndDropDisabled()\"\n (itemsReordered)=\"onItemsReorderedEvent($event)\"\n>\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addTabButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addTabButton\"\n [description]=\"'dossier.tabs.noResultsDescription' | translate\"\n [title]=\"'dossier.tabs.noResults' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #tabTypeColumn let-data=\"data\">\n {{\n isTranslated('dossierManagement.tabType.' + data.item.type)\n ? ('dossierManagement.tabType.' + data.item.type | translate)\n : data.item.type\n }}\n</ng-template>\n\n<ng-template #tabContentColumn let-data=\"data\">\n {{\n isTranslated('dossier.tabs.' + data.item.contentKey)\n ? ('dossier.tabs.' + data.item.contentKey | translate)\n : data.item.contentKey\n }}\n</ng-template>\n\n<ng-template #addTabButton>\n <button cdsButton=\"primary\" (click)=\"openAddTabModal()\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<valtimo-dossier-management-add-tab-modal\n *ngIf=\"openAddModal$ | async\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [open]=\"openAddModal$ | async\"\n (closeModalEvent)=\"onCloseAddModalEvent($event)\"\n></valtimo-dossier-management-add-tab-modal>\n\n<valtimo-dossier-management-edit-tab-modal\n *ngIf=\"openEditModal$ | async\"\n [tab]=\"tab$ | async\"\n (closeModalEvent)=\"onCloseEditModalEvent($event)\"\n [open]=\"openEditModal$ | async\"\n></valtimo-dossier-management-edit-tab-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.tabManagement.deleteModal.description\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dossierManagement.tabManagement.deleteModal.title\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {Component, ViewChild} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {Link16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {DocumentDefinition, DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {IconService, NotificationService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, Observable, switchMap} from 'rxjs';\nimport {DossierDetailService} from '../../services';\nimport {DossierManagementConnectModalComponent} from '../dossier-management-connect-modal/dossier-management-connect-modal.component';\n\n@Component({\n selector: 'valtimo-dossier-management-processes',\n templateUrl: './dossier-management-processes.component.html',\n styleUrls: ['./dossier-management-processes.component.scss'],\n providers: [NotificationService],\n})\nexport class DossierManagementProcessesComponent {\n @ViewChild('dossierConnectModal')\n private readonly _dossierConnectModal: DossierManagementConnectModalComponent;\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly processDocumentDefinitions$: Observable<ProcessDocumentDefinition[]> =\n this._refresh$.pipe(\n switchMap(() =>\n combineLatest([this.route.paramMap, this.dossierDetailService.selectedVersionNumber$])\n ),\n switchMap(([params, version]) =>\n this.documentService.findProcessDocumentDefinitionsByVersion(\n params.get('name') ?? '',\n version\n )\n )\n );\n\n public readonly documentDefinition$ = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.documentService.getDocumentDefinitionForManagement(params.get('name') ?? '')\n )\n );\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'dossierManagement.unlinkProcess',\n callback: this.deleteProcessDocumentDefinition.bind(this),\n type: 'danger',\n },\n ];\n public readonly fields: ColumnConfig[] = [\n {\n key: 'processName',\n label: 'interface.name',\n viewType: ViewType.TEXT,\n },\n {\n key: 'canInitializeDocument',\n label: 'processCaseConnection.processCreatesCase',\n viewType: ViewType.BOOLEAN,\n },\n {\n key: 'startableByUser',\n label: 'processCaseConnection.startableWithinCase',\n viewType: ViewType.BOOLEAN,\n },\n ];\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private readonly dossierDetailService: DossierDetailService,\n private readonly route: ActivatedRoute,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(Link16);\n }\n\n public deleteProcessDocumentDefinition(\n processDocumentDefinition: ProcessDocumentDefinition\n ): void {\n this.documentService\n .deleteProcessDocumentDefinition({\n documentDefinitionName: processDocumentDefinition.id.documentDefinitionId.name,\n processDefinitionKey: processDocumentDefinition.id.processDefinitionKey,\n documentDefinitionVersion: processDocumentDefinition.id.documentDefinitionId.version,\n canInitializeDocument: processDocumentDefinition.canInitializeDocument,\n startableByUser: processDocumentDefinition.startableByUser,\n })\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.unlinkSuccess'\n ),\n duration: 5000,\n });\n this.loadProcessDocumentDefinitions();\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.unlinkFailure'\n ),\n duration: 5000,\n });\n },\n });\n }\n\n public loadProcessDocumentDefinitions(): void {\n this._refresh$.next(null);\n }\n\n public openDossierConnectModal(documentDefinition: DocumentDefinition): void {\n this._dossierConnectModal.openModal(documentDefinition);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-container\n *ngIf=\"{\n documentDefinition: documentDefinition$ | async,\n processDocumentDefinitions: processDocumentDefinitions$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.processDocumentDefinitions\"\n [loading]=\"!obs.processDocumentDefinitions\"\n [fields]=\"fields\"\n [header]=\"false\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"connectProcessButton\"></ng-container>\n\n <valtimo-no-results\n [title]=\"'processCaseConnection.noProcessesTitle' | translate\"\n [description]=\"'processCaseConnection.noProcessesDescription' | translate\"\n [action]=\"connectProcessButton\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <ng-template #connectProcessButton>\n <button\n cdsButton=\"primary\"\n [disabled]=\"!obs.processDocumentDefinitions\"\n (click)=\"openDossierConnectModal(obs.documentDefinition)\"\n >\n {{ 'dossierManagement.processLink' | translate }}\n\n <svg cdsIcon=\"link\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </ng-template>\n</ng-container>\n\n<valtimo-dossier-management-connect-modal\n #dossierConnectModal\n (reloadProcessDocumentDefinitions)=\"loadProcessDocumentDefinitions()\"\n></valtimo-dossier-management-connect-modal>\n","/*\n * Copyright 2015-2024 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 ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {StatusModalCloseEvent, StatusModalType} from '../../../models';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {\n AbstractControl,\n AsyncValidatorFn,\n FormBuilder,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {\n CaseStatusService,\n InternalCaseStatus,\n InternalCaseStatusColor,\n InternalCaseStatusUtils,\n} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {Edit16} from '@carbon/icons';\nimport {ListItem} from 'carbon-components-angular/dropdown/list-item.interface';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-dossier-management-status-modal',\n templateUrl: './dossier-management-status-modal.component.html',\n styleUrls: ['./dossier-management-status-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementStatusModalComponent implements OnInit, OnDestroy {\n @Input() public set type(value: StatusModalType) {\n this._type$.next(value);\n\n if (value === 'closed') {\n setTimeout(() => {\n this._typeAnimationDelay$.next(value);\n }, CARBON_CONSTANTS.modalAnimationMs);\n } else {\n this._typeAnimationDelay$.next(value);\n }\n }\n\n @Input() public set prefill(value: InternalCaseStatus) {\n this._prefillStatus.next(value);\n }\n\n @Input() public usedKeys!: string[];\n @Input() public documentDefinitionName!: string;\n\n @Output() public closeModalEvent = new EventEmitter<StatusModalCloseEvent>();\n\n private readonly _type$ = new BehaviorSubject<StatusModalType>(undefined);\n private readonly _typeAnimationDelay$ = new BehaviorSubject<StatusModalType>(undefined);\n private readonly _prefillStatus = new BehaviorSubject<InternalCaseStatus>(undefined);\n\n public readonly statusFormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', [\n Validators.required,\n Validators.minLength(3),\n this.uniqueKeyValidator,\n ]),\n visibleInCaseListByDefault: this.fb.control(true, Validators.required),\n color: this.fb.control('', Validators.required),\n });\n\n private _isEdit!: boolean;\n\n public readonly isEdit$ = combineLatest([this._typeAnimationDelay$, this._prefillStatus]).pipe(\n tap(([type, prefillStatus]) => {\n if (type === 'edit' && prefillStatus) this.prefillForm(prefillStatus);\n }),\n map(([type]) => type === 'edit'),\n tap(isEdit => (this._isEdit = isEdit))\n );\n\n public readonly isAdd$ = this._typeAnimationDelay$.pipe(\n map(type => type === 'add'),\n tap(isAdd => {\n if (isAdd) this.resetForm();\n })\n );\n\n public readonly isClosed$ = this._type$.pipe(map(type => type === 'closed'));\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly COLORS: InternalCaseStatusColor[] = [\n InternalCaseStatusColor.Red,\n InternalCaseStatusColor.Magenta,\n InternalCaseStatusColor.Purple,\n InternalCaseStatusColor.Blue,\n InternalCaseStatusColor.Teal,\n InternalCaseStatusColor.Green,\n InternalCaseStatusColor.Cyan,\n InternalCaseStatusColor.Gray,\n InternalCaseStatusColor.CoolGray,\n InternalCaseStatusColor.WarmGray,\n InternalCaseStatusColor.HighContrast,\n InternalCaseStatusColor.Outline,\n ];\n\n private readonly _selectedColor$ = new BehaviorSubject<InternalCaseStatusColor>(undefined);\n\n public readonly colorListItems$: Observable<ListItem[]> = combineLatest([\n this._selectedColor$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedColor]) =>\n this.COLORS.map(color => ({\n selected: color === selectedColor,\n content: this.translateService.instant(\n 'interface.tagType.' +\n InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color)\n ),\n color,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color),\n }))\n )\n );\n\n public get visibleInCaseListByDefault(): AbstractControl<boolean, boolean> {\n return this.statusFormGroup?.get('visibleInCaseListByDefault');\n }\n\n public get key(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('key');\n }\n\n public get title(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('title');\n }\n\n public get color(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('color');\n }\n\n public get invalid(): boolean {\n return !!this.statusFormGroup?.invalid;\n }\n\n public get pristine(): boolean {\n return !!this.statusFormGroup?.pristine;\n }\n\n public readonly editingKey$ = new BehaviorSubject<boolean>(false);\n\n private readonly _originalStatusKey$ = new BehaviorSubject<string>('');\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly caseStatusService: CaseStatusService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.registerAll([Edit16]);\n }\n\n public ngOnInit(): void {\n this.openAutoKeySubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onClose(): void {\n this.close();\n }\n\n public toggleCheckedChange(checked: boolean): void {\n this.statusFormGroup.patchValue({\n visibleInCaseListByDefault: checked,\n });\n this.statusFormGroup.markAsDirty();\n }\n\n public addStatus(): void {\n this.disable();\n\n this.caseStatusService\n .saveInternalCaseStatus(this.documentDefinitionName, this.getFormValue())\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editStatus(): void {\n this.disable();\n\n this._originalStatusKey$\n .pipe(\n take(1),\n switchMap(originalStatusKey =>\n this.caseStatusService.updateInternalCaseStatus(\n this.documentDefinitionName,\n originalStatusKey,\n this.getFormValue()\n )\n )\n )\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editKeyButtonClick(): void {\n this.editingKey$.next(true);\n }\n\n public colorDropdownChange(event: {\n item: {color: string; content: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const newColor = event?.item?.color as InternalCaseStatusColor;\n\n if (newColor) {\n this._selectedColor$.next(newColor);\n this.statusFormGroup.patchValue({color: newColor});\n this.statusFormGroup.markAsDirty();\n }\n }\n\n private prefillForm(prefillStatus: InternalCaseStatus): void {\n this._originalStatusKey$.next(prefillStatus.key);\n this.statusFormGroup.patchValue({\n key: prefillStatus.key,\n title: prefillStatus.title,\n visibleInCaseListByDefault: prefillStatus.visibleInCaseListByDefault,\n color: prefillStatus.color,\n });\n this._selectedColor$.next(prefillStatus.color);\n this.statusFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetForm(): void {\n this.statusFormGroup.patchValue({\n key: '',\n title: '',\n visibleInCaseListByDefault: true,\n color: InternalCaseStatusColor.Blue,\n });\n this._selectedColor$.next(InternalCaseStatusColor.Blue);\n this.statusFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetEditingKey(): void {\n this.editingKey$.next(false);\n }\n\n private openAutoKeySubscription(): void {\n this._subscriptions.add(\n combineLatest([this.isAdd$, this.title.valueChanges, this.editingKey$]).subscribe(\n ([isAdd, titleValue, editingKey]) => {\n if (isAdd && !editingKey) {\n if (titleValue) {\n this.statusFormGroup.patchValue({key: this.getUniqueKey(titleValue)});\n } else {\n this.clearKey();\n }\n }\n }\n )\n );\n }\n\n private getUniqueKey(title: string): string {\n const dashCaseKey = `${title}`\n .toLowerCase()\n .replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')\n .replace(/_[-_]+/g, '_')\n .replace(/^[^a-z]+/g, '');\n const usedKeys = this.usedKeys;\n\n if (!usedKeys.includes(dashCaseKey)) {\n return dashCaseKey;\n }\n\n return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);\n }\n\n private getUniqueKeyWithNumber(dashCaseKey: string, usedKeys: string[]): string {\n const numbersFromCurrentKey = (dashCaseKey.match(/^\\d+|\\d+\\b|\\d+(?=\\w)/g) || []).map(\n (numberValue: string) => +numberValue\n );\n const lastNumberFromCurrentKey =\n numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];\n const newKey = lastNumberFromCurrentKey\n ? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`\n : `${dashCaseKey}-1`;\n\n if (usedKeys.includes(newKey)) {\n return this.getUniqueKeyWithNumber(newKey, usedKeys);\n }\n\n return newKey;\n }\n\n private clearKey(): void {\n this.statusFormGroup.patchValue({key: ''});\n }\n\n private uniqueKeyValidator(): AsyncValidatorFn {\n return (control: AbstractControl): Observable<ValidationErrors | null> =>\n combineLatest([this.isEdit$, control.valueChanges]).pipe(\n map(([isEdit, keyValue]) =>\n this.usedKeys?.every((key: string) => key !== keyValue) || isEdit\n ? null\n : {uniqueKey: {value: control.value}}\n )\n );\n }\n\n private disable(): void {\n this.disabled$.next(true);\n this.statusFormGroup.disable();\n }\n\n private enable(delay = true): void {\n setTimeout(\n () => {\n this.disabled$.next(false);\n this.statusFormGroup.enable();\n },\n delay ? CARBON_CONSTANTS.modalAnimationMs : 0\n );\n }\n\n private close(): void {\n this.closeModalEvent.emit('close');\n }\n\n private closeAndRefresh(): void {\n this.closeModalEvent.emit('closeAndRefresh');\n }\n\n private getFormValue(): InternalCaseStatus {\n return {\n key: this.key.value,\n title: this.title.value,\n visibleInCaseListByDefault: this.visibleInCaseListByDefault.value,\n color: this.color.value as InternalCaseStatusColor,\n };\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async,\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isAdd ? ('dossierManagement.statuses.add' | translate) : '' }}\n {{ obs.isEdit ? ('dossierManagement.statuses.edit' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"statusForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"dropdown-color-tag\">\n <cds-tag *ngIf=\"item && item.content\" class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n </div>\n</ng-template>\n\n<ng-template #statusForm let-obs=\"obs\">\n <form [formGroup]=\"statusFormGroup\" class=\"status-form\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.title' | translate }}\n\n <input cdsText formControlName=\"title\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.statuses.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [readOnly]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('dossierManagement.statuses.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.color' | translate }}\n\n <cds-dropdown\n [id]=\"'status-color-dropdown'\"\n [appendInline]=\"false\"\n [placeholder]=\"'dossierManagement.statuses.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-toggle\n [label]=\"'dossierManagement.statuses.visibleTitle' | translate\"\n [onText]=\"'dossierManagement.statuses.visible' | translate\"\n [offText]=\"'dossierManagement.statuses.invisible' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"visibleInCaseListByDefault?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </div>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addStatus()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editStatus()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {CaseStatusService, InternalCaseStatus, InternalCaseStatusUtils} from '@valtimo/document';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n ActionItem,\n ColumnConfig,\n MoveRowDirection,\n MoveRowEvent,\n ViewType,\n} from '@valtimo/components';\nimport {StatusModalCloseEvent, StatusModalType} from '../../models';\n\n@Component({\n selector: 'valtimo-dossier-management-statuses',\n templateUrl: './dossier-management-statuses.component.html',\n styleUrls: ['./dossier-management-statuses.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementStatusesComponent implements AfterViewInit {\n @ViewChild('colorColumnTemplate') colorColumnTemplate: TemplateRef<any>;\n\n private readonly _reload$ = new BehaviorSubject<null | 'noAnimation'>(null);\n\n private readonly _documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params?.name),\n filter(docDefName => !!docDefName)\n );\n\n public get documentDefinitionName$(): Observable<string> {\n return this._documentDefinitionName$;\n }\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n\n private _documentStatuses: InternalCaseStatus[] = [];\n\n public readonly documentStatuses$ = combineLatest([\n this._documentDefinitionName$,\n this._reload$,\n ]).pipe(\n tap(([_, reload]) => {\n if (reload === null) {\n this.loading$.next(true);\n }\n }),\n switchMap(([documentDefinitionName]) =>\n this.caseStatusService.getInternalCaseStatusesManagement(documentDefinitionName)\n ),\n map(statuses =>\n statuses.map(status => ({\n ...status,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n }))\n ),\n tap(statuses => {\n this._documentStatuses = statuses;\n this.usedKeys$.next(statuses.map(status => status.key));\n this.loading$.next(false);\n })\n );\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.openDeleteModal.bind(this),\n type: 'danger',\n },\n ];\n\n public readonly statusModalType$ = new BehaviorSubject<StatusModalType>('closed');\n public readonly prefillStatus$ = new BehaviorSubject<InternalCaseStatus>(undefined);\n\n public readonly statusToDelete$ = new BehaviorSubject<InternalCaseStatus>(undefined);\n public readonly showDeleteModal$ = new Subject<boolean>();\n\n constructor(\n private readonly caseStatusService: CaseStatusService,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngAfterViewInit(): void {\n this.initFields();\n }\n\n public openDeleteModal(status: InternalCaseStatus): void {\n this.statusToDelete$.next(status);\n this.showDeleteModal$.next(true);\n }\n\n public openEditModal(status: InternalCaseStatus): void {\n this.prefillStatus$.next(status);\n this.statusModalType$.next('edit');\n }\n\n public openAddModal(): void {\n this.statusModalType$.next('add');\n }\n\n public closeModal(closeModalEvent: StatusModalCloseEvent): void {\n if (closeModalEvent === 'closeAndRefresh') {\n this.reload();\n }\n\n this.statusModalType$.next('closed');\n }\n\n public confirmDeleteStatus(status: InternalCaseStatus): void {\n this.documentDefinitionName$\n .pipe(\n switchMap(documentDefinitionName =>\n this.caseStatusService.deleteInternalCaseStatus(documentDefinitionName, status.key)\n )\n )\n .subscribe(() => {\n this.reload();\n });\n }\n\n public onMoveRowClick(event: MoveRowEvent): void {\n const {direction, index} = event;\n\n const orderedStatuses: InternalCaseStatus[] =\n direction === MoveRowDirection.UP\n ? this.swapStatuses(this._documentStatuses, index - 1, index)\n : this.swapStatuses(this._documentStatuses, index, index + 1);\n\n this.documentDefinitionName$\n .pipe(\n switchMap(documentDefinitionName =>\n this.caseStatusService.updateInternalCaseStatuses(documentDefinitionName, orderedStatuses)\n )\n )\n .subscribe(() => {\n this.reload(true);\n });\n }\n\n private reload(noAnimation = false): void {\n this._reload$.next(noAnimation ? 'noAnimation' : null);\n }\n\n private swapStatuses(\n statuses: InternalCaseStatus[],\n index1: number,\n index2: number\n ): InternalCaseStatus[] {\n const temp = [...statuses];\n temp[index1] = temp.splice(index2, 1, temp[index1])[0];\n\n return temp;\n }\n\n private initFields(): void {\n this.fields$.next([\n {\n key: 'title',\n label: 'dossierManagement.statuses.columns.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'dossierManagement.statuses.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'visibleInCaseListByDefault',\n label: 'dossierManagement.statuses.columns.visible',\n viewType: ViewType.BOOLEAN,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.colorColumnTemplate,\n key: 'color',\n label: 'dossierManagement.statuses.columns.color',\n },\n ]);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-carbon-list\n *ngIf=\"{\n loading: loading$ | async,\n documentStatuses: documentStatuses$ | async,\n } as obs\"\n [items]=\"obs.documentStatuses\"\n [fields]=\"fields$ | async\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [movingRowsEnabled]=\"true\"\n [actionItems]=\"ACTION_ITEMS\"\n (rowClicked)=\"openEditModal($event)\"\n (moveRow)=\"onMoveRowClick($event)\"\n>\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [description]=\"'dossierManagement.statuses.noResults.description' | translate\"\n [title]=\"'dossierManagement.statuses.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-dossier-management-status-modal\n [type]=\"statusModalType$ | async\"\n [prefill]=\"prefillStatus$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (closeModalEvent)=\"closeModal($event)\"\n></valtimo-dossier-management-status-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.statuses.deleteText\"\n [outputOnConfirm]=\"statusToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"confirmDeleteStatus($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #buttons let-obs=\"obs\">\n <div class=\"dossier-management-search-fields__buttons\">\n <button cdsButton=\"primary\" [disabled]=\"obs.loading\" (click)=\"openAddModal()\">\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'dossierManagement.statuses.add' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #colorColumnTemplate let-data=\"data\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"data?.item?.tagType\">\n {{ 'interface.tagType.' + data?.item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {PageTitleService, PendingChangesComponent} from '@valtimo/components';\nimport {CaseManagementTabConfig, ConfigService} from '@valtimo/config';\nimport {\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n Subscription,\n tap,\n} from 'rxjs';\nimport {TabEnum} from '../../models';\nimport {DossierDetailService, TabService} from '../../services';\nimport {DossierManagementDocumentDefinitionComponent} from '../dossier-management-document-definition/dossier-management-document-definition.component';\n\n@Component({\n selector: 'valtimo-dossier-management-detail-container',\n templateUrl: './dossier-management-detail-container.component.html',\n styleUrls: ['./dossier-management-detail-container.component.scss'],\n providers: [DossierDetailService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementDetailContainerComponent\n extends PendingChangesComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n @ViewChild('contentContainer', {read: ViewContainerRef})\n private _contentContainer: ViewContainerRef;\n @ViewChild(DossierManagementDocumentDefinitionComponent)\n private _documentDefinitionTab: DossierManagementDocumentDefinitionComponent;\n\n public readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName)\n );\n\n public caseListColumn!: boolean;\n public tabManagementEnabled!: boolean;\n\n public _activeTab: TabEnum;\n public pendingTab: TabEnum | null;\n public currentTab$ = this.tabService.currentTab$.pipe(\n tap((currentTab: TabEnum) => {\n this._activeTab = currentTab;\n })\n );\n public readonly injectedCaseManagementTabs$: Observable<CaseManagementTabConfig[]> =\n this.tabService.injectedCaseManagementTabs$;\n public readonly documentDefinitionTitle$ = this.pageTitleService.customPageTitle$;\n public readonly CARBON_THEME = 'g10';\n public readonly DossierManagementTabs = Object.values(TabEnum);\n\n public readonly TabEnum = TabEnum;\n\n private _activeVersion: number | null;\n private _pendingVersion: number | null;\n private _subscriptions = new Subscription();\n constructor(\n private readonly dossierDetailService: DossierDetailService,\n private readonly route: ActivatedRoute,\n private readonly configService: ConfigService,\n private readonly tabService: TabService,\n private readonly pageTitleService: PageTitleService\n ) {\n super();\n const featureToggles = this.configService.config.featureToggles;\n this.caseListColumn = featureToggles?.caseListColumn ?? true;\n this.tabManagementEnabled = featureToggles?.enableTabManagement ?? true;\n }\n\n public ngOnInit(): void {\n this.openActiveVersionSubscription();\n }\n\n public ngAfterViewInit(): void {\n if (this._documentDefinitionTab) this.customModal = this._documentDefinitionTab.cancelModal;\n this.openInjectedTabSubscription();\n }\n\n public ngOnDestroy(): void {\n this.tabService.currentTab = TabEnum.DOCUMENT;\n this._subscriptions.unsubscribe();\n this.pageTitleService.enableReset();\n }\n\n public displayBodyComponent(tab: TabEnum | string, isInjectedTab = false): void {\n if (!this.customModal && !!this._documentDefinitionTab)\n this.customModal = this._documentDefinitionTab.cancelModal;\n\n if (this.pendingChanges) {\n this.onCanDeactivate();\n }\n this.tabService.currentTab = tab;\n }\n\n public onCancelRedirectEvent(): void {\n this.onCustomCancel();\n if (this._activeVersion) {\n this.dossierDetailService.setPreviousSelectedVersionNumber(this._activeVersion);\n this._activeVersion = null;\n return;\n }\n\n if (!this.pendingTab) {\n return;\n }\n this.tabService.currentTab = this.pendingTab;\n }\n\n public onConfirmRedirectEvent(): void {\n this.pendingTab = null;\n this._activeVersion = null;\n if (this._pendingVersion) {\n this.dossierDetailService.setSelectedVersionNumber(this._pendingVersion);\n this._pendingVersion = null;\n this.dossierDetailService.setPreviousSelectedVersionNumber(null);\n }\n this.onCustomConfirm();\n }\n\n public onPendingChangesUpdate(pendingChanges: boolean): void {\n this.pendingChanges = pendingChanges;\n this.pendingTab = pendingChanges ? this._activeTab : null;\n }\n\n public onVersionSet(version: number): void {\n if (this.pendingChanges) {\n this.onCanDeactivate();\n this._pendingVersion = version;\n return;\n }\n this.dossierDetailService.setSelectedVersionNumber(version);\n }\n\n private openActiveVersionSubscription(): void {\n this._subscriptions.add(\n this.dossierDetailService.selectedVersionNumber$.subscribe((versionNumber: number | null) => {\n this._activeVersion = versionNumber;\n })\n );\n }\n\n private openInjectedTabSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.currentTab$.pipe(distinctUntilChanged()),\n this.injectedCaseManagementTabs$,\n ]).subscribe(([currentTab, injectedCaseManagementTabs]) => {\n const findInjectedTab = injectedCaseManagementTabs.find(\n injectedTab => injectedTab.translationKey === currentTab\n );\n\n this._contentContainer.clear();\n if (findInjectedTab && this._contentContainer) {\n this._contentContainer.createComponent(findInjectedTab.component);\n }\n })\n );\n }\n\n protected onCanDeactivate(): void {\n this._documentDefinitionTab?.onCanDeactivate();\n }\n}\n","<!--\n ~ Copyright 2015-2024 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\n *ngIf=\"{\n currentTab: currentTab$ | async,\n injectedTabs: injectedCaseManagementTabs$ | async,\n } as obs\"\n class=\"dossier-management-detail-container\"\n>\n <valtimo-documenten-api></valtimo-documenten-api>\n <cds-tabs class=\"dossier-management-tabs\" type=\"contained\">\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.DOCUMENT\"\n [heading]=\"'dossierManagement.tabs.document' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.DOCUMENT)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.CASE\"\n [heading]=\"'dossierManagement.tabs.cases' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.CASE)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.PROCESSES\"\n [heading]=\"'dossierManagement.tabs.processes' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.PROCESSES)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [active]=\"obs.currentTab === TabEnum.SEARCH\"\n [heading]=\"'dossierManagement.tabs.searchFields' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.SEARCH)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"caseListColumn\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.LIST\"\n [heading]=\"'dossierManagement.tabs.listColumns' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.LIST)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"tabManagementEnabled\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.TABS\"\n [heading]=\"'dossierManagement.tabs.tabManagement' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.TABS)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"{active: obs.currentTab === TabEnum.STATUSES} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.statuses' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.STATUSES)\"\n >\n <valtimo-dossier-management-statuses\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-statuses>\n </cds-tab>\n\n @for (injectedTab of obs.injectedTabs; track injectedTab.translationKey) {\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === injectedTab.translationKey\"\n [heading]=\"injectedTab.translationKey | translate\"\n (selected)=\"displayBodyComponent(injectedTab.translationKey, true)\"\n >\n </cds-tab>\n }\n </cds-tabs>\n\n <div class=\"dossier-management-detail-container__content\">\n <ng-template #contentContainer></ng-template>\n\n <valtimo-dossier-management-document-definition\n *ngIf=\"\n (obs.currentTab === TabEnum.DOCUMENT && !pendingChanges) || pendingTab === TabEnum.DOCUMENT\n \"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (pendingChangesUpdate)=\"onPendingChangesUpdate($event)\"\n (cancelRedirect)=\"onCancelRedirectEvent()\"\n (confirmRedirect)=\"onConfirmRedirectEvent()\"\n ></valtimo-dossier-management-document-definition>\n\n <valtimo-dossier-management-detail\n *ngIf=\"(obs.currentTab === TabEnum.CASE && !pendingChanges) || pendingTab === TabEnum.CASE\"\n ></valtimo-dossier-management-detail>\n\n <valtimo-dossier-management-processes\n *ngIf=\"\n (obs.currentTab === TabEnum.PROCESSES && !pendingChanges) ||\n pendingTab === TabEnum.PROCESSES\n \"\n ></valtimo-dossier-management-processes>\n\n <valtimo-dossier-management-search-fields\n *ngIf=\"\n (obs.currentTab === TabEnum.SEARCH && !pendingChanges) || pendingTab === TabEnum.SEARCH\n \"\n ></valtimo-dossier-management-search-fields>\n\n <valtimo-dossier-management-list-columns\n *ngIf=\"(obs.currentTab === TabEnum.LIST && !pendingChanges) || pendingTab === TabEnum.LIST\"\n ></valtimo-dossier-management-list-columns>\n\n <valtimo-dossier-management-tabs\n *ngIf=\"(obs.currentTab === TabEnum.TABS && !pendingChanges) || pendingTab === TabEnum.TABS\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-tabs>\n </div>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-dossier-management-detail-container-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (versionSet)=\"onVersionSet($event)\"\n ></valtimo-dossier-management-detail-container-actions>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2024 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\nenum UPLOAD_STATUS {\n ACTIVE = 'active',\n ERROR = 'error',\n FINISHED = 'finished',\n}\n\nenum UPLOAD_STEP {\n ACCESS_CONTROL = 'accessControl',\n DASHBOARD = 'dashboard',\n FILE_SELECT = 'fileSelect',\n FILE_UPLOAD = 'fileUpload',\n PLUGINS = 'plugins',\n}\n\nconst STEPS = [\n UPLOAD_STEP.PLUGINS,\n UPLOAD_STEP.FILE_SELECT,\n UPLOAD_STEP.FILE_UPLOAD,\n UPLOAD_STEP.ACCESS_CONTROL,\n UPLOAD_STEP.DASHBOARD,\n];\n\nexport {STEPS, UPLOAD_STATUS, UPLOAD_STEP};\n","/*\n * Copyright 2015-2024 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 {HttpClient, HttpResponse} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierManagementService {\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this.valtimoEndpointUri = this.configService.config.valtimoApi.endpointUri;\n }\n\n public importDocumentDefinitionZip(file: FormData): Observable<HttpResponse<Blob>> {\n return this.http.post<HttpResponse<Blob>>(\n `${this.valtimoEndpointUri}management/v1/case/import`,\n file\n );\n }\n}\n","/*\n * Copyright 2015-2024 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';\n\n@Component({\n selector: 'valtimo-dossier-management-upload-step',\n templateUrl: './dossier-management-upload-step.component.html',\n styleUrls: ['./dossier-management-upload-step.component.scss'],\n})\nexport class DossierManagementUploadStepComponent {\n @Input() illustration!: string;\n @Input() message!: string;\n @Input() title!: string;\n}\n","<!--\n ~ Copyright 2015-2024 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=\"valtimo-upload-step__content\">\n <div class=\"valtimo-upload-step__title\">{{ title }}</div>\n\n <div class=\"valtimo-upload-step__message\">{{ message }}</div>\n</div>\n\n<img [src]=\"illustration\" alt=\"{{ illustration }}\" class=\"valtimo-upload-step__illustration\" />\n","/*\n * Copyright 2015-2024 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 */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {WarningFilled16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {DocumentDefinitionCreateRequest, DocumentService} from '@valtimo/document';\nimport {FileItem, IconService, NotificationContent} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {DossierManagementService} from '../../services/dossier-management.service';\nimport {STEPS, UPLOAD_STATUS, UPLOAD_STEP} from './dossier-management-upload.constants';\n\n@Component({\n selector: 'valtimo-dossier-management-upload',\n templateUrl: './dossier-management-upload.component.html',\n styleUrls: ['./dossier-management-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementUploadComponent implements OnInit, OnDestroy {\n @Input() open = false;\n @Output() closeModal = new EventEmitter<boolean>();\n\n public acceptedFiles: string[] = ['.json', '.zip'];\n public selectedFile: File | null;\n\n private readonly _disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly UPLOAD_STEP = UPLOAD_STEP;\n public readonly UPLOAD_STATUS = UPLOAD_STATUS;\n public readonly activeStep$ = new BehaviorSubject<UPLOAD_STEP>(UPLOAD_STEP.PLUGINS);\n public readonly backButtonEnabled$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.ACCESS_CONTROL, UPLOAD_STEP.DASHBOARD].includes(\n activeStep\n )\n )\n );\n public readonly isStepAfterUpload$: Observable<boolean> = this.activeStep$.pipe(\n map(\n (activeStep: UPLOAD_STEP) =>\n ![UPLOAD_STEP.PLUGINS, UPLOAD_STEP.FILE_SELECT].includes(activeStep)\n )\n );\n public readonly showCloseButton$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.PLUGINS, UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.FILE_UPLOAD].includes(activeStep)\n )\n );\n public readonly nextButtonDisabled$: Observable<boolean> = combineLatest([\n this.activeStep$,\n this._disabled$,\n ]).pipe(map(([activeStep, disabled]) => activeStep !== UPLOAD_STEP.PLUGINS && disabled));\n public readonly notificationObj$: Observable<NotificationContent> = combineLatest([\n this.translateService.stream('interface.warning'),\n this.translateService.stream('dossierManagement.importDefinition.overwriteWarning'),\n ]).pipe(\n map(([title, message]) => ({\n type: 'warning',\n title,\n message,\n showClose: false,\n lowContrast: true,\n }))\n );\n public readonly showCheckboxError$ = new BehaviorSubject<boolean>(false);\n public readonly uploadStatus$ = new BehaviorSubject<UPLOAD_STATUS>(UPLOAD_STATUS.ACTIVE);\n\n public form: FormGroup = this.fb.group({\n file: this.fb.control(new Set<any>(), [Validators.required]),\n });\n\n private _checked = false;\n\n private readonly _importFile$ = new BehaviorSubject<string | FormData>('');\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly dossierManagementService: DossierManagementService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(WarningFilled16);\n }\n\n public ngOnInit(): void {\n const control: AbstractControl | null = this.form.get('file');\n if (!control) {\n return;\n }\n\n this._subscriptions.add(\n this.form.get('file').valueChanges.subscribe((fileSet: Set<FileItem>) => {\n const [fileItem] = fileSet;\n if (!fileItem) {\n this._disabled$.next(true);\n this.showCheckboxError$.next(false);\n this._checked = false;\n return;\n }\n\n if (fileItem.file.type === 'application/json') {\n this.setJsonFile(fileItem);\n return;\n }\n\n this.setZipFile(fileItem);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.resetModal();\n }\n\n public onCloseModal(definitionUploaded?: boolean): void {\n this.closeModal.emit(definitionUploaded ?? false);\n this.resetModal();\n }\n\n public onBackClick(activeStep: UPLOAD_STEP): void {\n const prevIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) - 1;\n if (prevIndex === -1) {\n return;\n }\n\n this.activeStep$.next(STEPS[prevIndex]);\n }\n\n public onNextClick(activeStep: UPLOAD_STEP): void {\n const nextIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) + 1;\n if (nextIndex === STEPS.length) {\n return;\n }\n\n if (activeStep === UPLOAD_STEP.FILE_SELECT && !this._checked) {\n this.showCheckboxError$.next(true);\n return;\n }\n\n this.activeStep$.next(STEPS[nextIndex]);\n if (STEPS[nextIndex] !== UPLOAD_STEP.FILE_UPLOAD) {\n return;\n }\n\n this.uploadDefinition();\n }\n\n public onCheckedChange(checked: boolean): void {\n this._checked = checked;\n\n if (!checked) {\n return;\n }\n\n this.showCheckboxError$.next(false);\n }\n\n private setJsonFile(fileItem: FileItem | undefined): void {\n const file = fileItem?.file;\n\n if (!file) {\n this.clearJsonString();\n return;\n }\n const reader = new FileReader();\n\n reader.onloadend = () => {\n const result = (reader.result ?? '').toString();\n if (this.stringIsValidJson(result)) {\n this._disabled$.next(false);\n this._importFile$.next(result);\n return;\n }\n\n this.clearJsonString();\n this.setErrorState(fileItem);\n };\n\n reader.readAsText(file);\n }\n\n private setZipFile(fileItem: FileItem): void {\n const file = fileItem?.file;\n\n if (!file) {\n this._importFile$.next('');\n return;\n }\n\n const blob = new Blob([fileItem.file], {type: fileItem.file.type});\n const fd = new FormData();\n fd.append('file', blob, fileItem.file.name);\n this._importFile$.next(fd);\n this._disabled$.next(false);\n }\n\n private uploadDefinition(): void {\n this._disabled$.next(true);\n this._importFile$\n .pipe(\n switchMap((file: string | FormData) =>\n file instanceof FormData\n ? this.dossierManagementService.importDocumentDefinitionZip(file)\n : this.documentService.createDocumentDefinitionForManagement(\n new DocumentDefinitionCreateRequest(file)\n )\n ),\n take(1)\n )\n .subscribe({\n next: () => {\n this._disabled$.next(false);\n this.uploadStatus$.next(UPLOAD_STATUS.FINISHED);\n },\n error: () => {\n this.uploadStatus$.next(UPLOAD_STATUS.ERROR);\n this._disabled$.next(false);\n },\n });\n }\n\n private clearJsonString(): void {\n this._importFile$.next('');\n }\n\n private stringIsValidJson(string: string) {\n try {\n JSON.parse(string);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n private setErrorState(fileItem: FileItem): void {\n this._disabled$.next(true);\n fileItem.invalid = true;\n fileItem.invalidTitle = this.translateService.instant(\n 'dossierManagement.importDefinition.invalidJsonError.title'\n );\n fileItem.invalidText = this.translateService.instant(\n 'dossierManagement.importDefinition.invalidJsonError.text'\n );\n }\n\n private resetModal(): void {\n setTimeout(() => {\n this.activeStep$.next(UPLOAD_STEP.PLUGINS);\n this.uploadStatus$.next(UPLOAD_STATUS.ACTIVE);\n this.showCheckboxError$.next(false);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-dossier-management-upload-step\n [message]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-dossier-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'dossierManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'dossierManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'dossierManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"!obs.nextButtonDisabled\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'dossierManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'dossierManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'dossierManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'dossierManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'dossierManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {Edit16, Information16} from '@carbon/icons';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {DocumentService, TemplatePayload} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, take, tap} from 'rxjs';\n\n@Component({\n selector: 'valtimo-dossier-management-create',\n styleUrls: ['./dossier-management-create.component.scss'],\n templateUrl: './dossier-management-create.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementCreateComponent {\n @Input() open = false;\n @Output() closeModal = new EventEmitter<TemplatePayload | null>();\n\n public formGroup: FormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n name: this.fb.control({value: '', disabled: true}, [\n Validators.required,\n Validators.pattern('[A-Za-z0-9-]*'),\n ]),\n });\n\n private readonly _editActive$ = new BehaviorSubject<boolean>(false);\n public readonly editActive$ = this._editActive$.pipe(\n tap((editActive: boolean) => {\n const name: AbstractControl | null = this.formGroup.get('name');\n if (!name) {\n return;\n }\n\n if (editActive) {\n name.enable();\n return;\n }\n name.disable();\n })\n );\n public readonly editDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly idError$ = new BehaviorSubject<string | null>(null);\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Edit16, Information16]);\n }\n\n public onCloseModal(definitionCreated?: boolean): void {\n if (!definitionCreated) {\n this.closeModal.emit(null);\n this.resetForm();\n return;\n }\n\n const {name, title} = this.formGroup.controls;\n if (!name || !title) {\n return;\n }\n\n this.documentService\n .getDocumentDefinition(name.value, true)\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.idError$.next('dossierManagement.createDefinition.idError');\n this.editDisabled$.next(false);\n this.enableEdit();\n },\n error: () => {\n this.closeModal.emit({\n documentDefinitionId: name.value,\n documentDefinitionTitle: title.value,\n });\n this.resetForm();\n },\n });\n }\n\n public enableEdit(): void {\n this._editActive$.next(true);\n }\n\n public onFocusOut(): void {\n const {name, title} = this.formGroup.controls;\n if (!name || !title) {\n return;\n }\n\n if (!title.value) {\n return;\n }\n\n name.patchValue(title.value.replace(/\\W+/g, '-').replace(/\\-$/, '').toLowerCase());\n this.editDisabled$.next(false);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.formGroup.reset();\n this.idError$.next(null);\n this._editActive$.next(false);\n this.editDisabled$.next(true);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal\n *ngIf=\"{\n editDisabled: editDisabled$ | async,\n idError: idError$ | async,\n editActive: editActive$ | async,\n } as obs\"\n [open]=\"open\"\n showFooter=\"true\"\n valtimoCdsModal\n class=\"valtimo-definition-create\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.createDefinition.modalTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <form [formGroup]=\"formGroup\" cdsModalContent class=\"valtimo-definition-create__content\">\n <cds-label>\n {{ 'dossierManagement.createDefinition.title' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'dossierManagement.createDefinition.titleTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'dossierManagement.createDefinition.titlePlaceholder' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n (focusout)=\"onFocusOut()\"\n />\n </cds-label>\n\n <cds-label [invalid]=\"!!obs.idError\" [invalidText]=\"obs.idError | translate\">\n {{ 'dossierManagement.createDefinition.name' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'dossierManagement.createDefinition.nameTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <div class=\"valtimo-definition-create__name\">\n <input\n cdsText\n formControlName=\"name\"\n [invalid]=\"!!obs.idError\"\n [placeholder]=\"'dossierManagement.createDefinition.namePlaceholder' | translate\"\n [attr.modal-primary-focus]=\"true\"\n />\n\n <button\n *ngIf=\"!obs.editActive\"\n cdsButton=\"secondary\"\n [disabled]=\"obs.editDisabled\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"enableEdit()\"\n >\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </cds-label>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"formGroup.invalid\" (click)=\"onCloseModal(true)\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {Component} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {Search20, TrashCan20, Upload16} from '@carbon/icons';\nimport {ColumnConfig, MenuService, Pagination, ViewType} from '@valtimo/components';\nimport {\n DocumentDefinition,\n DocumentService,\n Page,\n TemplatePayload,\n CreateDocumentDefinitionResponse,\n} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport moment from 'moment';\nimport {BehaviorSubject, map, Observable, switchMap, take} from 'rxjs';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n selector: 'valtimo-dossier-management-list',\n templateUrl: './dossier-management-list.component.html',\n styleUrls: ['./dossier-management-list.component.scss'],\n})\nexport class DossierManagementListComponent {\n public pagination: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n };\n\n private readonly _refreshData$ = new BehaviorSubject<null>(null);\n public dossiers$: Observable<DocumentDefinition[]> = this._refreshData$.pipe(\n switchMap(() =>\n this.documentService.queryDefinitionsForManagement({\n page: this.pagination.page - 1,\n size: this.pagination.size,\n })\n ),\n map((documentDefinitionPage: Page<DocumentDefinition>) => {\n this.pagination = {\n ...this.pagination,\n collectionSize: documentDefinitionPage.totalElements,\n };\n\n return documentDefinitionPage.content.map((documentDefinition: DocumentDefinition) => ({\n ...documentDefinition,\n createdOn: moment(documentDefinition.createdOn).format('DD MMM YYYY HH:mm'),\n }));\n })\n );\n\n public dossierFields: ColumnConfig[] = [\n {key: 'schema.title', label: 'fieldLabels.title', viewType: ViewType.TEXT},\n {key: 'createdOn', label: 'fieldLabels.createdOn', viewType: ViewType.TEXT},\n {key: 'readOnly', label: 'fieldLabels.readOnly', viewType: ViewType.BOOLEAN},\n ];\n\n public readonly showCreateModal$ = new BehaviorSubject<boolean>(false);\n public readonly showUploadModal$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private readonly menuService: MenuService,\n private readonly router: Router\n ) {\n this.iconService.registerAll([Search20, TrashCan20, Upload16]);\n }\n\n public onCloseUploadModal(definitionUploaded: boolean): void {\n this.showUploadModal$.next(false);\n\n if (!definitionUploaded) {\n return;\n }\n this._refreshData$.next(null);\n this.menuService.reload();\n }\n\n public onCloseCreateModal(templatePayload: TemplatePayload | null): void {\n this.showCreateModal$.next(false);\n if (!templatePayload) {\n return;\n }\n\n this.documentService\n .createDocumentDefinitionTemplate(templatePayload)\n .pipe(take(1))\n .subscribe((response: CreateDocumentDefinitionResponse) => {\n this.redirectToDetails(response.documentDefinition);\n });\n }\n\n public paginationClicked(page: number): void {\n this.pagination = {...this.pagination, page};\n this._refreshData$.next(null);\n }\n\n public paginationSet(size: number): void {\n this.pagination = {...this.pagination, size};\n this._refreshData$.next(null);\n }\n\n public redirectToDetails(documentDefinition: DocumentDefinition): void {\n this.router.navigate(['/dossier-management/dossier', documentDefinition.id.name]);\n }\n\n public showUploadModal(): void {\n this.showUploadModal$.next(true);\n }\n\n public showCreateModal(): void {\n this.showCreateModal$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-carbon-list\n *ngIf=\"dossiers$ | async as dossiers; else loading\"\n [items]=\"dossiers\"\n [fields]=\"dossierFields\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"dossierManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"redirectToDetails($event)\"\n>\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"importCaseDefinitionButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addCaseDefinitionButton\"\n [description]=\"'dossierManagement.noResults.description' | translate\"\n [title]=\"'dossierManagement.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #loading>\n <valtimo-carbon-list loading=\"true\"></valtimo-carbon-list>\n</ng-template>\n\n<valtimo-dossier-management-upload\n [open]=\"showUploadModal$ | async\"\n (closeModal)=\"onCloseUploadModal($event)\"\n></valtimo-dossier-management-upload>\n\n<valtimo-dossier-management-create\n [open]=\"showCreateModal$ | async\"\n (closeModal)=\"onCloseCreateModal($event)\"\n></valtimo-dossier-management-create>\n\n<ng-template #importCaseDefinitionButton>\n <button cdsButton=\"ghost\" (click)=\"showUploadModal()\">\n {{ 'Upload' | translate }}\n\n <svg cdsIcon=\"upload\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" (click)=\"showCreateModal()\">\n {{ 'interface.create' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {CARBON_CONSTANTS, ValtimoCdsModalDirectiveModule} from '@valtimo/components';\nimport {TabManagementService} from '../../services';\nimport {ApiTabItem, ApiTabType} from '@valtimo/dossier';\nimport {\n ButtonModule,\n InputModule,\n ModalModule,\n NotificationService,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-dossier-management-widget-tab-edit-modal',\n templateUrl: './dossier-management-widget-tab-edit-modal.html',\n styleUrls: ['./dossier-management-widget-tab-edit-modal.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [NotificationService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirectiveModule,\n ReactiveFormsModule,\n InputModule,\n ButtonModule,\n ],\n})\nexport class DossierManagementWidgetTabEditModalComponent implements OnInit, OnDestroy {\n @Input() public showModal$: Observable<boolean>;\n @Input() public tabItem: ApiTabItem;\n @Output() public saveEvent = new EventEmitter<any>();\n\n public readonly open$ = new BehaviorSubject<boolean>(false);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n public readonly editWidgetTabForm = this.fb.group({\n name: this.fb.control('', [Validators.required]),\n });\n\n public get widgetTabName(): AbstractControl<string | null, string | null> | null {\n return this.editWidgetTabForm.get('name');\n }\n\n private _openSubscription!: Subscription;\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly tabManagementService: TabManagementService\n ) {}\n\n public ngOnInit(): void {\n this.openOpenSubscription();\n }\n\n public ngOnDestroy(): void {\n this._openSubscription?.unsubscribe();\n }\n\n public closeModal(): void {\n this.open$.next(false);\n\n setTimeout(() => {\n this.editWidgetTabForm.reset();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public saveWidgetTab(): void {\n this.disable();\n\n this.tabManagementService\n .editTab(\n {\n key: this.tabItem.key,\n name: this.widgetTabName?.value,\n contentKey: '-',\n type: ApiTabType.WIDGETS,\n },\n this.tabItem.key\n )\n .subscribe(() => {\n this.saveEvent.emit();\n this.closeModal();\n });\n }\n\n private setEditWidgetTabForm(): void {\n if (this.tabItem) {\n this.widgetTabName?.setValue(this.tabItem.name ?? '');\n }\n\n this.enable();\n }\n\n private openOpenSubscription(): void {\n this._openSubscription = this.showModal$.subscribe(show => {\n this.setEditWidgetTabForm();\n this.open$.next(show);\n });\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-2024 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<cds-modal\n *ngIf=\"{disabled: disabled$ | async} as obs\"\n valtimoCdsModal\n [open]=\"open$ | async\"\n showFooter=\"true\"\n title=\"{{ 'widgetTabManagement.tab.editWidgetTab' | translate }}\"\n class=\"edit-widget-tab-modal\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'widgetTabManagement.tab.editWidgetTab' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"editWidgetTabFormTemplate;context:{obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"editWidgetTabButtons;context:{obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #editWidgetTabFormTemplate let-obs=\"obs\">\n <form *ngIf=\"editWidgetTabForm\" [formGroup]=\"editWidgetTabForm\" class=\"widget-tab-modal__form\">\n <cds-label [disabled]=\"obs.disabled\" [invalid]=\"widgetTabName.dirty && widgetTabName.invalid\">\n {{ 'widgetTabManagement.tab.form.tabName' | translate }}\n\n <input\n cdsText\n [disabled]=\"obs.disabled\"\n [invalid]=\"widgetTabName.dirty && widgetTabName.invalid\"\n formControlName=\"name\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </form>\n</ng-template>\n\n<ng-template #editWidgetTabButtons let-obs=\"obs\">\n <button cdsButton=\"ghost\" [disabled]=\"obs.disabled\" (click)=\"closeModal()\">\n {{ 'widgetTabManagement.tab.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"editWidgetTabForm.invalid || obs.disabled\"\n (click)=\"saveWidgetTab()\"\n >\n {{ 'widgetTabManagement.tab.save' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WidgetWizardService} from '../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-content-step',\n templateUrl: './widget-wizard-content-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CommonModule],\n})\nexport class WidgetWizardContentStepComponent implements OnInit {\n @ViewChild('contentRenderer', {static: true, read: ViewContainerRef})\n private readonly _vcr: ViewContainerRef;\n\n @Output() public contentValidEvent = new EventEmitter<boolean>();\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this.renderComponent();\n }\n\n private renderComponent(): void {\n this._vcr.clear();\n const widget = this.widgetWizardService.selectedWidget();\n if (!widget) return;\n\n const componentInstance = this._vcr.createComponent(widget.component).instance;\n if (!componentInstance) return;\n\n componentInstance.changeValidEvent.subscribe((valid: boolean) =>\n this.contentValidEvent.emit(valid)\n );\n\n this.cdr.detectChanges();\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-template #contentRenderer></ng-template>\n","/*\n * Copyright 2015-2024 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 {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, EventEmitter, Output} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TilesModule} from 'carbon-components-angular';\nimport {WidgetWizardService} from '../../../../services';\nimport {WidgetStyle} from '../../../../models';\n\n@Component({\n selector: 'valtimo-widget-wizard-style-step',\n templateUrl: './widget-wizard-style-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardStyleStepComponent {\n public readonly WidgetStyle = WidgetStyle;\n public readonly widgetStyle = this.widgetWizardService.widgetStyle;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: WidgetStyle}): void {\n this.widgetWizardService.widgetStyle.set(event.value);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"WidgetStyle.DEFAULT\"\n [selected]=\"widgetStyle() === WidgetStyle.DEFAULT\"\n >\n <h3>{{ 'widgetTabManagement.style.default.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.style.default.description' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/style/default.svg\"\n [alt]=\"'widgetTabManagement.style.default.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"WidgetStyle.HIGH_CONTRAST\"\n [selected]=\"widgetStyle() === WidgetStyle.HIGH_CONTRAST\"\n >\n <h3>{{ 'widgetTabManagement.style.highContrast.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.style.highContrast.description' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/style/high-contrast.svg\"\n [alt]=\"'widgetTabManagement.style.highContrast.title' | translate\"\n />\n </cds-selection-tile>\n</cds-tile-group>\n","/*\n * Copyright 2015-2024 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 {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {AVAILABLE_WIDGETS, WidgetTypeSelection} from '../../../../models';\nimport {TilesModule} from 'carbon-components-angular';\nimport {WidgetWizardService} from '../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-type-step',\n templateUrl: './widget-wizard-type-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardTypeStepComponent {\n public readonly availableWidgets = AVAILABLE_WIDGETS;\n public readonly selectedWidget = this.widgetWizardService.selectedWidget;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: WidgetTypeSelection}): void {\n if (event.value.type !== this.widgetWizardService.selectedWidget()?.type) {\n this.widgetWizardService.widgetContent.set(null);\n this.widgetWizardService.widgetTitle.set(null);\n }\n\n this.widgetWizardService.selectedWidget.set(event.value);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n @for (widgetType of availableWidgets; track widgetType.titleKey) {\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"widgetType\"\n [selected]=\"widgetType.type === selectedWidget()?.type\"\n >\n <h3 class=\"valtimo-widget-wizard-step__tile-title\">{{ widgetType.titleKey | translate }}</h3>\n\n <span>{{ widgetType.descriptionKey | translate }}</span>\n\n <img [src]=\"widgetType.illustrationUrl\" [alt]=\"widgetType.titleKey | translate\" />\n </cds-selection-tile>\n }\n</cds-tile-group>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, Signal} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CaseWidgetType, CaseWidgetWidth} from '@valtimo/dossier';\nimport {TilesModule} from 'carbon-components-angular';\nimport {WidgetWizardService} from '../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-width-step',\n templateUrl: './widget-wizard-width-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardWidthStepComponent {\n public readonly fieldsColumnsLength: Signal<number> = computed(() =>\n this.widgetWizardService.selectedWidget()?.type === CaseWidgetType.FIELDS\n ? (this.widgetWizardService.widgetContent()?.['columns']?.length ?? 0)\n : 0\n );\n public readonly widgetWidth = this.widgetWizardService.widgetWidth;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: CaseWidgetWidth}): void {\n this.widgetWizardService.widgetWidth.set(event.value);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"1\"\n [selected]=\"widgetWidth() === 1\"\n [disabled]=\"fieldsColumnsLength() > 1\"\n >\n <h3>{{ 'widgetTabManagement.width.small.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.small.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/quarter.svg\"\n [alt]=\"'widgetTabManagement.width.small.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"2\"\n [selected]=\"widgetWidth() === 2\"\n [disabled]=\"fieldsColumnsLength() > 2\"\n >\n <h3>{{ 'widgetTabManagement.width.medium.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.medium.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/half.svg\"\n [alt]=\"'widgetTabManagement.width.medium.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"3\"\n [selected]=\"widgetWidth() === 3\"\n [disabled]=\"fieldsColumnsLength() > 3\"\n >\n <h3>{{ 'widgetTabManagement.width.large.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.large.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/three-quarters.svg\"\n [alt]=\"'widgetTabManagement.width.large.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"4\"\n [selected]=\"widgetWidth() === 4\"\n >\n <h3>{{ 'widgetTabManagement.width.xtraLarge.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.xtraLarge.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/full-width.svg\"\n [alt]=\"'widgetTabManagement.width.xtraLarge.title' | translate\"\n />\n </cds-selection-tile>\n</cds-tile-group>\n","/*\n * Copyright 2015-2024 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 */\nimport {WidgetWizardContentStepComponent} from './widget-wizard-content-step/widget-wizard-content-step.component';\nimport {WidgetWizardStyleStepComponent} from './widget-wizard-style-step/widget-wizard-style-step.component';\nimport {WidgetWizardTypeStepComponent} from './widget-wizard-type-step/widget-wizard-type-step.component';\nimport {WidgetWizardWidthStepComponent} from './widget-wizard-width-step/widget-wizard-width-step.component';\n\nexport const WIDGET_STEPS = [\n WidgetWizardContentStepComponent,\n WidgetWizardStyleStepComponent,\n WidgetWizardTypeStepComponent,\n WidgetWizardWidthStepComponent,\n];\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n Input,\n Output,\n Signal,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {ButtonModule, ModalModule, ProgressIndicatorModule, Step} from 'carbon-components-angular';\nimport {combineLatest, map, Observable} from 'rxjs';\nimport {WIDGET_STYLE_LABELS, WIDGET_WIDTH_LABELS, WidgetWizardStep} from '../../models';\nimport {WidgetWizardService} from '../../services';\nimport {WIDGET_STEPS} from './steps';\n\n@Component({\n selector: 'valtimo-dossier-management-widget-wizard',\n templateUrl: './dossier-management-widget-wizard.component.html',\n styleUrls: ['./dossier-management-widget-wizard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ProgressIndicatorModule,\n ModalModule,\n ButtonModule,\n ...WIDGET_STEPS,\n ],\n})\nexport class DossierManagementWidgetWizardComponent {\n @Input() public open = false;\n private _editMode: boolean;\n @Input() public set editMode(value: boolean) {\n this._editMode = value;\n if (!value) return;\n\n this.currentStep.set(WidgetWizardStep.CONTENT);\n }\n public get editMode(): boolean {\n return this._editMode;\n }\n @Output() public closeEvent = new EventEmitter<any>();\n\n public readonly WidgetWizardSteps = WidgetWizardStep;\n private readonly _secondaryLabels = computed(() => {\n const selectedWidgetType = this.widgetWizardService.selectedWidget()?.type ?? '';\n const selectedWidth = this.widgetWizardService.widgetWidth() ?? '';\n const selectedStyle = this.widgetWizardService.widgetStyle() ?? '';\n\n return {\n [WidgetWizardStep.TYPE]: selectedWidgetType\n ? `widgetTabManagement.types.${selectedWidgetType}.title`\n : '',\n [WidgetWizardStep.WIDTH]: WIDGET_WIDTH_LABELS[selectedWidth] ?? '',\n [WidgetWizardStep.STYLE]: WIDGET_STYLE_LABELS[selectedStyle] ?? '',\n };\n });\n\n public readonly steps$: Observable<Step[]> = combineLatest([\n toObservable(this._secondaryLabels),\n toObservable(this.widgetWizardService.editMode),\n this.translateService.stream('key'),\n ]).pipe(\n map(([secondaryLabels, editMode]) => {\n return [\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.type'),\n ...(secondaryLabels[WidgetWizardStep.TYPE] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[WidgetWizardStep.TYPE]),\n }),\n disabled: editMode,\n complete: !!this.widgetWizardService.selectedWidget()?.type,\n },\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.width'),\n ...(secondaryLabels[WidgetWizardStep.WIDTH] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[WidgetWizardStep.WIDTH]),\n }),\n disabled: !secondaryLabels[WidgetWizardStep.TYPE],\n complete: !!this.widgetWizardService.widgetWidth(),\n },\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.style'),\n ...(secondaryLabels[WidgetWizardStep.STYLE] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[WidgetWizardStep.STYLE]),\n }),\n disabled: !secondaryLabels[WidgetWizardStep.WIDTH],\n complete: !!this.widgetWizardService.widgetStyle(),\n },\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.content'),\n disabled:\n !secondaryLabels[WidgetWizardStep.TYPE] ||\n !secondaryLabels[WidgetWizardStep.WIDTH] ||\n !secondaryLabels[WidgetWizardStep.STYLE],\n complete: !!this.widgetWizardService.widgetContent(),\n },\n ];\n })\n );\n\n private readonly _contentStepValid = signal<boolean>(false);\n public readonly currentStep = signal<WidgetWizardStep>(WidgetWizardStep.TYPE);\n public readonly backButtonDisabled: Signal<boolean> = computed(\n () => this.widgetWizardService.editMode() && this.currentStep() === WidgetWizardStep.WIDTH\n );\n public nextButtonDisabled = computed(() => {\n switch (this.currentStep()) {\n case WidgetWizardStep.TYPE:\n return !this.widgetWizardService.selectedWidget();\n case WidgetWizardStep.WIDTH:\n return !this.widgetWizardService.widgetWidth();\n case WidgetWizardStep.STYLE:\n return this.widgetWizardService.widgetStyle() === null;\n case WidgetWizardStep.CONTENT:\n return this.widgetWizardService.widgetContent() === null || !this._contentStepValid();\n default:\n return true;\n }\n });\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public onStepSelected(event: {step: Step; index: WidgetWizardStep}): void {\n this.currentStep.set(event.index);\n }\n\n public onNextButtonClick(): void {\n if (this.currentStep() === WidgetWizardStep.CONTENT) {\n this.closeEvent.emit(this.widgetWizardService.widgetsConfig());\n this.resetWizard();\n return;\n }\n\n this.currentStep.update((step: WidgetWizardStep) => step + 1);\n }\n\n public onBackButtonClick(): void {\n this.currentStep.update((step: WidgetWizardStep) => step - 1);\n }\n\n public onClose(): void {\n this.closeEvent.emit(null);\n this.resetWizard();\n }\n\n public onContentValidEvent(valid: boolean): void {\n this._contentStepValid.set(valid);\n }\n\n private resetWizard(): void {\n setTimeout(() => {\n this.widgetWizardService.resetWizard();\n this.currentStep.set(WidgetWizardStep.TYPE);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal\n *ngIf=\"{steps: steps$ | async} as obs\"\n [open]=\"open\"\n showFooter=\"true\"\n size=\"lg\"\n valtimoCdsModal\n class=\"valtimo-dossier-management-widget-wizard\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ 'widgetTabManagement.wizard.' + (editMode ? 'edit' : 'create') | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-dossier-management-widget-wizard__content\">\n <cds-progress-indicator\n [current]=\"currentStep()\"\n [skeleton]=\"!obs.steps\"\n [spacing]=\"'equal'\"\n [steps]=\"obs.steps\"\n (stepSelected)=\"onStepSelected($event)\"\n >\n </cds-progress-indicator>\n\n @switch (currentStep()) {\n @case (WidgetWizardSteps.TYPE) {\n <p>{{ 'widgetTabManagement.types.description' | translate }}</p>\n\n <valtimo-widget-wizard-type-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-type-step>\n }\n @case (WidgetWizardSteps.WIDTH) {\n <p>{{ 'widgetTabManagement.width.description' | translate }}</p>\n\n <valtimo-widget-wizard-width-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-width-step>\n }\n @case (WidgetWizardSteps.STYLE) {\n <p>{{ 'widgetTabManagement.style.description' | translate }}</p>\n\n <valtimo-widget-wizard-style-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-style-step>\n }\n @case (WidgetWizardSteps.CONTENT) {\n <valtimo-widget-wizard-content-step\n (contentValidEvent)=\"onContentValidEvent($event)\"\n ></valtimo-widget-wizard-content-step>\n }\n @default {\n <p>{{ 'widgetTabManagement.types.description' | translate }}</p>\n\n <valtimo-widget-wizard-type-step></valtimo-widget-wizard-type-step>\n }\n }\n </section>\n\n <cds-modal-footer class=\"valtimo-dossier-management-widget-wizard__footer\">\n <button\n class=\"valtimo-dossier-management-widget-wizard__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onClose()\"\n >\n {{ 'interface.cancel' | translate }}\n </button>\n\n @if (currentStep() !== WidgetWizardSteps.TYPE) {\n <button\n class=\"valtimo-dossier-management-widget-wizard__back\"\n cdsButton=\"secondary\"\n [disabled]=\"backButtonDisabled()\"\n (click)=\"onBackButtonClick()\"\n >\n {{ 'interface.back' | translate }}\n </button>\n }\n\n <button\n class=\"valtimo-dossier-management-widget-wizard__next\"\n cdsButton=\"primary\"\n [disabled]=\"nextButtonDisabled()\"\n (click)=\"onNextButtonClick()\"\n >\n {{\n 'interface.' + (currentStep() === WidgetWizardSteps.CONTENT ? 'save' : 'next') | translate\n }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 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 {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n KeyGeneratorService,\n ViewType,\n} from '@valtimo/components';\nimport {BasicCaseWidget, CaseWidget, CaseWidgetsRes} from '@valtimo/dossier';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, take} from 'rxjs';\nimport {AVAILABLE_WIDGETS, WidgetStyle, WidgetTypeTags} from '../../../models';\nimport {WidgetTabManagementService, WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetWizardComponent} from '../../dossier-management-widget-wizard/dossier-management-widget-wizard.component';\nimport {cloneDeep} from 'lodash';\n\n@Component({\n selector: 'valtimo-dossier-management-widgets-editor',\n templateUrl: './dossier-management-widgets-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n TabsModule,\n DossierManagementWidgetWizardComponent,\n ConfirmationModalModule,\n ],\n})\nexport class DossierManagementWidgetsEditorComponent {\n @Input() public documentDefinitionName: string;\n @Input() public tabWidgetKey: string;\n private _currentWidgetTab: CaseWidgetsRes;\n @Input() public set currentWidgetTab(value: CaseWidgetsRes) {\n if (!value) return;\n\n this._currentWidgetTab = value;\n this._items$.next(value?.widgets);\n this._usedKeys = value?.widgets.map(widget => widget.key);\n this.dragAndDropDisabled.set(false);\n }\n public get currentWidgetTab(): CaseWidgetsRes {\n return this._currentWidgetTab;\n }\n\n @Output() public readonly changeSaved = new EventEmitter();\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'interface.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'tags',\n label: 'widgetTabManagement.columns.type',\n viewType: ViewType.TAGS,\n },\n {\n key: 'key',\n label: 'interface.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'widthTranslation',\n label: 'widgetTabManagement.columns.width',\n viewType: ViewType.TEXT,\n },\n {\n key: 'highContrast',\n label: 'widgetTabManagement.columns.highContrast',\n viewType: ViewType.BOOLEAN,\n },\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editWidget.bind(this),\n },\n {\n label: 'interface.duplicate',\n callback: this.duplicateWidget.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.deleteWidget.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _items$ = new BehaviorSubject<CarbonListItem[]>([]);\n public readonly items$: Observable<CarbonListItem[]> = combineLatest([\n this._items$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([items]) =>\n items.map(item => ({\n ...item,\n widthTranslation: this.translateService.instant(this.getWidthTranslationKey(item.width)),\n tags: [\n {\n content: this.translateService.instant(`widgetTabManagement.types.${item.type}.title`),\n type: WidgetTypeTags[item.type],\n },\n ],\n }))\n )\n );\n\n public readonly isWizardOpen$ = new BehaviorSubject<boolean>(false);\n public readonly isEditMode = this.widgetWizardService.editMode;\n public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly deleteRowKey$ = new Subject<number>();\n\n public readonly dragAndDropDisabled = signal(false);\n\n private _usedKeys: string[];\n\n constructor(\n private readonly keyGeneratorService: KeyGeneratorService,\n private readonly translateService: TranslateService,\n private readonly widgetTabManagementService: WidgetTabManagementService,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public editWidget(tabWidget: CaseWidget): void {\n this.widgetWizardService.widgetTitle.set(tabWidget.title);\n this.widgetWizardService.widgetStyle.set(\n tabWidget.highContrast ? WidgetStyle.HIGH_CONTRAST : WidgetStyle.DEFAULT\n );\n this.widgetWizardService.widgetWidth.set(tabWidget.width);\n this.widgetWizardService.selectedWidget.set(\n AVAILABLE_WIDGETS.find(available => available.type === tabWidget.type) ?? null\n );\n this.widgetWizardService.widgetContent.set(tabWidget.properties);\n this.widgetWizardService.editMode.set(true);\n this.widgetWizardService.widgetKey.set(tabWidget.key);\n this.widgetWizardService.widgetActions.set(tabWidget.actions);\n this.isWizardOpen$.next(true);\n }\n\n public duplicateWidget(tabWidget: CaseWidget): void {\n const tabWidgetClone = cloneDeep(tabWidget);\n tabWidgetClone.key = null;\n this.editWidget(tabWidgetClone);\n }\n\n public openAddModal(): void {\n this.isWizardOpen$.next(true);\n }\n\n public onDeleteConfirm(widgetKey: string): void {\n this.widgetTabManagementService\n .updateWidgets({\n ...this.currentWidgetTab,\n widgets: this.currentWidgetTab.widgets.filter(widget => widget.key !== widgetKey),\n })\n .pipe(take(1))\n .subscribe(() => {\n this.changeSaved.emit();\n });\n }\n\n public onCloseEvent(widgetResult: BasicCaseWidget, existingWidgets: CaseWidget[]): void {\n this.isWizardOpen$.next(false);\n this.widgetWizardService.resetWizard();\n\n if (!widgetResult) return;\n\n this.widgetTabManagementService\n .updateWidgets({\n caseDefinitionName: this.documentDefinitionName,\n key: this.tabWidgetKey,\n widgets: !!widgetResult.key\n ? existingWidgets.map((widget: BasicCaseWidget) =>\n widget.key === widgetResult.key ? widgetResult : widget\n )\n : [\n ...existingWidgets,\n {\n ...widgetResult,\n key: this.keyGeneratorService.getUniqueKey(widgetResult.title, this._usedKeys),\n },\n ],\n })\n .pipe(take(1))\n .subscribe(() => {\n this.changeSaved.emit();\n });\n }\n\n public onItemsReordered(widgets: CaseWidget[]): void {\n this.dragAndDropDisabled.set(true);\n\n this.widgetTabManagementService\n .updateWidgets({\n ...this.currentWidgetTab,\n widgets,\n })\n .pipe(take(1))\n .subscribe(() => {\n this.changeSaved.emit();\n });\n }\n\n private deleteWidget(tabWidget: any): void {\n this.deleteRowKey$.next(tabWidget.key);\n this.deleteModalOpen$.next(true);\n }\n\n private getWidthTranslationKey(width: number): string {\n switch (width) {\n case 1:\n return 'widgetTabManagement.width.small.title';\n case 2:\n return 'widgetTabManagement.width.medium.title';\n case 3:\n return 'widgetTabManagement.width.large.title';\n case 4:\n return 'widgetTabManagement.width.xtraLarge.title';\n default:\n return '-';\n }\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-container\n *ngIf=\"{\n isWizardOpen: isWizardOpen$ | async,\n items: items$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [items]=\"obs.items\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"dragAndDropDisabled()\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editWidget($event)\"\n >\n <ng-container carbonToolbarContent>\n <ng-container *ngTemplateOutlet=\"addWidgetButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n [description]=\"'widgetTabManagement.list.noResults.description' | translate\"\n [title]=\"'widgetTabManagement.list.noResults.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <ng-template #addWidgetButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'widgetTabManagement.list.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-template>\n\n <valtimo-dossier-management-widget-wizard\n [editMode]=\"isEditMode()\"\n [open]=\"obs.isWizardOpen\"\n (closeEvent)=\"onCloseEvent($event, obs.items)\"\n ></valtimo-dossier-management-widget-wizard>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"Are you sure you want to delete this widget?\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n Input,\n Output,\n Signal,\n signal,\n ViewChild,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {Edit16, Save16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n ConfirmationModalComponent,\n ConfirmationModalModule,\n EditorModel,\n EditorModule,\n} from '@valtimo/components';\nimport {BasicCaseWidget, CaseWidgetsRes} from '@valtimo/dossier';\nimport {\n ButtonModule,\n IconModule,\n IconService,\n NotificationService,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, Observable, take} from 'rxjs';\nimport {WidgetJsonEditorService, WidgetTabManagementService} from '../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-widgets-json-editor',\n templateUrl: './dossier-management-widgets-json-editor.component.html',\n styleUrl: './dossier-management-widgets-json-editor.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n EditorModule,\n ButtonModule,\n IconModule,\n ConfirmationModalModule,\n ],\n providers: [NotificationService],\n})\nexport class DossierManagementWidgetsJsonEditorComponent implements AfterViewInit {\n @ViewChild('pendingChangesModal') public pendingChangesModal: ConfirmationModalComponent;\n\n private _currentWidgetTab: CaseWidgetsRes;\n @Input() public set currentWidgetTab(value: CaseWidgetsRes) {\n if (!value) return;\n this._currentWidgetTab = value;\n this.jsonModel.set({\n value: JSON.stringify(value),\n language: 'json',\n });\n }\n\n @Output() public readonly customModalLoaded = new EventEmitter<ConfirmationModalComponent>();\n @Output() public readonly canDeactivate = new EventEmitter<boolean>();\n @Output() public readonly pendingChangesUpdate = new EventEmitter<boolean>();\n @Output() public readonly changeSaved = new EventEmitter();\n\n public readonly jsonModel = signal<EditorModel | null>(null);\n public readonly editActive = signal<boolean>(false);\n\n public readonly showPendingModal$: Observable<boolean> = toObservable(\n this.widgetJsonEditorService.showPendingModal\n );\n public readonly showSaveConfirmation$ = new BehaviorSubject<boolean>(false);\n\n private readonly _widgetConfig = signal<CaseWidgetsRes | null>(null);\n\n private _editorInit = false;\n private _pendingChanges = false;\n private readonly _jsonValid = signal<boolean>(false);\n private readonly _jsonSchemaInvalid = signal<boolean>(false);\n public readonly saveButtonDisabled: Signal<boolean> = computed(\n () => !this._jsonValid() || this._jsonSchemaInvalid() || !this._widgetConfig()\n );\n\n constructor(\n private readonly iconService: IconService,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService,\n private readonly widgetJsonEditorService: WidgetJsonEditorService,\n private readonly widgetTabManagementService: WidgetTabManagementService\n ) {\n this.iconService.registerAll([Edit16, Save16]);\n }\n\n public ngAfterViewInit(): void {\n this.customModalLoaded.emit(this.pendingChangesModal);\n }\n\n public downloadConfig(): void {\n const dataString =\n 'data:text/json;charset=utf-8,' +\n encodeURIComponent(JSON.stringify(this._currentWidgetTab, null, 2));\n const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n if (!downloadAnchorElement) {\n return;\n }\n\n downloadAnchorElement.setAttribute('href', dataString);\n downloadAnchorElement.setAttribute(\n 'download',\n `${this._currentWidgetTab.caseDefinitionName}-widgets.json`\n );\n downloadAnchorElement.click();\n }\n\n public keepEditing(): void {\n this.widgetJsonEditorService.showPendingModal.set(false);\n this.showSaveConfirmation$.next(false);\n this.canDeactivate.emit(false);\n }\n\n public discardChanges(): void {\n this.editActive.set(false);\n this.jsonModel.update((model: EditorModel | null) => ({\n ...model,\n value: JSON.stringify(this._currentWidgetTab),\n }));\n this.widgetJsonEditorService.showPendingModal.set(false);\n this.setPendingChanges(false);\n this.canDeactivate.emit(true);\n }\n\n public save(): void {\n const config: CaseWidgetsRes | null = this._widgetConfig();\n\n if (!config) return;\n\n this.widgetTabManagementService\n .updateWidgets(config)\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('interface.success'),\n message: this.translateService.instant('widgetTabManagement.notification.success'),\n showClose: true,\n duration: CARBON_CONSTANTS.notificationDuration,\n });\n this.widgetJsonEditorService.showPendingModal.set(false);\n this.editActive.set(false);\n this.setPendingChanges(false);\n this.changeSaved.emit();\n this.canDeactivate.emit(true);\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('interface.error'),\n message: this.translateService.instant('widgetTabManagement.notification.error'),\n showClose: true,\n duration: CARBON_CONSTANTS.notificationDuration,\n });\n },\n });\n }\n\n public onCancelClick(): void {\n if (!this._widgetConfig() || !this._pendingChanges) {\n this.editActive.set(false);\n return;\n }\n\n this.widgetJsonEditorService.showPendingModal.set(true);\n }\n\n public onEditClick(): void {\n this.editActive.set(true);\n }\n\n public onSaveClick(): void {\n this.showSaveConfirmation$.next(true);\n }\n\n public onValidEvent(valid: boolean) {\n this._jsonValid.set(valid);\n }\n\n public onValueChangeEvent(value: string) {\n if (!this._editorInit) {\n this._editorInit = true;\n return;\n }\n\n this.setPendingChanges(true);\n\n const widgetConfig: CaseWidgetsRes = JSON.parse(value);\n const editedWidgetKeys: string[] = widgetConfig.widgets.map(\n (widget: BasicCaseWidget) => widget.key\n );\n\n this._jsonSchemaInvalid.set(\n widgetConfig.key !== this._currentWidgetTab.key ||\n widgetConfig.caseDefinitionName !== this._currentWidgetTab.caseDefinitionName ||\n new Set(editedWidgetKeys).size !== editedWidgetKeys.length\n );\n\n if (!this._jsonValid() || !this.editActive()) return;\n\n this._widgetConfig.set(JSON.parse(value));\n }\n\n private setPendingChanges(changes: boolean): void {\n this._pendingChanges = changes;\n this.pendingChangesUpdate.emit(changes);\n\n if (changes) return;\n\n this._widgetConfig.set(null);\n this._editorInit = false;\n }\n}\n","<!--\n ~ Copyright 2015-2024 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=\"cds--toolbar-content\">\n @if (!editActive()) {\n <button cdsButton=\"ghost\" (click)=\"downloadConfig()\">\n {{ 'interface.download' | translate }}\n\n <svg cdsIcon=\"download\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" (click)=\"onEditClick()\">\n {{ 'interface.edit' | translate }}\n\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n } @else {\n <button cdsButton=\"secondary\" (click)=\"onCancelClick()\">\n {{ 'interface.cancel' | translate }}\n\n <svg cdsIcon=\"close\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"saveButtonDisabled()\" (click)=\"onSaveClick()\">\n {{ 'interface.save' | translate }}\n\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n }\n</div>\n\n<valtimo-editor\n *ngIf=\"jsonModel()\"\n [model]=\"jsonModel()\"\n [disabled]=\"!editActive()\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"96\"\n (validEvent)=\"onValidEvent($event)\"\n (valueChangeEvent)=\"onValueChangeEvent($event)\"\n></valtimo-editor>\n\n<a id=\"downloadAnchorElement\" style=\"display: none\"></a>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showSaveConfirmation$\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n confirmButtonTextTranslationKey=\"interface.save\"\n contentTranslationKey=\"widgetTabManagement.saveModalContent\"\n titleTranslationKey=\"interface.save\"\n (cancelEvent)=\"keepEditing()\"\n (confirmEvent)=\"save()\"\n></valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n #pendingChangesModal\n [showModalSubject$]=\"showPendingModal$\"\n cancelButtonTextTranslationKey=\"interface.pendingChanges.keepEditing\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.discard\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"widgetTabManagement.cancelModal.content\"\n optionalButtonTextTranslationKey=\"interface.save\"\n optionalButtonType=\"secondary\"\n titleTranslationKey=\"widgetTabManagement.cancelModal.title\"\n showOptionalButton=\"true\"\n spacerAfterCancelButton=\"true\"\n (cancelEvent)=\"keepEditing()\"\n (confirmEvent)=\"discardChanges()\"\n (optionalEvent)=\"save()\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Edit16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n BreadcrumbService,\n ConfirmationModalComponent,\n PageHeaderService,\n PageTitleService,\n PendingChangesComponent,\n RenderInPageHeaderDirectiveModule,\n} from '@valtimo/components';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {ButtonModule, IconModule, IconService, TabsModule} from 'carbon-components-angular';\nimport moment from 'moment/moment';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, switchMap, tap} from 'rxjs';\nimport {WidgetEditorTab} from '../../models';\nimport {\n TabManagementService,\n WidgetJsonEditorService,\n WidgetTabManagementService,\n} from '../../services';\nimport {DossierManagementWidgetTabEditModalComponent} from '../dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal';\nimport {DossierManagementWidgetsEditorComponent} from './editor/dossier-management-widgets-editor.component';\nimport {DossierManagementWidgetsJsonEditorComponent} from './json-editor/dossier-management-widgets-json-editor.component';\n\n@Component({\n selector: 'valtimo-dossier-management-case-widgets',\n templateUrl: './dossier-management-widget-tab.component.html',\n styleUrl: './dossier-management-widget-tab.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n DossierManagementWidgetsEditorComponent,\n DossierManagementWidgetTabEditModalComponent,\n DossierManagementWidgetsJsonEditorComponent,\n RenderInPageHeaderDirectiveModule,\n ButtonModule,\n IconModule,\n TabsModule,\n ],\n})\nexport class DossierManagementWidgetTabComponent\n extends PendingChangesComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n public readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(documentDefinitionName => !!documentDefinitionName),\n tap(documentDefinitionName =>\n this.tabManagementService.setCaseDefinitionId(documentDefinitionName)\n )\n );\n\n public readonly tabWidgetKey$: Observable<string> = this.route.params.pipe(\n map(params => params.key || ''),\n filter(tabWidgetKey => !!tabWidgetKey)\n );\n\n private readonly _refreshWidgetTabSubject$ = new BehaviorSubject<null>(null);\n public readonly showEditWidgetTabModal$ = new BehaviorSubject<boolean>(false);\n public readonly currentWidgetTabItem$: Observable<ApiTabItem> = combineLatest([\n this.tabWidgetKey$,\n this.translateService.stream('key'),\n this._refreshWidgetTabSubject$,\n ]).pipe(\n switchMap(([tabKey]) => this.tabManagementService.getTab(tabKey)),\n tap(tabItem => {\n const title =\n tabItem.name ||\n this.translateService.instant(`widgetTabManagement.metadata.${tabItem.key}`);\n this.pageTitleService.setCustomPageTitle(title);\n this.pageTitleService.setCustomPageSubtitle(\n this.translateService.instant('widgetTabManagement.tab.metadata', {\n createdBy: tabItem?.createdBy || '-',\n createdOn: !!tabItem?.createdOn\n ? moment(tabItem?.createdOn).format('DD MMM YYYY HH:mm')\n : '-',\n key: tabItem.key,\n })\n );\n })\n );\n public readonly currentWidgetTab$ = combineLatest([\n this.documentDefinitionName$,\n this.tabWidgetKey$,\n this._refreshWidgetTabSubject$,\n ]).pipe(\n switchMap(([caseDefinitionName, tabWidgetKey]) =>\n this.widgetTabManagementService.getWidgetTabConfiguration(caseDefinitionName, tabWidgetKey)\n )\n );\n\n public readonly WidgetEditorTab = WidgetEditorTab;\n public readonly activeTab = signal<WidgetEditorTab | null>(WidgetEditorTab.VISUAL);\n public readonly activeContent = signal<WidgetEditorTab | null>(WidgetEditorTab.VISUAL);\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n private _pendingTab: WidgetEditorTab | null = null;\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly iconService: IconService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly tabManagementService: TabManagementService,\n private readonly widgetTabManagementService: WidgetTabManagementService,\n private readonly translateService: TranslateService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly widgetJsonEditorService: WidgetJsonEditorService\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n }\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([Edit16]);\n this.initBreadcrumb();\n }\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearThirdBreadcrumb();\n this.pageTitleService.disableReset();\n }\n\n public displayBodyComponent(tab: WidgetEditorTab): void {\n if (this.pendingChanges && tab !== this.activeTab()) {\n this._pendingTab = this.activeTab();\n this.activeTab.set(tab);\n this.onCanDeactivate();\n return;\n }\n this.activeTab.set(tab);\n this.activeContent.set(tab);\n }\n\n public editWidgetTab(): void {\n this.showEditWidgetTabModal();\n }\n\n public onPendingChangesUpdate(changeActive: boolean): void {\n this.pendingChanges = changeActive;\n }\n\n private showEditWidgetTabModal(): void {\n this.showEditWidgetTabModal$.next(true);\n }\n\n public refreshWidgetTab(): void {\n if (this.pendingChanges) this.onCustomConfirm();\n this._refreshWidgetTabSubject$.next(null);\n }\n\n public onCustomModalLoaded(modal: ConfirmationModalComponent): void {\n if (!!this.customModal) return;\n\n this.customModal = modal;\n }\n\n public onJsonCanDeactivate(canDeactivate: boolean): void {\n if (canDeactivate) {\n this.onCustomConfirm();\n return;\n }\n\n this.onCustomCancel();\n }\n\n protected onCancelRedirect(): void {\n this.activeTab.set(this._pendingTab);\n }\n\n protected onConfirmRedirect(): void {\n this.activeContent.set(this.activeTab());\n }\n\n protected onCanDeactivate(): void {\n this.widgetJsonEditorService.showPendingModal.set(true);\n }\n\n private initBreadcrumb(): void {\n this.documentDefinitionName$.subscribe(documentDefinitionName => {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/dossier-management/dossier/${documentDefinitionName}`],\n content: documentDefinitionName,\n href: `/dossier-management/dossier/${documentDefinitionName}`,\n });\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-dossier-management-widget-tab-edit-modal\n [tabItem]=\"currentWidgetTabItem$ | async\"\n [showModal$]=\"showEditWidgetTabModal$\"\n (saveEvent)=\"refreshWidgetTab()\"\n>\n</valtimo-dossier-management-widget-tab-edit-modal>\n\n<cds-tabs type=\"contained\">\n <cds-tab\n [active]=\"activeTab() === WidgetEditorTab.VISUAL\"\n [heading]=\"'interface.editor.visualEditor' | translate\"\n (selected)=\"displayBodyComponent(WidgetEditorTab.VISUAL)\"\n >\n </cds-tab>\n\n <cds-tab\n [active]=\"activeTab() === WidgetEditorTab.JSON\"\n [heading]=\"'interface.editor.jsonEditor' | translate\"\n (selected)=\"displayBodyComponent(WidgetEditorTab.JSON)\"\n >\n </cds-tab>\n</cds-tabs>\n\n@switch (activeContent()) {\n @case (WidgetEditorTab.VISUAL) {\n <valtimo-dossier-management-widgets-editor\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [tabWidgetKey]=\"tabWidgetKey$ | async\"\n [currentWidgetTab]=\"currentWidgetTab$ | async\"\n (changeSaved)=\"refreshWidgetTab()\"\n ></valtimo-dossier-management-widgets-editor>\n }\n @case (WidgetEditorTab.JSON) {\n <valtimo-dossier-management-widgets-json-editor\n [currentWidgetTab]=\"currentWidgetTab$ | async\"\n (canDeactivate)=\"onJsonCanDeactivate($event)\"\n (changeSaved)=\"refreshWidgetTab()\"\n (customModalLoaded)=\"onCustomModalLoaded($event)\"\n (pendingChangesUpdate)=\"onPendingChangesUpdate($event)\"\n ></valtimo-dossier-management-widgets-json-editor>\n }\n}\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"tertiary\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n (click)=\"editWidgetTab()\"\n >\n {{ 'widgetTabManagement.tab.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2024 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 */\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {pendingChangesGuard} from '@valtimo/components';\nimport {ROLE_ADMIN} from '@valtimo/config';\nimport {AuthGuardService} from '@valtimo/security';\nimport {DossierManagementDetailContainerComponent} from './components/dossier-management-detail-container/dossier-management-detail-container.component';\nimport {DossierManagementListComponent} from './components/dossier-management-list/dossier-management-list.component';\nimport {DossierManagementWidgetTabComponent} from './components/dossier-management-widget-tab/dossier-management-widget-tab.component';\n\nconst routes: Routes = [\n {\n path: 'dossier-management',\n component: DossierManagementListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dossiers', roles: [ROLE_ADMIN]},\n },\n {\n path: 'dossier-management/dossier/:name/widget-tab/:key',\n component: DossierManagementWidgetTabComponent,\n canActivate: [AuthGuardService],\n canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Widget tab',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n customPageSubtitle: true,\n },\n },\n {\n path: 'dossier-management/dossier/:name',\n component: DossierManagementDetailContainerComponent,\n canActivate: [AuthGuardService],\n canDeactivate: [pendingChangesGuard],\n data: {title: 'Dossier details', roles: [ROLE_ADMIN], customPageTitle: true},\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class DossierManagementRoutingModule {}\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n CarbonMultiInputModule,\n ConfirmationModalModule,\n DropzoneModule,\n EditorModule,\n FormModule,\n InputModule,\n ListModule,\n ModalModule,\n MultiselectDropdownModule,\n ParagraphModule,\n RenderInPageHeaderDirectiveModule,\n SelectModule,\n SpinnerModule,\n TableModule,\n TooltipIconModule,\n ValtimoCdsModalDirectiveModule,\n ValtimoCdsOverflowButtonDirectiveModule,\n ValuePathSelectorComponent,\n WidgetModule,\n} from '@valtimo/components';\nimport {ConfigModule} from '@valtimo/config';\nimport {\n ButtonModule,\n CheckboxModule,\n ComboBoxModule,\n DialogModule,\n DropdownModule,\n FileUploaderModule,\n IconModule,\n InputModule as CarbonInputModule,\n LinkModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n ProgressBarModule,\n TabsModule,\n TagModule,\n ToggleModule,\n TooltipModule,\n} from 'carbon-components-angular';\n\nimport {DossierManagementAssigneeComponent} from './components/dossier-management-assignee/dossier-management-assignee.component';\nimport {DossierManagementConnectModalComponent} from './components/dossier-management-connect-modal/dossier-management-connect-modal.component';\nimport {DossierManagementDetailContainerActionsComponent} from './components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component';\nimport {DossierManagementDetailContainerComponent} from './components/dossier-management-detail-container/dossier-management-detail-container.component';\nimport {DossierManagementDetailComponent} from './components/dossier-management-detail/dossier-management-detail.component';\nimport {DossierManagementDocumentDefinitionComponent} from './components/dossier-management-document-definition/dossier-management-document-definition.component';\nimport {DossierManagementListColumnsComponent} from './components/dossier-management-list-columns/dossier-management-list-columns.component';\nimport {DossierManagementListComponent} from './components/dossier-management-list/dossier-management-list.component';\nimport {DossierManagementProcessesComponent} from './components/dossier-management-processes/dossier-management-processes.component';\nimport {DossierManagementRemoveModalComponent} from './components/dossier-management-remove-modal/dossier-management-remove-modal.component';\nimport {DossierManagementSearchFieldsComponent} from './components/dossier-management-search-fields/dossier-management-search-fields.component';\nimport {DossierManagementAddTabModalComponent} from './components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component';\nimport {DossierManagementEditTabModalComponent} from './components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component';\nimport {DossierManagementTabsComponent} from './components/dossier-management-tabs/dossier-management-tabs.component';\nimport {TabFormComponent} from './components/dossier-management-tabs/tab-form/tab-form.component';\nimport {DossierManagementUploadComponent} from './components/dossier-management-upload/dossier-management-upload.component';\nimport {DossierManagementUploadStepComponent} from './components/dossier-management-upload/step/dossier-management-upload-step.component';\nimport {DossierManagementRoutingModule} from './dossier-management-routing.module';\nimport {TabManagementService} from './services';\nimport {DossierManagementStatusesComponent} from './components/dossier-management-statuses/dossier-management-statuses.component';\nimport {DossierManagementStatusModalComponent} from './components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component';\nimport {DossierManagementCreateComponent} from './components/dossier-management-create/dossier-management-create.component';\nimport {DossierManagementWidgetsEditorComponent} from './components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component';\n\n@NgModule({\n declarations: [\n DossierManagementListComponent,\n DossierManagementDetailComponent,\n DossierManagementConnectModalComponent,\n DossierManagementRemoveModalComponent,\n DossierManagementUploadComponent,\n DossierManagementSearchFieldsComponent,\n DossierManagementDetailContainerComponent,\n DossierManagementAssigneeComponent,\n DossierManagementListColumnsComponent,\n DossierManagementTabsComponent,\n DossierManagementAddTabModalComponent,\n TabFormComponent,\n DossierManagementEditTabModalComponent,\n DossierManagementDetailContainerActionsComponent,\n DossierManagementDocumentDefinitionComponent,\n DossierManagementProcessesComponent,\n DossierManagementUploadStepComponent,\n DossierManagementStatusesComponent,\n DossierManagementStatusModalComponent,\n DossierManagementCreateComponent,\n ],\n imports: [\n CommonModule,\n WidgetModule,\n DropzoneModule,\n ListModule,\n DossierManagementRoutingModule,\n FormsModule,\n TranslateModule,\n ModalModule,\n ConfigModule,\n NgbTooltipModule,\n MultiselectDropdownModule,\n ParagraphModule,\n SelectModule,\n SpinnerModule,\n InputModule,\n SelectModule,\n FormModule,\n NotificationModule,\n ButtonModule,\n IconModule,\n CarbonModalModule,\n CarbonInputModule,\n ReactiveFormsModule,\n DropdownModule,\n CheckboxModule,\n TooltipIconModule,\n CarbonMultiInputModule,\n LoadingModule,\n LinkModule,\n ConfirmationModalModule,\n TableModule,\n ValtimoCdsModalDirectiveModule,\n CarbonListModule,\n ComboBoxModule,\n RenderInPageHeaderDirectiveModule,\n DialogModule,\n ValtimoCdsOverflowButtonDirectiveModule,\n NotificationModule,\n EditorModule,\n CarbonListModule,\n TabsModule,\n TagModule,\n FileUploaderModule,\n ProgressBarModule,\n ConfirmationModalModule,\n ToggleModule,\n TooltipModule,\n DossierManagementWidgetsEditorComponent,\n ValuePathSelectorComponent,\n ],\n providers: [TabManagementService],\n})\nexport class DossierManagementModule {}\n","/*\n * Copyright 2015-2024 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 dossier-management\n */\n\nexport * from './lib/dossier-management.module';\nexport * from './lib/components/dossier-management-list/dossier-management-list.component';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i5","tap","i2","i1","i5.WidgetFieldsService","i5.WidgetWizardService","i4.WidgetWizardService","i6","i7","i4.WidgetFieldsService","i3.WidgetWizardService","i8","i2.DossierDetailService","take","i2.DossierExportService","i7.DossierManagementRemoveModalComponent","switchMap","map","i5.DossierManagementAssigneeComponent","i9","i2.TabService","i3.TabService","i7.TabFormComponent","i6.TabFormComponent","i2.TabManagementService","i8.DossierManagementAddTabModalComponent","i9.DossierManagementEditTabModalComponent","i3.DossierDetailService","i8.DossierManagementConnectModalComponent","i6.DossierManagementStatusModalComponent","i1.DossierDetailService","i1.TabService","i7.DossierManagementDetailComponent","i8.DossierManagementSearchFieldsComponent","i9.DossierManagementListColumnsComponent","i10.DossierManagementTabsComponent","i11.DossierManagementDetailContainerActionsComponent","i12.DossierManagementDocumentDefinitionComponent","i13.DossierManagementProcessesComponent","i14.DossierManagementStatusesComponent","i15","i2.DossierManagementService","i8.DossierManagementUploadStepComponent","i6.DossierManagementUploadComponent","i7.DossierManagementCreateComponent","i1.WidgetWizardService","i2.WidgetWizardService","i5.WidgetWizardContentStepComponent","i6.WidgetWizardStyleStepComponent","i7.WidgetWizardTypeStepComponent","i8.WidgetWizardWidthStepComponent","i3.WidgetTabManagementService","i3.WidgetJsonEditorService","moment","i4.TabManagementService","i4.WidgetTabManagementService","i4.WidgetJsonEditorService","ModalModule","SelectModule","InputModule","CarbonModalModule","CarbonInputModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;AAcG;MAaU,kCAAkC,CAAA;IAmB7C,WACmB,CAAA,eAAgC,EACzC,KAAqB,EAAA;QADZ,IAAe,CAAA,eAAA,GAAf,eAAe;QACxB,IAAK,CAAA,KAAA,GAAL,KAAK;AApBN,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEvC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAEnD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;QAE7C,IAAuB,CAAA,uBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAC3E,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CACjC;QAEQ,IAAa,CAAA,aAAA,GAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CACpE,SAAS,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,EAC7C,SAAS,CAAC,sBAAsB,IAC9B,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,sBAAsB,CAAC,CAC1E,EACD,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACrC;QAMC,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;;IAGtD,kBAAkB,CAAC,YAA0B,EAAE,sBAA8B,EAAA;QAC3E,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC;AACF,aAAA,8BAA8B,CAAC,sBAAsB,EAAE,YAAY;aACnE,SAAS,CACR,MAAK;YACH,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,eAAe,EAAE;SACvB,EACD,MAAK;YACH,IAAI,CAAC,WAAW,EAAE;AACpB,SAAC,CACF;;IAGL,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGpB,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,cAAc,CAAC,eAA6B,EAAE,sBAA8B,EAAA;QAC1E,IAAI,CAAC,kBAAkB,CACrB;AACE,YAAA,eAAe,EAAE,CAAC,eAAe,EAAE,eAAe;YAClD,eAAe,EAAE,eAAe,CAAC,eAAe;SACjD,EACD,sBAAsB,CACvB;;IAGH,oBAAoB,CAAC,eAA6B,EAAE,sBAA8B,EAAA;QAChF,IAAI,CAAC,kBAAkB,CACrB;YACE,eAAe,EAAE,eAAe,EAAE,eAAe;AACjD,YAAA,eAAe,EAAE,CAAC,eAAe,CAAC,eAAe;SAClD,EACD,sBAAsB,CACvB;;+GAvEQ,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,2EC3B/C,0zEA+DA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDpCa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAL9C,SAAS;+BACE,qCAAqC,EAAA,QAAA,EAAA,0zEAAA,EAAA;;;AEvBjD;;;;;;;;;;;;;;AAcG;MAkBU,oBAAoB,CAAA;AAc/B,IAAA,IAAW,sBAAsB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC;;AAG1F,IAAA,IAAW,8BAA8B,GAAA;AACvC,QAAA,OAAO,IAAI,CAAC,+BAA+B,CAAC,YAAY,EAAE;;AAG5D,IAAA,IAAW,+BAA+B,GAAA;AACxC,QAAA,OAAO,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;AAG3E,IAAA,IAAW,qCAAqC,GAAA;QAC9C,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAClC,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,EACtC,oBAAoB,EAAE,CACvB;;AAGH,IAAA,IAAW,0BAA0B,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,YAAY,EAAE;;AAGxD,IAAA,IAAW,mBAAmB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;;AAG7D,IAAA,IAAW,wBAAwB,GAAA;QACjC,OAAO,IAAI,CAAC,yBAAyB;;IAKvC,WACmB,CAAA,eAAgC,EAChC,gBAAkC,EAAA;QADlC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAhDlB,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAChE,QAAA,IAAA,CAAA,+BAA+B,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAC1E,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAClE,QAAA,IAAA,CAAA,gCAAgC,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAClE,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC;AAC3E,QAAA,IAAA,CAAA,yBAAyB,GACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,GAAG,CAAC,CAAC,UAA8B,MAAM;AACvC,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,YAAA,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC,CACJ;AAiCK,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAMzC,IAAI,CAAC,kCAAkC,EAAE;;IAGpC,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;AAG5B,IAAA,wBAAwB,CAAC,aAAqB,EAAA;AACnD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC;;AAG3C,IAAA,gCAAgC,CAAC,aAA4B,EAAA;AAClE,QAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,aAAa,CAAC;;AAGnD,IAAA,iCAAiC,CAAC,IAAY,EAAA;AACnD,QAAA,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG3C,IAAA,4BAA4B,CAAC,OAAgB,EAAA;AAClD,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;;IAExC,kCAAkC,GAAA;AACxC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,+BAA+B,CAAC;AAC9E,aAAA,IAAI,CACHC,KAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAClD,YAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC;AACzC,SAAC,CAAC,EACF,SAAS,CAAC,CAAC,CAAC,eAAe,EAAE,8BAA8B,CAAC,KAC1D,IAAI,CAAC,eAAe,CAAC,8BAA8B,CACjD,8BAA8B,EAC9B,eAAe,CAChB,CACF,EACDA,KAAG,CAAC,GAAG,IAAG;AACR,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,YAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,CAAC;AACzE,YAAA,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;AAC1C,SAAC,CAAC;aAEH,SAAS,EAAE,CACf;;+GA9FQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAApB,oBAAoB,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;AC/BD;;;;;;;;;;;;;;AAcG;MAWU,oBAAoB,CAAA;IAG/B,WACmB,CAAA,IAAgB,EAChB,aAA4B,EAAA;QAD5B,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;AAE9B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW;;AAGrE,IAAA,wBAAwB,CAC7B,sBAA8B,EAC9B,OAAO,GAAG,CAAC,EAAA;AAEX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAG,EAAA,IAAI,CAAC,kBAAkB,CAAsB,mBAAA,EAAA,sBAAsB,IAAI,OAAO,CAAA,OAAA,CAAS,EAC1F,EAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAgB,EAAE,OAAO,EAAE,qBAAqB,EAAC,CACtF;;+GAjBQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,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,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCFY,oBAAoB,CAAA;IAQ/B,WACmB,CAAA,aAA4B,EAC5B,IAAgB,EAAA;QADhB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAI,CAAA,IAAA,GAAJ,IAAI;AANP,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAe,EAAE,CAAC;AAE7C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAM5D,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,+BAA+B;;IAGxG,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU;AACZ,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,KAAmB,KAAI;AAC5B,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;aAC1B;YACD,KAAK,EAAE,KAAK,IAAG;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;aACrB;AACF,SAAA,CAAC;;AAGC,IAAA,cAAc,CAAC,YAA0D,EAAA;QAC9E;AACG,aAAA,IAAI,CACHD,KAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;SACpB,CAAC,EACF,SAAS,CAAC,CAAC,MAAwC,KACjD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CACvD,EACD,IAAI,CAAC,CAAC,CAAC,EACP,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AAE/B,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,IAAkB,KAAI;AAC3B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;aACtB;YACD,KAAK,EAAE,KAAK,IAAG;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;aACnB;AACF,SAAA,CAAC;;AAGC,IAAA,MAAM,CAAC,GAAwB,EAAA;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAA,CAAA,EAAI,IAAI,CAAC,iBAAiB,CAAM,IAAA,CAAA,EAC3D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CACpB;;AAGI,IAAA,SAAS,CAAC,MAAc,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,GAAG,IAAI,CAAC,mBAAmB,CAAA,CAAA,EAAI,IAAI,CAAC,iBAAiB,QAAQ,MAAM,CAAA,CAAE,CACtE;;IAGI,OAAO,CAAC,GAAwB,EAAE,MAAc,EAAA;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAG,EAAA,IAAI,CAAC,mBAAmB,CAAI,CAAA,EAAA,IAAI,CAAC,iBAAiB,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE,EACrE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CACpB;;AAGI,IAAA,aAAa,CAAC,OAAqB,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,GAAG,IAAI,CAAC,mBAAmB,CAAA,CAAA,EAAI,IAAI,CAAC,iBAAiB,MAAM,EAC3D,OAAO,CACR;;AAGI,IAAA,mBAAmB,CAAC,gBAAwB,EAAA;AACjD,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;;AAGpC,IAAA,MAAM,CAAC,MAAc,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,GAAG,IAAI,CAAC,mBAAmB,CAAA,CAAA,EAAI,IAAI,CAAC,iBAAiB,QAAQ,MAAM,CAAA,CAAE,CACtE;;IAGK,UAAU,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,CAAG,EAAA,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,iBAAiB,CAAA,IAAA,CAAM,CAAC;;AAGzF,IAAA,SAAS,CAAC,GAAwB,EAAA;AACxC,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE;YACnB,OAAO,GAAG,CAAC,IAAI;;AAGjB,QAAA,OAAO,GAAG;;+GApGD,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAApB,oBAAoB,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;ACrBD;;;;;;;;;;;;;;AAcG;IAES;AAAZ,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,OAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,OAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,OAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,OAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,OAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,OAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EARW,OAAO,KAAP,OAAO,GAQlB,EAAA,CAAA,CAAA;;ACxBD;;;;;;;;;;;;;;AAcG;MAaU,UAAU,CAAA;AAKrB,IAAA,IAAW,2BAA2B,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE;;AAIzD,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;IAEzC,IAAW,UAAU,CAAC,GAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;;AAI7B,IAAA,IAAW,sBAAsB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE;;IAEpD,IAAW,qBAAqB,CAAC,KAAe,EAAA;AAC9C,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;;AA0D1C,IAAA,WAAA,CACuD,aAA4B,EAGhE,uBAAkD,EAClD,WAAwB,EACxB,gBAAkC,EAAA;QALE,IAAa,CAAA,aAAA,GAAb,aAAa;QAGjD,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAnF3B,QAAA,IAAA,CAAA,4BAA4B,GAAG,IAAI,eAAe,CAA4B,EAAE,CAAC;QAMjF,IAAY,CAAA,YAAA,GAAG,IAAI,eAAe,CAAmB,OAAO,CAAC,QAAQ,CAAC;AAQtE,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;QAQnD,IAAgB,CAAA,gBAAA,GAA2B,IAAI,CAAC;AAC7D,aAAA,qBAAqB;AACrB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,eAAuC,KAC1C,eAAe,CAAC,GAAG,CAAC,CAAC,cAAoC,MAAM;YAC7D,UAAU,EAAE,cAAc,CAAC,IAAI;YAC/B,OAAO,EAAE,cAAc,CAAC,IAAI;AAC5B,YAAA,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC,CACJ,CACF;AAEa,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CACxD,CAAC,IAAI,CAAC;AACJ,cAAE;AACF,cAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,UAAkB,MAAM;gBAC3D,UAAU;AACV,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC,CACR;AAEe,QAAA,IAAA,CAAA,YAAY,GAA2B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAC7F,GAAG,CAAC,MACF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAW,MAAM;AAC/C,YAAA,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,aAAA,EAAgB,GAAG,CAAA,CAAE,CAAC;AAC7D,YAAA,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC,CACJ,CACF;QAEe,IAAe,CAAA,eAAA,GAK1B,aAAa,CAAC;AACjB,YAAA,IAAI,CAAC,sBAAsB;AAC3B,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,YAAY;AACjB,YAAA,IAAI,CAAC,oBAAoB;AAC1B,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,CAAC,MAAM;AACrE,YAAA,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,OAAiB,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxF,YAAA,MAAM,EACJ,CAAC,mBAAmB,CAAC,MAAM;AAC3B,gBAAA,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAiB,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxF,YAAA,MAAM,EACJ,CAAC,eAAe,CAAC,MAAM;AACvB,gBAAA,eAAe,CAAC,KAAK,CAAC,CAAC,OAAiB,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpF,YAAA,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,CACJ;AAUC,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,uBAAuB,CAAC;;AAG1D,IAAA,6BAA6B,CACnC,uBAA6E,EAAA;AAE7E,QAAA,IAAI,CAAC,uBAAuB;YAAE;QAE9B,IAAI,CAAC,4BAA4B,CAAC,IAAI,CACpC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,GAAG,CAAC,uBAAuB,CAAC,CAC7F;;+GAlGQ,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAiFC,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAE1B,yBAAyB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAnFxB,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;;0BAkFI;;0BAAY,MAAM;2BAAC,cAAc;;0BACjC;;0BACA,MAAM;2BAAC,yBAAyB;;;AC9GrC;;;;;;;;;;;;;;AAcG;MAOU,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;AAIkB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC;AAC1D;+GAFY,uBAAuB,EAAA,IAAA,EAAA,EAAA,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;;;MCIY,0BAA0B,CAAA;IAGrC,WACmB,CAAA,IAAgB,EAChB,aAA4B,EAAA;QAD5B,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;AAE9B,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;;IAG1E,yBAAyB,CAC9B,kBAA0B,EAC1B,YAAoB,EAAA;AAEpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAG,EAAA,IAAI,CAAC,kBAAkB,iCAAiC,kBAAkB,CAAA,YAAA,EAAe,YAAY,CAAA,CAAE,CAC3G;;AAGI,IAAA,aAAa,CAAC,GAAmB,EAAA;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,8BAAA,EAAiC,GAAG,CAAC,kBAAkB,eAAe,GAAG,CAAC,GAAG,CAAE,CAAA,EACzG,GAAG,CACJ;;+GAvBQ,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,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,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA;;4FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACvBD;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;AAKH,IAAK;AAAL,CAAA,UAAK,eAAe,EAAA;AAClB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAHI,eAAe,KAAf,eAAe,GAGnB,EAAA,CAAA,CAAA;AAED,MAAM,cAAc,GAA6B;AAC/C,IAAA,CAAC,cAAc,CAAC,UAAU,GAAG,MAAM;AACnC,IAAA,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS;AAClC,IAAA,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM;AAC/B,IAAA,CAAC,cAAc,CAAC,MAAM,GAAG,OAAO;AAChC,IAAA,CAAC,cAAc,CAAC,KAAK,GAAG,QAAQ;;;AC7BlC;;;;;;;;;;;;;;AAcG;MAiFU,4CAA4C,CAAA;AAqBvD,IAAA,IAAW,QAAQ,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,SAAS;QAEjD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAc;;AAKzC,IAAA,uBAAuB,CAAC,GAAoB,EAAA;QACjD,OAAO,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,GAAG,CAAC;;AAY9D,IAAA,WAAA,CACmB,eAAgC,EAChC,GAAsB,EACtB,EAAe,EACf,WAAwB,EACxB,gBAAkC,EAClC,mBAAwC,EACxC,mBAAwC,EAAA;QANxC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QAhDA,IAAK,CAAA,KAAA,GAAG,gDAAgD;QAE9E,IAAe,CAAA,eAAA,GAAG,wCAAwC;QAC1D,IAAa,CAAA,aAAA,GAAG,KAAK;QAIrB,IAAyB,CAAA,yBAAA,GAAG,KAAK;AAEhC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAGjD;QAEY,IAAuB,CAAA,uBAAA,GAAG,uBAAuB;AAE1D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAM,EAAE,CAAC;AAC7B,SAAA,CAAC;AAQK,QAAA,IAAA,CAAA,gBAAgB,GAAe,IAAI,CAAC,mBAAmB,CAAC,gBAAgB;QAM/D,IAAwB,CAAA,wBAAA,GAAG,wBAAwB;AACnD,QAAA,IAAA,CAAA,UAAU,GAA2B,QAAQ,CAC3D,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,IAAI,IAAI,cAAc,CAAC,MAAM,CAC/E;AAEe,QAAA,IAAA,CAAA,WAAW,GAAmC,IAAI,CAAC,eAAe,CAAC,aAAa;AAExF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAWzC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;;IAGhC,QAAQ,GAAA;QACb,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,oBAAoB,EAAE;;IAGtB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;IAGjB,QAAQ,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QAEpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACZ,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAW,EAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAC,EAAE;AAC9D,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,IAAI,CAAC,mBAAmB;aACzB,CAAC;AACF,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAS,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvD,YAAA,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAS,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACzD,YAAA,sBAAsB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACrC,IAAI,EACJ,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAClC;YACD,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAkB,KAAK,CAAC;AACvD,SAAA,CAAC,CACH;;AAGI,IAAA,gBAAgB,CAAC,KAAY,EAAE,SAAoB,EAAE,KAAa,EAAA;QACvE,KAAK,CAAC,wBAAwB,EAAE;AAChC,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;;IAGpB,cAAc,CAAC,OAAkB,EAAE,KAAuB,EAAA;AAC/D,QAAA,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;;AAGvF,IAAA,mBAAmB,CAAC,eAA0B,EAAA;QACnD,eAAe,CAAC,IAAI,CAClB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACZ,YAAA,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC7C,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAChD,SAAA,CAAC,CACH;;AAGK,IAAA,mBAAmB,CAAC,OAAwB,EAAA;AAClD,QAAA,MAAM,YAAY,GAAyB,OAAO,CAAC,KAAK;AACxD,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAC,KAAK,EAAE,sBAAsB,EAAC;AAEnF,QAAA,OAAO,IAAI;;AAGL,IAAA,UAAU,CAAC,GAA0B,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACnB,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACnB;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC3B,CAA2C,wCAAA,EAAA,GAAG,CAAC,iBAAiB,EAAE,IAAI,IAAI,wBAAwB,CAAC,IAAI,CAAE,CAAA,CAC1G,CACF;gBACD,EAAE,EAAE,GAAG,CAAC,iBAAiB,EAAE,IAAI,IAAI,wBAAwB,CAAC,IAAI;AAChE,gBAAA,QAAQ,EAAE,IAAI;aACf,EACD,UAAU,CAAC,QAAQ,CACpB;AACD,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAS,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC9D,YAAA,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAS,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AAChE,YAAA,IAAI,CAAC,CAAC,GAAG,CAAC,iBAAiB;gBACzB,GAAG,CAAC,iBAAiB,EAAE,IAAI,KAAK,wBAAwB,CAAC,IAAI,KAAK;gBAClE,sBAAsB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACpC,GAAG,CAAC,iBAA+C,EAAE,sBAAsB,IAAI,IAAI,EACpF,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAClC;aACF,CAAC;AACF,YAAA,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAC3B,GAAG,CAAC,iBAA+C,EAAE,aAAa,IAAI,KAAK,CAC7E;AACD,YAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAC9E,GAAG,CAAC,iBAAiB,EAAE,IAAgC,CACxD,IAAI;AACH,gBAAA,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACxB,GAAG,CAAC,iBAAiD,CAAC,UAAU,IAAI,EAAE,CACxE;aACF,CAAC;YACF,IAAI,GAAG,CAAC,iBAAiB,EAAE,IAAI,KAAK,wBAAwB,CAAC,QAAQ,IAAI;AACvE,gBAAA,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACxB,GAAG,CAAC,iBAAmD,CAAC,UAAU,IAAI,EAAE,CAC1E;AACD,gBAAA,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,GAAG,CAAC,iBAAmD,CAAC,YAAY,IAAI,EAAE,CAC5E;AACD,gBAAA,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACrB,GAAG,CAAC,iBAAmD,CAAC,OAAO,IAAI,EAAE,CACvE;aACF,CAAC;YACF,IAAI,GAAG,CAAC,iBAAiB,EAAE,IAAI,KAAK,wBAAwB,CAAC,IAAI,IAAI;AACnE,gBAAA,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACpB,GAAG,CAAC,iBAA+C,CAAC,MAAM,IAAI,EAAE,CAClE;aACF,CAAC;YACF,IAAI,GAAG,CAAC,iBAAiB,EAAE,IAAI,KAAK,wBAAwB,CAAC,SAAS,IAAI;AACxE,gBAAA,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACpB,GAAG,CAAC,iBAAmD,CAAC,MAAM,IAAI,EAAE,CACtE;aACF,CAAC;YACF,IAAI,GAAG,CAAC,iBAAiB,EAAE,IAAI,KAAK,wBAAwB,CAAC,IAAI,IAAI;AACnE,gBAAA,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CACnB,MAAM,CAAC,OAAO,CAAE,GAAG,CAAC,iBAA+C,CAAC,MAAM,CAAC,CAAC,GAAG,CAC7E,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KACX,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACZ,oBAAA,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAS,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtD,oBAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAS,KAAe,EAAE,UAAU,CAAC,QAAQ,CAAC;AACrE,iBAAA,CAAC,CACL,CACF;aACF,CAAC;AACH,SAAA,CAAC;;IAGI,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,QAAQ,EAAE;YACf;;QAGF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAc;AAC3D,QAAA,IAAI,CAAC,WAAW;YAAE;QAElB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAA0B,KAAI;AACrD,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;AAC5D,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC;AACjE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAGlB,oBAAoB,GAAA;QAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,KAAI;YAC1E,MAAM,UAAU,GAA4B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAe,MAAM;gBACzE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;gBACpE,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,KAAK,EAAE,GAAG,CAAC,OAAO;gBAClB,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI;AACpB,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;AACjB,wBAAA,IAAI,CAAC,CAAC,GAAG,EAAE,sBAAsB,IAAI;4BACnC,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;yBACnD,CAAC;AACF,wBAAA,IAAI,CAAC,CAAC,GAAG,EAAE,aAAa,IAAI,EAAC,aAAa,EAAE,GAAG,CAAC,aAAa,EAAC,CAAC;AAC/D,wBAAA,IAAI,CAAC,CAAC,GAAG,EAAE,YAAY,IAAI,EAAC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAC,CAAC;AAC5D,wBAAA,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,IAAI,EAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAC,CAAC;AAC7C,wBAAA,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,IAAI,EAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAC,CAAC;AACtD,wBAAA,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI,EAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAC,CAAC;AAC1C,wBAAA,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI;AACnB,4BAAA,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,EAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAC,CAAC,EAAE,EAAE,CAAC;yBAClF,CAAC;AACH,qBAAA;iBACF,CAAC;AACH,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAC,CAAC;SAC7E,CAAC,CACH;;+GA9NQ,4CAA4C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA5C,4CAA4C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/FzD,k2dA2WA,EDzRI,MAAA,EAAA,CAAA,wmEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8VACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,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,UAAA,EAAA,IAAA,EACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,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,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACd,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,EACV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,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,UAAA,EAAA,IAAA,EAAA,eAAe,gWACf,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,0BAA0B,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC1B,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,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,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGL,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBArBxD,SAAS;+BACE,iDAAiD,EAAA,eAAA,EAG1C,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,YAAY;wBACZ,cAAc;wBACd,WAAW;wBACX,mBAAmB;wBACnB,UAAU;wBACV,eAAe;wBACf,gBAAgB;wBAChB,0BAA0B;wBAC1B,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,k2dAAA,EAAA,MAAA,EAAA,CAAA,wmEAAA,CAAA,EAAA;2QAGqC,KAAK,EAAA,CAAA;sBAA1C,WAAW;uBAAC,OAAO;gBACY,UAAU,EAAA,CAAA;sBAAzC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;gBACP,eAAe,EAAA,CAAA;sBAA9B;gBACe,aAAa,EAAA,CAAA;sBAA5B;gBACe,sBAAsB,EAAA,CAAA;sBAArC;gBACe,kBAAkB,EAAA,CAAA;sBAAjC;gBACe,kBAAkB,EAAA,CAAA;sBAAjC;gBACe,yBAAyB,EAAA,CAAA;sBAAxC;gBAEgB,iBAAiB,EAAA,CAAA;sBAAjC;;;ME9EU,+CAA+C,CAAA;IAE1D,IAAoB,sBAAsB,CAAC,KAAa,EAAA;AACtD,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAoD3C,IAAA,WAAA,CACmB,eAAgC,EAChC,eAAgC,EAChC,EAAe,EACf,mBAAwC,EAAA;QAHxC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;AA1DrB,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAKpE,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACxC,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAS;AAC5B,gBAAA,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE;gBAChE,QAAQ,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAE,MAAM;aAC5D,CAAC;AACF,YAAA,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAW;AAC9C,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,EAAE,oBAAoB;AACxE,gBAAA,QAAQ,EAAE,KAAK;aAChB,CAAC;AACH,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,uBAAuB,GACrC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAChC,SAAS,CAAC,CAAC,sBAAqC,KAC9C,IAAI,CAAC,eAAe,CAAC,+CAA+C,CAClE,sBAAsB,IAAI,EAAE,EAC5B,IAAI,CACL,CACF,EACD,GAAG,CAAC,CAAC,0BAAuD,KAAI;AAC9D,YAAA,MAAM,kBAAkB,GAAuB,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC9E,kBAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,EAAE;kBAC/C,SAAS;AAEb,YAAA,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAC,UAAqC,KAAI;AAC9E,gBAAA,MAAM,UAAU,GAAa;oBAC3B,OAAO,EAAE,UAAU,CAAC,WAAW;AAC/B,oBAAA,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,oBAAoB;AACvC,oBAAA,QAAQ,EAAE,kBAAkB,KAAK,UAAU,CAAC,EAAE,CAAC,oBAAoB;iBACpE;gBAED,IAAI,UAAU,CAAC,QAAQ;AACrB,oBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,oBAAoB,EAAE,UAAU,EAAC,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;AAEnF,gBAAA,OAAO,UAAU;AACnB,aAAC,CAAC;AACJ,SAAC,CAAC,EACF,SAAS,CAAC,EAAE,CAAC,CACd;AAEa,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,KAAyB,KAC5B,KAAK,KAAK,kBAAkB,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CACzE,CACF;AAEgB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;IAS7C,QAAQ,GAAA;QACb,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACtB,aAAA,SAAS,CACR,CAAC,OAA8E,KAAI;AACjF,YAAA,MAAM,EAAC,IAAI,EAAE,oBAAoB,EAAC,GAAG,OAAO;YAC5C,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAC3C,CAAC,KAAqC,KAAI;AACxC,gBAAA,IAAI,CAAC,KAAK;oBACR,OAAO;AACL,wBAAA;AACE,4BAAA,IAAI,EAAE,CAAC,IAAI,GAAG,oBAAoB,EAAE,OAAO,GAAG,IAAI;4BAClD,oBAAoB,EAAE,oBAAoB,EAAE,GAAG;AAChD,yBAAA;qBACF;AAEH,gBAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,CAAC,OAAyB,KACxB,OAAO,CAAC,oBAAoB,KAAK,oBAAoB,EAAE,GAAG,CAC7D;gBAED,OAAO,CAAC,CAAC;AACP,sBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAyB,KAClC,OAAO,CAAC,oBAAoB,KAAK,cAAc,CAAC;AAC9C,0BAAE;AACE,4BAAA,GAAG,OAAO;AACV,4BAAA,IAAI,EAAE,CAAC,IAAI,GAAG,oBAAoB,EAAE,OAAO,GAAG,IAAI;AACnD;0BACD,OAAO;AAEf,sBAAE;AACE,wBAAA,GAAG,KAAK;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,CAAC,IAAI,GAAG,oBAAoB,EAAE,OAAO,GAAG,IAAI;4BAClD,oBAAoB,EAAE,oBAAoB,EAAE,GAAG;AAChD,yBAAA;qBACF;AACP,aAAC,CACF;SACF,CACF,CACJ;;IAGI,iBAAiB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ;YAAE;QAE3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE;;+GA9G3B,+CAA+C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/C,+CAA+C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B5D,o0BAyBA,EAAA,MAAA,EAAA,CAAA,+JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,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,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,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAE9E,+CAA+C,EAAA,UAAA,EAAA,CAAA;kBAR3D,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oDAAoD,mBAG7C,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,o0BAAA,EAAA,MAAA,EAAA,CAAA,+JAAA,CAAA,EAAA;+KAItE,sBAAsB,EAAA,CAAA;sBAAzC;;;AE7BH;;;;;;;;;;;;;;AAcG;MA8EU,0CAA0C,CAAA;IAyErD,WACmB,CAAA,eAAgC,EAChC,EAAe,EACf,gBAAkC,EAClC,mBAAwC,EACxC,mBAAwC,EACxC,KAAqB,EAAA;QALrB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAK,CAAA,KAAA,GAAL,KAAK;QA5Ec,IAAK,CAAA,KAAA,GAAG,8CAA8C;AAClE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;AAExD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACzC,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YACzF,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAC7B,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAA8B,EAAE,eAAe,IAAI,CAAC,EAC3F,UAAU,CAAC,QAAQ,CACpB;YACD,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACxB,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAA8B,EAAE,UAAU,IAAI,EAAE,EACvF,UAAU,CAAC,QAAQ,CACpB;AACF,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAM;YAC5C,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACnB,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAA8B,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EACzF,UAAU,CAAC,QAAQ,CACpB;AACD,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACnB;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC3B,2CAA4C,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAA8B,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,IAAI,wBAAwB,CAAC,IAAI,CAAA,CAAE,CACpL,CACF;gBACD,EAAE,EACC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAA8B,EAAE;AACrE,sBAAE,iBAAiB,EAAE,IAAI,IAAI,wBAAwB,CAAC,IAAI;AAC9D,gBAAA,QAAQ,EAAE,IAAI;aACf,EACD,UAAU,CAAC,QAAQ,CACpB;AACF,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,MAAM,GAA6B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CACxF,GAAG,CAAC,CAAC,KAAyB,KAC5B,KAAK,KAAK,kBAAkB,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CACzE,CACF;QAEe,IAAuB,CAAA,uBAAA,GAAG,uBAAuB;QACjD,IAAa,CAAA,aAAA,GAAG,aAAa;QAC7B,IAAwB,CAAA,wBAAA,GAAG,wBAAwB;QACnD,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AAC5B,aAAA,aAAwD;AAC3C,QAAA,IAAA,CAAA,gBAAgB,GAAe,IAAI,CAAC,mBAAmB,CAAC,gBAAgB;AAExE,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAuB,IAAI,CAAC;QACrE,IAAuB,CAAA,uBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACpF,GAAG,CAAC,CAAC,QAAkB,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CACxD;AAEM,QAAA,IAAA,CAAA,WAAW,GAAe;AAC/B,YAAA;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,qCAAqC,CAAC;AAC7E,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,QAAQ,EAAE,IAAI;AACf,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gCAAgC,CAAC;AACxE,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;SACF;AAEgB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AACnC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC;;IAWhD,QAAQ,GAAA;QACb,IAAI,CAAC,0BAA0B,EAAE;QACjC,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,QAAQ,EAAE;;IAGV,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;AAG5B,IAAA,mBAAmB,CAAC,eAA0B,EAAA;QACnD,eAAe,CAAC,IAAI,CAClB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACZ,YAAA,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC7C,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAChD,SAAA,CAAC,CACH;;AAGI,IAAA,uBAAuB,CAAC,OAAwB,EAAA;QACrD,OAAO,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,OAAO,CAAC;;AAG3D,IAAA,oBAAoB,CAAC,UAAkB,EAAA;QAC5C,MAAM,aAAa,GACjB,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAA6B;AAErE,QAAA,OAAO,CAAC;cACJ,IAAI,CAAC;AACP,cAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAc,MAAM;AACxC,gBAAA,GAAG,IAAI;AACP,gBAAA,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,EAAE;AAChE,aAAA,CAAC,CAAC;;AAGF,IAAA,mBAAmB,CAAC,KAAsD,EAAA;AAC/E,QAAA,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,KAAK;QAC3B,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAuC,KAAI;AACxF,YAAA,MAAM,cAAc,GAAI,OAAmC,EAAE,MAAM;YAEnE,OAAO;AACL,gBAAA,GAAG,OAAO;AACV,gBAAA,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;AACjC,oBAAA,GAAG,IAAI;oBACP,KAAK,EAAE,cAAc,GAAG,KAAK,CAAC,EAAE,KAAK,IAAI,MAAM;AAChD,iBAAA,CAAC,CAAC;aACuB;AAC9B,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;IAGrD,gBAAgB,CAAC,SAAoB,EAAE,KAAa,EAAA;AACzD,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;;IAGpB,cAAc,CAAC,SAAoB,EAAE,KAAuB,EAAA;AACjE,QAAA,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC;;IAG9E,eAAe,CAAC,KAAuB,EAAE,UAAkB,EAAA;AAChE,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAC3C,CAAC,OAAuC,MACrC;AACC,YAAA,GAAG,OAAO;AACV,YAAA,MAAM,EAAG,OAAmC,EAAE,MAAM,CAAC,GAAG,CACtD,CAAC,KAA4D,EAAE,KAAa,KAC1E,KAAK,KAAK,UAAU,GAAG,EAAC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAC,GAAG,KAAK,CAClE;AACF,SAAA,CAA4B,CAChC;;AAGI,IAAA,oBAAoB,CAAC,IAAmB,EAAA;AAC7C,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE;YAAE;QAE/C,MAAM,KAAK,GAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAA8B,CAAC,KAAK;AACzF,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,IAAI,EAAE,EAAC,EAAE,EAAE,KAAK,CAAC,iBAAiB,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC;AAC7E,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CACtB;AACE,YAAA,IAAI;AACF,gBAAA,wBAAwB,CAAC,MAAM;AAC/B,gBAAA,wBAAwB,CAAC,OAAO;AAChC,gBAAA,wBAAwB,CAAC,QAAQ;aAClC,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAgC,CAAC,IAAI;AACvE,gBAAA,UAAU,EAAG,KAAK,CAAC,iBAAmD,CAAC,UAAU;aAClF,CAAC;YACF,IAAI,KAAK,CAAC,iBAAiB,EAAE,IAAI,KAAK,wBAAwB,CAAC,QAAQ,IAAI;AACzE,gBAAA,YAAY,EAAG,KAAK,CAAC,iBAAmD,CAAC,YAAY;AACrF,gBAAA,OAAO,EAAG,KAAK,CAAC,iBAAmD,CAAC,OAAO;aAC5E,CAAC;YACF,IAAI,KAAK,CAAC,iBAAiB,EAAE,IAAI,KAAK,wBAAwB,CAAC,IAAI,IAAI;AACrE,gBAAA,MAAM,EAAG,KAAK,CAAC,iBAA+C,CAAC,MAAM;aACtE,CAAC;YACF,IAAI,KAAK,CAAC,iBAAiB,EAAE,IAAI,KAAK,wBAAwB,CAAC,SAAS,IAAI;AAC1E,gBAAA,MAAM,EAAG,KAAK,CAAC,iBAAmD,CAAC,MAAM;aAC1E,CAAC;YACF,IAAI,KAAK,CAAC,iBAAiB,EAAE,IAAI,KAAK,wBAAwB,CAAC,IAAI,IAAI;AACrE,gBAAA,MAAM,EAAE,MAAM,CAAC,OAAO,CAAE,KAAK,CAAC,iBAA+C,CAAC,MAAM,CAAC,CAAC,GAAG,CACvF,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC,CACjC;aACF,CAAC;AACH,SAAA,EACD,EAAC,SAAS,EAAE,KAAK,EAAC,CACnB;;IAGK,0BAA0B,GAAA;QAChC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACrE,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;AAE5D,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAC3C,CAAC,OAAuC,MACrC;AACC,gBAAA,GAAG,OAAO;AACV,gBAAA,UAAU,EAAE,KAAK,EAAE,UAAU,IAAI,EAAE;AACnC,gBAAA,eAAe,EAAE,KAAK,EAAE,eAAe,IAAI,CAAC;AAC7C,aAAA,CAA4B,CAChC;YAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CACrE;SACF,CAAC,CACH;;IAGK,wBAAwB,GAAA;QAC9B,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,IAAG;YACvE,IAAI,EAAC,KAAK,EAAE,GAAG,iBAAiB,EAAC,GAAG,SAAS;AAC7C,YAAA,iBAAiB,GAAG;AAClB,gBAAA,GAAG,iBAAiB;AACpB,gBAAA,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,IAAI;AAC9B,oBAAA,IAAI,EAAG,iBAAiB,CAAC,IAAiB,CAAC,EAAE;iBAC9C,CAAC;AACF,gBAAA,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI;AACxB,oBAAA,MAAM,EAAG,SAAS,CAAC,MAAyC,EAAE,MAAM,CAClE,CAAC,GAAG,EAAE,IAAI,MAAM,EAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAC,CAAC,EACjD,EAAE,CACH;iBACF,CAAC;aACH;AAED,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAC3C,CAAC,OAAuC,MACrC;AACC,gBAAA,GAAG,OAAO;AACV,gBAAA,KAAK,EAAE;oBACL,KAAK;oBACL,IAAI,iBAAiB,CAAC,IAAI,KAAK,wBAAwB,CAAC,IAAI,IAAI;wBAC9D,iBAAiB;qBAClB,CAAC;AACH,iBAAA;AACF,aAAA,CAAQ,CACZ;YAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CACrE;SACF,CAAC,CACH;;+GA9PQ,0CAA0C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA1C,0CAA0C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5FvD,y9ZA6UA,ED9PI,MAAA,EAAA,CAAA,6mDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,uLACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,4CAA4C,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC5C,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,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,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,UAAU,8NACV,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,+CAA+C,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC/C,0BAA0B,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGjB,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBApBtD,SAAS;sCAGS,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,4CAA4C;wBAC5C,mBAAmB;wBACnB,WAAW;wBACX,cAAc;wBACd,YAAY;wBACZ,UAAU;wBACV,gBAAgB;wBAChB,+CAA+C;wBAC/C,0BAA0B;AAC3B,qBAAA,EAAA,QAAA,EAAA,y9ZAAA,EAAA,MAAA,EAAA,CAAA,6mDAAA,CAAA,EAAA;4OAKqC,KAAK,EAAA,CAAA;sBAA1C,WAAW;uBAAC,OAAO;gBACM,gBAAgB,EAAA,CAAA;sBAAzC;;;AEhGH;;;;;;;;;;;;;;AAcG;MA2CU,sCAAsC,CAAA;AASjD,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;;IA+BrC,WAGmB,CAAA,sBAA8C,EAC9C,eAAgC,EAChC,EAAe,EACf,mBAAwC,EACxC,KAAqB,EAAA;QAJrB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAK,CAAA,KAAA,GAAL,KAAK;AA7CE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;AAExD,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACnC,YAAA,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC1F,SAAA,CAAC;AAMc,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,KAAyB,KAC5B,KAAK,KAAK,kBAAkB,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CACzE,CACF;QAEe,IAAuB,CAAA,uBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACpF,GAAG,CAAC,CAAC,QAAkB,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CACxD;AAEgB,QAAA,IAAA,CAAA,4BAA4B,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AACvE,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAAyB,EAAE,CAAC;QAE3E,IAAmB,CAAA,mBAAA,GAA2B,aAAa,CAAC;AAC1E,YAAA,IAAI,CAAC,wBAAwB;AAC7B,YAAA,IAAI,CAAC,4BAA4B;AAClC,SAAA,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAC9B,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,KACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,KAAK,WAAW,EAAC,CAAC,EACxE,EAAE,CACH,CACF,CACF;AAEgB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAWlD,QAAA,IAAI,sBAAsB;AAAE,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,CAAC;;AAGjF,IAAA,uBAAuB,CAAC,KAG9B,EAAA;AACC,QAAA,MAAM,YAAY,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO;AAEzC,QAAA,IAAI,CAAC,YAAY;YAAE;AAEnB,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,YAAY,CAAC;QACpD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,EAAC,YAAY,EAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,QAAQ,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,OAAO,EAAE;;IAGT,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;IAG3B,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;YAC9C,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;SAChD,CAAC,CACH;;IAGK,OAAO,GAAA;AACb,QAAA,MAAM,YAAY,GAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa;AAC1D,cAAE,YAAY;AAEhB,QAAA,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE;AAElF,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,YAAY,CAAC;AACpD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;AA1FvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sCAAsC,kBA2CvC,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA3CvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,ECzDnD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,g2DAkDA,EDFI,MAAA,EAAA,CAAA,g7BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,uLACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,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,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,qsBACd,+CAA+C,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAflD,SAAS;AAGS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,+CAA+C;AAChD,qBAAA,EAAA,QAAA,EAAA,g2DAAA,EAAA,MAAA,EAAA,CAAA,g7BAAA,CAAA,EAAA;;0BA4CE;;0BACA,MAAM;2BAAC,wBAAwB;iKAxCR,gBAAgB,EAAA,CAAA;sBAAzC;;;AE5DH;;;;;;;;;;;;;;AAcG;MAqDU,sCAAsC,CAAA;AAoCjD,IAAA,WAAA,CACmB,eAAgC,EAChC,EAAe,EACf,KAAqB,EACrB,mBAAwC,EAAA;QAHxC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QArCA,IAAK,CAAA,KAAA,GAAG,yCAAyC;AAC7D,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;AAGjE,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC1B,YAAA,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC1F,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAS,CAAC,IAAI,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;QACpD,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;AACrB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,KAAyB,KAC5B,KAAK,KAAK,kBAAkB,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CACzE,CACF;QACe,IAAqB,CAAA,qBAAA,GAAG,QAAQ,CAAC,MAC9C,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAA0B,EAAE,OAAO,CAAC,MAAM,CAC/E,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,MAAM;AACrB,YAAA,GAAG,GAAG;YACN,CAAC,KAAK,GAAG,IAAI;AACd,SAAA,CAAC,EACF,EAAE,CACH,CACF;AACe,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAS,CAAC,CAAC;QAC7B,IAAuB,CAAA,uBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACpF,GAAG,CAAC,CAAC,QAAkB,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CACxD;AAEgB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AACnC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC;;IAShD,QAAQ,GAAA;QACb,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,IAAG;AACnE,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC;AACrE,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;SACpE,CAAC,CACH;AACD,QAAA,MAAM,aAAa,GAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa;AAC3D,cAAE,OAAO;AACX,QAAA,IAAI,CAAC,aAAa;YAAE;QAEpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;;IAGvD,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;;IAGlB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;;IAGxB,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG5B,IAAA,aAAa,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGpB,IAAA,mBAAmB,CAAC,KAAa,EAAA;QACtC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,IAAG;AACtD,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,IAAI;YAEzB,MAAM,aAAa,GAAG,OAA8B;YAEpD,IAAI,SAAS,GAAG,KAAK;AACrB,YAAA,IAAI,WAAW,GAAG,EAAC,GAAG,aAAa,EAAC;YACpC,OAAO,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,gBAAA,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;AACnE,gBAAA,SAAS,EAAE;;YAEb,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AAExC,YAAA,OAAO,WAAW;AACpB,SAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAe,KAAI;YACtC,MAAM,IAAI,GAAG,OAAO;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAErB,YAAA,OAAO,IAAI;AACb,SAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,KAAK;YAAE;QAEhC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;IAGjB,mBAAmB,CACxB,KAGC,EACD,WAAmB,EAAA;QAEnB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,IAAG;AACtD,YAAA,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;AAE5C,YAAA,MAAM,OAAO,GAAI,OAA+B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAC1E,KAAK,KAAK,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG,MAAM,CAC5C;YACD,OAAO;gBACL,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO;aAC/E;AACH,SAAC,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;+GA7HjD,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtC,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKtC,GAAG,ECxEhB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2mGA6FA,ukCDtCI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,UAAU,EACV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,EACV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,YAAY,mMACZ,4CAA4C,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5C,+CAA+C,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC/C,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGP,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAnBlD,SAAS;sCAGS,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,UAAU;wBACV,UAAU;wBACV,mBAAmB;wBACnB,YAAY;wBACZ,4CAA4C;wBAC5C,+CAA+C;wBAC/C,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,2mGAAA,EAAA,MAAA,EAAA,CAAA,ghCAAA,CAAA,EAAA;8KAKqC,KAAK,EAAA,CAAA;sBAA1C,WAAW;uBAAC,OAAO;gBACM,gBAAgB,EAAA,CAAA;sBAAzC;gBACgC,IAAI,EAAA,CAAA;sBAApC,SAAS;uBAAC,GAAG;;;AExEhB;;;;;;;;;;;;;;AAcG;MAsCU,sCAAsC,CAAA;AASjD,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;;IAgCrC,WACmB,CAAA,eAAgC,EAChC,EAAe,EACf,mBAAwC,EACxC,WAAwB,EACxB,KAAqB,EAAA;QAJrB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAK,CAAA,KAAA,GAAL,KAAK;AA5CE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;AAExD,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACnC,YAAA,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC1F,SAAA,CAAC;AAMc,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,KAAyB,KAC5B,KAAK,KAAK,kBAAkB,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CACzE,CACF;AAEgB,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAErE,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAyB,EAAE,CAAC;QAE1E,IAAuB,CAAA,uBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACpF,GAAG,CAAC,CAAC,QAAkB,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CACxD;QACe,IAAc,CAAA,cAAA,GAA2B,aAAa,CAAC;AACrE,YAAA,IAAI,CAAC,uBAAuB;AAC5B,YAAA,IAAI,CAAC,0BAA0B;AAChC,SAAA,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAChC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,KAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK;YACrB,OAAO,EAAE,MAAM,CAAC,IAAI;YACpB,EAAE,EAAE,MAAM,CAAC,IAAI;AACf,YAAA,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc;SACzC,CAAC,CAAC,CACJ,CACF;AAEgB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;AAU7C,IAAA,uBAAuB,CAAC,KAG9B,EAAA;AACC,QAAA,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE;AAExC,QAAA,IAAI,CAAC,gBAAgB;YAAE;AAEvB,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACtD,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,EAAC,kBAAkB,EAAE,gBAAgB,EAAC,CAAC;AAClF,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,QAAQ,GAAA;QACb,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,OAAO,EAAE;;IAGT,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;IAG3B,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;YAC/C,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;SAChD,CAAC,CACH;;IAGK,mBAAmB,GAAA;QACzB,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,WAAW,IAAG;AAC/D,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC;AAChD,SAAC,CAAC;;IAGI,OAAO,GAAA;AACb,QAAA,MAAM,gBAAgB,GAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa;AAC9D,cAAE,kBAAkB;AAEtB,QAAA,IAAI,CAAC,gBAAgB;YAAE;AAEvB,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACtD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;+GA9FvB,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,ECpDnD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,i2DAmDA,EDRI,MAAA,EAAA,CAAA,g7BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,uLACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,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,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,qsBACd,+CAA+C,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAflD,SAAS;AAGS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,+CAA+C;AAChD,qBAAA,EAAA,QAAA,EAAA,i2DAAA,EAAA,MAAA,EAAA,CAAA,g7BAAA,CAAA,EAAA;0MAKyB,gBAAgB,EAAA,CAAA;sBAAzC;;;AEvDH;;;;;;;;;;;;;;AAcG;MAuDU,qCAAqC,CAAA;AA6ChD,IAAA,WAAA,CACmB,eAAgC,EAChC,EAAe,EACf,mBAAwC,EACxC,KAAqB,EAAA;QAHrB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAK,CAAA,KAAA,GAAL,KAAK;QA9Cc,IAAK,CAAA,KAAA,GAAG,yCAAyC;AAC7D,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;AAExD,QAAA,IAAA,CAAA,IAAI,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC9C,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACpB,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,EAAE,EAC5C,UAAU,CAAC,QAAQ,CACpB;YACD,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CACxB,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAyB,EAAE,UAAU,IAAI,EAAE,EAClF,UAAU,CAAC,QAAQ,CACpB;YACD,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAC7B,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAyB,EAAE,eAAe,IAAI,CAAC,EACtF,UAAU,CAAC,QAAQ,CACpB;AACF,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,MAAM,GAA6B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CACxF,GAAG,CAAC,CAAC,YAAgC,KACnC,YAAY,KAAK,kBAAkB,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAChF,CACF;QAEe,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AAC5B,aAAA,aAAmD;AACtC,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAChC,MACG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAyB,EAAE,kBAAkB,IAAI,KAAK,CAChG;AAEe,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAuB,IAAI,CAAC;QACrE,IAAuB,CAAA,uBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACpF,GAAG,CAAC,CAAC,QAAkB,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CACxD;QAEe,IAAuB,CAAA,uBAAA,GAAG,uBAAuB;QACjD,IAAa,CAAA,aAAA,GAAG,aAAa;QAE5B,IAAa,CAAA,aAAA,GAAG,MAAM,CAAU,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;AACpE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;IAS7C,QAAQ,GAAA;QACb,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAC/D,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;AAE5D,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAC3C,CAAC,OAAuC,MACrC;AACC,gBAAA,GAAG,OAAO;AACV,gBAAA,UAAU,EAAE,KAAK,EAAE,UAAU,IAAI,EAAE;AACnC,gBAAA,eAAe,EAAE,KAAK,EAAE,eAAe,IAAI,CAAC;AAC7C,aAAA,CAAuB,CAC3B;AAED,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;SACpE,CAAC,CACH;;IAGI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;;AAGZ,IAAA,mBAAmB,CAAC,KAAsD,EAAA;AAC/E,QAAA,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,KAAK;QAC3B,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAC3C,CAAC,OAAuC,MACrC,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAuB,CACtD;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG/C,IAAA,eAAe,CAAC,kBAA2B,EAAA;QAChD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAC3C,CAAC,OAAuC,MACrC,EAAC,GAAG,OAAO,EAAE,kBAAkB,EAAC,CAAuB,CAC3D;;AAGI,IAAA,oBAAoB,CAAC,IAAmB,EAAA;AAC7C,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;;+GAhG1B,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArC,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrElD,ooHAkGA,EDzCI,MAAA,EAAA,CAAA,+mCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,uLACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,4CAA4C,EAC5C,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,w9BACnB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EACX,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BACZ,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,+CAA+C,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC/C,0BAA0B,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGjB,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAnBjD,SAAS;sCAGS,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,iBACD,iBAAiB,CAAC,IAAI,EAC5B,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,4CAA4C;wBAC5C,mBAAmB;wBACnB,WAAW;wBACX,YAAY;wBACZ,YAAY;wBACZ,gBAAgB;wBAChB,+CAA+C;wBAC/C,0BAA0B;AAC3B,qBAAA,EAAA,QAAA,EAAA,ooHAAA,EAAA,MAAA,EAAA,CAAA,+mCAAA,CAAA,EAAA;8KAKqC,KAAK,EAAA,CAAA;sBAA1C,WAAW;uBAAC,OAAO;gBACM,gBAAgB,EAAA,CAAA;sBAAzC;;;AEzEH;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;AAaH,IAAK;AAAL,CAAA,UAAK,gBAAgB,EAAA;AACnB,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,gBAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,gBAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACT,CAAC,EALI,gBAAgB,KAAhB,gBAAgB,GAKpB,EAAA,CAAA,CAAA;AAED,IAAK;AAAL,CAAA,UAAK,WAAW,EAAA;AACd,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,WAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AACjC,CAAC,EAHI,WAAW,KAAX,WAAW,GAGf,EAAA,CAAA,CAAA;AAUD,MAAM,iBAAiB,GAA0B;AAC/C,IAAA;AACE,QAAA,QAAQ,EAAE,wCAAwC;AAClD,QAAA,cAAc,EAAE,8CAA8C;AAC9D,QAAA,eAAe,EAAE,uDAAuD;QACxE,IAAI,EAAE,cAAc,CAAC,MAAM;AAC3B,QAAA,SAAS,EAAE,sCAAsC;AAClD,KAAA;AACD,IAAA;AACE,QAAA,QAAQ,EAAE,wCAAwC;AAClD,QAAA,cAAc,EAAE,8CAA8C;AAC9D,QAAA,eAAe,EAAE,wDAAwD;QACzE,IAAI,EAAE,cAAc,CAAC,MAAM;AAC3B,QAAA,SAAS,EAAE,sCAAsC;AAClD,KAAA;AACD,IAAA;AACE,QAAA,QAAQ,EAAE,wCAAwC;AAClD,QAAA,cAAc,EAAE,8CAA8C;AAC9D,QAAA,eAAe,EAAE,uDAAuD;QACxE,IAAI,EAAE,cAAc,CAAC,MAAM;AAC3B,QAAA,SAAS,EAAE,sCAAsC;AAClD,KAAA;AACD,IAAA;AACE,QAAA,QAAQ,EAAE,uCAAuC;AACjD,QAAA,cAAc,EAAE,6CAA6C;AAC7D,QAAA,eAAe,EAAE,sDAAsD;QACvE,IAAI,EAAE,cAAc,CAAC,KAAK;AAC1B,QAAA,SAAS,EAAE,qCAAqC;AACjD,KAAA;AACD,IAAA;AACE,QAAA,QAAQ,EAAE,4CAA4C;AACtD,QAAA,cAAc,EAAE,kDAAkD;AAClE,QAAA,eAAe,EAAE,2DAA2D;QAC5E,IAAI,EAAE,cAAc,CAAC,UAAU;AAC/B,QAAA,SAAS,EAAE,0CAA0C;AACtD,KAAA;;AAGH,MAAM,mBAAmB,GAA4B;AACnD,IAAA,CAAC,EAAE,uCAAuC;AAC1C,IAAA,CAAC,EAAE,wCAAwC;AAC3C,IAAA,CAAC,EAAE,uCAAuC;AAC1C,IAAA,CAAC,EAAE,2CAA2C;;AAGhD,MAAM,mBAAmB,GAA4B;AACnD,IAAA,CAAC,WAAW,CAAC,OAAO,GAAG,yCAAyC;AAChE,IAAA,CAAC,WAAW,CAAC,aAAa,GAAG,8CAA8C;;;AC9F7E;;;;;;;;;;;;;;AAcG;;MCDU,mBAAmB,CAAA;AAHhC,IAAA,WAAA,GAAA;AAIkB,QAAA,IAAA,CAAA,cAAc,GAA+C,MAAM,CAAC,IAAI,CAAC;AAEzE,QAAA,IAAA,CAAA,WAAW,GAA2C,MAAM,CAAC,IAAI,CAAC;AAElE,QAAA,IAAA,CAAA,WAAW,GAAuC,MAAM,CAAC,IAAI,CAAC;AAE9D,QAAA,IAAA,CAAA,aAAa,GAAmD,MAAM,CAAC,IAAI,CAAC;AAE5E,QAAA,IAAA,CAAA,WAAW,GAAkC,MAAM,CAAC,IAAI,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAkC,MAAM,CAAC,IAAI,CAAC;AAEvD,QAAA,IAAA,CAAA,aAAa,GAAmD,MAAM,CAAC,SAAS,CAAC;AAEjF,QAAA,IAAA,CAAA,aAAa,GAA4B,QAAQ,CAAC,OAAO;AACvE,YAAA,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;YAC/B,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,IAAI,cAAc,CAAC,MAAM;AAC1D,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AAC9B,YAAA,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,WAAW,CAAC,OAAO,MAAM,WAAW,CAAC,aAAa;AACvF,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,IAAK,EAAU;AAC/C,YAAA,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE;AACpC,SAAA,CAAC,CAAC;AAEa,QAAA,IAAA,CAAA,QAAQ,GAA4B,MAAM,CAAC,KAAK,CAAC;AAYlE;IAVQ,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;;+GAnCf,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,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,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCHY,mBAAmB,CAAA;IA4D9B,WACmB,CAAA,EAAe,EACf,gBAAkC,EAAA;QADlC,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AA7DnB,QAAA,IAAA,CAAA,gBAAgB,GAAe;AAC7C,YAAA;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,CAAA,wCAAA,EAA2C,wBAAwB,CAAC,IAAI,CAAA,CAAE,CAC3E;gBACD,EAAE,EAAE,wBAAwB,CAAC,IAAI;AACjC,gBAAA,QAAQ,EAAE,IAAI;AACf,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,CAAA,wCAAA,EAA2C,wBAAwB,CAAC,OAAO,CAAA,CAAE,CAC9E;gBACD,EAAE,EAAE,wBAAwB,CAAC,OAAO;AACpC,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,CAAA,wCAAA,EAA2C,wBAAwB,CAAC,QAAQ,CAAA,CAAE,CAC/E;gBACD,EAAE,EAAE,wBAAwB,CAAC,QAAQ;AACrC,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,CAAA,wCAAA,EAA2C,wBAAwB,CAAC,IAAI,CAAA,CAAE,CAC3E;gBACD,EAAE,EAAE,wBAAwB,CAAC,IAAI;AACjC,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,CAAA,wCAAA,EAA2C,wBAAwB,CAAC,SAAS,CAAA,CAAE,CAChF;gBACD,EAAE,EAAE,wBAAwB,CAAC,SAAS;AACtC,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,CAAA,wCAAA,EAA2C,wBAAwB,CAAC,IAAI,CAAA,CAAE,CAC3E;gBACD,EAAE,EAAE,wBAAwB,CAAC,IAAI;AACjC,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,CAAA,wCAAA,EAA2C,wBAAwB,CAAC,MAAM,CAAA,CAAE,CAC7E;gBACD,EAAE,EAAE,wBAAwB,CAAC,MAAM;AACnC,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,CAAA,wCAAA,EAA2C,wBAAwB,CAAC,OAAO,CAAA,CAAE,CAC9E;gBACD,EAAE,EAAE,wBAAwB,CAAC,OAAO;AACpC,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;SACF;;AAOM,IAAA,uBAAuB,CAAC,OAAwB,EAAA;QACrD,MAAM,gBAAgB,GAAa,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK;AAE7D,QAAA,IAAI,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC,gBAAgB;QAEnD,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAc,MAAM;AACpD,YAAA,GAAG,IAAI;YACP,QAAQ,EAAE,gBAAgB,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,gBAAgB,CAAC,QAAQ;AACvE,SAAA,CAAC,CAAC;;AAGE,IAAA,qBAAqB,CAC1B,aAAuB,EACvB,SAAoB,EACpB,KAAuB,EAAA;QAEvB,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC7D,CAAC,GAAW,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC9C;AAED,QAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,UAAkB,KAAK,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAErF,QAAA,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE;YACnB,KAAK,wBAAwB,CAAC,OAAO;gBACnC;YACF,KAAK,wBAAwB,CAAC,IAAI;AAChC,gBAAA,SAAS,CAAC,UAAU,CAAC,wBAAwB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACnE;YACF,KAAK,wBAAwB,CAAC,QAAQ;AACpC,gBAAA,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACzD,gBAAA,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpD,gBAAA,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACvD;YACF,KAAK,wBAAwB,CAAC,IAAI;AAChC,gBAAA,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACnD;YACF,KAAK,wBAAwB,CAAC,SAAS;AACrC,gBAAA,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACnD;YACF,KAAK,wBAAwB,CAAC,IAAI;gBAChC,SAAS,CAAC,UAAU,CAClB,QAAQ,EACR,IAAI,CAAC,EAAE,CAAC,KAAK,CACX;AACE,oBAAA,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACZ,wBAAA,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC7C,wBAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;qBAChD,CAAC;AACH,iBAAA,EACD,UAAU,CAAC,QAAQ,CACpB,CACF;gBACD;AACF,YAAA;AACE,gBAAA,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACvD;;;+GAxHK,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,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,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACRD;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAqBU,sCAAsC,CAAA;IAWjD,WACmB,CAAA,eAAgC,EAChC,oBAA0C,EAC1C,mBAAwC,EACxC,cAA8B,EAC9B,gBAAkC,EAAA;QAJlC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACpB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAdlB,QAAA,IAAA,CAAA,gCAAgC,GAAG,IAAI,YAAY,EAAO;QAEpE,IAAkB,CAAA,kBAAA,GAA8B,IAAI;QAEpD,IAA4B,CAAA,4BAAA,GAA6B,IAAI;QAC7D,IAAgC,CAAA,gCAAA,GAAG,IAAI;QACvC,IAA2C,CAAA,2CAAA,GAAG,KAAK;QACnD,IAA+B,CAAA,+BAAA,GAAQ,EAAE;;IAUzC,8BAA8B,GAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B;;QAEF,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAClD,QAAA,IAAI,CAAC,+BAA+B,GAAG,EAAE;AACzC,QAAA,IAAI,CAAC;AACF,aAAA,uCAAuC,CAAC,IAAI,EAAE,OAAO;AACrD,aAAA,SAAS,CAAC,CAAC,0BAAuD,KAAI;AACrE,YAAA,0BAA0B,CAAC,OAAO,CAChC,CAAC,yBAAoD,KAAI;gBACvD,IAAI,CAAC,+BAA+B,CAClC,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAClD,GAAG,IAAI;AACV,aAAC,CACF;AACH,SAAC,CAAC;;IAGC,sBAAsB,GAAA;AAC3B,QAAA,IAAI,CAAC;AACF,aAAA,qBAAqB;AACrB,aAAA,SAAS,CAAC,CAAC,kBAAuC,KAAI;AACrD,YAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;AAC9C,SAAC,CAAC;;IAGC,QAAQ,GAAA;QACb,IAAI,CAAC,sBAAsB,EAAE;;AAGxB,IAAA,SAAS,CAAC,OAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;AACjC,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI;AACxC,QAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI;AAC5C,QAAA,IAAI,CAAC,2CAA2C,GAAG,KAAK;QACxD,IAAI,CAAC,8BAA8B,EAAE;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;IAGb,MAAM,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;YAClE;;AAGF,QAAA,MAAM,OAAO,GAAqC;YAChD,qBAAqB,EAAE,IAAI,CAAC,gCAAgC;AAC5D,YAAA,sBAAsB,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI;AACvD,YAAA,yBAAyB,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO;AAC7D,YAAA,oBAAoB,EAAE,IAAI,CAAC,4BAA4B,CAAC,GAAG;YAC3D,eAAe,EAAE,IAAI,CAAC,2CAA2C;SAClE;QAED,IAAI,CAAC,oBAAoB,CAAC;AACvB,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,yBAAiC,KAC1C,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC;AACnD,YAAA,GAAG,OAAO;YACV,yBAAyB;AAC1B,SAAA,CAAC,CACH,EACD,IAAI,CAAC,CAAC,CAAC;AAER,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACxC,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,uDAAuD,CACxD;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,gCAAgC,CAAC,IAAI,EAAE;aAC7C;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACxC,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,uDAAuD,CACxD;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;aACH;AACF,SAAA,CAAC;;+GAtGK,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,EAFtC,QAAA,EAAA,0CAAA,EAAA,OAAA,EAAA,EAAA,gCAAA,EAAA,kCAAA,EAAA,EAAA,SAAA,EAAA,CAAC,mBAAmB,CAAC,yICjClC,ypGAmFA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,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,EAAAQ,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDhDa,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBANlD,SAAS;+BACE,0CAA0C,EAAA,SAAA,EAGzC,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,ypGAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;oNAGmB,MAAM,EAAA,CAAA;sBAAxD,SAAS;uBAAC,qBAAqB;gBACf,gCAAgC,EAAA,CAAA;sBAAhD;;;AErCH;;;;;;;;;;;;;;AAcG;MAkBU,qCAAqC,CAAA;IAKhD,WACU,CAAA,eAAgC,EAChC,cAA6B,EAC7B,MAAc,EACd,gBAAkC,EAClC,WAAwB,EAAA;QAJxB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW;QATd,IAAkB,CAAA,kBAAA,GAA8B,IAAI;QACpD,IAAM,CAAA,MAAA,GAAa,EAAE;;AAW5B,IAAA,SAAS,CAAC,kBAAsC,EAAA;AAC9C,QAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;AAC5C,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;IAGnB,wBAAwB,GAAA;AACtB,QAAA,IAAI,CAAC;aACF,qCAAqC,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI;aACrE,SAAS,CACR,MAAK;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,oCAAoC,CAAC,CACpE;AACH,SAAC,EACD,CAAC,MAAwC,KAAI;AAC3C,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AAC7B,SAAC,CACF;;+GAhCM,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,uMChClD,+rDA6CA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,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,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDba,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBALjD,SAAS;+BACE,yCAAyC,EAAA,QAAA,EAAA,+rDAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;kMAOP,KAAK,EAAA,CAAA;sBAAhD,SAAS;uBAAC,+BAA+B;;;AEnC5C;;;;;;;;;;;;;;AAcG;MA8BU,gDAAgD,CAAA;IAO3D,IAAoB,sBAAsB,CAAC,KAAa,EAAA;AACtD,QAAA,IAAI,CAAC,oBAAoB,CAAC,iCAAiC,CAAC,KAAK,CAAC;;AA+CpE,IAAA,WAAA,CAC4B,QAAkB,EAC3B,mBAAwC,EACxC,oBAA0C,EAC1C,gBAAkC,EAClC,eAAgC,EAChC,oBAA0C,EAC1C,iBAAoC,EAAA;QAN3B,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACjB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACpB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACpB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAxDpB,IAAuB,CAAA,uBAAA,GAAG,EAAE;AAI3B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU;QAExC,IAAY,CAAA,YAAA,GAAG,KAAK;AAEpB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB;AACxE,QAAA,IAAA,CAAA,+BAA+B,GAC9C,IAAI,CAAC,oBAAoB,CAAC,8BAA8B;AACzC,QAAA,IAAA,CAAA,wBAAwB,GACvC,IAAI,CAAC,oBAAoB,CAAC,+BAA+B;AAC3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;QACnD,IAA4B,CAAA,4BAAA,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAChF,SAAS,CAAC,sBAAsB,IAC9B,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,CAC3E,EACDE,KAAG,CAAC,GAAG,IAAG;AACR,YAAA,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;SACjC,CAAC,CACH;QAEe,IAAiB,CAAA,iBAAA,GAAgC,aAAa,CAAC;AAC7E,YAAA,IAAI,CAAC,4BAA4B;AACjC,YAAA,IAAI,CAAC,sBAAsB;AAC3B,YAAA,IAAI,CAAC,+BAA+B;AACpC,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,KACxD,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,KAAK;AACrC,YAAA,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAG,EAAA,OAAO,CAAE,CAAA;AAClF,YAAA,QAAQ,EAAE,mBAAmB,KAAK,OAAO,IAAI,qBAAqB,KAAK,OAAO;YAC9E,EAAE,EAAE,CAAG,EAAA,OAAO,CAAE,CAAA;AACjB,SAAA,CAAC,CAAC,IAAI,EAAE,CACZ,CACF;AACe,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,CAAC,oBAAoB,CAAC,mBAAmB;AAE3E,QAAA,IAAA,CAAA,qCAAqC,GACnD,IAAI,CAAC,oBAAoB,CAAC,qCAAqC;AAEjD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY;;IAc3D,MAAM,GAAA;QACX,IAAI,CAAC,wBAAwB,EAAE;QAE/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI,CAAC,yBAAyB;AACzC,SAAA,CAAC;AACF,QAAA,IAAI,qBAA8B;QAElC,IAAI,CAAC,cAAc,EAAE;QAErB,aAAa,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,wBAAwB,CAAC;aACvE,IAAI,CACHY,MAAI,CAAC,CAAC,CAAC,EACPZ,KAAG,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC,CAAC,EACrE,SAAS,CAAC,CAAC,CAAC,eAAe,EAAE,sBAAsB,CAAC,KAClD,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAChD,sBAAsB,EACtB,eAAe,CAChB,CACF;AAEF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,QAAQ,IAAG;gBACf,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,sCAAsC,CAAC;AAC5E,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,qBAAqB,CAAC;gBACjD,IAAI,CAAC,aAAa,EAAE;aACrB;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,oCAAoC,CAAC;oBAC1E,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,sCAAsC,CAAC;AAC9E,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;gBACF,IAAI,CAAC,aAAa,EAAE;aACrB;AACF,SAAA,CAAC;;AAGC,IAAA,UAAU,CAAC,OAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;IAGxC,sBAAsB,GAAA;AAC3B,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAACY,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;AACpE,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC;AAChD,SAAC,CAAC;;IAGI,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGpB,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGrB,WAAW,CAAC,QAA4B,EAAE,aAAqB,EAAA;QACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QACxC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACtE,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;AACrE,QAAA,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,GAAG,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC;AAEjF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxE,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,CAAA,EAAG,IAAI,CAAC,sBAAsB,CAAA,CAAA,EAAI,aAAa,CAAA,YAAA,CAAc;AACzF,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;QACtB,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,MAAM,EAAE;;IAGP,wBAAwB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC;;;AAIrD,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AAC7C,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;YAChC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,SAAC,CAAC;;AAzJO,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gDAAgD,kBAwDjD,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAf,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxDP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gDAAgD,EAFhD,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA,CAAC,mBAAmB,CAAC,qQC1ClC,2kHAuGA,EAAA,MAAA,EAAA,CAAA,6jCAAA,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,EAAAG,IAAA,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,IAAA,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,EAAAA,IAAA,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,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,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,qCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD3Da,gDAAgD,EAAA,UAAA,EAAA,CAAA;kBAP5D,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qDAAqD,mBAG9C,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,2kHAAA,EAAA,MAAA,EAAA,CAAA,6jCAAA,CAAA,EAAA;;0BA0D7B,MAAM;2BAAC,QAAQ;4OAtDD,yBAAyB,EAAA,CAAA;sBADzC,SAAS;uBAAC,kBAAkB;gBAGZ,mBAAmB,EAAA,CAAA;sBADnC,SAAS;uBAAC,oBAAoB;gBAGf,uBAAuB,EAAA,CAAA;sBAAtC;gBACmB,sBAAsB,EAAA,CAAA;sBAAzC;gBAGgB,UAAU,EAAA,CAAA;sBAA1B;;;AEtDH;;;;;;;;;;;;;;AAcG;MA2BU,4CAA4C,CAAA;AA6CvD,IAAA,WAAA,CACmB,eAAgC,EAChC,oBAA0C,EAC1C,WAAwB,EACxB,iBAAoC,EAAA;QAHpC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACpB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AA9C1B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AACnC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE;AACpC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAW;AAE5C,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,CAAC,oBAAoB,CAAC,0BAA0B;AAChF,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAClD,QAAA,IAAA,CAAA,wBAAwB,GAA4B,IAAI,CAAC,eAAe,CAAC,IAAI,CAC3FC,WAAS,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CACpE;AAEgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACvD,QAAA,IAAA,CAAA,eAAe,GAAwB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC/E,GAAG,CAAC,CAAC,cAAuB,KAAI;AAC9B,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;SAC/C,CAAC,CACH;AACe,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACjD,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC3D,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC7D,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAC9F,GAAG,CACD,CAAC,kBAAsC,MAAM,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAC9F,CACF;AACgB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACrD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAElD,IAAmB,CAAA,mBAAA,GAAG,aAAa,CAAC;AAClD,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,WAAW;SACjB,CAAC,CAAC,IAAI,CACLC,KAAG,CACD,CAAC,CAAC,cAAc,EAAE,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,aAAa,IAAI,SAAS,CAC/F,CACF;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY;QAWhE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;IAGzC,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAACJ,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;YACpE,MAAM,UAAU,GACd,+BAA+B;AAC/B,gBAAA,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAChE,MAAM,qBAAqB,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC;YAC9E,IAAI,CAAC,qBAAqB,EAAE;gBAC1B;;AAGF,YAAA,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;AACtD,YAAA,qBAAqB,CAAC,YAAY,CAChC,UAAU,EACV,CAAA,EAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAA,EAAA,EAAK,UAAU,CAAC,EAAE,CAAC,OAAO,CAAA,KAAA,CAAO,CACvD;YACD,qBAAqB,CAAC,KAAK,EAAE;AAC/B,SAAC,CAAC;;IAGG,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;QAC3B,IAAI,CAAC,gBAAgB,EAAE;;IAGlB,qBAAqB,GAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGnC,IAAA,aAAa,CAAC,cAAuB,EAAA;QAC1C,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YACvC;;QAGF,IAAI,CAAC,gBAAgB,EAAE;;IAGlB,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,MAAM,qBAAqB,GAAG,IAAI,+BAA+B,CAC/D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CACpC;AAED,QAAA,IAAI,CAAC;aACF,qCAAqC,CAAC,qBAAqB;AAC3D,aAAA,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,oBAAoB,CAAC,iCAAiC,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACxF,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AAC3B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;aAClC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;aAC3B;AACF,SAAA,CAAC;;IAGC,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGtB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGhC,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACvC,QAAA,MAAM,EAAE,GAAW,IAAI,CAAC,cAAc,CAAC,GAAG;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC;;AAGxC,IAAA,YAAY,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG3B,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjC,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;;+GA9IxB,4CAA4C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4CAA4C,iYCzCzD,yiIAgHA,EAAA,MAAA,EAAA,CAAA,yuBAAA,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,EAAAF,IAAA,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,IAAA,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,EAAAA,IAAA,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,EAAAC,IAAA,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,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDvEa,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBANxD,SAAS;+BACE,gDAAgD,EAAA,eAAA,EAGzC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yiIAAA,EAAA,MAAA,EAAA,CAAA,yuBAAA,CAAA,EAAA;kLAGd,WAAW,EAAA,CAAA;sBAA3C,SAAS;uBAAC,aAAa;gBACf,sBAAsB,EAAA,CAAA;sBAA9B;gBACS,cAAc,EAAA,CAAA;sBAAvB;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,oBAAoB,EAAA,CAAA;sBAA7B;;;AE9CH;;;;;;;;;;;;;;AAcG;MAqBU,gCAAgC,CAAA;AAU3C,IAAA,WAAA,CACmB,eAAgC,EAChC,KAAqB,EAGrB,uCAAoD,EACpD,GAAsB,EAAA;QALtB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAK,CAAA,KAAA,GAAL,KAAK;QAGL,IAAuC,CAAA,uCAAA,GAAvC,uCAAuC;QACvC,IAAG,CAAA,GAAA,GAAH,GAAG;AAZN,QAAA,IAAA,CAAA,mBAAmB,GAAmC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAC5F,SAAS,CAAC,CAAC,MAAgB,KACzB,IAAI,CAAC,eAAe,CAAC,kCAAkC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAClF,CACF;;IAWM,eAAe,GAAA;QACpB,IAAI,CAAC,gBAAgB,EAAE;;IAGjB,gBAAgB,GAAA;QACtB,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC;AAC5D,YAAA,IAAI,CAAC,uCAAuC,CAAC,MAAM,KAAK,CAAC,EACzD;YACA;;AAGF,QAAA,IAAI,CAAC,uCAAuC,CAAC,OAAO,CAAC,kBAAkB,IAAG;AACxE,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,kBAAkB,CAAC;AACtD,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAnCf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,+EAcjC,uCAAuC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAdtC,gCAAgC,EAAA,QAAA,EAAA,mCAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACX,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpClD,2hCA6BA,EAAA,MAAA,EAAA,CAAA,swBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,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,EAAAC,IAAA,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,EAAAmB,kCAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDMa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAL5C,SAAS;+BACE,mCAAmC,EAAA,QAAA,EAAA,2hCAAA,EAAA,MAAA,EAAA,CAAA,swBAAA,CAAA,EAAA;;0BAiB1C;;0BACA,MAAM;2BAAC,uCAAuC;yEAZzC,WAAW,EAAA,CAAA;sBADlB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC;;;AEpCnD;;;;;;;;;;;;;;AAcG;MAuDU,sCAAsC,CAAA;IAgRjD,WACmB,CAAA,eAAgC,EAChC,KAAqB,EACrB,gBAAkC,EAClC,SAAuB,EACvB,WAAwB,EAAA;QAJxB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAW,CAAA,WAAA,GAAX,WAAW;AApRpB,QAAA,IAAA,CAAA,WAAW,GAA8B,IAAI,YAAY,EAAE;AAErD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAsB,SAAS,CAAC;AAClE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAA0B,SAAS,CAAC;AAC9E,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,eAAe,CAC9D,SAAS,CACV;AACe,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAqB,IAAI,CAAC;AACzD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACjD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE9D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAiB;AAC1C,YAAA;AACE,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;AACe,QAAA,IAAA,CAAA,MAAM,GAAmB;AACvC,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,4BAA4B;AACpC,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,0BAA0B;AAClC,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,KAAK,EAAE,2BAA2B;AACnC,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,UAAU;AACf,gBAAA,KAAK,EAAE,+BAA+B;AACvC,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,WAAW;AAChB,gBAAA,KAAK,EAAE,gCAAgC;AACxC,aAAA;SACF;QAEe,IAAgB,CAAA,gBAAA,GAAG,IAAI,eAAe,CAAqB;AACzE,YAAA;AACE,gBAAA,mBAAmB,EAAE,yBAAyB;AAC9C,gBAAA,OAAO,EAAE,KAAK;AACf,aAAA;AACD,YAAA;AACE,gBAAA,mBAAmB,EAAE,2BAA2B;AAChD,gBAAA,OAAO,EAAE,OAAO;AACjB,aAAA;AACF,SAAA,CAAC;AAEe,QAAA,IAAA,CAAA,UAAU,GAA+B;YACxD,MAAM;YACN,QAAQ;YACR,MAAM;YACN,UAAU;YACV,SAAS;SACV;QAEe,IAAc,CAAA,cAAA,GAAkC,IAAI,CAAC;aAClE,MAAM,CAAC,KAAK;AACZ,aAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,KAAK;AAC/B,YAAA,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAE,CAAC;SAChE,CAAC,CAAC,CACJ,CACF;AAEa,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACvD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACrD,QAAA,IAAA,CAAA,eAAe,GAAgC;YAC9D,QAAQ;YACR,OAAO;YACP,wBAAwB;YACxB,uBAAuB;SACxB;AACgB,QAAA,IAAA,CAAA,oBAAoB,GAAgC,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvE,QAAA,IAAA,CAAA,mBAAmB,GAAgC,CAAC,QAAQ,CAAC;QAC9D,IAAe,CAAA,eAAA,GAAkC,aAAa,CAAC;AAC7E,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,cAAc,CAAC,KAAI;YAC1C,IAAI,iBAAiB,EAAE;gBACrB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,KAAK;AAChD,oBAAA,EAAE,EAAE,SAAS;oBACb,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,SAAS,CAAA,CAAE,CAAC;AACzE,iBAAA,CAAC,CAAC;;iBACE,IAAI,CAAC,cAAc,EAAE;gBAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,KAAK;AACjD,oBAAA,EAAE,EAAE,SAAS;oBACb,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,SAAS,CAAA,CAAE,CAAC;AACzE,iBAAA,CAAC,CAAC;;YAGL,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,KAAK;AAC5C,gBAAA,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,SAAS,CAAA,CAAE,CAAC;AACzE,aAAA,CAAC,CAAC;SACJ,CAAC,CACH;AAEgB,QAAA,IAAA,CAAA,WAAW,GAAgC,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7D,IAAe,CAAA,eAAA,GAAkC,IAAI,CAAC;aACnE,MAAM,CAAC,KAAK;AACZ,aAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,KAAK;AACjC,YAAA,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,SAAS,CAAA,CAAE,CAAC;SACzE,CAAC,CAAC,CACJ,CACF;QAGa,IAAuB,CAAA,uBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAClF,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAChC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,EAClCG,KAAG,CAAC,CAAC,sBAA8B,MAAM,IAAI,CAAC,uBAAuB,GAAG,sBAAsB,CAAC,CAAC,CACjG;QAKM,IAAmB,CAAA,mBAAA,GAAG,IAAI;AAEhB,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAEtD,IAAa,CAAA,aAAA,GAAmC,aAAa,CAAC;AAC7E,YAAA,IAAI,CAAC,uBAAuB;AAC5B,YAAA,IAAI,CAAC,oBAAoB;SAC1B,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,KACjC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CACrE,EACDA,KAAG,CAAC,YAAY,IAAG;AACjB,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,IAAG;AAC5E,gBAAA,IAAI,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,EAAE,MAAM,GAAG,CAAC,EAAE;AAC3E,oBAAA,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,YAAY,CAAC;;AAE1D,aAAC,CAAC;AACJ,SAAC,CAAC,EACFA,KAAG,CAAC,YAAY,IAAG;AACjB,YAAA,IAAI,CAAC,kBAAkB,GAAG,YAAY;AACtC,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;SACjC,CAAC,CACH;QAEe,IAAuB,CAAA,uBAAA,GAAmC,aAAa,CAAC;AACtF,YAAA,IAAI,CAAC,aAAa;AAClB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KACjB,YAAY,CAAC,GAAG,CAAC,WAAW,KAAK;AAC/B,YAAA,GAAG,WAAW;AACd,YAAA,KAAK,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,EAAE;AACjD,YAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,aAAA,EAAgB,WAAW,CAAC,QAAQ,CAAA,CAAE,CAAC;AAC/E,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,WAAW,CAAC,SAAS,CAAA,CAAE,CAAC;AACzF,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,WAAW,CAAC,SAAS,CAAA,CAAE,CAAC;SAC1F,CAAC,CAAC,CACJ,CACF;AAEe,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAE1D,IAA0B,CAAA,0BAAA,GAAkC,aAAa,CAAC;AACxF,YAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE;AAC/C,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KACd,SAAS,CAAC,GAAG,CAAC,QAAQ,KAAK;AACzB,YAAA,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,QAAQ,CAAA,CAAE,CAAC;SACxE,CAAC,CAAC,CACJ,CACF;AAEgB,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAmB,EAAE,CAAC;QAEpE,IAAsB,CAAA,sBAAA,GAAiC,aAAa,CAAC;AACnF,YAAA,IAAI,CAAC,uBAAuB;AAC5B,YAAA,IAAI,CAAC,SAAS;SACf,CAAC,CAAC,IAAI,CACL,oBAAoB,CAClB,CAAC,CAAC,0BAA0B,EAAE,YAAY,CAAC,EAAE,CAAC,0BAA0B,EAAE,YAAY,CAAC,KACrF,0BAA0B,KAAK,0BAA0B;AACzD,YAAA,YAAY,EAAE,oBAAoB,KAAK,YAAY,EAAE,oBAAoB;AACzE,YAAA,YAAY,EAAE,GAAG,KAAK,YAAY,EAAE,GAAG,CAC1C,EACD,SAAS,CAAC,CAAC,CAAC,sBAAsB,EAAE,QAAQ,CAAC,KAAI;YAC/C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AAC/C,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC;;YAGf,OAAO,IAAI,CAAC;iBACT,eAAe,CAAC,QAAQ,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,QAAQ,CAAC,GAAG;AACnF,iBAAA,IAAI,CACH,GAAG,CAAC,YAAY,IACd;AACE,kBAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,KAAK;AACjD,oBAAA,GAAG,EAAE,gBAAgB;AACrB,oBAAA,KAAK,EAAE,YAAY,CAAC,gBAAgB,CAAC;AACtC,iBAAA,CAAC;AACJ,kBAAE,EAAE,CACP,CACF;SACJ,CAAC,CACH;QAEe,IAAe,CAAA,eAAA,GAAwB,aAAa,CAAC;AACnE,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,oBAAoB;SAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC,KAAK,cAAc,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE/E,IAA0B,CAAA,0BAAA,GAAwB,aAAa,CAAC;AAC9E,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,SAAS;AACf,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,cAAc,EAAE,mBAAmB,EAAE,QAAQ,CAAC,KAC9C,cAAc;YACd,mBAAmB;YACnB,CAAC,CAAC,QAAQ,EAAE,oBAAoB;YAChC,CAAC,IAAI,CAAC,mCAAmC,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAC5E,CACF;QAEe,IAAuB,CAAA,uBAAA,GAAwB,aAAa,CAAC;AAC3E,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,SAAS;AACf,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,cAAc,EAAE,mBAAmB,EAAE,QAAQ,CAAC,KAC9C,cAAc;YACd,mBAAmB;YACnB,CAAC,CAAC,QAAQ,EAAE,oBAAoB;YAChC,IAAI,CAAC,mCAAmC,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAC3E,CACF;QAEe,IAAY,CAAA,YAAA,GAAG,OAAO;QAEtB,IAAuB,CAAA,uBAAA,GAAG,uBAAuB;QAS/D,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;IAGjD,QAAQ,GAAA;QACb,IAAI,CAAC,mCAAmC,EAAE;;IAGrC,eAAe,GAAA;QACpB,IAAI,CAAC,4BAA4B,EAAE;;IAG9B,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;IAG5B,kBAAkB,CAAC,WAAwB,EAAE,0BAAmC,EAAA;AACrF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,IAAG;YACzD,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,IAAI,CAAC,0BAA0B,GAAG,0BAA0B;gBAC5D,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACtD,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CACvC;gBACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,IAAK,EAAkB,CAAC;gBAC1E,IAAI,CAAC,SAAS,EAAE;;AAEpB,SAAC,CAAC;;AAGG,IAAA,eAAe,CAAC,IAAiB,EAAA;QACtC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;AAClE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;AACxE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACxC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACpD,EAAE,CAAC,CAAC;;AAGA,IAAA,eAAe,CAAC,IAAY,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,IAAG;YACnD,MAAM,OAAO,GAAG,EAAC,GAAG,WAAW,EAAE,IAAI,EAAC;YACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;AAC3C,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxD,SAAC,CAAC;;AAGG,IAAA,sBAAsB,CAAC,IAAsB,EAAA;AAClD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAwB,CAAC;;IAGtD,cAAc,CAAC,SAAuB,EAAE,sBAA8B,EAAA;AAC3E,QAAA,MAAM,EAAC,KAAK,EAAE,SAAS,EAAC,GAAG,SAAS;AACpC,QAAA,MAAM,MAAM,GAAG,SAAS,KAAK,gBAAgB,CAAC,EAAE;QAChD,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACjD,QAAA,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC;AAE1C,QAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC;QAC1F,MAAM,gBAAgB,GAAG,EAAC,GAAG,YAAY,CAAC,gBAAgB,CAAC,EAAC;AAC5D,QAAA,MAAM,oBAAoB,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC;AAC3F,QAAA,MAAM,oBAAoB,GAAG,YAAY,EAAE,MAAM,GAAG,CAAC;QAErD,IAAI,oBAAoB,IAAI,MAAM,IAAI,gBAAgB,GAAG,CAAC,EAAE;AAC1D,YAAA,MAAM,oBAAoB,GAAG,CAAG,EAAA,YAAY,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA,CAAE;AACxE,YAAA,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,SAAS,CAC3D,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAC5C;YACD,oBAAoB,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,EAAE,gBAAgB,CAAC;AACxE,YAAA,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;;aAChE,IAAI,oBAAoB,IAAI,CAAC,MAAM,IAAI,gBAAgB,GAAG,YAAY,EAAE,MAAM,EAAE;AACrF,YAAA,MAAM,mBAAmB,GAAG,CAAG,EAAA,YAAY,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA,CAAE;AACvE,YAAA,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,SAAS,CAC1D,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,mBAAmB,CAC3C;YACD,oBAAoB,CAAC,MAAM,CAAC,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC;AAC3E,YAAA,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;;;AAIlE,IAAA,kCAAkC,CAAC,mBAAgC,EAAA;QACxE,IAAI,CAAC,YAAY,EAAE;QAEnB,IAAI,IAAI,CAAC,mCAAmC,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,EAAE;AACvF,YAAA,IAAI,CAAC;AACF,iBAAA,kBAAkB,CACjB,mBAAmB,EAAE,oBAAoB,IAAI,EAAE,EAC/C,IAAI,CAAC,uBAAuB,EAC5B,mBAAmB,CAAC,GAAG;AAExB,iBAAA,SAAS,EAAE;;AAGhB,QAAA,IAAI,CAAC;aACF,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,GAAG;AAC1E,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,mBAAmB,EAAE;aAC3B;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,WAAW,EAAE;aACnB;AACF,SAAA,CAAC;;AAGC,IAAA,eAAe,CAAC,sBAA8B,EAAA;QACnD,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;YAChD,IAAI,CAAC,QAAQ,EAAE;gBACb;;AAEF,YAAA,MAAM,cAAc,GAAgB;AAClC,gBAAA,GAAG,QAAQ;AACX,gBAAA,SAAS,EACP,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,QAAQ,EAAE,QAAQ,KAAK;sBACrE,QAAQ,CAAC;AACX,sBAAE,OAAO;AACb,gBAAA,SAAS,EAAE,QAAQ,CAAC,QAAQ,KAAK,SAAS,GAAG,QAAQ,CAAC,SAAS,GAAG,QAAQ;aAC3E;AAED,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK;AACpD,YAAA,IACE,IAAI,CAAC,mCAAmC,CAAC,YAAY,EAAE,oBAAoB,CAAC;AAC5E,gBAAA,YAAY,EAAE,oBAAoB,KAAK,cAAc,EAAE,oBAAoB,EAC3E;AACA,gBAAA,IAAI,CAAC;AACF,qBAAA,kBAAkB,CACjB,YAAY,EAAE,oBAAoB,IAAI,EAAE,EACxC,sBAAsB,EACtB,YAAY,EAAE,GAAG,IAAI,EAAE;AAExB,qBAAA,SAAS,EAAE;;YAGhB,IAAI,IAAI,CAAC,mCAAmC,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE;AACjF,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,IAAG;AACpE,oBAAA,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,QAAQ,MAAM,EAAC,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAC,CAAC,EAC7D,EAAE,CACH;AACD,oBAAA,IAAI,CAAC;AACF,yBAAA,gBAAgB,CACf,cAAc,CAAC,oBAAoB,IAAI,EAAE,EACzC,sBAAsB,EACtB,cAAc,CAAC,GAAG,EAClB,OAAO;AAER,yBAAA,SAAS,EAAE;AAChB,iBAAC,CAAC;;AAGJ,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,gBAAA,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC,SAAS,CACvF,MAAK;oBACH,IAAI,CAAC,WAAW,EAAE;oBAClB,IAAI,CAAC,SAAS,EAAE;oBAChB,IAAI,CAAC,mBAAmB,EAAE;iBAC3B,EACD,MAAK;oBACH,IAAI,CAAC,WAAW,EAAE;AACpB,iBAAC,CACF;;iBACI;gBACL,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAC9C,gBAAA,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC;AACrF,gBAAA,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC;gBAElF,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE,cAAc,CAAC;AACxD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,cAAc,CAAC;;AAEnE,SAAC,CAAC;;IAGG,kBAAkB,CACvB,sBAA8B,EAC9B,eAAmC,EAAA;QAEnC,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC,SAAS,CACvF,MAAK;YACH,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,mBAAmB,EAAE;SAC3B,EACD,MAAK;YACH,IAAI,CAAC,WAAW,EAAE;AACpB,SAAC,CACF;;IAGI,YAAY,GAAA;QACjB,IAAI,CAAC,SAAS,EAAE;;IAGV,aAAa,CAAC,iBAAuC,EAAE,KAAU,EAAA;AACvE,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACrE,YAAA,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAIzB,IAAA,OAAO,CAAC,IAAiB,EAAA;QAC/B,MAAM,cAAc,GAClB,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI;QAC/F,MAAM,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS;cACrE,IAAI,CAAC;cACL,IAAI;AACR,QAAA,MAAM,iBAAiB,GAAG,CAAC,EACzB,IAAI,CAAC,GAAG;AACR,YAAA,IAAI,CAAC,QAAQ;YACb,cAAc;YACd,yBAAyB;AACzB,YAAA,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,SAAS,CACf;AACD,QAAA,MAAM,WAAW,GACf,CAAC,IAAI,CAAC,0BAA0B;YAChC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3E,OAAO,iBAAiB,IAAI,WAAW;;AAGjC,IAAA,mBAAmB,CAAC,SAAgC,EAAA;AAC1D,QAAA,OAAO,SAAS,KAAK,wBAAwB,IAAI,SAAS,KAAK,uBAAuB;;AAGhF,IAAA,mCAAmC,CAAC,oBAA6B,EAAA;QACvE,OAAO,oBAAoB,KAAK,8BAA8B;;IAGxD,mCAAmC,GAAA;AACzC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,mBAAmB,IAAG;AACxD,YAAA,IAAI,mBAAmB;gBAAE,IAAI,CAAC,SAAS,EAAE;SAC1C,CAAC,CACH;;IAGK,4BAA4B,GAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,IAAG;YAC1C,IAAI,YAAY,EAAE;gBAChB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC5B,EAAE,CAAC,CAAC;;iBACA;gBACL,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,iBAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;;SAExC,CAAC,CACH;;IAGK,WAAW,CAAC,sBAA8B,EAAE,YAAgC,EAAA;QAClF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAG,EAAA,sBAAsB,CAAO,KAAA,CAAA,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,IAAI,CAAC,SAAS,CAAC,sBAAsB,CACnC,+BAA+B;AAC7B,YAAA,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,YAAY,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC9D,CACF;;IAGK,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGvB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGxB,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGvB,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGxB,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG9B,IAAA,eAAe,CAAC,WAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG1B,IAAA,aAAa,CAAC,WAAwB,EAAA;AAC5C,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC;;+GA1jBlC,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,yHCrEnD,ugVA+RA,EAAA,MAAA,EAAA,CAAA,4uCAAA,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,EAAAQ,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAR,IAAA,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,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,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,yCAAA,EAAA,2BAAA,EAAA,iDAAA,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,EAAAA,IAAA,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,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,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,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,oBAAA,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,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD1Na,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBANlD,SAAS;+BACE,0CAA0C,EAAA,eAAA,EAGnC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ugVAAA,EAAA,MAAA,EAAA,CAAA,4uCAAA,CAAA,EAAA;yMAGrC,WAAW,EAAA,CAAA;sBAApB;;;AEtEH;;;;;;;;;;;;;;AAcG;MA6CU,qCAAqC,CAAA;IA0RhD,WACmB,CAAA,eAAgC,EAChC,KAAqB,EACrB,gBAAkC,EAClC,aAA4B,EAC5B,SAAuB,EACvB,WAAwB,EAAA;QALxB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAW,CAAA,WAAA,GAAX,WAAW;AA/RrB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,SAAS,CAAC;AAE/C,QAAA,IAAA,CAAA,WAAW,GAAiB;AAC1C,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;AACe,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAE5D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAEhD,QAAA,IAAA,CAAA,MAAM,GAAwB;AAC5C,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,kBAAkB;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,gBAAgB;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,KAAK,EAAE,iBAAiB;AACzB,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,KAAK,EAAE,wBAAwB;AAChC,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,uBAAuB;AAC5B,gBAAA,KAAK,EAAE,kCAAkC;AAC1C,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,UAAU;AACf,gBAAA,KAAK,EAAE,qBAAqB;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,KAAK,EAAE,wBAAwB;AAChC,aAAA;SACF;AAEQ,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAC3E,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAChC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CACnC;AAEQ,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAEnD,IAAqB,CAAA,qBAAA,GAAwB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CACrF,GAAG,CACD,sBAAsB,IACpB,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAC/E,CACF;QAEO,IAAqB,CAAA,qBAAA,GAA0B,EAAE;AAExC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAEzD,IAAgB,CAAA,gBAAA,GAAsC,aAAa,CAAC;AACnF,YAAA,IAAI,CAAC,uBAAuB;AAC5B,YAAA,IAAI,CAAC,uBAAuB;SAC7B,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,KACjC,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,CACtE,EACDP,KAAG,CAAC,eAAe,IAAG;AACpB,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAACY,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,IAAG;AAC5E,gBAAA,IAAI,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AACnF,oBAAA,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,eAAe,CAAC;;AAE7D,aAAC,CAAC;AACJ,SAAC,CAAC,EACFZ,KAAG,CAAC,eAAe,IAAG;YACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,qBAAqB,GAAG,eAAe;AAC5C,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;YACxC,IAAI,CAAC,WAAW,EAAE;SACnB,CAAC,CACH;QAEQ,IAA0B,CAAA,0BAAA,GAA0C,aAAa,CAAC;AACzF,YAAA,IAAI,CAAC,gBAAgB;AACrB,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;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;AAEQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAkB,QAAQ,CAAC;AAElE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEhD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEhD,IAAW,CAAA,WAAA,GAAG,SAAS;QAEvB,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;QAEO,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,qBAAqB,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAClE,EACD,SAAS,CAAC,KAAK,CAAC,CACjB;AAEQ,QAAA,IAAA,CAAA,aAAa,GAAoB;AACxC,YAAA,QAAQ,CAAC,IAAI;AACb,YAAA,QAAQ,CAAC,IAAI;AACb,YAAA,QAAQ,CAAC,OAAO;AAChB,YAAA,QAAQ,CAAC,IAAI;AACb,YAAA,QAAQ,CAAC,WAAW;AACpB,YAAA,QAAQ,CAAC,qBAAqB;AAC9B,YAAA,QAAQ,CAAC,IAAI;SACd;AAEQ,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CACzD,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5EA,KAAG,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,EACDA,KAAG,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,CAAC,EAAE,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7E;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,qBAAqB,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC;AACzE,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;AAEQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAW;AAEzC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAE/C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAmB,SAAS,CAAC;QAE9D,IAAuB,CAAA,uBAAA,GAAG,uBAAuB;;IAW1D,eAAe,GAAA;QACpB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;AAGxD,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;;AAG7B,IAAA,SAAS,CAAC,cAA8B,EAAA;AACtC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;;AAG7C,IAAA,qBAAqB,CAAC,SAAiB,EAAA;QACrC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,YAAY,EAAE;AAEnB,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAACY,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;AAChE,gBAAA,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,SAAS,CAC/E,MAAK;oBACH,IAAI,CAAC,sBAAsB,EAAE;iBAC9B,EACD,MAAK;oBACH,IAAI,CAAC,WAAW,EAAE;AACpB,iBAAC,CACF;AACH,aAAC,CAAC;;;IAIN,cAAc,CAAC,KAAmB,EAAE,sBAA8B,EAAA;QAChE,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACvD,MAAM,iBAAiB,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;QACtD,MAAM,MAAM,GAAY,KAAK,CAAC,SAAS,KAAK,gBAAgB,CAAC,EAAE;AAE/D,QAAA,MAAM,mBAAmB,GAAG,eAAe,CAAC,SAAS,CACnD,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,iBAAiB,CAAC,GAAG,CAC7C;QACD,MAAM,mBAAmB,GAAG,EAAC,GAAG,eAAe,CAAC,mBAAmB,CAAC,EAAC;AACrE,QAAA,MAAM,uBAAuB,GAAG,eAAe,CAAC,MAAM,CACpD,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,iBAAiB,CAAC,GAAG,CAC7C;AACD,QAAA,MAAM,uBAAuB,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC;QAE1D,IAAI,uBAAuB,IAAI,MAAM,IAAI,mBAAmB,GAAG,CAAC,EAAE;AAChE,YAAA,MAAM,uBAAuB,GAAG,CAAG,EAAA,eAAe,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA,CAAE;AACjF,YAAA,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,SAAS,CACjE,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,uBAAuB,CAC/C;YACD,uBAAuB,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC,EAAE,mBAAmB,CAAC;AACjF,YAAA,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;;aACtE,IAAI,uBAAuB,IAAI,CAAC,MAAM,IAAI,mBAAmB,GAAG,eAAe,CAAC,MAAM,EAAE;AAC7F,YAAA,MAAM,sBAAsB,GAAG,CAAG,EAAA,eAAe,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA,CAAE;AAChF,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,mBAAmB,CAAC;AACpF,YAAA,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;;;IAI/E,kBAAkB,GAAA;QAChB,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAACA,MAAI,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,CAACA,MAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,KAAI;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAC5C,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,qBAAqB,CAC3B,sBAA8B,EAC9B,kBAAyC,EAAA;QAEzC,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC;AACF,aAAA,wBAAwB,CAAC,sBAAsB,EAAE,kBAAkB;aACnE,SAAS,CACR,MAAK;YACH,IAAI,CAAC,sBAAsB,EAAE;YAC7B,YAAY,CAAC,OAAO,CAAC,CAAA,YAAA,EAAe,sBAAsB,CAAE,CAAA,EAAE,IAAI,CAAC;SACpE,EACD,MAAK;YACH,IAAI,CAAC,WAAW,EAAE;AACpB,SAAC,CACF;;IAGG,SAAS,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;AAEtC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;AAChE,YAAA,IAAI,CAAC;iBACF,yBAAyB,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;iBAC3E,SAAS,CACR,MAAK;gBACH,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,sBAAsB,EAAE;aAC9B,EACD,MAAK;gBACH,IAAI,CAAC,WAAW,EAAE;AACpB,aAAC,CACF;AACL,SAAC,CAAC;;AAGI,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,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;QACnD,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC;AAC9E,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB;QACjD,MAAM,oBAAoB,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,IAAG;AACvD,YAAA,MAAM,UAAU,GAAG,EAAC,GAAG,MAAM,EAAC;YAC9B,IAAI,UAAU,CAAC,GAAG,KAAK,sBAAsB,CAAC,GAAG,EAAE;gBACjD,MAAM,aAAa,GAAG,EAAC,GAAG,UAAU,EAAE,GAAG,mBAAmB,EAAC;AAC7D,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;oBACpC,OAAO,aAAa,CAAC,WAAW;;AAElC,gBAAA,OAAO,aAAa;;AAEtB,YAAA,IAAI,mBAAmB,CAAC,WAAW,EAAE;gBACnC,OAAO,UAAU,CAAC,WAAW;;AAE/B,YAAA,OAAO,UAAU;AACnB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;AAChE,YAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC,SAAS,CACvF,MAAK;gBACH,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,sBAAsB,EAAE;aAC9B,EACD,MAAK;gBACH,IAAI,CAAC,WAAW,EAAE;AACpB,aAAC,CACF;AACH,SAAC,CAAC;;IAGI,WAAW,CACjB,sBAA8B,EAC9B,eAAsC,EAAA;QAEtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAG,EAAA,sBAAsB,CAAO,KAAA,CAAA,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,IAAI,CAAC,SAAS,CAAC,sBAAsB,CACnC,+BAA+B;AAC7B,YAAA,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC/D,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,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjC,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,CAACA,MAAI,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;;+GAnkBQ,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,+EC3DlD,uyVAgUA,EAAA,MAAA,EAAA,CAAA,2pCAAA,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,EAAAG,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAI,IAAA,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,EAAAA,IAAA,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,EAAAJ,IAAA,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,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,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAY,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,yCAAA,EAAA,2BAAA,EAAA,iDAAA,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,EAAAA,IAAA,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,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,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,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDrQa,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBALjD,SAAS;+BACE,yCAAyC,EAAA,QAAA,EAAA,uyVAAA,EAAA,MAAA,EAAA,CAAA,2pCAAA,CAAA,EAAA;;;AEvDrD;;;;;;;;;;;;;;AAcG;MAeU,gBAAgB,CAAA;AAkC3B,IAAA,WAAA,CACmB,aAA4B,EAC5B,UAAsB,EACtB,kBAAsC,EAAA;QAFtC,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;AAlC9B,QAAA,IAAA,CAAA,4BAA4B,GAAG,MAAM,CAAC,KAAK,CAAC;QAEnC,IAAU,CAAA,UAAA,GAAG,aAAa,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,sBAAsB;YACtC,IAAI,CAAC,UAAU,CAAC,gBAAgB;YAChC,IAAI,CAAC,UAAU,CAAC,YAAY;YAC5B,IAAI,CAAC,UAAU,CAAC,oBAAoB;AACrC,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,CAAC,KAAI;AACnE,YAAA,QAAQ,IAAI,CAAC,OAAO;gBAClB,KAAK,UAAU,CAAC,QAAQ;oBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC;gBAChD,KAAK,UAAU,CAAC,MAAM;oBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC;gBACxD,KAAK,UAAU,CAAC,MAAM;oBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;gBACpD,KAAK,UAAU,CAAC,OAAO;AACrB,oBAAA,OAAO,EAAE;;AAEf,SAAC,CAAC,EACF,SAAS,CAAC,EAAE,CAAC,CACd;AAQO,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;IAQpC,QAAQ,GAAA;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,8BAA8B,EAAE;QAErC,IAAI,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE;;aACjC;YACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE;;;IAIlC,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;IAG5B,UAAU,GAAA;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC;;IAG1F,kBAAkB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC;AAC7C,YAAA,OAAO,yDAAyD;AAClE,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC;AAC3C,YAAA,OAAO,0DAA0D;AACnE,QAAA,OAAO,EAAE;;IAGJ,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB;;AAGF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;;IAGjC,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AAGrB,IAAA,mBAAmB,CAAC,KAAc,EAAA;QACvC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;;IAG7B,8BAA8B,GAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,IAAG;AAC9D,YAAA,MAAM,eAAe,GAAG,UAAU,KAAK,WAAW,CAAC,OAAO;YAE1D,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC;;iBACtC;AACL,gBAAA,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,KAAK,CAAC;;AAEhD,SAAC,CAAC;;IAGI,YAAY,CAAC,QAAoB,EAAE,qBAA+B,EAAA;AACxE,QAAA,OAAO;AACJ,aAAA,MAAM,CACL,CAAC,OAAiB,KAChB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;AACnD,YAAA,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,UAAU;AAE7D,aAAA,GAAG,CAAC,CAAC,OAAiB,MAAM;AAC3B,YAAA,GAAG,OAAO;AACV,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,UAAU;AACrE,SAAA,CAAC,CAAC;;+GA5GI,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAtB,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,wFC7B7B,4mEAyDA,EAAA,MAAA,EAAA,CAAA,25BAAA,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,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,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,EAAAA,IAAA,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,EAAAF,IAAA,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,EAAAA,IAAA,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,EAAAE,IAAA,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,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD5Ba,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4mEAAA,EAAA,MAAA,EAAA,CAAA,25BAAA,CAAA,EAAA;6IAG/B,OAAO,EAAA,CAAA;sBAAtB;;;AE9BH;;;;;;;;;;;;;;AAcG;MA8BU,qCAAqC,CAAA;AAsDhD,IAAA,WAAA,CACmB,EAAe,EACf,WAAwB,EACxB,UAAsB,EACtB,aAA4B,EAAA;QAH5B,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAa,CAAA,aAAA,GAAb,aAAa;QAxDvB,IAAI,CAAA,IAAA,GAAG,KAAK;AAEX,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAA8B;QAE1D,IAAU,CAAA,UAAA,GAAG,UAAU;QAEvB,IAAS,CAAA,SAAA,GAAgC,aAAa,CAAC;YACrE,IAAI,CAAC,UAAU,CAAC,eAAe;YAC/B,IAAI,CAAC,aAAa,CAAC,eAAe;AACnC,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK;AAClC,YAAA;AACE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,KAAK,EAAE,sDAAsD;gBAC7D,IAAI,EAAE,UAAU,CAAC,QAAQ;gBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC3B,gBAAA,6BAA6B,EAC3B,8DAA8D;AACjE,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,KAAK,EAAE,0DAA0D;gBACjE,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACzB,gBAAA,6BAA6B,EAC3B,kEAAkE;AACrE,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,0DAA0D;gBACjE,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACzB,gBAAA,6BAA6B,EAC3B,kEAAkE;AACrE,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,2DAA2D;gBAClE,IAAI,EAAE,UAAU,CAAC,OAAO;gBACxB,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC3B,aAAA;AACF,SAAA,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,YAAA,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC1E,YAAA,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACpD,YAAA,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvD,SAAA,CAAC;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC;AAQ7E,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;;AAGxF,IAAA,MAAM,CAAC,IAAgB,EAAA;AAC5B,QAAA,IAAI,EAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAChE,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,GAAG;;QAGlB,IAAI,CAAC,GAAG,EAAE;YACR;;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC;;IAG9D,SAAS,GAAA;QACd,IAAI,CAAC,UAAU,EAAE;;IAGZ,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,UAAU,EAAE;;AAGZ,IAAA,eAAe,CAAC,IAAgB,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG1B,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;;IAGX,kBAAkB,GAAA;QACxB,OAAO,CAAC,OAAwB,KAC9B,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,GAAW,KAAK,GAAG,KAAK,OAAO,CAAC,KAAK;AAC5E,cAAE;AACF,cAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC;;+GAjGhC,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAmB,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAtB,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,6MC5ClD,mgGA6EA,EAAA,MAAA,EAAA,CAAA,ypCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAAG,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,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,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,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,EAAAI,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoB,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAtB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDjCa,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAPjD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0CAA0C,mBAGnC,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,mgGAAA,EAAA,MAAA,EAAA,CAAA,ypCAAA,CAAA,EAAA;kKAG5B,sBAAsB,EAAA,CAAA;sBAA9B;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAES,eAAe,EAAA,CAAA;sBAAxB;;;AEhDH;;;;;;;;;;;;;;AAcG;MAUU,sCAAsC,CAAA;IAIjD,IAAoB,GAAG,CAAC,KAAiB,EAAA;QACvC,IAAI,CAAC,KAAK,EAAE;YACV;;QAGF,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;YAC3C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,MAAM,CACvE,CAAC,MAAc,KAAK,MAAM,KAAK,KAAK,CAAC,UAAU,CAChD;;AAGH,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACjC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC7E,YAAA,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC;AAClE,YAAA,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC;AACjE,SAAA,CAAC;;AAEJ,IAAA,IAAW,GAAG,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI;;IAQlB,WACmB,CAAA,EAAe,EACf,UAAsB,EAAA;QADtB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAU,CAAA,UAAA,GAAV,UAAU;AAPnB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAqB;;IAU1D,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG1B,OAAO,GAAA;AACZ,QAAA,MAAM,EAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAE7D,IAAI,CAAC,UAAU,EAAE;YACf;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC;;+GAhD5D,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,wKCxBnD,4jDA2CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,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,EAAAK,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,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,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,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,EAAAH,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuB,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDnBa,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAJlD,SAAS;+BACE,2CAA2C,EAAA,QAAA,EAAA,4jDAAA,EAAA;wGAI5C,IAAI,EAAA,CAAA;sBAAZ;gBAGmB,GAAG,EAAA,CAAA;sBAAtB;gBAuBS,eAAe,EAAA,CAAA;sBAAxB;;;AEnDH;;;;;;;;;;;;;;AAcG;MA6BU,8BAA8B,CAAA;IAMzC,IAAoB,sBAAsB,CAAC,KAAa,EAAA;QACtD,IAAI,CAAC,KAAK,EAAE;YACV;;AAEF,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;AACpC,QAAA,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACpD,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;;AAEtC,IAAA,IAAW,sBAAsB,GAAA;QAC/B,OAAO,IAAI,CAAC,uBAAuB;;AAoCrC,IAAA,WAAA,CACmB,EAAqB,EACrB,WAAwB,EACxB,oBAA0C,EAC1C,UAAsB,EACtB,gBAAkC,EAClC,MAAc,EACd,aAA4B,EAAA;QAN5B,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACpB,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAa,CAAA,aAAA,GAAb,aAAa;AAxCzB,QAAA,IAAA,CAAA,WAAW,GAAiB;AACjC,YAAA;AACE,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;AACe,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AACxD,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,CAC7E,GAAG,CAAC,CAAC,GAAkB,KAAK,CAAC,CAAC,GAAG,CAAC,CACnC;AACe,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACpD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,oBAAoB,CAAC,QAAQ;AAClE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAEhD,QAAA,IAAA,CAAA,KAAK,GAA6B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CACpFP,KAAG,CAAC,IAAI,IAAG;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAe,KAAK,GAAG,CAAC,UAAU,CAAC;AACrF,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAe,KAAK,GAAG,CAAC,GAAG,CAAC;YAC1E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;SACpC,CAAC,CACH;AACe,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC;AACnD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC;;IAY5C,eAAe,GAAA;QACpB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,YAAA;AACE,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,KAAK,EAAE,8CAA8C;gBACrD,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,6CAA6C;gBACpD,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,IAAI,CAAC,qBAAqB;AACpC,gBAAA,GAAG,EAAE,EAAE;AACP,gBAAA,KAAK,EAAE,8CAA8C;AACtD,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,IAAI,CAAC,wBAAwB;AACvC,gBAAA,GAAG,EAAE,EAAE;AACP,gBAAA,KAAK,EAAE,iDAAiD;AACzD,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC1B,gBAAA,GAAG,EAAE,WAAW;AAChB,gBAAA,KAAK,EAAE,mDAAmD;AAC3D,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;AAGlB,IAAA,YAAY,CAAC,GAAW,EAAA;QAC7B,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG;;IAG5C,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGxB,IAAA,aAAa,CAAC,GAAe,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGzB,IAAA,YAAY,CAAC,GAAe,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnB,gBAAA,CAAA,4BAAA,EAA+B,IAAI,CAAC,uBAAuB,eAAe,GAAG,CAAC,GAAG,CAAE,CAAA;AACpF,aAAA,CAAC;;aACG;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAI3B,IAAA,oBAAoB,CAAC,GAAsB,EAAA;AAChD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAE9B,IAAI,CAAC,GAAG,EAAE;YACR;;AAGF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;AAGX,IAAA,qBAAqB,CAAC,GAAsB,EAAA;AACjD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAEpB,IAAI,CAAC,GAAG,EAAE;YACR;;AAGF,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;;AAGZ,IAAA,2BAA2B,CAAC,GAAe,EAAA;QAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;AAG3B,IAAA,cAAc,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;AAGjB,IAAA,qBAAqB,CAAC,cAA4B,EAAA;AACvD,QAAA,IAAI,CAAC,cAAc;YAAE;AAErB,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AAElC,QAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CACtC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,cAAc,CAAC,CACxD;;AAGK,IAAA,MAAM,CAAC,GAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;AAGzE,IAAA,SAAS,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;AAG/E,IAAA,OAAO,CAAC,GAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;;+GAzKhF,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAArB,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,aAAA,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,ydC3C3C,2kGAsFA,EAAA,MAAA,EAAA,CAAA,srBAAA,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,EAAAG,IAAA,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,IAAA,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,EAAAK,IAAA,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,IAAA,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,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,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,qCAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sCAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,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,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FD3Ca,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,mBAG1B,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,2kGAAA,EAAA,MAAA,EAAA,CAAA,srBAAA,CAAA,EAAA;0PAGN,wBAAwB,EAAA,CAAA;sBAAtD,SAAS;uBAAC,kBAAkB;gBACD,qBAAqB,EAAA,CAAA;sBAAhD,SAAS;uBAAC,eAAe;gBACQ,mBAAmB,EAAA,CAAA;sBAApD,SAAS;uBAAC,qBAAqB;gBAGZ,sBAAsB,EAAA,CAAA;sBAAzC;;;AEjDH;;;;;;;;;;;;;;AAcG;MAkBU,mCAAmC,CAAA;IAiD9C,WACmB,CAAA,eAAgC,EAChC,WAAwB,EACxB,oBAA0C,EAC1C,KAAqB,EACrB,mBAAwC,EACxC,gBAAkC,EAAA;QALlC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACpB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAnDlB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAC5C,QAAA,IAAA,CAAA,2BAA2B,GACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,SAAS,CAAC,MACR,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,CACvF,EACD,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,IAAI,CAAC,eAAe,CAAC,uCAAuC,CAC1D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EACxB,OAAO,CACR,CACF,CACF;AAEa,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAC5D,SAAS,CAAC,CAAC,MAAgB,KACzB,IAAI,CAAC,eAAe,CAAC,kCAAkC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAClF,CACF;AAEe,QAAA,IAAA,CAAA,WAAW,GAAiB;AAC1C,YAAA;AACE,gBAAA,KAAK,EAAE,iCAAiC;gBACxC,QAAQ,EAAE,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC;AACzD,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;AACe,QAAA,IAAA,CAAA,MAAM,GAAmB;AACvC,YAAA;AACE,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,uBAAuB;AAC5B,gBAAA,KAAK,EAAE,0CAA0C;gBACjD,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC3B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,iBAAiB;AACtB,gBAAA,KAAK,EAAE,2CAA2C;gBAClD,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC3B,aAAA;SACF;AAUC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;;AAG5B,IAAA,+BAA+B,CACpC,yBAAoD,EAAA;AAEpD,QAAA,IAAI,CAAC;AACF,aAAA,+BAA+B,CAAC;AAC/B,YAAA,sBAAsB,EAAE,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI;AAC9E,YAAA,oBAAoB,EAAE,yBAAyB,CAAC,EAAE,CAAC,oBAAoB;AACvE,YAAA,yBAAyB,EAAE,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAAC,OAAO;YACpF,qBAAqB,EAAE,yBAAyB,CAAC,qBAAqB;YACtE,eAAe,EAAE,yBAAyB,CAAC,eAAe;SAC3D;AACA,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACxC,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,yDAAyD,CAC1D;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;gBACF,IAAI,CAAC,8BAA8B,EAAE;aACtC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACxC,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,yDAAyD,CAC1D;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;aACH;AACF,SAAA,CAAC;;IAGC,8BAA8B,GAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGpB,IAAA,uBAAuB,CAAC,kBAAsC,EAAA;AACnE,QAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,kBAAkB,CAAC;;+GAnG9C,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAxB,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAyB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA5B,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,EAFnC,QAAA,EAAA,sCAAA,EAAA,SAAA,EAAA,CAAC,mBAAmB,CAAC,uJC9BlC,g9DAuDA,EAAA,MAAA,EAAA,CAAA,4uBAAA,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,EAAAE,IAAA,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,IAAA,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,EAAAM,IAAA,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,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,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoB,sCAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,OAAA,EAAA,CAAA,kCAAA,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,EAAA5B,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDvBa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAN/C,SAAS;+BACE,sCAAsC,EAAA,SAAA,EAGrC,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,g9DAAA,EAAA,MAAA,EAAA,CAAA,4uBAAA,CAAA,EAAA;gPAIf,oBAAoB,EAAA,CAAA;sBADpC,SAAS;uBAAC,qBAAqB;;;AEjClC;;;;;;;;;;;;;;AAcG;MA+CU,qCAAqC,CAAA;IAChD,IAAoB,IAAI,CAAC,KAAsB,EAAA;AAC7C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAEvB,QAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;YACtB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AACvC,aAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;;aAChC;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAIzC,IAAoB,OAAO,CAAC,KAAyB,EAAA;AACnD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;AA8EjC,IAAA,IAAW,0BAA0B,GAAA;QACnC,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,4BAA4B,CAAC;;AAGhE,IAAA,IAAW,GAAG,GAAA;QACZ,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC;;AAGzC,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC;;AAG3C,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC;;AAG3C,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO;;AAGxC,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ;;AASzC,IAAA,WAAA,CACmB,EAAe,EACf,WAAwB,EACxB,iBAAoC,EACpC,gBAAkC,EAAA;QAHlC,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AA1GlB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAyB;AAE3D,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAkB,SAAS,CAAC;AACxD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAkB,SAAS,CAAC;AACtE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC;AAEpE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC9C,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC/C,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AACvB,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,kBAAkB;aACxB,CAAC;AACF,YAAA,0BAA0B,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtE,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAChD,SAAA,CAAC;QAIc,IAAO,CAAA,OAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAC5FC,KAAG,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,KAAI;AAC5B,YAAA,IAAI,IAAI,KAAK,MAAM,IAAI,aAAa;AAAE,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACvE,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,EAChCA,KAAG,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CACvC;QAEe,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACrD,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,EAC3BA,KAAG,CAAC,KAAK,IAAG;AACV,YAAA,IAAI,KAAK;gBAAE,IAAI,CAAC,SAAS,EAAE;SAC5B,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC;AAE5D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE9C,QAAA,IAAA,CAAA,MAAM,GAA8B;AACnD,YAAA,uBAAuB,CAAC,GAAG;AAC3B,YAAA,uBAAuB,CAAC,OAAO;AAC/B,YAAA,uBAAuB,CAAC,MAAM;AAC9B,YAAA,uBAAuB,CAAC,IAAI;AAC5B,YAAA,uBAAuB,CAAC,IAAI;AAC5B,YAAA,uBAAuB,CAAC,KAAK;AAC7B,YAAA,uBAAuB,CAAC,IAAI;AAC5B,YAAA,uBAAuB,CAAC,IAAI;AAC5B,YAAA,uBAAuB,CAAC,QAAQ;AAChC,YAAA,uBAAuB,CAAC,QAAQ;AAChC,YAAA,uBAAuB,CAAC,YAAY;AACpC,YAAA,uBAAuB,CAAC,OAAO;SAChC;AAEgB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAA0B,SAAS,CAAC;QAE1E,IAAe,CAAA,eAAA,GAA2B,aAAa,CAAC;AACtE,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK;YACxB,QAAQ,EAAE,KAAK,KAAK,aAAa;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,oBAAoB;AAClB,gBAAA,uBAAuB,CAAC,qCAAqC,CAAC,KAAK,CAAC,CACvE;YACD,KAAK;AACL,YAAA,OAAO,EAAE,uBAAuB,CAAC,qCAAqC,CAAC,KAAK,CAAC;SAC9E,CAAC,CAAC,CACJ,CACF;AA0Be,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEhD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAErD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAQlD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;;IAGjC,QAAQ,GAAA;QACb,IAAI,CAAC,uBAAuB,EAAE;;IAGzB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;IAG5B,OAAO,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;;AAGP,IAAA,mBAAmB,CAAC,OAAgB,EAAA;AACzC,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAC9B,YAAA,0BAA0B,EAAE,OAAO;AACpC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;;IAG7B,SAAS,GAAA;QACd,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,IAAI,CAAC;aACF,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,YAAY,EAAE;AACvE,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,eAAe,EAAE;aACvB;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aACnB;AACF,SAAA,CAAC;;IAGC,UAAU,GAAA;QACf,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,iBAAiB,IACzB,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAC7C,IAAI,CAAC,sBAAsB,EAC3B,iBAAiB,EACjB,IAAI,CAAC,YAAY,EAAE,CACpB,CACF;AAEF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,eAAe,EAAE;aACvB;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aACnB;AACF,SAAA,CAAC;;IAGC,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGtB,IAAA,mBAAmB,CAAC,KAG1B,EAAA;AACC,QAAA,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,EAAE,KAAgC;QAE9D,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;AAClD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;;;AAI9B,IAAA,WAAW,CAAC,aAAiC,EAAA;QACnD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;YAC9B,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,0BAA0B,EAAE,aAAa,CAAC,0BAA0B;YACpE,KAAK,EAAE,aAAa,CAAC,KAAK;AAC3B,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9C,QAAA,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;QACrC,IAAI,CAAC,eAAe,EAAE;;IAGhB,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAC9B,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,0BAA0B,EAAE,IAAI;YAChC,KAAK,EAAE,uBAAuB,CAAC,IAAI;AACpC,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACvD,QAAA,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;QACrC,IAAI,CAAC,eAAe,EAAE;;IAGhB,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGtB,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAC/E,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,KAAI;AAClC,YAAA,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE;gBACxB,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAC,CAAC;;qBAChE;oBACL,IAAI,CAAC,QAAQ,EAAE;;;SAGpB,CACF,CACF;;AAGK,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,MAAM,WAAW,GAAG,CAAG,EAAA,KAAK,CAAE;AAC3B,aAAA,WAAW;AACX,aAAA,OAAO,CAAC,2BAA2B,EAAE,GAAG;AACxC,aAAA,OAAO,CAAC,SAAS,EAAE,GAAG;AACtB,aAAA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAE9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACnC,YAAA,OAAO,WAAW;;QAGpB,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC;;IAGnD,sBAAsB,CAAC,WAAmB,EAAE,QAAkB,EAAA;QACpE,MAAM,qBAAqB,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,GAAG,CAClF,CAAC,WAAmB,KAAK,CAAC,WAAW,CACtC;AACD,QAAA,MAAM,wBAAwB,GAC5B,qBAAqB,CAAC,MAAM,GAAG,CAAC,IAAI,qBAAqB,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG;AACb,cAAE,CAAG,EAAA,WAAW,CAAC,OAAO,CAAC,CAAG,EAAA,wBAAwB,CAAE,CAAA,EAAE,GAAG,wBAAwB,GAAG,CAAC,CAAA,CAAE,CAAC,CAAE;AAC5F,cAAE,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI;AAEtB,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC;;AAGtD,QAAA,OAAO,MAAM;;IAGP,QAAQ,GAAA;QACd,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAC,GAAG,EAAE,EAAE,EAAC,CAAC;;IAGpC,kBAAkB,GAAA;QACxB,OAAO,CAAC,OAAwB,KAC9B,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,KACrB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAW,KAAK,GAAG,KAAK,QAAQ,CAAC,IAAI;AACzD,cAAE;AACF,cAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,CACxC,CACF;;IAGG,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;;IAGxB,MAAM,CAAC,KAAK,GAAG,IAAI,EAAA;QACzB,UAAU,CACR,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;AAC/B,SAAC,EACD,KAAK,GAAG,gBAAgB,CAAC,gBAAgB,GAAG,CAAC,CAC9C;;IAGK,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;;IAG5B,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC;;IAGtC,YAAY,GAAA;QAClB,OAAO;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;AACnB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACvB,YAAA,0BAA0B,EAAE,IAAI,CAAC,0BAA0B,CAAC,KAAK;AACjE,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAgC;SACnD;;+GAzUQ,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,sPC7DlD,85IAwIA,EAAA,MAAA,EAAA,CAAA,6lCAAA,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,EAAAG,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,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,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAC,IAAA,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,EAAAA,IAAA,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,EAAAD,IAAA,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,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,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAK,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,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,EAAAD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD3Ea,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBANjD,SAAS;+BACE,yCAAyC,EAAA,eAAA,EAGlC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,85IAAA,EAAA,MAAA,EAAA,CAAA,6lCAAA,CAAA,EAAA;6KAG3B,IAAI,EAAA,CAAA;sBAAvB;gBAYmB,OAAO,EAAA,CAAA;sBAA1B;gBAIe,QAAQ,EAAA,CAAA;sBAAvB;gBACe,sBAAsB,EAAA,CAAA;sBAArC;gBAEgB,eAAe,EAAA,CAAA;sBAA/B;;;AEjFH;;;;;;;;;;;;;;AAcG;MAoCU,kCAAkC,CAAA;AAU7C,IAAA,IAAW,uBAAuB,GAAA;QAChC,OAAO,IAAI,CAAC,wBAAwB;;IAuDtC,WACmB,CAAA,iBAAoC,EACpC,KAAqB,EAAA;QADrB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK;AAjEP,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAuB,IAAI,CAAC;AAE1D,QAAA,IAAA,CAAA,wBAAwB,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACpF,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,IAAI,CAAC,EAC3B,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CACnC;AAMe,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;QAErD,IAAiB,CAAA,iBAAA,GAAyB,EAAE;QAEpC,IAAiB,CAAA,iBAAA,GAAG,aAAa,CAAC;AAChD,YAAA,IAAI,CAAC,wBAAwB;AAC7B,YAAA,IAAI,CAAC,QAAQ;AACd,SAAA,CAAC,CAAC,IAAI,CACLE,KAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAI;AAClB,YAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE5B,SAAC,CAAC,EACF,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,KACjC,IAAI,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,sBAAsB,CAAC,CACjF,EACD,GAAG,CAAC,QAAQ,IACV,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK;AACtB,YAAA,GAAG,MAAM;YACT,OAAO,EAAE,uBAAuB,CAAC,qCAAqC,CAAC,MAAM,CAAC,KAAK,CAAC;AACrF,SAAA,CAAC,CAAC,CACJ,EACDA,KAAG,CAAC,QAAQ,IAAG;AACb,YAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ;AACjC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;SAC1B,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AAEjD,QAAA,IAAA,CAAA,YAAY,GAAiB;AAC3C,YAAA;AACE,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;AAEe,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAkB,QAAQ,CAAC;AACjE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC;AAEnE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC;AACpE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAW;;IAOlD,eAAe,GAAA;QACpB,IAAI,CAAC,UAAU,EAAE;;AAGZ,IAAA,eAAe,CAAC,MAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG3B,IAAA,aAAa,CAAC,MAA0B,EAAA;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;;IAG7B,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG5B,IAAA,UAAU,CAAC,eAAsC,EAAA;AACtD,QAAA,IAAI,eAAe,KAAK,iBAAiB,EAAE;YACzC,IAAI,CAAC,MAAM,EAAE;;AAGf,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAG/B,IAAA,mBAAmB,CAAC,MAA0B,EAAA;AACnD,QAAA,IAAI,CAAC;aACF,IAAI,CACH,SAAS,CAAC,sBAAsB,IAC9B,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,sBAAsB,EAAE,MAAM,CAAC,GAAG,CAAC,CACpF;aAEF,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,MAAM,EAAE;AACf,SAAC,CAAC;;AAGC,IAAA,cAAc,CAAC,KAAmB,EAAA;AACvC,QAAA,MAAM,EAAC,SAAS,EAAE,KAAK,EAAC,GAAG,KAAK;AAEhC,QAAA,MAAM,eAAe,GACnB,SAAS,KAAK,gBAAgB,CAAC;AAC7B,cAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK;AAC5D,cAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,SAAS,CAAC,sBAAsB,IAC9B,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAC3F;aAEF,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,SAAC,CAAC;;IAGE,MAAM,CAAC,WAAW,GAAG,KAAK,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,aAAa,GAAG,IAAI,CAAC;;AAGhD,IAAA,YAAY,CAClB,QAA8B,EAC9B,MAAc,EACd,MAAc,EAAA;AAEd,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtD,QAAA,OAAO,IAAI;;IAGL,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,YAAA;AACE,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,0CAA0C;gBACjD,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,wCAAwC;gBAC/C,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,4BAA4B;AACjC,gBAAA,KAAK,EAAE,4CAA4C;gBACnD,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC3B,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,IAAI,CAAC,mBAAmB;AAClC,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,0CAA0C;AAClD,aAAA;AACF,SAAA,CAAC;;+GAtKO,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,uMClD/C,iqFA0EA,EAAA,MAAA,EAAA,CAAA,yqBAAA,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,EAAAC,IAAA,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,IAAA,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,IAAA,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,IAAA,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,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,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,qCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA/B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDxBa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;+BACE,qCAAqC,EAAA,eAAA,EAG9B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iqFAAA,EAAA,MAAA,EAAA,CAAA,yqBAAA,CAAA,EAAA;mHAGb,mBAAmB,EAAA,CAAA;sBAApD,SAAS;uBAAC,qBAAqB;;;AEnDlC;;;;;;;;;;;;;;AAcG;AAiCG,MAAO,yCACX,SAAQ,uBAAuB,CAAA;IAkC/B,WACmB,CAAA,oBAA0C,EAC1C,KAAqB,EACrB,aAA4B,EAC5B,UAAsB,EACtB,gBAAkC,EAAA;AAEnD,QAAA,KAAK,EAAE;QANU,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACpB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AA/BnB,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAClF,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAChC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CACnC;AAOM,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CACnDP,KAAG,CAAC,CAAC,UAAmB,KAAI;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;SAC7B,CAAC,CACH;AACe,QAAA,IAAA,CAAA,2BAA2B,GACzC,IAAI,CAAC,UAAU,CAAC,2BAA2B;AAC7B,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB;QACjE,IAAY,CAAA,YAAA,GAAG,KAAK;AACpB,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAE9C,IAAO,CAAA,OAAA,GAAG,OAAO;AAIzB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QASzC,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc;QAC/D,IAAI,CAAC,cAAc,GAAG,cAAc,EAAE,cAAc,IAAI,IAAI;QAC5D,IAAI,CAAC,oBAAoB,GAAG,cAAc,EAAE,mBAAmB,IAAI,IAAI;;IAGlE,QAAQ,GAAA;QACb,IAAI,CAAC,6BAA6B,EAAE;;IAG/B,eAAe,GAAA;QACpB,IAAI,IAAI,CAAC,sBAAsB;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW;QAC3F,IAAI,CAAC,2BAA2B,EAAE;;IAG7B,WAAW,GAAA;QAChB,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;;AAG9B,IAAA,oBAAoB,CAAC,GAAqB,EAAE,aAAa,GAAG,KAAK,EAAA;QACtE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB;YACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW;AAE5D,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,eAAe,EAAE;;AAExB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG;;IAG3B,qBAAqB,GAAA;QAC1B,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,IAAI,CAAC,cAAc,CAAC;AAC/E,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;YAC1B;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;;QAEF,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;;IAGvC,sBAAsB,GAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC;AACxE,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,IAAI,CAAC;;QAElE,IAAI,CAAC,eAAe,EAAE;;AAGjB,IAAA,sBAAsB,CAAC,cAAuB,EAAA;AACnD,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;;AAGpD,IAAA,YAAY,CAAC,OAAe,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,GAAG,OAAO;YAC9B;;AAEF,QAAA,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,OAAO,CAAC;;IAGrD,6BAA6B,GAAA;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,aAA4B,KAAI;AAC1F,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa;SACpC,CAAC,CACH;;IAGK,2BAA2B,GAAA;AACjC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7C,YAAA,IAAI,CAAC,2BAA2B;SACjC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,0BAA0B,CAAC,KAAI;AACxD,YAAA,MAAM,eAAe,GAAG,0BAA0B,CAAC,IAAI,CACrD,WAAW,IAAI,WAAW,CAAC,cAAc,KAAK,UAAU,CACzD;AAED,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9B,YAAA,IAAI,eAAe,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC7C,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC;;SAEpE,CAAC,CACH;;IAGO,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,sBAAsB,EAAE,eAAe,EAAE;;+GA3IrC,yCAAyC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA6B,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAhC,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAhC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzC,yCAAyC,EAAA,QAAA,EAAA,6CAAA,EAAA,SAAA,EAHzC,CAAC,oBAAoB,CAAC,4HAOK,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE3C,4CAA4C,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrDzD,qjLAoJA,EAAA,MAAA,EAAA,CAAA,s7CAAA,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,EAAAD,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,gCAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sCAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gDAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4CAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kCAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAvC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAwC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDrGa,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAPrD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6CAA6C,aAG5C,CAAC,oBAAoB,CAAC,EAChB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qjLAAA,EAAA,MAAA,EAAA,CAAA,s7CAAA,CAAA,EAAA;wMAOvC,iBAAiB,EAAA,CAAA;sBADxB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC;gBAG/C,sBAAsB,EAAA,CAAA;sBAD7B,SAAS;uBAAC,4CAA4C;;;AErDzD;;;;;;;;;;;;;;AAcG;AAEH,IAAK,aAIJ;AAJD,CAAA,UAAK,aAAa,EAAA;AAChB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAJI,aAAa,KAAb,aAAa,GAIjB,EAAA,CAAA,CAAA;AAED,IAAK,WAMJ;AAND,CAAA,UAAK,WAAW,EAAA;AACd,IAAA,WAAA,CAAA,gBAAA,CAAA,GAAA,eAAgC;AAChC,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EANI,WAAW,KAAX,WAAW,GAMf,EAAA,CAAA,CAAA;AAED,MAAM,KAAK,GAAG;AACZ,IAAA,WAAW,CAAC,OAAO;AACnB,IAAA,WAAW,CAAC,WAAW;AACvB,IAAA,WAAW,CAAC,WAAW;AACvB,IAAA,WAAW,CAAC,cAAc;AAC1B,IAAA,WAAW,CAAC,SAAS;CACtB;;ACpCD;;;;;;;;;;;;;;AAcG;MAUU,wBAAwB,CAAA;IAGnC,WACmB,CAAA,IAAgB,EAChB,aAA4B,EAAA;QAD5B,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;AAE9B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW;;AAGrE,IAAA,2BAA2B,CAAC,IAAc,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,yBAAA,CAA2B,EACrD,IAAI,CACL;;+GAdQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,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,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;;4FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACvBD;;;;;;;;;;;;;;AAcG;MASU,oCAAoC,CAAA;+GAApC,oCAAoC,EAAA,IAAA,EAAA,EAAA,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,4JCvBjD,q7BAuBA,EAAA,MAAA,EAAA,CAAA,w+BAAA,CAAA,EAAA,CAAA,CAAA;;4FDAa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBALhD,SAAS;+BACE,wCAAwC,EAAA,QAAA,EAAA,q7BAAA,EAAA,MAAA,EAAA,CAAA,w+BAAA,CAAA,EAAA;8BAKzC,YAAY,EAAA,CAAA;sBAApB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AE1BH;;;;;;;;;;;;;;AAcG;MA0BU,gCAAgC,CAAA;IA0D3C,WACmB,CAAA,eAAgC,EAChC,wBAAkD,EAClD,EAAe,EACf,WAAwB,EACxB,gBAAkC,EAAA;QAJlC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QACxB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QA9D1B,IAAI,CAAA,IAAA,GAAG,KAAK;AACX,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAW;AAE3C,QAAA,IAAA,CAAA,aAAa,GAAa,CAAC,OAAO,EAAE,MAAM,CAAC;AAGjC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;QAEhD,IAAW,CAAA,WAAA,GAAG,WAAW;QACzB,IAAa,CAAA,aAAA,GAAG,aAAa;QAC7B,IAAW,CAAA,WAAA,GAAG,IAAI,eAAe,CAAc,WAAW,CAAC,OAAO,CAAC;AACnE,QAAA,IAAA,CAAA,kBAAkB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC7E,GAAG,CAAC,CAAC,UAAuB,KAC1B,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,cAAc,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,CACnF,UAAU,CACX,CACF,CACF;AACe,QAAA,IAAA,CAAA,kBAAkB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC7E,GAAG,CACD,CAAC,UAAuB,KACtB,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CACvE,CACF;AACe,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC3E,GAAG,CAAC,CAAC,UAAuB,KAC1B,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC7F,CACF;QACe,IAAmB,CAAA,mBAAA,GAAwB,aAAa,CAAC;AACvE,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,UAAU;SAChB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,UAAU,KAAK,WAAW,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC;QACxE,IAAgB,CAAA,gBAAA,GAAoC,aAAa,CAAC;AAChF,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC;AACjD,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,qDAAqD,CAAC;AACpF,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM;AACzB,YAAA,IAAI,EAAE,SAAS;YACf,KAAK;YACL,OAAO;AACP,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC,CACJ;AACe,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QACxD,IAAa,CAAA,aAAA,GAAG,IAAI,eAAe,CAAgB,aAAa,CAAC,MAAM,CAAC;AAEjF,QAAA,IAAA,CAAA,IAAI,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,EAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7D,SAAA,CAAC;QAEM,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEP,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAoB,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AASlD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;;IAGrC,QAAQ,GAAA;QACb,MAAM,OAAO,GAA2B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE;YACZ;;QAGF,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAsB,KAAI;AACtE,YAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO;YAC1B,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;gBACrB;;YAGF,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE;AAC7C,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAC1B;;AAGF,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;SAC1B,CAAC,CACH;;IAGI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;QACjC,IAAI,CAAC,UAAU,EAAE;;AAGZ,IAAA,YAAY,CAAC,kBAA4B,EAAA;QAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE;;AAGZ,IAAA,WAAW,CAAC,UAAuB,EAAA;AACxC,QAAA,MAAM,SAAS,GAAW,KAAK,CAAC,SAAS,CAAC,CAAC,IAAiB,KAAK,IAAI,KAAK,UAAU,CAAC,GAAG,CAAC;AACzF,QAAA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;YACpB;;QAGF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;;AAGlC,IAAA,WAAW,CAAC,UAAuB,EAAA;AACxC,QAAA,MAAM,SAAS,GAAW,KAAK,CAAC,SAAS,CAAC,CAAC,IAAiB,KAAK,IAAI,KAAK,UAAU,CAAC,GAAG,CAAC;AACzF,QAAA,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,EAAE;YAC9B;;QAGF,IAAI,UAAU,KAAK,WAAW,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5D,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC;;QAGF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,WAAW,EAAE;YAChD;;QAGF,IAAI,CAAC,gBAAgB,EAAE;;AAGlB,IAAA,eAAe,CAAC,OAAgB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QAEvB,IAAI,CAAC,OAAO,EAAE;YACZ;;AAGF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG7B,IAAA,WAAW,CAAC,QAA8B,EAAA;AAChD,QAAA,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI;QAE3B,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,eAAe,EAAE;YACtB;;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAE/B,QAAA,MAAM,CAAC,SAAS,GAAG,MAAK;AACtB,YAAA,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE;AAC/C,YAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC9B;;YAGF,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC9B,SAAC;AAED,QAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;;AAGjB,IAAA,UAAU,CAAC,QAAkB,EAAA;AACnC,QAAA,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI;QAE3B,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B;;QAGF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC;AAClE,QAAA,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE;AACzB,QAAA,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGrB,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC;aACF,IAAI,CACH,SAAS,CAAC,CAAC,IAAuB,KAChC,IAAI,YAAY;cACZ,IAAI,CAAC,wBAAwB,CAAC,2BAA2B,CAAC,IAAI;AAChE,cAAE,IAAI,CAAC,eAAe,CAAC,qCAAqC,CACxD,IAAI,+BAA+B,CAAC,IAAI,CAAC,CAC1C,CACN,EACD,IAAI,CAAC,CAAC,CAAC;AAER,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;aAChD;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5B;AACF,SAAA,CAAC;;IAGE,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;;AAGpB,IAAA,iBAAiB,CAAC,MAAc,EAAA;AACtC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;;QAClB,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,KAAK;;AAEd,QAAA,OAAO,IAAI;;AAGL,IAAA,aAAa,CAAC,QAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,QAAQ,CAAC,OAAO,GAAG,IAAI;QACvB,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACnD,2DAA2D,CAC5D;QACD,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClD,0DAA0D,CAC3D;;IAGK,UAAU,GAAA;QAChB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,SAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;;+GA3O5B,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAuC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA3C,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,0ICxC7C,sgLAmJA,EAAA,MAAA,EAAA,CAAA,88DAAA,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,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,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,EAAAA,IAAA,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,EAAAC,IAAA,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,EAAAS,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,OAAA,EAAA,YAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2C,oCAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,SAAA,EAAA,OAAA,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,EAAA1C,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD3Ga,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;+BACE,mCAAmC,EAAA,eAAA,EAG5B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,sgLAAA,EAAA,MAAA,EAAA,CAAA,88DAAA,CAAA,EAAA;+MAGtC,IAAI,EAAA,CAAA;sBAAZ;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;AE1CH;;;;;;;;;;;;;;AAcG;MAeU,gCAAgC,CAAA;AA8B3C,IAAA,WAAA,CACmB,eAAgC,EAChC,EAAe,EACf,WAAwB,EAAA;QAFxB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAW,CAAA,WAAA,GAAX,WAAW;QAhCrB,IAAI,CAAA,IAAA,GAAG,KAAK;AACX,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA0B;AAE1D,QAAA,IAAA,CAAA,SAAS,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC1C,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC/C,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE;AACjD,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC;aACpC,CAAC;AACH,SAAA,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAClDC,KAAG,CAAC,CAAC,UAAmB,KAAI;YAC1B,MAAM,IAAI,GAA2B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;YAC/D,IAAI,CAAC,IAAI,EAAE;gBACT;;YAGF,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,MAAM,EAAE;gBACb;;YAEF,IAAI,CAAC,OAAO,EAAE;SACf,CAAC,CACH;AACe,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAClD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;QAOjE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;;AAGhD,IAAA,YAAY,CAAC,iBAA2B,EAAA;QAC7C,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,SAAS,EAAE;YAChB;;QAGF,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC7C,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;YACnB;;AAGF,QAAA,IAAI,CAAC;AACF,aAAA,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI;AACtC,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,4CAA4C,CAAC;AAChE,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,IAAI,CAAC,UAAU,EAAE;aAClB;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACnB,oBAAoB,EAAE,IAAI,CAAC,KAAK;oBAChC,uBAAuB,EAAE,KAAK,CAAC,KAAK;AACrC,iBAAA,CAAC;gBACF,IAAI,CAAC,SAAS,EAAE;aACjB;AACF,SAAA,CAAC;;IAGC,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGvB,UAAU,GAAA;QACf,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC7C,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;YACnB;;AAGF,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAChB;;QAGF,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAClF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGxB,SAAS,GAAA;QACf,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,SAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;;+GA7F5B,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,0IC7B7C,+uGAiGA,EAAA,MAAA,EAAA,CAAA,w1BAAA,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,EAAAG,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,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,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAI,IAAA,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,EAAAA,IAAA,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,EAAAF,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDpEa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;+BACE,mCAAmC,EAAA,eAAA,EAG5B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+uGAAA,EAAA,MAAA,EAAA,CAAA,w1BAAA,CAAA,EAAA;4IAGtC,IAAI,EAAA,CAAA;sBAAZ;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;AE/BH;;;;;;;;;;;;;;AAcG;AAgBH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;MAOvC,8BAA8B,CAAA;AAqCzC,IAAA,WAAA,CACmB,eAAgC,EAChC,WAAwB,EACxB,WAAwB,EACxB,MAAc,EAAA;QAHd,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAM,CAAA,MAAA,GAAN,MAAM;AAxClB,QAAA,IAAA,CAAA,UAAU,GAAe;AAC9B,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;SACT;AAEgB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AACzD,QAAA,IAAA,CAAA,SAAS,GAAqC,IAAI,CAAC,aAAa,CAAC,IAAI,CAC1E,SAAS,CAAC,MACR,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC;AACjD,YAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;AAC9B,YAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;AAC3B,SAAA,CAAC,CACH,EACD,GAAG,CAAC,CAAC,sBAAgD,KAAI;YACvD,IAAI,CAAC,UAAU,GAAG;gBAChB,GAAG,IAAI,CAAC,UAAU;gBAClB,cAAc,EAAE,sBAAsB,CAAC,aAAa;aACrD;YAED,OAAO,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAsC,MAAM;AACrF,gBAAA,GAAG,kBAAkB;gBACrB,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;AAC5E,aAAA,CAAC,CAAC;SACJ,CAAC,CACH;AAEM,QAAA,IAAA,CAAA,aAAa,GAAmB;AACrC,YAAA,EAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAC;AAC1E,YAAA,EAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAC;AAC3E,YAAA,EAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAC;SAC7E;AAEe,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACtD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAQpE,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;;AAGzD,IAAA,kBAAkB,CAAC,kBAA2B,EAAA;AACnD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjC,IAAI,CAAC,kBAAkB,EAAE;YACvB;;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;;AAGpB,IAAA,kBAAkB,CAAC,eAAuC,EAAA;AAC/D,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,eAAe,EAAE;YACpB;;AAGF,QAAA,IAAI,CAAC;aACF,gCAAgC,CAAC,eAAe;AAChD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,QAA0C,KAAI;AACxD,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AACrD,SAAC,CAAC;;AAGC,IAAA,iBAAiB,CAAC,IAAY,EAAA;QACnC,IAAI,CAAC,UAAU,GAAG,EAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAC;AAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGxB,IAAA,aAAa,CAAC,IAAY,EAAA;QAC/B,IAAI,CAAC,UAAU,GAAG,EAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAC;AAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGxB,IAAA,iBAAiB,CAAC,kBAAsC,EAAA;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;;IAG5E,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;+GAzFvB,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,MAAA,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,uECrC3C,0sEA8DA,EAAA,MAAA,EAAA,CAAA,goBAAA,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,EAAAE,IAAA,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,IAAA,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,EAAAJ,IAAA,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,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,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,gCAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gCAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA5C,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDzBa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,0sEAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;;;AEjC7C;;;;;;;;;;;;;;AAcG;MA2CU,4CAA4C,CAAA;AAWvD,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;;IAK3C,WACmB,CAAA,EAAe,EACf,oBAA0C,EAAA;QAD1C,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;AAhBtB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAO;AAEpC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC/C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAChD,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjD,SAAA,CAAC;;IAaK,QAAQ,GAAA;QACb,IAAI,CAAC,oBAAoB,EAAE;;IAGtB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE;;IAGhC,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAEtB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAChC,SAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;;IAGhC,aAAa,GAAA;QAClB,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,IAAI,CAAC;AACF,aAAA,OAAO,CACN;AACE,YAAA,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;AACrB,YAAA,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK;AAC/B,YAAA,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,UAAU,CAAC,OAAO;AACzB,SAAA,EACD,IAAI,CAAC,OAAO,CAAC,GAAG;aAEjB,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACrB,IAAI,CAAC,UAAU,EAAE;AACnB,SAAC,CAAC;;IAGE,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;;QAGvD,IAAI,CAAC,MAAM,EAAE;;IAGP,oBAAoB,GAAA;QAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;YACxD,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,SAAC,CAAC;;IAGI,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;;+GA7EjB,4CAA4C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4CAA4C,8LAb5C,CAAC,mBAAmB,CAAC,EC5ClC,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,s4EAkEA,8yBDlBI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1B,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,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,ytBACX,8BAA8B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC9B,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,WAAW,6WACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGH,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAlBxD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kDAAkD,EAG7C,aAAA,EAAA,iBAAiB,CAAC,IAAI,aAC1B,CAAC,mBAAmB,CAAC,EAAA,eAAA,EACf,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,8BAA8B;wBAC9B,mBAAmB;wBACnB,WAAW;wBACX,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,s4EAAA,EAAA,MAAA,EAAA,CAAA,uvBAAA,CAAA,EAAA;kHAGe,UAAU,EAAA,CAAA;sBAAzB;gBACe,OAAO,EAAA,CAAA;sBAAtB;gBACgB,SAAS,EAAA,CAAA;sBAAzB;;;AE5DH;;;;;;;;;;;;;;AAcG;MAuBU,gCAAgC,CAAA;IAM3C,WACmB,CAAA,GAAsB,EACtB,mBAAwC,EAAA;QADxC,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;AAJrB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAW;;IAOzD,QAAQ,GAAA;QACb,IAAI,CAAC,eAAe,EAAE;;IAGhB,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE;AACxD,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ;AAC9E,QAAA,IAAI,CAAC,iBAAiB;YAAE;AAExB,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAc,KAC1D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CACnC;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;+GA3Bf,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA6C,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EACQ,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,ECtCrE,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gsBAiBA,2CDkBY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAEX,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAR5C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,EAE7B,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,gsBAAA,EAAA;qHAIN,IAAI,EAAA,CAAA;sBADpB,SAAS;uBAAC,iBAAiB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAC;gBAGnD,iBAAiB,EAAA,CAAA;sBAAjC;;;AEzCH;;;;;;;;;;;;;;AAcG;MAgBU,8BAA8B,CAAA;AAIzC,IAAA,WAAA,CAA6B,mBAAwC,EAAA;QAAxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QAHhC,IAAW,CAAA,WAAA,GAAG,WAAW;AACzB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW;;AAI3D,IAAA,eAAe,CAAC,KAA2B,EAAA;QAChD,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;;+GAP5C,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,mBAAA,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,4FC9B3C,y1DAmDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvBY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2FAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/C,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEzC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,EAE3B,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,y1DAAA,EAAA;;;AE5BvD;;;;;;;;;;;;;;AAcG;MAiBU,6BAA6B,CAAA;AAIxC,IAAA,WAAA,CAA6B,mBAAwC,EAAA;QAAxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QAHhC,IAAgB,CAAA,gBAAA,GAAG,iBAAiB;AACpC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc;;AAIjE,IAAA,eAAe,CAAC,KAAmC,EAAA;AACxD,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE;YACxE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAChD,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;QAGhD,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;;+GAZ/C,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA+C,mBAAA,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,40CAmCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2FAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/C,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAEzC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBARzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,mBAE1B,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA,IAAI,WACP,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,40CAAA,EAAA;;;AE7BvD;;;;;;;;;;;;;;AAcG;MAeU,8BAA8B,CAAA;AAQzC,IAAA,WAAA,CAA6B,mBAAwC,EAAA;QAAxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;AAPhC,QAAA,IAAA,CAAA,mBAAmB,GAAmB,QAAQ,CAAC,MAC7D,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,IAAI,KAAK,cAAc,CAAC;AACjE,eAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;cACnE,CAAC,CACN;AACe,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW;;AAI3D,IAAA,eAAe,CAAC,KAA+B,EAAA;QACpD,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;;+GAX5C,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA+C,mBAAA,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,4FC7B3C,kzFAoFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzDY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2FAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/C,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEzC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,EAE3B,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,kzFAAA,EAAA;;;AE3BvD;;;;;;;;;;;;;;AAcG;AAMI,MAAM,YAAY,GAAG;IAC1B,gCAAgC;IAChC,8BAA8B;IAC9B,6BAA6B;IAC7B,8BAA8B;CAC/B;;ACzBD;;;;;;;;;;;;;;AAcG;MAsCU,sCAAsC,CAAA;IAGjD,IAAoB,QAAQ,CAAC,KAAc,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,KAAK;YAAE;QAEZ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC;;AAEhD,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;;IAkFvB,WACmB,CAAA,gBAAkC,EAClC,mBAAwC,EAAA;QADxC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QA7FtB,IAAI,CAAA,IAAA,GAAG,KAAK;AAWX,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAO;QAErC,IAAiB,CAAA,iBAAA,GAAG,gBAAgB;AACnC,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAChD,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,IAAI,IAAI,EAAE;YAChF,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,EAAE;YAClE,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,EAAE;YAElE,OAAO;AACL,gBAAA,CAAC,gBAAgB,CAAC,IAAI,GAAG;sBACrB,CAA6B,0BAAA,EAAA,kBAAkB,CAAQ,MAAA;AACzD,sBAAE,EAAE;gBACN,CAAC,gBAAgB,CAAC,KAAK,GAAG,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE;gBAClE,CAAC,gBAAgB,CAAC,KAAK,GAAG,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE;aACnE;AACH,SAAC,CAAC;QAEc,IAAM,CAAA,MAAA,GAAuB,aAAa,CAAC;AACzD,YAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACnC,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;AAC/C,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC,KAAI;YAClC,OAAO;AACL,gBAAA;oBACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,uCAAuC,CAAC;AAC7E,oBAAA,IAAI,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI;AAC5C,wBAAA,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;qBACtF,CAAC;AACF,oBAAA,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,IAAI;AAC5D,iBAAA;AACD,gBAAA;oBACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wCAAwC,CAAC;AAC9E,oBAAA,IAAI,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI;AAC7C,wBAAA,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;qBACvF,CAAC;AACF,oBAAA,QAAQ,EAAE,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBACjD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;AACnD,iBAAA;AACD,gBAAA;oBACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wCAAwC,CAAC;AAC9E,oBAAA,IAAI,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI;AAC7C,wBAAA,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;qBACvF,CAAC;AACF,oBAAA,QAAQ,EAAE,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC;oBAClD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;AACnD,iBAAA;AACD,gBAAA;oBACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,0CAA0C,CAAC;AAChF,oBAAA,QAAQ,EACN,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvC,wBAAA,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACxC,wBAAA,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC;oBAC1C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE;AACrD,iBAAA;aACF;SACF,CAAC,CACH;AAEgB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAU,KAAK,CAAC;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAmB,gBAAgB,CAAC,IAAI,CAAC;QAC7D,IAAkB,CAAA,kBAAA,GAAoB,QAAQ,CAC5D,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC,KAAK,CAC3F;AACM,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,QAAQ,IAAI,CAAC,WAAW,EAAE;gBACxB,KAAK,gBAAgB,CAAC,IAAI;AACxB,oBAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE;gBACnD,KAAK,gBAAgB,CAAC,KAAK;AACzB,oBAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;gBAChD,KAAK,gBAAgB,CAAC,KAAK;oBACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,IAAI;gBACxD,KAAK,gBAAgB,CAAC,OAAO;AAC3B,oBAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACvF,gBAAA;AACE,oBAAA,OAAO,IAAI;;AAEjB,SAAC,CAAC;;AAOK,IAAA,cAAc,CAAC,KAA4C,EAAA;QAChE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;;IAG5B,iBAAiB,GAAA;QACtB,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC,OAAO,EAAE;AACnD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC;YAC9D,IAAI,CAAC,WAAW,EAAE;YAClB;;AAGF,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAsB,KAAK,IAAI,GAAG,CAAC,CAAC;;IAGxD,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAsB,KAAK,IAAI,GAAG,CAAC,CAAC;;IAGxD,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE;;AAGb,IAAA,mBAAmB,CAAC,KAAc,EAAA;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;;IAG3B,WAAW,GAAA;QACjB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC7C,SAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;;+GAhI5B,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA2C,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtC,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpDnD,yiHA2GA,EAAA,MAAA,EAAA,CAAA,m7DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/DI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhD,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAgD,gCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAIH,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAhBlD,SAAS;+BACE,0CAA0C,EAAA,eAAA,EAGnC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,uBAAuB;wBACvB,WAAW;wBACX,YAAY;AACZ,wBAAA,GAAG,YAAY;AAChB,qBAAA,EAAA,QAAA,EAAA,yiHAAA,EAAA,MAAA,EAAA,CAAA,m7DAAA,CAAA,EAAA;oHAGe,IAAI,EAAA,CAAA;sBAAnB;gBAEmB,QAAQ,EAAA,CAAA;sBAA3B;gBASgB,UAAU,EAAA,CAAA;sBAA1B;;;AEhEH;;;;;;;;;;;;;;AAcG;MA6CU,uCAAuC,CAAA;IAIlD,IAAoB,gBAAgB,CAAC,KAAqB,EAAA;AACxD,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC;AACzD,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;;AAErC,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,iBAAiB;;AA6E/B,IAAA,WAAA,CACmB,mBAAwC,EACxC,gBAAkC,EAClC,0BAAsD,EACtD,mBAAwC,EAAA;QAHxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;QAC1B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;AA9EZ,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;AAE1C,QAAA,IAAA,CAAA,MAAM,GAAmB;AACvC,YAAA;AACE,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,iBAAiB;gBACxB,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,KAAK,EAAE,kCAAkC;gBACzC,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,eAAe;gBACtB,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,kBAAkB;AACvB,gBAAA,KAAK,EAAE,mCAAmC;gBAC1C,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,cAAc;AACnB,gBAAA,KAAK,EAAE,0CAA0C;gBACjD,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC3B,aAAA;SACF;AAEe,QAAA,IAAA,CAAA,YAAY,GAAiB;AAC3C,YAAA;AACE,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,qBAAqB;gBAC5B,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;AAEgB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAmB,EAAE,CAAC;QACpD,IAAM,CAAA,MAAA,GAAiC,aAAa,CAAC;AACnE,YAAA,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KACV,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK;AACjB,YAAA,GAAG,IAAI;AACP,YAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxF,YAAA,IAAI,EAAE;AACJ,gBAAA;AACE,oBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,0BAAA,EAA6B,IAAI,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC;AACtF,oBAAA,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,iBAAA;AACF,aAAA;SACF,CAAC,CAAC,CACJ,CACF;AAEe,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC9C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACtD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AAErC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC;;AAW5C,IAAA,UAAU,CAAC,SAAqB,EAAA;QACrC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CACtC,SAAS,CAAC,YAAY,GAAG,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,OAAO,CACzE;QACD,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,GAAG,CACzC,iBAAiB,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAC/E;QACD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;QAChE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3C,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;QACrD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AAC7D,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGxB,IAAA,eAAe,CAAC,SAAqB,EAAA;AAC1C,QAAA,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC;AAC3C,QAAA,cAAc,CAAC,GAAG,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;;IAG1B,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGxB,IAAA,eAAe,CAAC,SAAiB,EAAA;AACtC,QAAA,IAAI,CAAC;AACF,aAAA,aAAa,CAAC;YACb,GAAG,IAAI,CAAC,gBAAgB;AACxB,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC;SAClF;AACA,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACzB,SAAC,CAAC;;IAGC,YAAY,CAAC,YAA6B,EAAE,eAA6B,EAAA;AAC9E,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;AAEtC,QAAA,IAAI,CAAC,YAAY;YAAE;AAEnB,QAAA,IAAI,CAAC;AACF,aAAA,aAAa,CAAC;YACb,kBAAkB,EAAE,IAAI,CAAC,sBAAsB;YAC/C,GAAG,EAAE,IAAI,CAAC,YAAY;AACtB,YAAA,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC;kBACpB,eAAe,CAAC,GAAG,CAAC,CAAC,MAAuB,KAC1C,MAAM,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG,GAAG,YAAY,GAAG,MAAM;AAE3D,kBAAE;AACE,oBAAA,GAAG,eAAe;AAClB,oBAAA;AACE,wBAAA,GAAG,YAAY;AACf,wBAAA,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;AAC/E,qBAAA;AACF,iBAAA;SACN;AACA,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACzB,SAAC,CAAC;;AAGC,IAAA,gBAAgB,CAAC,OAAqB,EAAA;AAC3C,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AAElC,QAAA,IAAI,CAAC;AACF,aAAA,aAAa,CAAC;YACb,GAAG,IAAI,CAAC,gBAAgB;YACxB,OAAO;SACR;AACA,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACzB,SAAC,CAAC;;AAGE,IAAA,YAAY,CAAC,SAAc,EAAA;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACtC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG1B,IAAA,sBAAsB,CAAC,KAAa,EAAA;QAC1C,QAAQ,KAAK;AACX,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,uCAAuC;AAChD,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,wCAAwC;AACjD,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,uCAAuC;AAChD,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,2CAA2C;AACpD,YAAA;AACE,gBAAA,OAAO,GAAG;;;+GAjML,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/C,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAiD,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAAzC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uCAAuC,gRC3DpD,m3EAmEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlBI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,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,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,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,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,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,kMACZ,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,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,UAAA,EAAA,IAAA,EACV,UAAU,EACV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sCAAsC,2IACtC,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,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,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGd,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAhBnD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2CAA2C,mBAEpC,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,gBAAgB;wBAChB,YAAY;wBACZ,UAAU;wBACV,UAAU;wBACV,sCAAsC;wBACtC,uBAAuB;AACxB,qBAAA,EAAA,QAAA,EAAA,m3EAAA,EAAA;8LAGe,sBAAsB,EAAA,CAAA;sBAArC;gBACe,YAAY,EAAA,CAAA;sBAA3B;gBAEmB,gBAAgB,EAAA,CAAA;sBAAnC;gBAYyB,WAAW,EAAA,CAAA;sBAApC;;;AE3EH;;;;;;;;;;;;;;AAcG;MAkDU,2CAA2C,CAAA;IAItD,IAAoB,gBAAgB,CAAC,KAAqB,EAAA;AACxD,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACjB,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC5B,YAAA,QAAQ,EAAE,MAAM;AACjB,SAAA,CAAC;;IA0BJ,WACmB,CAAA,WAAwB,EACxB,mBAAwC,EACxC,gBAAkC,EAClC,uBAAgD,EAChD,0BAAsD,EAAA;QAJtD,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;AA5BnB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAA8B;AAClE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;AAC3C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAW;AAClD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;AAE1C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAqB,IAAI,CAAC;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC;QAEnC,IAAiB,CAAA,iBAAA,GAAwB,YAAY,CACnE,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAC9C;AACe,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE1D,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAwB,IAAI,CAAC;QAE5D,IAAW,CAAA,WAAA,GAAG,KAAK;QACnB,IAAe,CAAA,eAAA,GAAG,KAAK;AACd,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC;AACnC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAU,KAAK,CAAC;QAC5C,IAAkB,CAAA,kBAAA,GAAoB,QAAQ,CAC5D,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAC/E;QASC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;IAGzC,eAAe,GAAA;QACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;;IAGhD,cAAc,GAAA;QACnB,MAAM,UAAU,GACd,+BAA+B;AAC/B,YAAA,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,qBAAqB,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC;QAC9E,IAAI,CAAC,qBAAqB,EAAE;YAC1B;;AAGF,QAAA,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;AACtD,QAAA,qBAAqB,CAAC,YAAY,CAChC,UAAU,EACV,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAA,aAAA,CAAe,CAC5D;QACD,qBAAqB,CAAC,KAAK,EAAE;;IAGxB,WAAW,GAAA;QAChB,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGzB,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAyB,MAAM;AACpD,YAAA,GAAG,KAAK;YACR,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC9C,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGxB,IAAI,GAAA;AACT,QAAA,MAAM,MAAM,GAA0B,IAAI,CAAC,aAAa,EAAE;AAE1D,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,IAAI,CAAC;aACF,aAAa,CAAC,MAAM;AACpB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACxC,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,CAAC;oBACzD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,0CAA0C,CAAC;AAClF,oBAAA,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,gBAAgB,CAAC,oBAAoB;AAChD,iBAAA,CAAC;gBACF,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AACxD,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;aAC9B;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACxC,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC;oBACvD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wCAAwC,CAAC;AAChF,oBAAA,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,gBAAgB,CAAC,oBAAoB;AAChD,iBAAA,CAAC;aACH;AACF,SAAA,CAAC;;IAGC,aAAa,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAClD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1B;;QAGF,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGlD,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGpB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGhC,IAAA,YAAY,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGrB,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB;;AAGF,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAE5B,MAAM,YAAY,GAAmB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACtD,QAAA,MAAM,gBAAgB,GAAa,YAAY,CAAC,OAAO,CAAC,GAAG,CACzD,CAAC,MAAuB,KAAK,MAAM,CAAC,GAAG,CACxC;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CACzB,YAAY,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG;AAC7C,YAAA,YAAY,CAAC,kBAAkB,KAAK,IAAI,CAAC,iBAAiB,CAAC,kBAAkB;YAC7E,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,CAC7D;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AAE9C,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;AAGnC,IAAA,iBAAiB,CAAC,OAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO;AAC9B,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAEvC,QAAA,IAAI,OAAO;YAAE;AAEb,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;+GA3Kf,2CAA2C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAkD,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2CAA2C,8SAF3C,CAAC,mBAAmB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9DlC,m9FAmFA,ED5BI,MAAA,EAAA,CAAA,orBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApD,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2FACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,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,UAAA,EAAA,IAAA,EAAA,UAAU,8NACV,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,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,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAId,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBAhBvD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gDAAgD,cAG9C,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,YAAY;wBACZ,YAAY;wBACZ,UAAU;wBACV,uBAAuB;qBACxB,EACU,SAAA,EAAA,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,m9FAAA,EAAA,MAAA,EAAA,CAAA,orBAAA,CAAA,EAAA;8NAGS,mBAAmB,EAAA,CAAA;sBAA3D,SAAS;uBAAC,qBAAqB;gBAGZ,gBAAgB,EAAA,CAAA;sBAAnC;gBASyB,iBAAiB,EAAA,CAAA;sBAA1C;gBACyB,aAAa,EAAA,CAAA;sBAAtC;gBACyB,oBAAoB,EAAA,CAAA;sBAA7C;gBACyB,WAAW,EAAA,CAAA;sBAApC;;;AEhFH;;;;;;;;;;;;;;AAcG;AAqDG,MAAO,mCACX,SAAQ,uBAAuB,CAAA;AAyD/B,IAAA,WAAA,CACmB,iBAAoC,EACpC,WAAwB,EACxB,gBAAkC,EAClC,KAAqB,EACrB,oBAA0C,EAC1C,0BAAsD,EACtD,gBAAkC,EAClC,iBAAoC,EACpC,uBAAgD,EAAA;AAEjE,QAAA,KAAK,EAAE;QAVU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACpB,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;QAC1B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QA/D1B,IAAuB,CAAA,uBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAClF,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAChC,MAAM,CAAC,sBAAsB,IAAI,CAAC,CAAC,sBAAsB,CAAC,EAC1DC,KAAG,CAAC,sBAAsB,IACxB,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,CACtE,CACF;AAEe,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACxE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,EAC/B,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,CACvC;AAEgB,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAC5D,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAC7D,IAAqB,CAAA,qBAAA,GAA2B,aAAa,CAAC;AAC5E,YAAA,IAAI,CAAC,aAAa;AAClB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,yBAAyB;SAC/B,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EACjEA,KAAG,CAAC,OAAO,IAAG;AACZ,YAAA,MAAM,KAAK,GACT,OAAO,CAAC,IAAI;gBACZ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAgC,6BAAA,EAAA,OAAO,CAAC,GAAG,CAAE,CAAA,CAAC;AAC9E,YAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/C,YAAA,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CACzC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kCAAkC,EAAE;AAChE,gBAAA,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,GAAG;AACpC,gBAAA,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;sBAClBoD,QAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,mBAAmB;AACvD,sBAAE,GAAG;gBACP,GAAG,EAAE,OAAO,CAAC,GAAG;AACjB,aAAA,CAAC,CACH;SACF,CAAC,CACH;QACe,IAAiB,CAAA,iBAAA,GAAG,aAAa,CAAC;AAChD,YAAA,IAAI,CAAC,uBAAuB;AAC5B,YAAA,IAAI,CAAC,aAAa;AAClB,YAAA,IAAI,CAAC,yBAAyB;SAC/B,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,KAC3C,IAAI,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAC5F,CACF;QAEe,IAAe,CAAA,eAAA,GAAG,eAAe;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAyB,eAAe,CAAC,MAAM,CAAC;AAClE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAyB,eAAe,CAAC,MAAM,CAAC;AACtE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY;QAE1D,IAAW,CAAA,WAAA,GAA2B,IAAI;;IAgB3C,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;IAG/B,eAAe,GAAA;QACpB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,EAAE;;IAGhB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;AAC7C,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;AAG/B,IAAA,oBAAoB,CAAC,GAAoB,EAAA;QAC9C,IAAI,IAAI,CAAC,cAAc,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE;AACnD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE;YACtB;;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGtB,aAAa,GAAA;QAClB,IAAI,CAAC,sBAAsB,EAAE;;AAGxB,IAAA,sBAAsB,CAAC,YAAqB,EAAA;AACjD,QAAA,IAAI,CAAC,cAAc,GAAG,YAAY;;IAG5B,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGlC,gBAAgB,GAAA;QACrB,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,eAAe,EAAE;AAC/C,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGpC,IAAA,mBAAmB,CAAC,KAAiC,EAAA;AAC1D,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW;YAAE;AAExB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;AAGnB,IAAA,mBAAmB,CAAC,aAAsB,EAAA;QAC/C,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,eAAe,EAAE;YACtB;;QAGF,IAAI,CAAC,cAAc,EAAE;;IAGb,gBAAgB,GAAA;QACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;;IAG5B,iBAAiB,GAAA;QACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;;IAGhC,eAAe,GAAA;QACvB,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGjD,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,sBAAsB,IAAG;AAC9D,YAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;AACxC,gBAAA,KAAK,EAAE,CAAC,CAA+B,4BAAA,EAAA,sBAAsB,EAAE,CAAC;AAChE,gBAAA,OAAO,EAAE,sBAAsB;gBAC/B,IAAI,EAAE,CAA+B,4BAAA,EAAA,sBAAsB,CAAE,CAAA;AAC9D,aAAA,CAAC;AACJ,SAAC,CAAC;;+GApJO,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlD,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAwD,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAAvD,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,0HCnEhD,sgFAwEA,EAAA,MAAA,EAAA,CAAA,wqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhBI,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,4FACf,uCAAuC,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,cAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvC,4CAA4C,EAC5C,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2CAA2C,gNAC3C,iCAAiC,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArD,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,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,UAAA,EAAA,IAAA,EAAA,UAAU,8NACV,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGD,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAlB/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yCAAyC,cAGvC,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,uCAAuC;wBACvC,4CAA4C;wBAC5C,2CAA2C;wBAC3C,iCAAiC;wBACjC,YAAY;wBACZ,UAAU;wBACV,UAAU;AACX,qBAAA,EAAA,QAAA,EAAA,sgFAAA,EAAA,MAAA,EAAA,CAAA,wqBAAA,CAAA,EAAA;;;AEjEH;;;;;;;;;;;;;;AAcG;AAUH,MAAM,MAAM,GAAW;AACrB,IAAA;AACE,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,SAAS,EAAE,8BAA8B;QACzC,WAAW,EAAE,CAAC,gBAAgB,CAAC;QAC/B,IAAI,EAAE,EAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAC;AAC/C,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,kDAAkD;AACxD,QAAA,SAAS,EAAE,mCAAmC;QAC9C,WAAW,EAAE,CAAC,gBAAgB,CAAC;QAC/B,aAAa,EAAE,CAAC,mBAAmB,CAAC;AACpC,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,CAAC,UAAU,CAAC;AACnB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,kBAAkB,EAAE,IAAI;AACzB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,kCAAkC;AACxC,QAAA,SAAS,EAAE,yCAAyC;QACpD,WAAW,EAAE,CAAC,gBAAgB,CAAC;QAC/B,aAAa,EAAE,CAAC,mBAAmB,CAAC;AACpC,QAAA,IAAI,EAAE,EAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,IAAI,EAAC;AAC7E,KAAA;CACF;MAOY,8BAA8B,CAAA;+GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA9B,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,8BAA8B,wCAH/B,YAAY,CAAA,EAAA,CAAA,CAAA;gHAGX,8BAA8B,EAAA,OAAA,EAAA,CAJ/B,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACvC,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,EAAE;AACjB,iBAAA;;;ACxDD;;;;;;;;;;;;;;AAcG;MAqJU,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,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,uBAAuB,iBA1EhC,8BAA8B;YAC9B,gCAAgC;YAChC,sCAAsC;YACtC,qCAAqC;YACrC,gCAAgC;YAChC,sCAAsC;YACtC,yCAAyC;YACzC,kCAAkC;YAClC,qCAAqC;YACrC,8BAA8B;YAC9B,qCAAqC;YACrC,gBAAgB;YAChB,sCAAsC;YACtC,gDAAgD;YAChD,4CAA4C;YAC5C,mCAAmC;YACnC,oCAAoC;YACpC,kCAAkC;YAClC,qCAAqC;AACrC,YAAA,gCAAgC,aAGhC,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,UAAU;YACV,8BAA8B;YAC9B,WAAW;YACX,eAAe;YACfuD,aAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,yBAAyB;YACzB,eAAe;YACfC,cAAY;YACZ,aAAa;YACbC,aAAW;YACXD,cAAY;YACZ,UAAU;YACV,kBAAkB;YAClB,YAAY;YACZ,UAAU;YACVE,WAAiB;YACjBC,WAAiB;YACjB,mBAAmB;YACnB,cAAc;YACd,cAAc;YACd,iBAAiB;YACjB,sBAAsB;YACtB,aAAa;YACb,UAAU;YACV,uBAAuB;YACvB,WAAW;YACX,8BAA8B;YAC9B,gBAAgB;YAChB,cAAc;YACd,iCAAiC;YACjC,YAAY;YACZ,uCAAuC;YACvC,kBAAkB;YAClB,YAAY;YACZ,gBAAgB;YAChB,UAAU;YACV,SAAS;YACT,kBAAkB;YAClB,iBAAiB;YACjB,uBAAuB;YACvB,YAAY;YACZ,aAAa;YACb,uCAAuC;YACvC,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAIjB,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,uBAAuB,EAFvB,SAAA,EAAA,CAAC,oBAAoB,CAAC,YAlD/B,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,UAAU;YACV,8BAA8B;YAC9B,WAAW;YACX,eAAe;YACfJ,aAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,yBAAyB;YACzB,eAAe;YACfC,cAAY;YACZ,aAAa;YACbC,aAAW;YACXD,cAAY;YACZ,UAAU;YACV,kBAAkB;YAClB,YAAY;YACZ,UAAU;YACVE,WAAiB;YACjBC,WAAiB;YACjB,mBAAmB;YACnB,cAAc;YACd,cAAc;YACd,iBAAiB;YACjB,sBAAsB;YACtB,aAAa;YACb,UAAU;YACV,uBAAuB;YACvB,WAAW;YACX,8BAA8B;YAC9B,gBAAgB;YAChB,cAAc;YACd,iCAAiC;YACjC,YAAY;YACZ,uCAAuC;YACvC,kBAAkB;YAClB,YAAY;YACZ,gBAAgB;YAChB,UAAU;YACV,SAAS;YACT,kBAAkB;YAClB,iBAAiB;YACjB,uBAAuB;YACvB,YAAY;YACZ,aAAa;YACb,uCAAuC;YACvC,0BAA0B,CAAA,EAAA,CAAA,CAAA;;4FAIjB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA5EnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,8BAA8B;wBAC9B,gCAAgC;wBAChC,sCAAsC;wBACtC,qCAAqC;wBACrC,gCAAgC;wBAChC,sCAAsC;wBACtC,yCAAyC;wBACzC,kCAAkC;wBAClC,qCAAqC;wBACrC,8BAA8B;wBAC9B,qCAAqC;wBACrC,gBAAgB;wBAChB,sCAAsC;wBACtC,gDAAgD;wBAChD,4CAA4C;wBAC5C,mCAAmC;wBACnC,oCAAoC;wBACpC,kCAAkC;wBAClC,qCAAqC;wBACrC,gCAAgC;AACjC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,UAAU;wBACV,8BAA8B;wBAC9B,WAAW;wBACX,eAAe;wBACfJ,aAAW;wBACX,YAAY;wBACZ,gBAAgB;wBAChB,yBAAyB;wBACzB,eAAe;wBACfC,cAAY;wBACZ,aAAa;wBACbC,aAAW;wBACXD,cAAY;wBACZ,UAAU;wBACV,kBAAkB;wBAClB,YAAY;wBACZ,UAAU;wBACVE,WAAiB;wBACjBC,WAAiB;wBACjB,mBAAmB;wBACnB,cAAc;wBACd,cAAc;wBACd,iBAAiB;wBACjB,sBAAsB;wBACtB,aAAa;wBACb,UAAU;wBACV,uBAAuB;wBACvB,WAAW;wBACX,8BAA8B;wBAC9B,gBAAgB;wBAChB,cAAc;wBACd,iCAAiC;wBACjC,YAAY;wBACZ,uCAAuC;wBACvC,kBAAkB;wBAClB,YAAY;wBACZ,gBAAgB;wBAChB,UAAU;wBACV,SAAS;wBACT,kBAAkB;wBAClB,iBAAiB;wBACjB,uBAAuB;wBACvB,YAAY;wBACZ,aAAa;wBACb,uCAAuC;wBACvC,0BAA0B;AAC3B,qBAAA;oBACD,SAAS,EAAE,CAAC,oBAAoB,CAAC;AAClC,iBAAA;;;AClKD;;;;;;;;;;;;;;AAcG;AAEH;;AAEG;;AClBH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"valtimo-dossier-management.mjs","sources":["../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-assignee/dossier-management-assignee.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-assignee/dossier-management-assignee.component.html","../../../../projects/valtimo/dossier-management/src/lib/services/dossier-detail.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/dossier-export.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/tab-management.service.ts","../../../../projects/valtimo/dossier-management/src/lib/models/tab.enum.ts","../../../../projects/valtimo/dossier-management/src/lib/services/tab.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/widget-json-editor.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/widget-tab-management.service.ts","../../../../projects/valtimo/dossier-management/src/lib/models/list-column.model.ts","../../../../projects/valtimo/dossier-management/src/lib/models/status.model.ts","../../../../projects/valtimo/dossier-management/src/lib/models/widget-content.model.ts","../../../../projects/valtimo/dossier-management/src/lib/models/widget-editor.model.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/process-selector/dossier-management-widget-process-selector.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/process-selector/dossier-management-widget-process-selector.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-configurators/index.ts","../../../../projects/valtimo/dossier-management/src/lib/models/widget-wizard.model.ts","../../../../projects/valtimo/dossier-management/src/lib/models/index.ts","../../../../projects/valtimo/dossier-management/src/lib/services/widget-wizard.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/widget-fields.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/index.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail/dossier-management-detail.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail/dossier-management-detail.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/tab-form/tab-form.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/tab-form/tab-form.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-tabs.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-tabs.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-processes/dossier-management-processes.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-processes/dossier-management-processes.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-statuses/dossier-management-statuses.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-statuses/dossier-management-statuses.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.constants.ts","../../../../projects/valtimo/dossier-management/src/lib/services/dossier-management.service.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-create/dossier-management-create.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-create/dossier-management-create.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list/dossier-management-list.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list/dossier-management-list.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/steps/index.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.html","../../../../projects/valtimo/dossier-management/src/lib/dossier-management-routing.module.ts","../../../../projects/valtimo/dossier-management/src/lib/dossier-management.module.ts","../../../../projects/valtimo/dossier-management/src/public-api.ts","../../../../projects/valtimo/dossier-management/src/valtimo-dossier-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 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 {CaseSettings, DocumentService} from '@valtimo/document';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dossier-management-assignee',\n templateUrl: './dossier-management-assignee.component.html',\n styleUrls: ['./dossier-management-assignee.component.css'],\n})\nexport class DossierManagementAssigneeComponent {\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || '')\n );\n\n readonly currentValue$: Observable<CaseSettings> = this._refresh$.pipe(\n switchMap(() => this.documentDefinitionName$),\n switchMap(documentDefinitionName =>\n this.documentService.getCaseSettingsForManagement(documentDefinitionName)\n ),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private route: ActivatedRoute\n ) {\n this.disabled$ = new BehaviorSubject<boolean>(false);\n }\n\n updateCaseSettings(caseSettings: CaseSettings, documentDefinitionName: string): void {\n this.disableInput();\n\n this.documentService\n .patchCaseSettingsForManagement(documentDefinitionName, caseSettings)\n .subscribe(\n () => {\n this.enableInput();\n this.refreshSettings();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n disableInput(): void {\n this.disabled$.next(true);\n }\n\n enableInput(): void {\n this.disabled$.next(false);\n }\n\n private refreshSettings(): void {\n this._refresh$.next(null);\n }\n\n toggleAssignee(currentSettings: CaseSettings, documentDefinitionName: string) {\n this.updateCaseSettings(\n {\n canHaveAssignee: !currentSettings?.canHaveAssignee,\n autoAssignTasks: currentSettings.autoAssignTasks,\n },\n documentDefinitionName\n );\n }\n\n toggleTaskAssignment(currentSettings: CaseSettings, documentDefinitionName: string) {\n this.updateCaseSettings(\n {\n canHaveAssignee: currentSettings?.canHaveAssignee,\n autoAssignTasks: !currentSettings.autoAssignTasks,\n },\n documentDefinitionName\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<h2 class=\"mb-4\">{{ 'dossierManagement.toggleAssignee.title' | translate }}</h2>\n\n<ng-container\n *ngIf=\"{\n currentValue: currentValue$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n loading: loading$ | async,\n disabled: disabled$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs?.currentValue?.canHaveAssignee\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleAssignee(obs?.currentValue, obs.documentDefinitionName)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'dossierManagement.toggleAssignee.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n <ng-container *ngIf=\"obs?.currentValue?.canHaveAssignee\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs?.currentValue?.autoAssignTasks\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleTaskAssignment(obs?.currentValue, obs?.documentDefinitionName)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'dossierManagement.toggleAutoAssignTasks.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <valtimo-spinner></valtimo-spinner>\n</ng-template>\n","/*\n * Copyright 2015-2024 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, OnDestroy} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {DocumentDefinition, DocumentService} from '@valtimo/document';\nimport {EditorModel, PageTitleService} from '@valtimo/components';\n\n@Injectable()\nexport class DossierDetailService implements OnDestroy {\n private readonly _loadingDocumentDefinition$ = new BehaviorSubject<boolean>(true);\n private readonly _previousSelectedVersionNumber$ = new BehaviorSubject<number | null>(null);\n private readonly _selectedVersionNumber$ = new BehaviorSubject<number | null>(null);\n private readonly _selectedDocumentDefinitionName$ = new BehaviorSubject<string>('');\n private readonly _documentDefinition$ = new BehaviorSubject<DocumentDefinition | null>(null);\n private readonly _documentDefinitionModel$: Observable<EditorModel> =\n this.documentDefinition$.pipe(\n map((definition: DocumentDefinition) => ({\n value: JSON.stringify(definition.schema, null, 2),\n language: 'json',\n }))\n );\n\n public get selectedVersionNumber$(): Observable<number | null> {\n return this._selectedVersionNumber$.pipe(filter(version => typeof version === 'number'));\n }\n\n public get previousSelectedVersionNumber$(): Observable<number | null> {\n return this._previousSelectedVersionNumber$.asObservable();\n }\n\n public get selectedDocumentDefinitionName$(): Observable<string> {\n return this._selectedDocumentDefinitionName$.pipe(filter(name => !!name));\n }\n\n public get selectedDocumentDefinitionIsReadOnly$(): Observable<boolean> {\n return this.documentDefinition$.pipe(\n map(definition => definition.readOnly),\n distinctUntilChanged()\n );\n }\n\n public get loadingDocumentDefinition$(): Observable<boolean> {\n return this._loadingDocumentDefinition$.asObservable();\n }\n\n public get documentDefinition$(): Observable<DocumentDefinition> {\n return this._documentDefinition$.pipe(filter(def => !!def));\n }\n\n public get documentDefinitionModel$(): Observable<EditorModel> {\n return this._documentDefinitionModel$;\n }\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly pageTitleService: PageTitleService\n ) {\n this.openDocumentDefinitionSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setSelectedVersionNumber(versionNumber: number): void {\n this._selectedVersionNumber$.next(versionNumber);\n }\n\n public setPreviousSelectedVersionNumber(versionNumber: number | null): void {\n this._previousSelectedVersionNumber$.next(versionNumber);\n }\n\n public setSelectedDocumentDefinitionName(name: string): void {\n this._selectedDocumentDefinitionName$.next(name);\n }\n\n public setLoadingDocumentDefinition(loading: boolean): void {\n this._loadingDocumentDefinition$.next(loading);\n }\n private openDocumentDefinitionSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.selectedVersionNumber$, this.selectedDocumentDefinitionName$])\n .pipe(\n tap(() => {\n this.pageTitleService.setCustomPageTitleSet(false);\n this.setLoadingDocumentDefinition(true);\n }),\n switchMap(([selectedVersion, selectedDocumentDefinitionName]) =>\n this.documentService.getDocumentDefinitionByVersion(\n selectedDocumentDefinitionName,\n selectedVersion\n )\n ),\n tap(res => {\n this._documentDefinition$.next(res);\n this.pageTitleService.setCustomPageTitle(res?.schema?.title || '-', true);\n this.setLoadingDocumentDefinition(false);\n })\n )\n .subscribe()\n );\n }\n}\n","/*\n * Copyright 2015-2024 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 {HttpClient, HttpResponse} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\nimport {InterceptorSkipHeader} from '@valtimo/security';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierExportService {\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this.valtimoEndpointUri = this.configService.config.valtimoApi.endpointUri;\n }\n\n public exportDocumentDefinition(\n documentDefinitionName: string,\n version = 1\n ): Observable<HttpResponse<Blob>> {\n return this.http.get<Blob>(\n `${this.valtimoEndpointUri}management/v1/case/${documentDefinitionName}/${version}/export`,\n {observe: 'response', responseType: 'blob' as 'json', headers: InterceptorSkipHeader}\n );\n }\n}\n","/*\n * Copyright 2015-2024 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 */\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/config';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {BehaviorSubject, catchError, Observable, of, switchMap, take, tap} from 'rxjs';\n\n@Injectable()\nexport class TabManagementService {\n private _valtimoEndpointUri: string;\n private _caseDefinitionId: string;\n\n public readonly tabs$ = new BehaviorSubject<ApiTabItem[]>([]);\n\n public readonly loading$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this._valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/v1/case-definition`;\n }\n\n public loadTabs(): void {\n this.loading$.next(true);\n this.getTabList()\n .pipe(take(1))\n .subscribe({\n next: (items: ApiTabItem[]) => {\n this.tabs$.next(items);\n this.loading$.next(false);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n public dispatchAction(actionResult: Observable<ApiTabItem | ApiTabItem[] | null>): void {\n actionResult\n .pipe(\n tap(() => {\n this.loading$.next(true);\n this.tabs$.next([]);\n }),\n switchMap((result: ApiTabItem | ApiTabItem[] | null) =>\n Array.isArray(result) ? of(result) : this.getTabList()\n ),\n take(1),\n catchError(error => of(error))\n )\n .subscribe({\n next: (tabs: ApiTabItem[]) => {\n this.loading$.next(false);\n this.tabs$.next(tabs);\n },\n error: error => {\n console.log(error);\n },\n });\n }\n\n public addTab(tab: Partial<ApiTabItem>): Observable<ApiTabItem> {\n return this.http.post<ApiTabItem>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`,\n this.getTabDto(tab)\n );\n }\n\n public deleteTab(tabKey: string): Observable<null> {\n return this.http.delete<null>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab/${tabKey}`\n );\n }\n\n public editTab(tab: Partial<ApiTabItem>, tabKey: string): Observable<ApiTabItem> {\n return this.http.put<ApiTabItem>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab/${tabKey}`,\n this.getTabDto(tab)\n );\n }\n\n public editTabsOrder(tabList: ApiTabItem[]): Observable<ApiTabItem[]> {\n return this.http.put<ApiTabItem[]>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`,\n tabList\n );\n }\n\n public setCaseDefinitionId(caseDefinitionId: string): void {\n this._caseDefinitionId = caseDefinitionId;\n }\n\n public getTab(tabKey: string): Observable<ApiTabItem> {\n return this.http.get<ApiTabItem>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab/${tabKey}`\n );\n }\n\n private getTabList(): Observable<ApiTabItem[]> {\n return this.http.get<ApiTabItem[]>(`${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`);\n }\n\n private getTabDto(tab: Partial<ApiTabItem>): Partial<ApiTabItem> {\n if (tab.name === '') {\n delete tab.name;\n }\n\n return tab;\n }\n}\n","/*\n * Copyright 2015-2024 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 DOCUMENT = 'document',\n CASE = 'case',\n PROCESSES = 'processes',\n SEARCH = 'search',\n LIST = 'list',\n TABS = 'tabs',\n STATUSES = 'statuses',\n}\n","/*\n * Copyright 2015-2024 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 */\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CASE_TAB_TOKEN, CaseTabConfig, DefaultTabs} from '@valtimo/dossier';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\nimport {ListItem} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\nimport {TabEnum} from '../models/tab.enum';\nimport {CASE_MANAGEMENT_TAB_TOKEN, CaseManagementTabConfig} from '@valtimo/config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabService {\n public configuredTabKeys: string[];\n\n private _injectedCaseManagementTabs$ = new BehaviorSubject<CaseManagementTabConfig[]>([]);\n\n public get injectedCaseManagementTabs$(): Observable<CaseManagementTabConfig[]> {\n return this._injectedCaseManagementTabs$.asObservable();\n }\n\n private _currentTab$ = new BehaviorSubject<TabEnum | string>(TabEnum.DOCUMENT);\n public get currentTab$(): Observable<TabEnum | string> {\n return this._currentTab$.asObservable();\n }\n public set currentTab(tab: TabEnum | string) {\n this._currentTab$.next(tab);\n }\n\n private _configuredContentKeys$ = new BehaviorSubject<string[]>([]);\n public get configuredContentKeys$(): Observable<string[]> {\n return this._configuredContentKeys$.asObservable();\n }\n public set configuredContentKeys(value: string[]) {\n this._configuredContentKeys$.next(value);\n }\n\n public readonly formDefinitions$: Observable<ListItem[]> = this.formService\n .getAllFormDefinitions()\n .pipe(\n map((formDefinitions: FormDefinitionOption[]) =>\n formDefinitions.map((formDefinition: FormDefinitionOption) => ({\n contentKey: formDefinition.name,\n content: formDefinition.name,\n selected: false,\n }))\n )\n );\n\n public readonly customComponentKeys$ = new BehaviorSubject<ListItem[]>(\n !this.caseTabConfig\n ? []\n : Object.keys(this.caseTabConfig).map((contentKey: string) => ({\n contentKey,\n content: contentKey,\n selected: false,\n }))\n );\n\n public readonly defaultTabs$: Observable<ListItem[]> = this.translateService.stream('key').pipe(\n map(() =>\n Object.values(DefaultTabs).map((key: string) => ({\n contentKey: key,\n content: this.translateService.instant(`dossier.tabs.${key}`),\n selected: false,\n }))\n )\n );\n\n public readonly disableAddTabs$: Observable<{\n standard: boolean;\n custom: boolean;\n formIO: boolean;\n widgets: boolean;\n }> = combineLatest([\n this.configuredContentKeys$,\n this.formDefinitions$,\n this.defaultTabs$,\n this.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => ({\n standard: defaultTabs.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n custom:\n !customComponentKeys.length ||\n customComponentKeys.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n formIO:\n !formDefinitions.length ||\n formDefinitions.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n widgets: false,\n }))\n );\n\n constructor(\n @Optional() @Inject(CASE_TAB_TOKEN) private readonly caseTabConfig: CaseTabConfig,\n @Optional()\n @Inject(CASE_MANAGEMENT_TAB_TOKEN)\n private readonly caseManagementTabConfig: CaseManagementTabConfig[],\n private readonly formService: FormService,\n private readonly translateService: TranslateService\n ) {\n this.setInjectedCaseManagementTabs(this.caseManagementTabConfig);\n }\n\n private setInjectedCaseManagementTabs(\n caseManagementTabConfig?: CaseManagementTabConfig[] | CaseManagementTabConfig\n ): void {\n if (!caseManagementTabConfig) return;\n\n this._injectedCaseManagementTabs$.next(\n Array.isArray(caseManagementTabConfig) ? caseManagementTabConfig : [caseManagementTabConfig]\n );\n }\n}\n","/*\n * Copyright 2015-2024 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, signal} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetJsonEditorService {\n public readonly showPendingModal = signal<boolean>(false);\n}\n","/*\n * Copyright 2015-2024 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 */\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/config';\nimport {CaseWidgetsRes} from '@valtimo/dossier';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetTabManagementService {\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this.valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}`;\n }\n\n public getWidgetTabConfiguration(\n caseDefinitionName: string,\n widgetTabKey: string\n ): Observable<CaseWidgetsRes> {\n return this.http.get<CaseWidgetsRes>(\n `${this.valtimoEndpointUri}management/v1/case-definition/${caseDefinitionName}/widget-tab/${widgetTabKey}`\n );\n }\n\n public updateWidgets(tab: CaseWidgetsRes): Observable<any> {\n return this.http.post<any>(\n `${this.valtimoEndpointUri}management/v1/case-definition/${tab.caseDefinitionName}/widget-tab/${tab.key}`,\n tab\n );\n }\n}\n","/*\n * Copyright 2015-2024 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\ntype ListColumnModal = 'create' | 'edit';\n\nexport {ListColumnModal};\n","/*\n * Copyright 2015-2024 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\ntype StatusModalType = 'edit' | 'add' | 'closed';\n\ntype StatusModalCloseEvent = 'close' | 'closeAndRefresh';\n\nexport {StatusModalType, StatusModalCloseEvent};\n","/*\n * Copyright 2015-2024 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 {EventEmitter} from '@angular/core';\n\nexport interface WidgetContentComponent {\n changeValidEvent: EventEmitter<boolean>;\n}\n","/*\n * Copyright 2015-2024 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 {CaseWidgetType} from '@valtimo/dossier';\nimport {TagType} from 'carbon-components-angular';\n\nenum WidgetEditorTab {\n VISUAL = 'visual',\n JSON = 'json',\n}\n\nconst WidgetTypeTags: {[key: string]: TagType} = {\n [CaseWidgetType.COLLECTION]: 'teal',\n [CaseWidgetType.CUSTOM]: 'magenta',\n [CaseWidgetType.FIELDS]: 'blue',\n [CaseWidgetType.FORMIO]: 'green',\n [CaseWidgetType.TABLE]: 'purple',\n};\n\nexport {WidgetEditorTab, WidgetTypeTags};\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TrashCan16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n} from '@valtimo/components';\nimport {\n CaseWidgetCurrencyDisplayType,\n CaseWidgetDateDisplayType,\n CaseWidgetDateTimeDisplayType,\n CaseWidgetDisplayTypeKey,\n CaseWidgetEnumDisplayType,\n CaseWidgetNumberDisplayType,\n CaseWidgetTextDisplayType,\n CaseWidgetType,\n FieldsCaseWidgetValue,\n} from '@valtimo/dossier';\nimport {\n AccordionModule,\n ButtonModule,\n CheckboxModule,\n Dropdown,\n DropdownModule,\n IconModule,\n IconService,\n InputModule,\n ListItem,\n} from 'carbon-components-angular';\nimport {debounceTime, Observable, Subscription} from 'rxjs';\nimport {WidgetFieldsService, WidgetWizardService} from '../../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-widget-fields-column',\n templateUrl: './dossier-management-widget-fields-column.component.html',\n styleUrls: ['./dossier-management-widget-fields-column.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n DropdownModule,\n InputModule,\n ReactiveFormsModule,\n IconModule,\n AccordionModule,\n InputLabelModule,\n ValuePathSelectorComponent,\n CheckboxModule,\n ],\n})\nexport class DossierManagementWidgetFieldsColumnComponent implements OnInit, OnDestroy {\n @HostBinding('class') public readonly class = 'valtimo-dossier-management-widget-field-column';\n @Input({required: true}) public columnData: FieldsCaseWidgetValue[];\n @Input() public addTranslateKey = 'widgetTabManagement.content.fields.add';\n @Input() public isFieldWidget = false;\n @Input() public documentDefinitionName?: string;\n @Input() public fieldWidthDropdown?: TemplateRef<Dropdown>;\n @Input() public selectedCollection?: ValuePathItem;\n @Input() public showHideWhenEmptyCheckbox = false;\n\n @Output() public columnUpdateEvent = new EventEmitter<{\n data: FieldsCaseWidgetValue[];\n valid: boolean;\n }>();\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n public formGroup = this.fb.group({\n rows: this.fb.array<any>([]),\n });\n\n public get formRows(): FormArray | undefined {\n if (!this.formGroup.get('rows')) return undefined;\n\n return this.formGroup.get('rows') as FormArray;\n }\n\n public displayTypeItems: ListItem[] = this.widgetFieldsService.displayTypeItems;\n\n public getDisplayItemsSelected(row: AbstractControl): ListItem[] {\n return this.widgetFieldsService.getDisplayItemsSelected(row);\n }\n\n public readonly CaseWidgetDisplayTypeKey = CaseWidgetDisplayTypeKey;\n public readonly widgetType: Signal<CaseWidgetType> = computed(\n () => this.widgetWizardService.selectedWidget()?.type ?? CaseWidgetType.FIELDS\n );\n\n public readonly inputTheme$: Observable<CurrentCarbonTheme> = this.cdsThemeService.currentTheme$;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly cdr: ChangeDetectorRef,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService,\n private readonly widgetFieldsService: WidgetFieldsService,\n private readonly widgetWizardService: WidgetWizardService\n ) {\n this.iconService.register(TrashCan16);\n }\n\n public ngOnInit(): void {\n this.initForm();\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.formGroup.reset();\n }\n\n public addField(): void {\n if (!this.formRows) return;\n\n this.formRows.push(\n this.fb.group({\n type: this.fb.control<ListItem>({content: '', selected: false}, [\n Validators.required,\n this.typeSelectValidator,\n ]),\n title: this.fb.control<string>('', Validators.required),\n content: this.fb.control<string>('', Validators.required),\n ellipsisCharacterLimit: this.fb.control<number | null>(\n null,\n Validators.pattern('[1-9][0-9]*')\n ),\n hideWhenEmpty: this.fb.control<boolean | false>(false),\n })\n );\n }\n\n public onDeleteRowClick(event: Event, formArray: FormArray, index: number): void {\n event.stopImmediatePropagation();\n if (!formArray) return;\n\n formArray.removeAt(index);\n }\n\n public onTypeSelected(formRow: FormGroup, event: {item: ListItem}): void {\n this.widgetFieldsService.onDisplayTypeSelected(['title', 'content', 'type'], formRow, event);\n }\n\n public onAddEnumValueClick(valuesFormArray: FormArray): void {\n valuesFormArray.push(\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n })\n );\n }\n\n private typeSelectValidator(control: AbstractControl): null | {[key: string]: string} {\n const controlValue: ListItem | undefined = control.value;\n if (!controlValue || !controlValue.selected) return {error: 'Type is not selected'};\n\n return null;\n }\n\n private getRowForm(row: FieldsCaseWidgetValue): FormGroup {\n return this.fb.group({\n type: this.fb.control<ListItem>(\n {\n content: this.translateService.instant(\n this.translateService.instant(\n `widgetTabManagement.content.displayType.${row.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT}`\n )\n ),\n id: row.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n Validators.required\n ),\n title: this.fb.control<string>(row.title, Validators.required),\n content: this.fb.control<string>(row.value, Validators.required),\n ...((!row.displayProperties ||\n row.displayProperties?.type === CaseWidgetDisplayTypeKey.TEXT) && {\n ellipsisCharacterLimit: this.fb.control<number | null>(\n (row.displayProperties as CaseWidgetTextDisplayType)?.ellipsisCharacterLimit ?? null,\n Validators.pattern('[1-9][0-9]*')\n ),\n }),\n hideWhenEmpty: this.fb.control(\n (row.displayProperties as CaseWidgetTextDisplayType)?.hideWhenEmpty ?? false\n ),\n ...([CaseWidgetDisplayTypeKey.NUMBER, CaseWidgetDisplayTypeKey.PERCENT].includes(\n row.displayProperties?.type as CaseWidgetDisplayTypeKey\n ) && {\n digitsInfo: this.fb.control<string>(\n (row.displayProperties as CaseWidgetNumberDisplayType).digitsInfo ?? ''\n ),\n }),\n ...(row.displayProperties?.type === CaseWidgetDisplayTypeKey.CURRENCY && {\n digitsInfo: this.fb.control<string>(\n (row.displayProperties as CaseWidgetCurrencyDisplayType).digitsInfo ?? ''\n ),\n currencyCode: this.fb.control<string>(\n (row.displayProperties as CaseWidgetCurrencyDisplayType).currencyCode ?? ''\n ),\n display: this.fb.control<string>(\n (row.displayProperties as CaseWidgetCurrencyDisplayType).display ?? ''\n ),\n }),\n ...(row.displayProperties?.type === CaseWidgetDisplayTypeKey.DATE && {\n format: this.fb.control<string>(\n (row.displayProperties as CaseWidgetDateDisplayType).format ?? ''\n ),\n }),\n ...(row.displayProperties?.type === CaseWidgetDisplayTypeKey.DATE_TIME && {\n format: this.fb.control<string>(\n (row.displayProperties as CaseWidgetDateTimeDisplayType).format ?? ''\n ),\n }),\n ...(row.displayProperties?.type === CaseWidgetDisplayTypeKey.ENUM && {\n values: this.fb.array(\n Object.entries((row.displayProperties as CaseWidgetEnumDisplayType).values).map(\n ([key, value]) =>\n this.fb.group({\n key: this.fb.control<string>(key, Validators.required),\n value: this.fb.control<string>(value as string, Validators.required),\n })\n )\n ),\n }),\n });\n }\n\n private initForm(): void {\n if (!this.columnData) {\n this.addField();\n return;\n }\n\n const rowsControl = this.formGroup.get('rows') as FormArray;\n if (!rowsControl) return;\n\n this.columnData.forEach((row: FieldsCaseWidgetValue) => {\n rowsControl.push(this.getRowForm(row), {emitEvent: false});\n });\n\n this.columnUpdateEvent.emit({data: this.columnData, valid: true});\n this.cdr.detectChanges();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.formRows?.valueChanges.pipe(debounceTime(100)).subscribe((rows: any) => {\n const mappedRows: FieldsCaseWidgetValue[] = rows.map((row: any | null) => ({\n key: row.title.replace(/\\W+/g, '-').replace(/\\-$/, '').toLowerCase(),\n title: row.title,\n value: row.content,\n ...(!!row?.type.id && {\n displayProperties: {\n type: row.type.id,\n ...(!!row?.ellipsisCharacterLimit && {\n ellipsisCharacterLimit: row.ellipsisCharacterLimit,\n }),\n ...(!!row?.hideWhenEmpty && {hideWhenEmpty: row.hideWhenEmpty}),\n ...(!!row?.currencyCode && {currencyCode: row.currencyCode}),\n ...(!!row?.display && {display: row.display}),\n ...(!!row?.digitsInfo && {digitsInfo: row.digitsInfo}),\n ...(!!row?.format && {format: row.format}),\n ...(!!row?.values && {\n values: row.values?.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\n }),\n },\n }),\n }));\n this.columnUpdateEvent.emit({data: mappedRows, valid: this.formGroup.valid});\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<form\n *ngIf=\"inputTheme$ | async as inputTheme\"\n class=\"valtimo-dossier-management-widget-field-column\"\n [formGroup]=\"formGroup\"\n>\n <cds-accordion formArrayName=\"rows\" align=\"start\" size=\"sm\">\n @for (formRow of formRows.controls; track $index) {\n <cds-accordion-item\n [title]=\"fieldTitle\"\n [context]=\"{count: $count, index: $index, title: formRow.get('title')?.value}\"\n [expanded]=\"$index === 0\"\n class=\"valtimo-dossier-management-widget-field-column__item\"\n >\n <form\n [formGroup]=\"formRow\"\n class=\"valtimo-dossier-management-widget-field-column__container\"\n >\n <div\n class=\"valtimo-dossier-management-widget-field-column__content\"\n [class.valtimo-dossier-management-widget-field-column__content--collection]=\"\n !!fieldWidthDropdown\n \"\n >\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.title' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.' + widgetType() + '.titleTooltip' | translate\n \"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.titlePlaceholder' | translate\"\n type=\"text\"\n formControlName=\"title\"\n />\n </cds-text-label>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"inputTheme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(formRow, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(formRow)\"></cds-dropdown-list>\n </cds-dropdown>\n\n <ng-container\n *ngTemplateOutlet=\"fieldWidthDropdown; context: {index: $index}\"\n ></ng-container>\n\n <div class=\"valtimo-dossier-management-widget-field-column__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.' + widgetType() + '.valueTooltip' | translate\n \"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"content\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [parentItem]=\"selectedCollection\"\n ></valtimo-value-path-selector>\n </div>\n </div>\n\n <div class=\"valtimo-dossier-management-widget-field-column__options\">\n @switch (formRow.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.displayPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.formatPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.formatPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div\n class=\"valtimo-dossier-management-widget-field-column__enum\"\n formArrayName=\"values\"\n >\n @for (rowValue of formRow.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-field-column__enum-form\"\n >\n <cds-text-label>\n <v-input-label\n *ngIf=\"$index === 0\"\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.enumValueTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"inputTheme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n *ngIf=\"$index === 0\"\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.enumDisplay' | translate\n \"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick($event, formRow.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(formRow.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n\n <cds-text-label\n *ngIf=\"\n formRow.get('type').value.id === CaseWidgetDisplayTypeKey.TEXT && isFieldWidget\n \"\n >\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.ellipsisCharacterLimit' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.ellipsisCharacterLimitTooltip' | translate\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.ellipsisCharacterLimitPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"ellipsisCharacterLimit\"\n />\n </cds-text-label>\n\n <cds-checkbox *ngIf=\"showHideWhenEmptyCheckbox\" formControlName=\"hideWhenEmpty\">\n {{ 'widgetTabManagement.content.hideWhenEmpty' | translate }}\n </cds-checkbox>\n </div>\n </form>\n </cds-accordion-item>\n }\n </cds-accordion>\n\n <button cdsButton=\"primary\" size=\"sm\" (click)=\"addField()\">\n {{ addTranslateKey | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</form>\n\n<ng-template #fieldTitle let-count=\"count\" let-index=\"index\" let-title=\"title\">\n <div class=\"valtimo-dossier-management-widget-field-column__title\">\n {{ title || ('widgetTabManagement.content.fields.titlePlaceholder' | translate) }}\n\n <button\n cdsButton=\"danger\"\n [disabled]=\"count === 1\"\n [iconOnly]=\"true\"\n (click)=\"onDeleteRowClick($event, formRows, index)\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n","import {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {CaseWidgetAction} from '@valtimo/dossier';\nimport {DropdownModule, InputModule, ListItem} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n debounceTime,\n map,\n Observable,\n startWith,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {WidgetWizardService} from '../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-widget-process-selector',\n templateUrl: './dossier-management-widget-process-selector.component.html',\n styleUrl: './dossier-management-widget-process-selector.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, DropdownModule, InputModule, ReactiveFormsModule],\n})\nexport class DossierManagementWidgetProcessSelectorComponent implements OnInit {\n private readonly _documentDefinitionName$ = new BehaviorSubject<string | null>(null);\n @Input() public set documentDefinitionName(value: string) {\n this._documentDefinitionName$.next(value);\n }\n\n public readonly formGroup = this.fb.group({\n name: this.fb.control<string>({\n value: this.widgetWizardService.widgetActions()?.[0]?.name ?? '',\n disabled: !this.widgetWizardService.widgetActions()?.length,\n }),\n processDefinitionKey: this.fb.control<ListItem>({\n content: '',\n key: this.widgetWizardService.widgetActions()?.[0]?.processDefinitionKey,\n selected: false,\n }),\n });\n\n public readonly processDefinitionItems$: Observable<ListItem[]> =\n this._documentDefinitionName$.pipe(\n switchMap((documentDefinitionName: string | null) =>\n this.documentService.findProcessDocumentDefinitionsByStartableByUser(\n documentDefinitionName ?? '',\n true\n )\n ),\n map((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n const selectedProcessKey: string | undefined = this.widgetWizardService.editMode()\n ? this.widgetWizardService.widgetActions()?.[0]?.processDefinitionKey\n : undefined;\n\n return processDocumentDefinitions.map((definition: ProcessDocumentDefinition) => {\n const mappedItem: ListItem = {\n content: definition.processName,\n key: definition.id.processDefinitionKey,\n selected: selectedProcessKey === definition.id.processDefinitionKey,\n };\n\n if (mappedItem.selected)\n this.formGroup.patchValue({processDefinitionKey: mappedItem}, {emitEvent: false});\n\n return mappedItem;\n });\n }),\n startWith([])\n );\n\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly documentService: DocumentService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.formGroup.valueChanges\n .pipe(debounceTime(100))\n .subscribe(\n (changes: Partial<{name: string | null; processDefinitionKey: ListItem | null}>) => {\n const {name, processDefinitionKey} = changes;\n this.widgetWizardService.widgetActions.update(\n (value: CaseWidgetAction[] | undefined) => {\n if (!value)\n return [\n {\n name: !name ? processDefinitionKey?.content : name,\n processDefinitionKey: processDefinitionKey?.key,\n },\n ];\n\n const edittedProcess = value.find(\n (process: CaseWidgetAction) =>\n process.processDefinitionKey === processDefinitionKey?.key\n );\n\n return !!edittedProcess\n ? value.map((process: CaseWidgetAction) =>\n process.processDefinitionKey === edittedProcess.processDefinitionKey\n ? {\n ...process,\n name: !name ? processDefinitionKey?.content : name,\n }\n : process\n )\n : [\n ...value,\n {\n name: !name ? processDefinitionKey?.content : name,\n processDefinitionKey: processDefinitionKey?.key,\n },\n ];\n }\n );\n }\n )\n );\n }\n\n public onProcessSelected(): void {\n if (!this.formGroup.get('name')?.disabled) return;\n\n this.formGroup.get('name')?.enable();\n }\n}\n","<form\n [attr.data-carbon-theme]=\"theme$ | async\"\n [formGroup]=\"formGroup\"\n class=\"valtimo-dossier-management-widget-process-selector\"\n>\n <cds-dropdown\n [label]=\"'widgetTabManagement.processes.buttonTextLabel' | translate\"\n [placeholder]=\"'widgetTabManagement.processes.selectorPlaceholder' | translate\"\n formControlName=\"processDefinitionKey\"\n (selected)=\"onProcessSelected()\"\n >\n <cds-dropdown-list [items]=\"processDefinitionItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-text-label>\n {{ 'widgetTabManagement.processes.buttonTextLabel' | translate }}\n\n <input\n cdsText\n type=\"text\"\n formControlName=\"name\"\n [placeholder]=\"'widgetTabManagement.processes.buttonTextPlaceholder' | translate\"\n />\n </cds-text-label>\n</form>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n ValuePathType,\n} from '@valtimo/components';\nimport {\n CaseWidgetCurrencyDisplayType,\n CaseWidgetDateDisplayType,\n CaseWidgetDateTimeDisplayType,\n CaseWidgetDisplayTypeKey,\n CaseWidgetEnumDisplayType,\n CollectionFieldWidth,\n FieldsCaseWidgetValue,\n WidgetCollectionContent,\n WidgetContentProperties,\n} from '@valtimo/dossier';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n InputModule,\n ListItem,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, debounceTime, map, Observable, Subscription} from 'rxjs';\nimport {WidgetContentComponent} from '../../../models';\nimport {WidgetFieldsService, WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetFieldsColumnComponent} from '../fields/column/dossier-management-widget-fields-column.component';\nimport {DossierManagementWidgetProcessSelectorComponent} from '../process-selector/dossier-management-widget-process-selector.component';\n\n@Component({\n templateUrl: './dossier-management-widget-collection.component.html',\n styleUrl: './dossier-management-widget-collection.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n DossierManagementWidgetFieldsColumnComponent,\n ReactiveFormsModule,\n InputModule,\n DropdownModule,\n ButtonModule,\n IconModule,\n InputLabelModule,\n DossierManagementWidgetProcessSelectorComponent,\n ValuePathSelectorComponent,\n ],\n})\nexport class DossierManagementWidgetCollectionComponent\n implements WidgetContentComponent, OnInit, OnDestroy\n{\n @HostBinding('class') public readonly class = 'valtimo-dossier-management-widget-collection';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly widgetForm = this.fb.group({\n title: this.fb.control(this.widgetWizardService.widgetTitle() ?? '', Validators.required),\n defaultPageSize: this.fb.control(\n (this.widgetWizardService.widgetContent() as WidgetCollectionContent)?.defaultPageSize ?? 5,\n Validators.required\n ),\n collection: this.fb.control(\n (this.widgetWizardService.widgetContent() as WidgetCollectionContent)?.collection ?? '',\n Validators.required\n ),\n });\n\n public readonly cardForm = this.fb.group<any>({\n value: this.fb.control(\n (this.widgetWizardService.widgetContent() as WidgetCollectionContent)?.title?.value ?? '',\n Validators.required\n ),\n type: this.fb.control<ListItem>(\n {\n content: this.translateService.instant(\n this.translateService.instant(\n `widgetTabManagement.content.displayType.${(this.widgetWizardService.widgetContent() as WidgetCollectionContent)?.title?.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT}`\n )\n ),\n id:\n (this.widgetWizardService.widgetContent() as WidgetCollectionContent)?.title\n ?.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n Validators.required\n ),\n });\n\n public readonly theme$: Observable<CARBON_THEME> = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n public readonly ValuePathType = ValuePathType;\n public readonly CaseWidgetDisplayTypeKey = CaseWidgetDisplayTypeKey;\n public readonly content = this.widgetWizardService\n .widgetContent as WritableSignal<WidgetCollectionContent>;\n public readonly displayTypeItems: ListItem[] = this.widgetFieldsService.displayTypeItems;\n\n public readonly selectedCollection$ = new BehaviorSubject<ValuePathItem | null>(null);\n public readonly documentDefinitionName$: Observable<string> = this.route.paramMap.pipe(\n map((paramMap: ParamMap) => paramMap.get('name') ?? '')\n );\n\n public WIDTH_ITEMS: ListItem[] = [\n {\n content: this.translateService.instant('widgetTabManagement.width.fullWidth'),\n id: 'full',\n selected: true,\n },\n {\n content: this.translateService.instant('widgetTabManagement.width.half'),\n id: 'half',\n selected: false,\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n private readonly _contentValid = signal<boolean>(false);\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService,\n private readonly widgetWizardService: WidgetWizardService,\n private readonly widgetFieldsService: WidgetFieldsService,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this.openWidgetFormSubscription();\n this.openCardFormSubscription();\n this.initForm();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onAddEnumValueClick(valuesFormArray: FormArray): void {\n valuesFormArray.push(\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n })\n );\n }\n\n public getDisplayItemsSelected(control: AbstractControl): ListItem[] {\n return this.widgetFieldsService.getDisplayItemsSelected(control);\n }\n\n public getSelectedWidthItem(fieldIndex: number): ListItem[] {\n const widgetContent: WidgetCollectionContent | null =\n this.widgetWizardService.widgetContent() as WidgetCollectionContent;\n\n return !widgetContent\n ? this.WIDTH_ITEMS\n : this.WIDTH_ITEMS.map((item: ListItem) => ({\n ...item,\n selected: widgetContent.fields?.[fieldIndex]?.width === item.id,\n }));\n }\n\n public onColumnUpdateEvent(event: {data: FieldsCaseWidgetValue[]; valid: boolean}): void {\n const {data, valid} = event;\n this.widgetWizardService.widgetContent.update((content: WidgetContentProperties | null) => {\n const existingFields = (content as WidgetCollectionContent)?.fields;\n\n return {\n ...content,\n fields: data.map((item, index) => ({\n ...item,\n width: existingFields?.[index]?.width ?? 'full',\n })),\n } as WidgetCollectionContent;\n });\n this._contentValid.set(valid);\n this.changeValidEvent.emit(valid && this.widgetForm.valid);\n }\n\n public onDeleteRowClick(formArray: FormArray, index: number): void {\n if (!formArray) return;\n\n formArray.removeAt(index);\n }\n\n public onTypeSelected(formGroup: FormGroup, event: {item: ListItem}): void {\n this.widgetFieldsService.onDisplayTypeSelected(['value', 'type'], formGroup, event);\n }\n\n public onWidthSelected(event: {item: ListItem}, fieldIndex: number): void {\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n fields: (content as WidgetCollectionContent)?.fields.map(\n (field: FieldsCaseWidgetValue & {width: CollectionFieldWidth}, index: number) =>\n index === fieldIndex ? {...field, width: event.item.id} : field\n ),\n }) as WidgetCollectionContent\n );\n }\n\n public onCollectionSelected(item: ValuePathItem): void {\n this.selectedCollection$.next(item);\n }\n\n private initForm(): void {\n if (!this.widgetWizardService.widgetContent()) return;\n\n const title = (this.widgetWizardService.widgetContent() as WidgetCollectionContent).title;\n if (!title) return;\n this.onTypeSelected(this.cardForm, {\n item: {id: title.displayProperties?.type ?? '', content: '', selected: true},\n });\n\n this.cardForm.patchValue(\n {\n ...([\n CaseWidgetDisplayTypeKey.NUMBER,\n CaseWidgetDisplayTypeKey.PERCENT,\n CaseWidgetDisplayTypeKey.CURRENCY,\n ].includes(title.displayProperties?.type as CaseWidgetDisplayTypeKey) && {\n digitsInfo: (title.displayProperties as CaseWidgetCurrencyDisplayType).digitsInfo,\n }),\n ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.CURRENCY && {\n currencyCode: (title.displayProperties as CaseWidgetCurrencyDisplayType).currencyCode,\n display: (title.displayProperties as CaseWidgetCurrencyDisplayType).display,\n }),\n ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.DATE && {\n format: (title.displayProperties as CaseWidgetDateDisplayType).format,\n }),\n ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.DATE_TIME && {\n format: (title.displayProperties as CaseWidgetDateTimeDisplayType).format,\n }),\n ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.ENUM && {\n values: Object.entries((title.displayProperties as CaseWidgetEnumDisplayType).values).map(\n ([key, value]) => ({key, value})\n ),\n }),\n },\n {emitEvent: false}\n );\n }\n\n private openWidgetFormSubscription(): void {\n this._subscriptions.add(\n this.widgetForm.valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.widgetWizardService.widgetTitle.set(value?.title ?? '');\n\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n collection: value?.collection || '',\n defaultPageSize: value?.defaultPageSize || 5,\n }) as WidgetCollectionContent\n );\n\n this.changeValidEvent.emit(\n this.widgetForm.valid && this.cardForm.valid && this._contentValid()\n );\n })\n );\n }\n\n private openCardFormSubscription(): void {\n this._subscriptions.add(\n this.cardForm.valueChanges.pipe(debounceTime(500)).subscribe(formValue => {\n let {value, ...displayProperties} = formValue;\n displayProperties = {\n ...displayProperties,\n ...(!!displayProperties.type && {\n type: (displayProperties.type as ListItem).id,\n }),\n ...(!!formValue.values && {\n values: (formValue.values as Array<{[key: string]: string}>)?.reduce(\n (acc, curr) => ({...acc, [curr.key]: curr.value}),\n {}\n ),\n }),\n };\n\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n title: {\n value,\n ...(displayProperties.type !== CaseWidgetDisplayTypeKey.TEXT && {\n displayProperties,\n }),\n },\n }) as any\n );\n\n this.changeValidEvent.emit(\n this.widgetForm.valid && this.cardForm.valid && this._contentValid()\n );\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-container *ngIf=\"{theme: theme$ | async} as obs\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-dossier-management-widget-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <div class=\"valtimo-dossier-management-widget-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"collection\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [type]=\"ValuePathType.COLLECTION\"\n (collectionSelected)=\"onCollectionSelected($event)\"\n ></valtimo-value-path-selector>\n </div>\n </form>\n\n <valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-widget-process-selector>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-dossier-management-widget-collection__card\">\n <section class=\"valtimo-dossier-management-widget-collection__card-title\">\n <div class=\"valtimo-dossier-management-widget-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.valueTooltip' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"value\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [parentItem]=\"selectedCollection$ | async\"\n ></valtimo-value-path-selector>\n </div>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"obs.theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-dossier-management-widget-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-dossier-management-widget-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-collection__enum-form\"\n >\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumValueTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"obs.theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-dossier-management-widget-fields-column\n [columnData]=\"content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [selectedCollection]=\"selectedCollection$ | async\"\n [showHideWhenEmptyCheckbox]=\"true\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n </valtimo-dossier-management-widget-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {\n CUSTOM_CASE_WIDGET_TOKEN,\n CustomCaseWidgetConfig,\n WidgetCustomContent,\n} from '@valtimo/dossier';\nimport {DropdownModule, InputModule, SelectModule} from 'carbon-components-angular';\nimport {ListItem} from 'carbon-components-angular/dropdown/list-item.interface';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, Subscription} from 'rxjs';\nimport {WidgetContentComponent} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetProcessSelectorComponent} from '../process-selector/dossier-management-widget-process-selector.component';\n\n@Component({\n templateUrl: './dossier-management-widget-custom.component.html',\n styleUrls: ['./dossier-management-widget-custom.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n InputModule,\n ReactiveFormsModule,\n SelectModule,\n DropdownModule,\n DossierManagementWidgetProcessSelectorComponent,\n ],\n})\nexport class DossierManagementWidgetCustomComponent\n implements WidgetContentComponent, OnDestroy, OnInit\n{\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly form = this.fb.group({\n widgetTitle: this.fb.control(this.widgetWizardService.widgetTitle(), Validators.required),\n });\n\n public get widgetTitle(): AbstractControl<string> {\n return this.form.get('widgetTitle');\n }\n\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n public readonly documentDefinitionName$: Observable<string> = this.route.paramMap.pipe(\n map((paramMap: ParamMap) => paramMap.get('name') ?? '')\n );\n\n private readonly _selectedCustomComponentKey$ = new BehaviorSubject<string | null>(null);\n private readonly _customCaseWidgetConfig$ = new BehaviorSubject<CustomCaseWidgetConfig>({});\n\n public readonly componentListItems$: Observable<ListItem[]> = combineLatest([\n this._customCaseWidgetConfig$,\n this._selectedCustomComponentKey$,\n ]).pipe(\n filter(([config]) => !!config),\n map(([config, selectedKey]) =>\n Object.keys(config).reduce(\n (acc, curr) => [...acc, {content: curr, selected: curr === selectedKey}],\n []\n )\n )\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n @Optional()\n @Inject(CUSTOM_CASE_WIDGET_TOKEN)\n private readonly customCaseWidgetConfig: CustomCaseWidgetConfig,\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService,\n private readonly route: ActivatedRoute\n ) {\n if (customCaseWidgetConfig) this._customCaseWidgetConfig$.next(customCaseWidgetConfig);\n }\n\n public componentDropDownChange(event: {\n item: {content: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const componentKey = event?.item?.content;\n\n if (!componentKey) return;\n\n this._selectedCustomComponentKey$.next(componentKey);\n this.widgetWizardService.widgetContent.set({componentKey});\n this.changeValidEvent.emit(true);\n }\n\n public ngOnInit(): void {\n this.openTitleSubscription();\n this.prefill();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openTitleSubscription(): void {\n this._subscriptions.add(\n this.widgetTitle.valueChanges.subscribe(title => {\n this.widgetWizardService.widgetTitle.set(title);\n })\n );\n }\n\n private prefill(): void {\n const componentKey = (this.widgetWizardService.widgetContent() as WidgetCustomContent)\n ?.componentKey;\n\n if (!componentKey || Object.keys(this.customCaseWidgetConfig || {}).length === 0) return;\n\n this._selectedCustomComponentKey$.next(componentKey);\n this.changeValidEvent.emit(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<form\n class=\"valtimo-dossier-management-widget-custom\"\n [formGroup]=\"form\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n>\n <cds-text-label class=\"valtimo-dossier-management-widget-field__input\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-widget-process-selector>\n\n <cds-label class=\"dropdown-label\">\n {{ 'widgetTabManagement.content.custom.selectComponent' | translate }}\n\n <cds-dropdown\n *ngIf=\"componentListItems$ | async as componentListItems\"\n [appendInline]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.custom.placeholder' | translate\"\n [disabled]=\"componentListItems.length === 0\"\n (selected)=\"componentDropDownChange($event)\"\n >\n <cds-dropdown-list [items]=\"componentListItems\"> </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n</form>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n} from '@valtimo/components';\nimport {FieldsCaseWidgetValue, WidgetFieldsContent} from '@valtimo/dossier';\nimport {ButtonModule, IconModule, InputModule, Tab, TabsModule} from 'carbon-components-angular';\nimport {debounceTime, map, Observable, Subscription} from 'rxjs';\n\nimport {WidgetContentComponent} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetProcessSelectorComponent} from '../process-selector/dossier-management-widget-process-selector.component';\nimport {DossierManagementWidgetFieldsColumnComponent} from './column/dossier-management-widget-fields-column.component';\n\n@Component({\n templateUrl: './dossier-management-widget-fields.component.html',\n styleUrls: ['./dossier-management-widget-fields.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n InputModule,\n TabsModule,\n IconModule,\n ReactiveFormsModule,\n ButtonModule,\n DossierManagementWidgetFieldsColumnComponent,\n DossierManagementWidgetProcessSelectorComponent,\n InputLabelModule,\n ],\n})\nexport class DossierManagementWidgetFieldsComponent\n implements WidgetContentComponent, OnDestroy, OnInit, AfterViewInit\n{\n @HostBinding('class') public readonly class = 'valtimo-dossier-management-widget-field';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n @ViewChild(Tab) private readonly _tab: Tab;\n\n public form = this.fb.group({\n widgetTitle: this.fb.control(this.widgetWizardService.widgetTitle(), Validators.required),\n });\n\n public readonly columns = signal<null[]>([null]);\n public readonly widgetWidth = this.widgetWizardService.widgetWidth();\n public readonly selectedTabIndex = -1;\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n public readonly selectedWidgetContent = computed(() =>\n (this.widgetWizardService.widgetContent() as WidgetFieldsContent)?.columns.reduce(\n (acc, curr, index) => ({\n ...acc,\n [index]: curr,\n }),\n {}\n )\n );\n public readonly activeTab = signal<number>(0);\n public readonly documentDefinitionName$: Observable<string> = this.route.paramMap.pipe(\n map((paramMap: ParamMap) => paramMap.get('name') ?? '')\n );\n\n private readonly _subscriptions = new Subscription();\n private readonly _contentValid = signal<boolean>(false);\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly route: ActivatedRoute,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(debounceTime(100)).subscribe(formValue => {\n this.widgetWizardService.widgetTitle.set(formValue.widgetTitle ?? '');\n this.changeValidEvent.emit(this.form.valid && this._contentValid());\n })\n );\n const widgetContent = (this.widgetWizardService.widgetContent() as WidgetFieldsContent)\n ?.columns;\n if (!widgetContent) return;\n\n this.columns.set(Object.keys(widgetContent).map(() => null));\n }\n\n public ngAfterViewInit(): void {\n this._tab.tabIndex = -1;\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.changeValidEvent.emit(false);\n this.form.reset();\n this._contentValid.set(false);\n }\n\n public onAddColumnClick(): void {\n this.columns.update(value => [...value, null]);\n this.activeTab.set(this.columns().length - 1);\n this.changeValidEvent.emit(false);\n }\n\n public onTabSelected(index: number): void {\n this.activeTab.set(index);\n }\n\n public onDeleteColumnClick(index: number): void {\n this.widgetWizardService.widgetContent.update(content => {\n if (!content) return null;\n\n const widgetContent = content as WidgetFieldsContent;\n\n let tempIndex = index;\n let tempContent = {...widgetContent};\n while (tempIndex < this.columns().length - 1) {\n tempContent.columns[tempIndex] = tempContent.columns[tempIndex + 1];\n tempIndex++;\n }\n tempContent.columns.splice(tempIndex, 1);\n\n return tempContent;\n });\n\n this.columns.update((columns: null[]) => {\n const temp = columns;\n temp.splice(index, 1);\n\n return temp;\n });\n\n if (this.activeTab() !== index) return;\n\n this.activeTab.set(-1);\n }\n\n public onColumnUpdateEvent(\n event: {\n data: FieldsCaseWidgetValue[];\n valid: boolean;\n },\n columnIndex: number\n ): void {\n this.widgetWizardService.widgetContent.update(content => {\n if (!content) return {columns: [event.data]};\n\n const columns = (content as WidgetFieldsContent)?.columns.map((column, index) =>\n index === columnIndex ? event.data : column\n );\n return {\n columns: columnIndex > columns.length - 1 ? [...columns, event.data] : columns,\n };\n });\n this._contentValid.set(event.valid);\n this.changeValidEvent.emit(event.valid && this.form.valid);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<p>{{ 'widgetTabManagement.content.description' | translate }}</p>\n\n<form [formGroup]=\"form\">\n <cds-text-label\n [attr.data-carbon-theme]=\"theme$ | async\"\n class=\"valtimo-dossier-management-widget-field__input\"\n >\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n</form>\n\n<valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n></valtimo-dossier-management-widget-process-selector>\n\n<cds-tabs type=\"contained\">\n @for (column of columns(); track $index) {\n <cds-tab\n [active]=\"activeTab() === $index\"\n [heading]=\"columnHeading\"\n [context]=\"{index: $index, count: $count}\"\n (selected)=\"onTabSelected($index)\"\n >\n <valtimo-dossier-management-widget-fields-column\n *ngIf=\"activeTab() === $index\"\n [isFieldWidget]=\"true\"\n [columnData]=\"selectedWidgetContent()?.[$index]\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [showHideWhenEmptyCheckbox]=\"true\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event, $index)\"\n ></valtimo-dossier-management-widget-fields-column>\n </cds-tab>\n }\n <cds-tab\n *ngIf=\"columns().length < widgetWidth\"\n [heading]=\"addColumn\"\n [id]=\"'addColumn'\"\n class=\"valtimo-dossier-management-widget-field__add\"\n ></cds-tab>\n</cds-tabs>\n\n<ng-template #addColumn>\n <button\n cdsButton=\"ghost\"\n [iconOnly]=\"true\"\n (click)=\"$event.stopImmediatePropagation(); onAddColumnClick()\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #columnHeading let-data>\n <div class=\"valtimo-dossier-management-widget-field__heading\">\n {{ 'widgetTabManagement.content.column' | translate: {number: data.index + 1} }}\n\n <button\n cdsButton=\"ghost\"\n [disabled]=\"data.count === 1\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onDeleteColumnClick(data.index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {WidgetFormioContent} from '@valtimo/dossier';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\nimport {DropdownModule, InputModule, SelectModule} from 'carbon-components-angular';\nimport {ListItem} from 'carbon-components-angular/dropdown/list-item.interface';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, Subscription} from 'rxjs';\nimport {WidgetContentComponent} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetProcessSelectorComponent} from '../process-selector/dossier-management-widget-process-selector.component';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\n\n@Component({\n templateUrl: './dossier-management-widget-formio.component.html',\n styleUrls: ['./dossier-management-widget-formio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n InputModule,\n ReactiveFormsModule,\n SelectModule,\n DropdownModule,\n DossierManagementWidgetProcessSelectorComponent,\n ],\n})\nexport class DossierManagementWidgetFormioComponent\n implements WidgetContentComponent, OnDestroy, OnInit\n{\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly form = this.fb.group({\n widgetTitle: this.fb.control(this.widgetWizardService.widgetTitle(), Validators.required),\n });\n\n public get widgetTitle(): AbstractControl<string | null> | null {\n return this.form.get('widgetTitle');\n }\n\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n private readonly _selectedFormDefinitionId$ = new BehaviorSubject<string | null>(null);\n\n private readonly _formDefinitionOptions$ = new BehaviorSubject<FormDefinitionOption[]>([]);\n\n public readonly documentDefinitionName$: Observable<string> = this.route.paramMap.pipe(\n map((paramMap: ParamMap) => paramMap.get('name') ?? '')\n );\n public readonly formListItems$: Observable<ListItem[]> = combineLatest([\n this._formDefinitionOptions$,\n this._selectedFormDefinitionId$,\n ]).pipe(\n filter(([options]) => !!options),\n map(([options, selectedFormId]) =>\n options.map(option => ({\n content: option.name,\n id: option.name,\n selected: option.name === selectedFormId,\n }))\n )\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService,\n private readonly formService: FormService,\n private readonly route: ActivatedRoute\n ) {}\n\n public componentDropDownChange(event: {\n item: {id: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const formDefinitionId = event?.item?.id;\n\n if (!formDefinitionId) return;\n\n this._selectedFormDefinitionId$.next(formDefinitionId);\n this.widgetWizardService.widgetContent.set({formDefinitionName: formDefinitionId});\n this.changeValidEvent.emit(true);\n }\n\n public ngOnInit(): void {\n this.fetchFormDefinition();\n this.openTitleSubscription();\n this.prefill();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openTitleSubscription(): void {\n this._subscriptions.add(\n this.widgetTitle?.valueChanges.subscribe(title => {\n this.widgetWizardService.widgetTitle.set(title);\n })\n );\n }\n\n private fetchFormDefinition(): void {\n this.formService.getAllFormDefinitions().subscribe(definitions => {\n this._formDefinitionOptions$.next(definitions);\n });\n }\n\n private prefill(): void {\n const formDefinitionId = (this.widgetWizardService.widgetContent() as WidgetFormioContent)\n ?.formDefinitionName;\n\n if (!formDefinitionId) return;\n\n this._selectedFormDefinitionId$.next(formDefinitionId);\n this.changeValidEvent.emit(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<form\n class=\"valtimo-dossier-management-widget-formio\"\n [formGroup]=\"form\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n>\n <cds-text-label class=\"valtimo-dossier-management-widget-field__input\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-widget-process-selector>\n\n <cds-label class=\"dropdown-label\">\n {{ 'widgetTabManagement.content.formio.selectForm' | translate }}\n\n <cds-dropdown\n *ngIf=\"formListItems$ | async as formListItems\"\n [appendInline]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.formio.placeholder' | translate\"\n [disabled]=\"formListItems.length === 0\"\n [dropUp]=\"false\"\n (selected)=\"componentDropDownChange($event)\"\n >\n <cds-dropdown-list [items]=\"formListItems\"> </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n</form>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {FormBuilder, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n ValuePathType,\n} from '@valtimo/components';\nimport {FieldsCaseWidgetValue, WidgetContentProperties, WidgetTableContent} from '@valtimo/dossier';\nimport {ButtonModule, InputModule, ToggleModule} from 'carbon-components-angular';\nimport {BehaviorSubject, debounceTime, map, Observable, Subscription} from 'rxjs';\nimport {WidgetContentComponent} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetFieldsColumnComponent} from '../fields/column/dossier-management-widget-fields-column.component';\nimport {DossierManagementWidgetProcessSelectorComponent} from '../process-selector/dossier-management-widget-process-selector.component';\n\n@Component({\n templateUrl: './dossier-management-widget-table.component.html',\n styleUrl: './dossier-management-widget-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n TranslateModule,\n DossierManagementWidgetFieldsColumnComponent,\n ReactiveFormsModule,\n InputModule,\n ToggleModule,\n ButtonModule,\n InputLabelModule,\n DossierManagementWidgetProcessSelectorComponent,\n ValuePathSelectorComponent,\n ],\n})\nexport class DossierManagementWidgetTableComponent\n implements WidgetContentComponent, OnInit, OnDestroy\n{\n @HostBinding('class') public readonly class = 'valtimo-dossier-management-widget-table';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly form: FormGroup = this.fb.group({\n title: this.fb.control<string>(\n this.widgetWizardService.widgetTitle() ?? '',\n Validators.required\n ),\n collection: this.fb.control<string>(\n (this.widgetWizardService.widgetContent() as WidgetTableContent)?.collection ?? '',\n Validators.required\n ),\n defaultPageSize: this.fb.control<number>(\n (this.widgetWizardService.widgetContent() as WidgetTableContent)?.defaultPageSize ?? 5,\n Validators.required\n ),\n });\n\n public readonly theme$: Observable<CARBON_THEME> = this.cdsThemeService.currentTheme$.pipe(\n map((currentTheme: CurrentCarbonTheme) =>\n currentTheme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n public readonly content = this.widgetWizardService\n .widgetContent as WritableSignal<WidgetTableContent>;\n public readonly checked = computed(\n () =>\n (this.widgetWizardService.widgetContent() as WidgetTableContent)?.firstColumnAsTitle || false\n );\n\n public readonly selectedCollection$ = new BehaviorSubject<ValuePathItem | null>(null);\n public readonly documentDefinitionName$: Observable<string> = this.route.paramMap.pipe(\n map((paramMap: ParamMap) => paramMap.get('name') ?? '')\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n public readonly ValuePathType = ValuePathType;\n\n private readonly _contentValid = signal<boolean>(this.widgetWizardService.editMode());\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.widgetWizardService.widgetTitle.set(value?.title ?? '');\n\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n collection: value?.collection || '',\n defaultPageSize: value?.defaultPageSize || 5,\n }) as WidgetTableContent\n );\n\n this.changeValidEvent.emit(this.form.valid && this._contentValid());\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._contentValid.set(false);\n this._subscriptions.unsubscribe();\n this.changeValidEvent.emit(false);\n this.form.reset();\n }\n\n public onColumnUpdateEvent(event: {data: FieldsCaseWidgetValue[]; valid: boolean}): void {\n const {data, valid} = event;\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({...content, columns: data}) as WidgetTableContent\n );\n this._contentValid.set(valid);\n this.changeValidEvent.emit(valid && this.form.valid);\n }\n\n public onCheckedChange(firstColumnAsTitle: boolean): void {\n this.widgetWizardService.widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({...content, firstColumnAsTitle}) as WidgetTableContent\n );\n }\n\n public onCollectionSelected(item: ValuePathItem): void {\n this.selectedCollection$.next(item);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<form\n *ngIf=\"{theme: theme$ | async} as obs\"\n [formGroup]=\"form\"\n class=\"valtimo-dossier-management-widget-table__form\"\n>\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.defaultPageSizePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <div class=\"valtimo-dossier-management-widget-table__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"collection\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [type]=\"ValuePathType.COLLECTION\"\n (collectionSelected)=\"onCollectionSelected($event)\"\n ></valtimo-value-path-selector>\n </div>\n</form>\n\n<valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n></valtimo-dossier-management-widget-process-selector>\n\n<span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.columns' | translate }}\n</span>\n\n<valtimo-dossier-management-widget-fields-column\n [addTranslateKey]=\"'widgetTabManagement.content.table.addColumn'\"\n [columnData]=\"content()?.columns\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [selectedCollection]=\"selectedCollection$ | async\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n></valtimo-dossier-management-widget-fields-column>\n\n<section class=\"valtimo-dossier-management-widget-table__toggle\">\n <span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.options' | translate }}\n </span>\n\n <cds-toggle\n [checked]=\"checked()\"\n [label]=\"'widgetTabManagement.content.table.firstColumnAsTitle' | translate\"\n [onText]=\"'interface.yes' | translate\"\n [offText]=\"'interface.no' | translate\"\n (checkedChange)=\"onCheckedChange($event)\"\n ></cds-toggle>\n</section>\n","/*\n * Copyright 2015-2024 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 * from './collection/dossier-management-widget-collection.component';\nexport * from './custom/dossier-management-widget-custom.component';\nexport * from './fields/dossier-management-widget-fields.component';\nexport * from './formio/dossier-management-widget-formio.component';\nexport * from './process-selector/dossier-management-widget-process-selector.component';\nexport * from './table/dossier-management-widget-table.component';\n","/*\n * Copyright 2015-2024 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 {Type} from '@angular/core';\nimport {WidgetContentComponent} from './widget-content.model';\nimport {CaseWidgetType} from '@valtimo/dossier';\nimport {\n DossierManagementWidgetCollectionComponent,\n DossierManagementWidgetCustomComponent,\n DossierManagementWidgetFieldsComponent,\n DossierManagementWidgetFormioComponent,\n DossierManagementWidgetTableComponent,\n} from '../components/dossier-management-widget-configurators';\n\nenum WidgetWizardStep {\n TYPE,\n WIDTH,\n STYLE,\n CONTENT,\n}\n\nenum WidgetStyle {\n DEFAULT = 'default',\n HIGH_CONTRAST = 'high-contrast',\n}\n\ninterface WidgetTypeSelection {\n titleKey: string;\n descriptionKey: string;\n illustrationUrl: string;\n type: CaseWidgetType;\n component: Type<WidgetContentComponent>;\n}\n\nconst AVAILABLE_WIDGETS: WidgetTypeSelection[] = [\n {\n titleKey: 'widgetTabManagement.types.fields.title',\n descriptionKey: 'widgetTabManagement.types.fields.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/fields.svg',\n type: CaseWidgetType.FIELDS,\n component: DossierManagementWidgetFieldsComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.custom.title',\n descriptionKey: 'widgetTabManagement.types.custom.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/angular.svg',\n type: CaseWidgetType.CUSTOM,\n component: DossierManagementWidgetCustomComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.formio.title',\n descriptionKey: 'widgetTabManagement.types.formio.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/formio.svg',\n type: CaseWidgetType.FORMIO,\n component: DossierManagementWidgetFormioComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.table.title',\n descriptionKey: 'widgetTabManagement.types.table.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/table.svg',\n type: CaseWidgetType.TABLE,\n component: DossierManagementWidgetTableComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.collection.title',\n descriptionKey: 'widgetTabManagement.types.collection.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/collection.svg',\n type: CaseWidgetType.COLLECTION,\n component: DossierManagementWidgetCollectionComponent,\n },\n];\n\nconst WIDGET_WIDTH_LABELS: {[key: number]: string} = {\n 1: 'widgetTabManagement.width.small.title',\n 2: 'widgetTabManagement.width.medium.title',\n 3: 'widgetTabManagement.width.large.title',\n 4: 'widgetTabManagement.width.xtraLarge.title',\n};\n\nconst WIDGET_STYLE_LABELS: {[key: string]: string} = {\n [WidgetStyle.DEFAULT]: 'widgetTabManagement.style.default.title',\n [WidgetStyle.HIGH_CONTRAST]: 'widgetTabManagement.style.highContrast.title',\n};\n\nexport {\n WidgetWizardStep,\n WidgetTypeSelection,\n AVAILABLE_WIDGETS,\n WidgetStyle,\n WIDGET_WIDTH_LABELS,\n WIDGET_STYLE_LABELS,\n};\n","/*\n * Copyright 2015-2024 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 * from './list-column.model';\nexport * from './status.model';\nexport * from './tab.enum';\nexport * from './widget-content.model';\nexport * from './widget-editor.model';\nexport * from './widget-wizard.model';\n","import {computed, Injectable, Signal, signal, WritableSignal} from '@angular/core';\nimport {\n BasicCaseWidget,\n CaseWidgetAction,\n CaseWidgetType,\n CaseWidgetWidth,\n WidgetContentProperties,\n} from '@valtimo/dossier';\nimport {WidgetStyle, WidgetTypeSelection} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetWizardService {\n public readonly selectedWidget: WritableSignal<WidgetTypeSelection | null> = signal(null);\n\n public readonly widgetWidth: WritableSignal<CaseWidgetWidth | null> = signal(null);\n\n public readonly widgetStyle: WritableSignal<WidgetStyle | null> = signal(null);\n\n public readonly widgetContent: WritableSignal<WidgetContentProperties | null> = signal(null);\n\n public readonly widgetTitle: WritableSignal<string | null> = signal(null);\n\n public readonly widgetKey: WritableSignal<string | null> = signal(null);\n\n public readonly widgetActions: WritableSignal<CaseWidgetAction[] | undefined> = signal(undefined);\n\n public readonly widgetsConfig: Signal<BasicCaseWidget> = computed(() => ({\n key: this.widgetKey() ?? '',\n title: this.widgetTitle() ?? '',\n type: this.selectedWidget()?.type ?? CaseWidgetType.FIELDS,\n width: this.widgetWidth() ?? 4,\n highContrast: (this.widgetStyle() ?? WidgetStyle.DEFAULT) === WidgetStyle.HIGH_CONTRAST,\n properties: this.widgetContent() ?? ({} as any),\n actions: this.widgetActions() ?? [],\n }));\n\n public readonly editMode: WritableSignal<boolean> = signal(false);\n\n public resetWizard(): void {\n this.selectedWidget.set(null);\n this.widgetWidth.set(null);\n this.widgetStyle.set(null);\n this.widgetContent.set(null);\n this.widgetTitle.set(null);\n this.widgetKey.set(null);\n this.widgetActions.set(undefined);\n this.editMode.set(false);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CaseWidgetDisplayTypeKey} from '@valtimo/dossier';\nimport {ListItem} from 'carbon-components-angular';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetFieldsService {\n public readonly displayTypeItems: ListItem[] = [\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.TEXT}`\n ),\n id: CaseWidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.BOOLEAN}`\n ),\n id: CaseWidgetDisplayTypeKey.BOOLEAN,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.CURRENCY}`\n ),\n id: CaseWidgetDisplayTypeKey.CURRENCY,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.DATE}`\n ),\n id: CaseWidgetDisplayTypeKey.DATE,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.DATE_TIME}`\n ),\n id: CaseWidgetDisplayTypeKey.DATE_TIME,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.ENUM}`\n ),\n id: CaseWidgetDisplayTypeKey.ENUM,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.NUMBER}`\n ),\n id: CaseWidgetDisplayTypeKey.NUMBER,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${CaseWidgetDisplayTypeKey.PERCENT}`\n ),\n id: CaseWidgetDisplayTypeKey.PERCENT,\n selected: false,\n },\n ];\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService\n ) {}\n\n public getDisplayItemsSelected(control: AbstractControl): ListItem[] {\n const typeControlValue: ListItem = control.get('type')?.value;\n\n if (!typeControlValue) return this.displayTypeItems;\n\n return this.displayTypeItems.map((item: ListItem) => ({\n ...item,\n selected: typeControlValue.id === item.id && typeControlValue.selected,\n }));\n }\n\n public onDisplayTypeSelected(\n mainKeysArray: string[],\n formGroup: FormGroup,\n event: {item: ListItem}\n ): void {\n const extraControlKeys = Object.keys(formGroup.controls).filter(\n (key: string) => !mainKeysArray.includes(key)\n );\n\n extraControlKeys.forEach((controlKey: string) => formGroup.removeControl(controlKey));\n\n switch (event.item.id) {\n case CaseWidgetDisplayTypeKey.BOOLEAN:\n break;\n case CaseWidgetDisplayTypeKey.TEXT:\n formGroup.addControl('ellipsisCharacterLimit', this.fb.control(''));\n break;\n case CaseWidgetDisplayTypeKey.CURRENCY:\n formGroup.addControl('currencyCode', this.fb.control(''));\n formGroup.addControl('display', this.fb.control(''));\n formGroup.addControl('digitsInfo', this.fb.control(''));\n break;\n case CaseWidgetDisplayTypeKey.DATE:\n formGroup.addControl('format', this.fb.control(''));\n break;\n case CaseWidgetDisplayTypeKey.DATE_TIME:\n formGroup.addControl('format', this.fb.control(''));\n break;\n case CaseWidgetDisplayTypeKey.ENUM:\n formGroup.addControl(\n 'values',\n this.fb.array(\n [\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n }),\n ],\n Validators.required\n )\n );\n break;\n default:\n formGroup.addControl('digitsInfo', this.fb.control(''));\n break;\n }\n }\n}\n","/*\n * Copyright 2015-2024 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 * from './dossier-detail.service';\nexport * from './dossier-export.service';\nexport * from './tab-management.service';\nexport * from './tab.service';\nexport * from './widget-json-editor.service';\nexport * from './widget-tab-management.service';\nexport * from './widget-wizard.service';\nexport * from './widget-fields.service';\n","/*\n * Copyright 2015-2024 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 */\nimport {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ModalComponent} from '@valtimo/components';\nimport {\n DocumentDefinition,\n DocumentService,\n ProcessDocumentDefinition,\n ProcessDocumentDefinitionRequest,\n} from '@valtimo/document';\nimport {ProcessDefinition, ProcessService} from '@valtimo/process';\nimport {NotificationService} from 'carbon-components-angular';\nimport {switchMap, take} from 'rxjs';\nimport {DossierDetailService} from '../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-connect-modal',\n templateUrl: './dossier-management-connect-modal.component.html',\n styleUrls: ['./dossier-management-connect-modal.component.scss'],\n providers: [NotificationService],\n})\nexport class DossierManagementConnectModalComponent implements OnInit {\n @ViewChild('dossierConnectModal') private readonly _modal: ModalComponent;\n @Output() public reloadProcessDocumentDefinitions = new EventEmitter<any>();\n\n public documentDefinition: DocumentDefinition | null = null;\n public processDefinitions: ProcessDefinition[];\n public newDocumentProcessDefinition: ProcessDefinition | null = null;\n public newDocumentProcessDefinitionInit = true;\n public newDocumentProcessDefinitionStartableByUser = false;\n public processDocumentDefinitionExists: any = {};\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly dossierDetailService: DossierDetailService,\n private readonly notificationService: NotificationService,\n private readonly processService: ProcessService,\n private readonly translateService: TranslateService\n ) {}\n\n public loadProcessDocumentDefinitions(): void {\n if (!this.documentDefinition) {\n return;\n }\n const {name, version} = this.documentDefinition.id;\n this.processDocumentDefinitionExists = {};\n this.documentService\n .findProcessDocumentDefinitionsByVersion(name, version)\n .subscribe((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n processDocumentDefinitions.forEach(\n (processDocumentDefinition: ProcessDocumentDefinition) => {\n this.processDocumentDefinitionExists[\n processDocumentDefinition.id.processDefinitionKey\n ] = true;\n }\n );\n });\n }\n\n public loadProcessDefinitions(): void {\n this.processService\n .getProcessDefinitions()\n .subscribe((processDefinitions: ProcessDefinition[]) => {\n this.processDefinitions = processDefinitions;\n });\n }\n\n public ngOnInit(): void {\n this.loadProcessDefinitions();\n }\n\n public openModal(dossier: DocumentDefinition): void {\n this.documentDefinition = dossier;\n this.newDocumentProcessDefinition = null;\n this.newDocumentProcessDefinitionInit = true;\n this.newDocumentProcessDefinitionStartableByUser = false;\n this.loadProcessDocumentDefinitions();\n this._modal.show();\n }\n\n public submit(): void {\n if (!this.documentDefinition || !this.newDocumentProcessDefinition) {\n return;\n }\n\n const request: ProcessDocumentDefinitionRequest = {\n canInitializeDocument: this.newDocumentProcessDefinitionInit,\n documentDefinitionName: this.documentDefinition.id.name,\n documentDefinitionVersion: this.documentDefinition.id.version,\n processDefinitionKey: this.newDocumentProcessDefinition.key,\n startableByUser: this.newDocumentProcessDefinitionStartableByUser,\n };\n\n this.dossierDetailService.selectedVersionNumber$\n .pipe(\n switchMap((documentDefinitionVersion: number) =>\n this.documentService.createProcessDocumentDefinition({\n ...request,\n documentDefinitionVersion,\n })\n ),\n take(1)\n )\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.linkSuccess'\n ),\n duration: 5000,\n });\n this.reloadProcessDocumentDefinitions.emit();\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.linkFailure'\n ),\n duration: 5000,\n });\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-modal\n #dossierConnectModal\n elementId=\"dossierConnectModal\"\n [title]=\"documentDefinition ? documentDefinition.schema.title : 'Document definition'\"\n subtitle=\"Connect document definition to process definition\"\n showFooter=\"true\"\n>\n <div body *ngIf=\"documentDefinition\">\n <p>\n {{ 'Select process definition for document definition' | translate }}\n <strong>{{ documentDefinition.id.name }} *</strong>\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <select class=\"form-control\" [(ngModel)]=\"newDocumentProcessDefinition\">\n <option [ngValue]=\"null\">{{ 'dossierManagement.selectProcessDef' | translate }}</option>\n <option\n *ngFor=\"let processDefinition of processDefinitions\"\n [disabled]=\"processDocumentDefinitionExists[processDefinition.key]\"\n [ngValue]=\"processDefinition\"\n >\n {{ processDefinition.name }} ({{ processDefinition.key }})\n </option>\n </select>\n </div>\n <p>\n {{ 'Select options for the selected process' | translate }}\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.processCreatesCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionInit\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.processCreatesCase' | translate\n }}</span>\n </label>\n <label\n class=\"custom-control custom-checkbox custom-control-inline ml-2 pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.startableWithinCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionStartableByUser\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.startableWithinCase' | translate\n }}</span>\n </label>\n </div>\n </div>\n <div footer>\n <button\n (click)=\"submit()\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\"\n [disabled]=\"!newDocumentProcessDefinition\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2024 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, ViewChild} from '@angular/core';\nimport {\n DocumentService,\n DocumentDefinition,\n UndeployDocumentDefinitionResult,\n} from '@valtimo/document';\nimport {MenuService, ModalComponent} from '@valtimo/components';\nimport {ToastrService} from 'ngx-toastr';\nimport {Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-dossier-management-remove-modal',\n templateUrl: './dossier-management-remove-modal.component.html',\n styleUrls: ['./dossier-management-remove-modal.component.scss'],\n})\nexport class DossierManagementRemoveModalComponent {\n public documentDefinition: DocumentDefinition | null = null;\n public errors: string[] = [];\n @ViewChild('documentDefinitionRemoveModal') modal: ModalComponent;\n\n constructor(\n private documentService: DocumentService,\n private toasterService: ToastrService,\n private router: Router,\n private translateService: TranslateService,\n private menuService: MenuService\n ) {}\n\n openModal(documentDefinition: DocumentDefinition) {\n this.documentDefinition = documentDefinition;\n this.modal.show();\n }\n\n removeDocumentDefinition() {\n this.documentService\n .removeDocumentDefinitionForManagement(this.documentDefinition.id.name)\n .subscribe(\n () => {\n this.menuService.reload();\n this.router.navigate(['/dossier-management']);\n this.toasterService.success(\n this.translateService.instant('remove-document-definition-success')\n );\n },\n (result: UndeployDocumentDefinitionResult) => {\n this.errors = result.errors;\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-modal\n #documentDefinitionRemoveModal\n elementId=\"documentDefinitionRemoveModal\"\n [title]=\"documentDefinition ? documentDefinition.schema.title : 'Document definition'\"\n subtitle=\"{{ 'Remove document definition' | translate }}\"\n showFooter=\"true\"\n>\n <div body *ngIf=\"documentDefinition\">\n <div class=\"alert alert-contrast alert-danger mt-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div\n class=\"message\"\n [innerHTML]=\"'remove-document-definition-confirmation' | translate\"\n ></div>\n </div>\n <div *ngIf=\"errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n </div>\n <div footer>\n <button (click)=\"removeDocumentDefinition()\" class=\"btn btn-primary\" data-dismiss=\"modal\">\n {{ 'remove-document-definition-confirmation-button' | translate }}\n </button>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2024 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 ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, tap} from 'rxjs';\nimport {ListItem, Notification, NotificationService} from 'carbon-components-angular';\nimport {DossierDetailService, DossierExportService} from '../../services';\nimport {TranslateService} from '@ngx-translate/core';\nimport {DOCUMENT} from '@angular/common';\nimport {HttpResponse} from '@angular/common/http';\nimport {DocumentService} from '@valtimo/document';\nimport {take} from 'rxjs/operators';\nimport {DossierManagementRemoveModalComponent} from '../dossier-management-remove-modal/dossier-management-remove-modal.component';\nimport {PageHeaderService} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-dossier-management-detail-container-actions',\n templateUrl: './dossier-management-detail-container-actions.component.html',\n styleUrls: ['./dossier-management-detail-container-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [NotificationService],\n})\nexport class DossierManagementDetailContainerActionsComponent {\n @ViewChild('exportingMessage')\n private readonly _exportMessageTemplateRef: TemplateRef<HTMLDivElement>;\n @ViewChild('dossierRemoveModal')\n private readonly _dossierRemoveModal: DossierManagementRemoveModalComponent;\n\n @Input() public documentDefinitionTitle = '';\n @Input() public set documentDefinitionName(value: string) {\n this.dossierDetailService.setSelectedDocumentDefinitionName(value);\n }\n @Output() public versionSet = new EventEmitter<number>();\n\n public readonly CARBON_THEME = 'g10';\n\n public readonly exporting$ = new BehaviorSubject<boolean>(false);\n public readonly selectedVersionNumber$ = this.dossierDetailService.selectedVersionNumber$;\n private readonly _previousSelectedVersionNumber$ =\n this.dossierDetailService.previousSelectedVersionNumber$;\n private readonly _documentDefinitionName$ =\n this.dossierDetailService.selectedDocumentDefinitionName$;\n public readonly loadingVersion$ = new BehaviorSubject<boolean>(true);\n private readonly _documentDefinitionVersions$ = this._documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getDocumentDefinitionVersions(documentDefinitionName)\n ),\n tap(res => {\n this.dossierDetailService.setSelectedVersionNumber(this.findLargestInArray(res.versions));\n this.loadingVersion$.next(false);\n })\n );\n\n public readonly versionListItems$: Observable<Array<ListItem>> = combineLatest([\n this._documentDefinitionVersions$,\n this.selectedVersionNumber$,\n this._previousSelectedVersionNumber$,\n this.translateService.stream('key'),\n ]).pipe(\n map(\n ([versionsRes, selectVersionNumber, previousVersionNumber]) =>\n versionsRes?.versions?.map(version => ({\n content: `${this.translateService.instant('dossierManagement.version')}${version}`,\n selected: selectVersionNumber === version || previousVersionNumber === version,\n id: `${version}`,\n })) || []\n )\n );\n public readonly selectedDocumentDefinition$ = this.dossierDetailService.documentDefinition$;\n\n public readonly selectedDocumentDefinitionIsReadOnly$ =\n this.dossierDetailService.selectedDocumentDefinitionIsReadOnly$;\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n private _currentNotification!: Notification;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private readonly notificationService: NotificationService,\n private readonly dossierExportService: DossierExportService,\n private readonly translateService: TranslateService,\n private readonly documentService: DocumentService,\n private readonly dossierDetailService: DossierDetailService,\n private readonly pageHeaderService: PageHeaderService\n ) {}\n\n public export(): void {\n this.closeCurrentNotification();\n\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._exportMessageTemplateRef,\n });\n let selectedVersionNumber!: number;\n\n this.startExporting();\n\n combineLatest([this.selectedVersionNumber$, this._documentDefinitionName$])\n .pipe(\n take(1),\n tap(([selectedVersion]) => (selectedVersionNumber = selectedVersion)),\n switchMap(([selectedVersion, documentDefinitionName]) =>\n this.dossierExportService.exportDocumentDefinition(\n documentDefinitionName,\n selectedVersion\n )\n )\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('dossierManagement.exportSuccessTitle'),\n duration: 5000,\n });\n this.downloadZip(response, selectedVersionNumber);\n this.stopExporting();\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('dossierManagement.exportErrorTitle'),\n message: this.translateService.instant('dossierManagement.exportErrorMessage'),\n duration: 5000,\n });\n this.stopExporting();\n },\n });\n }\n\n public setVersion(version: any): void {\n this.versionSet.emit(Number(version.item.id));\n }\n\n public openDossierRemoveModal(): void {\n this.selectedDocumentDefinition$.pipe(take(1)).subscribe(definition => {\n this._dossierRemoveModal.openModal(definition);\n });\n }\n\n private startExporting(): void {\n this.exporting$.next(true);\n }\n\n private stopExporting(): void {\n this.exporting$.next(false);\n }\n\n private downloadZip(response: HttpResponse<Blob>, versionNumber: number): void {\n const link = document.createElement('a');\n const contentDisposition = response.headers.get('content-disposition');\n const splitContentDisposition = contentDisposition.split('filename=');\n const fileName = splitContentDisposition.length > 1 && splitContentDisposition[1];\n\n link.href = this.document.defaultView.URL.createObjectURL(response.body);\n link.download = fileName || `${this.documentDefinitionName}_${versionNumber}.valtimo.zip`;\n link.target = '_blank';\n link.click();\n link.remove();\n }\n\n private closeCurrentNotification(): void {\n if (this._currentNotification) {\n this.notificationService.close(this._currentNotification);\n }\n }\n\n private findLargestInArray(array: Array<number>): number {\n return array.reduce(function (a, b) {\n return a > b ? a : b;\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 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\n class=\"dossier-actions\"\n *ngIf=\"{\n exporting: exporting$ | async,\n loadingVersion: loadingVersion$ | async,\n versionListItems: versionListItems$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n selectedDocumentDefinitionIsReadOnly: selectedDocumentDefinitionIsReadOnly$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n [ngClass]=\"{'--compact': obs.compactMode}\"\n>\n <div class=\"dossier-metadata\">\n <ng-container *ngTemplateOutlet=\"versionSelection; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"readOnly; context: {obs: obs}\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"exportMenu; context: {obs: obs}\"></ng-container>\n</div>\n\n<ng-template #versionSelection let-obs=\"obs\">\n <cds-dropdown\n class=\"version-selection\"\n [disabled]=\"obs.loadingVersion || (obs.versionListItems.length || []) === 1\"\n [skeleton]=\"obs.loadingVersion\"\n (selected)=\"setVersion($event)\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n >\n <cds-dropdown-list [items]=\"obs.versionListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n</ng-template>\n\n<ng-template #exportMenu let-obs=\"obs\">\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [width]=\"250\"\n [customTrigger]=\"customTrigger\"\n [offset]=\"{y: 48, x: 37}\"\n class=\"overflow-button\"\n >\n <cds-overflow-menu-option\n [id]=\"'exportDocumentDefinition'\"\n [disabled]=\"obs.exporting || obs.loadingVersion\"\n (selected)=\"export()\"\n >{{\n 'dossierManagement.export' | translate: {value: documentDefinitionTitle}\n }}</cds-overflow-menu-option\n >\n\n <cds-overflow-menu-option\n *ngIf=\"obs.selectedDocumentDefinition && !obs.selectedDocumentDefinition.readOnly\"\n [id]=\"'removeDocumentDefinition'\"\n [disabled]=\"obs.exporting || obs.loadingVersion\"\n (selected)=\"openDossierRemoveModal()\"\n >{{ 'Remove document definition' | translate }}</cds-overflow-menu-option\n >\n </cds-overflow-menu>\n</ng-template>\n\n<ng-template #customTrigger>\n <button cdsButton=\"tertiary\" [size]=\"(compactMode$ | async) ? 'sm' : 'md'\">\n {{ 'dossierManagement.more' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"overflow-menu--vertical\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #exportingMessage>\n <div class=\"exporting-message\">\n <span class=\"cds--inline-notification__title\">{{\n 'dossierManagement.preparingDownload' | translate\n }}</span>\n\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #readOnly let-obs=\"obs\">\n <cds-tag *ngIf=\"obs.selectedDocumentDefinitionIsReadOnly\" type=\"blue\">{{\n 'dossierManagement.readonly' | translate\n }}</cds-tag>\n</ng-template>\n\n<valtimo-dossier-management-remove-modal\n #dossierRemoveModal\n></valtimo-dossier-management-remove-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {Edit16, Save16} from '@carbon/icons';\nimport {ConfirmationModalComponent, EditorModel, PageHeaderService} from '@valtimo/components';\nimport {\n DocumentDefinition,\n DocumentDefinitionCreateRequest,\n DocumentService,\n} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {map, switchMap, take, tap} from 'rxjs/operators';\nimport {DossierDetailService} from '../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-document-definition',\n templateUrl: './dossier-management-document-definition.component.html',\n styleUrls: ['./dossier-management-document-definition.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementDocumentDefinitionComponent {\n @ViewChild('cancelModal') public cancelModal: ConfirmationModalComponent;\n @Input() documentDefinitionName: string;\n @Output() cancelRedirect = new EventEmitter();\n @Output() confirmRedirect = new EventEmitter();\n @Output() pendingChangesUpdate = new EventEmitter<boolean>();\n\n public readonly loadingDocumentDefinition$ = this.dossierDetailService.loadingDocumentDefinition$;\n private readonly _refreshEditor$ = new BehaviorSubject<null>(null);\n public readonly documentDefinitionModel$: Observable<EditorModel> = this._refreshEditor$.pipe(\n switchMap(() => this.dossierDetailService.documentDefinitionModel$)\n );\n\n private readonly _pendingChanges$ = new BehaviorSubject<boolean>(false);\n public readonly pendingChanges$: Observable<boolean> = this._pendingChanges$.pipe(\n tap((pendingChanges: boolean) => {\n this.pendingChangesUpdate.emit(pendingChanges);\n })\n );\n public readonly editActive$ = new BehaviorSubject<boolean>(false);\n public readonly showSaveConfirmation$ = new BehaviorSubject<boolean>(false);\n public readonly showCancelConfirmation$ = new BehaviorSubject<boolean>(false);\n public readonly selectedDocumentDefinition$ = this.dossierDetailService.documentDefinition$.pipe(\n tap(\n (documentDefinition: DocumentDefinition) => (this._initialId = documentDefinition.schema.$id)\n )\n );\n private readonly _changeIsValid$ = new BehaviorSubject<boolean>(false);\n private readonly _idChanged$ = new BehaviorSubject<boolean>(false);\n\n public readonly saveButtonDisabled$ = combineLatest([\n this.pendingChanges$,\n this._changeIsValid$,\n this._idChanged$,\n ]).pipe(\n map(\n ([pendingChanges, changeIsValid, idChanged]) => !pendingChanges || !changeIsValid || idChanged\n )\n );\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n private _changesToSave: any;\n private _initialId: string;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly dossierDetailService: DossierDetailService,\n private readonly iconService: IconService,\n private readonly pageHeaderService: PageHeaderService\n ) {\n this.iconService.registerAll([Edit16, Save16]);\n }\n\n public downloadDefinition(): void {\n this.selectedDocumentDefinition$.pipe(take(1)).subscribe(definition => {\n const dataString =\n 'data:text/json;charset=utf-8,' +\n encodeURIComponent(JSON.stringify(definition.schema, null, 2));\n const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n if (!downloadAnchorElement) {\n return;\n }\n\n downloadAnchorElement.setAttribute('href', dataString);\n downloadAnchorElement.setAttribute(\n 'download',\n `${definition.id.name}-v${definition.id.version}.json`\n );\n downloadAnchorElement.click();\n });\n }\n\n public discardChanges(): void {\n this.showCancelConfirmation$.next(false);\n this.confirmRedirect.emit();\n this.resetEditorState();\n }\n\n public keepEditingDefinition(): void {\n this.cancelRedirect.emit();\n this.showSaveConfirmation$.next(false);\n this.showCancelConfirmation$.next(false);\n }\n\n public onCancelClick(pendingChanges: boolean): void {\n if (pendingChanges) {\n this.showCancelConfirmation$.next(true);\n return;\n }\n\n this.resetEditorState();\n }\n\n public saveDefinition(): void {\n this.showSaveConfirmation$.next(false);\n this.editActive$.next(false);\n const newDocumentDefinition = new DocumentDefinitionCreateRequest(\n JSON.stringify(this._changesToSave)\n );\n\n this.documentService\n .createDocumentDefinitionForManagement(newDocumentDefinition)\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.dossierDetailService.setSelectedDocumentDefinitionName(this.documentDefinitionName);\n this.confirmRedirect.emit();\n this._pendingChanges$.next(false);\n },\n error: () => {\n this.cancelRedirect.emit();\n },\n });\n }\n\n public onEditClick(): void {\n this.editActive$.next(true);\n }\n\n public onSaveClick(): void {\n this.showSaveConfirmation$.next(true);\n }\n\n public onValueChangeEvent(value: string): void {\n this._pendingChanges$.next(true);\n this._changesToSave = JSON.parse(value);\n const id: string = this._changesToSave.$id;\n this._idChanged$.next(this._initialId !== id);\n }\n\n public onValidEvent(valid: boolean): void {\n this._changeIsValid$.next(valid);\n }\n\n public onCanDeactivate(): void {\n this.showCancelConfirmation$.next(true);\n }\n\n private resetEditorState(): void {\n this._refreshEditor$.next(null);\n this.editActive$.next(false);\n this._pendingChanges$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-container\n *ngIf=\"{\n documentDefinitionModel: documentDefinitionModel$ | async,\n editActive: editActive$ | async,\n loadingDocumentDefinition: loadingDocumentDefinition$ | async,\n pendingChanges: pendingChanges$ | async,\n saveButtonDisabled: saveButtonDisabled$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n>\n <div class=\"cds--toolbar-content\">\n <ng-container *ngIf=\"!obs.editActive; else editActive\">\n <button\n cdsButton=\"ghost\"\n (click)=\"downloadDefinition()\"\n [disabled]=\"obs.loadingDocumentDefinition || !obs.selectedDocumentDefinition\"\n >\n {{ 'interface.download' | translate }}\n\n <svg cdsIcon=\"download\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"obs.selectedDocumentDefinition?.readOnly\"\n (click)=\"onEditClick()\"\n >\n {{ 'interface.edit' | translate }}\n\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </ng-container>\n </div>\n\n <valtimo-editor\n *ngIf=\"!obs.loadingDocumentDefinition; else loading\"\n [model]=\"obs.documentDefinitionModel\"\n [disabled]=\"!obs.editActive\"\n (validEvent)=\"onValidEvent($event)\"\n (valueChangeEvent)=\"onValueChangeEvent($event)\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"96\"\n >\n </valtimo-editor>\n\n <a id=\"downloadAnchorElement\" style=\"display: none\"></a>\n\n <ng-template #editActive>\n <button cdsButton=\"secondary\" (click)=\"onCancelClick(obs.pendingChanges)\">\n {{ 'interface.cancel' | translate }}\n\n <svg cdsIcon=\"close\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"obs.saveButtonDisabled\" (click)=\"onSaveClick()\">\n {{ 'interface.save' | translate }}\n\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </ng-template>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showSaveConfirmation$\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n confirmButtonTextTranslationKey=\"interface.save\"\n contentTranslationKey=\"dossierManagement.documentDefinition.saveModalContent\"\n titleTranslationKey=\"interface.save\"\n (cancelEvent)=\"keepEditing()\"\n (confirmEvent)=\"saveDefinition()\"\n ></valtimo-confirmation-modal>\n\n <valtimo-confirmation-modal\n #cancelModal\n [showModalSubject$]=\"showCancelConfirmation$\"\n cancelButtonTextTranslationKey=\"interface.pendingChanges.keepEditing\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.discard\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.documentDefinition.cancelModal.content\"\n optionalButtonTextTranslationKey=\"interface.save\"\n optionalButtonType=\"secondary\"\n titleTranslationKey=\"dossierManagement.documentDefinition.cancelModal.title\"\n showOptionalButton=\"true\"\n spacerAfterCancelButton=\"true\"\n (cancelEvent)=\"keepEditingDefinition()\"\n (confirmEvent)=\"discardChanges()\"\n (optionalEvent)=\"saveDefinition()\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Inject,\n Optional,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {ZGW_CASE_CONFIGURATION_EXTENSIONS_TOKEN} from '@valtimo/config';\nimport {DocumentDefinition, DocumentService} from '@valtimo/document';\nimport {Observable, switchMap} from 'rxjs';\n\n@Component({\n selector: 'valtimo-dossier-management-detail',\n templateUrl: './dossier-management-detail.component.html',\n styleUrls: ['./dossier-management-detail.component.scss'],\n})\nexport class DossierManagementDetailComponent implements AfterViewInit {\n @ViewChild('extensions', {read: ViewContainerRef})\n private _extensions: ViewContainerRef;\n\n public readonly documentDefinition$: Observable<DocumentDefinition> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.documentService.getDocumentDefinitionForManagement(params.get('name') ?? '')\n )\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n @Optional()\n @Inject(ZGW_CASE_CONFIGURATION_EXTENSIONS_TOKEN)\n private readonly zgwCaseConfigurationExtensionComponents: Type<any>[],\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n public ngAfterViewInit(): void {\n this.renderExtensions();\n }\n\n private renderExtensions(): void {\n if (\n !Array.isArray(this.zgwCaseConfigurationExtensionComponents) ||\n this.zgwCaseConfigurationExtensionComponents.length === 0\n ) {\n return;\n }\n\n this.zgwCaseConfigurationExtensionComponents.forEach(extensionComponent => {\n this._extensions.createComponent(extensionComponent);\n });\n\n this.cdr.detectChanges();\n }\n}\n","<!--\n ~ Copyright 2015-2024 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=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"row pt-4 mb-5 pb-4 pl-2 pr-2\">\n <div class=\"col-10 offset-1\">\n <ng-template #extensions></ng-template>\n\n <valtimo-dossier-management-assignee\n *ngIf=\"documentDefinition$ | async\"\n ></valtimo-dossier-management-assignee>\n </div>\n </div>\n </valtimo-widget>\n</div>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {ActivatedRoute} from '@angular/router';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CARBON_CONSTANTS,\n ColumnConfig,\n MoveRowDirection,\n MoveRowEvent,\n MultiInputOutput,\n MultiInputValues,\n SelectItem,\n TableColumn,\n ValuePathSelectorPrefix,\n ViewType,\n} from '@valtimo/components';\nimport {\n SearchField,\n SearchFieldDataType,\n SearchFieldFieldType,\n SearchFieldMatchType,\n} from '@valtimo/config';\nimport {DocumentService} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\n\n@Component({\n selector: 'valtimo-dossier-management-search-fields',\n templateUrl: './dossier-management-search-fields.component.html',\n styleUrls: ['./dossier-management-search-fields.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementSearchFieldsComponent implements OnInit, OnDestroy, AfterViewInit {\n @Output() searchField: EventEmitter<SearchField> = new EventEmitter();\n\n public readonly downloadName$ = new BehaviorSubject<string>('');\n public readonly downloadUrl$ = new BehaviorSubject<SafeUrl | undefined>(undefined);\n public readonly disableInput$ = new BehaviorSubject<boolean>(false);\n public readonly selectedSearchField$ = new BehaviorSubject<SearchField | undefined>(undefined);\n public readonly selectedDeleteSearchField$ = new BehaviorSubject<SearchField | undefined>(\n undefined\n );\n public readonly formData$ = new BehaviorSubject<SearchField | null>(null);\n public readonly valid$ = new BehaviorSubject<boolean>(false);\n public readonly showFields$ = new BehaviorSubject<boolean>(false);\n public readonly modalShowing$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n private _subscriptions = new Subscription();\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.showEditModal.bind(this),\n type: 'normal',\n },\n {\n callback: this.showDeleteModal.bind(this),\n label: 'interface.delete',\n type: 'danger',\n },\n ];\n public readonly fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'title',\n label: 'searchFieldsOverview.title',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'key',\n label: 'searchFieldsOverview.key',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'path',\n label: 'searchFieldsOverview.path',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'dataType',\n label: 'searchFieldsOverview.dataType',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'fieldType',\n label: 'searchFieldsOverview.fieldType',\n },\n ];\n\n public readonly dropdownColumns$ = new BehaviorSubject<Array<TableColumn>>([\n {\n labelTranslationKey: 'searchFieldsOverview.id',\n dataKey: 'key',\n },\n {\n labelTranslationKey: 'searchFieldsOverview.text',\n dataKey: 'value',\n },\n ]);\n\n private readonly DATA_TYPES: Array<SearchFieldDataType> = [\n 'text',\n 'number',\n 'date',\n 'datetime',\n 'boolean',\n ];\n\n public readonly dataTypeItems$: Observable<Array<SelectItem>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.DATA_TYPES.map(dataType => ({\n id: dataType,\n text: this.translateService.instant(`searchFields.${dataType}`),\n }))\n )\n );\n\n public readonly dataTypeIsBoolean$ = new BehaviorSubject<boolean>(false);\n private readonly dataTypeIsText$ = new BehaviorSubject<boolean>(false);\n private readonly ALL_FIELD_TYPES: Array<SearchFieldFieldType> = [\n 'single',\n 'range',\n 'single-select-dropdown',\n 'multi-select-dropdown',\n ];\n private readonly NON_TEXT_FIELD_TYPES: Array<SearchFieldFieldType> = ['single', 'range'];\n private readonly BOOLEAN_FIELD_TYPES: Array<SearchFieldFieldType> = ['single'];\n public readonly fieldTypeItems$: Observable<Array<SelectItem>> = combineLatest([\n this.dataTypeIsBoolean$,\n this.dataTypeIsText$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeIsBoolean, dataTypeIsText]) => {\n if (dataTypeIsBoolean) {\n return this.BOOLEAN_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n } else if (!dataTypeIsText) {\n return this.NON_TEXT_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n }\n\n return this.ALL_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n })\n );\n\n private readonly MATCH_TYPES: Array<SearchFieldMatchType> = ['exact', 'like'];\n public readonly matchTypeItems$: Observable<Array<SelectItem>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.MATCH_TYPES.map(matchType => ({\n id: matchType,\n text: this.translateService.instant(`searchFieldsOverview.${matchType}`),\n }))\n )\n );\n\n private _documentDefinitionName: string;\n public readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName),\n tap((documentDefinitionName: string) => (this._documentDefinitionName = documentDefinitionName))\n );\n\n private cachedSearchFields!: Array<SearchField>;\n\n public searchFieldActionTypeIsAdd: boolean;\n public loadingSearchFields = true;\n\n private readonly refreshSearchFields$ = new BehaviorSubject<null>(null);\n\n private readonly searchFields$: Observable<Array<SearchField>> = combineLatest([\n this.documentDefinitionName$,\n this.refreshSearchFields$,\n ]).pipe(\n switchMap(([documentDefinitionName]) =>\n this.documentService.getDocumentSearchFields(documentDefinitionName)\n ),\n tap(searchFields => {\n this.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {\n if (searchFields && Array.isArray(searchFields) && searchFields?.length > 0) {\n this.setDownload(documentDefinitionName, searchFields);\n }\n });\n }),\n tap(searchFields => {\n this.cachedSearchFields = searchFields;\n this.loadingSearchFields = false;\n })\n );\n\n public readonly translatedSearchFields$: Observable<Array<SearchField>> = combineLatest([\n this.searchFields$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([searchFields]) =>\n searchFields.map(searchField => ({\n ...searchField,\n title: searchField.title ? searchField.title : '',\n dataType: this.translateService.instant(`searchFields.${searchField.dataType}`),\n matchType: this.translateService.instant(`searchFieldsOverview.${searchField.matchType}`),\n fieldType: this.translateService.instant(`searchFieldsOverview.${searchField.fieldType}`),\n }))\n )\n );\n\n public readonly fieldTypeIsDropdown$ = new BehaviorSubject<boolean>(false);\n\n public readonly dropdownDataProviderNames$: Observable<Array<SelectItem>> = combineLatest([\n this.documentService.getDropdownDataProviders(),\n this.translateService.stream('key'),\n ]).pipe(\n map(([providers]) =>\n providers.map(provider => ({\n id: provider,\n text: this.translateService.instant(`searchFieldsOverview.${provider}`),\n }))\n )\n );\n\n private readonly modifiedDropdownValues$ = new BehaviorSubject<MultiInputValues>([]);\n\n public readonly initialDropdownValues$: Observable<MultiInputValues> = combineLatest([\n this.documentDefinitionName$,\n this.formData$,\n ]).pipe(\n distinctUntilChanged(\n ([prevDocumentDefinitionName, prevFormData], [currDocumentDefinitionName, currFormData]) =>\n prevDocumentDefinitionName === currDocumentDefinitionName &&\n prevFormData?.dropdownDataProvider === currFormData?.dropdownDataProvider &&\n prevFormData?.key === currFormData?.key\n ),\n switchMap(([documentDefinitionName, formData]) => {\n if (!formData || !formData.dropdownDataProvider) {\n return of([]);\n }\n\n return this.documentService\n .getDropdownData(formData.dropdownDataProvider, documentDefinitionName, formData.key)\n .pipe(\n map(dropdownData =>\n dropdownData\n ? Object.keys(dropdownData).map(dropdownFieldKey => ({\n key: dropdownFieldKey,\n value: dropdownData[dropdownFieldKey],\n }))\n : []\n )\n );\n })\n );\n\n public readonly showMatchTypes$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n ]).pipe(map(([dataTypeIsText, fieldTypeIsDropdown]) => dataTypeIsText && !fieldTypeIsDropdown));\n\n public readonly showReadonlyDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n !!formData?.dropdownDataProvider &&\n !this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n public readonly showInputDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n !!formData?.dropdownDataProvider &&\n this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n public readonly CARBON_THEME = 'white';\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly sanitizer: DomSanitizer,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n }\n\n public ngOnInit(): void {\n this.openSelectedSearchFieldSubscription();\n }\n\n public ngAfterViewInit(): void {\n this.openModalShowingSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public searchFieldClicked(searchField: SearchField, searchFieldActionTypeIsAdd: boolean): void {\n this.disableInput$.pipe(take(1)).subscribe(inputDisabled => {\n if (!inputDisabled) {\n this.searchFieldActionTypeIsAdd = searchFieldActionTypeIsAdd;\n const searchFieldToSelect = this.cachedSearchFields.find(\n field => field.key === searchField.key\n );\n this.selectedSearchField$.next(searchFieldToSelect || ({} as SearchField));\n this.showModal();\n }\n });\n }\n\n public formValueChange(data: SearchField): void {\n setTimeout(() => {\n this.nextIfChanged(this.dataTypeIsText$, data.dataType === 'text');\n this.nextIfChanged(this.dataTypeIsBoolean$, data.dataType === 'boolean');\n this.nextIfChanged(this.fieldTypeIsDropdown$, this.isFieldTypeDropdown(data.fieldType));\n this.nextIfChanged(this.formData$, data);\n this.nextIfChanged(this.valid$, this.isValid(data));\n }, 0);\n }\n\n public pathValueChange(path: string): void {\n this.formData$.pipe(take(1)).subscribe(currentData => {\n const newData = {...currentData, path};\n this.nextIfChanged(this.formData$, newData);\n this.nextIfChanged(this.valid$, this.isValid(newData));\n });\n }\n\n public dropdownDatalistChange(data: MultiInputOutput): void {\n this.modifiedDropdownValues$.next(data as MultiInputValues);\n }\n\n public onMoveRowClick(moveEvent: MoveRowEvent, documentDefinitionName: string): void {\n const {index, direction} = moveEvent;\n const moveUp = direction === MoveRowDirection.UP;\n const searchFields = [...this.cachedSearchFields];\n const searchFieldRow = searchFields[index];\n\n const searchFieldIndex = searchFields.findIndex(field => field.key === searchFieldRow.key);\n const foundSearchField = {...searchFields[searchFieldIndex]};\n const filteredSearchFields = searchFields.filter(field => field.key !== searchFieldRow.key);\n const multipleSearchFields = searchFields?.length > 1;\n\n if (multipleSearchFields && moveUp && searchFieldIndex > 0) {\n const searchFieldBeforeKey = `${searchFields[searchFieldIndex - 1].key}`;\n const searchFieldBeforeIndex = filteredSearchFields.findIndex(\n field => field.key === searchFieldBeforeKey\n );\n filteredSearchFields.splice(searchFieldBeforeIndex, 0, foundSearchField);\n this.updateSearchFields(documentDefinitionName, filteredSearchFields);\n } else if (multipleSearchFields && !moveUp && searchFieldIndex < searchFields?.length) {\n const searchFieldAfterKey = `${searchFields[searchFieldIndex + 1].key}`;\n const searchFieldAfterIndex = filteredSearchFields.findIndex(\n field => field.key === searchFieldAfterKey\n );\n filteredSearchFields.splice(searchFieldAfterIndex + 1, 0, foundSearchField);\n this.updateSearchFields(documentDefinitionName, filteredSearchFields);\n }\n }\n\n public onDeleteSelectedSearchFieldConfirm(selectedSearchField: SearchField): void {\n this.disableInput();\n\n if (this.dropdownDataProviderSupportsUpdates(selectedSearchField?.dropdownDataProvider)) {\n this.documentService\n .deleteDropdownData(\n selectedSearchField?.dropdownDataProvider ?? '',\n this._documentDefinitionName,\n selectedSearchField.key\n )\n .subscribe();\n }\n\n this.documentService\n .deleteDocumentSearch(this._documentDefinitionName, selectedSearchField.key)\n .subscribe({\n next: () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public saveSearchField(documentDefinitionName: string): void {\n this.disableInput();\n\n this.formData$.pipe(take(1)).subscribe(formData => {\n if (!formData) {\n return;\n }\n const mappedFormData: SearchField = {\n ...formData,\n matchType:\n !this.isFieldTypeDropdown(formData?.fieldType) && formData?.dataType === 'text'\n ? formData.matchType\n : 'exact',\n fieldType: formData.dataType !== 'boolean' ? formData.fieldType : 'single',\n };\n\n const prevFormData = this.selectedSearchField$.value;\n if (\n this.dropdownDataProviderSupportsUpdates(prevFormData?.dropdownDataProvider) &&\n prevFormData?.dropdownDataProvider !== mappedFormData?.dropdownDataProvider\n ) {\n this.documentService\n .deleteDropdownData(\n prevFormData?.dropdownDataProvider ?? '',\n documentDefinitionName,\n prevFormData?.key ?? ''\n )\n .subscribe();\n }\n\n if (this.dropdownDataProviderSupportsUpdates(mappedFormData.dropdownDataProvider)) {\n this.modifiedDropdownValues$.pipe(take(1)).subscribe(dropdownValues => {\n const request = dropdownValues.reduce(\n (acc, keyValue) => ({...acc, [keyValue.key]: keyValue.value}),\n {}\n );\n this.documentService\n .postDropdownData(\n mappedFormData.dropdownDataProvider ?? '',\n documentDefinitionName,\n mappedFormData.key,\n request\n )\n .subscribe();\n });\n }\n\n if (this.searchFieldActionTypeIsAdd) {\n this.documentService.postDocumentSearch(documentDefinitionName, mappedFormData).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n } else {\n const newFields = [...this.cachedSearchFields];\n const indexToReplace = newFields.findIndex(field => field.key === mappedFormData.key);\n const filteredFields = newFields.filter(field => field.key !== mappedFormData.key);\n\n filteredFields.splice(indexToReplace, 0, mappedFormData);\n this.updateSearchFields(documentDefinitionName, filteredFields);\n }\n });\n }\n\n public updateSearchFields(\n documentDefinitionName: string,\n newSearchFields: Array<SearchField>\n ): void {\n this.disableInput();\n\n this.documentService.putDocumentSearch(documentDefinitionName, newSearchFields).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n public onModalClose(): void {\n this.hideModal();\n }\n\n private nextIfChanged(behaviourSubject$: BehaviorSubject<any>, value: any) {\n if (JSON.stringify(behaviourSubject$.value) !== JSON.stringify(value)) {\n behaviourSubject$.next(value);\n }\n }\n\n private isValid(data: SearchField): boolean {\n const validMatchType =\n data.dataType === 'text' && !this.isFieldTypeDropdown(data.fieldType) ? data.matchType : true;\n const validDropdownDataProvider = this.isFieldTypeDropdown(data.fieldType)\n ? data.dropdownDataProvider\n : true;\n const containsAllValues = !!(\n data.key &&\n data.dataType &&\n validMatchType &&\n validDropdownDataProvider &&\n data.path &&\n data.fieldType\n );\n const keyIsUnique =\n !this.searchFieldActionTypeIsAdd ||\n this.cachedSearchFields.findIndex(field => field.key === data.key) === -1;\n\n return containsAllValues && keyIsUnique;\n }\n\n private isFieldTypeDropdown(fieldType?: SearchFieldFieldType): boolean {\n return fieldType === 'single-select-dropdown' || fieldType === 'multi-select-dropdown';\n }\n\n private dropdownDataProviderSupportsUpdates(dropdownDataProvider?: string): boolean {\n return dropdownDataProvider === 'dropdownDatabaseDataProvider';\n }\n\n private openSelectedSearchFieldSubscription(): void {\n this._subscriptions.add(\n this.selectedSearchField$.subscribe(selectedSearchField => {\n if (selectedSearchField) this.showModal();\n })\n );\n }\n\n private openModalShowingSubscription(): void {\n this._subscriptions.add(\n this.modalShowing$.subscribe(modalShowing => {\n if (modalShowing) {\n setTimeout(() => {\n this.showFields$.next(true);\n }, 0);\n } else {\n setTimeout(() => {\n this.showFields$.next(false);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n })\n );\n }\n\n private setDownload(documentDefinitionName: string, searchFields: Array<SearchField>): void {\n this.downloadName$.next(`${documentDefinitionName}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify({searchFields}, null, 2))\n )\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n }\n\n private showModal(): void {\n this.modalShowing$.next(true);\n }\n\n private hideModal(): void {\n this.modalShowing$.next(false);\n }\n\n private refreshSearchFields(): void {\n this.refreshSearchFields$.next(null);\n }\n\n private showDeleteModal(searchField: SearchField): void {\n this.selectedDeleteSearchField$.next(searchField);\n this.showDeleteModal$.next(true);\n }\n\n private showEditModal(searchField: SearchField): void {\n this.searchFieldClicked(searchField, false);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-container\n *ngIf=\"{\n searchFields: translatedSearchFields$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.statuses.deleteText\"\n [outputOnConfirm]=\"selectedDeleteSearchField$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteSelectedSearchFieldConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #buttons let-obs=\"obs\">\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n data-testid=\"dossier-management-search-download\"\n [disabled]=\"\n !obs.downloadUrl || !obs.downloadName || obs.searchFields?.length <= 0 || obs.disableInput\n \"\n [download]=\"obs.downloadName\"\n [href]=\"obs.downloadUrl\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n data-testid=\"dossier-management-search-add\"\n [disabled]=\"loadingSearchFields || obs.disableInput\"\n (click)=\"searchFieldClicked($event, true)\"\n >\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFieldsOverview.addRow' | translate }}\n </button>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.searchFields\"\n [loading]=\"!obs.searchFields\"\n [movingRowsEnabled]=\"true\"\n (rowClicked)=\"searchFieldClicked($event, false)\"\n (moveRow)=\"onMoveRowClick($event, obs.documentDefinitionName)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [title]=\"'searchFieldsOverview.noSearchfieldsTitle' | translate\"\n [description]=\"'searchFieldsOverview.noSearchfieldsDescription' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <cds-modal\n valtimoCdsModal\n [title]=\"\n searchFieldActionTypeIsAdd\n ? ('searchFieldsOverview.addRow' | translate)\n : ('searchFieldsOverview.edit' | translate)\n \"\n [open]=\"modalShowing$ | async\"\n [showFooter]=\"true\"\n size=\"sm\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onModalClose()\">\n <h3 cdsModalHeaderHeading>\n {{\n (searchFieldActionTypeIsAdd ? 'searchFieldsOverview.addRow' : 'searchFieldsOverview.edit')\n | translate\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"\n (showFields$ | async) && {\n searchField: selectedSearchField$ | async,\n } as searchObs\n \"\n >\n <v-input\n name=\"title\"\n dataTestId=\"dossier-management-search-title\"\n [title]=\"'searchFieldsOverview.title' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.title\"\n [disabled]=\"obs.disableInput\"\n [required]=\"false\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </v-input>\n\n <v-input\n name=\"key\"\n dataTestId=\"dossier-management-search-key\"\n [title]=\"'searchFieldsOverview.key' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.key\"\n [disabled]=\"obs.disableInput || !searchFieldActionTypeIsAdd\"\n [required]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </v-input>\n\n <valtimo-value-path-selector\n name=\"path\"\n [label]=\"'searchFieldsOverview.path' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n [marginXl]=\"true\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [defaultValue]=\"searchObs.searchField?.path\"\n [disabled]=\"obs.disableInput\"\n ></valtimo-value-path-selector>\n\n <v-select\n *ngIf=\"dataTypeItems$ | async as dataTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"dataTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"dataType\"\n [defaultSelectionId]=\"searchObs.searchField?.dataType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"dossier-management-search-dataTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"(showMatchTypes$ | async) && (matchTypeItems$ | async) as matchTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"matchTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"matchType\"\n [defaultSelectionId]=\"searchObs.searchField?.matchType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"dossier-management-search-matchTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"fieldTypeItems$ | async as fieldTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"fieldTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"fieldType\"\n [defaultSelectionId]=\"searchObs.searchField?.fieldType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"dossier-management-search-fieldTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"\n (fieldTypeIsDropdown$ | async) &&\n (dropdownDataProviderNames$ | async) as dropdownDataProviderNames\n \"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"dropdownDataProviderNames\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"false\"\n name=\"dropdownDataProvider\"\n [defaultSelectionId]=\"searchObs.searchField?.dropdownDataProvider\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"dossier-management-search-dropdownDataProvider\"\n ></v-select>\n\n <valtimo-carbon-multi-input\n *ngIf=\"\n (showInputDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n name=\"dropdownValues\"\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n type=\"keyValue\"\n [disabled]=\"obs.disableInput\"\n [defaultValues]=\"initialDropdownValues\"\n [margin]=\"true\"\n [required]=\"false\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n (valueChange)=\"dropdownDatalistChange($event)\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </valtimo-carbon-multi-input>\n\n <v-table\n *ngIf=\"\n (showReadonlyDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n [items]=\"initialDropdownValues\"\n [columns]=\"dropdownColumns$ | async\"\n [showEditButtons]=\"false\"\n [itemsTranslationKey]=\"'searchFieldsOverview'\"\n [showPagination]=\"false\"\n [mobileBreakpointPx]=\"200\"\n [carbonTheme]=\"CARBON_THEME\"\n ></v-table>\n </v-form>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n </cds-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <button\n data-testid=\"dossier-management-search-close\"\n cdsButton=\"secondary\"\n (click)=\"onModalClose()\"\n [disabled]=\"obs.disableInput\"\n >\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-testid=\"dossier-management-search-save\"\n cdsButton=\"primary\"\n [disabled]=\"obs.disableInput || !obs.valid\"\n (click)=\"saveSearchField(obs.documentDefinitionName)\"\n >\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {AfterViewInit, Component} from '@angular/core';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {ActivatedRoute} from '@angular/router';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n ColumnConfig,\n MoveRowDirection,\n MoveRowEvent,\n MultiInputValues,\n ValuePathSelectorPrefix,\n ViewType,\n} from '@valtimo/components';\nimport {ConfigService} from '@valtimo/config';\nimport {\n CaseListColumn,\n CaseListColumnView,\n DisplayTypeParameters,\n DocumentService,\n} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {ListItem} from 'carbon-components-angular/dropdown/list-item.interface';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n filter,\n map,\n Observable,\n startWith,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ListColumnModal} from '../../models';\n\n@Component({\n selector: 'valtimo-dossier-management-list-columns',\n templateUrl: './dossier-management-list-columns.component.html',\n styleUrls: ['./dossier-management-list-columns.component.scss'],\n})\nexport class DossierManagementListColumnsComponent implements AfterViewInit {\n readonly downloadName$ = new BehaviorSubject<string>('');\n readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'interface.delete',\n callback: this.deleteRow.bind(this),\n type: 'danger',\n },\n ];\n public readonly loadingCaseListColumns$ = new BehaviorSubject<boolean>(true);\n\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n public readonly fields: Array<ColumnConfig> = [\n {\n viewType: 'string',\n sortable: false,\n key: 'title',\n label: 'listColumn.title',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'key',\n label: 'listColumn.key',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'path',\n label: 'listColumn.path',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'displayType',\n label: 'listColumn.displayType',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'displayTypeParameters',\n label: 'listColumn.displayTypeParameters',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'sortable',\n label: 'listColumn.sortable',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'defaultSort',\n label: 'listColumn.defaultSort',\n },\n ];\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName)\n );\n\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n\n readonly hasEnvironmentConfig$: Observable<boolean> = this.documentDefinitionName$.pipe(\n map(\n documentDefinitionName =>\n !!this.configService?.config?.customDefinitionTables[documentDefinitionName]\n )\n );\n\n private cachedCaseListColumns: Array<CaseListColumn> = [];\n\n private readonly refreshCaseListcolumns$ = new BehaviorSubject<null>(null);\n\n private readonly caseListColumns$: Observable<Array<CaseListColumn>> = combineLatest([\n this.documentDefinitionName$,\n this.refreshCaseListcolumns$,\n ]).pipe(\n switchMap(([documentDefinitionName]) =>\n this.documentService.getCaseListForManagement(documentDefinitionName)\n ),\n tap(caseListColumns => {\n this.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {\n if (caseListColumns && Array.isArray(caseListColumns) && caseListColumns.length > 0) {\n this.setDownload(documentDefinitionName, caseListColumns);\n }\n });\n }),\n tap(caseListColumns => {\n this.lastItemIndex$.next(caseListColumns.length - 1);\n this.cachedCaseListColumns = caseListColumns;\n this.loadingCaseListColumns$.next(false);\n this.enableInput();\n })\n );\n\n readonly translatedCaseListColumns$: Observable<Array<CaseListColumnView>> = combineLatest([\n this.caseListColumns$,\n this.translateService.stream('key'),\n ]).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 currentModalType$ = new BehaviorSubject<ListColumnModal>('create');\n\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n\n readonly modalShowing$ = this.showModal$.pipe(delay(250));\n\n readonly INVALID_KEY = 'invalid';\n\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\n readonly disableDefaultSort$ = combineLatest([\n this.currentModalType$,\n this.formGroup.valueChanges,\n ]).pipe(\n map(\n ([currentModalType]) =>\n currentModalType === 'create' &&\n this.cachedCaseListColumns.find(column => !!column.defaultSort)\n ),\n startWith(false)\n );\n\n readonly DISPLAY_TYPES: Array<ViewType> = [\n ViewType.TEXT,\n ViewType.DATE,\n ViewType.BOOLEAN,\n ViewType.ENUM,\n ViewType.ARRAY_COUNT,\n ViewType.UNDERSCORES_TO_SPACES,\n ViewType.TAGS,\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.cachedCaseListColumns.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 readonly showDeleteModal$ = new Subject<boolean>();\n\n readonly deleteRowKey$ = new BehaviorSubject<string>('');\n\n readonly defaultEnumValues$ = new BehaviorSubject<MultiInputValues>(undefined);\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService,\n private readonly sanitizer: DomSanitizer,\n private readonly iconService: IconService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\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(caseListColumn: CaseListColumn): void {\n this.showDeleteModal$.next(true);\n this.deleteRowKey$.next(caseListColumn.key);\n }\n\n deleteRowConfirmation(columnKey: string): void {\n if (columnKey) {\n this.disableInput();\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService.deleteCaseListForManagement(docDefName, columnKey).subscribe(\n () => {\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\n }\n }\n\n onMoveRowEvent(event: MoveRowEvent, documentDefinitionName: string): void {\n const caseListColumns = [...this.cachedCaseListColumns];\n const caseListColumnRow = caseListColumns[event.index];\n const moveUp: boolean = event.direction === MoveRowDirection.UP;\n\n const caseListColumnIndex = caseListColumns.findIndex(\n field => field.key === caseListColumnRow.key\n );\n const foundCaseListColumn = {...caseListColumns[caseListColumnIndex]};\n const filteredCaseListColumns = caseListColumns.filter(\n field => field.key !== caseListColumnRow.key\n );\n const multipleCaseListColumns = caseListColumns.length > 1;\n\n if (multipleCaseListColumns && moveUp && caseListColumnIndex > 0) {\n const caseListColumnBeforeKey = `${caseListColumns[caseListColumnIndex - 1].key}`;\n const caseListColumnBeforeIndex = filteredCaseListColumns.findIndex(\n field => field.key === caseListColumnBeforeKey\n );\n filteredCaseListColumns.splice(caseListColumnBeforeIndex, 0, foundCaseListColumn);\n this.updateCaseListColumns(documentDefinitionName, filteredCaseListColumns);\n } else if (multipleCaseListColumns && !moveUp && caseListColumnIndex < caseListColumns.length) {\n const caseListColumnAfterKey = `${caseListColumns[caseListColumnIndex + 1].key}`;\n const caseListColumnAfterIndex = filteredCaseListColumns.findIndex(\n field => field.key === caseListColumnAfterKey\n );\n filteredCaseListColumns.splice(caseListColumnAfterIndex + 1, 0, foundCaseListColumn);\n this.updateCaseListColumns(documentDefinitionName, filteredCaseListColumns);\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.cachedCaseListColumns.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 updateCaseListColumns(\n documentDefinitionName: string,\n newCaseListColumns: Array<CaseListColumn>\n ): void {\n this.disableInput();\n\n this.documentService\n .putCaseListForManagement(documentDefinitionName, newCaseListColumns)\n .subscribe(\n () => {\n this.refreshCaseListColumns();\n localStorage.setItem(`list-search-${documentDefinitionName}`, null);\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n private addColumn(): void {\n const formValue = this.formGroup.value;\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService\n .postCaseListForManagement(docDefName, this.mapFormValuesToColumn(formValue))\n .subscribe(\n () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\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 const updatedColumnFormValue = this.formGroup.value;\n const mappedUpdatedColumn = this.mapFormValuesToColumn(updatedColumnFormValue);\n const currentColumns = this.cachedCaseListColumns;\n const mappedCurrentColumns = currentColumns.map(column => {\n const columnCopy = {...column};\n if (columnCopy.key === updatedColumnFormValue.key) {\n const changedColumn = {...columnCopy, ...mappedUpdatedColumn};\n if (!mappedUpdatedColumn.defaultSort) {\n delete changedColumn.defaultSort;\n }\n return changedColumn;\n }\n if (mappedUpdatedColumn.defaultSort) {\n delete columnCopy.defaultSort;\n }\n return columnCopy;\n });\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService.putCaseListForManagement(docDefName, mappedCurrentColumns).subscribe(\n () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\n }\n\n private setDownload(\n documentDefinitionName: string,\n caseListColumns: Array<CaseListColumn>\n ): void {\n this.downloadName$.next(`${documentDefinitionName}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify(caseListColumns, 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 refreshCaseListColumns(): void {\n this.refreshCaseListcolumns$.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): CaseListColumn {\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-2024 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<ng-container\n *ngIf=\"{\n caseListColumn: translatedCaseListColumns$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n hasEnvironmentConfig: hasEnvironmentConfig$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loadingCaseListColumns: loadingCaseListColumns$ | async,\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [loading]=\"obs.loadingCaseListColumns\"\n [items]=\"obs.caseListColumn\"\n [fields]=\"fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n [movingRowsEnabled]=\"true\"\n (moveRow)=\"onMoveRowEvent($event, obs.documentDefinitionName)\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n *ngIf=\"!obs.hasEnvironmentConfig\"\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"obs.hasEnvironmentConfig\"\n [title]=\"'listColumn.hasEnvConfigWarningTitle' | translate\"\n [description]=\"'listColumn.hasEnvConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-error.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n obs.hasEnvironmentConfig ||\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.caseListColumn?.length < 1 ||\n obs.disableInput ||\n loadingCaseListColumns\n \"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n [disabled]=\"obs.hasEnvironmentConfig || loadingCaseListColumns\"\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 #environmentConfigWarning>\n <div class=\"pl-2 pr-2 pb-2 pt-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'warning',\n title: 'listColumn.hasEnvConfigWarningTitle' | translate,\n message: 'listColumn.hasEnvConfigWarning' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2 pt-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'listColumn.noConfigWarningTitle' | translate,\n message: 'listColumn.noConfigWarning' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\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 disableDefaultSort: disableDefaultSort$ | async,\n showEnum: showEnum$ | async,\n isYesNo: isYesNo$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n size=\"sm\"\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 <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"title\" />\n </cds-label>\n\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\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n ></valtimo-value-path-selector>\n </cds-label>\n\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\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\n <cds-label *ngIf=\"showDateFormat$ | async\" [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"dateFormat\" />\n </cds-label>\n\n <cds-label *ngIf=\"modalObs.showEnum || modalObs.isYesNo\" [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\n <v-tooltip-icon\n [tooltip]=\"\n modalObs.isYesNo\n ? ('listColumn.enumTooltipOptional' | translate)\n : ('listColumn.enumTooltip' | translate)\n \"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"(showModal$ | async) || (modalShowing$ | async)\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n [defaultValues]=\"defaultEnumValues$ | async\"\n [hideAddButton]=\"modalObs.isYesNo\"\n [hideDeleteButton]=\"modalObs.isYesNo\"\n [maxRows]=\"modalObs.isYesNo ? 1 : null\"\n [keyColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.Yes' | translate)\"\n [valueColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.No' | translate)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n\n <cds-checkbox formControlName=\"sortable\">{{ 'listColumn.sortable' | translate }} </cds-checkbox>\n\n <cds-label [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\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 </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\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]=\"deleteRowKey$ | 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 * Copyright 2015-2024 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 */\nimport {ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {AbstractControl, FormGroup, FormGroupDirective} from '@angular/forms';\nimport {ApiTabType, DefaultTabs} from '@valtimo/dossier';\nimport {ListItem} from 'carbon-components-angular';\nimport {combineLatest, map, startWith, Subscription} from 'rxjs';\nimport {TabService} from '../../../services';\nimport {ConfigService} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-tab-form',\n templateUrl: './tab-form.component.html',\n styleUrls: ['./tab-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabFormComponent implements OnInit, OnDestroy {\n @Input() public tabType: ApiTabType;\n\n public disableTaskListVisibleToggle = signal(false);\n\n public readonly listItems$ = combineLatest([\n this.tabService.configuredContentKeys$,\n this.tabService.formDefinitions$,\n this.tabService.defaultTabs$,\n this.tabService.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => {\n switch (this.tabType) {\n case ApiTabType.STANDARD:\n return this.getListItems(defaultTabs, tabKeys);\n case ApiTabType.CUSTOM:\n return this.getListItems(customComponentKeys, tabKeys);\n case ApiTabType.FORMIO:\n return this.getListItems(formDefinitions, tabKeys);\n case ApiTabType.WIDGETS:\n return [];\n }\n }),\n startWith([])\n );\n\n public form!: FormGroup;\n\n public showTasks!: AbstractControl<boolean>;\n\n private _searchActive: boolean;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly configService: ConfigService,\n private readonly tabService: TabService,\n private readonly formGroupDirective: FormGroupDirective\n ) {}\n\n public ngOnInit(): void {\n this.form = this.formGroupDirective.control;\n this.showTasks = this.form.get('showTasks');\n this.openTaskListToggleSubscription();\n\n if (this.tabType == ApiTabType.WIDGETS) {\n this.form.get('contentKey')?.disable();\n } else {\n this.form.get('contentKey')?.enable();\n }\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public isKeyError(): boolean {\n return this.form.get('key')?.hasError('uniqueKey') || this.form.get('key')?.hasError('pattern');\n }\n\n public getKeyErrorMessage(): string {\n if (this.form.get('key')?.hasError('uniqueKey'))\n return 'dossierManagement.tabManagement.addModal.uniqueKeyError';\n if (this.form.get('key')?.hasError('pattern'))\n return 'dossierManagement.tabManagement.addModal.invalidKeyError';\n return '';\n }\n\n public onSearch(): void {\n if (this._searchActive) {\n return;\n }\n\n this._searchActive = true;\n this.form.get('contentKey')?.reset('');\n }\n\n public onSelected(): void {\n this._searchActive = false;\n }\n\n public toggleCheckedChange(event: boolean): void {\n this.showTasks?.patchValue(!!event);\n }\n\n private openTaskListToggleSubscription(): void {\n this.form.get('contentKey').valueChanges.subscribe(contentKey => {\n const summarySelected = contentKey === DefaultTabs.summary;\n\n if (summarySelected) {\n this.toggleCheckedChange(true);\n this.disableTaskListVisibleToggle.set(true);\n } else {\n this.disableTaskListVisibleToggle.set(false);\n }\n });\n }\n\n private getListItems(tabItems: ListItem[], configuredContentKeys: string[]): ListItem[] {\n return tabItems\n .filter(\n (tabItem: ListItem) =>\n !configuredContentKeys.includes(tabItem.contentKey) ||\n this.form?.get('contentKey')?.value === tabItem.contentKey\n )\n .map((tabItem: ListItem) => ({\n ...tabItem,\n selected: this.form?.get('contentKey')?.value === tabItem.contentKey,\n }));\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<form *ngIf=\"form\" [formGroup]=\"form\" class=\"valtimo-tab-form-modal\">\n <cds-label>\n {{ 'dossierManagement.tabManagement.addModal.tabNameLabel' | translate }}\n\n <input cdsText formControlName=\"name\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label [invalid]=\"!!isKeyError()\" [invalidText]=\"getKeyErrorMessage() | translate\">\n {{ 'dossierManagement.tabManagement.addModal.tabKeyLabel' | translate }}\n\n <input\n cdsText\n formControlName=\"key\"\n pattern=\"[a-zA-Z0-9\\-]+\"\n [invalid]=\"!!isKeyError()\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-combo-box\n *ngIf=\"tabType !== 'widgets'\"\n [dropUp]=\"false\"\n formControlName=\"contentKey\"\n [items]=\"listItems$ | async\"\n itemValueKey=\"contentKey\"\n [label]=\"'dossierManagement.tabManagement.contentLabels.' + tabType | translate\"\n (search)=\"onSearch($event)\"\n (selected)=\"onSelected($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-toggle\n [label]=\"'dossierManagement.tabManagement.addModal.visibleTitle' | translate\"\n [onText]=\"'dossierManagement.tabManagement.addModal.visible' | translate\"\n [offText]=\"'dossierManagement.tabManagement.addModal.invisible' | translate\"\n [checked]=\"showTasks?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n [disabled]=\"disableTaskListVisibleToggle()\"\n ></cds-toggle>\n</form>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {Code16, Development16, TableBuilt16, WatsonHealthPageScroll16} from '@carbon/icons';\nimport {ApiTabItem, ApiTabType, TabSelectItem} from '@valtimo/dossier';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\nimport {TabService} from '../../../services';\nimport {ConfigService} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-dossier-management-add-tab-modal',\n templateUrl: './dossier-management-add-tab-modal.component.html',\n styleUrls: ['./dossier-management-add-tab-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierManagementAddTabModalComponent {\n @Input() documentDefinitionName: string;\n @Input() open = false;\n\n @Output() closeModalEvent = new EventEmitter<Partial<ApiTabItem> | null>();\n\n public readonly ApiTabType = ApiTabType;\n\n public readonly tabTypes$: Observable<TabSelectItem[]> = combineLatest([\n this.tabService.disableAddTabs$,\n this.configService.featureToggles$,\n ]).pipe(\n map(([disabled, featureToggles]) => [\n {\n icon: 'development',\n title: 'dossierManagement.tabManagement.addModal.standardTab',\n type: ApiTabType.STANDARD,\n disabled: disabled.standard,\n disabledTooltipTranslationKey:\n 'dossierManagement.tabManagement.addModal.standardTabDisabled',\n },\n {\n icon: 'page-scroll',\n title: 'dossierManagement.tabManagement.addModal.formIOComponent',\n type: ApiTabType.FORMIO,\n disabled: disabled.formIO,\n disabledTooltipTranslationKey:\n 'dossierManagement.tabManagement.addModal.formIOComponentDisabled',\n },\n {\n icon: 'code',\n title: 'dossierManagement.tabManagement.addModal.customComponent',\n type: ApiTabType.CUSTOM,\n disabled: disabled.custom,\n disabledTooltipTranslationKey:\n 'dossierManagement.tabManagement.addModal.customComponentDisabled',\n },\n {\n icon: 'table--built',\n title: 'dossierManagement.tabManagement.addModal.widgetsComponent',\n type: ApiTabType.WIDGETS,\n disabled: disabled.widgets,\n },\n ])\n );\n\n public readonly form = this.fb.group({\n name: this.fb.control(null),\n key: this.fb.control('', [Validators.required, this.uniqueKeyValidator()]),\n contentKey: this.fb.control('', Validators.required),\n showTasks: this.fb.control(false, Validators.required),\n });\n public readonly selectedTabType$ = new BehaviorSubject<ApiTabType | null>(null);\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly tabService: TabService,\n private readonly configService: ConfigService\n ) {\n this.iconService.registerAll([Code16, Development16, TableBuilt16, WatsonHealthPageScroll16]);\n }\n\n public addTab(type: ApiTabType): void {\n let {contentKey, key, name, showTasks} = this.form.getRawValue();\n if (!contentKey) {\n contentKey = '-';\n }\n\n if (!key) {\n return;\n }\n this.closeModalEvent.emit({name, key, contentKey, type, showTasks});\n }\n\n public backClick(): void {\n this.resetModal();\n }\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n this.resetModal();\n }\n\n public onTabTypeSelect(type: ApiTabType): void {\n this.selectedTabType$.next(type);\n }\n\n private resetModal(): void {\n this.selectedTabType$.next(null);\n this.form.reset();\n }\n\n private uniqueKeyValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null =>\n this.tabService.configuredTabKeys.every((key: string) => key !== control.value)\n ? null\n : {uniqueKey: {value: control.value}};\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal valtimoCdsModal *ngIf=\"{selectedTabType: selectedTabType$ | async} as obs\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n !obs.selectedTabType\n ? ('dossierManagement.tabManagement.addModal.title'\n | translate: {documentDefinitionName: (documentDefinitionName | titlecase)})\n : ('dossierManagement.tabManagement.titles.' + obs.selectedTabType | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent class=\"valtimo-add-tab-modal__content\">\n <valtimo-tab-form\n *ngIf=\"obs.selectedTabType; else tabTypeSelection\"\n [tabType]=\"obs.selectedTabType\"\n ></valtimo-tab-form>\n\n <ng-template #tabTypeSelection>\n <span> {{ 'dossierManagement.tabManagement.addModal.description' | translate }} </span>\n\n <div *ngIf=\"tabTypes$ | async as tabTypes\" class=\"valtimo-add-tab-modal__types\">\n <cds-tooltip\n *ngFor=\"let tabType of tabTypes\"\n [caret]=\"true\"\n enterDelayMs=\"0\"\n leaveDelayMs=\"0\"\n [description]=\"tabType.disabledTooltipTranslationKey | translate\"\n [disabled]=\"!tabType.disabled\"\n align=\"bottom\"\n >\n <button\n cdsButton=\"secondary\"\n [disabled]=\"tabType.disabled\"\n (click)=\"onTabTypeSelect(tabType.type)\"\n >\n {{ tabType.title | translate }}\n\n <svg [cdsIcon]=\"tabType.icon\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </cds-tooltip>\n </div>\n </ng-template>\n </section>\n\n <cds-modal-footer class=\"valtimo-add-tab-modal__footer\">\n <button class=\"valtimo-add-tab-modal__cancel\" cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <div class=\"valtimo-add-tab-modal__actions\" *ngIf=\"obs.selectedTabType\">\n <button cdsButton=\"secondary\" (click)=\"backClick()\">\n {{ 'interface.back' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"addTab(obs.selectedTabType)\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {TabService} from '../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-edit-tab-modal',\n templateUrl: './dossier-management-edit-tab-modal.component.html',\n})\nexport class DossierManagementEditTabModalComponent {\n @Input() open: boolean;\n\n private _tab: ApiTabItem;\n @Input() public set tab(value: ApiTabItem) {\n if (!value) {\n return;\n }\n\n if (!!this.tabService.configuredContentKeys) {\n this.configuredKeysForEdit = this.tabService.configuredContentKeys.filter(\n (tabKey: string) => tabKey !== value.contentKey\n );\n }\n\n this._tab = value;\n this.form = this.fb.group({\n name: this.fb.control(value.name),\n key: this.fb.control({value: value.key, disabled: true}, Validators.required),\n contentKey: this.fb.control(value.contentKey, Validators.required),\n showTasks: this.fb.control(value.showTasks, Validators.required),\n });\n }\n public get tab(): ApiTabItem {\n return this._tab;\n }\n\n @Output() closeModalEvent = new EventEmitter<ApiTabItem | null>();\n\n public form: FormGroup;\n public configuredKeysForEdit: string[];\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly tabService: TabService\n ) {}\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n }\n\n public editTab(): void {\n const {contentKey, name, showTasks} = this.form.getRawValue();\n\n if (!contentKey) {\n return;\n }\n\n this.closeModalEvent.emit({...this.tab, name, contentKey, showTasks});\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal valtimoCdsModal *ngIf=\"form\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n 'dossierManagement.tabManagement.editModal.title'\n | translate: {name: tab?.name ?? 'dossier.tabs.' + tab.key | translate}\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent>\n <valtimo-tab-form\n [configuredContentKeys]=\"configuredKeysForEdit\"\n [tabType]=\"tab?.type\"\n ></valtimo-tab-form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"editTab()\">\n {{ 'dossierManagement.tabManagement.editModal.updateTab' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n signal,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {ApiTabItem, ApiTabType} from '@valtimo/dossier';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, map, Observable, tap} from 'rxjs';\nimport {TabManagementService, TabService} from '../../services';\nimport {Router} from '@angular/router';\nimport {ConfigService} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-dossier-management-tabs',\n templateUrl: './dossier-management-tabs.component.html',\n styleUrls: ['./dossier-management-tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierManagementTabsComponent implements AfterViewInit {\n @ViewChild('tabContentColumn') tabContentColumnTemplate: TemplateRef<any>;\n @ViewChild('tabTypeColumn') tabTypeColumnTemplate: TemplateRef<any>;\n @ViewChild('moveButtonsTemplate') moveButtonsTemplate: TemplateRef<any>;\n\n private _documentDefinitionName: string;\n @Input() public set documentDefinitionName(value: string) {\n if (!value) {\n return;\n }\n this._documentDefinitionName = value;\n this.tabManagementService.setCaseDefinitionId(value);\n this.tabManagementService.loadTabs();\n }\n public get documentDefinitionName(): string {\n return this._documentDefinitionName;\n }\n\n public actionItems: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.openDeleteConfirmationModal.bind(this),\n type: 'danger',\n },\n ];\n public readonly deleteRowKey$ = new BehaviorSubject<string | null>(null);\n public readonly showDeleteModal$: Observable<boolean> = this.deleteRowKey$.pipe(\n map((key: string | null) => !!key)\n );\n public readonly openEditModal$ = new BehaviorSubject<boolean>(false);\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n public readonly loading$: Observable<boolean> = this.tabManagementService.loading$;\n public readonly openAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n public readonly tabs$: Observable<ApiTabItem[]> = this.tabManagementService.tabs$.pipe(\n tap(tabs => {\n this.tabService.configuredContentKeys = tabs.map((tab: ApiTabItem) => tab.contentKey);\n this.tabService.configuredTabKeys = tabs.map((tab: ApiTabItem) => tab.key);\n this.lastItemIndex$.next(tabs.length - 1);\n this.dragAndDropDisabled.set(false);\n })\n );\n public readonly tab$ = new BehaviorSubject<ApiTabItem | null>(null);\n public readonly dragAndDropDisabled = signal(false);\n\n constructor(\n private readonly cd: ChangeDetectorRef,\n private readonly iconService: IconService,\n private readonly tabManagementService: TabManagementService,\n private readonly tabService: TabService,\n private readonly translateService: TranslateService,\n private readonly router: Router,\n private readonly configService: ConfigService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n\n this.fields$.next([\n {\n key: 'name',\n label: 'dossierManagement.tabManagement.columns.name',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'dossierManagement.tabManagement.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabTypeColumnTemplate,\n key: '',\n label: 'dossierManagement.tabManagement.columns.type',\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabContentColumnTemplate,\n key: '',\n label: 'dossierManagement.tabManagement.columns.content',\n },\n {\n viewType: ViewType.BOOLEAN,\n key: 'showTasks',\n label: 'dossierManagement.tabManagement.columns.showTasks',\n },\n ]);\n\n this.cd.detectChanges();\n }\n\n public isTranslated(key: string): boolean {\n return this.translateService.instant(key) !== key;\n }\n\n public openAddTabModal(): void {\n this.openAddModal$.next(true);\n }\n\n public openEditModal(tab: ApiTabItem): void {\n this.tab$.next(tab);\n this.openEditModal$.next(true);\n }\n\n public onRowClicked(tab: ApiTabItem): void {\n this.tab$.next(tab);\n if (tab.type === ApiTabType.WIDGETS) {\n this.router.navigate([\n `/dossier-management/dossier/${this._documentDefinitionName}/widget-tab/${tab.key}`,\n ]);\n } else {\n this.openEditModal$.next(true);\n }\n }\n\n public onCloseAddModalEvent(tab: ApiTabItem | null): void {\n this.openAddModal$.next(false);\n\n if (!tab) {\n return;\n }\n\n this.addTab(tab);\n }\n\n public onCloseEditModalEvent(tab: ApiTabItem | null): void {\n this.openEditModal$.next(false);\n this.tab$.next(null);\n\n if (!tab) {\n return;\n }\n\n this.editTab(tab);\n }\n\n public openDeleteConfirmationModal(tab: ApiTabItem): void {\n this.deleteRowKey$.next(tab.key);\n }\n\n public onConfirmEvent(tabKey: string): void {\n this.deleteTab(tabKey);\n }\n\n public onItemsReorderedEvent(reorderedItems: ApiTabItem[]): void {\n if (!reorderedItems) return;\n\n this.dragAndDropDisabled.set(true);\n\n this.tabManagementService.dispatchAction(\n this.tabManagementService.editTabsOrder(reorderedItems)\n );\n }\n\n private addTab(tab: Partial<ApiTabItem>): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.addTab(tab));\n }\n\n private deleteTab(tabKey: string): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.deleteTab(tabKey));\n }\n\n private editTab(tab: ApiTabItem): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.editTab(tab, tab.key));\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-carbon-list\n *ngIf=\"{fields: fields$ | async, loading: loading$ | async, tabs: tabs$ | async} as obs\"\n [actionItems]=\"actionItems\"\n [items]=\"obs.tabs\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n (rowClicked)=\"onRowClicked($event)\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"dragAndDropDisabled()\"\n (itemsReordered)=\"onItemsReorderedEvent($event)\"\n>\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addTabButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addTabButton\"\n [description]=\"'dossier.tabs.noResultsDescription' | translate\"\n [title]=\"'dossier.tabs.noResults' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #tabTypeColumn let-data=\"data\">\n {{\n isTranslated('dossierManagement.tabType.' + data.item.type)\n ? ('dossierManagement.tabType.' + data.item.type | translate)\n : data.item.type\n }}\n</ng-template>\n\n<ng-template #tabContentColumn let-data=\"data\">\n {{\n isTranslated('dossier.tabs.' + data.item.contentKey)\n ? ('dossier.tabs.' + data.item.contentKey | translate)\n : data.item.contentKey\n }}\n</ng-template>\n\n<ng-template #addTabButton>\n <button cdsButton=\"primary\" (click)=\"openAddTabModal()\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<valtimo-dossier-management-add-tab-modal\n *ngIf=\"openAddModal$ | async\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [open]=\"openAddModal$ | async\"\n (closeModalEvent)=\"onCloseAddModalEvent($event)\"\n></valtimo-dossier-management-add-tab-modal>\n\n<valtimo-dossier-management-edit-tab-modal\n *ngIf=\"openEditModal$ | async\"\n [tab]=\"tab$ | async\"\n (closeModalEvent)=\"onCloseEditModalEvent($event)\"\n [open]=\"openEditModal$ | async\"\n></valtimo-dossier-management-edit-tab-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.tabManagement.deleteModal.description\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dossierManagement.tabManagement.deleteModal.title\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {Component, ViewChild} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {Link16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {DocumentDefinition, DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {IconService, NotificationService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, Observable, switchMap} from 'rxjs';\nimport {DossierDetailService} from '../../services';\nimport {DossierManagementConnectModalComponent} from '../dossier-management-connect-modal/dossier-management-connect-modal.component';\n\n@Component({\n selector: 'valtimo-dossier-management-processes',\n templateUrl: './dossier-management-processes.component.html',\n styleUrls: ['./dossier-management-processes.component.scss'],\n providers: [NotificationService],\n})\nexport class DossierManagementProcessesComponent {\n @ViewChild('dossierConnectModal')\n private readonly _dossierConnectModal: DossierManagementConnectModalComponent;\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly processDocumentDefinitions$: Observable<ProcessDocumentDefinition[]> =\n this._refresh$.pipe(\n switchMap(() =>\n combineLatest([this.route.paramMap, this.dossierDetailService.selectedVersionNumber$])\n ),\n switchMap(([params, version]) =>\n this.documentService.findProcessDocumentDefinitionsByVersion(\n params.get('name') ?? '',\n version\n )\n )\n );\n\n public readonly documentDefinition$ = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.documentService.getDocumentDefinitionForManagement(params.get('name') ?? '')\n )\n );\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'dossierManagement.unlinkProcess',\n callback: this.deleteProcessDocumentDefinition.bind(this),\n type: 'danger',\n },\n ];\n public readonly fields: ColumnConfig[] = [\n {\n key: 'processName',\n label: 'interface.name',\n viewType: ViewType.TEXT,\n },\n {\n key: 'canInitializeDocument',\n label: 'processCaseConnection.processCreatesCase',\n viewType: ViewType.BOOLEAN,\n },\n {\n key: 'startableByUser',\n label: 'processCaseConnection.startableWithinCase',\n viewType: ViewType.BOOLEAN,\n },\n ];\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private readonly dossierDetailService: DossierDetailService,\n private readonly route: ActivatedRoute,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(Link16);\n }\n\n public deleteProcessDocumentDefinition(\n processDocumentDefinition: ProcessDocumentDefinition\n ): void {\n this.documentService\n .deleteProcessDocumentDefinition({\n documentDefinitionName: processDocumentDefinition.id.documentDefinitionId.name,\n processDefinitionKey: processDocumentDefinition.id.processDefinitionKey,\n documentDefinitionVersion: processDocumentDefinition.id.documentDefinitionId.version,\n canInitializeDocument: processDocumentDefinition.canInitializeDocument,\n startableByUser: processDocumentDefinition.startableByUser,\n })\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.unlinkSuccess'\n ),\n duration: 5000,\n });\n this.loadProcessDocumentDefinitions();\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.unlinkFailure'\n ),\n duration: 5000,\n });\n },\n });\n }\n\n public loadProcessDocumentDefinitions(): void {\n this._refresh$.next(null);\n }\n\n public openDossierConnectModal(documentDefinition: DocumentDefinition): void {\n this._dossierConnectModal.openModal(documentDefinition);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-container\n *ngIf=\"{\n documentDefinition: documentDefinition$ | async,\n processDocumentDefinitions: processDocumentDefinitions$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.processDocumentDefinitions\"\n [loading]=\"!obs.processDocumentDefinitions\"\n [fields]=\"fields\"\n [header]=\"false\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"connectProcessButton\"></ng-container>\n\n <valtimo-no-results\n [title]=\"'processCaseConnection.noProcessesTitle' | translate\"\n [description]=\"'processCaseConnection.noProcessesDescription' | translate\"\n [action]=\"connectProcessButton\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <ng-template #connectProcessButton>\n <button\n cdsButton=\"primary\"\n [disabled]=\"!obs.processDocumentDefinitions\"\n (click)=\"openDossierConnectModal(obs.documentDefinition)\"\n >\n {{ 'dossierManagement.processLink' | translate }}\n\n <svg cdsIcon=\"link\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </ng-template>\n</ng-container>\n\n<valtimo-dossier-management-connect-modal\n #dossierConnectModal\n (reloadProcessDocumentDefinitions)=\"loadProcessDocumentDefinitions()\"\n></valtimo-dossier-management-connect-modal>\n","/*\n * Copyright 2015-2024 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 ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {StatusModalCloseEvent, StatusModalType} from '../../../models';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {\n AbstractControl,\n AsyncValidatorFn,\n FormBuilder,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {\n CaseStatusService,\n InternalCaseStatus,\n InternalCaseStatusColor,\n InternalCaseStatusUtils,\n} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {Edit16} from '@carbon/icons';\nimport {ListItem} from 'carbon-components-angular/dropdown/list-item.interface';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-dossier-management-status-modal',\n templateUrl: './dossier-management-status-modal.component.html',\n styleUrls: ['./dossier-management-status-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementStatusModalComponent implements OnInit, OnDestroy {\n @Input() public set type(value: StatusModalType) {\n this._type$.next(value);\n\n if (value === 'closed') {\n setTimeout(() => {\n this._typeAnimationDelay$.next(value);\n }, CARBON_CONSTANTS.modalAnimationMs);\n } else {\n this._typeAnimationDelay$.next(value);\n }\n }\n\n @Input() public set prefill(value: InternalCaseStatus) {\n this._prefillStatus.next(value);\n }\n\n @Input() public usedKeys!: string[];\n @Input() public documentDefinitionName!: string;\n\n @Output() public closeModalEvent = new EventEmitter<StatusModalCloseEvent>();\n\n private readonly _type$ = new BehaviorSubject<StatusModalType>(undefined);\n private readonly _typeAnimationDelay$ = new BehaviorSubject<StatusModalType>(undefined);\n private readonly _prefillStatus = new BehaviorSubject<InternalCaseStatus>(undefined);\n\n public readonly statusFormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', [\n Validators.required,\n Validators.minLength(3),\n this.uniqueKeyValidator,\n ]),\n visibleInCaseListByDefault: this.fb.control(true, Validators.required),\n color: this.fb.control('', Validators.required),\n });\n\n private _isEdit!: boolean;\n\n public readonly isEdit$ = combineLatest([this._typeAnimationDelay$, this._prefillStatus]).pipe(\n tap(([type, prefillStatus]) => {\n if (type === 'edit' && prefillStatus) this.prefillForm(prefillStatus);\n }),\n map(([type]) => type === 'edit'),\n tap(isEdit => (this._isEdit = isEdit))\n );\n\n public readonly isAdd$ = this._typeAnimationDelay$.pipe(\n map(type => type === 'add'),\n tap(isAdd => {\n if (isAdd) this.resetForm();\n })\n );\n\n public readonly isClosed$ = this._type$.pipe(map(type => type === 'closed'));\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly COLORS: InternalCaseStatusColor[] = [\n InternalCaseStatusColor.Red,\n InternalCaseStatusColor.Magenta,\n InternalCaseStatusColor.Purple,\n InternalCaseStatusColor.Blue,\n InternalCaseStatusColor.Teal,\n InternalCaseStatusColor.Green,\n InternalCaseStatusColor.Cyan,\n InternalCaseStatusColor.Gray,\n InternalCaseStatusColor.CoolGray,\n InternalCaseStatusColor.WarmGray,\n InternalCaseStatusColor.HighContrast,\n InternalCaseStatusColor.Outline,\n ];\n\n private readonly _selectedColor$ = new BehaviorSubject<InternalCaseStatusColor>(undefined);\n\n public readonly colorListItems$: Observable<ListItem[]> = combineLatest([\n this._selectedColor$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedColor]) =>\n this.COLORS.map(color => ({\n selected: color === selectedColor,\n content: this.translateService.instant(\n 'interface.tagType.' +\n InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color)\n ),\n color,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color),\n }))\n )\n );\n\n public get visibleInCaseListByDefault(): AbstractControl<boolean, boolean> {\n return this.statusFormGroup?.get('visibleInCaseListByDefault');\n }\n\n public get key(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('key');\n }\n\n public get title(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('title');\n }\n\n public get color(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('color');\n }\n\n public get invalid(): boolean {\n return !!this.statusFormGroup?.invalid;\n }\n\n public get pristine(): boolean {\n return !!this.statusFormGroup?.pristine;\n }\n\n public readonly editingKey$ = new BehaviorSubject<boolean>(false);\n\n private readonly _originalStatusKey$ = new BehaviorSubject<string>('');\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly caseStatusService: CaseStatusService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.registerAll([Edit16]);\n }\n\n public ngOnInit(): void {\n this.openAutoKeySubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onClose(): void {\n this.close();\n }\n\n public toggleCheckedChange(checked: boolean): void {\n this.statusFormGroup.patchValue({\n visibleInCaseListByDefault: checked,\n });\n this.statusFormGroup.markAsDirty();\n }\n\n public addStatus(): void {\n this.disable();\n\n this.caseStatusService\n .saveInternalCaseStatus(this.documentDefinitionName, this.getFormValue())\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editStatus(): void {\n this.disable();\n\n this._originalStatusKey$\n .pipe(\n take(1),\n switchMap(originalStatusKey =>\n this.caseStatusService.updateInternalCaseStatus(\n this.documentDefinitionName,\n originalStatusKey,\n this.getFormValue()\n )\n )\n )\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editKeyButtonClick(): void {\n this.editingKey$.next(true);\n }\n\n public colorDropdownChange(event: {\n item: {color: string; content: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const newColor = event?.item?.color as InternalCaseStatusColor;\n\n if (newColor) {\n this._selectedColor$.next(newColor);\n this.statusFormGroup.patchValue({color: newColor});\n this.statusFormGroup.markAsDirty();\n }\n }\n\n private prefillForm(prefillStatus: InternalCaseStatus): void {\n this._originalStatusKey$.next(prefillStatus.key);\n this.statusFormGroup.patchValue({\n key: prefillStatus.key,\n title: prefillStatus.title,\n visibleInCaseListByDefault: prefillStatus.visibleInCaseListByDefault,\n color: prefillStatus.color,\n });\n this._selectedColor$.next(prefillStatus.color);\n this.statusFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetForm(): void {\n this.statusFormGroup.patchValue({\n key: '',\n title: '',\n visibleInCaseListByDefault: true,\n color: InternalCaseStatusColor.Blue,\n });\n this._selectedColor$.next(InternalCaseStatusColor.Blue);\n this.statusFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetEditingKey(): void {\n this.editingKey$.next(false);\n }\n\n private openAutoKeySubscription(): void {\n this._subscriptions.add(\n combineLatest([this.isAdd$, this.title.valueChanges, this.editingKey$]).subscribe(\n ([isAdd, titleValue, editingKey]) => {\n if (isAdd && !editingKey) {\n if (titleValue) {\n this.statusFormGroup.patchValue({key: this.getUniqueKey(titleValue)});\n } else {\n this.clearKey();\n }\n }\n }\n )\n );\n }\n\n private getUniqueKey(title: string): string {\n const dashCaseKey = `${title}`\n .toLowerCase()\n .replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')\n .replace(/_[-_]+/g, '_')\n .replace(/^[^a-z]+/g, '');\n const usedKeys = this.usedKeys;\n\n if (!usedKeys.includes(dashCaseKey)) {\n return dashCaseKey;\n }\n\n return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);\n }\n\n private getUniqueKeyWithNumber(dashCaseKey: string, usedKeys: string[]): string {\n const numbersFromCurrentKey = (dashCaseKey.match(/^\\d+|\\d+\\b|\\d+(?=\\w)/g) || []).map(\n (numberValue: string) => +numberValue\n );\n const lastNumberFromCurrentKey =\n numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];\n const newKey = lastNumberFromCurrentKey\n ? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`\n : `${dashCaseKey}-1`;\n\n if (usedKeys.includes(newKey)) {\n return this.getUniqueKeyWithNumber(newKey, usedKeys);\n }\n\n return newKey;\n }\n\n private clearKey(): void {\n this.statusFormGroup.patchValue({key: ''});\n }\n\n private uniqueKeyValidator(): AsyncValidatorFn {\n return (control: AbstractControl): Observable<ValidationErrors | null> =>\n combineLatest([this.isEdit$, control.valueChanges]).pipe(\n map(([isEdit, keyValue]) =>\n this.usedKeys?.every((key: string) => key !== keyValue) || isEdit\n ? null\n : {uniqueKey: {value: control.value}}\n )\n );\n }\n\n private disable(): void {\n this.disabled$.next(true);\n this.statusFormGroup.disable();\n }\n\n private enable(delay = true): void {\n setTimeout(\n () => {\n this.disabled$.next(false);\n this.statusFormGroup.enable();\n },\n delay ? CARBON_CONSTANTS.modalAnimationMs : 0\n );\n }\n\n private close(): void {\n this.closeModalEvent.emit('close');\n }\n\n private closeAndRefresh(): void {\n this.closeModalEvent.emit('closeAndRefresh');\n }\n\n private getFormValue(): InternalCaseStatus {\n return {\n key: this.key.value,\n title: this.title.value,\n visibleInCaseListByDefault: this.visibleInCaseListByDefault.value,\n color: this.color.value as InternalCaseStatusColor,\n };\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async,\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isAdd ? ('dossierManagement.statuses.add' | translate) : '' }}\n {{ obs.isEdit ? ('dossierManagement.statuses.edit' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"statusForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"dropdown-color-tag\">\n <cds-tag *ngIf=\"item && item.content\" class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n </div>\n</ng-template>\n\n<ng-template #statusForm let-obs=\"obs\">\n <form [formGroup]=\"statusFormGroup\" class=\"status-form\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.title' | translate }}\n\n <input cdsText formControlName=\"title\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.statuses.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [readOnly]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('dossierManagement.statuses.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.color' | translate }}\n\n <cds-dropdown\n [id]=\"'status-color-dropdown'\"\n [appendInline]=\"false\"\n [placeholder]=\"'dossierManagement.statuses.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-toggle\n [label]=\"'dossierManagement.statuses.visibleTitle' | translate\"\n [onText]=\"'dossierManagement.statuses.visible' | translate\"\n [offText]=\"'dossierManagement.statuses.invisible' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"visibleInCaseListByDefault?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </div>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addStatus()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editStatus()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {CaseStatusService, InternalCaseStatus, InternalCaseStatusUtils} from '@valtimo/document';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n ActionItem,\n ColumnConfig,\n MoveRowDirection,\n MoveRowEvent,\n ViewType,\n} from '@valtimo/components';\nimport {StatusModalCloseEvent, StatusModalType} from '../../models';\n\n@Component({\n selector: 'valtimo-dossier-management-statuses',\n templateUrl: './dossier-management-statuses.component.html',\n styleUrls: ['./dossier-management-statuses.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementStatusesComponent implements AfterViewInit {\n @ViewChild('colorColumnTemplate') colorColumnTemplate: TemplateRef<any>;\n\n private readonly _reload$ = new BehaviorSubject<null | 'noAnimation'>(null);\n\n private readonly _documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params?.name),\n filter(docDefName => !!docDefName)\n );\n\n public get documentDefinitionName$(): Observable<string> {\n return this._documentDefinitionName$;\n }\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n\n private _documentStatuses: InternalCaseStatus[] = [];\n\n public readonly documentStatuses$ = combineLatest([\n this._documentDefinitionName$,\n this._reload$,\n ]).pipe(\n tap(([_, reload]) => {\n if (reload === null) {\n this.loading$.next(true);\n }\n }),\n switchMap(([documentDefinitionName]) =>\n this.caseStatusService.getInternalCaseStatusesManagement(documentDefinitionName)\n ),\n map(statuses =>\n statuses.map(status => ({\n ...status,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n }))\n ),\n tap(statuses => {\n this._documentStatuses = statuses;\n this.usedKeys$.next(statuses.map(status => status.key));\n this.loading$.next(false);\n })\n );\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.openDeleteModal.bind(this),\n type: 'danger',\n },\n ];\n\n public readonly statusModalType$ = new BehaviorSubject<StatusModalType>('closed');\n public readonly prefillStatus$ = new BehaviorSubject<InternalCaseStatus>(undefined);\n\n public readonly statusToDelete$ = new BehaviorSubject<InternalCaseStatus>(undefined);\n public readonly showDeleteModal$ = new Subject<boolean>();\n\n constructor(\n private readonly caseStatusService: CaseStatusService,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngAfterViewInit(): void {\n this.initFields();\n }\n\n public openDeleteModal(status: InternalCaseStatus): void {\n this.statusToDelete$.next(status);\n this.showDeleteModal$.next(true);\n }\n\n public openEditModal(status: InternalCaseStatus): void {\n this.prefillStatus$.next(status);\n this.statusModalType$.next('edit');\n }\n\n public openAddModal(): void {\n this.statusModalType$.next('add');\n }\n\n public closeModal(closeModalEvent: StatusModalCloseEvent): void {\n if (closeModalEvent === 'closeAndRefresh') {\n this.reload();\n }\n\n this.statusModalType$.next('closed');\n }\n\n public confirmDeleteStatus(status: InternalCaseStatus): void {\n this.documentDefinitionName$\n .pipe(\n switchMap(documentDefinitionName =>\n this.caseStatusService.deleteInternalCaseStatus(documentDefinitionName, status.key)\n )\n )\n .subscribe(() => {\n this.reload();\n });\n }\n\n public onMoveRowClick(event: MoveRowEvent): void {\n const {direction, index} = event;\n\n const orderedStatuses: InternalCaseStatus[] =\n direction === MoveRowDirection.UP\n ? this.swapStatuses(this._documentStatuses, index - 1, index)\n : this.swapStatuses(this._documentStatuses, index, index + 1);\n\n this.documentDefinitionName$\n .pipe(\n switchMap(documentDefinitionName =>\n this.caseStatusService.updateInternalCaseStatuses(documentDefinitionName, orderedStatuses)\n )\n )\n .subscribe(() => {\n this.reload(true);\n });\n }\n\n private reload(noAnimation = false): void {\n this._reload$.next(noAnimation ? 'noAnimation' : null);\n }\n\n private swapStatuses(\n statuses: InternalCaseStatus[],\n index1: number,\n index2: number\n ): InternalCaseStatus[] {\n const temp = [...statuses];\n temp[index1] = temp.splice(index2, 1, temp[index1])[0];\n\n return temp;\n }\n\n private initFields(): void {\n this.fields$.next([\n {\n key: 'title',\n label: 'dossierManagement.statuses.columns.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'dossierManagement.statuses.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'visibleInCaseListByDefault',\n label: 'dossierManagement.statuses.columns.visible',\n viewType: ViewType.BOOLEAN,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.colorColumnTemplate,\n key: 'color',\n label: 'dossierManagement.statuses.columns.color',\n },\n ]);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-carbon-list\n *ngIf=\"{\n loading: loading$ | async,\n documentStatuses: documentStatuses$ | async,\n } as obs\"\n [items]=\"obs.documentStatuses\"\n [fields]=\"fields$ | async\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [movingRowsEnabled]=\"true\"\n [actionItems]=\"ACTION_ITEMS\"\n (rowClicked)=\"openEditModal($event)\"\n (moveRow)=\"onMoveRowClick($event)\"\n>\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [description]=\"'dossierManagement.statuses.noResults.description' | translate\"\n [title]=\"'dossierManagement.statuses.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-dossier-management-status-modal\n [type]=\"statusModalType$ | async\"\n [prefill]=\"prefillStatus$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (closeModalEvent)=\"closeModal($event)\"\n></valtimo-dossier-management-status-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.statuses.deleteText\"\n [outputOnConfirm]=\"statusToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"confirmDeleteStatus($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #buttons let-obs=\"obs\">\n <div class=\"dossier-management-search-fields__buttons\">\n <button cdsButton=\"primary\" [disabled]=\"obs.loading\" (click)=\"openAddModal()\">\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'dossierManagement.statuses.add' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #colorColumnTemplate let-data=\"data\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"data?.item?.tagType\">\n {{ 'interface.tagType.' + data?.item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {PageTitleService, PendingChangesComponent} from '@valtimo/components';\nimport {CaseManagementTabConfig, ConfigService} from '@valtimo/config';\nimport {\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n Subscription,\n tap,\n} from 'rxjs';\nimport {TabEnum} from '../../models';\nimport {DossierDetailService, TabService} from '../../services';\nimport {DossierManagementDocumentDefinitionComponent} from '../dossier-management-document-definition/dossier-management-document-definition.component';\n\n@Component({\n selector: 'valtimo-dossier-management-detail-container',\n templateUrl: './dossier-management-detail-container.component.html',\n styleUrls: ['./dossier-management-detail-container.component.scss'],\n providers: [DossierDetailService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementDetailContainerComponent\n extends PendingChangesComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n @ViewChild('contentContainer', {read: ViewContainerRef})\n private _contentContainer: ViewContainerRef;\n @ViewChild(DossierManagementDocumentDefinitionComponent)\n private _documentDefinitionTab: DossierManagementDocumentDefinitionComponent;\n\n public readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName)\n );\n\n public caseListColumn!: boolean;\n public tabManagementEnabled!: boolean;\n\n public _activeTab: TabEnum;\n public pendingTab: TabEnum | null;\n public currentTab$ = this.tabService.currentTab$.pipe(\n tap((currentTab: TabEnum) => {\n this._activeTab = currentTab;\n })\n );\n public readonly injectedCaseManagementTabs$: Observable<CaseManagementTabConfig[]> =\n this.tabService.injectedCaseManagementTabs$;\n public readonly documentDefinitionTitle$ = this.pageTitleService.customPageTitle$;\n public readonly CARBON_THEME = 'g10';\n public readonly DossierManagementTabs = Object.values(TabEnum);\n\n public readonly TabEnum = TabEnum;\n\n private _activeVersion: number | null;\n private _pendingVersion: number | null;\n private _subscriptions = new Subscription();\n constructor(\n private readonly dossierDetailService: DossierDetailService,\n private readonly route: ActivatedRoute,\n private readonly configService: ConfigService,\n private readonly tabService: TabService,\n private readonly pageTitleService: PageTitleService\n ) {\n super();\n const featureToggles = this.configService.config.featureToggles;\n this.caseListColumn = featureToggles?.caseListColumn ?? true;\n this.tabManagementEnabled = featureToggles?.enableTabManagement ?? true;\n }\n\n public ngOnInit(): void {\n this.openActiveVersionSubscription();\n }\n\n public ngAfterViewInit(): void {\n if (this._documentDefinitionTab) this.customModal = this._documentDefinitionTab.cancelModal;\n this.openInjectedTabSubscription();\n }\n\n public ngOnDestroy(): void {\n this.tabService.currentTab = TabEnum.DOCUMENT;\n this._subscriptions.unsubscribe();\n this.pageTitleService.enableReset();\n }\n\n public displayBodyComponent(tab: TabEnum | string, isInjectedTab = false): void {\n if (!this.customModal && !!this._documentDefinitionTab)\n this.customModal = this._documentDefinitionTab.cancelModal;\n\n if (this.pendingChanges) {\n this.onCanDeactivate();\n }\n this.tabService.currentTab = tab;\n }\n\n public onCancelRedirectEvent(): void {\n this.onCustomCancel();\n if (this._activeVersion) {\n this.dossierDetailService.setPreviousSelectedVersionNumber(this._activeVersion);\n this._activeVersion = null;\n return;\n }\n\n if (!this.pendingTab) {\n return;\n }\n this.tabService.currentTab = this.pendingTab;\n }\n\n public onConfirmRedirectEvent(): void {\n this.pendingTab = null;\n this._activeVersion = null;\n if (this._pendingVersion) {\n this.dossierDetailService.setSelectedVersionNumber(this._pendingVersion);\n this._pendingVersion = null;\n this.dossierDetailService.setPreviousSelectedVersionNumber(null);\n }\n this.onCustomConfirm();\n }\n\n public onPendingChangesUpdate(pendingChanges: boolean): void {\n this.pendingChanges = pendingChanges;\n this.pendingTab = pendingChanges ? this._activeTab : null;\n }\n\n public onVersionSet(version: number): void {\n if (this.pendingChanges) {\n this.onCanDeactivate();\n this._pendingVersion = version;\n return;\n }\n this.dossierDetailService.setSelectedVersionNumber(version);\n }\n\n private openActiveVersionSubscription(): void {\n this._subscriptions.add(\n this.dossierDetailService.selectedVersionNumber$.subscribe((versionNumber: number | null) => {\n this._activeVersion = versionNumber;\n })\n );\n }\n\n private openInjectedTabSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.currentTab$.pipe(distinctUntilChanged()),\n this.injectedCaseManagementTabs$,\n ]).subscribe(([currentTab, injectedCaseManagementTabs]) => {\n const findInjectedTab = injectedCaseManagementTabs.find(\n injectedTab => injectedTab.translationKey === currentTab\n );\n\n this._contentContainer.clear();\n if (findInjectedTab && this._contentContainer) {\n this._contentContainer.createComponent(findInjectedTab.component);\n }\n })\n );\n }\n\n protected onCanDeactivate(): void {\n this._documentDefinitionTab?.onCanDeactivate();\n }\n}\n","<!--\n ~ Copyright 2015-2024 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\n *ngIf=\"{\n currentTab: currentTab$ | async,\n injectedTabs: injectedCaseManagementTabs$ | async,\n } as obs\"\n class=\"dossier-management-detail-container\"\n>\n <valtimo-documenten-api></valtimo-documenten-api>\n <cds-tabs class=\"dossier-management-tabs\" type=\"contained\">\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.DOCUMENT\"\n [heading]=\"'dossierManagement.tabs.document' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.DOCUMENT)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.CASE\"\n [heading]=\"'dossierManagement.tabs.cases' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.CASE)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.PROCESSES\"\n [heading]=\"'dossierManagement.tabs.processes' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.PROCESSES)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [active]=\"obs.currentTab === TabEnum.SEARCH\"\n [heading]=\"'dossierManagement.tabs.searchFields' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.SEARCH)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"caseListColumn\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.LIST\"\n [heading]=\"'dossierManagement.tabs.listColumns' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.LIST)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"tabManagementEnabled\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.TABS\"\n [heading]=\"'dossierManagement.tabs.tabManagement' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.TABS)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"{active: obs.currentTab === TabEnum.STATUSES} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.statuses' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.STATUSES)\"\n >\n <valtimo-dossier-management-statuses\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-statuses>\n </cds-tab>\n\n @for (injectedTab of obs.injectedTabs; track injectedTab.translationKey) {\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === injectedTab.translationKey\"\n [heading]=\"injectedTab.translationKey | translate\"\n (selected)=\"displayBodyComponent(injectedTab.translationKey, true)\"\n >\n </cds-tab>\n }\n </cds-tabs>\n\n <div class=\"dossier-management-detail-container__content\">\n <ng-template #contentContainer></ng-template>\n\n <valtimo-dossier-management-document-definition\n *ngIf=\"\n (obs.currentTab === TabEnum.DOCUMENT && !pendingChanges) || pendingTab === TabEnum.DOCUMENT\n \"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (pendingChangesUpdate)=\"onPendingChangesUpdate($event)\"\n (cancelRedirect)=\"onCancelRedirectEvent()\"\n (confirmRedirect)=\"onConfirmRedirectEvent()\"\n ></valtimo-dossier-management-document-definition>\n\n <valtimo-dossier-management-detail\n *ngIf=\"(obs.currentTab === TabEnum.CASE && !pendingChanges) || pendingTab === TabEnum.CASE\"\n ></valtimo-dossier-management-detail>\n\n <valtimo-dossier-management-processes\n *ngIf=\"\n (obs.currentTab === TabEnum.PROCESSES && !pendingChanges) ||\n pendingTab === TabEnum.PROCESSES\n \"\n ></valtimo-dossier-management-processes>\n\n <valtimo-dossier-management-search-fields\n *ngIf=\"\n (obs.currentTab === TabEnum.SEARCH && !pendingChanges) || pendingTab === TabEnum.SEARCH\n \"\n ></valtimo-dossier-management-search-fields>\n\n <valtimo-dossier-management-list-columns\n *ngIf=\"(obs.currentTab === TabEnum.LIST && !pendingChanges) || pendingTab === TabEnum.LIST\"\n ></valtimo-dossier-management-list-columns>\n\n <valtimo-dossier-management-tabs\n *ngIf=\"(obs.currentTab === TabEnum.TABS && !pendingChanges) || pendingTab === TabEnum.TABS\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-tabs>\n </div>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-dossier-management-detail-container-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (versionSet)=\"onVersionSet($event)\"\n ></valtimo-dossier-management-detail-container-actions>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2024 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\nenum UPLOAD_STATUS {\n ACTIVE = 'active',\n ERROR = 'error',\n FINISHED = 'finished',\n}\n\nenum UPLOAD_STEP {\n ACCESS_CONTROL = 'accessControl',\n DASHBOARD = 'dashboard',\n FILE_SELECT = 'fileSelect',\n FILE_UPLOAD = 'fileUpload',\n PLUGINS = 'plugins',\n}\n\nconst STEPS = [\n UPLOAD_STEP.PLUGINS,\n UPLOAD_STEP.FILE_SELECT,\n UPLOAD_STEP.FILE_UPLOAD,\n UPLOAD_STEP.ACCESS_CONTROL,\n UPLOAD_STEP.DASHBOARD,\n];\n\nexport {STEPS, UPLOAD_STATUS, UPLOAD_STEP};\n","/*\n * Copyright 2015-2024 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 {HttpClient, HttpResponse} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierManagementService {\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this.valtimoEndpointUri = this.configService.config.valtimoApi.endpointUri;\n }\n\n public importDocumentDefinitionZip(file: FormData): Observable<HttpResponse<Blob>> {\n return this.http.post<HttpResponse<Blob>>(\n `${this.valtimoEndpointUri}management/v1/case/import`,\n file\n );\n }\n}\n","/*\n * Copyright 2015-2024 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';\n\n@Component({\n selector: 'valtimo-dossier-management-upload-step',\n templateUrl: './dossier-management-upload-step.component.html',\n styleUrls: ['./dossier-management-upload-step.component.scss'],\n})\nexport class DossierManagementUploadStepComponent {\n @Input() illustration!: string;\n @Input() message!: string;\n @Input() title!: string;\n}\n","<!--\n ~ Copyright 2015-2024 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=\"valtimo-upload-step__content\">\n <div class=\"valtimo-upload-step__title\">{{ title }}</div>\n\n <div class=\"valtimo-upload-step__message\">{{ message }}</div>\n</div>\n\n<img [src]=\"illustration\" alt=\"{{ illustration }}\" class=\"valtimo-upload-step__illustration\" />\n","/*\n * Copyright 2015-2024 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 */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {WarningFilled16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {DocumentDefinitionCreateRequest, DocumentService} from '@valtimo/document';\nimport {FileItem, IconService, NotificationContent} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {DossierManagementService} from '../../services/dossier-management.service';\nimport {STEPS, UPLOAD_STATUS, UPLOAD_STEP} from './dossier-management-upload.constants';\n\n@Component({\n selector: 'valtimo-dossier-management-upload',\n templateUrl: './dossier-management-upload.component.html',\n styleUrls: ['./dossier-management-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementUploadComponent implements OnInit, OnDestroy {\n @Input() open = false;\n @Output() closeModal = new EventEmitter<boolean>();\n\n public acceptedFiles: string[] = ['.json', '.zip'];\n public selectedFile: File | null;\n\n private readonly _disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly UPLOAD_STEP = UPLOAD_STEP;\n public readonly UPLOAD_STATUS = UPLOAD_STATUS;\n public readonly activeStep$ = new BehaviorSubject<UPLOAD_STEP>(UPLOAD_STEP.PLUGINS);\n public readonly backButtonEnabled$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.ACCESS_CONTROL, UPLOAD_STEP.DASHBOARD].includes(\n activeStep\n )\n )\n );\n public readonly isStepAfterUpload$: Observable<boolean> = this.activeStep$.pipe(\n map(\n (activeStep: UPLOAD_STEP) =>\n ![UPLOAD_STEP.PLUGINS, UPLOAD_STEP.FILE_SELECT].includes(activeStep)\n )\n );\n public readonly showCloseButton$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.PLUGINS, UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.FILE_UPLOAD].includes(activeStep)\n )\n );\n public readonly nextButtonDisabled$: Observable<boolean> = combineLatest([\n this.activeStep$,\n this._disabled$,\n ]).pipe(map(([activeStep, disabled]) => activeStep !== UPLOAD_STEP.PLUGINS && disabled));\n public readonly notificationObj$: Observable<NotificationContent> = combineLatest([\n this.translateService.stream('interface.warning'),\n this.translateService.stream('dossierManagement.importDefinition.overwriteWarning'),\n ]).pipe(\n map(([title, message]) => ({\n type: 'warning',\n title,\n message,\n showClose: false,\n lowContrast: true,\n }))\n );\n public readonly showCheckboxError$ = new BehaviorSubject<boolean>(false);\n public readonly uploadStatus$ = new BehaviorSubject<UPLOAD_STATUS>(UPLOAD_STATUS.ACTIVE);\n\n public form: FormGroup = this.fb.group({\n file: this.fb.control(new Set<any>(), [Validators.required]),\n });\n\n private _checked = false;\n\n private readonly _importFile$ = new BehaviorSubject<string | FormData>('');\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly dossierManagementService: DossierManagementService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(WarningFilled16);\n }\n\n public ngOnInit(): void {\n const control: AbstractControl | null = this.form.get('file');\n if (!control) {\n return;\n }\n\n this._subscriptions.add(\n this.form.get('file').valueChanges.subscribe((fileSet: Set<FileItem>) => {\n const [fileItem] = fileSet;\n if (!fileItem) {\n this._disabled$.next(true);\n this.showCheckboxError$.next(false);\n this._checked = false;\n return;\n }\n\n if (fileItem.file.type === 'application/json') {\n this.setJsonFile(fileItem);\n return;\n }\n\n this.setZipFile(fileItem);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.resetModal();\n }\n\n public onCloseModal(definitionUploaded?: boolean): void {\n this.closeModal.emit(definitionUploaded ?? false);\n this.resetModal();\n }\n\n public onBackClick(activeStep: UPLOAD_STEP): void {\n const prevIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) - 1;\n if (prevIndex === -1) {\n return;\n }\n\n this.activeStep$.next(STEPS[prevIndex]);\n }\n\n public onNextClick(activeStep: UPLOAD_STEP): void {\n const nextIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) + 1;\n if (nextIndex === STEPS.length) {\n return;\n }\n\n if (activeStep === UPLOAD_STEP.FILE_SELECT && !this._checked) {\n this.showCheckboxError$.next(true);\n return;\n }\n\n this.activeStep$.next(STEPS[nextIndex]);\n if (STEPS[nextIndex] !== UPLOAD_STEP.FILE_UPLOAD) {\n return;\n }\n\n this.uploadDefinition();\n }\n\n public onCheckedChange(checked: boolean): void {\n this._checked = checked;\n\n if (!checked) {\n return;\n }\n\n this.showCheckboxError$.next(false);\n }\n\n private setJsonFile(fileItem: FileItem | undefined): void {\n const file = fileItem?.file;\n\n if (!file) {\n this.clearJsonString();\n return;\n }\n const reader = new FileReader();\n\n reader.onloadend = () => {\n const result = (reader.result ?? '').toString();\n if (this.stringIsValidJson(result)) {\n this._disabled$.next(false);\n this._importFile$.next(result);\n return;\n }\n\n this.clearJsonString();\n this.setErrorState(fileItem);\n };\n\n reader.readAsText(file);\n }\n\n private setZipFile(fileItem: FileItem): void {\n const file = fileItem?.file;\n\n if (!file) {\n this._importFile$.next('');\n return;\n }\n\n const blob = new Blob([fileItem.file], {type: fileItem.file.type});\n const fd = new FormData();\n fd.append('file', blob, fileItem.file.name);\n this._importFile$.next(fd);\n this._disabled$.next(false);\n }\n\n private uploadDefinition(): void {\n this._disabled$.next(true);\n this._importFile$\n .pipe(\n switchMap((file: string | FormData) =>\n file instanceof FormData\n ? this.dossierManagementService.importDocumentDefinitionZip(file)\n : this.documentService.createDocumentDefinitionForManagement(\n new DocumentDefinitionCreateRequest(file)\n )\n ),\n take(1)\n )\n .subscribe({\n next: () => {\n this._disabled$.next(false);\n this.uploadStatus$.next(UPLOAD_STATUS.FINISHED);\n },\n error: () => {\n this.uploadStatus$.next(UPLOAD_STATUS.ERROR);\n this._disabled$.next(false);\n },\n });\n }\n\n private clearJsonString(): void {\n this._importFile$.next('');\n }\n\n private stringIsValidJson(string: string) {\n try {\n JSON.parse(string);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n private setErrorState(fileItem: FileItem): void {\n this._disabled$.next(true);\n fileItem.invalid = true;\n fileItem.invalidTitle = this.translateService.instant(\n 'dossierManagement.importDefinition.invalidJsonError.title'\n );\n fileItem.invalidText = this.translateService.instant(\n 'dossierManagement.importDefinition.invalidJsonError.text'\n );\n }\n\n private resetModal(): void {\n setTimeout(() => {\n this.activeStep$.next(UPLOAD_STEP.PLUGINS);\n this.uploadStatus$.next(UPLOAD_STATUS.ACTIVE);\n this.showCheckboxError$.next(false);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-dossier-management-upload-step\n [message]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-dossier-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'dossierManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'dossierManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'dossierManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"!obs.nextButtonDisabled\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'dossierManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'dossierManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'dossierManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'dossierManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'dossierManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {Edit16, Information16} from '@carbon/icons';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {DocumentService, TemplatePayload} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, take, tap} from 'rxjs';\n\n@Component({\n selector: 'valtimo-dossier-management-create',\n styleUrls: ['./dossier-management-create.component.scss'],\n templateUrl: './dossier-management-create.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementCreateComponent {\n @Input() open = false;\n @Output() closeModal = new EventEmitter<TemplatePayload | null>();\n\n public formGroup: FormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n name: this.fb.control({value: '', disabled: true}, [\n Validators.required,\n Validators.pattern('[A-Za-z0-9-]*'),\n ]),\n });\n\n private readonly _editActive$ = new BehaviorSubject<boolean>(false);\n public readonly editActive$ = this._editActive$.pipe(\n tap((editActive: boolean) => {\n const name: AbstractControl | null = this.formGroup.get('name');\n if (!name) {\n return;\n }\n\n if (editActive) {\n name.enable();\n return;\n }\n name.disable();\n })\n );\n public readonly editDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly idError$ = new BehaviorSubject<string | null>(null);\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Edit16, Information16]);\n }\n\n public onCloseModal(definitionCreated?: boolean): void {\n if (!definitionCreated) {\n this.closeModal.emit(null);\n this.resetForm();\n return;\n }\n\n const {name, title} = this.formGroup.controls;\n if (!name || !title) {\n return;\n }\n\n this.documentService\n .getDocumentDefinition(name.value, true)\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.idError$.next('dossierManagement.createDefinition.idError');\n this.editDisabled$.next(false);\n this.enableEdit();\n },\n error: () => {\n this.closeModal.emit({\n documentDefinitionId: name.value,\n documentDefinitionTitle: title.value,\n });\n this.resetForm();\n },\n });\n }\n\n public enableEdit(): void {\n this._editActive$.next(true);\n }\n\n public onFocusOut(): void {\n const {name, title} = this.formGroup.controls;\n if (!name || !title) {\n return;\n }\n\n if (!title.value) {\n return;\n }\n\n name.patchValue(title.value.replace(/\\W+/g, '-').replace(/\\-$/, '').toLowerCase());\n this.editDisabled$.next(false);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.formGroup.reset();\n this.idError$.next(null);\n this._editActive$.next(false);\n this.editDisabled$.next(true);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal\n *ngIf=\"{\n editDisabled: editDisabled$ | async,\n idError: idError$ | async,\n editActive: editActive$ | async,\n } as obs\"\n [open]=\"open\"\n showFooter=\"true\"\n valtimoCdsModal\n class=\"valtimo-definition-create\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.createDefinition.modalTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <form [formGroup]=\"formGroup\" cdsModalContent class=\"valtimo-definition-create__content\">\n <cds-label>\n {{ 'dossierManagement.createDefinition.title' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'dossierManagement.createDefinition.titleTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'dossierManagement.createDefinition.titlePlaceholder' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n (focusout)=\"onFocusOut()\"\n />\n </cds-label>\n\n <cds-label [invalid]=\"!!obs.idError\" [invalidText]=\"obs.idError | translate\">\n {{ 'dossierManagement.createDefinition.name' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'dossierManagement.createDefinition.nameTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <div class=\"valtimo-definition-create__name\">\n <input\n cdsText\n formControlName=\"name\"\n [invalid]=\"!!obs.idError\"\n [placeholder]=\"'dossierManagement.createDefinition.namePlaceholder' | translate\"\n [attr.modal-primary-focus]=\"true\"\n />\n\n <button\n *ngIf=\"!obs.editActive\"\n cdsButton=\"secondary\"\n [disabled]=\"obs.editDisabled\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"enableEdit()\"\n >\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </cds-label>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"formGroup.invalid\" (click)=\"onCloseModal(true)\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {Component} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {Search20, TrashCan20, Upload16} from '@carbon/icons';\nimport {ColumnConfig, MenuService, Pagination, ViewType} from '@valtimo/components';\nimport {\n DocumentDefinition,\n DocumentService,\n Page,\n TemplatePayload,\n CreateDocumentDefinitionResponse,\n} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport moment from 'moment';\nimport {BehaviorSubject, map, Observable, switchMap, take} from 'rxjs';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n selector: 'valtimo-dossier-management-list',\n templateUrl: './dossier-management-list.component.html',\n styleUrls: ['./dossier-management-list.component.scss'],\n})\nexport class DossierManagementListComponent {\n public pagination: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n };\n\n private readonly _refreshData$ = new BehaviorSubject<null>(null);\n public dossiers$: Observable<DocumentDefinition[]> = this._refreshData$.pipe(\n switchMap(() =>\n this.documentService.queryDefinitionsForManagement({\n page: this.pagination.page - 1,\n size: this.pagination.size,\n })\n ),\n map((documentDefinitionPage: Page<DocumentDefinition>) => {\n this.pagination = {\n ...this.pagination,\n collectionSize: documentDefinitionPage.totalElements,\n };\n\n return documentDefinitionPage.content.map((documentDefinition: DocumentDefinition) => ({\n ...documentDefinition,\n createdOn: moment(documentDefinition.createdOn).format('DD MMM YYYY HH:mm'),\n }));\n })\n );\n\n public dossierFields: ColumnConfig[] = [\n {key: 'schema.title', label: 'fieldLabels.title', viewType: ViewType.TEXT},\n {key: 'createdOn', label: 'fieldLabels.createdOn', viewType: ViewType.TEXT},\n {key: 'readOnly', label: 'fieldLabels.readOnly', viewType: ViewType.BOOLEAN},\n ];\n\n public readonly showCreateModal$ = new BehaviorSubject<boolean>(false);\n public readonly showUploadModal$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private readonly menuService: MenuService,\n private readonly router: Router\n ) {\n this.iconService.registerAll([Search20, TrashCan20, Upload16]);\n }\n\n public onCloseUploadModal(definitionUploaded: boolean): void {\n this.showUploadModal$.next(false);\n\n if (!definitionUploaded) {\n return;\n }\n this._refreshData$.next(null);\n this.menuService.reload();\n }\n\n public onCloseCreateModal(templatePayload: TemplatePayload | null): void {\n this.showCreateModal$.next(false);\n if (!templatePayload) {\n return;\n }\n\n this.documentService\n .createDocumentDefinitionTemplate(templatePayload)\n .pipe(take(1))\n .subscribe((response: CreateDocumentDefinitionResponse) => {\n this.redirectToDetails(response.documentDefinition);\n });\n }\n\n public paginationClicked(page: number): void {\n this.pagination = {...this.pagination, page};\n this._refreshData$.next(null);\n }\n\n public paginationSet(size: number): void {\n this.pagination = {...this.pagination, size};\n this._refreshData$.next(null);\n }\n\n public redirectToDetails(documentDefinition: DocumentDefinition): void {\n this.router.navigate(['/dossier-management/dossier', documentDefinition.id.name]);\n }\n\n public showUploadModal(): void {\n this.showUploadModal$.next(true);\n }\n\n public showCreateModal(): void {\n this.showCreateModal$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-carbon-list\n *ngIf=\"dossiers$ | async as dossiers; else loading\"\n [items]=\"dossiers\"\n [fields]=\"dossierFields\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"dossierManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"redirectToDetails($event)\"\n>\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"importCaseDefinitionButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addCaseDefinitionButton\"\n [description]=\"'dossierManagement.noResults.description' | translate\"\n [title]=\"'dossierManagement.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #loading>\n <valtimo-carbon-list loading=\"true\"></valtimo-carbon-list>\n</ng-template>\n\n<valtimo-dossier-management-upload\n [open]=\"showUploadModal$ | async\"\n (closeModal)=\"onCloseUploadModal($event)\"\n></valtimo-dossier-management-upload>\n\n<valtimo-dossier-management-create\n [open]=\"showCreateModal$ | async\"\n (closeModal)=\"onCloseCreateModal($event)\"\n></valtimo-dossier-management-create>\n\n<ng-template #importCaseDefinitionButton>\n <button cdsButton=\"ghost\" (click)=\"showUploadModal()\">\n {{ 'Upload' | translate }}\n\n <svg cdsIcon=\"upload\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" (click)=\"showCreateModal()\">\n {{ 'interface.create' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {CARBON_CONSTANTS, ValtimoCdsModalDirectiveModule} from '@valtimo/components';\nimport {TabManagementService} from '../../services';\nimport {ApiTabItem, ApiTabType} from '@valtimo/dossier';\nimport {\n ButtonModule,\n InputModule,\n ModalModule,\n NotificationService,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-dossier-management-widget-tab-edit-modal',\n templateUrl: './dossier-management-widget-tab-edit-modal.html',\n styleUrls: ['./dossier-management-widget-tab-edit-modal.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [NotificationService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirectiveModule,\n ReactiveFormsModule,\n InputModule,\n ButtonModule,\n ],\n})\nexport class DossierManagementWidgetTabEditModalComponent implements OnInit, OnDestroy {\n @Input() public showModal$: Observable<boolean>;\n @Input() public tabItem: ApiTabItem;\n @Output() public saveEvent = new EventEmitter<any>();\n\n public readonly open$ = new BehaviorSubject<boolean>(false);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n public readonly editWidgetTabForm = this.fb.group({\n name: this.fb.control('', [Validators.required]),\n });\n\n public get widgetTabName(): AbstractControl<string | null, string | null> | null {\n return this.editWidgetTabForm.get('name');\n }\n\n private _openSubscription!: Subscription;\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly tabManagementService: TabManagementService\n ) {}\n\n public ngOnInit(): void {\n this.openOpenSubscription();\n }\n\n public ngOnDestroy(): void {\n this._openSubscription?.unsubscribe();\n }\n\n public closeModal(): void {\n this.open$.next(false);\n\n setTimeout(() => {\n this.editWidgetTabForm.reset();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public saveWidgetTab(): void {\n this.disable();\n\n this.tabManagementService\n .editTab(\n {\n key: this.tabItem.key,\n name: this.widgetTabName?.value,\n contentKey: '-',\n type: ApiTabType.WIDGETS,\n },\n this.tabItem.key\n )\n .subscribe(() => {\n this.saveEvent.emit();\n this.closeModal();\n });\n }\n\n private setEditWidgetTabForm(): void {\n if (this.tabItem) {\n this.widgetTabName?.setValue(this.tabItem.name ?? '');\n }\n\n this.enable();\n }\n\n private openOpenSubscription(): void {\n this._openSubscription = this.showModal$.subscribe(show => {\n this.setEditWidgetTabForm();\n this.open$.next(show);\n });\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-2024 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<cds-modal\n *ngIf=\"{disabled: disabled$ | async} as obs\"\n valtimoCdsModal\n [open]=\"open$ | async\"\n showFooter=\"true\"\n title=\"{{ 'widgetTabManagement.tab.editWidgetTab' | translate }}\"\n class=\"edit-widget-tab-modal\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'widgetTabManagement.tab.editWidgetTab' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"editWidgetTabFormTemplate;context:{obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"editWidgetTabButtons;context:{obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #editWidgetTabFormTemplate let-obs=\"obs\">\n <form *ngIf=\"editWidgetTabForm\" [formGroup]=\"editWidgetTabForm\" class=\"widget-tab-modal__form\">\n <cds-label [disabled]=\"obs.disabled\" [invalid]=\"widgetTabName.dirty && widgetTabName.invalid\">\n {{ 'widgetTabManagement.tab.form.tabName' | translate }}\n\n <input\n cdsText\n [disabled]=\"obs.disabled\"\n [invalid]=\"widgetTabName.dirty && widgetTabName.invalid\"\n formControlName=\"name\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </form>\n</ng-template>\n\n<ng-template #editWidgetTabButtons let-obs=\"obs\">\n <button cdsButton=\"ghost\" [disabled]=\"obs.disabled\" (click)=\"closeModal()\">\n {{ 'widgetTabManagement.tab.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"editWidgetTabForm.invalid || obs.disabled\"\n (click)=\"saveWidgetTab()\"\n >\n {{ 'widgetTabManagement.tab.save' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WidgetWizardService} from '../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-content-step',\n templateUrl: './widget-wizard-content-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CommonModule],\n})\nexport class WidgetWizardContentStepComponent implements OnInit {\n @ViewChild('contentRenderer', {static: true, read: ViewContainerRef})\n private readonly _vcr: ViewContainerRef;\n\n @Output() public contentValidEvent = new EventEmitter<boolean>();\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this.renderComponent();\n }\n\n private renderComponent(): void {\n this._vcr.clear();\n const widget = this.widgetWizardService.selectedWidget();\n if (!widget) return;\n\n const componentInstance = this._vcr.createComponent(widget.component).instance;\n if (!componentInstance) return;\n\n componentInstance.changeValidEvent.subscribe((valid: boolean) =>\n this.contentValidEvent.emit(valid)\n );\n\n this.cdr.detectChanges();\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-template #contentRenderer></ng-template>\n","/*\n * Copyright 2015-2024 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 {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, EventEmitter, Output} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TilesModule} from 'carbon-components-angular';\nimport {WidgetWizardService} from '../../../../services';\nimport {WidgetStyle} from '../../../../models';\n\n@Component({\n selector: 'valtimo-widget-wizard-style-step',\n templateUrl: './widget-wizard-style-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardStyleStepComponent {\n public readonly WidgetStyle = WidgetStyle;\n public readonly widgetStyle = this.widgetWizardService.widgetStyle;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: WidgetStyle}): void {\n this.widgetWizardService.widgetStyle.set(event.value);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"WidgetStyle.DEFAULT\"\n [selected]=\"widgetStyle() === WidgetStyle.DEFAULT\"\n >\n <h3>{{ 'widgetTabManagement.style.default.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.style.default.description' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/style/default.svg\"\n [alt]=\"'widgetTabManagement.style.default.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"WidgetStyle.HIGH_CONTRAST\"\n [selected]=\"widgetStyle() === WidgetStyle.HIGH_CONTRAST\"\n >\n <h3>{{ 'widgetTabManagement.style.highContrast.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.style.highContrast.description' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/style/high-contrast.svg\"\n [alt]=\"'widgetTabManagement.style.highContrast.title' | translate\"\n />\n </cds-selection-tile>\n</cds-tile-group>\n","/*\n * Copyright 2015-2024 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 {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {AVAILABLE_WIDGETS, WidgetTypeSelection} from '../../../../models';\nimport {TilesModule} from 'carbon-components-angular';\nimport {WidgetWizardService} from '../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-type-step',\n templateUrl: './widget-wizard-type-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardTypeStepComponent {\n public readonly availableWidgets = AVAILABLE_WIDGETS;\n public readonly selectedWidget = this.widgetWizardService.selectedWidget;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: WidgetTypeSelection}): void {\n if (event.value.type !== this.widgetWizardService.selectedWidget()?.type) {\n this.widgetWizardService.widgetContent.set(null);\n this.widgetWizardService.widgetTitle.set(null);\n }\n\n this.widgetWizardService.selectedWidget.set(event.value);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n @for (widgetType of availableWidgets; track widgetType.titleKey) {\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"widgetType\"\n [selected]=\"widgetType.type === selectedWidget()?.type\"\n >\n <h3 class=\"valtimo-widget-wizard-step__tile-title\">{{ widgetType.titleKey | translate }}</h3>\n\n <span>{{ widgetType.descriptionKey | translate }}</span>\n\n <img [src]=\"widgetType.illustrationUrl\" [alt]=\"widgetType.titleKey | translate\" />\n </cds-selection-tile>\n }\n</cds-tile-group>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, Signal} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CaseWidgetType, CaseWidgetWidth} from '@valtimo/dossier';\nimport {TilesModule} from 'carbon-components-angular';\nimport {WidgetWizardService} from '../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-width-step',\n templateUrl: './widget-wizard-width-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardWidthStepComponent {\n public readonly fieldsColumnsLength: Signal<number> = computed(() =>\n this.widgetWizardService.selectedWidget()?.type === CaseWidgetType.FIELDS\n ? (this.widgetWizardService.widgetContent()?.['columns']?.length ?? 0)\n : 0\n );\n public readonly widgetWidth = this.widgetWizardService.widgetWidth;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: CaseWidgetWidth}): void {\n this.widgetWizardService.widgetWidth.set(event.value);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"1\"\n [selected]=\"widgetWidth() === 1\"\n [disabled]=\"fieldsColumnsLength() > 1\"\n >\n <h3>{{ 'widgetTabManagement.width.small.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.small.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/quarter.svg\"\n [alt]=\"'widgetTabManagement.width.small.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"2\"\n [selected]=\"widgetWidth() === 2\"\n [disabled]=\"fieldsColumnsLength() > 2\"\n >\n <h3>{{ 'widgetTabManagement.width.medium.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.medium.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/half.svg\"\n [alt]=\"'widgetTabManagement.width.medium.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"3\"\n [selected]=\"widgetWidth() === 3\"\n [disabled]=\"fieldsColumnsLength() > 3\"\n >\n <h3>{{ 'widgetTabManagement.width.large.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.large.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/three-quarters.svg\"\n [alt]=\"'widgetTabManagement.width.large.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"4\"\n [selected]=\"widgetWidth() === 4\"\n >\n <h3>{{ 'widgetTabManagement.width.xtraLarge.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.xtraLarge.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/full-width.svg\"\n [alt]=\"'widgetTabManagement.width.xtraLarge.title' | translate\"\n />\n </cds-selection-tile>\n</cds-tile-group>\n","/*\n * Copyright 2015-2024 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 */\nimport {WidgetWizardContentStepComponent} from './widget-wizard-content-step/widget-wizard-content-step.component';\nimport {WidgetWizardStyleStepComponent} from './widget-wizard-style-step/widget-wizard-style-step.component';\nimport {WidgetWizardTypeStepComponent} from './widget-wizard-type-step/widget-wizard-type-step.component';\nimport {WidgetWizardWidthStepComponent} from './widget-wizard-width-step/widget-wizard-width-step.component';\n\nexport const WIDGET_STEPS = [\n WidgetWizardContentStepComponent,\n WidgetWizardStyleStepComponent,\n WidgetWizardTypeStepComponent,\n WidgetWizardWidthStepComponent,\n];\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n Input,\n Output,\n Signal,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {ButtonModule, ModalModule, ProgressIndicatorModule, Step} from 'carbon-components-angular';\nimport {combineLatest, map, Observable} from 'rxjs';\nimport {WIDGET_STYLE_LABELS, WIDGET_WIDTH_LABELS, WidgetWizardStep} from '../../models';\nimport {WidgetWizardService} from '../../services';\nimport {WIDGET_STEPS} from './steps';\n\n@Component({\n selector: 'valtimo-dossier-management-widget-wizard',\n templateUrl: './dossier-management-widget-wizard.component.html',\n styleUrls: ['./dossier-management-widget-wizard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ProgressIndicatorModule,\n ModalModule,\n ButtonModule,\n ...WIDGET_STEPS,\n ],\n})\nexport class DossierManagementWidgetWizardComponent {\n @Input() public open = false;\n private _editMode: boolean;\n @Input() public set editMode(value: boolean) {\n this._editMode = value;\n if (!value) return;\n\n this.currentStep.set(WidgetWizardStep.CONTENT);\n }\n public get editMode(): boolean {\n return this._editMode;\n }\n @Output() public closeEvent = new EventEmitter<any>();\n\n public readonly WidgetWizardSteps = WidgetWizardStep;\n private readonly _secondaryLabels = computed(() => {\n const selectedWidgetType = this.widgetWizardService.selectedWidget()?.type ?? '';\n const selectedWidth = this.widgetWizardService.widgetWidth() ?? '';\n const selectedStyle = this.widgetWizardService.widgetStyle() ?? '';\n\n return {\n [WidgetWizardStep.TYPE]: selectedWidgetType\n ? `widgetTabManagement.types.${selectedWidgetType}.title`\n : '',\n [WidgetWizardStep.WIDTH]: WIDGET_WIDTH_LABELS[selectedWidth] ?? '',\n [WidgetWizardStep.STYLE]: WIDGET_STYLE_LABELS[selectedStyle] ?? '',\n };\n });\n\n public readonly steps$: Observable<Step[]> = combineLatest([\n toObservable(this._secondaryLabels),\n toObservable(this.widgetWizardService.editMode),\n this.translateService.stream('key'),\n ]).pipe(\n map(([secondaryLabels, editMode]) => {\n return [\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.type'),\n ...(secondaryLabels[WidgetWizardStep.TYPE] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[WidgetWizardStep.TYPE]),\n }),\n disabled: editMode,\n complete: !!this.widgetWizardService.selectedWidget()?.type,\n },\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.width'),\n ...(secondaryLabels[WidgetWizardStep.WIDTH] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[WidgetWizardStep.WIDTH]),\n }),\n disabled: !secondaryLabels[WidgetWizardStep.TYPE],\n complete: !!this.widgetWizardService.widgetWidth(),\n },\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.style'),\n ...(secondaryLabels[WidgetWizardStep.STYLE] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[WidgetWizardStep.STYLE]),\n }),\n disabled: !secondaryLabels[WidgetWizardStep.WIDTH],\n complete: !!this.widgetWizardService.widgetStyle(),\n },\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.content'),\n disabled:\n !secondaryLabels[WidgetWizardStep.TYPE] ||\n !secondaryLabels[WidgetWizardStep.WIDTH] ||\n !secondaryLabels[WidgetWizardStep.STYLE],\n complete: !!this.widgetWizardService.widgetContent(),\n },\n ];\n })\n );\n\n private readonly _contentStepValid = signal<boolean>(false);\n public readonly currentStep = signal<WidgetWizardStep>(WidgetWizardStep.TYPE);\n public readonly backButtonDisabled: Signal<boolean> = computed(\n () => this.widgetWizardService.editMode() && this.currentStep() === WidgetWizardStep.WIDTH\n );\n public nextButtonDisabled = computed(() => {\n switch (this.currentStep()) {\n case WidgetWizardStep.TYPE:\n return !this.widgetWizardService.selectedWidget();\n case WidgetWizardStep.WIDTH:\n return !this.widgetWizardService.widgetWidth();\n case WidgetWizardStep.STYLE:\n return this.widgetWizardService.widgetStyle() === null;\n case WidgetWizardStep.CONTENT:\n return this.widgetWizardService.widgetContent() === null || !this._contentStepValid();\n default:\n return true;\n }\n });\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public onStepSelected(event: {step: Step; index: WidgetWizardStep}): void {\n this.currentStep.set(event.index);\n }\n\n public onNextButtonClick(): void {\n if (this.currentStep() === WidgetWizardStep.CONTENT) {\n this.closeEvent.emit(this.widgetWizardService.widgetsConfig());\n this.resetWizard();\n return;\n }\n\n this.currentStep.update((step: WidgetWizardStep) => step + 1);\n }\n\n public onBackButtonClick(): void {\n this.currentStep.update((step: WidgetWizardStep) => step - 1);\n }\n\n public onClose(): void {\n this.closeEvent.emit(null);\n this.resetWizard();\n }\n\n public onContentValidEvent(valid: boolean): void {\n this._contentStepValid.set(valid);\n }\n\n private resetWizard(): void {\n setTimeout(() => {\n this.widgetWizardService.resetWizard();\n this.currentStep.set(WidgetWizardStep.TYPE);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<cds-modal\n *ngIf=\"{steps: steps$ | async} as obs\"\n [open]=\"open\"\n showFooter=\"true\"\n size=\"lg\"\n valtimoCdsModal\n class=\"valtimo-dossier-management-widget-wizard\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ 'widgetTabManagement.wizard.' + (editMode ? 'edit' : 'create') | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-dossier-management-widget-wizard__content\">\n <cds-progress-indicator\n [current]=\"currentStep()\"\n [skeleton]=\"!obs.steps\"\n [spacing]=\"'equal'\"\n [steps]=\"obs.steps\"\n (stepSelected)=\"onStepSelected($event)\"\n >\n </cds-progress-indicator>\n\n @switch (currentStep()) {\n @case (WidgetWizardSteps.TYPE) {\n <p>{{ 'widgetTabManagement.types.description' | translate }}</p>\n\n <valtimo-widget-wizard-type-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-type-step>\n }\n @case (WidgetWizardSteps.WIDTH) {\n <p>{{ 'widgetTabManagement.width.description' | translate }}</p>\n\n <valtimo-widget-wizard-width-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-width-step>\n }\n @case (WidgetWizardSteps.STYLE) {\n <p>{{ 'widgetTabManagement.style.description' | translate }}</p>\n\n <valtimo-widget-wizard-style-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-style-step>\n }\n @case (WidgetWizardSteps.CONTENT) {\n <valtimo-widget-wizard-content-step\n (contentValidEvent)=\"onContentValidEvent($event)\"\n ></valtimo-widget-wizard-content-step>\n }\n @default {\n <p>{{ 'widgetTabManagement.types.description' | translate }}</p>\n\n <valtimo-widget-wizard-type-step></valtimo-widget-wizard-type-step>\n }\n }\n </section>\n\n <cds-modal-footer class=\"valtimo-dossier-management-widget-wizard__footer\">\n <button\n class=\"valtimo-dossier-management-widget-wizard__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onClose()\"\n >\n {{ 'interface.cancel' | translate }}\n </button>\n\n @if (currentStep() !== WidgetWizardSteps.TYPE) {\n <button\n class=\"valtimo-dossier-management-widget-wizard__back\"\n cdsButton=\"secondary\"\n [disabled]=\"backButtonDisabled()\"\n (click)=\"onBackButtonClick()\"\n >\n {{ 'interface.back' | translate }}\n </button>\n }\n\n <button\n class=\"valtimo-dossier-management-widget-wizard__next\"\n cdsButton=\"primary\"\n [disabled]=\"nextButtonDisabled()\"\n (click)=\"onNextButtonClick()\"\n >\n {{\n 'interface.' + (currentStep() === WidgetWizardSteps.CONTENT ? 'save' : 'next') | translate\n }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 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 {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n KeyGeneratorService,\n ViewType,\n} from '@valtimo/components';\nimport {BasicCaseWidget, CaseWidget, CaseWidgetsRes} from '@valtimo/dossier';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, take} from 'rxjs';\nimport {AVAILABLE_WIDGETS, WidgetStyle, WidgetTypeTags} from '../../../models';\nimport {WidgetTabManagementService, WidgetWizardService} from '../../../services';\nimport {DossierManagementWidgetWizardComponent} from '../../dossier-management-widget-wizard/dossier-management-widget-wizard.component';\nimport {cloneDeep} from 'lodash';\n\n@Component({\n selector: 'valtimo-dossier-management-widgets-editor',\n templateUrl: './dossier-management-widgets-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n TabsModule,\n DossierManagementWidgetWizardComponent,\n ConfirmationModalModule,\n ],\n})\nexport class DossierManagementWidgetsEditorComponent {\n @Input() public documentDefinitionName: string;\n @Input() public tabWidgetKey: string;\n private _currentWidgetTab: CaseWidgetsRes;\n @Input() public set currentWidgetTab(value: CaseWidgetsRes) {\n if (!value) return;\n\n this._currentWidgetTab = value;\n this._items$.next(value?.widgets);\n this._usedKeys = value?.widgets.map(widget => widget.key);\n this.dragAndDropDisabled.set(false);\n }\n public get currentWidgetTab(): CaseWidgetsRes {\n return this._currentWidgetTab;\n }\n\n @Output() public readonly changeSaved = new EventEmitter();\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'interface.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'tags',\n label: 'widgetTabManagement.columns.type',\n viewType: ViewType.TAGS,\n },\n {\n key: 'key',\n label: 'interface.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'widthTranslation',\n label: 'widgetTabManagement.columns.width',\n viewType: ViewType.TEXT,\n },\n {\n key: 'highContrast',\n label: 'widgetTabManagement.columns.highContrast',\n viewType: ViewType.BOOLEAN,\n },\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editWidget.bind(this),\n },\n {\n label: 'interface.duplicate',\n callback: this.duplicateWidget.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.deleteWidget.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _items$ = new BehaviorSubject<CarbonListItem[]>([]);\n public readonly items$: Observable<CarbonListItem[]> = combineLatest([\n this._items$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([items]) =>\n items.map(item => ({\n ...item,\n widthTranslation: this.translateService.instant(this.getWidthTranslationKey(item.width)),\n tags: [\n {\n content: this.translateService.instant(`widgetTabManagement.types.${item.type}.title`),\n type: WidgetTypeTags[item.type],\n },\n ],\n }))\n )\n );\n\n public readonly isWizardOpen$ = new BehaviorSubject<boolean>(false);\n public readonly isEditMode = this.widgetWizardService.editMode;\n public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly deleteRowKey$ = new Subject<number>();\n\n public readonly dragAndDropDisabled = signal(false);\n\n private _usedKeys: string[];\n\n constructor(\n private readonly keyGeneratorService: KeyGeneratorService,\n private readonly translateService: TranslateService,\n private readonly widgetTabManagementService: WidgetTabManagementService,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public editWidget(tabWidget: CaseWidget): void {\n this.widgetWizardService.widgetTitle.set(tabWidget.title);\n this.widgetWizardService.widgetStyle.set(\n tabWidget.highContrast ? WidgetStyle.HIGH_CONTRAST : WidgetStyle.DEFAULT\n );\n this.widgetWizardService.widgetWidth.set(tabWidget.width);\n this.widgetWizardService.selectedWidget.set(\n AVAILABLE_WIDGETS.find(available => available.type === tabWidget.type) ?? null\n );\n this.widgetWizardService.widgetContent.set(tabWidget.properties);\n this.widgetWizardService.editMode.set(true);\n this.widgetWizardService.widgetKey.set(tabWidget.key);\n this.widgetWizardService.widgetActions.set(tabWidget.actions);\n this.isWizardOpen$.next(true);\n }\n\n public duplicateWidget(tabWidget: CaseWidget): void {\n const tabWidgetClone = cloneDeep(tabWidget);\n tabWidgetClone.key = null;\n this.editWidget(tabWidgetClone);\n }\n\n public openAddModal(): void {\n this.isWizardOpen$.next(true);\n }\n\n public onDeleteConfirm(widgetKey: string): void {\n this.widgetTabManagementService\n .updateWidgets({\n ...this.currentWidgetTab,\n widgets: this.currentWidgetTab.widgets.filter(widget => widget.key !== widgetKey),\n })\n .pipe(take(1))\n .subscribe(() => {\n this.changeSaved.emit();\n });\n }\n\n public onCloseEvent(widgetResult: BasicCaseWidget, existingWidgets: CaseWidget[]): void {\n this.isWizardOpen$.next(false);\n this.widgetWizardService.resetWizard();\n\n if (!widgetResult) return;\n\n this.widgetTabManagementService\n .updateWidgets({\n caseDefinitionName: this.documentDefinitionName,\n key: this.tabWidgetKey,\n widgets: !!widgetResult.key\n ? existingWidgets.map((widget: BasicCaseWidget) =>\n widget.key === widgetResult.key ? widgetResult : widget\n )\n : [\n ...existingWidgets,\n {\n ...widgetResult,\n key: this.keyGeneratorService.getUniqueKey(widgetResult.title, this._usedKeys),\n },\n ],\n })\n .pipe(take(1))\n .subscribe(() => {\n this.changeSaved.emit();\n });\n }\n\n public onItemsReordered(widgets: CaseWidget[]): void {\n this.dragAndDropDisabled.set(true);\n\n this.widgetTabManagementService\n .updateWidgets({\n ...this.currentWidgetTab,\n widgets,\n })\n .pipe(take(1))\n .subscribe(() => {\n this.changeSaved.emit();\n });\n }\n\n private deleteWidget(tabWidget: any): void {\n this.deleteRowKey$.next(tabWidget.key);\n this.deleteModalOpen$.next(true);\n }\n\n private getWidthTranslationKey(width: number): string {\n switch (width) {\n case 1:\n return 'widgetTabManagement.width.small.title';\n case 2:\n return 'widgetTabManagement.width.medium.title';\n case 3:\n return 'widgetTabManagement.width.large.title';\n case 4:\n return 'widgetTabManagement.width.xtraLarge.title';\n default:\n return '-';\n }\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<ng-container\n *ngIf=\"{\n isWizardOpen: isWizardOpen$ | async,\n items: items$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [items]=\"obs.items\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"dragAndDropDisabled()\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editWidget($event)\"\n >\n <ng-container carbonToolbarContent>\n <ng-container *ngTemplateOutlet=\"addWidgetButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n [description]=\"'widgetTabManagement.list.noResults.description' | translate\"\n [title]=\"'widgetTabManagement.list.noResults.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <ng-template #addWidgetButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'widgetTabManagement.list.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-template>\n\n <valtimo-dossier-management-widget-wizard\n [editMode]=\"isEditMode()\"\n [open]=\"obs.isWizardOpen\"\n (closeEvent)=\"onCloseEvent($event, obs.items)\"\n ></valtimo-dossier-management-widget-wizard>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"Are you sure you want to delete this widget?\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n Input,\n Output,\n Signal,\n signal,\n ViewChild,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {Edit16, Save16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n ConfirmationModalComponent,\n ConfirmationModalModule,\n EditorModel,\n EditorModule,\n} from '@valtimo/components';\nimport {BasicCaseWidget, CaseWidgetsRes} from '@valtimo/dossier';\nimport {\n ButtonModule,\n IconModule,\n IconService,\n NotificationService,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, Observable, take} from 'rxjs';\nimport {WidgetJsonEditorService, WidgetTabManagementService} from '../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-widgets-json-editor',\n templateUrl: './dossier-management-widgets-json-editor.component.html',\n styleUrl: './dossier-management-widgets-json-editor.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n EditorModule,\n ButtonModule,\n IconModule,\n ConfirmationModalModule,\n ],\n providers: [NotificationService],\n})\nexport class DossierManagementWidgetsJsonEditorComponent implements AfterViewInit {\n @ViewChild('pendingChangesModal') public pendingChangesModal: ConfirmationModalComponent;\n\n private _currentWidgetTab: CaseWidgetsRes;\n @Input() public set currentWidgetTab(value: CaseWidgetsRes) {\n if (!value) return;\n this._currentWidgetTab = value;\n this.jsonModel.set({\n value: JSON.stringify(value),\n language: 'json',\n });\n }\n\n @Output() public readonly customModalLoaded = new EventEmitter<ConfirmationModalComponent>();\n @Output() public readonly canDeactivate = new EventEmitter<boolean>();\n @Output() public readonly pendingChangesUpdate = new EventEmitter<boolean>();\n @Output() public readonly changeSaved = new EventEmitter();\n\n public readonly jsonModel = signal<EditorModel | null>(null);\n public readonly editActive = signal<boolean>(false);\n\n public readonly showPendingModal$: Observable<boolean> = toObservable(\n this.widgetJsonEditorService.showPendingModal\n );\n public readonly showSaveConfirmation$ = new BehaviorSubject<boolean>(false);\n\n private readonly _widgetConfig = signal<CaseWidgetsRes | null>(null);\n\n private _editorInit = false;\n private _pendingChanges = false;\n private readonly _jsonValid = signal<boolean>(false);\n private readonly _jsonSchemaInvalid = signal<boolean>(false);\n public readonly saveButtonDisabled: Signal<boolean> = computed(\n () => !this._jsonValid() || this._jsonSchemaInvalid() || !this._widgetConfig()\n );\n\n constructor(\n private readonly iconService: IconService,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService,\n private readonly widgetJsonEditorService: WidgetJsonEditorService,\n private readonly widgetTabManagementService: WidgetTabManagementService\n ) {\n this.iconService.registerAll([Edit16, Save16]);\n }\n\n public ngAfterViewInit(): void {\n this.customModalLoaded.emit(this.pendingChangesModal);\n }\n\n public downloadConfig(): void {\n const dataString =\n 'data:text/json;charset=utf-8,' +\n encodeURIComponent(JSON.stringify(this._currentWidgetTab, null, 2));\n const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n if (!downloadAnchorElement) {\n return;\n }\n\n downloadAnchorElement.setAttribute('href', dataString);\n downloadAnchorElement.setAttribute(\n 'download',\n `${this._currentWidgetTab.caseDefinitionName}-widgets.json`\n );\n downloadAnchorElement.click();\n }\n\n public keepEditing(): void {\n this.widgetJsonEditorService.showPendingModal.set(false);\n this.showSaveConfirmation$.next(false);\n this.canDeactivate.emit(false);\n }\n\n public discardChanges(): void {\n this.editActive.set(false);\n this.jsonModel.update((model: EditorModel | null) => ({\n ...model,\n value: JSON.stringify(this._currentWidgetTab),\n }));\n this.widgetJsonEditorService.showPendingModal.set(false);\n this.setPendingChanges(false);\n this.canDeactivate.emit(true);\n }\n\n public save(): void {\n const config: CaseWidgetsRes | null = this._widgetConfig();\n\n if (!config) return;\n\n this.widgetTabManagementService\n .updateWidgets(config)\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('interface.success'),\n message: this.translateService.instant('widgetTabManagement.notification.success'),\n showClose: true,\n duration: CARBON_CONSTANTS.notificationDuration,\n });\n this.widgetJsonEditorService.showPendingModal.set(false);\n this.editActive.set(false);\n this.setPendingChanges(false);\n this.changeSaved.emit();\n this.canDeactivate.emit(true);\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('interface.error'),\n message: this.translateService.instant('widgetTabManagement.notification.error'),\n showClose: true,\n duration: CARBON_CONSTANTS.notificationDuration,\n });\n },\n });\n }\n\n public onCancelClick(): void {\n if (!this._widgetConfig() || !this._pendingChanges) {\n this.editActive.set(false);\n return;\n }\n\n this.widgetJsonEditorService.showPendingModal.set(true);\n }\n\n public onEditClick(): void {\n this.editActive.set(true);\n }\n\n public onSaveClick(): void {\n this.showSaveConfirmation$.next(true);\n }\n\n public onValidEvent(valid: boolean) {\n this._jsonValid.set(valid);\n }\n\n public onValueChangeEvent(value: string) {\n if (!this._editorInit) {\n this._editorInit = true;\n return;\n }\n\n this.setPendingChanges(true);\n\n const widgetConfig: CaseWidgetsRes = JSON.parse(value);\n const editedWidgetKeys: string[] = widgetConfig.widgets.map(\n (widget: BasicCaseWidget) => widget.key\n );\n\n this._jsonSchemaInvalid.set(\n widgetConfig.key !== this._currentWidgetTab.key ||\n widgetConfig.caseDefinitionName !== this._currentWidgetTab.caseDefinitionName ||\n new Set(editedWidgetKeys).size !== editedWidgetKeys.length\n );\n\n if (!this._jsonValid() || !this.editActive()) return;\n\n this._widgetConfig.set(JSON.parse(value));\n }\n\n private setPendingChanges(changes: boolean): void {\n this._pendingChanges = changes;\n this.pendingChangesUpdate.emit(changes);\n\n if (changes) return;\n\n this._widgetConfig.set(null);\n this._editorInit = false;\n }\n}\n","<!--\n ~ Copyright 2015-2024 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=\"cds--toolbar-content\">\n @if (!editActive()) {\n <button cdsButton=\"ghost\" (click)=\"downloadConfig()\">\n {{ 'interface.download' | translate }}\n\n <svg cdsIcon=\"download\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" (click)=\"onEditClick()\">\n {{ 'interface.edit' | translate }}\n\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n } @else {\n <button cdsButton=\"secondary\" (click)=\"onCancelClick()\">\n {{ 'interface.cancel' | translate }}\n\n <svg cdsIcon=\"close\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"saveButtonDisabled()\" (click)=\"onSaveClick()\">\n {{ 'interface.save' | translate }}\n\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n }\n</div>\n\n<valtimo-editor\n *ngIf=\"jsonModel()\"\n [model]=\"jsonModel()\"\n [disabled]=\"!editActive()\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"96\"\n (validEvent)=\"onValidEvent($event)\"\n (valueChangeEvent)=\"onValueChangeEvent($event)\"\n></valtimo-editor>\n\n<a id=\"downloadAnchorElement\" style=\"display: none\"></a>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showSaveConfirmation$\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n confirmButtonTextTranslationKey=\"interface.save\"\n contentTranslationKey=\"widgetTabManagement.saveModalContent\"\n titleTranslationKey=\"interface.save\"\n (cancelEvent)=\"keepEditing()\"\n (confirmEvent)=\"save()\"\n></valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n #pendingChangesModal\n [showModalSubject$]=\"showPendingModal$\"\n cancelButtonTextTranslationKey=\"interface.pendingChanges.keepEditing\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.discard\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"widgetTabManagement.cancelModal.content\"\n optionalButtonTextTranslationKey=\"interface.save\"\n optionalButtonType=\"secondary\"\n titleTranslationKey=\"widgetTabManagement.cancelModal.title\"\n showOptionalButton=\"true\"\n spacerAfterCancelButton=\"true\"\n (cancelEvent)=\"keepEditing()\"\n (confirmEvent)=\"discardChanges()\"\n (optionalEvent)=\"save()\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Edit16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n BreadcrumbService,\n ConfirmationModalComponent,\n PageHeaderService,\n PageTitleService,\n PendingChangesComponent,\n RenderInPageHeaderDirectiveModule,\n} from '@valtimo/components';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {ButtonModule, IconModule, IconService, TabsModule} from 'carbon-components-angular';\nimport moment from 'moment/moment';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, switchMap, tap} from 'rxjs';\nimport {WidgetEditorTab} from '../../models';\nimport {\n TabManagementService,\n WidgetJsonEditorService,\n WidgetTabManagementService,\n} from '../../services';\nimport {DossierManagementWidgetTabEditModalComponent} from '../dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal';\nimport {DossierManagementWidgetsEditorComponent} from './editor/dossier-management-widgets-editor.component';\nimport {DossierManagementWidgetsJsonEditorComponent} from './json-editor/dossier-management-widgets-json-editor.component';\n\n@Component({\n selector: 'valtimo-dossier-management-case-widgets',\n templateUrl: './dossier-management-widget-tab.component.html',\n styleUrl: './dossier-management-widget-tab.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n DossierManagementWidgetsEditorComponent,\n DossierManagementWidgetTabEditModalComponent,\n DossierManagementWidgetsJsonEditorComponent,\n RenderInPageHeaderDirectiveModule,\n ButtonModule,\n IconModule,\n TabsModule,\n ],\n})\nexport class DossierManagementWidgetTabComponent\n extends PendingChangesComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n public readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(documentDefinitionName => !!documentDefinitionName),\n tap(documentDefinitionName =>\n this.tabManagementService.setCaseDefinitionId(documentDefinitionName)\n )\n );\n\n public readonly tabWidgetKey$: Observable<string> = this.route.params.pipe(\n map(params => params.key || ''),\n filter(tabWidgetKey => !!tabWidgetKey)\n );\n\n private readonly _refreshWidgetTabSubject$ = new BehaviorSubject<null>(null);\n public readonly showEditWidgetTabModal$ = new BehaviorSubject<boolean>(false);\n public readonly currentWidgetTabItem$: Observable<ApiTabItem> = combineLatest([\n this.tabWidgetKey$,\n this.translateService.stream('key'),\n this._refreshWidgetTabSubject$,\n ]).pipe(\n switchMap(([tabKey]) => this.tabManagementService.getTab(tabKey)),\n tap(tabItem => {\n const title =\n tabItem.name ||\n this.translateService.instant(`widgetTabManagement.metadata.${tabItem.key}`);\n this.pageTitleService.setCustomPageTitle(title);\n this.pageTitleService.setCustomPageSubtitle(\n this.translateService.instant('widgetTabManagement.tab.metadata', {\n createdBy: tabItem?.createdBy || '-',\n createdOn: !!tabItem?.createdOn\n ? moment(tabItem?.createdOn).format('DD MMM YYYY HH:mm')\n : '-',\n key: tabItem.key,\n })\n );\n })\n );\n public readonly currentWidgetTab$ = combineLatest([\n this.documentDefinitionName$,\n this.tabWidgetKey$,\n this._refreshWidgetTabSubject$,\n ]).pipe(\n switchMap(([caseDefinitionName, tabWidgetKey]) =>\n this.widgetTabManagementService.getWidgetTabConfiguration(caseDefinitionName, tabWidgetKey)\n )\n );\n\n public readonly WidgetEditorTab = WidgetEditorTab;\n public readonly activeTab = signal<WidgetEditorTab | null>(WidgetEditorTab.VISUAL);\n public readonly activeContent = signal<WidgetEditorTab | null>(WidgetEditorTab.VISUAL);\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n private _pendingTab: WidgetEditorTab | null = null;\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly iconService: IconService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly tabManagementService: TabManagementService,\n private readonly widgetTabManagementService: WidgetTabManagementService,\n private readonly translateService: TranslateService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly widgetJsonEditorService: WidgetJsonEditorService\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.pageTitleService.enableReset();\n }\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([Edit16]);\n this.initBreadcrumb();\n }\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearThirdBreadcrumb();\n this.pageTitleService.disableReset();\n }\n\n public displayBodyComponent(tab: WidgetEditorTab): void {\n if (this.pendingChanges && tab !== this.activeTab()) {\n this._pendingTab = this.activeTab();\n this.activeTab.set(tab);\n this.onCanDeactivate();\n return;\n }\n this.activeTab.set(tab);\n this.activeContent.set(tab);\n }\n\n public editWidgetTab(): void {\n this.showEditWidgetTabModal();\n }\n\n public onPendingChangesUpdate(changeActive: boolean): void {\n this.pendingChanges = changeActive;\n }\n\n private showEditWidgetTabModal(): void {\n this.showEditWidgetTabModal$.next(true);\n }\n\n public refreshWidgetTab(): void {\n if (this.pendingChanges) this.onCustomConfirm();\n this._refreshWidgetTabSubject$.next(null);\n }\n\n public onCustomModalLoaded(modal: ConfirmationModalComponent): void {\n if (!!this.customModal) return;\n\n this.customModal = modal;\n }\n\n public onJsonCanDeactivate(canDeactivate: boolean): void {\n if (canDeactivate) {\n this.onCustomConfirm();\n return;\n }\n\n this.onCustomCancel();\n }\n\n protected onCancelRedirect(): void {\n this.activeTab.set(this._pendingTab);\n }\n\n protected onConfirmRedirect(): void {\n this.activeContent.set(this.activeTab());\n }\n\n protected onCanDeactivate(): void {\n this.widgetJsonEditorService.showPendingModal.set(true);\n }\n\n private initBreadcrumb(): void {\n this.documentDefinitionName$.subscribe(documentDefinitionName => {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/dossier-management/dossier/${documentDefinitionName}`],\n content: documentDefinitionName,\n href: `/dossier-management/dossier/${documentDefinitionName}`,\n });\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 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<valtimo-dossier-management-widget-tab-edit-modal\n [tabItem]=\"currentWidgetTabItem$ | async\"\n [showModal$]=\"showEditWidgetTabModal$\"\n (saveEvent)=\"refreshWidgetTab()\"\n>\n</valtimo-dossier-management-widget-tab-edit-modal>\n\n<cds-tabs type=\"contained\">\n <cds-tab\n [active]=\"activeTab() === WidgetEditorTab.VISUAL\"\n [heading]=\"'interface.editor.visualEditor' | translate\"\n (selected)=\"displayBodyComponent(WidgetEditorTab.VISUAL)\"\n >\n </cds-tab>\n\n <cds-tab\n [active]=\"activeTab() === WidgetEditorTab.JSON\"\n [heading]=\"'interface.editor.jsonEditor' | translate\"\n (selected)=\"displayBodyComponent(WidgetEditorTab.JSON)\"\n >\n </cds-tab>\n</cds-tabs>\n\n@switch (activeContent()) {\n @case (WidgetEditorTab.VISUAL) {\n <valtimo-dossier-management-widgets-editor\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [tabWidgetKey]=\"tabWidgetKey$ | async\"\n [currentWidgetTab]=\"currentWidgetTab$ | async\"\n (changeSaved)=\"refreshWidgetTab()\"\n ></valtimo-dossier-management-widgets-editor>\n }\n @case (WidgetEditorTab.JSON) {\n <valtimo-dossier-management-widgets-json-editor\n [currentWidgetTab]=\"currentWidgetTab$ | async\"\n (canDeactivate)=\"onJsonCanDeactivate($event)\"\n (changeSaved)=\"refreshWidgetTab()\"\n (customModalLoaded)=\"onCustomModalLoaded($event)\"\n (pendingChangesUpdate)=\"onPendingChangesUpdate($event)\"\n ></valtimo-dossier-management-widgets-json-editor>\n }\n}\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"tertiary\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n (click)=\"editWidgetTab()\"\n >\n {{ 'widgetTabManagement.tab.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2024 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 */\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {pendingChangesGuard} from '@valtimo/components';\nimport {ROLE_ADMIN} from '@valtimo/config';\nimport {AuthGuardService} from '@valtimo/security';\nimport {DossierManagementDetailContainerComponent} from './components/dossier-management-detail-container/dossier-management-detail-container.component';\nimport {DossierManagementListComponent} from './components/dossier-management-list/dossier-management-list.component';\nimport {DossierManagementWidgetTabComponent} from './components/dossier-management-widget-tab/dossier-management-widget-tab.component';\n\nconst routes: Routes = [\n {\n path: 'dossier-management',\n component: DossierManagementListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dossiers', roles: [ROLE_ADMIN]},\n },\n {\n path: 'dossier-management/dossier/:name/widget-tab/:key',\n component: DossierManagementWidgetTabComponent,\n canActivate: [AuthGuardService],\n canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Widget tab',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n customPageSubtitle: true,\n },\n },\n {\n path: 'dossier-management/dossier/:name',\n component: DossierManagementDetailContainerComponent,\n canActivate: [AuthGuardService],\n canDeactivate: [pendingChangesGuard],\n data: {title: 'Dossier details', roles: [ROLE_ADMIN], customPageTitle: true},\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class DossierManagementRoutingModule {}\n","/*\n * Copyright 2015-2024 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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n CarbonMultiInputModule,\n ConfirmationModalModule,\n DropzoneModule,\n EditorModule,\n FormModule,\n InputModule,\n ListModule,\n ModalModule,\n MultiselectDropdownModule,\n ParagraphModule,\n RenderInPageHeaderDirectiveModule,\n SelectModule,\n SpinnerModule,\n TableModule,\n TooltipIconModule,\n ValtimoCdsModalDirectiveModule,\n ValtimoCdsOverflowButtonDirectiveModule,\n ValuePathSelectorComponent,\n WidgetModule,\n} from '@valtimo/components';\nimport {ConfigModule} from '@valtimo/config';\nimport {\n ButtonModule,\n CheckboxModule,\n ComboBoxModule,\n DialogModule,\n DropdownModule,\n FileUploaderModule,\n IconModule,\n InputModule as CarbonInputModule,\n LinkModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n ProgressBarModule,\n TabsModule,\n TagModule,\n ToggleModule,\n TooltipModule,\n} from 'carbon-components-angular';\n\nimport {DossierManagementAssigneeComponent} from './components/dossier-management-assignee/dossier-management-assignee.component';\nimport {DossierManagementConnectModalComponent} from './components/dossier-management-connect-modal/dossier-management-connect-modal.component';\nimport {DossierManagementDetailContainerActionsComponent} from './components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component';\nimport {DossierManagementDetailContainerComponent} from './components/dossier-management-detail-container/dossier-management-detail-container.component';\nimport {DossierManagementDetailComponent} from './components/dossier-management-detail/dossier-management-detail.component';\nimport {DossierManagementDocumentDefinitionComponent} from './components/dossier-management-document-definition/dossier-management-document-definition.component';\nimport {DossierManagementListColumnsComponent} from './components/dossier-management-list-columns/dossier-management-list-columns.component';\nimport {DossierManagementListComponent} from './components/dossier-management-list/dossier-management-list.component';\nimport {DossierManagementProcessesComponent} from './components/dossier-management-processes/dossier-management-processes.component';\nimport {DossierManagementRemoveModalComponent} from './components/dossier-management-remove-modal/dossier-management-remove-modal.component';\nimport {DossierManagementSearchFieldsComponent} from './components/dossier-management-search-fields/dossier-management-search-fields.component';\nimport {DossierManagementAddTabModalComponent} from './components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component';\nimport {DossierManagementEditTabModalComponent} from './components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component';\nimport {DossierManagementTabsComponent} from './components/dossier-management-tabs/dossier-management-tabs.component';\nimport {TabFormComponent} from './components/dossier-management-tabs/tab-form/tab-form.component';\nimport {DossierManagementUploadComponent} from './components/dossier-management-upload/dossier-management-upload.component';\nimport {DossierManagementUploadStepComponent} from './components/dossier-management-upload/step/dossier-management-upload-step.component';\nimport {DossierManagementRoutingModule} from './dossier-management-routing.module';\nimport {TabManagementService} from './services';\nimport {DossierManagementStatusesComponent} from './components/dossier-management-statuses/dossier-management-statuses.component';\nimport {DossierManagementStatusModalComponent} from './components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component';\nimport {DossierManagementCreateComponent} from './components/dossier-management-create/dossier-management-create.component';\nimport {DossierManagementWidgetsEditorComponent} from './components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component';\n\n@NgModule({\n declarations: [\n DossierManagementListComponent,\n DossierManagementDetailComponent,\n DossierManagementConnectModalComponent,\n DossierManagementRemoveModalComponent,\n DossierManagementUploadComponent,\n DossierManagementSearchFieldsComponent,\n DossierManagementDetailContainerComponent,\n DossierManagementAssigneeComponent,\n DossierManagementListColumnsComponent,\n DossierManagementTabsComponent,\n DossierManagementAddTabModalComponent,\n TabFormComponent,\n DossierManagementEditTabModalComponent,\n DossierManagementDetailContainerActionsComponent,\n DossierManagementDocumentDefinitionComponent,\n DossierManagementProcessesComponent,\n DossierManagementUploadStepComponent,\n DossierManagementStatusesComponent,\n DossierManagementStatusModalComponent,\n DossierManagementCreateComponent,\n ],\n imports: [\n CommonModule,\n WidgetModule,\n DropzoneModule,\n ListModule,\n DossierManagementRoutingModule,\n FormsModule,\n TranslateModule,\n ModalModule,\n ConfigModule,\n NgbTooltipModule,\n MultiselectDropdownModule,\n ParagraphModule,\n SelectModule,\n SpinnerModule,\n InputModule,\n SelectModule,\n FormModule,\n NotificationModule,\n ButtonModule,\n IconModule,\n CarbonModalModule,\n CarbonInputModule,\n ReactiveFormsModule,\n DropdownModule,\n CheckboxModule,\n TooltipIconModule,\n CarbonMultiInputModule,\n LoadingModule,\n LinkModule,\n ConfirmationModalModule,\n TableModule,\n ValtimoCdsModalDirectiveModule,\n CarbonListModule,\n ComboBoxModule,\n RenderInPageHeaderDirectiveModule,\n DialogModule,\n ValtimoCdsOverflowButtonDirectiveModule,\n NotificationModule,\n EditorModule,\n CarbonListModule,\n TabsModule,\n TagModule,\n FileUploaderModule,\n ProgressBarModule,\n ConfirmationModalModule,\n ToggleModule,\n TooltipModule,\n DossierManagementWidgetsEditorComponent,\n ValuePathSelectorComponent,\n ],\n providers: [TabManagementService],\n})\nexport class DossierManagementModule {}\n","/*\n * Copyright 2015-2024 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 dossier-management\n */\n\nexport * from './lib/dossier-management.module';\nexport * from './lib/components/dossier-management-list/dossier-management-list.component';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i5","tap","i2","i1","i5.WidgetFieldsService","i5.WidgetWizardService","i4.WidgetWizardService","i6","i7","i4.WidgetFieldsService","i3.WidgetWizardService","i8","i2.DossierDetailService","take","i2.DossierExportService","i7.DossierManagementRemoveModalComponent","switchMap","map","i5.DossierManagementAssigneeComponent","i9","i2.TabService","i3.TabService","i7.TabFormComponent","i6.TabFormComponent","i2.TabManagementService","i8.DossierManagementAddTabModalComponent","i9.DossierManagementEditTabModalComponent","i3.DossierDetailService","i8.DossierManagementConnectModalComponent","i6.DossierManagementStatusModalComponent","i1.DossierDetailService","i1.TabService","i7.DossierManagementDetailComponent","i8.DossierManagementSearchFieldsComponent","i9.DossierManagementListColumnsComponent","i10.DossierManagementTabsComponent","i11.DossierManagementDetailContainerActionsComponent","i12.DossierManagementDocumentDefinitionComponent","i13.DossierManagementProcessesComponent","i14.DossierManagementStatusesComponent","i15","i2.DossierManagementService","i8.DossierManagementUploadStepComponent","i6.DossierManagementUploadComponent","i7.DossierManagementCreateComponent","i1.WidgetWizardService","i2.WidgetWizardService","i5.WidgetWizardContentStepComponent","i6.WidgetWizardStyleStepComponent","i7.WidgetWizardTypeStepComponent","i8.WidgetWizardWidthStepComponent","i3.WidgetTabManagementService","i3.WidgetJsonEditorService","moment","i4.TabManagementService","i4.WidgetTabManagementService","i4.WidgetJsonEditorService","ModalModule","SelectModule","InputModule","CarbonModalModule","CarbonInputModule"],"mappings":"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"}
|