{"version":3,"file":"valtimo-dashboard-management.mjs","sources":["../../../../projects/valtimo/dashboard-management/src/lib/constants/dashboard-management.test-ids.ts","../../../../projects/valtimo/dashboard-management/src/lib/services/dashboard-management.service.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/widget-configuration-container/widget-configuration-container.component.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/widget-configuration-container/widget-configuration-container.component.html","../../../../projects/valtimo/dashboard-management/src/lib/components/widget-modal/widget-modal.component.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/widget-modal/widget-modal.component.html","../../../../projects/valtimo/dashboard-management/src/lib/components/edit-dashboard-modal/edit-dashboard-modal.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/edit-dashboard-modal/edit-dashboard-modal.html","../../../../projects/valtimo/dashboard-management/src/lib/components/dashboard-details/dashboard-details.component.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/dashboard-details/dashboard-details.component.html","../../../../projects/valtimo/dashboard-management/src/lib/components/dashboard-management/dashboard-management.component.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/dashboard-management/dashboard-management.component.html","../../../../projects/valtimo/dashboard-management/src/lib/dashboard-management-routing.module.ts","../../../../projects/valtimo/dashboard-management/src/lib/dashboard-management.module.ts","../../../../projects/valtimo/dashboard-management/src/public-api.ts","../../../../projects/valtimo/dashboard-management/src/valtimo-dashboard-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2026 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 const DASHBOARD_MANAGEMENT_TEST_IDS = {\n  // Dashboard list page\n  addButton: 'dashboardManagementAddButton',\n  createTitleInput: 'dashboardManagementCreateTitleInput',\n  createDescriptionInput: 'dashboardManagementCreateDescriptionInput',\n  createButton: 'dashboardManagementCreateButton',\n  cancelDashboardButton: 'dashboardManagementCancelDashboardButton',\n  // Dashboard details page — edit dashboard\n  editButton: 'dashboardManagementEditButton',\n  editTitleInput: 'dashboardManagementEditTitleInput',\n  editDescriptionInput: 'dashboardManagementEditDescriptionInput',\n  completeButton: 'dashboardManagementCompleteButton',\n  switchViewButton: 'dashboardDetailsSwitchView',\n  // Widget list page (dashboard details)\n  addWidgetButton: 'dashboardManagementAddWidgetButton',\n  // Widget modal\n  widgetTitleInput: 'dashboardManagementWidgetTitleInput',\n  widgetDataSourceDropdown: 'dashboardManagementWidgetDataSourceDropdown',\n  widgetDisplayTypeDropdown: 'dashboardManagementWidgetDisplayTypeDropdown',\n  widgetUrlInput: 'dashboardManagementWidgetUrlInput',\n  widgetSaveButton: 'dashboardManagementWidgetSaveButton',\n  widgetCancelButton: 'dashboardManagementWidgetCancelButton',\n  widgetDeleteButton: 'dashboardManagementWidgetDeleteButton',\n} as const;\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {BehaviorSubject, catchError, Observable, of, switchMap, take, tap} from 'rxjs';\nimport {DashboardItem, DashboardWidget, WidgetDataSource} from '../models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DashboardManagementService {\n  private valtimoEndpointUri: string;\n\n  public dashboards$ = new BehaviorSubject<{items: DashboardItem[] | null; loading: boolean}>({\n    items: null,\n    loading: true,\n  });\n\n  public loadData(): void {\n    this.http\n      .get<DashboardItem[]>(this.valtimoEndpointUri)\n      .pipe(\n        take(1),\n        tap(() => {\n          this.dashboards$.next({items: null, loading: true});\n        })\n      )\n      .subscribe({\n        next: (items: DashboardItem[]) => {\n          this.dashboards$.next({items, loading: false});\n        },\n        error: error => {\n          console.error(error);\n        },\n      });\n  }\n\n  constructor(\n    private readonly http: HttpClient,\n    private readonly configService: ConfigService\n  ) {\n    this.valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/v1/dashboard`;\n  }\n\n  public createDashboard(dashboard: DashboardItem): Observable<DashboardItem> {\n    return this.http.post<DashboardItem>(this.valtimoEndpointUri, dashboard);\n  }\n\n  public updateDashboards(dashboards: Array<DashboardItem>): Observable<Array<DashboardItem>> {\n    return this.http.put<Array<DashboardItem>>(this.valtimoEndpointUri, dashboards);\n  }\n\n  public updateDashboard(dashboard: DashboardItem): Observable<DashboardItem> {\n    return this.http.put<DashboardItem>(`${this.valtimoEndpointUri}/${dashboard.key}`, dashboard);\n  }\n\n  public deleteDashboard(dashboardKey: string): Observable<null> {\n    return this.http.delete<null>(`${this.valtimoEndpointUri}/${dashboardKey}`);\n  }\n\n  public dispatchAction(actionResult: Observable<DashboardItem | null>): void {\n    actionResult\n      .pipe(\n        switchMap(() => this.getDashboards()),\n        tap(() => {\n          this.dashboards$.next({items: null, loading: true});\n        }),\n        take(1),\n        catchError(error => of(error))\n      )\n      .subscribe({\n        next: (items: DashboardItem[]) => this.dashboards$.next({items, loading: false}),\n        error: error => {\n          console.error(error);\n        },\n      });\n  }\n\n  public getDashboard(dashboardKey: string): Observable<DashboardItem> {\n    return this.http.get<DashboardItem>(`${this.valtimoEndpointUri}/${dashboardKey}`);\n  }\n\n  public getDashboardWidgetConfiguration(dashboardKey: string): Observable<Array<DashboardWidget>> {\n    return this.http.get<Array<DashboardWidget>>(\n      `${this.valtimoEndpointUri}/${dashboardKey}/widget-configuration`\n    );\n  }\n\n  public createDashboardWidgetConfiguration(\n    dashboardKey: string,\n    widgetConfiguration: DashboardWidget\n  ): Observable<DashboardWidget> {\n    return this.http.post<DashboardWidget>(\n      `${this.valtimoEndpointUri}/${dashboardKey}/widget-configuration`,\n      widgetConfiguration\n    );\n  }\n\n  public updateDashboardWidgetConfigurations(\n    dashboardKey: string,\n    widgetConfigurations: Array<DashboardWidget>\n  ): Observable<Array<DashboardWidget>> {\n    return this.http.put<Array<DashboardWidget>>(\n      `${this.valtimoEndpointUri}/${dashboardKey}/widget-configuration`,\n      widgetConfigurations\n    );\n  }\n\n  public updateDashboardWidgetConfiguration(\n    dashboardKey: string,\n    widgetConfiguration: DashboardWidget\n  ): Observable<DashboardWidget> {\n    return this.http.put<DashboardWidget>(\n      `${this.valtimoEndpointUri}/${dashboardKey}/widget-configuration/${widgetConfiguration.key}`,\n      widgetConfiguration\n    );\n  }\n\n  public deleteDashboardWidgetConfiguration(\n    dashboardKey: string,\n    widgetKey: string\n  ): Observable<DashboardWidget> {\n    return this.http.delete<DashboardWidget>(\n      `${this.valtimoEndpointUri}/${dashboardKey}/widget-configuration/${widgetKey}`\n    );\n  }\n\n  public getDataSources(): Observable<Array<WidgetDataSource>> {\n    return this.http.get<Array<WidgetDataSource>>(`${this.valtimoEndpointUri}/widget-data-sources`);\n  }\n\n  private getDashboards(): Observable<DashboardItem[]> {\n    return this.http.get<DashboardItem[]>(this.valtimoEndpointUri);\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  Component,\n  ComponentRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  Type,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {tap} from 'rxjs/operators';\nimport {\n  ConfigurationComponent,\n  ConfigurationOutput,\n  DataSourceConfigurationComponent,\n  DisplayTypeConfigurationComponent,\n  WidgetService,\n} from '@valtimo/dashboard';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-widget-configuration-container',\n  templateUrl: './widget-configuration-container.component.html',\n})\nexport class WidgetConfigurationContainerComponent\n  implements OnInit, OnDestroy, ConfigurationComponent\n{\n  @ViewChild('widgetConfigurationComponent', {static: true, read: ViewContainerRef})\n  private readonly _dynamicContainer: ViewContainerRef;\n\n  @Input() public set dataSourceKey(value: string) {\n    this._dataSourceKey$.next(value);\n  }\n  @Input() public set displayTypeKey(value: string) {\n    this._displayTypeKey$.next(value);\n  }\n  @Input() public set disabled(disabledValue: boolean) {\n    this._disabled$.next(disabledValue);\n  }\n  @Input() public set prefillConfiguration(prefillConfigurationValue) {\n    this._prefillConfiguration$.next(prefillConfigurationValue);\n  }\n  @Output() public configurationEvent = new EventEmitter<ConfigurationOutput>();\n\n  private _configurationSubscription!: Subscription;\n  private readonly _subscriptions = new Subscription();\n\n  private readonly _componentRef$ = new BehaviorSubject<\n    ComponentRef<DataSourceConfigurationComponent | DisplayTypeConfigurationComponent> | undefined\n  >(undefined);\n  private readonly _dataSourceKey$ = new BehaviorSubject<string>('');\n  private readonly _displayTypeKey$ = new BehaviorSubject<string>('');\n  private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n  private readonly _prefillConfiguration$ = new BehaviorSubject<object | null>(null);\n\n  constructor(private readonly widgetService: WidgetService) {}\n\n  public ngOnInit(): void {\n    this.openConfigurationComponentSubscription();\n    this.openComponentInstanceSubscription();\n    this.openDisabledSubscription();\n    this.openPrefillConfigurationSubscription();\n  }\n\n  public ngOnDestroy(): void {\n    this._subscriptions.unsubscribe();\n  }\n\n  private openConfigurationComponentSubscription(): void {\n    this._subscriptions.add(\n      combineLatest([\n        this._displayTypeKey$,\n        this._dataSourceKey$,\n        this.widgetService.supportedDisplayTypes$,\n        this.widgetService.supportedDataSources$,\n      ])\n        .pipe(\n          tap(([displayTypeKey, dataSourceKey, supportedDisplayTypes, supportedDataSources]) => {\n            let configurationComponent!: Type<\n              DisplayTypeConfigurationComponent | DataSourceConfigurationComponent\n            >;\n\n            this._dynamicContainer.clear();\n\n            const displayTypeSpecification =\n              displayTypeKey &&\n              supportedDisplayTypes.find(type => type.displayTypeKey === displayTypeKey);\n            const dataSourceSpecification =\n              dataSourceKey &&\n              supportedDataSources.find(source => source.dataSourceKey === dataSourceKey);\n\n            if (displayTypeSpecification && displayTypeSpecification.configurationComponent) {\n              configurationComponent = displayTypeSpecification.configurationComponent;\n            } else if (dataSourceSpecification && dataSourceSpecification.configurationComponent) {\n              configurationComponent = dataSourceSpecification.configurationComponent;\n            }\n\n            if (configurationComponent) {\n              const componentRef = this._dynamicContainer.createComponent(configurationComponent);\n              this.configurationEvent.emit({valid: false, data: {}});\n              this._componentRef$.next(componentRef);\n            } else {\n              this.configurationEvent.emit({valid: true, data: {}});\n            }\n          })\n        )\n        .subscribe()\n    );\n  }\n\n  private openComponentInstanceSubscription(): void {\n    this._subscriptions.add(\n      combineLatest([this._componentRef$, this._dataSourceKey$, this._displayTypeKey$]).subscribe(\n        ([ref, dataSourceKey, displayTypeKey]) => {\n          const instance = ref?.instance;\n\n          this._configurationSubscription?.unsubscribe();\n\n          if (instance) {\n            if (displayTypeKey) {\n              (instance as DisplayTypeConfigurationComponent).displayTypeKey = displayTypeKey;\n            } else if (dataSourceKey) {\n              (instance as DataSourceConfigurationComponent).dataSourceKey = dataSourceKey;\n            }\n\n            this._configurationSubscription = instance.configurationEvent.subscribe(\n              configuration => {\n                this.configurationEvent.emit(configuration);\n              }\n            );\n          }\n        }\n      )\n    );\n  }\n\n  private openDisabledSubscription(): void {\n    this._subscriptions.add(\n      combineLatest([this._componentRef$, this._disabled$]).subscribe(([ref, disabled]) => {\n        const instance = ref?.instance;\n\n        if (instance) {\n          instance.disabled = disabled;\n        }\n      })\n    );\n  }\n\n  private openPrefillConfigurationSubscription(): void {\n    this._subscriptions.add(\n      combineLatest([this._componentRef$, this._prefillConfiguration$]).subscribe(\n        ([ref, prefillConfiguration]) => {\n          const instance = ref?.instance;\n\n          if (instance && prefillConfiguration) {\n            instance.prefillConfiguration = prefillConfiguration;\n          }\n        }\n      )\n    );\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<ng-template #widgetConfigurationComponent></ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {DOCUMENT} from '@angular/common';\nimport {\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {\n  ConfigurationOutput,\n  DashboardWidgetConfiguration,\n  DisplayTypeSpecification,\n  WidgetService,\n  WidgetTranslationService,\n} from '@valtimo/dashboard';\nimport {ListItem} from 'carbon-components-angular';\nimport {\n  BehaviorSubject,\n  combineLatest,\n  filter,\n  map,\n  Observable,\n  Subscription,\n  switchMap,\n  take,\n  tap,\n} from 'rxjs';\nimport {DASHBOARD_MANAGEMENT_TEST_IDS} from '../../constants/dashboard-management.test-ids';\nimport {DashboardItem, WidgetDataSource, WidgetModalType} from '../../models';\nimport {DashboardManagementService} from '../../services/dashboard-management.service';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-widget-modal',\n  templateUrl: './widget-modal.component.html',\n  styleUrls: ['./widget-modal.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class WidgetModalComponent implements OnInit, OnDestroy {\n  public readonly testIds = DASHBOARD_MANAGEMENT_TEST_IDS;\n\n  @Input() public showModal$: Observable<boolean>;\n  @Input() public type: WidgetModalType;\n  @Input() public dashboard: DashboardItem;\n  @Input() public widgetKey!: string;\n  @Input() public set editWidgetConfiguration(configuration: DashboardWidgetConfiguration) {\n    if (configuration) {\n      this.title.setValue(configuration.title);\n      this.url.setValue(configuration.url);\n      this.dataSourceSelected({item: {key: configuration.dataSourceKey}} as any);\n      this.displayTypeSelected({item: {key: configuration.displayType}} as any);\n      this.dataSourcePrefillConfig$.next(configuration.dataSourceProperties);\n      this.displayTypePrefillConfig$.next(configuration.displayTypeProperties);\n    } else {\n      this.dataSourcePrefillConfig$.next(null);\n      this.displayTypePrefillConfig$.next(null);\n    }\n  }\n  @Output() public saveEvent = new EventEmitter<ConfigurationOutput>();\n\n  public readonly form = this.fb.group({\n    title: this.fb.control('', [Validators.required]),\n    dataSource: this.fb.control(null, [Validators.required]),\n    displayType: this.fb.control(null, [Validators.required]),\n    url: this.fb.control(''),\n  });\n\n  public readonly open$ = new BehaviorSubject<boolean>(false);\n  public readonly selectedDataSourceKey$ = new BehaviorSubject<string>('');\n  public readonly selectedDisplayTypeKey$ = new BehaviorSubject<string>('');\n\n  public readonly dataSourceItems$: Observable<Array<ListItem>> = combineLatest([\n    this.dashboardManagementService.getDataSources(),\n    this.selectedDataSourceKey$,\n    this.widgetService.supportedDataSources$,\n    this.translateService.stream('key'),\n  ]).pipe(\n    filter(([dataSources]) => !!dataSources),\n    tap(([dataSources, selectedDataSourceKey]) => {\n      if (selectedDataSourceKey) {\n        this.setCompatibleDisplayTypes(dataSources, selectedDataSourceKey);\n      } else {\n        this.resetCompatibleDisplayTypes();\n      }\n    }),\n    map(([dataSources, selectedDataSourceKey, supportedDataSources]) =>\n      dataSources\n        .filter(dataSource =>\n          supportedDataSources.find(\n            supportedDataSource => supportedDataSource.dataSourceKey === dataSource.key\n          )\n        )\n        .map(dataSource => ({\n          content: this.widgetTranslationService.instant('title', dataSource.key),\n          selected: selectedDataSourceKey === dataSource.key,\n          key: dataSource.key,\n        }))\n    )\n  );\n\n  public readonly dataSourcePrefillConfig$ = new BehaviorSubject<object | null>(null);\n  public readonly displayTypePrefillConfig$ = new BehaviorSubject<object | null>(null);\n\n  private readonly _compatibleDisplayTypes$ = new BehaviorSubject<Array<DisplayTypeSpecification>>(\n    []\n  );\n\n  public readonly displayTypeItems$: Observable<Array<ListItem>> = combineLatest([\n    this._compatibleDisplayTypes$,\n    this.selectedDisplayTypeKey$,\n    this.translateService.stream('key'),\n  ]).pipe(\n    map(([compatibleDisplayTypes, selectedDisplayTypeKey]) =>\n      compatibleDisplayTypes.map(displayType => ({\n        content: this.widgetTranslationService.instant('title', displayType.displayTypeKey),\n        selected: displayType.displayTypeKey === selectedDisplayTypeKey,\n        key: displayType.displayTypeKey,\n      }))\n    )\n  );\n\n  public readonly displayTypeDropdownDisabled$: Observable<boolean> = combineLatest([\n    this._compatibleDisplayTypes$,\n    this.selectedDataSourceKey$,\n  ]).pipe(\n    map(\n      ([compatibleDisplayTypes, selectedDataSourceKey]) =>\n        compatibleDisplayTypes?.length === 0 || !selectedDataSourceKey\n    ),\n    tap(displayTypeDropdownDisabled => {\n      if (displayTypeDropdownDisabled) {\n        this.displayType?.disable();\n      } else {\n        this.displayType?.enable();\n      }\n    })\n  );\n\n  public readonly dataSourceConfiguration$ = new BehaviorSubject<ConfigurationOutput>({\n    valid: false,\n    data: {},\n  });\n  public readonly displayTypeConfiguration$ = new BehaviorSubject<ConfigurationOutput>({\n    valid: false,\n    data: {},\n  });\n\n  public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n  private _openSubscription!: Subscription;\n\n  public get title() {\n    return this.form.get('title');\n  }\n  public get key() {\n    return this.form.get('key');\n  }\n  public get dataSource() {\n    return this.form.get('dataSource');\n  }\n  public get displayType() {\n    return this.form.get('displayType');\n  }\n  public get url() {\n    return this.form.get('url');\n  }\n\n  constructor(\n    @Inject(DOCUMENT) private readonly document: Document,\n    private readonly fb: FormBuilder,\n    private readonly translateService: TranslateService,\n    private readonly notificationService: GlobalNotificationService,\n    private readonly dashboardManagementService: DashboardManagementService,\n    private readonly widgetService: WidgetService,\n    private readonly widgetTranslationService: WidgetTranslationService\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.enable();\n      this.form.reset();\n      this.selectedDataSourceKey$.next('');\n      this.selectedDisplayTypeKey$.next('');\n    }, CARBON_CONSTANTS.modalAnimationMs);\n  }\n\n  public save(): void {\n    this.disable();\n\n    combineLatest([\n      this.selectedDataSourceKey$,\n      this.selectedDisplayTypeKey$,\n      this.displayTypeConfiguration$,\n      this.dataSourceConfiguration$,\n    ])\n      .pipe(\n        take(1),\n        map(\n          ([\n            selectedDataSourceKey,\n            selectedDisplayTypeKey,\n            displayTypeConfiguration,\n            dataSourceConfiguration,\n          ]) => ({\n            title: this.title.value,\n            displayType: selectedDisplayTypeKey,\n            dataSourceKey: selectedDataSourceKey,\n            dataSourceProperties: {...dataSourceConfiguration.data},\n            displayTypeProperties: {...displayTypeConfiguration.data},\n            url: this.url.value,\n          })\n        ),\n        switchMap(widgetUpdateObject =>\n          this.type === 'create'\n            ? this.dashboardManagementService.createDashboardWidgetConfiguration(\n                this.dashboard.key,\n                widgetUpdateObject\n              )\n            : this.dashboardManagementService.updateDashboardWidgetConfiguration(\n                this.dashboard.key,\n                {...widgetUpdateObject, key: this.widgetKey}\n              )\n        )\n      )\n      .subscribe({\n        complete: () => {\n          this.saveEvent.emit();\n          this.closeModal();\n        },\n        error: () => {\n          this.enable();\n        },\n      });\n  }\n\n  public delete(): void {\n    this.disable();\n\n    this.dashboardManagementService\n      .deleteDashboardWidgetConfiguration(this.dashboard.key, this.widgetKey)\n      .subscribe({\n        complete: () => {\n          this.saveEvent.emit();\n          this.closeModal();\n        },\n        error: () => {\n          this.enable();\n        },\n      });\n  }\n\n  public dataSourceSelected(dataSource: ListItem): void {\n    if (!dataSource) {\n      return;\n    }\n\n    this.selectedDataSourceKey$.next(dataSource?.item?.key);\n    this.dataSource.setValue(dataSource?.item?.key);\n  }\n\n  public displayTypeSelected(displayType: ListItem): void {\n    if (!displayType) {\n      return;\n    }\n\n    this.selectedDisplayTypeKey$.next(displayType?.item?.key);\n    this.displayType.setValue(displayType?.item?.key);\n  }\n\n  public dataSourceConfiguration(configuration: ConfigurationOutput): void {\n    this.dataSourceConfiguration$.next(configuration);\n  }\n\n  public displayTypeConfiguration(configuration: ConfigurationOutput): void {\n    this.displayTypeConfiguration$.next(configuration);\n  }\n\n  private openOpenSubscription(): void {\n    this._openSubscription = this.showModal$.subscribe(show => {\n      this.open$.next(show);\n    });\n  }\n\n  private resetCompatibleDisplayTypes(): void {\n    this._compatibleDisplayTypes$.next([]);\n  }\n\n  private setCompatibleDisplayTypes(\n    dataSources: Array<WidgetDataSource>,\n    selectedDataSourceKey: string\n  ): void {\n    this.widgetService.supportedDisplayTypes$.pipe(take(1)).subscribe(supportedDisplayTypes => {\n      const selectedDataSource = dataSources.find(source => source.key === selectedDataSourceKey);\n      const availableDataFeatures = selectedDataSource?.dataFeatures;\n      const compatibleDisplayTypes = supportedDisplayTypes.filter(displayType => {\n        const supportedDataFeatures = displayType.requiredDataFeatures.filter(\n          requiredDataFeature =>\n            !!availableDataFeatures?.some(\n              availableDataFeature =>\n                this.trimAndToUpperCase(availableDataFeature) ===\n                this.trimAndToUpperCase(requiredDataFeature)\n            )\n        );\n        return supportedDataFeatures.length === displayType.requiredDataFeatures.length;\n      });\n\n      this._compatibleDisplayTypes$.next(compatibleDisplayTypes);\n    });\n  }\n\n  private disable(): void {\n    this.disabled$.next(true);\n    this.form.disable();\n  }\n\n  private enable(): void {\n    this.disabled$.next(false);\n    this.form.enable();\n  }\n\n  private trimAndToUpperCase(text: string): string {\n    return `${text}`.trim().toUpperCase();\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<ng-container\n  *ngIf=\"{\n    disabled: disabled$ | async,\n    isCreate: type === 'create',\n    isDelete: type === 'delete',\n    isEdit: type === 'edit',\n    open: open$ | async,\n  } as vars\"\n>\n  <ng-container\n    *ngIf=\"{\n      create: vars.isCreate && ('dashboardManagement.widgets.add' | translate),\n      delete: vars.isDelete && ('dashboardManagement.widgets.delete' | translate),\n      edit: vars.isEdit && ('dashboardManagement.widgets.edit' | translate),\n    } as titles\"\n  >\n    <cds-modal\n      *ngIf=\"{\n        title: titles.edit || titles.create || titles.delete,\n      } as translations\"\n      valtimoCdsModal\n      [open]=\"vars.open\"\n      showFooter=\"true\"\n      size=\"md\"\n      title=\"{{ translations.title }}\"\n      class=\"widget-modal\"\n      (close)=\"closeModal()\"\n    >\n      <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n        <h3 cdsModalHeaderHeading>\n          {{ translations.title }}\n        </h3>\n      </cds-modal-header>\n\n      <section cdsModalContent [cdsLayer]=\"1\">\n        <ng-container *ngIf=\"vars.isDelete\">\n          {{ 'dashboardManagement.widgets.deleteDescription' | translate }}</ng-container\n        >\n\n        <ng-container *ngIf=\"vars.isEdit || vars.isCreate\">\n          <ng-container *ngTemplateOutlet=\"widgetForm; context: {vars: vars}\"></ng-container>\n        </ng-container>\n      </section>\n\n      <cds-modal-footer>\n        <ng-container *ngIf=\"vars.isEdit || vars.isCreate\">\n          <ng-container *ngTemplateOutlet=\"editButtons; context: {vars: vars}\"></ng-container>\n        </ng-container>\n\n        <ng-container *ngIf=\"vars.isDelete\">\n          <ng-container *ngTemplateOutlet=\"deleteButtons; context: {vars: vars}\"></ng-container>\n        </ng-container>\n      </cds-modal-footer>\n    </cds-modal>\n  </ng-container>\n</ng-container>\n\n<ng-template #widgetForm let-vars=\"vars\">\n  <form\n    *ngIf=\"\n      form && {\n        dataSourceItems: dataSourceItems$ | async,\n        displayTypeDropdownDisabled: displayTypeDropdownDisabled$ | async,\n        displayTypeItems: displayTypeItems$ | async,\n        selectedDataSourceKey: selectedDataSourceKey$ | async,\n        selectedDisplayTypeKey: selectedDisplayTypeKey$ | async,\n      } as obs\n    \"\n    [formGroup]=\"form\"\n    class=\"dashboard-modal__form\"\n  >\n    <div class=\"form__element\">\n      <cds-label\n        [helperText]=\"'dashboardManagement.widgets.form.titleHelperText' | translate\"\n        [invalidText]=\"'dashboardManagement.widgets.form.titleHelperText' | translate\"\n        [invalid]=\"title.dirty && title.invalid\"\n      >\n        {{ 'dashboardManagement.widgets.form.title' | translate }}\n\n        <input\n          cdsText\n          formControlName=\"title\"\n          [attr.data-test-id]=\"testIds.widgetTitleInput\"\n          [invalid]=\"title.dirty && title.invalid\"\n          [attr.modal-primary-focus]=\"true\"\n        />\n      </cds-label>\n    </div>\n\n    <div class=\"form__element\" *ngIf=\"obs.dataSourceItems\">\n      <cds-dropdown\n        [appendInline]=\"true\"\n        [attr.data-test-id]=\"testIds.widgetDataSourceDropdown\"\n        formControlName=\"dataSource\"\n        [helperText]=\"'dashboardManagement.widgets.form.dataSourceHelperText' | translate\"\n        [invalidText]=\"'dashboardManagement.widgets.form.dateSourceHelperText' | translate\"\n        [invalid]=\"dataSource.dirty && dataSource.invalid\"\n        [label]=\"'dashboardManagement.widgets.form.dataSource' | translate\"\n        (selected)=\"dataSourceSelected($event)\"\n      >\n        <cds-dropdown-list [items]=\"obs.dataSourceItems\" type=\"multi\"></cds-dropdown-list>\n      </cds-dropdown>\n    </div>\n\n    <valtimo-widget-configuration-container\n      *ngIf=\"obs.selectedDataSourceKey\"\n      [dataSourceKey]=\"obs.selectedDataSourceKey\"\n      [disabled]=\"vars.disabled\"\n      [prefillConfiguration]=\"dataSourcePrefillConfig$ | async\"\n      (configurationEvent)=\"dataSourceConfiguration($event)\"\n    ></valtimo-widget-configuration-container>\n\n    <div class=\"form__element\" *ngIf=\"obs.displayTypeItems\">\n      <cds-dropdown\n        [appendInline]=\"true\"\n        [attr.data-test-id]=\"testIds.widgetDisplayTypeDropdown\"\n        formControlName=\"displayType\"\n        [helperText]=\"'dashboardManagement.widgets.form.displayTypeHelperText' | translate\"\n        [invalid]=\"displayType.dirty && displayType.invalid\"\n        [invalidText]=\"'dashboardManagement.widgets.form.displayTypeHelperText' | translate\"\n        [label]=\"'dashboardManagement.widgets.form.displayType' | translate\"\n        (selected)=\"displayTypeSelected($event)\"\n      >\n        <cds-dropdown-list [items]=\"obs.displayTypeItems\" type=\"multi\"></cds-dropdown-list>\n      </cds-dropdown>\n    </div>\n\n    <valtimo-widget-configuration-container\n      *ngIf=\"obs.selectedDisplayTypeKey\"\n      [disabled]=\"vars.disabled\"\n      [displayTypeKey]=\"obs.selectedDisplayTypeKey\"\n      [prefillConfiguration]=\"displayTypePrefillConfig$ | async\"\n      (configurationEvent)=\"displayTypeConfiguration($event)\"\n    ></valtimo-widget-configuration-container>\n\n    <div class=\"form__element\">\n      <cds-label\n        [helperText]=\"'dashboardManagement.widgets.form.urlHelperText' | translate\"\n        [invalidText]=\"'dashboardManagement.widgets.form.urlHelperText' | translate\"\n        [invalid]=\"url.dirty && url.invalid\"\n      >\n        {{ 'dashboardManagement.widgets.form.url' | translate }}\n\n        <input cdsText formControlName=\"url\" [attr.data-test-id]=\"testIds.widgetUrlInput\" [invalid]=\"url.dirty && url.invalid\" />\n      </cds-label>\n    </div>\n  </form>\n</ng-template>\n\n<ng-template #editButtons let-vars=\"vars\">\n  <ng-container\n    *ngIf=\"{\n      dataSourceConfiguration: dataSourceConfiguration$ | async,\n      displayTypeConfiguration: displayTypeConfiguration$ | async,\n    } as obs\"\n  >\n    <button cdsButton=\"ghost\" [attr.data-test-id]=\"testIds.widgetCancelButton\" [disabled]=\"vars.disabled\" (click)=\"closeModal()\">\n      {{ 'dashboardManagement.widgets.cancel' | translate }}\n    </button>\n\n    <button\n      cdsButton=\"primary\"\n      [attr.data-test-id]=\"testIds.widgetSaveButton\"\n      [disabled]=\"\n        form.invalid ||\n        !obs.dataSourceConfiguration.valid ||\n        !obs.displayTypeConfiguration.valid ||\n        vars.disabled\n      \"\n      (click)=\"save()\"\n    >\n      {{ 'dashboardManagement.widgets.save' | translate }}\n    </button>\n  </ng-container>\n</ng-template>\n\n<ng-template #deleteButtons let-vars=\"vars\">\n  <button cdsButton=\"secondary\" [attr.data-test-id]=\"testIds.widgetCancelButton\" [disabled]=\"vars.disabled\" (click)=\"closeModal()\">\n    {{ 'dashboardManagement.widgets.cancel' | translate }}\n  </button>\n\n  <button cdsButton=\"danger\" [attr.data-test-id]=\"testIds.widgetDeleteButton\" [disabled]=\"vars.disabled\" (click)=\"delete()\">\n    {{ 'dashboardManagement.widgets.delete' | translate }}\n  </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {DASHBOARD_MANAGEMENT_TEST_IDS} from '../../constants/dashboard-management.test-ids';\nimport {DashboardItem} from '../../models';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {\n  CARBON_CONSTANTS,\n  SelectItem,\n  WIDGET_LAYOUT_TRANSLATION_KEYS,\n  WIDGET_LAYOUT_VALUES,\n  WidgetLayout,\n} from '@valtimo/components';\nimport {DashboardManagementService} from '../../services/dashboard-management.service';\nimport {ConfigurationOutput} from '@valtimo/dashboard';\n\n@Component({\n  selector: 'valtimo-edit-dashboard-modal',\n  templateUrl: './edit-dashboard-modal.html',\n  styleUrls: ['./edit-dashboard-modal.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class EditDashboardModalComponent implements OnInit {\n  protected readonly testIds = DASHBOARD_MANAGEMENT_TEST_IDS;\n  @Input() public showModal$: Observable<boolean>;\n  @Input() public dashboard: DashboardItem;\n  @Output() public saveEvent = new EventEmitter<ConfigurationOutput>();\n\n  public readonly open$ = new BehaviorSubject<boolean>(false);\n  public readonly disabled$ = new BehaviorSubject<boolean>(false);\n  public readonly editDashboardForm = this.fb.group({\n    title: this.fb.control('', [Validators.required]),\n    description: this.fb.control('', [Validators.required]),\n    widgetLayout: this.fb.control<WidgetLayout>(WidgetLayout.MUURI_GAP_FREE),\n  });\n\n  public get dashboardTitle() {\n    return this.editDashboardForm.get('title');\n  }\n\n  public get dashboardDescription() {\n    return this.editDashboardForm.get('description');\n  }\n\n  public readonly widgetLayoutSelectItems: SelectItem[] = WIDGET_LAYOUT_VALUES.map(value => ({\n    id: value,\n    translationKey: WIDGET_LAYOUT_TRANSLATION_KEYS[value],\n  }));\n\n  private _openSubscription!: Subscription;\n\n  constructor(\n    private readonly fb: FormBuilder,\n    private readonly dashboardManagementService: DashboardManagementService\n  ) {}\n\n  public ngOnInit(): void {\n    this.openOpenSubscription();\n  }\n\n  public closeModal(): void {\n    this.open$.next(false);\n\n    setTimeout(() => {\n      this.editDashboardForm.reset();\n    }, CARBON_CONSTANTS.modalAnimationMs);\n  }\n\n  public saveDashboard(): void {\n    this.disable();\n\n    this.dashboardManagementService\n      .updateDashboard({\n        description: this.dashboardDescription.value,\n        title: this.dashboardTitle.value,\n        key: this.dashboard.key,\n        widgetLayout: this.editDashboardForm.get('widgetLayout').value ?? WidgetLayout.MUURI_GAP_FREE,\n      })\n      .subscribe(() => {\n        this.saveEvent.emit();\n        this.closeModal();\n      });\n  }\n\n  private setEditDashboardForm(): void {\n    if (this.dashboard) {\n      this.dashboardTitle?.setValue(this.dashboard.title);\n      this.dashboardDescription?.setValue(this.dashboard.description);\n      this.editDashboardForm\n        .get('widgetLayout')\n        ?.setValue(this.dashboard.widgetLayout ?? WidgetLayout.MUURI_GAP_FREE);\n    }\n\n    this.enable();\n  }\n\n  private openOpenSubscription(): void {\n    this._openSubscription = this.showModal$.subscribe(show => {\n      this.setEditDashboardForm();\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-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<cds-modal\n  *ngIf=\"{disabled: disabled$ | async} as obs\"\n  valtimoCdsModal\n  [open]=\"open$ | async\"\n  showFooter=\"true\"\n  title=\"{{ 'dashboardManagement.widgets.editDashboard' | translate }}\"\n  class=\"edit-dashboard-modal\"\n  (close)=\"closeModal()\"\n>\n  <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n    <h3 cdsModalHeaderHeading>{{ 'dashboardManagement.widgets.editDashboard' | translate }}</h3>\n  </cds-modal-header>\n\n  <section cdsModalContent>\n    <ng-container *ngTemplateOutlet=\"editDashboardFormTemplate;context:{obs: obs}\"></ng-container>\n  </section>\n\n  <cds-modal-footer>\n    <ng-container *ngTemplateOutlet=\"editDashboardButtons;context:{obs: obs}\"></ng-container>\n  </cds-modal-footer>\n</cds-modal>\n\n<ng-template #editDashboardFormTemplate let-obs=\"obs\">\n  <form\n    *ngIf=\"editDashboardForm\"\n    [formGroup]=\"editDashboardForm\"\n    class=\"dashboard-modal__form\"\n    [cdsLayer]=\"1\"\n  >\n    <div class=\"form__element\">\n      <cds-label\n        [disabled]=\"obs.disabled\"\n        [invalid]=\"dashboardTitle.dirty && dashboardTitle.invalid\"\n      >\n        {{ 'dashboardManagement.widgets.form.dashboardTitle' | translate }}\n\n        <input\n          [attr.data-test-id]=\"testIds.editTitleInput\"\n          cdsText\n          [disabled]=\"obs.disabled\"\n          [invalid]=\"dashboardTitle.dirty && dashboardTitle.invalid\"\n          formControlName=\"title\"\n          [attr.modal-primary-focus]=\"true\"\n        />\n      </cds-label>\n    </div>\n\n    <div class=\"form__element\">\n      <cds-label\n        [disabled]=\"obs.disabled\"\n        [helperText]=\"'dashboardManagement.widgets.form.dashboardDescriptionHelperText' | translate\"\n        [invalid]=\"dashboardDescription.dirty && dashboardDescription.invalid\"\n        [invalidText]=\"\n          'dashboardManagement.widgets.form.dashboardDescriptionHelperText' | translate\n        \"\n      >\n        {{ 'dashboardManagement.widgets.form.dashboardDescription' | translate }}\n\n        <input\n          [attr.data-test-id]=\"testIds.editDescriptionInput\"\n          cdsText\n          [disabled]=\"obs.disabled\"\n          [invalid]=\"dashboardDescription.dirty && dashboardDescription.invalid\"\n          formControlName=\"description\"\n        />\n      </cds-label>\n    </div>\n\n    <div class=\"form__element\">\n      <v-select\n        formControlName=\"widgetLayout\"\n        [items]=\"widgetLayoutSelectItems\"\n        [dropUp]=\"false\"\n        [appendInline]=\"false\"\n        titleTranslationKey=\"widgetLayout.label\"\n      ></v-select>\n    </div>\n\n    <valtimo-widget-layout-info></valtimo-widget-layout-info>\n  </form>\n</ng-template>\n\n<ng-template #editDashboardButtons let-obs=\"obs\">\n  <button cdsButton=\"ghost\" [disabled]=\"obs.disabled\" (click)=\"closeModal()\">\n    {{ 'dashboardManagement.widgets.cancel' | translate }}\n  </button>\n\n  <button\n    [attr.data-test-id]=\"testIds.completeButton\"\n    cdsButton=\"primary\"\n    [disabled]=\"editDashboardForm.invalid || obs.disabled\"\n    (click)=\"saveDashboard()\"\n  >\n    {{ 'dashboardManagement.widgets.complete' | translate }}\n  </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {DatePipe} from '@angular/common';\nimport {AfterViewInit, Component, computed, signal, ViewEncapsulation} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Code16, Edit16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n  ActionItem,\n  ColumnConfig,\n  EditorModel,\n  PageHeaderService,\n  PageTitleService,\n  ViewType,\n} from '@valtimo/components';\nimport {DashboardWidgetConfiguration} from '@valtimo/dashboard';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, tap} from 'rxjs';\nimport {DASHBOARD_MANAGEMENT_TEST_IDS} from '../../constants/dashboard-management.test-ids';\nimport {DashboardItem, DashboardWidget, WidgetModalType} from '../../models';\nimport {DashboardManagementService} from '../../services/dashboard-management.service';\n\n@Component({\n  standalone: false,\n  templateUrl: './dashboard-details.component.html',\n  styleUrls: ['./dashboard-details.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DashboardDetailsComponent implements AfterViewInit {\n  protected readonly testIds = DASHBOARD_MANAGEMENT_TEST_IDS;\n  public modalType: WidgetModalType = 'create';\n  public fields!: ColumnConfig[];\n  public readonly actionItems: ActionItem[] = [\n    {\n      label: 'Edit',\n      callback: this.editWidget.bind(this),\n    },\n    {\n      label: 'Duplicate',\n      callback: this.duplicateWidget.bind(this),\n    },\n    {\n      label: 'Delete',\n      callback: this.deleteWidget.bind(this),\n      type: 'danger',\n    },\n  ];\n\n  private readonly _dashboardKey$ = this.route.params.pipe(map(params => params.id));\n  private readonly _refreshDashboardSubject$ = new BehaviorSubject<null>(null);\n  public readonly currentDashboard$: Observable<DashboardItem | undefined> = combineLatest([\n    this._dashboardKey$,\n    this.translateService.stream('key'),\n    this._refreshDashboardSubject$,\n  ]).pipe(\n    switchMap(([dashboardKey]) => this.dashboardManagementService.getDashboard(dashboardKey)),\n    tap((currentDashboard: DashboardItem) => {\n      if (!currentDashboard) {\n        return;\n      }\n\n      this.pageTitleService.setCustomPageTitle(currentDashboard.title);\n      this.pageTitleService.setCustomPageSubtitle(\n        this.translateService.instant('dashboardManagement.widgets.metadata', {\n          createdBy: currentDashboard.createdBy,\n          createdOn: this.datePipe.transform(currentDashboard.createdOn ?? '', 'd/M/yy, H:mm'),\n          key: currentDashboard.key,\n        })\n      );\n    })\n  );\n\n  public readonly lastItemIndex$ = new BehaviorSubject<number>(0);\n  public readonly loading$ = new BehaviorSubject<boolean>(true);\n  public readonly dragAndDropDisabled$ = new BehaviorSubject<boolean>(false);\n\n  public readonly _refreshWidgetsSubject$ = new BehaviorSubject<DashboardWidget[] | null>(null);\n\n  private _widgetData: DashboardWidget[] | null = null;\n  public readonly widgetData$: Observable<DashboardWidget[]> = combineLatest([\n    this._dashboardKey$,\n    this._refreshWidgetsSubject$,\n  ]).pipe(\n    switchMap(([dashboardKey, refreshWidgets]) => {\n      if (!this._widgetData || !refreshWidgets) {\n        this.loading$.next(true);\n        return this.dashboardManagementService.getDashboardWidgetConfiguration(dashboardKey);\n      }\n\n      this.dragAndDropDisabled$.next(true);\n\n      return this.dashboardManagementService.updateDashboardWidgetConfigurations(\n        dashboardKey,\n        refreshWidgets\n      );\n    }),\n    tap((data: DashboardWidget[]) => {\n      this._widgetData = data;\n      this.lastItemIndex$.next(data.length - 1);\n      this.loading$.next(false);\n      this.dragAndDropDisabled$.next(false);\n    })\n  );\n\n  public readonly jsonEditorModel$: Observable<EditorModel> = this.widgetData$.pipe(\n    map((data: DashboardWidget[]) => ({\n      value: JSON.stringify(data),\n      language: 'json',\n    }))\n  );\n\n  public readonly showModal$ = new BehaviorSubject<boolean>(false);\n  public readonly showEditDashboardModal$ = new BehaviorSubject<boolean>(false);\n\n  public readonly editWidgetConfiguration$ =\n    new BehaviorSubject<DashboardWidgetConfiguration | null>(null);\n\n  public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n  public readonly $jsonEditorActive = signal<boolean>(false);\n  public readonly $buttonTheme = computed(() => (this.$jsonEditorActive() ? 'primary' : 'ghost'));\n\n  constructor(\n    private readonly dashboardManagementService: DashboardManagementService,\n    private readonly datePipe: DatePipe,\n    private readonly iconService: IconService,\n    private readonly pageTitleService: PageTitleService,\n    private readonly route: ActivatedRoute,\n    private readonly translateService: TranslateService,\n    private readonly pageHeaderService: PageHeaderService\n  ) {}\n\n  public ngAfterViewInit(): void {\n    this.iconService.registerAll([Code16, Edit16]);\n    this.setFields();\n  }\n\n  public addWidget(): void {\n    this.editWidgetConfiguration$.next(null);\n    this.modalType = 'create';\n    this.showModal();\n  }\n\n  public editDashboard(): void {\n    this.showEditDashboardModal();\n  }\n\n  public refreshWidgets(): void {\n    this._refreshWidgetsSubject$.next(null);\n  }\n\n  public refreshDashboard(): void {\n    this._refreshDashboardSubject$.next(null);\n  }\n\n  public updateWidgetData(items: DashboardWidget[]): void {\n    if (!items) return;\n\n    this._refreshWidgetsSubject$.next(items);\n  }\n\n  public editWidget(event: DashboardWidgetConfiguration): void {\n    this.editWidgetConfiguration$.next({...event});\n    this.modalType = 'edit';\n    this.showModal();\n  }\n\n  public switchView(): void {\n    this.$jsonEditorActive.set(!this.$jsonEditorActive());\n\n    if (!this.$jsonEditorActive()) this.refreshWidgets();\n  }\n\n  private duplicateWidget(event: DashboardWidgetConfiguration): void {\n    this.editWidgetConfiguration$.next({...event});\n    this.modalType = 'create';\n    this.showModal();\n  }\n\n  private setFields(): void {\n    this.fields = [\n      {\n        viewType: ViewType.TEXT,\n        key: 'title',\n        label: 'Name',\n      },\n    ];\n  }\n\n  private deleteWidget(event: DashboardWidgetConfiguration): void {\n    this.editWidgetConfiguration$.next({...event});\n    this.modalType = 'delete';\n    this.showModal();\n  }\n\n  private showModal(): void {\n    this.showModal$.next(true);\n  }\n\n  private showEditDashboardModal(): void {\n    this.showEditDashboardModal$.next(true);\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<ng-container\n  *ngIf=\"\n    fields && {\n      currentDashboard: currentDashboard$ | async,\n      editWidgetConfiguration: editWidgetConfiguration$ | async,\n      loading: loading$ | async,\n      widgetData: widgetData$ | async,\n      dragAndDropDisabled: dragAndDropDisabled$ | async,\n      jsonEditorModel: jsonEditorModel$ | async,\n    } as obs\n  \"\n>\n  <div class=\"dashboard-detail-table\">\n    @if (!$jsonEditorActive()) {\n      <valtimo-carbon-list\n        [actionItems]=\"actionItems\"\n        [fields]=\"fields\"\n        [header]=\"false\"\n        [items]=\"obs.widgetData\"\n        [loading]=\"obs.loading\"\n        [dragAndDrop]=\"true\"\n        [dragAndDropDisabled]=\"obs.dragAndDropDisabled\"\n        (itemsReordered)=\"updateWidgetData($event)\"\n        (rowClicked)=\"editWidget($event)\"\n      >\n        <div carbonToolbarContent>\n          <ng-container [ngTemplateOutlet]=\"viewToggle\"></ng-container>\n\n          <ng-container [ngTemplateOutlet]=\"addWidgetButton\"></ng-container>\n        </div>\n\n        <valtimo-no-results\n          [action]=\"addWidgetButton\"\n          description=\"{{ 'dashboardManagement.widgets.noResults.description' | translate }}\"\n          title=\"{{ 'dashboardManagement.widgets.noResults.title' | translate }}\"\n        ></valtimo-no-results>\n      </valtimo-carbon-list>\n    } @else {\n      <valtimo-json-editor\n        [model]=\"obs.jsonEditorModel\"\n        [fitPage]=\"true\"\n        (saveEvent)=\"updateWidgetData($event)\"\n      >\n        <ng-container *ngTemplateOutlet=\"viewToggle\"></ng-container>\n      </valtimo-json-editor>\n    }\n  </div>\n\n  <valtimo-widget-modal\n    [dashboard]=\"obs.currentDashboard\"\n    [editWidgetConfiguration]=\"obs.editWidgetConfiguration\"\n    [showModal$]=\"showModal$\"\n    [type]=\"modalType\"\n    [widgetKey]=\"obs.editWidgetConfiguration?.key\"\n    (saveEvent)=\"refreshWidgets()\"\n  ></valtimo-widget-modal>\n\n  <valtimo-edit-dashboard-modal\n    [dashboard]=\"obs.currentDashboard\"\n    [showModal$]=\"showEditDashboardModal$\"\n    (saveEvent)=\"refreshDashboard()\"\n  >\n  </valtimo-edit-dashboard-modal>\n</ng-container>\n\n<ng-container renderInPageHeader>\n  <ng-template>\n    <button\n      [attr.data-test-id]=\"testIds.editButton\"\n      cdsButton=\"tertiary\"\n      [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n      (click)=\"editDashboard()\"\n    >\n      {{ 'dashboardManagement.widgets.editButton' | translate }}\n\n      <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n    </button>\n  </ng-template>\n</ng-container>\n\n<ng-template #addWidgetButton>\n  <button cdsButton=\"primary\" [attr.data-test-id]=\"testIds.addWidgetButton\" [disabled]=\"loading$ | async\" (click)=\"addWidget()\">\n    {{ 'dashboardManagement.widgets.add' | translate }}\n\n    <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n  </button>\n</ng-template>\n\n<ng-template #viewToggle>\n  <cds-tooltip [description]=\"'JSON editor'\">\n    <button\n      [cdsButton]=\"$buttonTheme()\"\n      [attr.data-test-id]=\"testIds.switchViewButton\"\n      iconOnly=\"true\"\n      (click)=\"switchView()\"\n    >\n      <svg cdsIcon=\"code\" size=\"16\"></svg>\n    </button>\n  </cds-tooltip>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {Router} from '@angular/router';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {BehaviorSubject, finalize, Observable} from 'rxjs';\nimport {DASHBOARD_MANAGEMENT_TEST_IDS} from '../../constants/dashboard-management.test-ids';\nimport {DashboardItem} from '../../models';\nimport {DashboardManagementService} from '../../services/dashboard-management.service';\n\n@Component({\n  standalone: false,\n  templateUrl: './dashboard-management.component.html',\n  styleUrls: ['./dashboard-management.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DashboardManagementComponent implements OnInit {\n  protected readonly testIds = DASHBOARD_MANAGEMENT_TEST_IDS;\n  public readonly deleteRowKey$: BehaviorSubject<string> = new BehaviorSubject('');\n  public readonly openModal$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  public readonly showDeleteModal$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n  public readonly tableData$: Observable<{items: DashboardItem[] | null; loading: boolean}> =\n    this.dashboardManagementService.dashboards$;\n  public fields: ColumnConfig[] = [\n    {\n      viewType: ViewType.TEXT,\n      key: 'title',\n      label: 'dashboardManagement.name',\n    },\n    {\n      viewType: ViewType.TEXT,\n      key: 'description',\n      label: 'dashboardManagement.description',\n    },\n    {\n      viewType: ViewType.TEXT,\n      key: 'key',\n      label: 'dashboardManagement.key',\n    },\n  ];\n  public readonly actionItems: ActionItem[] = [\n    {\n      label: 'interface.delete',\n      callback: this.deleteDashboard.bind(this),\n      type: 'danger',\n    },\n  ];\n  public form: FormGroup;\n\n  constructor(\n    private readonly dashboardManagementService: DashboardManagementService,\n    private readonly fb: FormBuilder,\n    private readonly router: Router\n  ) {}\n\n  public ngOnInit(): void {\n    this.dashboardManagementService.loadData();\n    this.form = this.fb.group({\n      description: this.fb.control('', [Validators.required]),\n      title: this.fb.control('', [Validators.required]),\n    });\n  }\n\n  public closeModal(): void {\n    this.openModal$.next(false);\n    this.form.reset();\n  }\n\n  public createDashboard(): void {\n    const control: AbstractControl | null = this.form.get('title');\n    if (!control || !control.valid) {\n      return;\n    }\n\n    const newDashboard: DashboardItem = this.form.getRawValue();\n    this.dashboardManagementService.dispatchAction(\n      this.dashboardManagementService.createDashboard(newDashboard).pipe(\n        finalize(() => {\n          this.closeModal();\n        })\n      )\n    );\n  }\n\n  public onConfirmEvent(dashboardKey: string): void {\n    this.dashboardManagementService.dispatchAction(\n      this.dashboardManagementService.deleteDashboard(dashboardKey).pipe(\n        finalize(() => {\n          this.closeModal();\n        })\n      )\n    );\n  }\n\n  public getControlInvalid(controlKey: string): boolean {\n    const control: AbstractControl | null = this.form.get(controlKey);\n\n    if (!control) {\n      return true;\n    }\n\n    return !control.valid && !control.pristine;\n  }\n\n  public openModal(): void {\n    this.openModal$.next(true);\n  }\n\n  public onRowClick(item: DashboardItem): void {\n    this.router.navigate([`/dashboard-management/${item.key}`]);\n  }\n\n  private deleteDashboard(dashboard: DashboardItem): void {\n    this.deleteRowKey$.next(dashboard.key);\n    this.showDeleteModal$.next(true);\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<ng-container *ngIf=\"tableData$ | async as data\">\n  <valtimo-carbon-list\n    [actionItems]=\"actionItems\"\n    [header]=\"false\"\n    [items]=\"data.items\"\n    [loading]=\"data.loading\"\n    [fields]=\"fields\"\n    (rowClicked)=\"onRowClick($event)\"\n    class=\"valtimo-dashboard-management__table\"\n  >\n    <div carbonToolbarContent>\n      <ng-container [ngTemplateOutlet]=\"addDashboardButton\"></ng-container>\n    </div>\n\n    <valtimo-no-results\n      [action]=\"addDashboardButton\"\n      description=\"{{ 'dashboardManagement.noResults.description' | translate }}\"\n      title=\"{{ 'dashboardManagement.noResults.title' | translate }}\"\n    ></valtimo-no-results>\n  </valtimo-carbon-list>\n</ng-container>\n\n<cds-modal\n  valtimoCdsModal\n  [open]=\"openModal$ | async\"\n  showFooter=\"true\"\n  title=\"{{ 'dashboardManagement.addDashboard' | translate }}\"\n  (close)=\"closeModal()\"\n>\n  <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n    <h3 cdsModalHeaderHeading>\n      {{ 'dashboardManagement.addDashboard' | translate }}\n    </h3>\n  </cds-modal-header>\n\n  <section cdsModalContent [cdsLayer]=\"1\">\n    <form [formGroup]=\"form\" class=\"valtimo-dashboard-management__form\">\n      <cds-label [invalid]=\"getControlInvalid('title')\">\n        {{ 'dashboardManagement.addModal.name' | translate }}\n\n        <input\n          [attr.data-test-id]=\"testIds.createTitleInput\"\n          [attr.modal-primary-focus]=\"true\"\n          [invalid]=\"getControlInvalid('title')\"\n          formControlName=\"title\"\n          cdsText\n          placeholder=\"{{ 'dashboardManagement.addModal.namePlaceholder' | translate }}\"\n        />\n      </cds-label>\n\n      <cds-label\n        [helperText]=\"'dashboardManagement.addModal.descriptionHelperText' | translate\"\n        [invalid]=\"getControlInvalid('description')\"\n      >\n        {{ 'dashboardManagement.description' | translate }}\n\n        <input\n          [attr.data-test-id]=\"testIds.createDescriptionInput\"\n          [invalid]=\"getControlInvalid('description')\"\n          formControlName=\"description\"\n          cdsText\n          placeholder=\"{{ 'dashboardManagement.addModal.descriptionPlaceholder' | translate }}\"\n        />\n      </cds-label>\n    </form>\n  </section>\n\n  <cds-modal-footer>\n    <button cdsButton=\"ghost\" [attr.data-test-id]=\"testIds.cancelDashboardButton\" (click)=\"closeModal()\">\n      {{ 'dashboardManagement.cancel' | translate }}\n    </button>\n\n    <button\n      [attr.data-test-id]=\"testIds.createButton\"\n      [disabled]=\"this.form.invalid\"\n      cdsButton=\"primary\"\n      (click)=\"createDashboard()\"\n    >\n      {{ 'dashboardManagement.create' | translate }}\n    </button>\n  </cds-modal-footer>\n</cds-modal>\n\n<valtimo-confirmation-modal\n  confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n  confirmButtonType=\"danger\"\n  contentTranslationKey=\"dashboardManagement.deleteModalContent\"\n  [outputOnConfirm]=\"deleteRowKey$ | async\"\n  [showModalSubject$]=\"showDeleteModal$\"\n  titleTranslationKey=\"dashboardManagement.delete\"\n  (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addDashboardButton>\n  <button [attr.data-test-id]=\"testIds.addButton\" cdsButton=\"primary\" (click)=\"openModal()\">\n    {{ 'dashboardManagement.addDashboard' | translate }}\n\n    <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n  </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {DashboardManagementComponent} from './components/dashboard-management/dashboard-management.component';\nimport {DashboardDetailsComponent} from './components/dashboard-details/dashboard-details.component';\n\nconst routes: Routes = [\n  {\n    path: 'dashboard-management',\n    component: DashboardManagementComponent,\n    canActivate: [AuthGuardService],\n    data: {title: 'Dashboard configuration', roles: [ROLE_ADMIN]},\n  },\n  {\n    path: 'dashboard-management/:id',\n    component: DashboardDetailsComponent,\n    canActivate: [AuthGuardService],\n    data: {\n      title: 'Dashboard details',\n      roles: [ROLE_ADMIN],\n      customPageTitle: true,\n      customPageSubtitle: true,\n    },\n  },\n];\n\n@NgModule({\n  imports: [RouterModule.forRoot(routes)],\n  exports: [RouterModule],\n  declarations: [],\n})\nexport class DashboardManagementRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n  CarbonListModule,\n  ConfirmationModalModule,\n  JsonEditorComponent,\n  RenderInPageHeaderDirective,\n  SelectModule,\n  SpinnerModule,\n  ValtimoCdsModalDirective,\n  WidgetLayoutInfoComponent,\n} from '@valtimo/components';\nimport {\n  ButtonModule,\n  DropdownModule,\n  IconModule,\n  InputModule,\n  LayerModule,\n  ModalModule,\n  NotificationModule,\n} from 'carbon-components-angular';\nimport {DashboardDetailsComponent} from './components/dashboard-details/dashboard-details.component';\nimport {DashboardManagementComponent} from './components/dashboard-management/dashboard-management.component';\nimport {DashboardManagementRoutingModule} from './dashboard-management-routing.module';\nimport {WidgetModalComponent} from './components/widget-modal/widget-modal.component';\nimport {EditDashboardModalComponent} from './components/edit-dashboard-modal/edit-dashboard-modal';\nimport {WidgetTranslatePipeModule} from '@valtimo/dashboard';\nimport {WidgetConfigurationContainerComponent} from './components/widget-configuration-container/widget-configuration-container.component';\n\n@NgModule({\n  declarations: [\n    DashboardManagementComponent,\n    DashboardDetailsComponent,\n    WidgetModalComponent,\n    EditDashboardModalComponent,\n    WidgetConfigurationContainerComponent,\n  ],\n  imports: [\n    ButtonModule,\n    CommonModule,\n    DashboardManagementRoutingModule,\n    DropdownModule,\n    InputModule,\n    ModalModule,\n    ReactiveFormsModule,\n    SpinnerModule,\n    TranslateModule,\n    RenderInPageHeaderDirective,\n    ConfirmationModalModule,\n    NotificationModule,\n    IconModule,\n    WidgetTranslatePipeModule,\n    CarbonListModule,\n    LayerModule,\n    ValtimoCdsModalDirective,\n    JsonEditorComponent,\n    SelectModule,\n    WidgetLayoutInfoComponent,\n  ],\n  exports: [],\n})\nexport class DashboardManagementModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of dashboard-management\n */\n\nexport * from './lib/constants/dashboard-management.test-ids';\nexport * from './lib/dashboard-management.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["tap","i1","i2","i3","i4.DashboardManagementService","i6","i7","i8","i9.WidgetConfigurationContainerComponent","i2.DashboardManagementService","i4","i5","i1.DashboardManagementService","i7.WidgetModalComponent","i8.EditDashboardModalComponent"],"mappings":"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"}