{"version":3,"file":"onepoint-yap-dashboard.mjs","sources":["../../../../projects/onepoint-yap/dashboard/lib/core/access/access.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/access/access.directive.ts","../../../../projects/onepoint-yap/dashboard/lib/core/access/access.guard.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/subscriptionner.directive.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/base-layout/base-layout.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/base-layout/base-layout.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/i18n/deep-merge.function.ts","../../../../projects/onepoint-yap/dashboard/lib/core/i18n/en.translations.ts","../../../../projects/onepoint-yap/dashboard/lib/core/i18n/fr.translations.ts","../../../../projects/onepoint-yap/dashboard/lib/core/i18n/i18n.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/i18n/i18n.pipe.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/base-menu/base-menu.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/base-menu/base-menu.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/icon/icon.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/icon/icon.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/base-toolbox-action/base-toolbox-action.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/base-toolbox-action/base-toolbox-action.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/base-toolbox/base-toolbox.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/base-toolbox/base-toolbox.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/store/class/class.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/class/class.reducer.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/class/class.selectors.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/store/dashboard.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/config/config.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/model/widget-chart-manifest.interface.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/config/config.widget.constants.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/config/config.reducer.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/config/icon-definitions.interface.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/config/config.selectors.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/snackbar/snackbar/snackbar.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/snackbar/snackbar/snackbar.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/snackbar/snackbar.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/image/image.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/symbol/symbol.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/get-secured-image/get-secured-image.pipe.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/icon/icon.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/data-source/data-source.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/nq-color-selector/nq-color-selector.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/nq-color-selector/nq-color-selector.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/i18n/i18n.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/overlay/dialog-ref.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/overlay/dialog.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/overlay/dialog-confirm.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/overlay/dialog-confirm.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/overlay/overlay.constantes.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/overlay/overlay.directive.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/overlay/tooltip.directive.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/overlay/overlay.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/image/image.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/image/image.reducer.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/image/image.selectors.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/raw/raw.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/upload/upload.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/upload/upload.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/select-image/select-image.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/select-image/select-image.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/store/search/search.constants.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/data-source/data-source.reducer.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/data-source/named-query-types.model.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/data-source/named-query-utils.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/data-source/data-source.selectors.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/field/field.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/field/field.reducer.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/field/field.selectors.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/translate-id/translate-id.pipe.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/category/category.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/category/category.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/category/category.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/category/category.reducer.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/class/class.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/class/class.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/config/config.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/config/open-map-tiles.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/config/config.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/context-menu/context-menu.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/context-menu/context-menu.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/context-menu/context-menu.reducer.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/field/field.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/field/field.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/image/image.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/context-menu/context-menu.selectors.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/item/item.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/field/field.interface.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/item-utils.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/item/item.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/item/item.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/core/model/manifest.interface.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/store/dashboard.selectors.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/search/search.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/search/search.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/data-source/data-source.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/data-source/data-source.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/relation-types/relation-types.actions.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/relation-types/relation-types.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/relation-types/relation-types.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/relation-types/relation-types.reducer.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/search/search.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/search/search.reducer.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/title-presentation/title-presentation.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/title-presentation/title-presentation.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/modalStatus/modalStatus.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/modalStatus/modalStatus.component.html","../../../../projects/onepoint-yap/dashboard/dataset/i18n/fr.translations.ts","../../../../projects/onepoint-yap/dashboard/dataset/i18n/en.translations.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/modalStatus/modalStatus.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/core.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/search/search.selectors.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/category/category.selectors.ts","../../../../projects/onepoint-yap/dashboard/lib/core/store/relation-types/relation-types.selectors.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/date-picker/time-picker/time-picker.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/date-picker/time-picker/time-picker.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/date-picker/date-range-highlight.pipe.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/date-picker/date-picker.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/date-picker/date-picker.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/date-picker/date-picker.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/edit-input/edit-input.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/edit-input/edit-input.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/edit-input/edit-input.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/modal/modal.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/modal/modal.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/modal/yap-modal.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/toggle/toggle.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/toggle/toggle.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/toggle/toggle.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/sort/sort-data.pipe.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/sort/sort-header.directive.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/sort/sort-header/sort-header.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/sort/sort-header/sort-header.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/sort/sort-table.directive.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/sort/sort.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/select/select.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/select/select.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/select/select.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/range/range.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/range/range.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/range/range.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/share/share.model.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/share/share.component.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/share/share.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/components/share/share.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/components/snackbar/snackbar.module.ts","../../../../projects/onepoint-yap/dashboard/lib/core/access/access.utils.ts","../../../../projects/onepoint-yap/dashboard/lib/core/ws/websocket.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/model/mimetype-resultset.constant.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/store/dashboard.contants.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/solve-collisions.function.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/base-widget.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/widget-filler/widget-filler.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/widget-filler/widget-filler.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/date-utils.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/context-menu/object-edition/object-edition.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/context-menu/object-edition/object-edition.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/context-menu/context-menu.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/context-menu/context-menu.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/dashboard.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/dashboard.component.html","../../../../projects/onepoint-yap/dashboard/lib/core/model/widget-aggregated-chart-manifest.interface.ts","../../../../projects/onepoint-yap/dashboard/lib/core/model/widget-map-manifest.interface.ts","../../../../projects/onepoint-yap/dashboard/lib/core/toolbox/toolbox-manifest.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/toolbox/toolbox-menu.service.ts","../../../../projects/onepoint-yap/dashboard/lib/core/model/item.interface.ts","../../../../projects/onepoint-yap/dashboard/lib/core/model/search-mono-class.model.ts","../../../../projects/onepoint-yap/dashboard/lib/core/model/notification-interface.ts","../../../../projects/onepoint-yap/dashboard/lib/core/model/dataset.interface.ts","../../../../projects/onepoint-yap/dashboard/lib/core/model/admin-api.model.ts","../../../../projects/onepoint-yap/dashboard/lib/core/errors/http-error-interceptor.service.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/action-bus/service/bus.service.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/action-bus/effect/action-bus.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/manifests/manifests.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/manifests/manifests.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/metadata/metadata.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/metadata/metadata.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/vizualize-raw/vizualize-raw.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/vizualize-raw/vizualize-raw.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/resultset-utils.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/data-widget.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/header/resultset-size.pipe.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/header/widget-header.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/header/widget-header.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/settings/settings.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/components/widgets/settings/settings.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/filter/base-filter.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/filter/filter-factory.service.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/store/manifest.service.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/guard/default-view.guard.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/store/dashboard-init.service.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/store/title.service.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/store/geocoding.service.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/store/refresh.service.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/store/dashboard.effects.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/store/dashboard.reducers.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/tooltip/base-tooltip.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/tooltip/components/default/default.tooltip.component.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/tooltip/components/default/default.tooltip.component.html","../../../../projects/onepoint-yap/dashboard/lib/dashboard/tooltip/tooltip-factory.service.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/dashboard.module.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/base-widget.module.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/widget-loader.function.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/tooltip/base-tooltip.module.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/tooltip/tooltip-loader.function.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/filter/base-filter.module.ts","../../../../projects/onepoint-yap/dashboard/lib/dashboard/filter/filter-loader.function.ts","../../../../projects/onepoint-yap/dashboard/public-api.ts","../../../../projects/onepoint-yap/dashboard/onepoint-yap-dashboard.ts"],"sourcesContent":["import { Injectable, InjectionToken } from '@angular/core';\nimport { UrlTree } from '@angular/router';\nimport { Observable, of } from 'rxjs';\n\nexport abstract class YapBaseAccess {\n  abstract hasRole(...args: any[]): Observable<boolean | UrlTree>;\n}\n\nexport const YAP_ACCESS_TOKEN = new InjectionToken<YapBaseAccess>('YAP_ACCESS_TOKEN');\n\n@Injectable()\nexport class YapDefaultAccessService extends YapBaseAccess {\n  constructor() {\n    super();\n  }\n\n  override hasRole(...args: any[]): Observable<boolean | UrlTree> {\n    return of(true);\n  }\n}\n","import { Directive, Inject, Input, OnDestroy, Optional, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { of, Subscription } from 'rxjs';\nimport { YapAccessCheck } from './access.model';\nimport { YAP_ACCESS_TOKEN, YapBaseAccess } from './access.service';\n\n@Directive({ selector: '[yapAccess]' })\nexport class YapAccessDirective implements OnDestroy {\n  private hasRoleSub?: Subscription;\n  private isRender = false;\n  @Input('yapAccess') set authorizedRoles(accessCheck: YapAccessCheck) {\n    const rolesOk$ =\n      this.role?.hasRole(accessCheck.roles, accessCheck.module, accessCheck.page, accessCheck.action) ?? of(true);\n    this.hasRoleSub?.unsubscribe();\n    this.hasRoleSub = rolesOk$.subscribe((val) => {\n      if (val && !this.isRender) {\n        this.vcr.createEmbeddedView(this.template);\n        this.isRender = true;\n      } else if (!val && this.isRender) {\n        this.vcr.clear();\n        this.isRender = false;\n      }\n    });\n  }\n\n  constructor(\n    private template: TemplateRef<any>,\n    private vcr: ViewContainerRef,\n    @Optional() @Inject(YAP_ACCESS_TOKEN) private role: YapBaseAccess\n  ) {}\n\n  ngOnDestroy(): void {\n    this.hasRoleSub?.unsubscribe();\n  }\n}\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable, of } from 'rxjs';\n\nexport abstract class YapBaseAccessGuard implements CanActivate {\n  canActivate(\n    route: ActivatedRouteSnapshot,\n    state: RouterStateSnapshot\n  ): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> {\n    throw new Error('Method not implemented.');\n  }\n}\n\nexport const YAP_ACCESS_GUARD = new InjectionToken<YapBaseAccessGuard>('YAP_ACCESS_GUARD');\n\n@Injectable({ providedIn: 'root' })\nexport class YapDefaultAccessGuard implements YapBaseAccessGuard {\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n    return of(true);\n  }\n}\n","import { Directive, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\n@Directive()\nexport class SubscriptionnerDirective implements OnDestroy {\n  subscriptions: Subscription = new Subscription();\n\n  ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n  }\n}\n","import { Component, ComponentRef } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, debounceTime, filter, Observable } from 'rxjs';\nimport { SubscriptionnerDirective } from '../../../dashboard/components/subscriptionner.directive';\nimport { BaseMenuItem } from '../base-menu/base-menu.component';\n\n@Component({\n  selector: 'yap-base-layout',\n  templateUrl: './base-layout.component.html'\n})\nexport class BaseLayoutComponent extends SubscriptionnerDirective {\n  instanciatedComponent!: ComponentRef<any>;\n  menus$?: Observable<BaseMenuItem[]>;\n  menuOpen$?: Observable<boolean>;\n  navigationEnd$: Observable<NavigationEnd>;\n\n  constructor(protected store: Store<any>, protected router: Router) {\n    super();\n    this.init();\n    this.navigationEnd$ = this.router.events.pipe(filter((evt): evt is NavigationEnd => evt instanceof NavigationEnd));\n    if (!this.menus$) {\n      console.error('menus$ must be initialized in init');\n    } else {\n      this.subscriptions.add(\n        combineLatest([this.menus$, this.navigationEnd$])\n          .pipe(debounceTime(10))\n          .subscribe(([menus, navigation]) => {\n            // Search for menu to highlight based on url (reverse)\n            const navSplit = navigation.urlAfterRedirects.split('/').reverse();\n            const menu = navSplit.find((navPart) => {\n              return menus.find((menu) => navPart === menu.menu) !== undefined;\n            });\n            this.highlightMenu(menu ?? '');\n          })\n      );\n    }\n  }\n\n  init() {\n    console.error('Must override init function');\n  }\n\n  highlightMenu(menu: string) {\n    console.error('Must override highLightMenu function');\n  }\n}\n","<div>\n  <ng-container #componentRef></ng-container>\n</div>\n","export function deepMerge(target: any, source: any) {\n  const isObject = (obj: any) => obj && typeof obj === 'object';\n\n  if (!isObject(target) || !isObject(source)) {\n    return source;\n  }\n\n  Object.keys(source).forEach((key) => {\n    const targetValue = target[key];\n    const sourceValue = source[key];\n    if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n      target[key] = targetValue.concat(sourceValue);\n    } else if (isObject(targetValue) && isObject(sourceValue)) {\n      target[key] = deepMerge(Object.assign({}, targetValue), sourceValue);\n    } else {\n      target[key] = sourceValue;\n    }\n  });\n\n  return target;\n}\n","export const enTranslations = {\n  '@yap': {\n    header: {\n      noCurrentPresentation: 'Presentation not saved'\n    },\n    widget: {\n      noData: 'No data source selected',\n      unrecognized: 'Restitution of type {{type}} is unknown.',\n      addedInView: 'Restitution has been added on tab n°{{index}}',\n      updatedInView: 'Restitution has been updated on tab n°{{index}}',\n      settings: {\n        title: 'Settings',\n        validateUpdating: 'Validate-Updating'\n      },\n      defineCatalog: 'Define catalog entry',\n      buttonChoice: 'Select a restitution',\n      tooltip: {\n        openParameter: 'Open parameter',\n        params: 'Parameter restitution presentation',\n        readSearch: 'Choose data',\n        deleteWidget: 'Delete restitution',\n        catalogWidget: 'Add to catalog',\n        changeSpot: 'Change widget placement',\n        spotName: 'Spot n°{{place}}'\n      },\n      target: {\n        new: 'Open in a new tab',\n        existing: 'Open in tab n°{{targetIndex}}',\n        delete: 'Delete',\n        maximize: 'Maximize',\n        none_auto: 'Insert restitutions here',\n        none_manual: 'Drag n drop'\n      },\n      namedQuery: {\n        defaultRs: 'Current search',\n        resultsAccurate: '{{total}}',\n        resultsNonAccurate: '{{displayed}} of approximately {{total}}'\n      },\n      modalTitle: 'Do you want to confirm?',\n      itemId: 'Id',\n      class: 'Class'\n    },\n    view: {\n      name: 'Tab n°{{rank}}'\n    },\n    toolbox: {\n      defaultSize: 'Restitution size',\n      manifest: {\n        name: 'Presentation name',\n        description: 'Presentation description',\n        saved: 'Presentation saved as {{viewId}}',\n        saveErrorCode: {\n          FORBIDDEN: 'You are not the owner of this presentation',\n          NAME_ALREADY_USED: 'A presentation called \"{{name}}\" already exists, please select another name.'\n        },\n        defaulted: 'Presentation {{viewId}} marked as favourite',\n        undefaulted: 'Presentation {{viewId}} is no longer marked as favourite',\n        validated: 'Validate',\n        check: 'Save',\n        close: 'Cancel',\n        validate: 'Validate'\n      },\n      catalog: {\n        title: 'Custom',\n        label: 'Name',\n        description: 'Description',\n        icon: 'Image',\n        filter: {\n          delete: 'Cancel filter',\n          type: 'Filter by type',\n          name: 'Filter by name'\n        },\n        saved: 'Restitution saved as {{viewId}}',\n        saveErrorCode: {\n          NAME_ALREADY_USED: 'A restitution called \"{{name}}\" already exists, please select another name.'\n        }\n      },\n      edit: 'Modify layout',\n      editOff: 'Visualize layout',\n      launch: 'New tab',\n      launchIndication: 'Open this page in a',\n      chooseGrid: 'Change grid layout',\n      clear: 'Clear presentation',\n      close: 'Close',\n      heatmap: 'Heatmap',\n      bubblemap: 'Bubbles',\n      markermap: 'Markers',\n      map: 'Map',\n      table: 'Table',\n      detail: 'Detail',\n      chart: 'Chart',\n      resultSet: 'Named Queries',\n      saveView: 'Save my presentation',\n      rename: 'Save my presentation',\n      restore: 'Restore closed pages',\n      save: 'Save',\n      drag: 'Restitution...',\n      dragIndication: 'Insert a',\n      barchart: 'Bar',\n      histogram: 'Histogram',\n      linechart: 'Line',\n      pointchart: 'Point',\n      areachart: 'Area',\n      arcchart: 'Arc',\n      radarchart: 'Radar',\n      circlechart: 'Circle packing',\n      iframe: 'External application',\n      graph: 'Graph',\n      placeholder: '',\n      sub: {\n        map: 'Map',\n        chart: 'Chart',\n        other: 'Other'\n      },\n      tile: 'Tiles',\n      now: 'Today',\n      since_day: 'Since {{day}} days',\n      layout: {\n        '0': 'Free layout',\n        '0_detailled': 'Free mode display, rendering size and positioning fully customizable by the user.',\n        '1': 'Fullscreen',\n        '1_detailled': 'Display of a single render on the whole screen, the placement is system guided.',\n        '1/2v': 'Vertical 1/2',\n        '1/2v_detailled':\n          'Display of 2 renders maximum, on a screen split in 2 vertical zones, the render addtion is made in an empty zone, the placement is system guided.',\n        '1/2h': 'Horizontal 1/2',\n        '1/2h_detailled':\n          'Display of 2 renders maximum, on a screen split in 2 horizontal zones, the render addtion is made in an empty zone, the placement is system guided.',\n        '1/3v': 'Vertical 1/3',\n        '1/3v_detailled':\n          'Display of 3 renders maximum, on a screen split in 3 vertical zones, the render addtion is made in an empty zone, the placement is system guided.',\n        '1/3h': 'Horizontal 1/3',\n        '1/3h_detailled':\n          'Display of 3 renders maximum, on a screen split in 3 horizontal zones, the render addtion is made in an empty zone, the placement is system guided.',\n        '1/4': '1/4 screen',\n        '1/4_detailled':\n          'Display of 4 renders maximum, on a split screen in 4 zones, the render addtion is made in an empty zone, the placement is system guided.'\n      }\n    },\n    manifest: {\n      name: 'Name',\n      description: 'Description',\n      creation: 'Creation date',\n      modification: 'Modification date',\n      actions: 'Actions',\n      import: 'Import',\n      importAlt: 'Import a presentation',\n      title: 'Presentations',\n      get: {\n        errorFront: 'Client error : {{msg}}',\n        errorBack: 'Server error with code : [{{code}}]'\n      },\n      default: 'Set default',\n      download: 'Download',\n      load: 'Load',\n      delete: 'Delete',\n      deleteError: 'Search used in one or more restitution(s), please delete them first'\n    },\n    format: {\n      date: 'MM/dd/yyyy',\n      datetime: 'MM/dd/yyyy hh:mm:ss a',\n      decimal: '.',\n      thousands: '.'\n    },\n    context: {\n      add: 'Add to selection',\n      remove: 'Remove from selection',\n      link: 'Link to selection',\n      invert: 'Invert selection',\n      proximity: 'Get linked objects',\n      explore: 'Open Graph restitution',\n      detail: 'Open Detail restitution',\n      flyingDetail: 'View object',\n      addressFromLoc: 'Get address',\n      errorSearchAddress: 'Address not found',\n      cancel: 'Cancel',\n      create: 'Create',\n      createObject: {\n        title: {\n          object: 'Create an object',\n          link: 'Create a link',\n          inversion: 'Reverse the link',\n          linkedObject: 'Create a linked object'\n        },\n        class: 'Object class',\n        link: 'Link with the new object',\n        created: 'Object has been created',\n        details: 'See detail',\n        addMultiField: 'Add a {{name}} value'\n      }\n    },\n    action: {\n      close: 'Close',\n      closePanel: 'Close panel',\n      delete: 'Delete',\n      edit: 'Edit',\n      editProfil: 'Edit profil',\n      choice: 'Choice',\n      choiceInList: 'Choose an item in list',\n      text: 'Fill field',\n      sortableColumnHeader: 'Use column header buttons to sort',\n      viewDetails: 'View details',\n      selectDate: 'Select a date',\n      opensInNewTab: 'Opens in new tab',\n      skipLink: 'Skip to main content',\n      selectPicture: 'Select a picture',\n      moveDown: 'Move down',\n      moveUp: 'Move up',\n      exportAsFormat: 'Export as',\n      openMenuWidget: 'Restitution menu',\n      search: 'Search',\n      upload: 'Add image',\n      next: 'Next',\n      back: 'Back',\n      filterByType: 'Filter by type'\n    },\n    snack: {\n      default: 'Vega encountered an error using your data and settings.',\n      missingParent: 'A parent node is missing in your dataset. Please fix your data.',\n      missingValue: 'An item is missing the value field. Please fix your data.',\n      emptyValues: 'Field values cannot be all at 0. Please fix your data.',\n      pagesChanged: 'Attention, le nombre de pages de votre présentation a changé, que souhaitez-vous faire ?',\n      imageNameAlreadyUsed: 'This image name is already used'\n    },\n    theme: {\n      editInput: {\n        toggle: 'Edit'\n      },\n      previousMonth: 'Previous month',\n      nextMonth: 'Next month',\n      weekdays: {\n        0: 'Monday',\n        1: 'Tuesday',\n        2: 'Wednesday',\n        3: 'Thursday',\n        4: 'Friday',\n        5: 'Saturday',\n        6: 'Sunday'\n      },\n      shortWeekdays: {\n        0: 'Mon',\n        1: 'Tue',\n        2: 'Wed',\n        3: 'Thu',\n        4: 'Fri',\n        5: 'Sat',\n        6: 'Sun'\n      },\n      months: {\n        0: 'January',\n        1: 'February',\n        2: 'March',\n        3: 'April',\n        4: 'May',\n        5: 'June',\n        6: 'July',\n        7: 'August',\n        8: 'September',\n        9: 'October',\n        10: 'November',\n        11: 'December'\n      }\n    },\n    share: {\n      private: 'Private',\n      public: 'Public',\n      restricted: 'Restricted',\n      type: 'Visibility',\n      users: 'Authorized users'\n    },\n    homepage: {\n      menu: {\n        model: 'Data model',\n        data: 'Data access'\n      }\n    },\n    metadata: {\n      view: 'View metadata'\n    },\n    errors: {\n      default: 'There is an error. Try again or contact your administrator',\n      codes: {\n        0: 'An error occurred on client-side. This may be caused by CORS, network error, ... Resource cannot be reached.',\n        400: 'An error occurred.',\n        401: 'Session expired. Try to reconnect!',\n        403: 'Access unauthorized',\n        404: 'Ressource not found',\n        409: 'Ressource already exist',\n        500: 'An error occurred.',\n        503: 'Service unavailable. try again later!'\n      }\n    },\n    filters: {\n      label: 'Filters settings',\n      noAttributes: 'Presentation had no available attributes',\n      noFilters: 'No filters set up for this presentation yet.',\n      list: {\n        attributes: 'Attributes: ',\n        add: 'Add filter',\n        delete: 'Delete',\n        modify: 'Modify'\n      },\n      creation: {\n        create: 'New filter',\n        update: 'Edit filter',\n        name: 'Filter name',\n        type: 'Filter type',\n        filter: 'Filter',\n        attributes: 'Attributes',\n        value: 'Value',\n        values: 'Values',\n        validate: 'Confirm'\n      },\n      attributes: {\n        datasource: 'Datasource',\n        class: 'Classe',\n        operator: 'Operator'\n      },\n      types: {\n        text: 'Text',\n        date: 'Date',\n        list: 'List',\n        number: 'Number'\n      }\n    }\n  }\n};\n","export const frTranslations = {\n  '@yap': {\n    header: {\n      noCurrentPresentation: 'Présentation non sauvegardée'\n    },\n    widget: {\n      noData: 'Aucune source de données sélectionnée',\n      unrecognized: 'La restitution de type {{type}} est inconnu.',\n      addedInView: 'La restitution a été ajoutée sur la page n°{{index}}',\n      updatedInView: 'La restitution a été mise à jour sur la page n°{{index}}',\n      settings: {\n        title: 'Paramétrage',\n        validateUpdating: 'Valider la modification'\n      },\n      defineCatalog: 'Définissez votre entrée de catalogue',\n      buttonChoice: 'Sélectionner une restitution',\n      tooltip: {\n        openParameter: 'Ouvrir les paramètres',\n        params: 'Paramétrer la vue de votre restitution',\n        readSearch: 'Choisir les données',\n        deleteWidget: 'Supprimer votre restitution',\n        catalogWidget: 'Ajouter au catalogue',\n        changeSpot: \"Changer d'emplacement\",\n        spotName: 'Emplacement n°{{place}}'\n      },\n      target: {\n        new: 'Ouvrir dans une nouvelle page',\n        existing: 'Ouvrir dans la page n°{{targetIndex}}',\n        delete: 'Supprimer',\n        maximize: 'Maximiser',\n        none_auto: 'Insérez ici vos restitutions',\n        none_manual: 'Glisser - Déposer'\n      },\n      namedQuery: {\n        defaultRs: 'Recherche courante',\n        resultsAccurate: '{{total}}',\n        resultsNonAccurate: '{{displayed}} sur environ {{total}}'\n      },\n      modalTitle: 'Voulez-vous confirmer ?',\n      itemId: 'Id',\n      class: 'Classe'\n    },\n    view: {\n      name: 'Page n°{{rank}}'\n    },\n    toolbox: {\n      defaultSize: 'Taille de restitution',\n      manifest: {\n        name: 'Nom de la présentation',\n        description: 'Description de la présentation',\n        saved: 'Présentation {{viewId}} sauvegardée',\n        saveErrorCode: {\n          FORBIDDEN: \"Vous n'êtes pas le propriétaire de cette présentation \",\n          NAME_ALREADY_USED: 'Une présentation avec le nom \"{{name}}\" existe déjà, veuillez sélectionner un autre nom.'\n        },\n        defaulted: 'Présentation {{viewId}} marquée par défaut',\n        undefaulted: \"La présentation {{viewId}} n'est plus marquée par défaut\",\n        validated: 'Valider',\n        check: 'Enregistrer',\n        close: 'Annuler',\n        validate: 'Valider'\n      },\n      catalog: {\n        title: 'Personnalisés',\n        label: 'Nom',\n        description: 'Description',\n        icon: 'Image',\n        filter: {\n          delete: 'Supprimer ce filtre',\n          type: 'Filtrer par type',\n          name: 'Filtrer par nom'\n        },\n        saveErrorCode: {\n          NAME_ALREADY_USED: 'Une restitution avec le nom \"{{name}}\" existe déjà, veuillez sélectionner un autre nom.'\n        },\n        saved: 'Présentation {{viewId}} sauvegardée'\n      },\n      edit: 'Modifier la disposition',\n      editOff: 'Visualiser la disposition',\n      launch: 'Nouvelle page',\n      launchIndication: 'Ouvrir cette page dans un',\n      chooseGrid: 'Changer la grille',\n      clear: \"Vider l'affichage\",\n      close: 'Fermer',\n      heatmap: 'Fréquentation',\n      bubblemap: 'Bulles',\n      markermap: 'Marqueurs',\n      map: 'Carte',\n      table: 'Tableau',\n      detail: 'Détail',\n      chart: 'Graphique',\n      resultSet: 'Recherches nommées',\n      saveView: 'Enregistrer sous',\n      rename: 'Enregistrer sous',\n      restore: 'Restaurer les pages',\n      save: 'Enregistrer',\n      drag: 'Restitution...',\n      dragIndication: 'Insérer un',\n      barchart: 'Barres',\n      histogram: 'Histogramme',\n      linechart: 'Courbe',\n      pointchart: 'Points',\n      areachart: 'Aire',\n      arcchart: 'Circulaire',\n      radarchart: 'Radar',\n      circlechart: 'Paquets de cercles',\n      iframe: 'Application externe',\n      graph: 'Relations',\n      placeholder: '',\n      sub: {\n        map: 'Cartographie',\n        chart: 'Graphique',\n        other: 'Autre'\n      },\n      tile: 'Tuiles',\n      now: \"Aujourd'hui\",\n      since_day: 'Il y a {{day}} jours',\n      layout: {\n        '0': 'Composition libre',\n        '0_detailled':\n          \"Affichage en mode libre, la taille et le positionnement des restitutions sont entièrement paramétrables par l'utilisateur.\",\n        '1': 'Plein écran',\n        '1_detailled':\n          \"Affichage d’une seule restitution sur l'ensemble de l'écran, le placement est guidé par le système.\",\n        '1/2v': '1/2 écran vertical',\n        '1/2v_detailled':\n          \"Affichage de 2 restitutions maximum sur l'écran découpé en deux zones verticales, l'ajout de restitution se fait dans les zones vides. Le placement est guidé par le système.\",\n        '1/2h': '1/2 écran horizontal',\n        '1/2h_detailled':\n          \"Affichage de 2 restitutions maximum sur l’écran découpé en deux zones horizontales, l'ajout de restitution se fait dans les zones vides. Le placement est guidé par le système.\",\n        '1/3v': '1/3 écran vertical',\n        '1/3v_detailled':\n          \"Affichage de 3 restitutions maximum sur l’écran découpé en trois zones verticales, l'ajout de restitution se fait dans les zones vides. Le placement est guidé par le système.\",\n        '1/3h': '1/3 écran horizontal',\n        '1/3h_detailled':\n          \"Affichage de 3 restitutions maximum sur l’écran découpé en trois zones horizontales, l'ajout de restitution se fait dans les zones vides. Le placement est guidé par le système.\",\n        '1/4': '1/4 écran',\n        '1/4_detailled':\n          \"Affichage de 4 restitutions maximum sur l’écran découpé en quatre zones , l'ajout de restitution se fait dans les zones vides. Le placement est guidé par le système.\"\n      }\n    },\n    manifest: {\n      name: 'Nom',\n      description: 'Description',\n      creation: 'Date de création',\n      modification: 'Date de modification',\n      actions: 'Actions',\n      import: 'Importer',\n      importAlt: 'Importer une présentation',\n      title: 'Présentations',\n      get: {\n        errorFront: 'Erreur client : {{msg}}',\n        errorBack: 'Erreur serveur de code [{{code}}]'\n      },\n      default: 'Définir par défaut',\n      download: 'Télécharger',\n      load: 'Charger',\n      delete: 'Supprimer',\n      deleteError:\n        \"Recherche utilisée dans une ou plusieurs restitution(s), veuillez supprimer les utilisations d'abord\"\n    },\n    format: {\n      date: 'dd/MM/yyyy',\n      datetime: 'dd/MM/yyyy HH:mm:ss',\n      decimal: ',',\n      thousands: ' '\n    },\n    context: {\n      add: 'Ajouter à la sélection',\n      remove: 'Enlever de la sélection',\n      link: 'Lier à la sélection',\n      invert: 'Inverser la sélection',\n      proximity: 'Rechercher les objets liés',\n      explore: 'Ouvrir la restitution Relations',\n      detail: 'Ouvrir la restitution Détail',\n      flyingDetail: \"Consulter l'objet\",\n      addressFromLoc: \"Obtenir l'adresse\",\n      errorSearchAddress: 'Adresse introuvable',\n      cancel: 'Annuler',\n      create: 'Créer',\n      createObject: {\n        title: {\n          object: 'Créer un objet',\n          link: 'Créer une relation',\n          inversion: 'Inverser la relation',\n          linkedObject: 'Créer un objet lié'\n        },\n        class: \"Classe de l'objet\",\n        link: 'Relation avec le nouvel objet',\n        created: \"L'objet a été créé\",\n        details: 'Voir le détail',\n        addMultiField: 'Ajouter une valeur de {{name}}'\n      }\n    },\n    action: {\n      close: 'Fermer',\n      closePanel: 'Fermer le panneau',\n      delete: 'Supprimer',\n      edit: 'Editer',\n      editProfil: 'Editer le profil',\n      choice: 'Choisir un ....',\n      choiceInList: 'Choisir un élément dans la liste',\n      text: 'Remplisser le champ',\n      sortableColumnHeader: \"Utilisez les boutons d'en-tête de colonne pour trier.\",\n      viewDetails: 'Voir les détails',\n      selectDate: 'Choisir une date',\n      opensInNewTab: \"S'ouvre dans une nouvelle fenêtre\",\n      skipLink: 'Aller au contenu',\n      selectPicture: 'Sélectionner une image',\n      moveDown: 'Déplacer vers le bas',\n      moveUp: 'Déplacer vers le haut',\n      exportAsFormat: 'Exporter au format',\n      openMenuWidget: 'Menu de la restitution',\n      search: 'Rechercher',\n      upload: 'Ajouter une image',\n      next: 'Suivant',\n      back: 'Retour',\n      filterByType: 'Filtrer par type'\n    },\n    snack: {\n      default: 'Vega a rencontré une erreur en utilisant vos données et paramétrage.',\n      missingParent: \"Un noeud est manquant dans l'arbre de représentation. Merci de corriger vos données.\",\n      missingValue: \"Un item à afficher ne possède pas l'attribut à afficher. Merci de corriger vos données.\",\n      emptyValues: \"Les valeurs de l'attribut à afficher ne peuvent être toutes nulles. Merci de corriger vos données.\",\n      pagesChanged: 'Attention, le nombre de pages de votre présentation a changé, que souhaitez-vous faire ?',\n      imageNameAlreadyUsed: 'Le nom de cette image est déjà utilisé'\n    },\n    theme: {\n      editInput: {\n        toggle: 'Editer'\n      },\n      previousMonth: 'Mois précédent',\n      nextMonth: 'Mois suivant',\n      weekdays: {\n        0: 'Lundi',\n        1: 'Mardi',\n        2: 'Mercredi',\n        3: 'Jeudi',\n        4: 'Vendredi',\n        5: 'Samedi',\n        6: 'Dimanche'\n      },\n      shortWeekdays: {\n        0: 'Lu',\n        1: 'Ma',\n        2: 'Me',\n        3: 'Je',\n        4: 'Ve',\n        5: 'Sa',\n        6: 'Di'\n      },\n      months: {\n        0: 'Janvier',\n        1: 'Février',\n        2: 'Mars',\n        3: 'Avril',\n        4: 'Mai',\n        5: 'Juin',\n        6: 'Juillet',\n        7: 'Août',\n        8: 'Septembre',\n        9: 'Octobre',\n        10: 'Novembre',\n        11: 'Décembre'\n      }\n    },\n    share: {\n      private: 'Privé',\n      public: 'Public',\n      restricted: 'Restreint',\n      type: 'Visibilité',\n      users: 'Utilisateurs autorisés'\n    },\n    homepage: {\n      menu: {\n        model: 'Modèle de données',\n        data: 'Accès aux données'\n      }\n    },\n    metadata: {\n      view: 'Consulter les metadonnées'\n    },\n    errors: {\n      default:\n        'Une erreur est survenue. Veuillez vérifiez les informations ou contacter votre administrateur si le problème persiste',\n      codes: {\n        0: 'Une erreur est survenue au niveau navigateur. Cela peut-être une erreur CORS, de réseau ... La ressource ne peut pas être récupérée.',\n        400: 'Une erreur est survenue.',\n        401: 'Votre session est invalide. Essayez de vous reconnecter !',\n        403: \"Vous n'avez pas les droits pour consulter cette ressource\",\n        404: \"La ressource demandée n'existe pas\",\n        409: 'Une ressource similaire existe déjà',\n        500: 'Une erreur est survenue.',\n        503: 'Le service est actuellement indisponible. Réessayer ultérieurement !'\n      }\n    },\n    filters: {\n      label: 'Paramétrer les filtres',\n      noAttributes: \"La présentation en cours ne dispose d'aucune attribut sur lequel filtrer\",\n      noFilters: \"Vous n'avez pas encore paramétré de filtre.\",\n      list: {\n        attributes: 'Attributs: ',\n        add: 'Créer un filtre',\n        delete: 'Supprimer',\n        modify: 'Modifier'\n      },\n      creation: {\n        create: 'Nouveau filtre',\n        update: 'Modifier un filtre',\n        name: 'Nom du filtre',\n        type: 'Type du filtre',\n        filter: 'Filtre',\n        attributes: 'Attributs',\n        value: 'Valeur',\n        values: 'Valeurs',\n        validate: 'Valider'\n      },\n      attributes: {\n        datasource: 'Datasource',\n        class: 'Classe',\n        operator: 'Opérateur'\n      },\n      types: {\n        text: 'Texte',\n        date: 'Date',\n        list: 'Liste',\n        number: 'Numérique'\n      }\n    }\n  }\n};\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { deepMerge } from './deep-merge.function';\nimport { enTranslations } from './en.translations';\nimport { frTranslations } from './fr.translations';\n\nexport type LangObject = { [obj: string]: LangObject | string };\n\nexport type Translation = { [key: string]: string | Translation };\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class YapI18nService {\n  static warn = true;\n  langObjects = {\n    fr: {},\n    en: {}\n  } as { [lang: string]: { [obj: string]: Object } };\n  currentLang = 'en';\n  parameterRegexp = new RegExp(/{{(.*?)}}/gm);\n\n  translations$ = new BehaviorSubject<Translation>({});\n\n  constructor() {\n    // @ts-ignore\n    this.currentLang = (navigator.language || navigator.userLanguage).split('-')[0];\n  }\n\n  updateTranslations() {\n    this.translations$.next({});\n    Object.values(this.langObjects[this.currentLang]).forEach((obj) =>\n      this.translations$.next(deepMerge(obj, this.translations$.getValue()))\n    );\n  }\n\n  use(lang: string) {\n    if (this.langObjects[lang]) {\n      this.currentLang = lang;\n    } else {\n      console.error(`Lang ${lang} is not available. Choose amongst ${Object.keys(this.langObjects)}.`);\n      this.currentLang = 'en';\n    }\n    this.updateTranslations();\n  }\n\n  addCoreTranslations() {\n    this.addLangObject('fr', 'core', frTranslations);\n    this.addLangObject('en', 'core', enTranslations);\n  }\n\n  addLangObject(lang: string, type: string, obj: Object) {\n    if (!this.langObjects[lang]) {\n      this.langObjects[lang] = {};\n    }\n    this.langObjects[lang][type] = deepMerge(this.langObjects[lang][type] ?? {}, obj);\n    this.updateTranslations();\n  }\n\n  instantObject(key: string, params?: { [key: string]: any }): any {\n    const keySplit = key.split('.');\n    let response = this.translations$.getValue() as LangObject | string;\n    for (let i = 0; i < keySplit.length; i++) {\n      if (response && typeof response !== 'string') {\n        response = response[keySplit[i]];\n      }\n    }\n    return response;\n  }\n\n  instant(key: string, params?: { [key: string]: any }): string {\n    let response = this.instantObject(key, params);\n    if (typeof response === 'string') {\n      const matches = response.match(this.parameterRegexp);\n      matches?.forEach((match) => {\n        const matchParam = match.substring(2, match.length - 2);\n        const replaceRegexp = new RegExp(match, 'g');\n        const valueOfParam = params ? params[matchParam] : match;\n        if (valueOfParam !== undefined) {\n          response = (response as string).replace(replaceRegexp, valueOfParam);\n        }\n      });\n      return response as string;\n    } else {\n      if (YapI18nService.warn) {\n        console.warn(`Key ${key} has not been found in translations for lang ${this.currentLang}.`);\n      }\n      return key;\n    }\n  }\n\n  get(key: string, params?: { [key: string]: any }): Observable<string> {\n    return this.translations$.pipe(map((translations) => this.instant(key, params)));\n  }\n}\n","import { ChangeDetectorRef, Pipe, PipeTransform } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { YapI18nService } from './i18n.service';\n\n@Pipe({\n  name: 'i18n'\n})\nexport class I18nPipe implements PipeTransform {\n  value: string = '';\n  key: string | null = null;\n  params: any[] = [];\n  waitSubscription?: Subscription;\n\n  constructor(private translateService: YapI18nService, private _ref: ChangeDetectorRef) {}\n\n  transform(value: string, ...args: any[]): string {\n    if (value === this.key && JSON.stringify(args) === JSON.stringify(this.params)) {\n      return this.value;\n    }\n    this.key = value;\n    this.params = args;\n\n    this.value = this.translateService.instant(value, args[0] as { [key: string]: any });\n\n    if (this.value === this.key) {\n      // Not translated, maybe we must wait\n      this.waitSubscription = this.translateService.get(value, args[0]).subscribe((value) => {\n        if (value !== value) {\n          this.value = value;\n          this._ref.markForCheck();\n          setTimeout(() => {\n            this.waitSubscription?.unsubscribe();\n          }, 10);\n        }\n      });\n    }\n\n    return this.value;\n  }\n}\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { SubscriptionnerDirective } from '../../../dashboard/components/subscriptionner.directive';\n\nexport interface BaseMenuItem {\n  menu: string;\n  module?: string;\n  page?: string;\n  subMenu?: string;\n}\nexport interface SubMenu {\n  name?: string;\n  icon: string;\n  subMenus: BaseMenuItem[];\n}\n\n@Component({\n  selector: 'yap-base-menu',\n  templateUrl: './base-menu.component.html'\n})\nexport class BaseMenuComponent extends SubscriptionnerDirective {\n  baseMenuTranslation = '';\n  menus$?: Observable<BaseMenuItem[]>;\n  subMenu$?: Observable<SubMenu[]>;\n  highlightedMenu$?: Observable<string>;\n\n  constructor(protected store: Store<any>) {\n    super();\n    this.init();\n  }\n\n  select(menu: string): void {\n    console.error('Must override select function');\n  }\n\n  init(): void {\n    console.error('Must override init function');\n  }\n}\n","<nav class=\"m-nav-links\">\n  <ng-container *ngFor=\"let sub of subMenu$ | async\">\n    <ul class=\"m-nav-links__list\">\n      <ng-container *ngFor=\"let menu of sub.subMenus\">\n        <li\n          *yapAccess=\"{ module: menu.module, page: menu.page, subMenu: menu.subMenu }\"\n          class=\"m-nav-links__list__item\"\n        >\n          <a [routerLink]=\"menu.menu\" class=\"a-btn a-btn--secondary -width-full\" [routerLinkActive]=\"'is-active'\">\n            {{ baseMenuTranslation + menu.menu | i18n }}\n          </a>\n        </li>\n      </ng-container>\n    </ul>\n  </ng-container>\n  <ng-container *ngIf=\"menus$ | async as menus\">\n    <ng-container *ngIf=\"menus.length > 0\">\n      <ul class=\"m-nav-links__list\">\n        <ng-container *ngFor=\"let menu of menus\">\n          <ng-container *ngIf=\"menu.module === 'supervision'\">\n            <li *yapAccess=\"{ module: menu.module, page: menu.page }\" class=\"m-nav-links__list__item\">\n              <a [routerLink]=\"menu.menu\" class=\"a-btn a-btn--secondary -width-full\" [routerLinkActive]=\"'is-active'\">\n                {{ baseMenuTranslation + menu.menu | i18n }}\n              </a>\n            </li>\n          </ng-container>\n        </ng-container>\n      </ul>\n    </ng-container>\n  </ng-container>\n</nav>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\n@Component({\n  selector: 'yap-icon',\n  templateUrl: './icon.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YapIconComponent implements OnChanges {\n  @HostBinding('style') baseStyle: SafeStyle;\n  @Input() color: 'primary' | 'accent' | null = null;\n  @Input() iconSvg?: string | null;\n  @Input() animation = true;\n  private _iconSvg?: string | null;\n  get iconSvgUrl(): string | undefined {\n    return this._iconSvgUrl;\n  }\n  private _iconSvgUrl?: string;\n\n  @Input() iconImage?: string | null;\n  private _iconImage?: string | null;\n  get iconImageUrl(): string | undefined {\n    return this._iconImageUrl;\n  }\n  private _iconImageUrl?: string;\n\n  @Input() alt?: string = 'yap-icon';\n\n  @Input() set width(val: number) {\n    this._width = val;\n    this.setHostStyles();\n  }\n  get width(): number {\n    return this._width;\n  }\n  private _width = 24;\n  @Input() set height(val: number) {\n    this._height = val;\n    this.setHostStyles();\n  }\n  get height(): number {\n    return this._height;\n  }\n  private _height = 24;\n  // set classes on icon for styling\n  @Input() set classes(val: string) {\n    this._classes = val;\n  }\n  get classes(): string {\n    return this._classes;\n  }\n  private _classes = '';\n\n  constructor(private sanitizer: DomSanitizer) {\n    const safeStyle = `width: ${this._width}px; height: ${this._height}px;`;\n    this.baseStyle = this.sanitizer.bypassSecurityTrustStyle(safeStyle);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const iconSvg = changes['iconSvg'];\n    if (iconSvg) {\n      this._iconSvg = iconSvg.currentValue;\n    }\n    const iconImage = changes['iconImage'];\n    if (iconImage) {\n      this._iconImage = iconImage?.currentValue;\n    }\n    if (this._iconSvg) {\n      this._iconSvgUrl = `assets/svgs/${this._iconSvg}.svg`;\n      this._iconImageUrl = undefined;\n    } else if (this._iconImage) {\n      this._iconImageUrl = `assets/images/${this._iconImage}`;\n      this._iconSvgUrl = undefined;\n    }\n  }\n\n  private setHostStyles(): void {\n    const safeStyle = `width: ${this._width}px; height: ${this._height}px;`;\n    this.baseStyle = this.sanitizer.bypassSecurityTrustStyle(safeStyle);\n  }\n}\n","<ng-container *ngIf=\"iconSvgUrl\">\n  <span\n    class=\"a-icon\"\n    [ngClass]=\"color!\"\n    [ngClass]=\"classes\"\n    [ngStyle]=\"{\n      'width.px': width,\n      'height.px': height,\n      'mask-image': 'url(' + iconSvgUrl + ')',\n      '-webkit-mask-image': 'url(' + iconSvgUrl + ')'\n    }\"\n    aria-hidden=\"true\"\n    focusable=\"false\"\n  ></span>\n</ng-container>\n<ng-container *ngIf=\"iconImageUrl\">\n  <img class=\"a-icon-img\" [src]=\"iconImageUrl\" [style.height.px]=\"height\" [style.width.px]=\"width\" [alt]=\"alt\" />\n</ng-container>\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BaseToolboxAction } from '../base-toolbox/base-toolbox-action.interface';\n\n@Component({\n  selector: 'yap-base-toolbox-action',\n  templateUrl: './base-toolbox-action.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BaseToolboxActionComponent {\n  private readonly connectedPositionAction: ConnectedPosition = {\n    originX: 'center',\n    originY: 'bottom',\n    overlayX: 'center',\n    overlayY: 'top'\n  };\n  private readonly connectedPositionIconAction: ConnectedPosition = {\n    originX: 'center',\n    originY: 'bottom',\n    overlayX: 'end',\n    overlayY: 'top'\n  };\n\n  @Input() baseToolboxTranslation = '';\n  @Input() action!: BaseToolboxAction;\n\n  @Input() set iconAction(val: boolean) {\n    this._iconAction = val;\n    this.connectedPositions = [this._iconAction ? this.connectedPositionIconAction : this.connectedPositionAction];\n    this._cd.markForCheck();\n  }\n\n  get iconAction(): boolean {\n    return this._iconAction;\n  }\n\n  private _iconAction = false;\n\n  connectedPositions: ConnectedPosition[] = [this.connectedPositionAction];\n  panelOpen = false;\n\n  constructor(protected store: Store<any>, private _cd: ChangeDetectorRef) {}\n\n  select(toolboxAction: BaseToolboxAction): void {\n    if (toolboxAction.action) {\n      this.store.dispatch(toolboxAction.action);\n      this.panelOpen = false;\n    } else {\n      this.panelOpen = true;\n    }\n    this._cd.markForCheck();\n  }\n\n  onClosePanel() {\n    this.panelOpen = false;\n    this._cd.markForCheck();\n  }\n}\n","<ng-container *ngIf=\"action\">\n  <ul>\n    <li class=\"m-actions-list__item\" (click)=\"select(action)\" cdkOverlayOrigin #origin=\"cdkOverlayOrigin\">\n      <button class=\"a-btn a-btn--secondary\" [class.is-active]=\"panelOpen\" [disabled]=\"action.disabled\">\n        <ng-container *ngIf=\"!iconAction; else iconActionTpl\">\n          <yap-icon *ngIf=\"action.icon\" [iconSvg]=\"action.icon\"></yap-icon>\n          {{ baseToolboxTranslation + action.label | i18n }}\n          <yap-icon *ngIf=\"action.actions\" iconSvg=\"fleche_bas\"></yap-icon>\n        </ng-container>\n        <ng-template #iconActionTpl>\n          <yap-icon\n            *ngIf=\"action.icon\"\n            [iconSvg]=\"action.icon\"\n            [title]=\"baseToolboxTranslation + action.label | i18n\"\n          ></yap-icon>\n        </ng-template>\n      </button>\n    </li>\n  </ul>\n  <ng-template\n    cdkConnectedOverlay\n    cdkConnectedOverlayHasBackdrop\n    cdkConnectedOverlayLockPosition\n    cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n    [cdkConnectedOverlayOrigin]=\"origin\"\n    [cdkConnectedOverlayOpen]=\"panelOpen\"\n    [cdkConnectedOverlayPositions]=\"connectedPositions\"\n    (backdropClick)=\"onClosePanel()\"\n  >\n    <div class=\"m-yap-overlay-panel-wrapper\">\n      <div class=\"m-yap-overlay-panel\">\n        <ng-container *ngFor=\"let act of action.actions\">\n          <button class=\"m-yap-overlay-panel-item\" (click)=\"select(act)\">\n            {{ baseToolboxTranslation + act.label | i18n }}\n          </button>\n        </ng-container>\n      </div>\n    </div>\n  </ng-template>\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseToolboxAction } from './base-toolbox-action.interface';\n\n@Component({\n  selector: 'yap-base-toolbox',\n  templateUrl: './base-toolbox.component.html'\n})\nexport class BaseToolboxComponent {\n  @Input() baseToolboxTranslation = '';\n  @Input() actions$?: Observable<BaseToolboxAction[]>;\n  @Input() subActions$?: Observable<BaseToolboxAction[]>;\n}\n","<div class=\"o-base-layout__toolbox__actions\">\n  <ul class=\"m-actions-list\">\n    <ng-container *ngFor=\"let action of actions$ | async\">\n      <yap-base-toolbox-action\n        *yapAccess=\"{ module: action.moduleAccess, page: action.pageAccess, action: action.actionAccess }\"\n        [action]=\"action\"\n        [baseToolboxTranslation]=\"baseToolboxTranslation\"\n      >\n      </yap-base-toolbox-action>\n    </ng-container>\n  </ul>\n\n  <ul class=\"m-actions-list\">\n    <ng-container *ngFor=\"let action of subActions$ | async\">\n      <yap-base-toolbox-action\n        *yapAccess=\"{ module: action.moduleAccess, page: action.pageAccess, action: action.actionAccess }\"\n        [action]=\"action\"\n        [baseToolboxTranslation]=\"baseToolboxTranslation\"\n        [iconAction]=\"true\"\n      >\n      </yap-base-toolbox-action>\n    </ng-container>\n  </ul>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { BusinessData, Class } from './class.interface';\nimport { DatasetCount } from '../../model/dataset.interface';\n\nexport const ClassActions = {\n  load: createAction('[Class] Load Classes'),\n  loadSuccess: createAction('[Class Api] (bus) Load Classes Success', props<{ classes: Class[] }>()),\n  loadFailure: createAction('[Class Api] Load Classes Failure', props<{ error: string }>()),\n  loadBusinessData: createAction('[Class Api] Load BusinessData'),\n  loadBusinessDataSuccess: createAction('[Class Api] Load BusinessData Success', props<{ datas: BusinessData[] }>()),\n  loadBusinessDataFailure: createAction('[Class Api] Load BusinessData Failure', props<{ error: any }>()),\n  loadDatasetCount: createAction('[Class Api] Load DatasetCount'),\n  loadDatasetCountSuccess: createAction(\n    '[Class Api] Load DatasetCount Success',\n    props<{\n      datasetCounts: DatasetCount[];\n    }>()\n  ),\n  loadDatasetCountFailure: createAction(\n    '[Class Api] Load DatasetCount Failure',\n    props<{\n      error: any;\n    }>()\n  )\n};\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { ClassActions } from './class.actions';\nimport { BusinessData, Class } from './class.interface';\nimport { DatasetCount } from '../../model/dataset.interface';\n\nexport const classesFeatureKey = '@yap/model/classes';\n\nexport interface ClassState extends EntityState<Class> {\n  // additional entities state properties\n  loading: boolean;\n  classDatas: BusinessData[];\n  datasetCounts: DatasetCount[];\n}\n\nexport function sortByName(a: Class, b: Class): number {\n  return a.name.localeCompare(b.name);\n}\n\nexport const adapter: EntityAdapter<Class> = createEntityAdapter<Class>({\n  sortComparer: sortByName\n});\n\nexport const initialClassState: ClassState = adapter.getInitialState({\n  // additional entity state properties\n  loading: false,\n  classDatas: [],\n  datasetCounts: []\n});\n\nconst internalReducer = createReducer(\n  initialClassState,\n  on(ClassActions.loadSuccess, (state, action) => adapter.setAll(action.classes, state)),\n  on(ClassActions.loadBusinessData, (state, action) => ({\n    ...state,\n    loading: true\n  })),\n  on(ClassActions.loadBusinessDataSuccess, (state, action) => ({\n    ...state,\n    loading: false,\n    classDatas: action.datas\n  })),\n  on(ClassActions.loadBusinessDataFailure, (state, action) => ({\n    ...state,\n    loading: false\n  })),\n  on(ClassActions.loadDatasetCount, (state, action) => ({\n    ...state,\n    loading: true\n  })),\n  on(ClassActions.loadDatasetCountSuccess, (state, action) => ({\n    ...state,\n    loading: false,\n    datasetCounts: action.datasetCounts\n  })),\n  on(ClassActions.loadDatasetCountFailure, (state, action) => ({\n    ...state,\n    loading: false\n  }))\n);\n\nexport const { selectIds, selectEntities, selectAll, selectTotal } = adapter.getSelectors();\n\nexport function classReducer(state: ClassState, action: Action) {\n  return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { Class } from './class.interface';\nimport * as fromClass from './class.reducer';\n\nconst feature = createFeatureSelector<fromClass.ClassState>(fromClass.classesFeatureKey);\nconst entities = createSelector(feature, fromClass.selectEntities);\nconst classes = createSelector(feature, fromClass.selectAll);\nconst memoizeClassById = {} as any;\nconst classById = (id: string) => {\n  if (!memoizeClassById[id]) {\n    memoizeClassById[id] = createSelector(entities, (entities: { [x: string]: any }) => entities[id]);\n  }\n  return memoizeClassById[id];\n};\nconst classByAttributeId = (attribute: string) =>\n  createSelector(classes, (classes: Class[]) =>\n    classes.find((c) => c.attributes.find((a) => a.id === attribute) !== undefined)\n  );\n\nconst attributesByFieldId = (field: string) =>\n  createSelector(classes, (classes: Class[]) =>\n    classes.map((c) => c.attributes.filter((a) => a.field === field)).reduce((acc, attrs) => [...acc, ...attrs], [])\n  );\n\nconst allAttributes = createSelector(classes, (state) => state?.flatMap((c) => c.attributes));\nconst classDatas = createSelector(feature, (state) => state?.classDatas);\nconst datasetCounts = createSelector(feature, (state) => state?.datasetCounts);\nconst getAttributeById = (id: string) =>\n  createSelector(allAttributes, (attributes) => attributes.filter((attribute) => attribute.id === id));\n\nexport const ClassSelectors = {\n  feature,\n  entities,\n  classes,\n  classById,\n  classByAttributeId,\n  attributesByFieldId,\n  allAttributes,\n  classDatas,\n  datasetCounts,\n  getAttributeById\n};\n","import { createAction, props } from '@ngrx/store';\nimport { YapVisibility } from '../../core/components/share/share.model';\nimport { YapSnackMessage } from '../../core/components/snackbar/snack.interface';\nimport { Filter } from '../../core/model/filter.interface';\nimport { Item } from '../../core/model/item.interface';\nimport {\n  DashboardGridLayout,\n  DashboardManifest,\n  GlobalManifest,\n  ManifestDescription,\n  WidgetManifest\n} from '../../core/model/manifest.interface';\nimport { Relation } from '../../core/model/relation.interface';\nimport { OrderValue } from '../../core/model/result-order.interface';\nimport { ResultSet, ResultSets } from '../../core/model/result-set.interface';\n\nexport type DashboardCellParams = {\n  gridWidth: number;\n  gridHeight: number;\n  gridGap: number;\n  columns: number;\n  cellHeight: number;\n  rows: number;\n  cellWidth: number;\n  offsetLeft: number;\n  offsetTop: number;\n  mobileMode: boolean;\n};\n\nexport enum ViewMode {\n  CATALOG = 'catalog',\n  CONSULT = 'consult',\n  CREATION = 'creation',\n  EDITION = 'edition',\n  EDITOR = 'editor'\n}\n\nexport const DashboardActions = {\n  join: createAction('[Dashboard] joined', props<{ sender: string }>()),\n  leave: createAction('[Dashboard] leave', props<{ sender: string }>()),\n  updateManifest: createAction(\n    '[Dashboard] (bus) updating manifest',\n    props<{\n      tenants?: string[];\n      manifest: GlobalManifest;\n      resultSets?: ResultSets;\n      joining?: boolean;\n      manifestId?: string;\n      selectedIds: string[];\n    }>()\n  ),\n  updateManifestAfterFetch: createAction(\n    '[Dashboard] (bus) updating manifest after fetch',\n    props<{\n      tenants?: string[];\n      manifest: GlobalManifest;\n      resultSets?: ResultSets;\n      joining?: boolean;\n      manifestId?: string;\n      selectedIds: string[];\n    }>()\n  ),\n  updateManifestWithoutActivation: createAction(\n    '[Dashboard] (bus) updating manifest but do not activate it',\n    props<{\n      tenants?: string[];\n      manifest: GlobalManifest;\n      resultSets?: ResultSets;\n      joining?: boolean;\n      manifestId?: string;\n      selectedIds: string[];\n    }>()\n  ),\n  updateManifestAfterResize: createAction(\n    '[Dashboard] (bus) updating manifest after resize',\n    props<{\n      tenants?: string[];\n      manifest: GlobalManifest;\n      resultSets?: ResultSets;\n      joining?: boolean;\n      manifestId?: string;\n      selectedIds: string[];\n    }>()\n  ),\n  updateManifestAfterTenantJoin: createAction(\n    '[Dashboard] (bus) updating manifest after tenant join',\n    props<{\n      tenants?: string[];\n      manifest: GlobalManifest;\n      resultSets?: ResultSets;\n      joining?: boolean;\n      manifestId?: string;\n      selectedIds: string[];\n      presentation?: { current?: ManifestDescription; initial?: GlobalManifest; viewMode?: ViewMode };\n    }>()\n  ),\n  updateManifestAfterTenantLeave: createAction(\n    '[Dashboard] (bus) updating manifest after tenant leave',\n    props<{\n      tenants?: string[];\n      manifest: GlobalManifest;\n      resultSets?: ResultSets;\n      joining?: boolean;\n      manifestId?: string;\n      selectedIds: string[];\n    }>()\n  ),\n  selectPresentation: createAction(\n    '[Dashboard] (bus) selectPresentation',\n    props<{\n      presentation: ManifestDescription | undefined;\n      viewMode: ViewMode;\n    }>()\n  ),\n  setInitialPresentation: createAction(\n    '[Dashboard] (bus) set initial presentation',\n    props<{\n      initial: GlobalManifest;\n    }>()\n  ),\n  declareSenderId: createAction('[Dashboard] self-updating manifest', props<{ tenants: string[]; sender: string }>()),\n  updateDashboardManifest: createAction(\n    '[Dashboard] updating dashboard view',\n    props<{ manifest: DashboardManifest }>()\n  ),\n  updateWidgetManifest: createAction(\n    '[Dashboard] updating widget view',\n    props<{ manifest: WidgetManifest; index: number }>()\n  ),\n  addWidgetToPresentation: createAction(\n    '[Dashboard] add widget to presentation',\n    props<{ id?: string | string[]; widgetType: string; additionalOptions?: any; alert?: boolean }>()\n  ),\n  updateWidgetInPresentation: createAction(\n    '[Dashboard] update widget in presentation',\n    props<{ id?: string | string[]; widgetType: string; additionalOptions?: any }>()\n  ),\n  requestAllRoutes: createAction('[Dashboard] (bus) requesting route update'),\n  updateRouteManifest: createAction('[Dashboard] (bus) updating route', props<{ sender?: string; route: string }>()),\n  fetchManifestsList: createAction('[Dashboard] (bus) fetching available manifests'),\n  setRefreshRate: createAction('[Dashboard] (bus) setting refreshRate', props<{ id: string; rate: number }>()),\n  updateManifestsList: createAction(\n    '[Dashboard] (bus) received manifests list',\n    props<{ manifests: ManifestDescription[] }>()\n  ),\n  fetchStaticManifest: createAction('[Dashboard] fetching staticManifest', props<{ id: string }>()),\n  updateStaticManifest: createAction(\n    '[Dashboard] (bus) received staticManifest',\n    props<{ staticManifest: GlobalManifest }>()\n  ),\n  loadManifest: createAction('[Dashboard] (bus) load manifest', props<{ id: string }>()),\n  loadAndActivateManifest: createAction('[Dashboard] (bus) load and activate manifest', props<{ id: string }>()),\n  downloadManifest: createAction('[Dashboard] download manifest', props<{ id: string; name: string }>()),\n  deleteManifest: createAction('[Dashboard] deleting manifest', props<{ id: string }>()),\n  saveManifest: createAction(\n    '[Dashboard] save manifest',\n    props<{\n      name: string;\n      manifest?: GlobalManifest;\n      id?: string;\n      description?: string;\n      image?: string;\n      visibility?: YapVisibility;\n      cover?: boolean;\n    }>()\n  ),\n  solveCollisions: createAction('[Dashboard] solving collisions'),\n  defaultManifest: createAction('[Dashboard] set default manifest', props<{ id: string; name: string }>()),\n  clearManifest: createAction('[Dashboard] clear manifest'),\n  followManifestRoute: createAction('[Dashboard] (bus) follow manifest route'),\n  moveWidget: createAction('[Dashboard] moving widget', props<{ widgetIndex: number; targetIndex: number }>()),\n  maximizeWidget: createAction('[Dashboard] maximize widget', props<{ widgetIndex: number }>()),\n  assertResultSets: createAction(\n    '[Dashboard] request resultSet if not present or params changed',\n    props<{ id?: string }>()\n  ),\n  updateResultSet: createAction(\n    '[Dashboard] (bus) received named resultSet',\n    props<{ id: string; resultSet: ResultSet; params?: string }>()\n  ),\n  addRelationsToResultSets: createAction(\n    '[Dashboard] (bus) add relations to resultSet',\n    props<{ relations: Relation[] }>()\n  ),\n  addItemToResultSets: createAction(\n    '[Dashboard] (bus) add item to resultSet',\n    props<{ item: Item; resultSet?: string }>()\n  ),\n  startingMissingViews: createAction('[Dashboard] opening missing views for manifest'),\n  setAvailableNamedQueries: createAction('[Dashboard] (bus) set available rs names', props<{ names: string[] }>()),\n  setDefaultDatasource: createAction('[Dashboard] set current rs name', props<{ names: string[] }>()),\n  updateDashboardParams: createAction(\n    '[Dashboard] set dashboard cell params',\n    props<{ params: Partial<DashboardCellParams> }>()\n  ),\n  toggleEditionMode: createAction('[Dashboard] toggle edition mode', props<{ force?: boolean }>()),\n  select: createAction('[Dashboard] (bus) select item', props<{ id: string; cumulative: boolean }>()),\n  selectMany: createAction('[Dashboard] (bus) select items', props<{ ids: string[] }>()),\n  invertSelection: createAction('[Dashboard] (bus) invert selection'),\n  fetchObjectsDetails: createAction('[Dashboard] fetch objects details', props<{ ids: string[] }>()),\n  updateObjectsDetails: createAction(\n    '[Dashboard] (bus) update objects details',\n    props<{ list: { [id: string]: Item } }>()\n  ),\n  explore: createAction('[Dashboard] (bus) isolate in data set', props<{ id: string }>()),\n  detail: createAction('[Dashboard] (bus) add detail view', props<{ ids: string[] }>()),\n  proximity: createAction('[Dashboard] proximity search', props<{ id: string; targetResultSet: string }>()),\n  searchAddressForPoint: createAction('[Dashboard] address search', props<{ coordinates: number[] }>()),\n  displayAddress: createAction(\n    '[Dashboard] display adress',\n    props<{ address: { latLon: number[]; pointAddress: string } }>()\n  ),\n  multiSnackBar: createAction('[Dashboard] (bus) display snack message', props<{ message: YapSnackMessage }>()),\n  quickOrder: createAction(\n    '[Dashboard] (bus) quick order',\n    props<{ datasourceId: string; attribute: string; asc: OrderValue }>()\n  ),\n  setGridLayout: createAction('[Dashboard] set grid layout', props<{ layout: DashboardGridLayout }>()),\n  propagateGridLayout: createAction(\n    '[Dashboard] (bus) change grid layout',\n    props<{ manifest: DashboardManifest; rank: number }>()\n  ),\n  createTab: createAction('[Dashboard] (bus) create new tab'),\n  restoreInitialManifest: createAction('[Dashboard] (bus) restoring missing tabs'),\n  setFilters: createAction('[Dashboard] (bus) set datasource filters', props<{ filters: Filter[] }>()),\n  updateFilters: createAction('[Dashboard] (bus) update datasource filters', props<{ filter: Filter }>()),\n  removeFilter: createAction('[Dashboard] (bus) remove filter in presentation', props<{ id: string }>()),\n  updateFilterValue: createAction(\n    '[Dashboard] (bus) update filter value',\n    props<{ id: string; value: any; datasourceId: string }>()\n  ),\n  getWmsFeatures: createAction(\n    '[Widget map] Get Wms layer features',\n    props<{ url: string; oClass: string; coordinates: number[] }>()\n  ),\n  addWmsFeatures: createAction('[Widget map] Set Wms layer features', props<{ features: any }>())\n};\n","import { createAction, props } from '@ngrx/store';\nimport { TooltipOfClass } from '../../model/tooltip-of-class.interface';\nimport { ChartOption } from '../../model/widget-chart-manifest.interface';\nimport { Widget } from '../../model/widget.interface';\nimport { IconDefinitions } from './icon-definitions.interface';\n\nexport const ConfigActions = {\n  defineUrls: createAction(\n    '[Config] (bus) defining urls',\n    props<{ mapUrl?: string; yapUrl?: string; wsUrl?: string; geoServerUrl?: string }>()\n  ),\n  updateIcons: createAction('[Config] (bus) updating icons', props<{ definitions: IconDefinitions }>()),\n  saveIcons: createAction('[Config] (bus) saving icons', props<{ definitions: IconDefinitions }>()),\n  loadCustomization: createAction('[Config] (bus) load all class customization'),\n  loadedCustomization: createAction(\n    '[Config] (bus) customization loaded',\n    props<{\n      icons: IconDefinitions;\n      tooltips: { [cl: string]: TooltipOfClass };\n      filters: { [cl: string]: TooltipOfClass };\n      tableAttributes: { [cl: string]: string[] };\n      tileAttributes: { [cl: string]: string[] };\n    }>()\n  ),\n  getMapStyles: createAction('[Config] get map styles'),\n  defineMapStyles: createAction(\n    '[Config] (bus) defining map styles',\n    props<{ styles: { identifier: string; label: string }[] }>()\n  ),\n  updateTooltip: createAction(\n    '[Config] (bus) updating tooltip',\n    props<{ definitions: { [cl: string]: TooltipOfClass } }>()\n  ),\n  updateFilter: createAction(\n    '[Config] (bus) updating filter',\n    props<{ definitions: { [cl: string]: TooltipOfClass } }>()\n  ),\n  saveTooltip: createAction(\n    '[Config] (bus) saving tooltip',\n    props<{ definitions: { [cl: string]: TooltipOfClass } }>()\n  ),\n  updateTableDefaultAttributes: createAction(\n    '[Config] (bus) updating default table attributes',\n    props<{ definitions: { [cl: string]: string[] } }>()\n  ),\n  saveTableDefaultAttributes: createAction(\n    '[Config] (bus) saving default table attributes',\n    props<{ definitions: { [cl: string]: string[] } }>()\n  ),\n  updateTileAttributes: createAction(\n    '[Config] (bus) updating tile attributes',\n    props<{ definitions: { [cl: string]: string[] } }>()\n  ),\n  saveTileAttributes: createAction(\n    '[Config] (bus) saving tile attributes',\n    props<{ definitions: { [cl: string]: string[] } }>()\n  ),\n  defineColors: createAction('[Config] (bus) defining colors', props<{ colors: string[] }>()),\n  addingOverlay: createAction('[Config] adding overlay', props<{ id: string }>()),\n  closeOverlay: createAction('[Config] close overlay', props<{ id: string }>()),\n  defineBreakpoint: createAction('[Config] (bus) defining breakpoint', props<{ breakpoint: number }>()),\n  defaultViewGuardUsed: createAction('[Config] (bus) default view guard used'),\n  saveWidget: createAction('[Config] (bus) defining widget', props<{ widget: Widget }>()),\n  deleteRestitution: createAction('[Config] (bus) delete Restitution', props<{ id: string }>()),\n  loadWidgets: createAction('[Config] (bus) loading widgets'),\n  loadedWidgets: createAction('[Config] (bus) loaded widgets', props<{ widgets: Widget[] }>()),\n  loadChartOption: createAction('[Config] load chart option'),\n  loadedChartOption: createAction('[config] loaded chart option', props<{ chartOption: ChartOption }>()),\n  updateChartOption: createAction('[Config] update chart option', props<{ chartOption: Partial<ChartOption> }>()),\n  updateMaxAttributesInTiles: createAction('[Config] update max attributes in tiles', props<{ max: number }>())\n};\n","export type TimeUnit =\n  | 'year'\n  | 'quarter'\n  | 'month'\n  | 'week'\n  | 'day'\n  | 'date'\n  | 'dayofyear'\n  | 'hours'\n  | 'minutes'\n  | 'seconds'\n  | 'milliseconds';\n\nexport interface ChartWidgetOptions {\n  fill?: { signal: string } | boolean;\n  scale?: { scheme: VegaColorType | string | { domain: Array<string>; range: Array<string> } };\n  tooltip?: boolean;\n  title: string;\n  customTitle?: string;\n  selectedVariables: VariableDefinition[];\n  type: MarkType;\n  subType: string;\n  innerRadius?: number;\n  aggregation?: Aggregation;\n  radar?: {\n    props?: string[];\n    compare?: 'item' | 'value';\n    keyProp?: string;\n    valueProp?: string;\n    categoryProp?: string;\n  };\n  packing?: {\n    id?: string;\n    tooltip?: string;\n    parentId?: string;\n    packField?: string;\n  };\n  series?: {\n    groupBy?: string;\n    scheme?: VegaColorType;\n  };\n  legend?: boolean;\n  specToMerge: any;\n  locale?: 'en' | 'fr';\n}\n\nexport interface VariableDefinition {\n  name: string;\n  label: string;\n  type: any; //import { StandardType } from 'vega-lite/build/src/type';\n  origin0?: boolean;\n  timeUnit?: TimeUnit;\n  axisOptions?: { tickMinStep: number };\n}\n\nexport enum VegaType {\n  ORDINAL = 'ordinal',\n  QUANTITATIVE = 'quantitative',\n  TEMPORAL = 'temporal',\n  NOMINAL = 'nominal'\n}\n\nexport enum VegaColorType {\n  ACCENT = 'accent',\n  SET2 = 'set2',\n  DARK2 = 'dark2',\n  PASTEL2 = 'pastel2',\n  SET1 = 'set1',\n  PASTEL1 = 'pastel1',\n  CATEGORY10 = 'category10',\n  TABLEAU10 = 'tableau10',\n  SET3 = 'set3',\n  PAIRED = 'paired',\n  TABLEAU20 = 'tableau20',\n  CATEGORY20 = 'category20',\n  CATEGORY20B = 'category20b',\n  CATEGORY20C = 'category20c',\n  KO_W_OK = 'KO/W/OK'\n}\n\nexport enum MarkType {\n  BAR = 'bar',\n  LINE = 'line',\n  POINT = 'point',\n  AREA = 'area',\n  ARC = 'arc',\n  RADAR = 'radar',\n  CIRCLE_PACK = 'circle_pack'\n}\n\nexport enum MarkSubType {\n  DEFAULT = 'default',\n  HISTOGRAM = 'histogram',\n  TIME_HISTOGRAM = 'timehistogram',\n  GROUPED = 'grouped',\n  AREASTACKED = 'areastacked',\n  HISTOSTACKED = 'histostacked',\n  WITH_POINTS = 'withPoints',\n  MULTI = 'multi',\n  WITH_LINES_AND_POINTS = 'withLinesAndPoints',\n  PIE = 'pie',\n  DONUT = 'donut'\n}\n\nexport enum Aggregation {\n  NONE = 'none',\n  COUNT = 'count',\n  SUM = 'sum',\n  DISTINCT = 'distinct',\n  AVERAGE = 'average',\n  MEDIAN = 'median',\n  Q1 = 'q1',\n  Q3 = 'q3',\n  MIN = 'min',\n  MAX = 'max'\n}\n\nexport interface Size {\n  width: number;\n  height: number;\n}\n\nexport interface ChartSubTypeDefinition {\n  bar: MarkSubType[];\n  line: MarkSubType[];\n  point: MarkSubType[];\n  area: MarkSubType[];\n  arc: MarkSubType[];\n  radar: MarkSubType[];\n  circle_pack: MarkSubType[];\n}\n\nexport interface EncodingDefinition {\n  x?: EncodingChannel;\n  y?: EncodingChannel;\n  color?: EncodingChannel;\n  theta?: EncodingChannel;\n}\n\nexport interface EncodingChannel {\n  field?: string;\n  type?: any; // import { StandardType } from 'vega-lite/build/src/type';\n  title?: string;\n  bin?: boolean;\n  aggregate?: any; //import { AggregatedFieldDef } from 'vega-lite/build/src/transform';\n  timeUnit?: any; // import { TimeUnit } from 'vega';\n  scale?: ScaleDefinition;\n  axis?: any;\n}\n\nexport interface ScaleDefinition {\n  zero?: boolean;\n  type?: any; //import { ScaleType } from 'vega-lite/build/src/scale';\n}\n\nexport interface AutoSize {\n  type: string;\n  contains: string;\n}\n\nexport interface ChartOption {\n  type: MarkType[];\n  subType: Partial<ChartSubTypeDefinition>;\n  aggregation: Aggregation[];\n  color: VegaColorType[];\n}\n","import {\n  Aggregation,\n  ChartSubTypeDefinition,\n  MarkSubType,\n  MarkType,\n  VegaColorType\n} from '../../model/widget-chart-manifest.interface';\n\nexport const defaultColors = ['#800000', '#FF6347', '#FF8C00', '#FFFF00', '#7CFC00', '#008000', '#00FFFF', '#4169E1'];\n\nexport const markTypesDefault: MarkType[] = [\n  MarkType.ARC,\n  MarkType.BAR,\n  MarkType.AREA,\n  MarkType.POINT,\n  MarkType.LINE,\n  MarkType.RADAR,\n  MarkType.CIRCLE_PACK\n];\nexport const subTypesDefault: ChartSubTypeDefinition = {\n  bar: [MarkSubType.DEFAULT, MarkSubType.HISTOGRAM, MarkSubType.TIME_HISTOGRAM, MarkSubType.HISTOSTACKED],\n  line: [MarkSubType.DEFAULT, MarkSubType.WITH_POINTS],\n  point: [MarkSubType.DEFAULT],\n  area: [MarkSubType.DEFAULT, MarkSubType.WITH_LINES_AND_POINTS, MarkSubType.AREASTACKED],\n  arc: [MarkSubType.DEFAULT, MarkSubType.DONUT],\n  radar: [MarkSubType.DEFAULT],\n  circle_pack: [MarkSubType.DEFAULT]\n};\n\nexport const vegaColorSchemesDefault = [\n  VegaColorType.ACCENT,\n  VegaColorType.SET2,\n  VegaColorType.DARK2,\n  VegaColorType.PASTEL2,\n  VegaColorType.SET1,\n  VegaColorType.PASTEL1,\n  VegaColorType.CATEGORY10,\n  VegaColorType.TABLEAU10,\n  VegaColorType.SET3,\n  VegaColorType.PAIRED,\n  VegaColorType.TABLEAU20,\n  VegaColorType.CATEGORY20,\n  VegaColorType.CATEGORY20B,\n  VegaColorType.CATEGORY20C\n];\n\nexport const aggregationDefault = [\n  Aggregation.NONE,\n  Aggregation.COUNT,\n  Aggregation.SUM,\n  Aggregation.DISTINCT,\n  Aggregation.AVERAGE,\n  Aggregation.MEDIAN,\n  Aggregation.Q1,\n  Aggregation.Q3,\n  Aggregation.MIN,\n  Aggregation.MAX\n];\n\nexport const ChartOptionDefault = {\n  type: markTypesDefault,\n  subType: subTypesDefault,\n  aggregation: aggregationDefault,\n  color: vegaColorSchemesDefault\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { DashboardActions } from '../../../dashboard/store/dashboard.actions';\nimport { TooltipOfClass } from '../../model/tooltip-of-class.interface';\nimport { ChartOption } from '../../model/widget-chart-manifest.interface';\nimport { Widget } from '../../model/widget.interface';\nimport { ConfigActions } from './config.actions';\nimport { ChartOptionDefault, defaultColors } from './config.widget.constants';\nimport { IconDefinitions } from './icon-definitions.interface';\n\nexport const configFeatureKey = '@yap/config';\n\nexport interface ConfigState {\n  yapUrl: string;\n  mapUrl: string;\n  wsUrl: string;\n  geoServerUrl: string;\n  iconDefinitions: IconDefinitions;\n  tooltipDefinitions: { [key: string]: TooltipOfClass };\n  filterDefinitions: { [key: string]: TooltipOfClass };\n  tableDefaultDefinitions: { [key: string]: string[] };\n  tileDefinitions: { [key: string]: string[] };\n  mapStyles: { identifier: string; label: string }[];\n  availableColors: string[];\n  overlayList: string[];\n  breakpoint: number;\n  defaultViewUsed: boolean;\n  catalog: Widget[];\n  chartOption: ChartOption;\n  maxAttributesInTiles: number;\n}\n\nexport const initialConfigState: ConfigState = {\n  yapUrl: '',\n  mapUrl: '',\n  wsUrl: '',\n  geoServerUrl: '',\n  iconDefinitions: {},\n  tooltipDefinitions: { '': { type: 'none' } },\n  filterDefinitions: {},\n  tableDefaultDefinitions: {},\n  tileDefinitions: {},\n  mapStyles: [],\n  availableColors: defaultColors,\n  overlayList: [],\n  breakpoint: 900,\n  defaultViewUsed: false,\n  catalog: [],\n  chartOption: ChartOptionDefault,\n  maxAttributesInTiles: 5\n};\n\nexport const configReducer = createReducer(\n  initialConfigState,\n  on(ConfigActions.defineUrls, (state, action) => ({\n    ...state,\n    mapUrl: action.mapUrl ?? state.mapUrl,\n    yapUrl: action.yapUrl ?? state.yapUrl,\n    wsUrl: action.wsUrl ?? state.wsUrl,\n    geoServerUrl: action.geoServerUrl ?? state.geoServerUrl\n  })),\n  on(ConfigActions.updateIcons, (state, action) => ({\n    ...state,\n    iconDefinitions: {\n      ...state.iconDefinitions,\n      ...action.definitions\n    }\n  })),\n  on(ConfigActions.defineMapStyles, (state, action) => ({\n    ...state,\n    mapStyles: action.styles\n  })),\n  on(ConfigActions.updateTooltip, (state, action) => ({\n    ...state,\n    tooltipDefinitions: {\n      ...state.tooltipDefinitions,\n      ...action.definitions\n    }\n  })),\n  on(ConfigActions.updateFilter, (state, action) => ({\n    ...state,\n    filterDefinitions: {\n      ...state.filterDefinitions,\n      ...action.definitions\n    }\n  })),\n  on(ConfigActions.updateTableDefaultAttributes, (state, action) => ({\n    ...state,\n    tableDefaultDefinitions: {\n      ...state.tableDefaultDefinitions,\n      ...action.definitions\n    }\n  })),\n  on(ConfigActions.updateTileAttributes, (state, action) => ({\n    ...state,\n    tileDefinitions: {\n      ...state.tileDefinitions,\n      ...action.definitions\n    }\n  })),\n  on(ConfigActions.defineColors, (state, action) => ({\n    ...state,\n    availableColors: action.colors\n  })),\n  on(ConfigActions.addingOverlay, (state, action) => ({\n    ...state,\n    overlayList: [...state.overlayList, action.id]\n  })),\n  on(ConfigActions.closeOverlay, (state, action) => ({\n    ...state,\n    overlayList: state.overlayList.filter((id) => id !== action.id)\n  })),\n  on(ConfigActions.defineBreakpoint, (state, action) => ({\n    ...state,\n    breakpoint: action.breakpoint\n  })),\n  on(ConfigActions.loadedCustomization, (state, action) => ({\n    ...state,\n    iconDefinitions: {\n      ...state.iconDefinitions,\n      ...action.icons\n    },\n    tooltipDefinitions: {\n      ...state.tooltipDefinitions,\n      ...action.tooltips\n    },\n    filterDefinitions: {\n      ...state.filterDefinitions,\n      ...action.filters\n    },\n    tableDefaultDefinitions: {\n      ...state.tableDefaultDefinitions,\n      ...action.tableAttributes\n    },\n    tileDefinitions: {\n      ...state.tileDefinitions,\n      ...action.tileAttributes\n    }\n  })),\n  on(ConfigActions.defaultViewGuardUsed, DashboardActions.updateManifestAfterTenantJoin, (state, action) => ({\n    ...state,\n    defaultViewUsed: true\n  })),\n  on(ConfigActions.saveWidget, (state, action) => ({\n    ...state,\n    catalog: [...state.catalog, action.widget]\n  })),\n  on(ConfigActions.loadedWidgets, (state, action) => ({\n    ...state,\n    catalog: [...action.widgets]\n  })),\n  on(ConfigActions.loadedChartOption, (state, action) => ({\n    ...state,\n    chartOption: action.chartOption\n  })),\n  on(ConfigActions.updateChartOption, (state, action) => ({\n    ...state,\n    chartOption: {\n      type: action.chartOption.type ?? state.chartOption.type,\n      subType: action.chartOption.subType ?? state.chartOption.subType,\n      aggregation: action.chartOption.aggregation ?? state.chartOption.aggregation,\n      color: action.chartOption.color ?? state.chartOption.color\n    }\n  })),\n  on(ConfigActions.updateMaxAttributesInTiles, (state, action) => ({\n    ...state,\n    maxAttributesInTiles: action.max\n  }))\n);\n","import { ValueType } from '../../model/item.interface';\n\nexport interface IconOptions {\n  iconUrl: string;\n  iconSize: [number, number];\n  rule?: IconRule;\n  position?: IconPosition;\n  isDefault?: boolean;\n}\n\nexport type IconDefinitions = {\n  [cl: string]: IconOptions[];\n};\n\nexport const DEFAULT_ICON_URL = '/assets/svgs/default.svg';\nexport const DEFAULT_RESTITUTION_ICON_URL = '/assets/svgs/default-restitution.svg';\n\nexport enum IconPosition {\n  FULL = 'FULL',\n  TOP_LEFT = 'TOP_LEFT',\n  TOP_RIGHT = 'TOP_RIGHT',\n  BOTTOM_LEFT = 'BOTTOM_LEFT',\n  BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport const compareOperationFunctions = {\n  EQUALS: (a: any, b: any) => a === b,\n  GREATER: (a: any, b: any) => parseInt(a, 10) > parseInt(b, 10),\n  GREATER_OR_EQUAL: (a: any, b: any) => parseInt(a, 10) >= parseInt(b, 10),\n  LOWER: (a: any, b: any) => parseInt(a, 10) < parseInt(b, 10),\n  LOWER_OR_EQUAL: (a: any, b: any) => parseInt(a, 10) <= parseInt(b, 10),\n  CONTAINS: (a: any, b: any) => (a + '').localeCompare(b + '') === 0\n};\n\nexport type CompareOperation = keyof typeof compareOperationFunctions;\n\nexport interface IconRule {\n  attributeName: string;\n  value: ValueType;\n  operation: CompareOperation;\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromConfig from './config.reducer';\nimport { DEFAULT_ICON_URL, IconDefinitions, IconPosition } from './icon-definitions.interface';\n\nconst feature = createFeatureSelector<fromConfig.ConfigState>(fromConfig.configFeatureKey);\n\nconst yapUrl = createSelector(feature, (state) => state?.yapUrl);\nconst wsUrl = createSelector(feature, (state) => state?.wsUrl);\nconst geoServerUrl = createSelector(feature, (state) => state?.geoServerUrl);\nconst dataUrl = createSelector(yapUrl, (url) => `${url}/data`);\nconst refUrl = createSelector(yapUrl, (url) => `${url}/ref`);\nconst transfoUrl = createSelector(yapUrl, (url) => `${url}/transfo`);\nconst monitorUrl = createSelector(yapUrl, (url) => `${url}/monitor`);\nconst geocodingUrl = createSelector(yapUrl, (url) => `${url}/geocoding`);\nconst replayUrl = createSelector(yapUrl, (url) => `${url}/replay`);\nconst mapUrl = createSelector(feature, (state) => state?.mapUrl);\nconst execUrl = createSelector(yapUrl, (url) => `${url}/exec`);\n\nconst addDefaultRuleIfNotPresent = (defs: IconDefinitions) => {\n  const newDefs = {} as IconDefinitions;\n  for (let classe in defs) {\n    try {\n      const currentRules = defs[classe] ?? [{ iconUrl: DEFAULT_ICON_URL, iconSize: [25, 25] }];\n      newDefs[classe] = [...currentRules];\n      if (!currentRules.find((rule) => !!rule.isDefault)) {\n        const precalculateDefaultRule = currentRules.find((def) => def.position === IconPosition.FULL || !def.position);\n        newDefs[classe].push({\n          isDefault: true,\n          iconUrl: precalculateDefaultRule?.iconUrl ?? DEFAULT_ICON_URL,\n          iconSize: [25, 25]\n        });\n      }\n    } catch (e) {\n      console.error(`Icons definitions is wrong for class ${classe}`, defs[classe], e);\n    }\n  }\n  return newDefs;\n};\n\nconst iconDefinitions = createSelector(\n  feature,\n  (config) =>\n    (({\n      default: [{ iconUrl: DEFAULT_ICON_URL, iconSize: [25, 25] }],\n      ...addDefaultRuleIfNotPresent(config.iconDefinitions)\n    } ?? {}) as IconDefinitions)\n);\n\nconst tooltipDefinitions = createSelector(feature, (config) => config.tooltipDefinitions);\nconst filterDefinitions = createSelector(feature, (config) => config.filterDefinitions);\nconst tableDefaultAttributesDefinitions = createSelector(feature, (state) => state?.tableDefaultDefinitions);\nconst tileAttributesDefinitions = createSelector(feature, (state) => state?.tileDefinitions);\n\nconst mapStyles = createSelector(feature, (config) => config.mapStyles);\nconst availableColors = createSelector(feature, (config) => config.availableColors);\nconst randomColor = createSelector(\n  feature,\n  (config) => config.availableColors[(Math.random() * 1457) % config.availableColors.length]\n);\nconst hasOverlay = createSelector(feature, (config) => config.overlayList.length > 0);\nconst breakpoint = createSelector(feature, (config) => config.breakpoint);\nconst defaultViewGuardUsed = createSelector(feature, (config) => config.defaultViewUsed);\nconst catalog = createSelector(feature, (config) => config.catalog);\nconst chartOption = createSelector(feature, (config) => config.chartOption);\nconst maxAttributesInTiles = createSelector(feature, (config) => config.maxAttributesInTiles);\n\nexport const ConfigSelectors = {\n  feature,\n  yapUrl,\n  dataUrl,\n  refUrl,\n  transfoUrl,\n  wsUrl,\n  monitorUrl,\n  replayUrl,\n  mapUrl,\n  geoServerUrl,\n  geocodingUrl,\n  iconDefinitions,\n  tooltipDefinitions,\n  filterDefinitions,\n  mapStyles,\n  availableColors,\n  randomColor,\n  tableDefaultAttributesDefinitions,\n  tileAttributesDefinitions,\n  hasOverlay,\n  breakpoint,\n  defaultViewGuardUsed,\n  catalog,\n  chartOption,\n  maxAttributesInTiles,\n  execUrl\n};\n","import { animate, animation, style, transition, trigger, useAnimation } from '@angular/animations';\nimport { ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { YapSnackMessage } from '../snack.interface';\n\nconst showAnimation = animation([style({ transform: '{{transform}}', opacity: 0 }), animate('{{transition}}')]);\n\nconst hideAnimation = animation([animate('{{transition}}'), style({ transform: '{{transform}}', opacity: 0 })]);\n\n@Component({\n  selector: 'yap-snackbar',\n  templateUrl: './snackbar.component.html',\n  animations: [\n    trigger('panelState', [\n      transition('void => visible', [useAnimation(showAnimation)]),\n      transition('visible => void', [useAnimation(hideAnimation)])\n    ])\n  ]\n})\nexport class YapSnackbarComponent {\n  container: any;\n  _data = { message: '', action: undefined, type: 'info', timeout: 3000 } as YapSnackMessage;\n  @Input() set data(message: YapSnackMessage) {\n    this._data = message;\n    this.cdRef.detectChanges();\n  }\n  @Input() listIndex = 0;\n  @Input() actionClicked!: Subject<void>;\n  transformOptions = 'translate3d(-50%, 100%, 0px)';\n  transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n  hiddenFromAction = false;\n\n  constructor(private cdRef: ChangeDetectorRef) {}\n\n  get data() {\n    return this._data;\n  }\n\n  get typeClass() {\n    return { ['-' + this.data.type]: true };\n  }\n\n  get icon(): string {\n    const iconsDefs = {\n      info: 'information-point',\n      success: 'check',\n      warning: 'warning',\n      error: 'close'\n    };\n    return iconsDefs[this.data.type];\n  }\n\n  actionClick() {\n    this.actionClicked.next();\n  }\n\n  hide() {\n    this.hiddenFromAction = true;\n  }\n}\n","<div\n  class=\"m-snackbar -bottom\"\n  [ngClass]=\"typeClass\"\n  [@panelState]=\"{ value: 'visible', params: { transform: transformOptions, transition: transitionOptions } }\"\n  *ngIf=\"!hiddenFromAction\"\n  [style.bottom.px]=\"listIndex * 60\"\n>\n  <div class=\"m-snackbar__content\">\n    <yap-icon [iconSvg]=\"icon\"></yap-icon>\n    <p class=\"a-p\">{{ data.message }}</p>\n    <button class=\"m-snackbar__action\" *ngIf=\"!!data.action\" (click)=\"actionClick()\">{{ data.action }}</button>\n  </div>\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, ViewContainerRef } from '@angular/core';\nimport equal from 'fast-deep-equal/es6';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { YapI18nService } from '../../i18n/i18n.service';\nimport { YapSnackMessage } from './snack.interface';\nimport { YapSnackbarComponent } from './snackbar/snackbar.component';\n\nexport const DEFAULT_MSG_TIMEOUT = 3000;\nexport const DELAY_FOR_HIDE = 200;\n\nexport const YAP_CUSTOMEVENT_TYPE = '@yap.snack';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class YapSnackbarService {\n  rootViewContainer?: ViewContainerRef;\n  static count = 0;\n\n  private overlayRef?: OverlayRef;\n\n  private messageEvents$ = new Subject<YapSnackMessage>();\n\n  constructor(private overlay: Overlay, private translate: YapI18nService) {\n    // Allows to access snackbar from javascript, for example to manage Vega errors\n    document.addEventListener(\n      YAP_CUSTOMEVENT_TYPE,\n      (e: Event) => {\n        const yapMessage = (e as CustomEvent<YapSnackMessage>).detail;\n        yapMessage.message = this.translate.instant(yapMessage.message);\n        yapMessage.action = !!yapMessage.action ? this.translate.instant(yapMessage.action) : undefined;\n        this.messageEvents$.next(yapMessage);\n      },\n      false\n    );\n\n    this.messageEvents$.pipe(distinctUntilChanged((p, v) => equal(p, v))).subscribe((message) => this.open(message));\n  }\n\n  setRootViewContainerRef(viewContainerRef: ViewContainerRef) {\n    this.rootViewContainer = viewContainerRef;\n  }\n\n  open(message: YapSnackMessage): Observable<void> | null {\n    this.overlayRef = this.overlay.create(\n      new OverlayConfig({\n        hasBackdrop: false\n      })\n    );\n    const componentPortal = new ComponentPortal(YapSnackbarComponent, this.rootViewContainer);\n    const component = this.overlayRef.attach(componentPortal);\n\n    component.instance.data = message;\n    component.instance.listIndex = YapSnackbarService.count++;\n    component.instance.actionClicked = new Subject<void>();\n\n    setTimeout(() => {\n      /* First hide component so it uses animation */\n      component.instance.hiddenFromAction = true;\n      YapSnackbarService.count--;\n\n      setTimeout(() => {\n        /* then clean by removing it */\n        component.instance.actionClicked.complete();\n        this.overlayRef?.dispose();\n        component.destroy();\n      }, DELAY_FOR_HIDE);\n    }, message.timeout ?? DEFAULT_MSG_TIMEOUT);\n\n    return component.instance.actionClicked;\n  }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { Store } from '@ngrx/store';\nimport { map, mergeMap, Observable } from 'rxjs';\nimport { YapSnackbarService } from '../../components/snackbar/snackbar.service';\nimport { YapI18nService } from '../../i18n/i18n.service';\nimport { ConfigSelectors } from '../config/config.selectors';\nimport { Image } from './image.actions';\n\nexport const INTERNALLY_STORED_IMAGE_PREFIX = 'internal:';\n\nexport enum LibraryTypes {\n  ILLUSTRATION = 'illustration',\n  ICON = 'icon'\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ImageService {\n  constructor(\n    private httpClient: HttpClient,\n    private store: Store<any>,\n    private domSanitizer: DomSanitizer,\n    private snackbar: YapSnackbarService,\n    private translateService: YapI18nService\n  ) {}\n\n  getImages(): Observable<Image[]> {\n    return this.store.select(ConfigSelectors.dataUrl).pipe(\n      mergeMap((url) => this.httpClient.get<Image[]>(encodeURI(`${url}/file/icons`))),\n      map((images) =>\n        images.map((image) => ({\n          image: `${INTERNALLY_STORED_IMAGE_PREFIX}${image.image}`,\n          type: image.type\n        }))\n      )\n    );\n  }\n\n  getImage(path: string): Observable<{ type: string; url: SafeUrl }> {\n    return this.store.select(ConfigSelectors.dataUrl).pipe(\n      mergeMap((url) => {\n        return this.httpClient\n          .get(encodeURI(`${url}/file/icons/${path}`), {\n            observe: 'response',\n            responseType: 'blob'\n          })\n          .pipe(\n            map((response) => {\n              const header = response.headers.get('Content-Type') as string;\n              if (header.includes('video') || header.includes('image')) {\n                return {\n                  type: header,\n                  url: this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(response.body as Blob))\n                };\n              }\n              throw { type: 'unknown', error: 'unknown doc type' };\n            })\n          );\n      })\n    );\n  }\n\n  upload(file: any, mediaType: string, type: string): Observable<string> {\n    const formData = new FormData();\n    formData.append('type', type);\n    return this.store.select(ConfigSelectors.dataUrl).pipe(\n      mergeMap((url) => {\n        formData.append(\n          'file',\n          new File([file], Date.now() + file.name, {\n            type: mediaType,\n            lastModified: Date.now()\n          })\n        );\n        return this.httpClient.post<string>(`${url}/file/icons`, formData, {\n          headers: new HttpHeaders({ 'File-Content-Type': mediaType })\n        });\n      })\n    );\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { Store } from '@ngrx/store';\nimport { Icon, Style } from 'ol/style';\nimport { AttributeMultipleValue, AttributeSimpleValue, Item } from '../model/item.interface';\nimport { Class } from '../store/class/class.interface';\nimport { ClassSelectors } from '../store/class/class.selectors';\nimport { ConfigSelectors } from '../store/config/config.selectors';\nimport {\n  compareOperationFunctions,\n  DEFAULT_ICON_URL,\n  IconDefinitions,\n  IconPosition,\n  IconRule\n} from '../store/config/icon-definitions.interface';\nimport { ImageService, INTERNALLY_STORED_IMAGE_PREFIX } from '../store/image/image.service';\n\nconst defaultImage = new Image();\ndefaultImage.src = DEFAULT_ICON_URL;\n\nconst SUB_ICON_SIZE_PERCENT = 0.25;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SymbolService {\n  private definitions: IconDefinitions = {};\n\n  private classes: Class[] = [];\n\n  constructor(\n    private httpClient: HttpClient,\n    private store: Store<any>,\n    private sanitizer: DomSanitizer,\n    private imageService: ImageService\n  ) {\n    this.store.select(ConfigSelectors.iconDefinitions).subscribe((defs) => (this.definitions = defs));\n    this.store.select(ClassSelectors.classes).subscribe((classes) => (this.classes = classes));\n  }\n\n  getSymbol(item: Item, borderColor?: string): Promise<HTMLCanvasElement> {\n    const canvas = document.createElement('canvas');\n    const ctx = canvas.getContext('2d') ?? (null as unknown as CanvasRenderingContext2D);\n\n    return new Promise((resolve, reject) => {\n      // First, we try to apply non-default rules\n      let appliableRules = (this.definitions[item.oClass] ?? this.definitions['default']).filter(\n        (def) => this.matchRule(item, def.rule) && !def.isDefault\n      );\n\n      if (appliableRules.length === 0) {\n        // If no rule match, then apply default rule\n        appliableRules = (this.definitions[item.oClass] ?? this.definitions['default']).filter(\n          (def) => !!def.isDefault\n        );\n      }\n\n      const promiseImages = Promise.all(appliableRules.map((rule) => this.downloadImage(rule.iconUrl)));\n\n      promiseImages.then((images) => {\n        canvas.width = 600;\n        canvas.height = 600;\n        const subSize = {\n          width: 600 * SUB_ICON_SIZE_PERCENT,\n          height: 600 * SUB_ICON_SIZE_PERCENT,\n          offsetToRight: 600 * (1 - SUB_ICON_SIZE_PERCENT),\n          offsetToBottom: 600 * (1 - SUB_ICON_SIZE_PERCENT)\n        };\n\n        // Then draw everything\n        appliableRules.forEach((def, idx, arr) => {\n          const image = images[idx];\n          switch (def.position) {\n            case IconPosition.BOTTOM_RIGHT:\n              ctx.globalCompositeOperation = 'source-over';\n              ctx.drawImage(image, subSize.offsetToRight, subSize.offsetToBottom, subSize.width, subSize.height);\n              break;\n            case IconPosition.BOTTOM_LEFT:\n              ctx.globalCompositeOperation = 'source-over';\n              ctx.drawImage(image, 0, subSize.offsetToBottom, subSize.width, subSize.height);\n              break;\n            case IconPosition.TOP_RIGHT:\n              ctx.globalCompositeOperation = 'source-over';\n              ctx.drawImage(image, subSize.offsetToRight, 0, subSize.width, subSize.height);\n              break;\n            case IconPosition.TOP_LEFT:\n              ctx.globalCompositeOperation = 'source-over';\n              ctx.drawImage(image, 0, 0, subSize.width, subSize.height);\n              break;\n            case IconPosition.FULL:\n            default:\n              if (!borderColor) {\n                // draw original image in normal mode\n                ctx.globalCompositeOperation = 'source-over';\n                ctx.drawImage(image, 0, 0, 600, 600);\n              } else {\n                let i = 0;\n                const dArr = [-1, -1, 0, -1, 1, -1, -1, 0, 1, 0, -1, 1, 0, 1, 1, 1]; // final y position\n                const strokeWidth = Math.round(600 * 0.05); // border width: 5% of image width\n                // draw images at offsets from the array scaled by s\n                for (; i < dArr.length; i += 2) {\n                  ctx.drawImage(\n                    image,\n                    strokeWidth + dArr[i] * strokeWidth,\n                    strokeWidth + dArr[i + 1] * strokeWidth,\n                    600,\n                    600\n                  );\n                }\n\n                // fill with color\n                ctx.globalCompositeOperation = 'source-in';\n                ctx.fillStyle = borderColor;\n                ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n                // draw original image in normal mode\n                ctx.globalCompositeOperation = 'source-over';\n                ctx.drawImage(image, strokeWidth, strokeWidth, 600, 600);\n              }\n          }\n        });\n\n        resolve(canvas);\n      });\n    });\n  }\n\n  getSymbolOfClass(id: string): Promise<SafeUrl> {\n    const definitionsForClass = (this.definitions[id] || []).find((def) => def.isDefault);\n    return this.downloadAsUrl(definitionsForClass?.iconUrl ?? DEFAULT_ICON_URL);\n  }\n\n  downloadAsUrl(url: string): Promise<string> {\n    return new Promise((resolve) => {\n      this.downloadImage((!url ? null : url) ?? DEFAULT_ICON_URL).then((image) => {\n        const canvas = document.createElement('canvas');\n        const ctx = canvas.getContext('2d') ?? (null as unknown as CanvasRenderingContext2D);\n        canvas.width = image.width;\n        canvas.height = image.height;\n        ctx.globalCompositeOperation = 'source-over';\n        ctx.drawImage(image, 0, 0, image.width, image.height);\n        resolve(canvas.toDataURL('image/png'));\n      });\n    });\n  }\n\n  getSymbolAsIconStyle(item: Item, borderColor?: string): Promise<Style> {\n    return new Promise<Style>((resolve, reject) => {\n      this.getSymbol(item, borderColor)\n        .then((canvas) => {\n          const size = (this.definitions[item.oClass] ?? this.definitions['default'])[0].iconSize;\n          const scale = [size[0] / canvas.width, size[1] / canvas.height];\n\n          resolve(\n            new Style({\n              image: new Icon({\n                img: canvas,\n                imgSize: [canvas.width, canvas.height],\n                scale\n              })\n            })\n          );\n        })\n        .catch((err) => console.error(err));\n    });\n  }\n\n  cache: { [url: string]: Promise<HTMLImageElement> } = {};\n\n  downloadImage(url: string): Promise<HTMLImageElement> {\n    if (!!this.cache[url]) return this.cache[url];\n\n    this.cache[url] = new Promise((resolve) => {\n      const image = new Image();\n      image.crossOrigin = 'Anonymous';\n      image.onerror = () => {\n        console.error('error with image', url);\n        resolve(defaultImage);\n      };\n      image.onload = () => {\n        resolve(image);\n      };\n\n      if (url.startsWith(INTERNALLY_STORED_IMAGE_PREFIX)) {\n        const regexp = new RegExp('^' + INTERNALLY_STORED_IMAGE_PREFIX);\n        this.imageService.getImage(url.replace(regexp, '')).subscribe((res) => {\n          image.src = this.sanitizer.sanitize(SecurityContext.URL, res.url) ?? DEFAULT_ICON_URL;\n        });\n      } else {\n        image.src = this.sanitizer.sanitize(SecurityContext.URL, url) ?? DEFAULT_ICON_URL;\n      }\n    });\n\n    return this.cache[url];\n  }\n\n  private matchRule(item: Item, rule?: IconRule) {\n    if (!rule) {\n      return true;\n    }\n    if (!!item.attributes[rule.attributeName]) {\n      if (item.attributes[rule.attributeName].type === 'MULTI') {\n        // multi valued\n        return (item.attributes[rule.attributeName] as AttributeMultipleValue).values\n          .map((attrValue) => compareOperationFunctions[rule.operation](attrValue.value, rule.value))\n          .reduce((p, c) => c || p);\n      } else {\n        // single valued\n        return compareOperationFunctions[rule.operation](\n          (item.attributes[rule.attributeName] as AttributeSimpleValue).value,\n          rule.value\n        );\n      }\n    }\n    return false;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SafeUrl } from '@angular/platform-browser';\nimport { Store } from '@ngrx/store';\nimport { from, Observable } from 'rxjs';\nimport { YapI18nService } from '../../i18n/i18n.service';\nimport { SymbolService } from '../../symbol/symbol.service';\n\n@Pipe({\n  name: 'getSecuredImage'\n})\nexport class GetSecuredImagePipe implements PipeTransform {\n  constructor(\n    private store: Store<any>,\n    private translateService: YapI18nService,\n    private symbolService: SymbolService\n  ) {}\n\n  transform(value: unknown, ...args: unknown[]): Observable<SafeUrl | string> {\n    return from(this.symbolService.downloadAsUrl(value as string));\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { YapIconComponent } from './icon.component';\n\nconst YAP_ICON_COMPONENTS = [YapIconComponent];\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [...YAP_ICON_COMPONENTS],\n  exports: [...YAP_ICON_COMPONENTS]\n})\nexport class YapIconModule {}\n","import { createAction, props } from '@ngrx/store';\nimport { YapVisibility } from '../../components/share/share.model';\nimport { Dataset, DatasetError } from '../../model/dataset.interface';\nimport { MonoClassSearchPayload } from '../../model/search-mono-class.model';\nimport { FullTextSearchPayload, MultiClassSearchPayload } from '../../model/search-multi-class.model';\nimport { DatasetVersion, NamedQuery } from './data-source.model';\n\nexport const DataSourceActions = {\n  load: createAction('[Datasource] load'),\n  namedQuery: {\n    load: createAction('[NamedQuery] load'),\n    loaded: createAction('[NamedQuery] loaded', props<{ list: NamedQuery[] }>()),\n    failure: createAction('[NamedQuery] failure', props<{ error: Error }>()),\n    post: createAction(\n      '[NamedQuery] post',\n      props<{\n        name: string;\n        id?: string;\n        description?: string;\n        visibility?: YapVisibility;\n        payload: MonoClassSearchPayload | MultiClassSearchPayload | FullTextSearchPayload;\n        color?: string;\n        favorite: boolean;\n        isEdit: boolean;\n      }>()\n    ),\n    delete: createAction('[NamedQuery] delete', props<{ id: string }>()),\n    addFavorite: createAction('[NamedQuery] add favorite', props<{ id: string }>()),\n    deleteFavorite: createAction('[NamedQuery] delete favorite', props<{ id: string }>()),\n    edit: createAction('[NamedQuery] try to edit', props<{ currentEdit: NamedQuery; widgetIndex?: number }>()),\n    updateCurrentEdit: createAction(\n      '[NamedQuery] update edited named query',\n      props<{ currentEdit: Partial<NamedQuery> }>()\n    ),\n    openEdit: createAction('[NamedQuery] edit', props<{ currentEdit: NamedQuery; widgetIndex?: number }>()),\n    stopEdit: createAction('[NamedQuery] delete edit'),\n    openRename: createAction('[NamedQuery] rename'),\n    stopRename: createAction('[NamedQuery] stop rename')\n  },\n  dataset: {\n    confirmDataSourceDeletion: createAction(\n      '[Datase] confirm deletion datasource',\n      props<{ name: string; route: string; addRoute: string }>()\n    ),\n    loadDataset: createAction('[Dataset] load datasets'),\n    loadedDataset: createAction('[Dataset] loaded datasets', props<{ datasets: Dataset[] }>()),\n    failure: createAction('[Dataset] failure effect Dataset', props<{ error: any }>()),\n    create: createAction('[Dataset] create Dataset', props<{ dataset: Dataset; route: string }>()),\n    created: createAction(\n      '[Dataset] Datadef is created call to admin',\n      props<{ path: string; params?: { [p: string]: string } }>()\n    ),\n    update: createAction('[Dataset] update Dataset', props<{ dataset: Dataset; route: string }>()),\n    updated: createAction(\n      '[Dataset] Dataset is updated call to admin',\n      props<{ path: string; params?: { [p: string]: string } }>()\n    ),\n    delete: createAction('[Dataset] delete Dataset', props<{ name: string; route: string; addRoute: string }>()),\n    deleted: createAction('[Dataset] Dataset is deleted call to admin', props<{ addRoute: string }>()),\n\n    unselectDataset: createAction('[Dataset] unselect Dataset'),\n\n    selectDataset: createAction('[Dataset] open Dataset details', props<{ dataset: Dataset }>()),\n\n    getDatasetById: createAction('[Dataset] Get Dataset by ID', props<{ id: string }>()),\n    getDatasetByIdSuccess: createAction('[Dataset] Get Dataset by Id Success', props<{ data: Dataset }>()),\n    getDatasetByIdFailure: createAction('[Dataset] Get Dataset by Id Failure', props<{ error: any }>()),\n    openNewDataset: createAction('[Dataset] open new Dataset', props<{ route: string }>()),\n    listVersions: createAction('[Dataset] Get Dataset versions'),\n    listVersionsSuccess: createAction(\n      '[Dataset] Get Dataset versions Success',\n      props<{ versions: DatasetVersion[] }>()\n    ),\n    listVersionsFailure: createAction('[Dataset] Get Dataset versions Failure'),\n    selectedDatasetVersion: createAction('[Dataset] Select Dataset version', props<{ version: DatasetVersion }>()),\n    deactivateDatasetVersion: createAction(\n      '[Dataset] Deactivate dataset version',\n      props<{\n        datasetId: string;\n        versionId: string;\n      }>()\n    ),\n    deactivateDatasetVersionSuccess: createAction(\n      '[Dataset] Deactivate dataset version success',\n      props<{\n        datasetVersion: DatasetVersion;\n      }>()\n    ),\n    deactivateDatasetVersionFailure: createAction(\n      '[Dataset] Deactivate dataset version failure',\n      props<{\n        error: any;\n      }>()\n    ),\n    activateDatasetVersion: createAction(\n      '[Dataset] Activate dataset version',\n      props<{\n        datasetId: string;\n        versionId: string;\n      }>()\n    ),\n    activateDatasetVersionSuccess: createAction(\n      '[Dataset] Activate dataset version success',\n      props<{\n        datasetVersion: DatasetVersion;\n      }>()\n    ),\n    activateDatasetVersionFailure: createAction(\n      '[Dataset] Activate dataset version failure',\n      props<{\n        error: any;\n      }>()\n    ),\n    errors: {\n      getById: createAction('[Dataset.errors] get by id', props<{ id: string }>()),\n      getByIdSuccess: createAction('[Dataset.errors] get by id Success', props<{ errors: DatasetError[] }>()),\n      getByIdFailure: createAction('[Dataset.errors] get by id Failure', props<{ error: any }>())\n    }\n  }\n};\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { ConfigActions } from '../../store/config/config.actions';\nimport { ConfigSelectors } from '../../store/config/config.selectors';\nimport { DataSourceActions } from '../../store/data-source/data-source.actions';\nimport { DataSource } from '../../store/data-source/data-source.model';\n\n@Component({\n  selector: 'yap-nq-color-selector',\n  templateUrl: './nq-color-selector.component.html'\n})\nexport class YapNqColorSelectorComponent {\n  @Input() disabled = false;\n  @Input() datasource?: DataSource;\n  @Output() colorChanged = new EventEmitter<string>();\n  @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n\n  possibleColors$: Observable<string[]>;\n\n  private overlayRef?: OverlayRef;\n\n  constructor(private store: Store, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {\n    this.possibleColors$ = this.store.select(ConfigSelectors.availableColors);\n  }\n\n  get dsColor() {\n    return this.datasource?.sourceType === 'namedQuery' ? this.datasource.color : '#FFFFFF';\n  }\n\n  toggleColorChoice($event?: MouseEvent) {\n    if (!this.disabled && !this.overlayRef) {\n      this.overlayRef = this.overlay.create(\n        new OverlayConfig({\n          hasBackdrop: false,\n          panelClass: ['color-choice-menu']\n        })\n      );\n      this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n      this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n      const contextMenu = document.querySelector('.color-choice-menu') as HTMLDivElement;\n      if (!!contextMenu && !!$event) {\n        contextMenu.style.left = $event.clientX - 10 + 'px';\n        contextMenu.style.top = $event.clientY - 10 + 'px';\n        contextMenu.addEventListener('mouseleave', () => this.toggleColorChoice());\n      }\n    } else {\n      this.overlayRef?.dispose();\n      this.overlayRef = undefined;\n      this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n    }\n  }\n\n  changeForColor(color: string) {\n    this.colorChanged.emit(color);\n    if (!!this.datasource && this.datasource.id && this.datasource.sourceType === 'namedQuery') {\n      this.store.dispatch(\n        DataSourceActions.namedQuery.post({\n          id: this.datasource.id,\n          name: this.datasource?.name ?? '',\n          description: this.datasource?.description ?? undefined,\n          payload: this.datasource?.request,\n          color,\n          favorite: this.datasource?.favorite ?? false,\n          isEdit: false\n        })\n      );\n    }\n    this.toggleColorChoice();\n  }\n}\n","<button (click)=\"toggleColorChoice($event)\" class=\"a-btn a-btn--icon-text o-yap-card-menu__nav__item\" role=\"button\">\n  <div\n    aria-hidden=\"true\"\n    [style.background-color]=\"dsColor ?? '#FFFFFF'\"\n    [class]=\"disabled ? 'm-color-selector__point__disabled' : 'm-color-selector__point'\"\n  ></div>\n  <ng-container *ngIf=\"!disabled\">\n    <span>{{ '@yap.search.namedQuery.color' | i18n }}</span>\n    <yap-icon class=\"container__point__icon\" iconSvg=\"chevron_right\"></yap-icon>\n  </ng-container>\n</button>\n\n<ng-template #template>\n  <div class=\"m-color-selector-overlay\">\n    <div\n      *ngFor=\"let color of possibleColors$ | async\"\n      [style.background-color]=\"color\"\n      class=\"m-color-selector-overlay__point\"\n      (click)=\"changeForColor(color)\"\n    >\n      <yap-icon *ngIf=\"dsColor === color\" class=\"m-color-selector-overlay__point__check\" iconSvg=\"check\"></yap-icon>\n    </div>\n  </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { I18nPipe } from './i18n.pipe';\n\n@NgModule({\n  declarations: [I18nPipe],\n  exports: [I18nPipe]\n})\nexport class YapI18nModule {}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\n\nexport class YapDialogRef<T> {\n  public closeValue = new Subject<any>();\n  component?: T;\n\n  constructor(private overlayRef: OverlayRef) {}\n\n  close(value?: any): void {\n    if (value) {\n      this.closeValue.next(value);\n    }\n    this.closeValue.complete();\n    this.overlayRef.dispose();\n  }\n}\n","import { ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, InjectionToken, Injector } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigActions } from '../../store/config/config.actions';\nimport { YapDialogRef } from './dialog-ref';\n\ninterface YapDialogConfig {\n  panelClass?: string[];\n  hasBackdrop?: boolean;\n  backdropClass?: string;\n  data?: any;\n  overlayConfig?: OverlayConfig;\n}\n\nconst DEFAULT_CONFIG: YapDialogConfig = {\n  hasBackdrop: true,\n  panelClass: ['yap-dialog-container'],\n  backdropClass: 'backdrop'\n};\n\nexport const YAP_DIALOG_DATA = new InjectionToken<any>('YAP_DIALOG_DATA');\n\n@Injectable({ providedIn: 'root' })\nexport class YapDialogService {\n  constructor(private injector: Injector, private overlay: Overlay, private store: Store) {}\n\n  open<T>(\n    component: ComponentType<T>,\n    config: YapDialogConfig = {},\n    additionalBehaviorAtClose?: () => void\n  ): YapDialogRef<T> {\n    const modalConfig = { ...DEFAULT_CONFIG, ...config };\n    const overlayRef = this.createOverlay<T>(modalConfig, component, additionalBehaviorAtClose);\n    const dialogRef = new YapDialogRef<T>(overlayRef);\n\n    dialogRef.component = this.attachModalContainer<T>(overlayRef, modalConfig, dialogRef, component);\n\n    this.store.dispatch(ConfigActions.addingOverlay({ id: component.name }));\n\n    return dialogRef;\n  }\n\n  private attachModalContainer<T>(\n    overlayRef: OverlayRef,\n    config: YapDialogConfig,\n    dialogRef: YapDialogRef<T>,\n    component: ComponentType<T>\n  ) {\n    const injector = this.createInjector(dialogRef, config);\n\n    const containerPortal = new ComponentPortal(component, null, injector);\n    const containerRef: ComponentRef<T> = overlayRef.attach(containerPortal);\n    return containerRef.instance;\n  }\n\n  private createInjector<T>(dialogRef: YapDialogRef<T>, config: YapDialogConfig): Injector {\n    const providers = [\n      { provide: YapDialogRef, useValue: dialogRef },\n      { provide: YAP_DIALOG_DATA, useValue: config.data }\n    ];\n    return Injector.create({ parent: this.injector, providers });\n  }\n\n  private getOverlayConfig(config: YapDialogConfig): OverlayConfig {\n    const positionStrategy = this.overlay.position().global().centerHorizontally().centerVertically();\n\n    return new OverlayConfig({\n      hasBackdrop: config.hasBackdrop,\n      backdropClass: config.backdropClass,\n      panelClass: config.panelClass,\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      positionStrategy\n    });\n  }\n\n  private createOverlay<T>(\n    config: YapDialogConfig,\n    component: ComponentType<T>,\n    additionalBehaviorAtClose?: () => void\n  ) {\n    const overlayConfig = config.overlayConfig ?? this.getOverlayConfig(config);\n    const overlay = this.overlay.create(overlayConfig);\n    overlay.backdropClick().subscribe(() => {\n      overlay.dispose();\n      if (!!additionalBehaviorAtClose) {\n        additionalBehaviorAtClose();\n      }\n      this.store.dispatch(ConfigActions.closeOverlay({ id: component.name }));\n    });\n    return overlay;\n  }\n}\n","import { Component, ElementRef, Inject, ViewChild } from '@angular/core';\nimport { Action, Store } from '@ngrx/store';\nimport { ConfigActions } from '../../store/config/config.actions';\nimport { YapDialogRef } from './dialog-ref';\nimport { YAP_DIALOG_DATA } from './dialog.service';\n\nexport interface YapDialogConfirmData {\n  title: string;\n  message?: string;\n  actions?: YapDialogConfirmAction[];\n}\n\nexport interface YapDialogConfirmAction {\n  id: number;\n  label: string;\n  icon?: string;\n  color?: 'primary' | 'secondary' | 'tertiary' | 'ghost';\n  actions?: Action[];\n}\n\n@Component({\n  selector: 'yap-dialog-confirm',\n  templateUrl: './dialog-confirm.component.html'\n})\nexport class YapDialogConfirmComponent {\n  @ViewChild('cross') cross!: ElementRef<HTMLButtonElement>;\n  @ViewChild('buttonAction') buttonAction!: ElementRef<HTMLDivElement>;\n\n  constructor(\n    private dialog: YapDialogRef<YapDialogConfirmComponent>,\n    @Inject(YAP_DIALOG_DATA) public data: YapDialogConfirmData,\n    private store: Store\n  ) {\n    setTimeout(() => {\n      this.cross.nativeElement.focus();\n      this.buttonAction.nativeElement.parentElement?.children[1].addEventListener('keydown', (event: Event) => {\n        if ((event as KeyboardEvent).key === 'Tab') {\n          this.focusCrossElement();\n        }\n      });\n    }, 10);\n  }\n\n  onClick(action?: YapDialogConfirmAction) {\n    if (action) {\n      if (action.actions) action.actions.forEach((action) => this.store.dispatch(action));\n      this.dialog.close(action);\n    } else {\n      this.dialog.close();\n    }\n    this.store.dispatch(ConfigActions.closeOverlay({ id: 'YapDialogConfirmComponent' }));\n  }\n\n  closeDialog() {\n    this.dialog.close();\n  }\n\n  focusCrossElement() {\n    this.cross.nativeElement.focus();\n  }\n}\n","<div\n  class=\"o-modal-wrapper\"\n  role=\"dialog\"\n  aria-modal=\"true\"\n  aria-labelledby=\"dialog_confirmDelete\"\n  (keydown.escape)=\"onClick()\"\n>\n  <div class=\"o-modal\">\n    <div class=\"o-modal__top\">\n      <div class=\"o-modal__top__title\">\n        <h2 class=\"a-h2\" id=\"dialog_title\">\n          {{ data.title | i18n }}\n        </h2>\n      </div>\n      <div class=\"o-modal__top__close\">\n        <button class=\"a-btn a-btn--icon-only\" (click)=\"closeDialog()\" #cross>\n          <yap-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.toolbox.close' | i18n }}</span>\n        </button>\n      </div>\n    </div>\n    <div>\n      <p *ngIf=\"data?.message as message\" class=\"a-p\">{{ message | i18n }}</p>\n    </div>\n    <div class=\"m-btn-group\">\n      <ng-container *ngFor=\"let action of data.actions\" #buttonAction>\n        <button\n          (click)=\"onClick(action)\"\n          class=\"a-btn\"\n          type=\"button\"\n          [class.a-btn--primary]=\"action.color === 'primary' || action.color === undefined\"\n          [class.a-btn--secondary]=\"action.color === 'secondary'\"\n          [class.a-btn--tertiary]=\"action.color === 'tertiary'\"\n          [class.a-btn--ghost]=\"action.color === 'ghost'\"\n          [ngClass]=\"{ 'a-btn--icon-text': action.icon }\"\n        >\n          <yap-icon *ngIf=\"action.icon\" [iconSvg]=\"action.icon\"></yap-icon>\n          {{ action.label | i18n }}\n        </button>\n      </ng-container>\n    </div>\n  </div>\n</div>\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const POSITIONS: { [key: string]: ConnectedPosition } = {\n  before: { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },\n  after: { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },\n  top: { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },\n  bottom: { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },\n  'start-top': { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n  'start-bottom': { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' }\n};\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewContainerRef\n} from '@angular/core';\nimport { POSITIONS } from './overlay.constantes';\n\n@Directive({ selector: '[yapOverlay]' })\nexport class YapOverlayDirective implements OnInit, OnDestroy {\n  @Input() yapOverlay!: TemplateRef<any>;\n  private overlayRef?: OverlayRef;\n\n  @Input() styleReversed = false;\n  @Input() yapOverlaySticky = false;\n  @Input() yapOverlayNoPadding = false;\n\n  @Input() set yapOverlayPosition(val: 'before' | 'after' | 'top' | 'bottom' | 'start-bottom' | 'start-top') {\n    this._position = val;\n    this.assignConnectedPositions();\n  }\n\n  private _position: 'before' | 'after' | 'top' | 'bottom' | 'start-top' | 'start-bottom' = 'bottom';\n  private _connectedPositions = [POSITIONS['bottom'], POSITIONS['top'], POSITIONS['after'], POSITIONS['before']];\n\n  @Input() set overlayOpen(val: boolean) {\n    const overlayOpen = this._overlayOpen;\n    this._overlayOpen = val;\n    if (overlayOpen !== this._overlayOpen && overlayOpen) {\n      this.closeOverlay();\n    } else if (overlayOpen !== this._overlayOpen && !overlayOpen) {\n      this.overlayRef?.attach(\n        new TemplatePortal(this.yapOverlay, this.viewContainerRef, { close: () => this.closeOverlay() })\n      );\n      this.overlayRef?.backdropClick().subscribe(() => this.closeOverlay());\n    }\n  }\n\n  @Output() overlayOpenChange = new EventEmitter<boolean>();\n  private _overlayOpen = false;\n  @Input() hasBackdrop = true;\n\n  constructor(private overlay: Overlay, private viewContainerRef: ViewContainerRef, private elementRef: ElementRef) {}\n\n  ngOnInit() {\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.elementRef)\n      .withViewportMargin(5)\n      .withPositions(this._connectedPositions);\n    const panelClass = ['yap-tooltip-container'];\n    this.styleReversed && panelClass.push('yap-tooltip-reversed');\n    this.yapOverlaySticky && panelClass.push('yap-overlay-sticky');\n    this.yapOverlayNoPadding && panelClass.push('yap-overlay-no-padding');\n    if (this.hasBackdrop) {\n      this.overlayRef = this.overlay.create({\n        hasBackdrop: true,\n        backdropClass: 'cdk-overlay-transparent-backdrop',\n        positionStrategy,\n        panelClass,\n        scrollStrategy: this.overlay.scrollStrategies.reposition({ autoClose: false })\n      });\n    } else {\n      this.overlayRef = this.overlay.create({\n        positionStrategy,\n        panelClass,\n        scrollStrategy: this.overlay.scrollStrategies.reposition({ autoClose: false })\n      });\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.closeOverlay();\n  }\n\n  private closeOverlay() {\n    this.overlayRef?.detach();\n    this.overlayOpenChange.emit(false);\n  }\n\n  private assignConnectedPositions() {\n    switch (this._position) {\n      case 'before':\n        this._connectedPositions = [POSITIONS['before'], POSITIONS['after'], POSITIONS['top'], POSITIONS['bottom']];\n        break;\n      case 'after':\n        this._connectedPositions = [POSITIONS['after'], POSITIONS['before'], POSITIONS['top'], POSITIONS['bottom']];\n        break;\n      case 'bottom':\n        this._connectedPositions = [POSITIONS['bottom'], POSITIONS['top'], POSITIONS['after'], POSITIONS['before']];\n        break;\n      case 'start-bottom':\n        this._connectedPositions = [\n          POSITIONS['start-bottom'],\n          POSITIONS['start-top'],\n          POSITIONS['after'],\n          POSITIONS['before']\n        ];\n        break;\n      case 'start-top':\n        this._connectedPositions = [\n          POSITIONS['start-top'],\n          POSITIONS['start-bottom'],\n          POSITIONS['after'],\n          POSITIONS['before']\n        ];\n        break;\n      case 'top':\n      default:\n        this._connectedPositions = [POSITIONS['top'], POSITIONS['bottom'], POSITIONS['after'], POSITIONS['before']];\n        break;\n    }\n  }\n}\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Directive, ElementRef, HostListener, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\n\nconst POSITIONS: { [key: string]: ConnectedPosition } = {\n  before: {\n    originX: 'start',\n    originY: 'center',\n    overlayX: 'end',\n    overlayY: 'center'\n  },\n  after: {\n    originX: 'end',\n    originY: 'center',\n    overlayX: 'start',\n    overlayY: 'center'\n  },\n  top: {\n    originX: 'center',\n    originY: 'top',\n    overlayX: 'center',\n    overlayY: 'bottom'\n  },\n  bottom: {\n    originX: 'center',\n    originY: 'bottom',\n    overlayX: 'center',\n    overlayY: 'top'\n  }\n};\n\n@Directive({ selector: '[yapTooltip]' })\nexport class YapTooltipDirective implements OnInit {\n  @Input() yapTooltip!: TemplateRef<any>;\n  private overlayRef?: OverlayRef;\n\n  @Input() styleReversed = false;\n  private _context: any = {};\n\n  @Input() set yapTooltipContext(context: any) {\n    Object.keys(context).forEach((key) => {\n      this._context[key] = context[key];\n    });\n  }\n\n  portalRef?: TemplatePortal<any>;\n\n  @Input() set yapTooltipPosition(val: 'before' | 'after' | 'top' | 'bottom') {\n    this._position = val;\n    this.assignConnectedPositions();\n  }\n\n  private _position: 'before' | 'after' | 'top' | 'bottom' = 'top';\n  private _connectedPositions = [POSITIONS['top'], POSITIONS['bottom'], POSITIONS['after'], POSITIONS['before']];\n\n  @Input() yapTooltipShowDelay: number = 300;\n  _timeout?: any;\n\n  constructor(private overlay: Overlay, private viewContainerRef: ViewContainerRef, private elementRef: ElementRef) {}\n\n  ngOnInit() {\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.elementRef)\n      .withViewportMargin(5)\n      .withPositions(this._connectedPositions);\n    const panelClass = this.styleReversed\n      ? ['yap-tooltip-container', 'yap-tooltip-reversed']\n      : ['yap-tooltip-container'];\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      panelClass\n    });\n  }\n\n  @HostListener('mouseenter')\n  show() {\n    this._timeout = setTimeout(() => {\n      this.portalRef = new TemplatePortal(this.yapTooltip, this.viewContainerRef, this._context);\n      this.overlayRef?.attach(this.portalRef);\n    }, this.yapTooltipShowDelay);\n  }\n\n  @HostListener('mouseout')\n  hide() {\n    clearTimeout(this._timeout);\n    this.overlayRef?.detach();\n  }\n\n  @HostListener('click')\n  hideOnClick() {\n    this.hide();\n  }\n\n  private assignConnectedPositions() {\n    switch (this._position) {\n      case 'before':\n        this._connectedPositions = [POSITIONS['before'], POSITIONS['after'], POSITIONS['top'], POSITIONS['bottom']];\n        break;\n      case 'after':\n        this._connectedPositions = [POSITIONS['after'], POSITIONS['before'], POSITIONS['top'], POSITIONS['bottom']];\n        break;\n      case 'bottom':\n        this._connectedPositions = [POSITIONS['bottom'], POSITIONS['top'], POSITIONS['after'], POSITIONS['before']];\n        break;\n      case 'top':\n      default:\n        this._connectedPositions = [POSITIONS['top'], POSITIONS['bottom'], POSITIONS['after'], POSITIONS['before']];\n        break;\n    }\n  }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { YapI18nModule } from '../../i18n/i18n.module';\nimport { YapIconModule } from '../icon/icon.module';\nimport { YapDialogConfirmComponent } from './dialog-confirm.component';\nimport { YapOverlayDirective } from './overlay.directive';\nimport { YapTooltipDirective } from './tooltip.directive';\n\n@NgModule({\n  declarations: [YapTooltipDirective, YapOverlayDirective, YapDialogConfirmComponent],\n  exports: [YapTooltipDirective, YapOverlayDirective, YapDialogConfirmComponent],\n  imports: [CommonModule, OverlayModule, YapIconModule, YapI18nModule]\n})\nexport class YapOverlayModule {}\n","import { createAction, props } from '@ngrx/store';\n\nexport interface Image {\n  image: string;\n  type: string[];\n}\n\nexport const ImageActions = {\n  load: createAction('[Image] Load Images'),\n  loadSuccess: createAction('[Image] Load Images Success', props<{ images: Image[] }>()),\n  loadFailure: createAction('[Image] Load Images Failure', props<{ error: string }>()),\n  add: createAction('[Image] Add Image', props<{ file: any; mediaType: string; imageType: string }>()),\n  added: createAction('[Image] Added Image', props<{ name: string }>()),\n  clearAdded: createAction('[Image] reset Added Image')\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { Image, ImageActions } from './image.actions';\n\nexport const imageFeatureKey = '@yap/image';\n\nexport interface ImageState {\n  loading: boolean;\n  list: Image[];\n  lastAdded?: string;\n}\n\nexport const initialImageState: ImageState = {\n  loading: false,\n  list: [],\n  lastAdded: undefined\n};\n\nexport const imageReducer = createReducer(\n  initialImageState,\n  on(ImageActions.load, (state) => ({\n    ...state,\n    loading: true\n  })),\n  on(ImageActions.loadSuccess, (state, action) => ({\n    ...state,\n    list: action.images,\n    loading: false\n  })),\n  on(ImageActions.added, (state, action) => ({\n    ...state,\n    lastAdded: action.name\n  })),\n  on(ImageActions.clearAdded, (state, action) => ({\n    ...state,\n    lastAdded: undefined\n  }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromImage from './image.reducer';\n\nconst feature = createFeatureSelector<fromImage.ImageState>(fromImage.imageFeatureKey);\nconst images = createSelector(feature, (state) => state);\nconst memoizeImageWithFilter = {} as any;\nconst imageWithFilter = (filter: string) => {\n  if (!memoizeImageWithFilter[filter]) {\n    memoizeImageWithFilter[filter] = createSelector(images, (images) =>\n      images.list.filter((image) => image.type.includes(filter))\n    );\n  }\n  return memoizeImageWithFilter[filter];\n};\nconst lastAdded = createSelector(feature, (state) => state.lastAdded);\n\nexport const ImagesSelectors = {\n  feature,\n  images,\n  imageWithFilter,\n  lastAdded\n};\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { Store } from '@ngrx/store';\nimport { map, mergeMap, Observable } from 'rxjs';\nimport { ConfigSelectors } from '../config/config.selectors';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RawService {\n  constructor(private httpClient: HttpClient, private store: Store, private domSanitizer: DomSanitizer) {}\n\n  get(itemId: string, attributeName: string): Observable<{ type: string; url: SafeUrl }> {\n    return this.store\n      .select(ConfigSelectors.dataUrl)\n      .pipe(\n        mergeMap((url) =>\n          this.httpClient.get(encodeURI(`${url}/file/id/${itemId}@${attributeName}`), {\n            observe: 'response',\n            responseType: 'blob'\n          })\n        )\n      )\n      .pipe(\n        map((response) => {\n          const header = response.headers.get('Content-Type') as string;\n          if (header.includes('video') || header.includes('image')) {\n            return {\n              type: header,\n              url: this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(response.body as Blob))\n            };\n          }\n          throw new Error('unknown doc type');\n        })\n      );\n  }\n\n  upload(file: any, fileName: string, mimeType: string): Observable<string> {\n    const formData = new FormData();\n    formData.append('file', file);\n    formData.append('filename', fileName);\n\n    return this.store.select(ConfigSelectors.dataUrl).pipe(\n      mergeMap((url) =>\n        this.httpClient.post<string>(`${url}/file`, formData, {\n          headers: new HttpHeaders({ 'File-Content-Type': mimeType })\n        })\n      )\n    );\n  }\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { filter } from 'rxjs/operators';\nimport { ImageActions } from '../../store/image/image.actions';\nimport { ImagesSelectors } from '../../store/image/image.selectors';\nimport { LibraryTypes } from '../../store/image/image.service';\nimport { RawService } from '../../store/raw/raw.service';\n\n@Component({\n  selector: 'yap-upload',\n  templateUrl: './upload.component.html'\n})\nexport class YapUploadComponent {\n  @Input() mode = 'icon';\n  @Input() accept: string = 'image/*';\n  @Input() labelTranslate: string = '@yap.action.upload';\n  @Output() uploaded = new EventEmitter<string>();\n  @Output() uploadedFile = new EventEmitter<File>();\n  @ViewChild('fileInput') fileInput!: ElementRef;\n\n  constructor(private store: Store, private rawService: RawService) {}\n\n  onFileSelect($event: Event) {\n    // @ts-ignore\n    const files = $event?.target.files;\n    if (files.length > 0) {\n      switch (this.mode) {\n        case LibraryTypes.ICON:\n          this.store.dispatch(\n            ImageActions.add({\n              file: files[0],\n              mediaType: files[0].type,\n              imageType: LibraryTypes.ICON\n            })\n          );\n          this.asyncEmit(files[0]);\n          break;\n        case LibraryTypes.ILLUSTRATION:\n          this.store.dispatch(\n            ImageActions.add({\n              file: files[0],\n              mediaType: files[0].type,\n              imageType: LibraryTypes.ILLUSTRATION\n            })\n          );\n          this.asyncEmit(files[0]);\n          break;\n        case 'csv':\n          this.uploaded.emit(files[0].name);\n          this.uploadedFile.emit(files[0]);\n          break;\n        default:\n          this.rawService.upload(files[0], files[0].name, files[0].type).subscribe((id) => {\n            this.uploaded.emit(id);\n            this.uploadedFile.emit(files[0]);\n          });\n      }\n    }\n    this.fileInput.nativeElement.value = null;\n  }\n\n  asyncEmit(file: File) {\n    const tmpSub = this.store\n      .select(ImagesSelectors.lastAdded)\n      .pipe(filter((image) => !!image))\n      .subscribe((name) => {\n        this.uploaded.emit(name);\n        this.uploadedFile.emit(file);\n        setTimeout(() => {\n          tmpSub.unsubscribe();\n          this.store.dispatch(ImageActions.clearAdded());\n        }, 100);\n      });\n  }\n}\n","<input type=\"file\" (change)=\"onFileSelect($event)\" #fileInput hidden [accept]=\"accept\" />\n<button class=\"a-btn a-btn--secondary -size-sm\" type=\"button\" (click)=\"fileInput.click()\">\n  <yap-icon [height]=\"20\" [width]=\"20\" iconSvg=\"upload\"> </yap-icon>\n  <span>{{ labelTranslate | i18n }}</span>\n</button>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { ConfigActions } from '../../store/config/config.actions';\nimport { Image, ImageActions } from '../../store/image/image.actions';\nimport { ImageState } from '../../store/image/image.reducer';\nimport { ImagesSelectors } from '../../store/image/image.selectors';\nimport { LibraryTypes } from '../../store/image/image.service';\n\nlet uniqueId = 0;\n\n@Component({\n  selector: 'yap-select-image',\n  templateUrl: './select-image.component.html'\n})\nexport class YapSelectImageComponent implements OnInit {\n  @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n  overlayRef?: OverlayRef;\n  @Output() toggled = new EventEmitter<boolean>();\n  @Output() changed = new EventEmitter<string>();\n  @Input() iconUrl = '';\n  @Input() size = 50;\n  @Input() mode: string = LibraryTypes.ICON;\n  id: number;\n  images$?: Observable<Image[]>;\n  loading$: Observable<ImageState>;\n\n  constructor(private store: Store, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {\n    this.store.dispatch(ImageActions.load());\n    this.id = uniqueId++;\n    this.loading$ = this.store.select(ImagesSelectors.images);\n  }\n\n  ngOnInit() {\n    this.images$ = this.store.select(ImagesSelectors.imageWithFilter(this.mode));\n  }\n\n  toggleImageChoice($event?: MouseEvent) {\n    if (!this.overlayRef) {\n      this.overlayRef = this.overlay.create(\n        new OverlayConfig({\n          hasBackdrop: true,\n          panelClass: ['image-choice-menu', `image-choice-menu-${this.id}`]\n        })\n      );\n      this.store.dispatch(ConfigActions.addingOverlay({ id: 'ImageChoice' }));\n      this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n      this.overlayRef.backdropClick().subscribe(() => this.toggleImageChoice());\n      const contextMenu = document.querySelector(`.image-choice-menu-${this.id}`) as HTMLDivElement;\n      if (!!contextMenu && !!$event) {\n        contextMenu.style.left = $event.clientX - 30 + 'px';\n        contextMenu.style.top = $event.clientY - 30 + 'px';\n      }\n      this.toggled.next(true);\n    } else {\n      this.store.dispatch(ConfigActions.closeOverlay({ id: 'ImageChoice' }));\n      this.overlayRef?.dispose();\n      this.overlayRef = undefined;\n      this.toggled.next(false);\n    }\n  }\n  changeForImage(icon: string) {\n    const newImage = 'internal:' + icon;\n    this.changed.next(newImage);\n    if (this.overlayRef) {\n      this.changed.next(icon);\n      this.toggleImageChoice();\n    }\n  }\n}\n","<div class=\"select-image\">\n  <div class=\"select-image__select\">\n    <button type=\"button\" class=\"a-btn a-btn--icon-only\" id=\"button-{{ id }}\" (click)=\"toggleImageChoice($event)\">\n      <img alt=\"\" [height]=\"size\" [width]=\"size\" [src]=\"iconUrl | getSecuredImage | async\" />\n      <span class=\"u-visually-hidden\">{{ '@yap.action.selectPicture' | i18n }}</span>\n    </button>\n  </div>\n\n  <div class=\"select-image__add\">\n    <div class=\"m-file-upload\">\n      <yap-upload (uploaded)=\"changeForImage($event)\" [mode]=\"mode\"></yap-upload>\n    </div>\n  </div>\n</div>\n\n<ng-template #template>\n  <ul class=\"overlay overlay--icons\" *ngIf=\"images$ | async as images\">\n    <ng-container *ngIf=\"!(loading$ | async)?.loading\">\n      <li class=\"overlay__point\" *ngFor=\"let image of images\">\n        <button class=\"a-btn a-btn--icon-only\" type=\"button\" (click)=\"changeForImage(image.image)\">\n          <img [alt]=\"image.image\" [height]=\"size\" [width]=\"size\" [src]=\"image.image | getSecuredImage | async\" />\n        </button>\n      </li>\n    </ng-container>\n  </ul>\n</ng-template>\n","export const DEFAULT_NAMED_QUERY_ID = '007';\nexport const EXPLORE_NAMED_QUERY_ID = '008';\n","import { createReducer, on } from '@ngrx/store';\nimport { Dataset, DatasetError } from '../../model/dataset.interface';\nimport { DataSourceActions } from './data-source.actions';\nimport { DatasetVersion, NamedQuery } from './data-source.model';\n\nexport const dataSourceFeatureKey = '@yap/datasources';\n\nexport interface DataSourceState {\n  isLoading: boolean;\n  list: NamedQuery[];\n  currentEdit?: NamedQuery;\n  fromWidget?: { widgetIndex: number; editedQuery: string };\n  isRename: boolean;\n  datasets: Dataset[];\n  selectedDataset: Dataset | null;\n  error?: Error;\n  datasetVersions: DatasetVersion[];\n  selectedDatasetVersion: DatasetVersion | null;\n  errors: DatasetError[];\n}\n\nexport const initialDataSourceState: DataSourceState = {\n  isLoading: false,\n  list: [],\n  isRename: false,\n  selectedDataset: null,\n  datasets: [],\n  datasetVersions: [],\n  selectedDatasetVersion: null,\n  errors: []\n};\n\nexport const dataSourceReducer = createReducer(\n  initialDataSourceState,\n  on(DataSourceActions.namedQuery.load, (state) => ({ ...state, error: undefined, isLoading: true })),\n  on(DataSourceActions.namedQuery.loaded, (state, action) => ({ ...state, list: action.list, isLoading: false })),\n  on(DataSourceActions.namedQuery.delete, (state, action) => ({ ...state, error: undefined, isLoading: false })),\n  on(DataSourceActions.namedQuery.failure, (state, action) => ({ ...state, error: action.error, isLoading: false })),\n  on(DataSourceActions.namedQuery.openEdit, (state, action) => ({\n    ...state,\n    isLoading: false,\n    currentEdit: action.currentEdit,\n    fromWidget:\n      action.widgetIndex !== undefined\n        ? {\n            widgetIndex: action.widgetIndex,\n            editedQuery: action.currentEdit.id\n          }\n        : undefined\n  })),\n  on(DataSourceActions.namedQuery.stopEdit, (state) => ({\n    ...state,\n    currentEdit: undefined,\n    fromWidget: undefined,\n    isLoading: false\n  })),\n  on(DataSourceActions.namedQuery.updateCurrentEdit, (state, action) => ({\n    ...state,\n    // @ts-ignore\n    currentEdit: {\n      ...state.currentEdit,\n      ...action.currentEdit\n    }\n  })),\n  on(DataSourceActions.namedQuery.openRename, (state) => ({ ...state, isRename: true })),\n  on(DataSourceActions.namedQuery.stopRename, (state) => ({ ...state, isRename: false })),\n  on(DataSourceActions.dataset.loadDataset, (state) => ({ ...state, error: undefined, isLoading: true })),\n  on(DataSourceActions.dataset.loadedDataset, (state, action) => ({\n    ...state,\n    datasets: action.datasets,\n    isLoading: false\n  })),\n  on(DataSourceActions.dataset.unselectDataset, (state) => ({\n    ...state,\n    selectedDataset: null\n  })),\n  on(DataSourceActions.dataset.selectDataset, (state, action) => ({\n    ...state,\n    selectedDataset: action.dataset\n  })),\n  on(DataSourceActions.dataset.failure, (state, action) => ({\n    ...state,\n    error: action.error,\n    isLoading: false\n  })),\n  on(DataSourceActions.dataset.getDatasetById, (state, action) => ({\n    ...state,\n    loading: true\n  })),\n  on(DataSourceActions.dataset.getDatasetByIdSuccess, (state, action) => ({\n    ...state,\n    selectedDataset: action.data,\n    loading: false\n  })),\n  on(DataSourceActions.dataset.getDatasetByIdFailure, (state, action) => ({\n    ...state,\n    error: action.error,\n    loading: false\n  })),\n  on(DataSourceActions.dataset.listVersions, (state, action) => ({\n    ...state,\n    loading: true\n  })),\n  on(DataSourceActions.dataset.listVersionsSuccess, (state, action) => ({\n    ...state,\n    loading: false,\n    datasetVersions: action.versions\n  })),\n  on(DataSourceActions.dataset.selectedDatasetVersion, (state, action) => ({\n    ...state,\n    matchingDatasetVersions: action.version\n  })),\n  on(DataSourceActions.dataset.listVersionsFailure, (state, action) => ({\n    ...state,\n    loading: false\n  })),\n  on(DataSourceActions.dataset.errors.getById, (state, action) => ({\n    ...state,\n    loading: true\n  })),\n  on(DataSourceActions.dataset.errors.getByIdSuccess, (state, action) => ({\n    ...state,\n    errors: action.errors,\n    loading: false\n  })),\n  on(DataSourceActions.dataset.errors.getByIdFailure, (state, action) => ({\n    ...state,\n    error: action.error,\n    errors: [],\n    loading: false\n  }))\n);\n","export enum NamedQueryTypes {\n  MONO_CLASS = 'MONO_CLASS',\n  MULTI_CLASS = 'MULTI_CLASS',\n  FULL_TEXT = 'FULL_TEXT'\n}\n","import { MonoClassSearchPayload } from '../../model/search-mono-class.model';\nimport { FullTextSearchPayload, MultiClassSearchPayload } from '../../model/search-multi-class.model';\nimport { NamedQueryTypes } from './named-query-types.model';\n\nexport class NamedQueryUtils {\n  static getTypeFromPayload(\n    payload: MonoClassSearchPayload | MultiClassSearchPayload | FullTextSearchPayload | undefined\n  ) {\n    return payload === undefined\n      ? undefined\n      : payload.type === NamedQueryTypes.MONO_CLASS\n      ? NamedQueryTypes.MONO_CLASS\n      : payload.fullSearch === null\n      ? NamedQueryTypes.MULTI_CLASS\n      : NamedQueryTypes.FULL_TEXT;\n  }\n}\n","import { createFeatureSelector, createSelector, MemoizedSelector } from '@ngrx/store';\nimport { DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID } from '../search/search.constants';\nimport { DatasetVersion, DataSource } from './data-source.model';\nimport { dataSourceFeatureKey, DataSourceState } from './data-source.reducer';\nimport { NamedQueryUtils } from './named-query-utils';\n\nconst selectFeature = createFeatureSelector<DataSourceState>(dataSourceFeatureKey);\n\nconst getNamedQuery = createSelector(selectFeature, (state) => state);\nconst getAllNamedQuery = createSelector(selectFeature, (state) => state.list);\nconst getNamedQuerySorted = createSelector(selectFeature, (state) => {\n  const list = [...state.list]\n    .filter((nq) => nq.id !== DEFAULT_NAMED_QUERY_ID && nq.id !== EXPLORE_NAMED_QUERY_ID)\n    .sort((a, b) => {\n      const pastDate = new Date(1);\n      const dateA = a.lastExecutionDate ? new Date(a.lastExecutionDate) : pastDate;\n      const dateB = b.lastExecutionDate ? new Date(b.lastExecutionDate) : pastDate;\n      return dateB.getTime() - dateA.getTime();\n    })\n    .sort((a, b) => Number(b.favorite) - Number(a.favorite));\n  return list.length > 9 ? list.slice(0, 10) : list;\n});\nconst editInProgress = createSelector(selectFeature, (state) => !!state.currentEdit);\nconst currentEditType = createSelector(selectFeature, (state) =>\n  NamedQueryUtils.getTypeFromPayload(state.currentEdit?.request)\n);\nconst currentEdit = createSelector(selectFeature, (state) => state.currentEdit);\nconst isRename = createSelector(selectFeature, (state) => state.isRename);\nconst editFromWidget = createSelector(selectFeature, (state) => state.fromWidget);\nconst datasets = createSelector(selectFeature, (state) => state.datasets);\nconst errors = createSelector(selectFeature, (state) => state.error);\nconst isLoading = createSelector(selectFeature, (state) => state.isLoading);\nconst getDataSources = createSelector(getAllNamedQuery, datasets, (nqs, dsd) => [...nqs, ...dsd] as DataSource[]);\nconst getDataSourcesSorted = createSelector(\n  getAllNamedQuery,\n  datasets,\n  (nqs, dsd) =>\n    [...nqs, ...dsd].sort((nq1, nq2) => nq1.name.toLowerCase().localeCompare(nq2.name.toLowerCase())) as DataSource[]\n);\nconst selectedDatasetId = createSelector(selectFeature, (state) => state?.selectedDataset?.id);\nconst selectedDataset = createSelector(selectFeature, (state) => state?.selectedDataset);\nconst selectedDatasetMetadata = createSelector(selectFeature, (state) => state?.selectedDataset?.metadata ?? []);\nconst datasetVersions = createSelector(selectFeature, (state) => state?.datasetVersions ?? []);\nconst memoizeDatasetVersions = {} as any;\nconst matchingDatasetVersions = (datasetId: string) => {\n  if (!memoizeDatasetVersions[datasetId]) {\n    memoizeDatasetVersions[datasetId] = createSelector(datasetVersions, (datasetVersions) => {\n      return datasetVersions.filter((datasetVersion: DatasetVersion) => datasetVersion.dataset === datasetId);\n    });\n  }\n\n  return memoizeDatasetVersions[datasetId] as MemoizedSelector<any, DatasetVersion[]>;\n};\nconst datasetErrors = createSelector(selectFeature, (state) => state?.errors ?? []);\n\nexport const DataSourceSelectors = {\n  selectFeature,\n  getNamedQuery,\n  getAllNamedQuery,\n  getNamedQuerySorted,\n  editInProgress,\n  currentEditType,\n  currentEdit,\n  isRename,\n  editFromWidget,\n  datasets,\n  errors,\n  isLoading,\n  getDataSources,\n  getDataSourcesSorted,\n  selectedDataset,\n  selectedDatasetMetadata,\n  datasetVersions,\n  selectedDatasetId,\n  matchingDatasetVersions,\n  datasetErrors\n};\n","import { createAction, props } from '@ngrx/store';\n\nimport { Field } from './field.interface';\n\nexport const FieldActions = {\n  load: createAction('[Field] Load Fields'),\n  loadSuccess: createAction('[Field Api] (bus) Load Fields Success', props<{ fields: Field[] }>()),\n  loadFailure: createAction('[Field Api] Load Fields Failure', props<{ error: string }>())\n};\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { FieldActions } from './field.actions';\nimport { Field } from './field.interface';\n\nexport const fieldsFeatureKey = '@yap/model/fields';\n\nexport interface FieldState extends EntityState<Field> {\n  // additional entities state properties\n}\n\nexport function sortByName(a: Field, b: Field): number {\n  return a.name.localeCompare(b.name);\n}\n\nexport const adapter: EntityAdapter<Field> = createEntityAdapter<Field>({\n  sortComparer: sortByName\n});\n\nexport const initialState: FieldState = adapter.getInitialState({\n  // additional entity state properties\n});\n\nconst internalReducer = createReducer(\n  initialState,\n  on(FieldActions.loadSuccess, (state, action) => adapter.setAll(action.fields, state))\n);\n\nexport const { selectIds, selectEntities, selectAll, selectTotal } = adapter.getSelectors();\n\nexport function fieldReducer(state: FieldState, action: Action) {\n  return internalReducer(state, action);\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromField from './field.reducer';\n\nconst feature = createFeatureSelector<fromField.FieldState>(fromField.fieldsFeatureKey);\nconst entities = createSelector(feature, fromField.selectEntities);\nconst fields = createSelector(feature, fromField.selectAll);\n\nconst memoizeFieldById = {} as any;\nconst fieldById = (id: string) => {\n  if (!memoizeFieldById[id]) {\n    memoizeFieldById[id] = createSelector(entities, (entities: { [x: string]: any }) => entities[id]);\n  }\n  return memoizeFieldById[id];\n};\n\nexport const FieldSelectors = {\n  feature,\n  entities,\n  fields,\n  fieldById\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SafeUrl } from '@angular/platform-browser';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, filter, from, map, mergeMap, Observable, of } from 'rxjs';\nimport { YapI18nService } from '../../i18n/i18n.service';\nimport { Class } from '../../store/class/class.interface';\nimport { ClassSelectors } from '../../store/class/class.selectors';\nimport { ConfigSelectors } from '../../store/config/config.selectors';\nimport { DEFAULT_ICON_URL, IconDefinitions } from '../../store/config/icon-definitions.interface';\nimport { DataSource, NamedQuery } from '../../store/data-source/data-source.model';\nimport { DataSourceSelectors } from '../../store/data-source/data-source.selectors';\nimport { NamedQueryTypes } from '../../store/data-source/named-query-types.model';\nimport { Field } from '../../store/field/field.interface';\nimport { FieldSelectors } from '../../store/field/field.selectors';\nimport { ImageService } from '../../store/image/image.service';\nimport { DEFAULT_NAMED_QUERY_ID } from '../../store/search/search.constants';\nimport { SymbolService } from '../../symbol/symbol.service';\n\nexport const UNKNOWN_DATASOURCE = (id: string) =>\n  ({\n    id: id,\n    color: '#FFFFFF',\n    name: id,\n    request: { fullSearch: { value: '???' } }\n  } as NamedQuery);\n\n@Pipe({\n  name: 'translateId'\n})\nexport class TranslateIdPipe implements PipeTransform {\n  constructor(\n    private store: Store<any>,\n    private translateService: YapI18nService,\n    private imageService: ImageService,\n    private symbolService: SymbolService\n  ) {}\n\n  transform(value: string | string[], ...args: unknown[]): Observable<string | string[] | SafeUrl> {\n    const config = args[0] as\n      | { type: 'field' }\n      | { type: 'class'; output: 'icon' | 'name' }\n      | { type: 'datasource'; output: 'icon' | 'name' | 'color' };\n    switch (config.type) {\n      case 'field':\n        return this.store\n          .select(FieldSelectors.fields)\n          .pipe(map((fields: Field[]) => fields?.find((f) => f.id === value)?.name ?? value));\n      case 'class':\n        if (config.output === 'icon') {\n          return from(this.symbolService.getSymbolOfClass(<string>value));\n        } else {\n          return this.store\n            .select(ClassSelectors.classes)\n            .pipe(map((classes: Class[]) => classes?.find((cl) => cl.id === value)?.name ?? value));\n        }\n      case 'datasource':\n        const valueAsArray: string[] = typeof value === 'string' ? [value as string] : (value as unknown as string[]);\n\n        switch (config.output) {\n          case 'name':\n            return this.store\n              .select(DataSourceSelectors.getDataSources)\n              .pipe(\n                map((datasources) =>\n                  valueAsArray.map((value) =>\n                    value === DEFAULT_NAMED_QUERY_ID\n                      ? this.translateService.instant('@yap.widget.namedQuery.defaultRs')\n                      : datasources.find((nq) => nq.id === value)?.name ?? value\n                  )\n                )\n              );\n          case 'color':\n            return this.store\n              .select(DataSourceSelectors.getNamedQuery)\n              .pipe(\n                map((nqs) => valueAsArray.map((value) => nqs.list.find((nq) => nq.id === value)?.color ?? '#FFFFFF'))\n              );\n          case 'icon':\n            return combineLatest([\n              this.store.select(DataSourceSelectors.getDataSources),\n              this.store.select(ConfigSelectors.iconDefinitions),\n              this.store.select(ClassSelectors.classes)\n            ]).pipe(\n              map(\n                ([dss, iconDefs, classes]) =>\n                  [\n                    (valueAsArray ?? []).map((value) => {\n                      return dss.find((ds) => ds.id === value) ?? UNKNOWN_DATASOURCE(value);\n                    })[0],\n                    iconDefs,\n                    classes\n                  ] as [DataSource, IconDefinitions, Class[]]\n              ),\n              filter(([oDs, iconDefs, classes]) => !!oDs),\n              map(([oDs, iconDefs, classes]) => {\n                if (oDs.sourceType === 'dataset') {\n                  return {\n                    promise: this.symbolService.getSymbolOfClass(oDs.oClass),\n                    url: ''\n                  };\n                }\n                if (oDs.request) {\n                  switch (oDs.request.type) {\n                    case NamedQueryTypes.MONO_CLASS:\n                      return {\n                        promise: this.symbolService.getSymbolOfClass(oDs.request.oClass),\n                        url: ''\n                      };\n                    case NamedQueryTypes.MULTI_CLASS:\n                      if (oDs.request.fullSearch) {\n                        return { promise: null, url: 'assets/svgs/save-line.svg' };\n                      } else {\n                        return { promise: null, url: 'assets/svgs/graph.svg' };\n                      }\n                    default:\n                      return { promise: null, url: DEFAULT_ICON_URL };\n                  }\n                } else {\n                  return { promise: null, url: DEFAULT_ICON_URL };\n                }\n              }),\n              mergeMap((info) => {\n                if (info.promise) {\n                  return from(info.promise);\n                }\n                return of(info.url);\n              })\n            );\n        }\n    }\n    return of(value);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { from, Observable } from 'rxjs';\nimport { YapI18nService } from '../../i18n/i18n.service';\nimport { Item } from '../../model/item.interface';\nimport { ImageService } from '../../store/image/image.service';\nimport { SymbolService } from '../../symbol/symbol.service';\n\n@Pipe({\n  name: 'translateItemToSymbol'\n})\nexport class TranslateItemToSymbolPipe implements PipeTransform {\n  constructor(\n    private store: Store<any>,\n    private translateService: YapI18nService,\n    private imageService: ImageService,\n    private symbolService: SymbolService\n  ) {}\n\n  transform(value: Item, ...args: unknown[]): Observable<string> {\n    return from(\n      new Promise<string>((resolve) =>\n        this.symbolService.getSymbol(value).then((canvas) => resolve(canvas.toDataURL('image/png')))\n      )\n    );\n  }\n}\n","import { createAction, props } from '@ngrx/store';\nimport { Category } from './category.interface';\n\nexport const CategoryActions = {\n  load: createAction('[Category] Load Categories'),\n  loadSuccess: createAction('[Category Api] (bus) Load Categories Success', props<{ categories: Category[] }>()),\n  loadFailure: createAction('[Category Api] Load Categories Failure', props<{ error: string }>())\n};\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { mergeMap, Observable } from 'rxjs';\nimport { Category } from './category.interface';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '../config/config.selectors';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CategoryService {\n  constructor(private httpClient: HttpClient, private store: Store<any>) {}\n\n  getCategories(): Observable<Array<Category>> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<Array<Category>>(encodeURI(`${url}/model/categories`))));\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { CategoryActions } from './category.actions';\nimport { CategoryService } from './category.service';\n\n@Injectable()\nexport class CategoryEffects {\n  loadCategories$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(CategoryActions.load),\n      debounceTime(200),\n      mergeMap((action) =>\n        this.categoryService.getCategories().pipe(\n          map((categories) => CategoryActions.loadSuccess({ categories })),\n          catchError((error) => [CategoryActions.loadFailure({ error: error })])\n        )\n      )\n    )\n  );\n\n  constructor(private actions$: Actions, private categoryService: CategoryService) {}\n}\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\nimport { Category } from './category.interface';\nimport { CategoryActions } from './category.actions';\n\nexport const categoriesFeatureKey = '@yap/model/categories';\n\nexport interface CategoryState extends EntityState<Category> {\n  // additional entities state properties\n}\n\nexport function sortByName(a: Category, b: Category): number {\n  return a.name.localeCompare(b.name);\n}\n\nexport const adapter: EntityAdapter<Category> = createEntityAdapter<Category>({\n  sortComparer: sortByName\n});\n\nexport const initialCassState: CategoryState = adapter.getInitialState({\n  // additional entity state properties\n});\n\nconst internalReducer = createReducer(\n  initialCassState,\n  on(CategoryActions.loadSuccess, (state, action) => adapter.setAll(action.categories, state))\n);\n\nexport const { selectIds, selectEntities, selectAll, selectTotal } = adapter.getSelectors();\n\nexport function categoryReducer(state: CategoryState, action: Action) {\n  return internalReducer(state, action);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { mergeMap, Observable } from 'rxjs';\nimport { ConfigSelectors } from '../config/config.selectors';\nimport { BusinessData, Class } from './class.interface';\nimport { DatasetCount } from '../../model/dataset.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ClassService {\n  constructor(private httpClient: HttpClient, private store: Store<any>) {}\n\n  /**\n   * Returns the list of business classes\n   */\n  getClasses(): Observable<Array<Class>> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<Array<Class>>(encodeURI(`${url}/model/class`))));\n  }\n\n  /**\n   * Returns classes usage\n   */\n  getBusinessDatas(): Observable<BusinessData[]> {\n    return this.store\n      .select(ConfigSelectors.monitorUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<BusinessData[]>(encodeURI(`${url}/businessdata`))));\n  }\n\n  getDatasetCounts(): Observable<DatasetCount[]> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<DatasetCount[]>(encodeURI(`${url}/model/class/datasets/count`))));\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { ClassActions } from './class.actions';\nimport { ClassService } from './class.service';\n\n@Injectable()\nexport class ClassEffects {\n  loadClasses$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ClassActions.load),\n      debounceTime(200),\n      mergeMap((action) =>\n        this.classService.getClasses().pipe(\n          map((classes) => ClassActions.loadSuccess({ classes })),\n          catchError((error) => [ClassActions.loadFailure({ error: error })])\n        )\n      )\n    )\n  );\n\n  loadBusinessData$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ClassActions.loadBusinessData),\n      mergeMap((action) =>\n        this.classService.getBusinessDatas().pipe(\n          map((businessData) => {\n            return ClassActions.loadBusinessDataSuccess({ datas: businessData });\n          }),\n          catchError((error) => [ClassActions.loadBusinessDataFailure({ error: error })])\n        )\n      )\n    )\n  );\n\n  loadDatasetCount$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ClassActions.loadDatasetCount),\n      mergeMap((action) =>\n        this.classService.getDatasetCounts().pipe(\n          map((datasetCounts) => {\n            return ClassActions.loadDatasetCountSuccess({ datasetCounts: datasetCounts });\n          }),\n          catchError((error) => [ClassActions.loadDatasetCountFailure({ error: error })])\n        )\n      )\n    )\n  );\n\n  constructor(private actions$: Actions, private classService: ClassService) {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, mergeMap, Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { YapSnackbarService } from '../../components/snackbar/snackbar.service';\nimport { YapI18nService } from '../../i18n/i18n.service';\nimport { Widget } from '../../model/widget.interface';\nimport { DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID } from '../search/search.constants';\nimport { ConfigSelectors } from './config.selectors';\n\nexport interface ParamContent {\n  domain: string;\n  oClass: string;\n  content: string;\n}\n\nexport const SYMBOL_DOMAIN = 'symbol';\nexport const TABLE_ATTR_DOMAIN = 'tableAttr';\nexport const TOOLTIPS_DOMAIN = 'tooltips';\nexport const FILTERS_DOMAIN = 'filters';\nexport const TILE_ATTR_DOMAIN = 'tileAttr';\n\n@Injectable()\nexport class ConfigService {\n  static warn = true;\n  constructor(\n    private httpClient: HttpClient,\n    private store: Store<any>,\n    private snackBar: YapSnackbarService,\n    private translateService: YapI18nService\n  ) {}\n\n  /**\n   * Returns the list of icons rules for each class\n   */\n  getAllClassParams(): Observable<ParamContent[]> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<ParamContent[]>(encodeURI(`${url}/customclass/all/param`))));\n  }\n\n  /**\n   * Save the definitions from specified domain\n   * @param definitions\n   * @param domain\n   */\n  saveDefinitions(definitions: any, domain: string): Observable<void[]> {\n    return this.store.select(ConfigSelectors.refUrl).pipe(\n      mergeMap((url) => {\n        // Launching a request for each indicated class, in parallel\n        const requests = Object.keys(definitions)\n          .filter((classId) => classId !== 'default')\n          .map((classId) =>\n            this.httpClient.put<void>(\n              encodeURI(`${url}/customclass/id/${classId}/param/${domain}`),\n              definitions[classId]\n            )\n          );\n        return forkJoin(requests);\n      })\n    );\n  }\n\n  /**\n   * Save a widget configuration\n   * @param widget\n   */\n  saveWidget(widget: Widget) {\n    const params = {\n      ...widget,\n      datasource: widget.datasource.filter((ds) => ![DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID].includes(ds))\n    };\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/widget/catalog`), params)));\n  }\n\n  /**\n   * Delete a widget configuration\n   * @param id\n   */\n  deleteRestitution(id: string) {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/widget/catalog/id/${id}`))));\n  }\n\n  /**\n   * Get a list of all widgets from catalog\n   */\n  getAllWidgets(): Observable<Widget[]> {\n    return this.store.select(ConfigSelectors.refUrl).pipe(\n      mergeMap((url) => this.httpClient.get<Widget[]>(encodeURI(`${url}/widget/catalog`))),\n      catchError((error) => {\n        if (error.error instanceof Error) {\n          // A client-side or network error occurred\n          if (ConfigService.warn) {\n            console.error('A frontend error occurred:', error.error.message);\n          }\n          this.snackBar.open({\n            type: 'error',\n            message: this.translateService.instant('@yap.manifest.get.errorFront', { msg: error.error.message })\n          });\n        } else {\n          // The backend returned an unsuccessful response code.\n          if (ConfigService.warn) {\n            console.error(`Backend returned code ${error.status}, body was: ${JSON.stringify(error.error)}`);\n          }\n          if (error.code !== 204) {\n            this.snackBar.open({\n              type: 'error',\n              message: this.translateService.instant('@yap.manifest.get.errorBack', {\n                code: error.status\n              })\n            });\n          }\n        }\n        return of([]);\n      })\n    );\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { map, mergeMap, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { ConfigSelectors } from './config.selectors';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OpenMapTilesService {\n  h3Regexp = new RegExp(/<h3>(.*?)<.h3>/gm);\n  pRegexp = new RegExp(/<p class=\"identifier\">(.*?)<.p>/gm);\n\n  constructor(private httpClient: HttpClient, private store: Store) {}\n\n  getStyles(): Observable<{ identifier: string; label: string }[]> {\n    return this.store.select(ConfigSelectors.mapUrl).pipe(\n      filter((mapUrl) => !!mapUrl),\n      mergeMap((url) => this.httpClient.get(encodeURI(`${url}`), { responseType: 'text' })),\n      map((html) => {\n        const h3matches = html.match(this.h3Regexp);\n        const pMatches = html.match(this.pRegexp);\n        return (\n          h3matches\n            ?.filter((match, idx) => match.length > 9 && !!pMatches && pMatches[idx])\n            .map((match, idx) => ({\n              label: match.replace('<h3>', '').replace('</h3>', ''),\n              // @ts-ignore\n              identifier: pMatches[idx].replace('<p class=\"identifier\">identifier: ', '').replace('</p>', '')\n            })) ?? ([] as { identifier: string; label: string }[])\n        ).sort((a, b) => a.label.localeCompare(b.label));\n      })\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { filter, map, mergeMap, tap, withLatestFrom } from 'rxjs/operators';\nimport { ConfigActions } from './config.actions';\nimport { ConfigSelectors } from './config.selectors';\nimport {\n  ConfigService,\n  FILTERS_DOMAIN,\n  SYMBOL_DOMAIN,\n  TABLE_ATTR_DOMAIN,\n  TILE_ATTR_DOMAIN,\n  TOOLTIPS_DOMAIN\n} from './config.service';\nimport { ChartOptionDefault } from './config.widget.constants';\nimport { OpenMapTilesService } from './open-map-tiles.service';\nimport { YapSnackbarService } from '../../../core/components/snackbar/snackbar.service';\nimport { YapI18nService } from '../../../core/i18n/i18n.service';\nimport { catchError, throwError } from 'rxjs';\n\n@Injectable()\nexport class ConfigEffects {\n  mapStyles$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ConfigActions.getMapStyles),\n      withLatestFrom(this.store.select(ConfigSelectors.mapStyles)),\n      filter(([action, mapStyles]) => !mapStyles || mapStyles.length === 0),\n      mergeMap(([action]) =>\n        this.openMapTilesService.getStyles().pipe(map((styles) => ConfigActions.defineMapStyles({ styles })))\n      )\n    )\n  );\n\n  saveIconDefinitions$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ConfigActions.saveIcons),\n      mergeMap((action) =>\n        this.configService\n          .saveDefinitions(action.definitions, SYMBOL_DOMAIN)\n          .pipe(map(() => ConfigActions.loadCustomization()))\n      )\n    )\n  );\n\n  saveTableAttributes$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ConfigActions.saveTableDefaultAttributes),\n      mergeMap((action) =>\n        this.configService\n          .saveDefinitions(action.definitions, TABLE_ATTR_DOMAIN)\n          .pipe(map(() => ConfigActions.loadCustomization()))\n      )\n    )\n  );\n\n  saveTileAttributes$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ConfigActions.saveTileAttributes),\n      mergeMap((action) =>\n        this.configService\n          .saveDefinitions(action.definitions, TILE_ATTR_DOMAIN)\n          .pipe(map(() => ConfigActions.loadCustomization()))\n      )\n    )\n  );\n\n  saveTemplates$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ConfigActions.saveTooltip),\n      mergeMap((action) =>\n        this.configService\n          .saveDefinitions(action.definitions, TOOLTIPS_DOMAIN)\n          .pipe(map(() => ConfigActions.loadCustomization()))\n      )\n    )\n  );\n\n  getCustomization$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ConfigActions.loadCustomization),\n      mergeMap((action) =>\n        this.configService.getAllClassParams().pipe(\n          mergeMap((allDefinitions) => {\n            const icons = allDefinitions\n              .filter((def) => def.domain === SYMBOL_DOMAIN)\n              .reduce(\n                (p, c) => ({\n                  ...p,\n                  [c.oClass]: JSON.parse(c.content)\n                }),\n                {}\n              );\n            const tableAttributes = allDefinitions\n              .filter((def) => def.domain === TABLE_ATTR_DOMAIN)\n              .reduce(\n                (p, c) => ({\n                  ...p,\n                  [c.oClass]: JSON.parse(c.content)\n                }),\n                {}\n              );\n            const tooltips = allDefinitions\n              .filter((def) => def.domain === TOOLTIPS_DOMAIN)\n              .reduce(\n                (p, c) => ({\n                  ...p,\n                  [c.oClass]: JSON.parse(c.content)\n                }),\n                {}\n              );\n            const filters = allDefinitions\n              .filter((def) => def.domain === FILTERS_DOMAIN)\n              .reduce(\n                (p, c) => ({\n                  ...p,\n                  [c.oClass]: JSON.parse(c.content)\n                }),\n                {}\n              );\n            const tileAttributes = allDefinitions\n              .filter((def) => def.domain === TILE_ATTR_DOMAIN)\n              .reduce(\n                (p, c) => ({\n                  ...p,\n                  [c.oClass]: JSON.parse(c.content)\n                }),\n                {}\n              );\n\n            return [ConfigActions.loadedCustomization({ icons, tableAttributes, tooltips, filters, tileAttributes })];\n          })\n        )\n      )\n    )\n  );\n\n  saveWidget$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ConfigActions.saveWidget),\n      mergeMap((action) =>\n        this.configService.saveWidget(action.widget).pipe(\n          tap(() =>\n            this.snackBar.open({\n              message: this.translateService.instant('@yap.toolbox.catalog.saved', { viewId: action.widget.name }),\n              type: 'success'\n            })\n          ),\n          map(() => ConfigActions.loadWidgets()),\n          catchError((error) => {\n            this.snackBar.open({\n              message: this.translateService.instant('@yap.toolbox.catalog.saveErrorCode.' + error.error.code, {\n                name: action.widget.name\n              }),\n              type: 'error'\n            });\n            return throwError(error);\n          })\n        )\n      )\n    )\n  );\n\n  deleteRestitution$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ConfigActions.deleteRestitution),\n      mergeMap((action) => this.configService.deleteRestitution(action.id).pipe(map(() => ConfigActions.loadWidgets())))\n    )\n  );\n\n  loadWidget$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ConfigActions.loadWidgets),\n      mergeMap((action) =>\n        this.configService.getAllWidgets().pipe(map((widgets) => ConfigActions.loadedWidgets({ widgets })))\n      )\n    )\n  );\n\n  loadChartOption$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ConfigActions.loadChartOption),\n      withLatestFrom(this.store.select(ConfigSelectors.chartOption)),\n      map(([action, chartOptions]) => {\n        const chartOption = {\n          type: chartOptions.type ?? ChartOptionDefault.type,\n          subType: chartOptions.subType ?? ChartOptionDefault.subType,\n          aggregation: chartOptions.aggregation ?? ChartOptionDefault.aggregation,\n          color: chartOptions.color ?? ChartOptionDefault.color\n        };\n        return ConfigActions.loadedChartOption({ chartOption });\n      })\n    )\n  );\n\n  constructor(\n    private actions$: Actions,\n    private openMapTilesService: OpenMapTilesService,\n    private store: Store,\n    private configService: ConfigService,\n    private snackBar: YapSnackbarService,\n    private translateService: YapI18nService\n  ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Actions } from '@ngrx/effects';\n\n@Injectable()\nexport class ContextMenuEffects {\n  constructor(private actions$: Actions) {}\n}\n","import { createAction, props } from '@ngrx/store';\n\nexport const ContextMenuActions = {\n  open: createAction(\n    '[ContextMenu] open',\n    props<{\n      itemId: string;\n      clientX: number;\n      clientY: number;\n      resultSet?: string;\n      from: string;\n      coordinates?: number[];\n    }>()\n  ),\n  hide: createAction('[ContextMenu] hide')\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { ContextMenuActions } from './context-menu.actions';\n\nexport const contextMenuFeatureKey = '@yap/context-menu';\n\nexport interface ContextMenuState {\n  opened: boolean;\n  clientX: number;\n  clientY: number;\n  itemId: string;\n  from: string;\n  resultSet: string | undefined;\n  coordinates: number[] | undefined;\n}\n\nexport const initialContextMenuState: ContextMenuState = {\n  opened: false,\n  clientX: 0,\n  clientY: 0,\n  itemId: '',\n  from: '',\n  resultSet: undefined,\n  coordinates: undefined\n};\n\nexport const contextMenuReducer = createReducer(\n  initialContextMenuState,\n  on(ContextMenuActions.open, (state, action) => ({\n    ...state,\n    opened: true,\n    clientX: action.clientX,\n    clientY: action.clientY,\n    itemId: action.itemId,\n    resultSet: action.resultSet,\n    from: action.from,\n    coordinates: action.coordinates\n  })),\n  on(ContextMenuActions.hide, (state, action) => ({\n    ...state,\n    opened: false,\n    itemId: '',\n    resultSet: undefined,\n    from: ''\n  }))\n);\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { mergeMap, Observable } from 'rxjs';\nimport { Field } from './field.interface';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '../config/config.selectors';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FieldService {\n  constructor(private httpClient: HttpClient, private store: Store<any>) {}\n\n  getFields(): Observable<Array<Field>> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<Array<Field>>(encodeURI(`${url}/model/fields`))));\n  }\n\n  saveField(field: Field): Observable<void> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/model/field`), field)));\n  }\n\n  deleteField(id: string): Observable<void> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/model/fields/${id}`))));\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { FieldActions } from './field.actions';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { FieldService } from './field.service';\n\n@Injectable()\nexport class FieldEffects {\n  loadFields$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(FieldActions.load),\n      debounceTime(200),\n      mergeMap((action) =>\n        this.fieldService.getFields().pipe(\n          map((fields) => FieldActions.loadSuccess({ fields })),\n          catchError((error) => [FieldActions.loadFailure({ error: error })])\n        )\n      )\n    )\n  );\n\n  constructor(private actions$: Actions, private fieldService: FieldService) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { ImageActions } from './image.actions';\nimport { ImageService } from './image.service';\n\n@Injectable()\nexport class ImageEffects {\n  loadImages$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ImageActions.load),\n      debounceTime(50),\n      mergeMap(() =>\n        this.imageService.getImages().pipe(\n          map((images) => ImageActions.loadSuccess({ images })),\n          catchError((error) => [ImageActions.loadFailure({ error })])\n        )\n      )\n    )\n  );\n\n  addImages$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ImageActions.add),\n      mergeMap((action) =>\n        this.imageService.upload(action.file, action.mediaType, action.imageType).pipe(\n          mergeMap((name) => [ImageActions.load(), ImageActions.added({ name })]),\n          catchError((error) => [ImageActions.loadFailure({ error })])\n        )\n      )\n    )\n  );\n\n  constructor(private actions$: Actions, private imageService: ImageService) {}\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromContextMenu from './context-menu.reducer';\n\nconst feature = createFeatureSelector<fromContextMenu.ContextMenuState>(fromContextMenu.contextMenuFeatureKey);\n\nconst opened = createSelector(feature, (state) => state?.opened);\nconst position = createSelector(feature, (state) => ({ clientX: state?.clientX ?? 0, clientY: state?.clientY ?? 0 }));\nconst itemId = createSelector(feature, (state) => state.itemId);\nconst from = createSelector(feature, (state) => state.from);\nconst coordinates = createSelector(feature, (state) => state.coordinates);\nconst resultSet = createSelector(feature, (state) => state.resultSet);\n\nexport const ContextMenuSelectors = {\n  feature,\n  opened,\n  position,\n  itemId,\n  resultSet,\n  from,\n  coordinates\n};\n","import { createAction, props } from '@ngrx/store';\nimport { Item } from '../../model/item.interface';\n\nexport const ItemActions = {\n  create: createAction('[Item] create', props<{ item: Item }>()),\n  createSuccess: createAction('[Item] create success', props<{ id: string }>()),\n  createFailure: createAction('[Item] create failure', props<{ error: any }>())\n};\n","export enum FieldType {\n  STRING = 'string',\n  KEYWORD = 'keyword',\n  INTEGER = 'integer',\n  DECIMAL = 'decimal',\n  INSTANT = 'instant',\n  LONG = 'long',\n  RAW = 'raw',\n  POINT = 'Point',\n  MULTIPOINT = 'MultiPoint',\n  LINE = 'LineString',\n  MULTILINE = 'MultiLineString',\n  POLYGON = 'Polygon',\n  MULTIPOLYGON = 'MultiPolygon',\n  GEOMETRYCOLLECTION = 'GeometryCollection'\n}\n\nexport interface Field {\n  id: string;\n  name: string;\n  type: FieldType;\n}\n","import { GeoJSON } from 'ol/format';\nimport Geometry from 'ol/geom/Geometry';\nimport { fromLonLat } from 'ol/proj';\nimport { AttributeMultipleValue, AttributeSimpleValue, Item, ValueType } from '../core/model/item.interface';\nimport { ResultSet } from '../core/model/result-set.interface';\nimport { Attribute, Class } from '../core/store/class/class.interface';\nimport { Field, FieldType } from '../core/store/field/field.interface';\n\nexport interface OlFeature {\n  get(key: string): any;\n}\n\nconst hiddenFieldText = '*********';\n\nexport class ItemUtils {\n  static readGeometry<T extends 'point' | 'line' | 'multi-line' | 'polygon' | 'multi-polygon'>(\n    item: Item,\n    type: T,\n    attribute: Attribute | undefined\n  ): Geometry {\n    if (!attribute || !item.attributes[attribute.name]) {\n      // @ts-ignore\n      return null;\n    }\n\n    let value = item.attributes[attribute.name];\n    if (value.type === 'MULTI') {\n      value = value.values[0];\n    }\n    return new GeoJSON().readGeometry(this.projectGeometry(value.value as any));\n  }\n\n  static projectGeometry(geometry: {\n    type: string;\n    coordinates: [number, number] | [number, number][] | [number, number][][] | [number, number][][][];\n  }): any {\n    return {\n      ...geometry,\n      coordinates:\n        typeof geometry.coordinates[0] === 'number'\n          ? fromLonLat(geometry.coordinates as [number, number])\n          : (geometry.coordinates as [number, number][] | [number, number][][] | [number, number][][][]).map(\n              (sub) => this.projectGeometry({ type: '', coordinates: sub }).coordinates\n            )\n    };\n  }\n\n  static readLocations<T extends 'point' | 'line' | 'polygon'>(\n    item: Item,\n    type: T\n  ): T extends 'point' ? [number, number][] : [number, number][][] {\n    const points = [] as any;\n    Object.entries(item.attributes).forEach(([key, value]) => {\n      if (value.type === 'VALUE') {\n        this.extractGeometries(value, points, type);\n      } else {\n        value.values.forEach((value) => {\n          this.extractGeometries(value, points, type);\n        });\n      }\n    });\n    return points;\n  }\n\n  private static extractGeometries(value: AttributeSimpleValue, points: any[], type: 'point' | 'line' | 'polygon') {\n    const valueSimple = value.value;\n    if (typeof valueSimple !== 'string' && typeof valueSimple !== 'number') {\n      if (type === 'point' && valueSimple.type === FieldType.POINT) {\n        points.push(valueSimple.coordinates);\n      }\n      if (type === 'point' && valueSimple.type === FieldType.MULTIPOINT) {\n        points.push(...valueSimple.coordinates);\n      }\n      if (type === 'line' && valueSimple.type === FieldType.LINE) {\n        points.push(valueSimple.coordinates);\n      }\n      if (type === 'line' && valueSimple.type === FieldType.MULTILINE) {\n        points.push(...valueSimple.coordinates);\n      }\n      if (type === 'polygon' && valueSimple.type === FieldType.POLYGON) {\n        points.push(valueSimple.coordinates);\n      }\n      if (type === 'polygon' && valueSimple.type === FieldType.MULTIPOLYGON) {\n        points.push(...valueSimple.coordinates);\n      }\n    }\n  }\n\n  static getAttributeValue(\n    item: Item | OlFeature,\n    attribute: Attribute | string | undefined\n  ): AttributeSimpleValue | AttributeSimpleValue[] {\n    if (!attribute) {\n      return undefined as unknown as AttributeSimpleValue;\n    }\n    if (typeof attribute === 'string') {\n      // @ts-ignore\n      return !!item.get ? item.get(attribute) : item.attributes[attribute];\n    }\n    if (attribute.multiValued) {\n      return (\n        (\n          (!item.hasOwnProperty('oClass')\n            ? (item as OlFeature).get('attributes')[attribute.name] ?? {}\n            : ((item as Item).attributes[attribute.name] as AttributeMultipleValue)) ?? {}\n        ).values ?? []\n      )\n        .map((v: AttributeSimpleValue) => ({ ...v, value: v.visible ? v.value : hiddenFieldText }))\n        .sort(ItemUtils.sortAttributes);\n    }\n    return (\n      !item.hasOwnProperty('oClass')\n        ? (item as OlFeature).get('attributes')[attribute.name]\n        : (item as Item).attributes[attribute.name]\n    ) as AttributeSimpleValue;\n  }\n\n  static getAttributeCalculatedValue(item: Item, attribute: Attribute | string | undefined): ValueType | ValueType[] {\n    if (!attribute) {\n      return undefined as unknown as ValueType;\n    }\n    if (typeof attribute === 'string') {\n      // @ts-ignore\n      return item[attribute];\n    }\n    if (attribute.multiValued) {\n      return (ItemUtils.getAttributeValue(item, attribute) as AttributeSimpleValue[]).map((v) => v.value);\n    }\n    const value = ItemUtils.getAttributeValue(item, attribute) as AttributeSimpleValue;\n    return value ? (value.visible ? value.value : hiddenFieldText) : (undefined as unknown as ValueType);\n  }\n\n  static sortAttributes(a: AttributeSimpleValue, b: AttributeSimpleValue): number {\n    const compareVisible = (b.visible ? 1 : -1) - (a.visible ? 1 : -1);\n    if (compareVisible !== 0) {\n      return compareVisible;\n    }\n    return (\n      (b?.metadata ? (b?.metadata['_modification_date'] as number) ?? 0 : 0) -\n      (a?.metadata ? (a?.metadata['_modification_date'] as number) ?? 0 : 0)\n    );\n  }\n\n  static pertinentValue(items: Item[], attr: Attribute) {\n    return items\n      .map((item) => ItemUtils.getAttributeCalculatedValue(item, attr))\n      .filter((value) => typeof value === 'number')\n      .map((value) => value as number);\n  }\n\n  static isLocation(tuple: any[]) {\n    return !!tuple[0] && !!tuple[1] && typeof tuple[0] === 'number' && typeof tuple[1] === 'number';\n  }\n\n  static getAttributesFromAvailabilityInResultSet(resultSet: ResultSet) {\n    return [\n      ...new Set(\n        Object.keys(resultSet?.items || {})\n          .map((classId) =>\n            resultSet.items[classId].map((item) => [...Object.keys(item), ...Object.keys(item.attributes)])\n          )\n          .reduce((prev, curr) => [...prev, ...curr], [])\n          .reduce((prev, curr) => [...prev, ...curr], [])\n          .filter((prop) => prop !== 'attributes')\n      )\n    ];\n  }\n\n  static findInResultSet(resultSet: ResultSet, id: string): Item {\n    return (\n      Object.keys(resultSet.items)\n        .map((classId) => resultSet.items[classId].filter((item) => item.id === id))\n        .reduce((p, c) => [...p, ...c], []) as Item[]\n    ).find((item) => !!item) as Item;\n  }\n\n  static getFieldsFromAvailabilityInResultSet(resultSet: ResultSet, classes: Class[], fields: Field[]): Field[] {\n    return [\n      ...new Set(\n        Object.keys(resultSet?.items || {})\n          .map((classId) => classes.find((cl) => cl.id === classId) as Class)\n          .filter((oClass) => oClass !== undefined)\n          .map((oClass: Class) =>\n            fields\n              .filter((f) => oClass.attributes.map((attr) => attr.field).includes(f.id))\n              .filter((f) => f !== undefined)\n          )\n          .reduce((p: Field[], c: Field[]) => [...p, ...c], [])\n      )\n    ];\n  }\n\n  static hasLocation(clazz: Class) {\n    return true;\n  }\n\n  static isValidObject(object: Item) {\n    return object.oClass && object.oClass.length > 0;\n  }\n\n  static getAttributesFromRs(\n    resultSet: ResultSet,\n    classes: Class[],\n    fields: Field[],\n    defs?: { [key: string]: string[] }\n  ): Attribute[] {\n    const definitions = defs ?? {};\n    return [\n      ...new Set(\n        Object.keys(resultSet?.items || {})\n          .map((classId) => classes.find((cl) => cl.id === classId) as Class)\n          .filter((oClass) => oClass !== undefined)\n          .map((oClass) =>\n            oClass.attributes.filter((attr) =>\n              ItemUtils.getAttributesDefinitionForClass(oClass, definitions).includes(attr.name)\n            )\n          )\n          .reduce((p, c) => [...p, ...c], [])\n          .filter((attr: Attribute) => !!fields.find((f) => f.id === attr.field))\n      )\n    ];\n  }\n\n  static getAttributesDefinitionForClass(clazz: Class, defs: { [key: string]: string[] }) {\n    return defs[clazz.id ?? ''] ?? (clazz ?? { attributes: [] }).attributes.map((attr) => attr.name);\n  }\n\n  static ensureItemIdHasCorrectFormat(item: Item): Item {\n    if (!item.id.includes('@')) {\n      item.id = `${item.oClass}@${item.id}`;\n    }\n    return item;\n  }\n\n  static simpleArrayEquals(a: any[], b: any[]) {\n    return Array.isArray(a) && Array.isArray(b) && a.length === b.length && a.every((val, index) => val === b[index]);\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { mergeMap, Observable } from 'rxjs';\nimport { ItemUtils } from '../../../dashboard/item-utils';\nimport { Item } from '../../model/item.interface';\nimport { ResultSet } from '../../model/result-set.interface';\nimport { ConfigSelectors } from '../config/config.selectors';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ItemService {\n  constructor(private store: Store, private httpClient: HttpClient) {}\n\n  /**\n   * Get item's detail by id\n   * @param id\n   */\n  get(id: string): Observable<Item> {\n    return this.store\n      .select(ConfigSelectors.dataUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<Item>(encodeURI(`${url}/items/${id}`))));\n  }\n\n  /**\n   * Returns all items connected by a relation to the node of this id\n   * @param id\n   */\n  proximity(id: string): Observable<ResultSet> {\n    return this.store\n      .select(ConfigSelectors.dataUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<ResultSet>(encodeURI(`${url}/items/id/${id}/relations`))));\n  }\n\n  /**\n   * Allows to create an item\n   * @param item\n   */\n  create(item: Item): Observable<Item[]> {\n    const toSendItem = ItemUtils.ensureItemIdHasCorrectFormat(item);\n    return this.store\n      .select(ConfigSelectors.dataUrl)\n      .pipe(mergeMap((url) => this.httpClient.post<Item[]>(`${url}/items`, [toSendItem])));\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { catchError, mergeMap, tap, withLatestFrom } from 'rxjs/operators';\nimport { DashboardActions } from '../../../dashboard/store/dashboard.actions';\nimport { YapSnackbarService } from '../../components/snackbar/snackbar.service';\nimport { YapI18nService } from '../../i18n/i18n.service';\nimport { ContextMenuSelectors } from '../context-menu/context-menu.selectors';\nimport { ItemActions } from './item.actions';\nimport { ItemService } from './item.service';\n\n@Injectable()\nexport class ItemEffects {\n  create$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(ItemActions.create),\n      withLatestFrom(this.store.select(ContextMenuSelectors.resultSet)),\n      mergeMap(([action, resultSet]) =>\n        this.service.create(action.item).pipe(\n          mergeMap((items) =>\n            items\n              .map((item) => [\n                ItemActions.createSuccess({ id: item.id }),\n                DashboardActions.addItemToResultSets({ item, resultSet })\n              ])\n              .reduce((a, b) => [...a, ...b], [])\n          ),\n          catchError((error) => [ItemActions.createFailure({ error })])\n        )\n      )\n    )\n  );\n\n  createSuccessWarning$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType(ItemActions.createSuccess),\n        tap((action) => {\n          const actionClicked$ = this.snackBar.open({\n            type: 'success',\n            message: this.translateService.instant('@yap.context.createObject.created'),\n            action: this.translateService.instant('@yap.context.createObject.details'),\n            timeout: 10000\n          });\n          actionClicked$?.subscribe(() => {\n            this.store.dispatch(DashboardActions.detail({ ids: [action.id] }));\n          });\n        })\n      ),\n    { dispatch: false }\n  );\n\n  constructor(\n    private actions$: Actions,\n    private service: ItemService,\n    private store: Store,\n    private snackBar: YapSnackbarService,\n    private translateService: YapI18nService\n  ) {}\n}\n","import { YapVisibility } from '../components/share/share.model';\nimport { Filter, FilterContext } from './filter.interface';\nimport { ChartAggregatedWidgetOptions } from './widget-aggregated-chart-manifest.interface';\nimport { ChartWidgetOptions } from './widget-chart-manifest.interface';\nimport { DetailWidgetOptions } from './widget-detail-manifest.interface';\nimport { GraphWidgetOptions } from './widget-graph-manifest.interface';\nimport { IframeWidgetOptions } from './widget-iframe-manifest.interface';\nimport { ImageWidgetOptions } from './widget-image-manifest.interface';\nimport { MapWidgetOptions } from './widget-map-manifest.interface';\nimport { TableWidgetOptions } from './widget-table-manifest.interface';\nimport { TemplateWidgetOptions } from './widget-template-manifest.interface';\nimport { TileWidgetOptions } from './widget-tile-manifest.interface';\n\nexport interface ManifestDescription {\n  id: string;\n  name: string;\n  description: string;\n  manifestUrl: string;\n  image: string;\n  cover: boolean;\n  creationDate: string;\n  modificationDate: string;\n  default: boolean;\n  visibility: YapVisibility;\n  owner: boolean;\n}\n\nexport interface WidgetLayout {\n  x: number;\n  y: number;\n  width: number;\n  height: number;\n}\n\nexport interface GridLayout {\n  columns?: number;\n  gap?: number;\n  rows?: number;\n  layout?: DashboardGridLayout;\n}\n\nexport enum DashboardGridLayout {\n  FULL = '1',\n  THIRD_VERTICAL = '1/3v',\n  THIRD_HORIZONTAL = '1/3h',\n  HALF_VERTICAL = '1/2v',\n  HALF_HORIZONTAL = '1/2h',\n  QUARTER = '1/4',\n  MANUAL = '0'\n}\n\nexport interface DashboardManifest {\n  route?: string;\n  grid?: GridLayout;\n  widgets: WidgetManifest[];\n}\n\nexport interface Payload {\n  filters: any[];\n}\n\nexport interface Request {\n  url: string;\n  method: string;\n  payload: Payload;\n}\n\nexport interface GlobalManifest {\n  windows: DashboardManifest[];\n  refreshRates?: { [key: string]: number };\n  locked?: boolean;\n  filters?: Filter[];\n}\n\nexport interface WidgetManifest {\n  title?: string;\n  type: string;\n  layout: WidgetLayout;\n  options?: WidgetOptions;\n  datasource?: string | string[];\n  header?: boolean | { [key: string]: boolean };\n  locked?: boolean;\n  cover?: boolean;\n  contextMenu?: boolean;\n}\n\nexport interface CustomWidgetOptions {\n  [opt: string]: any;\n}\n\nexport type WidgetOptions =\n  | MapWidgetOptions\n  | ImageWidgetOptions\n  | TableWidgetOptions\n  | DetailWidgetOptions\n  | ChartWidgetOptions\n  | ChartAggregatedWidgetOptions\n  | IframeWidgetOptions\n  | GraphWidgetOptions\n  | TemplateWidgetOptions\n  | TileWidgetOptions\n  | CustomWidgetOptions;\n","import { createFeatureSelector, createSelector, MemoizedSelector } from '@ngrx/store';\nimport equal from 'fast-deep-equal/es6';\nimport { Filter, FilterContext } from '../../core/model/filter.interface';\nimport { Item } from '../../core/model/item.interface';\nimport {\n  DashboardGridLayout,\n  DashboardManifest,\n  GlobalManifest,\n  WidgetLayout,\n  WidgetManifest\n} from '../../core/model/manifest.interface';\nimport { ResultOrder } from '../../core/model/result-order.interface';\nimport { ResultSet, ResultSets } from '../../core/model/result-set.interface';\nimport { DashboardCellParams, ViewMode } from './dashboard.actions';\nimport { DashboardState } from './dashboard.reducers';\n\nconst NEW_WINDOW_TARGET = -1;\n\nconst feature = createFeatureSelector<DashboardState>('@yap/dashboard');\nconst manifests = createSelector(feature, (state: DashboardState) => state?.manifests);\nconst rank = createSelector(manifests, (manifests) => manifests?.tenants.indexOf(manifests.sender));\nconst currentManifestId = createSelector(manifests, (manifests) => manifests.currentId);\nconst globalManifest = createSelector(\n  manifests,\n  // @ts-ignore\n  (manifests) => ({ windows: [], ...manifests?.manifest } ?? ({ windows: [] } as GlobalManifest))\n);\nconst staticManifest = createSelector(\n  manifests,\n  // @ts-ignore\n  (manifests) => ({ windows: [], ...manifests?.staticManifest } ?? ({ windows: [] } as GlobalManifest))\n);\nconst refreshRates = createSelector(globalManifest, (manifests) => manifests.refreshRates ?? {});\nconst windowManifest = createSelector(\n  globalManifest,\n  rank,\n  (manifest, rank) => manifest.windows[rank] ?? <DashboardManifest>{ widgets: [] }\n);\nconst gridLayout = createSelector(\n  windowManifest,\n  (manifest) => (manifest.grid ?? {}).layout ?? DashboardGridLayout.MANUAL\n);\nconst memoizeWidgetManifest = {} as any;\nconst widgetManifest = (index: number) => {\n  if (!memoizeWidgetManifest[index]) {\n    memoizeWidgetManifest[index] = createSelector(\n      windowManifest,\n      (windowManifest: DashboardManifest) =>\n        windowManifest.widgets[index] ??\n        ({\n          type: 'placeholder',\n          layout: { x: 1, y: 1, width: 1, height: 1 }\n        } as WidgetManifest)\n    );\n  }\n  return memoizeWidgetManifest[index] as MemoizedSelector<DashboardManifest, WidgetManifest>;\n};\nconst manifestsList = createSelector(manifests, (manifests) => manifests.list);\nconst tenants = createSelector(manifests, (manifests) => manifests.tenants ?? <string[]>[]);\nconst targetTenantsIndexes = createSelector(manifests, rank, (manifests, rank) => [\n  NEW_WINDOW_TARGET,\n  ...(manifests.tenants ?? ([] as string[])).map((ten, idx) => idx).filter((idx) => idx !== rank)\n]);\nconst results = createSelector(feature, (state: DashboardState) => state?.results);\nconst resultSets = createSelector(results, (results) => results.resultSets ?? ({} as ResultSets));\nconst resultSetsParams = createSelector(\n  results,\n  (results) => results.resultSetsParams ?? ({} as { [id: string]: string | undefined })\n);\nconst namedQueriesNames = createSelector(resultSets, (state: ResultSets) => Object.keys(state) ?? <string[]>[]);\nconst availableNamedQueries = createSelector(results, (results) => {\n  return [...new Set([...results.availableDatasourceNames, ...Object.keys(results.resultSets)])] ?? <string[]>[];\n});\nconst defaultDatasourceNames = createSelector(results, (results) => results.defaultDatasource ?? 'current');\nconst selectedItemIds = createSelector(results, (results) => results.selectedItems ?? ([] as string[]));\nconst objectDetails = createSelector(results, (results) => results.objectDetails ?? ({} as { [id: string]: Item }));\nconst quickOrder = createSelector(results, (results) => results.quickOrder ?? ({} as { [id: string]: ResultOrder }));\nconst address = createSelector(\n  results,\n  (results) => (results.address ?? {}) as { latLon: number[]; pointAddress: string }\n);\nconst allItems = createSelector(results, (results) =>\n  Object.keys(results.resultSets)\n    .map((rsKey) =>\n      Object.keys(results.resultSets[rsKey].items)\n        .map((classKey) => (results.resultSets[rsKey] as ResultSet).items[classKey])\n        .reduce((p, c) => [...p, ...c], [])\n    )\n    .reduce((p, c) => [...p, ...c], [])\n);\nconst getItemsByIds = (ids: string[]) =>\n  createSelector(allItems, (items) => items.filter((item) => ids.includes(item.id)));\nconst selectedItems = createSelector(\n  selectedItemIds,\n  allItems,\n  (itemNames, allItems) => itemNames.map((name) => allItems.find((it) => it.id === name)) ?? ([] as Item[])\n);\nconst dashboard = createSelector(feature, (state: DashboardState) => state?.dashboard ?? {});\nconst dashboardCellParams = createSelector(dashboard, (dashboard) => dashboard.params ?? <DashboardCellParams>{});\nconst dashboardEditionMode = createSelector(dashboard, (dashboard) => dashboard.editionMode ?? false);\nconst namedQueriesUses = createSelector(globalManifest, (manifest) =>\n  manifest.windows\n    .map((window, idx) => ({ windowIndex: idx, widgets: window.widgets }))\n    .map(({ windowIndex, widgets }) =>\n      widgets.map((widget) =>\n        (Array.isArray(widget.datasource) ? widget.datasource : [widget.datasource])\n          .filter((rsName) => rsName !== undefined)\n          .map((rsName) => ({\n            rsName,\n            windowIndex,\n            type: widget.type,\n            layout: widget.layout\n          }))\n      )\n    )\n    .reduce((p, c) => [...p, ...c], [])\n    .reduce((p, c) => [...p, ...c], [])\n    .reduce(\n      (p, c) => ({ ...p, [c.rsName ?? '']: [...(p[c.rsName ?? ''] || []), { ...c }] }),\n      {} as { [key: string]: { windowIndex: number; type: string; layout: WidgetLayout; rsName?: string }[] }\n    )\n);\nconst presentation = createSelector(feature, (state: DashboardState) => state?.presentation);\nconst savePresentationActive = createSelector(\n  presentation,\n  globalManifest,\n  (state, global) => !!state.current && (state.viewMode === ViewMode.CREATION || !equal(global, state.initial))\n);\n\nconst filters = createSelector(feature, (state: DashboardState) => state?.manifests.manifest.filters ?? {});\nconst datasourceFilters = createSelector(feature, (state: DashboardState) =>\n  state?.manifests.manifest.filters\n    ? state?.manifests.manifest.filters.reduce(\n        (obj: { [datasourceId: string]: FilterContext[] }, filter: Filter) => (\n          filter.attributes.forEach((attribute) =>\n            (obj[attribute.datasource] || (obj[attribute.datasource] = [])).push({\n              attribute: attribute.id,\n              operator: filter.operator ?? '',\n              value: filter.value ?? ''\n            })\n          ),\n          obj\n        ),\n        {}\n      )\n    : {}\n);\nconst wmsFeatures = createSelector(feature, (state: DashboardState) => state?.wmsFeatures);\n\nexport const DashboardSelectors = {\n  feature,\n  rank,\n  currentManifestId,\n  globalManifest,\n  refreshRates,\n  windowManifest,\n  widgetManifest,\n  manifestsList,\n  gridLayout,\n  tenants,\n  resultSets,\n  resultSetsParams,\n  address,\n  namedQueriesNames,\n  namedQueriesUses,\n  availableNamedQueries,\n  defaultDatasourceNames,\n  selectedItemIds,\n  allItems,\n  getItemsByIds,\n  selectedItems,\n  objectDetails,\n  targetTenantsIndexes,\n  dashboard,\n  dashboardCellParams,\n  dashboardEditionMode,\n  staticManifest,\n  quickOrder,\n  presentation,\n  savePresentationActive,\n  filters,\n  datasourceFilters,\n  wmsFeatures\n};\n","import { createAction, props } from '@ngrx/store';\nimport { ResultSet } from '../../model/result-set.interface';\nimport { MonoClassSearchPayload } from '../../model/search-mono-class.model';\nimport { FullTextSearchPayload, MultiClassSearchPayload } from '../../model/search-multi-class.model';\n\nexport const SearchActions = {\n  search: createAction(\n    '[Search] search',\n    props<{ payload: MonoClassSearchPayload | MultiClassSearchPayload | FullTextSearchPayload; id?: string }>()\n  ),\n  getDatasourceItems: createAction('[Search] (bus) search named', props<{ id: string }>()),\n\n  // result Search\n  searchSuccess: createAction(\n    '[Search Api] Search Success',\n    props<{ resultSet: ResultSet; id?: string; params?: string }>()\n  ),\n  searchFailure: createAction('[Search Api] Search Failure', props<{ error: any; id?: string }>())\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, map, mergeMap, Observable, of } from 'rxjs';\nimport { DashboardSelectors } from '../../../dashboard/store/dashboard.selectors';\nimport { FilterContext } from '../../model/filter.interface';\nimport { ResultOrder } from '../../model/result-order.interface';\nimport { ResultSet } from '../../model/result-set.interface';\nimport { MonoClassSearchPayload } from '../../model/search-mono-class.model';\nimport { FullTextSearchPayload, MultiClassSearchPayload } from '../../model/search-multi-class.model';\nimport { ConfigState } from '../config/config.reducer';\nimport { ConfigSelectors } from '../config/config.selectors';\nimport { DEFAULT_NAMED_QUERY_ID } from './search.constants';\nimport { SearchState } from './search.reducer';\n\nexport type ResultsetTransformation = (id: string, result: ResultSet) => ResultSet;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SearchService {\n  transformations: ResultsetTransformation[] = [];\n  filters: { [datasource: string]: FilterContext[] } = {};\n\n  constructor(private httpClient: HttpClient, private store: Store<ConfigState | SearchState>) {\n    store.select(DashboardSelectors.datasourceFilters).subscribe((filters) => {\n      this.filters = filters;\n    });\n  }\n\n  /**\n   * Request the result of a named query by its id\n   * @param id of the data source to fetch\n   * @param quickOrder if it has to be applied\n   */\n  getItems(id: string, quickOrder?: ResultOrder): Observable<ResultSet> {\n    const params = this.getItemsParams(quickOrder);\n    let filterFormed = this.getItemsFilter(id);\n\n    if (!id) {\n      console.warn('Not sending items request with no datasource attached.');\n      return of({ items: {}, relations: [] } as ResultSet);\n    }\n\n    return this.store.select(ConfigSelectors.dataUrl).pipe(\n      mergeMap((url) =>\n        this.httpClient.get<ResultSet>(encodeURI(`${url}/data-sources/id/${id}/items${filterFormed}`), { params })\n      ),\n      map((rs) => this.applyTransformations('current', rs))\n    );\n  }\n\n  getItemsSerializedParams(id: string, quickOrder: any): string {\n    return JSON.stringify(this.getItemsParams(quickOrder[id])) + this.getItemsFilter(id);\n  }\n\n  getItemsFilter(id: string): string {\n    let filterFormed: any = '';\n    if (this.filters[id]) {\n      filterFormed = [];\n      this.filters[id].forEach((filter) => {\n        filterFormed.push('filter=' + filter.attribute + ',' + filter.operator + ',' + filter.value);\n      });\n      filterFormed = '?' + filterFormed.join('&');\n    }\n    return filterFormed;\n  }\n\n  getItemsParams(quickOrder: ResultOrder | undefined) {\n    const params = {} as { [key: string]: string };\n    if (quickOrder) {\n      params['order'] = `${quickOrder.attribute},${quickOrder.asc ?? ''}`;\n    }\n    return params;\n  }\n\n  /**\n   * Launch a search request (and saves it as current search)\n   * @param condition\n   */\n  search(condition: MonoClassSearchPayload | MultiClassSearchPayload | FullTextSearchPayload): Observable<ResultSet> {\n    return combineLatest([\n      this.store.select(ConfigSelectors.dataUrl),\n      this.store.select(DashboardSelectors.quickOrder)\n    ]).pipe(\n      mergeMap(([url, quickOrder]) => {\n        const params = {} as { [key: string]: string };\n        if (quickOrder[DEFAULT_NAMED_QUERY_ID]) {\n          params['order'] = `${quickOrder[DEFAULT_NAMED_QUERY_ID]?.attribute},${\n            quickOrder[DEFAULT_NAMED_QUERY_ID]?.asc ?? ''\n          }`;\n        }\n        return this.httpClient.post<ResultSet>(encodeURI(`${url}/items/search`), condition, { params });\n      }),\n      map((rs) => this.applyTransformations(DEFAULT_NAMED_QUERY_ID, rs))\n    );\n  }\n\n  /**\n   * Allows to add a transformation function when getting results from backend\n   * @param func\n   */\n  addTransformation(func: ResultsetTransformation) {\n    this.transformations.push(func);\n  }\n\n  /**\n   * Apply all transformation functions\n   * @param id\n   * @param rs\n   */\n  applyTransformations(id: string, rs: ResultSet) {\n    let transformed = rs;\n    this.transformations.forEach((func) => (transformed = func(id, transformed)));\n    return transformed;\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { map, mergeMap, Observable, of, switchMap } from 'rxjs';\nimport { YapI18nService } from '../../i18n/i18n.service';\nimport { DatasetMetadata } from '../../model/admin-api.model';\nimport { Dataset, DatasetError } from '../../model/dataset.interface';\nimport { ConfigState } from '../config/config.reducer';\nimport { ConfigSelectors } from '../config/config.selectors';\nimport { DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID } from '../search/search.constants';\nimport { DatasetVersion, NamedQuery } from './data-source.model';\nimport { DataSourceState } from './data-source.reducer';\n\nexport interface ResponseRequest {\n  data: {\n    success: boolean;\n  };\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DataSourceService {\n  constructor(\n    private store: Store<ConfigState | DataSourceState>,\n    private httpClient: HttpClient,\n    private translateService: YapI18nService\n  ) {}\n\n  get(): Observable<NamedQuery[]> {\n    return this.store.select(ConfigSelectors.refUrl).pipe(\n      mergeMap((url) => this.httpClient.get<NamedQuery[]>(encodeURI(`${url}/users/me/namedquery`))),\n      map((nqs) => [\n        ...nqs,\n        {\n          id: DEFAULT_NAMED_QUERY_ID,\n          name: this.translateService.instant('@yap.widget.namedQuery.defaultRs'),\n          color: '#84eac5',\n          lastExecutionDate: 100,\n          request: null\n        } as unknown as NamedQuery,\n        {\n          id: EXPLORE_NAMED_QUERY_ID,\n          name: this.translateService.instant('@yap.search.namedQuery.explore'),\n          color: '#6a2974',\n          lastExecutionDate: 50,\n          request: null\n        } as unknown as NamedQuery\n      ]),\n      map((nqs) => nqs.map((nq) => ({ ...nq, sourceType: 'namedQuery' })))\n    );\n  }\n\n  post(namedQuery?: NamedQuery): Observable<ResponseRequest> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(\n        mergeMap((url) =>\n          namedQuery?.id !== DEFAULT_NAMED_QUERY_ID\n            ? this.httpClient.post<ResponseRequest>(encodeURI(`${url}/users/me/namedquery`), namedQuery)\n            : of({ data: { success: true } })\n        )\n      );\n  }\n\n  delete(id: string): Observable<ResponseRequest> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.delete<ResponseRequest>(encodeURI(`${url}/users/me/namedquery/${id}`))));\n  }\n\n  addFavorite(id: string): Observable<ResponseRequest> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(\n        mergeMap((url) =>\n          this.httpClient.post<ResponseRequest>(encodeURI(`${url}/users/me/namedquery/${id}/favorite`), null)\n        )\n      );\n  }\n\n  deleteFavorite(id: string): Observable<ResponseRequest> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(\n        mergeMap((url) =>\n          this.httpClient.delete<ResponseRequest>(encodeURI(`${url}/users/me/namedquery/${id}/favorite`))\n        )\n      );\n  }\n\n  getDatasets(): Observable<Dataset[]> {\n    return this.store.select(ConfigSelectors.refUrl).pipe(\n      mergeMap((url) => this.httpClient.get<Dataset[]>(encodeURI(`${url}/datasets`))),\n      map((dsds) => dsds.map((dsd) => ({ ...dsd, sourceType: 'dataset' })))\n    );\n  }\n\n  addDataset(dataset: Dataset): Observable<void> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/datasets`), dataset)));\n  }\n\n  updateDataset(dataset: Dataset): Observable<void> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.put<void>(encodeURI(`${url}/datasets`), dataset)));\n  }\n\n  deleteDataset(id: string) {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.delete<void>(`${url}/datasets/id/${id}`)));\n  }\n\n  getDatasetById(id: string) {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<Dataset>(`${url}/datasets/id/${id}`)));\n  }\n\n  getDatasetMetadata(id: string): Observable<DatasetMetadata[]> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<DatasetMetadata[]>(`${url}/datasets/id/${id}/metadata`)));\n  }\n\n  addDatasetMetadata(datasetId: string, metadataId: string, value: any): Observable<void> {\n    return this.store.select(ConfigSelectors.refUrl).pipe(\n      mergeMap((url) =>\n        this.httpClient.put<void>(encodeURI(`${url}/datasets/id/${datasetId}/metadata/id/${metadataId}`), {\n          value: value\n        })\n      )\n    );\n  }\n\n  deleteDatasetMetadata(datasetId: string, metadataId: string): Observable<void> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(\n        mergeMap((url) =>\n          this.httpClient.delete<void>(encodeURI(`${url}/datasets/id/${datasetId}/metadata/id/${metadataId}`))\n        )\n      );\n  }\n\n  getDatasetVersions() {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(switchMap((url) => this.httpClient.get<DatasetVersion[]>(encodeURI(`${url}/dataset-versions`))));\n  }\n\n  retrieveErrors(id: string) {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<DatasetError[]>(encodeURI(`${url}/error/id/${id}`))));\n  }\n\n  deactivateDatasetVersion(versionId: string) {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(\n        switchMap((url) =>\n          this.httpClient.post<DatasetVersion>(encodeURI(`${url}/dataset-versions/id/${versionId}/deactivate`), null)\n        )\n      );\n  }\n\n  activateDatasetVersion(versionId: string) {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(\n        switchMap((url) =>\n          this.httpClient.post<DatasetVersion>(encodeURI(`${url}/dataset-versions/id/${versionId}/activate`), null)\n        )\n      );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Action, Store } from '@ngrx/store';\nimport { filter, map, mergeMap, switchMap, tap } from 'rxjs';\nimport { catchError, withLatestFrom } from 'rxjs/operators';\nimport { DashboardActions } from '../../../dashboard/store/dashboard.actions';\nimport { DashboardSelectors } from '../../../dashboard/store/dashboard.selectors';\nimport { YapDialogConfirmComponent, YapDialogConfirmData } from '../../components/overlay/dialog-confirm.component';\nimport { YapDialogService } from '../../components/overlay/dialog.service';\nimport { YapSnackbarService } from '../../components/snackbar/snackbar.service';\nimport { YapI18nService } from '../../i18n/i18n.service';\nimport { Dataset } from '../../model/dataset.interface';\nimport { ConfigSelectors } from '../config/config.selectors';\nimport { SearchActions } from '../search/search.actions';\nimport { SearchService } from '../search/search.service';\nimport { DataSourceActions } from './data-source.actions';\nimport { NamedQuery } from './data-source.model';\nimport { DataSourceSelectors } from './data-source.selectors';\nimport { DataSourceService } from './data-source.service';\n\n@Injectable()\nexport class DataSourceEffects {\n  private idNamedQuery?: string;\n\n  constructor(\n    private actions$: Actions,\n    private searchService: SearchService,\n    private dataSourceService: DataSourceService,\n    private snackBar: YapSnackbarService,\n    private translate: YapI18nService,\n    private store: Store,\n    private yapDialog: YapDialogService\n  ) {}\n\n  postNameQuery$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.namedQuery.post),\n      withLatestFrom(this.store.select(ConfigSelectors.randomColor)),\n      switchMap(([action, randomColor]) => {\n        const { name, id, payload, description, color, favorite, isEdit, visibility } = action;\n        this.idNamedQuery = isEdit ? id : undefined;\n        const namedQuery: NamedQuery = {\n          id: id ?? '',\n          sourceType: 'namedQuery',\n          name,\n          description: description ?? undefined,\n          visibility: visibility ?? undefined,\n          request: payload,\n          color: color ?? randomColor,\n          favorite\n        };\n        return this.dataSourceService.post(namedQuery);\n      }),\n      mergeMap(() => {\n        const actions = [] as Action[];\n        if (this.idNamedQuery) {\n          actions.push(SearchActions.getDatasourceItems({ id: this.idNamedQuery }));\n        }\n        this.idNamedQuery = undefined;\n        actions.push(DataSourceActions.namedQuery.load());\n        return actions;\n      }),\n      catchError((error) => [DataSourceActions.namedQuery.failure({ error })])\n    )\n  );\n\n  getNamedQuery$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.namedQuery.load),\n      switchMap(() => this.dataSourceService.get()),\n      map((namedQueryList: NamedQuery[]) => DataSourceActions.namedQuery.loaded({ list: namedQueryList })),\n      catchError((error) => [DataSourceActions.namedQuery.failure({ error })])\n    )\n  );\n\n  loaded$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.namedQuery.loaded),\n      map((action: { list: NamedQuery[]; type: string }) => {\n        return DashboardActions.setAvailableNamedQueries({ names: action.list.map((nq) => nq.id) });\n      })\n    )\n  );\n\n  deleteNamedQuery$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.namedQuery.delete),\n      switchMap((props: { id: string }) =>\n        this.dataSourceService.delete(props.id).pipe(\n          mergeMap(() => [DataSourceActions.namedQuery.load()]),\n          catchError((error) => [DataSourceActions.namedQuery.failure({ error })])\n        )\n      )\n    )\n  );\n\n  addFavoriteNamedQuery$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.namedQuery.addFavorite),\n      switchMap((props: { id: string }) => this.dataSourceService.addFavorite(props.id)),\n      mergeMap(() => [DataSourceActions.namedQuery.load()]),\n      catchError((error) => [DataSourceActions.namedQuery.failure({ error })])\n    )\n  );\n\n  deleteFavoriteNamedQuery$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.namedQuery.deleteFavorite),\n      switchMap((props: { id: string }) => this.dataSourceService.deleteFavorite(props.id)),\n      mergeMap(() => [DataSourceActions.namedQuery.load()]),\n      catchError((error) => [DataSourceActions.namedQuery.failure({ error })])\n    )\n  );\n\n  tryEdit$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.namedQuery.edit),\n      withLatestFrom(this.store.select(DataSourceSelectors.editInProgress)),\n      map(([action, inProgress]) => {\n        if (!inProgress) {\n          return DataSourceActions.namedQuery.openEdit(action);\n        } else {\n          this.snackBar.open({\n            message: this.translate.instant('@yap.search.namedQuery.alreadyEditing'),\n            type: 'error'\n          });\n          return DataSourceActions.namedQuery.failure({ error: new Error('@yap.search.namedQuery.alreadyEditing') });\n        }\n      }),\n      catchError((error) => [DataSourceActions.namedQuery.failure({ error })])\n    )\n  );\n\n  updateWidgetAfterSave$ = createEffect(() =>\n    this.actions$.pipe(\n      // Using strings to prevent having core module depending on search module\n      ofType('[SearchMonoClass] save', '[SearchMultiClass] launch save', '[Search Fulltext] save'),\n      withLatestFrom(\n        this.store.select(DataSourceSelectors.editFromWidget),\n        this.store.select(DataSourceSelectors.currentEdit),\n        this.store.select(DashboardSelectors.windowManifest)\n      ),\n      filter(([action, fromWidget, currentEdit, windowManifest]) => fromWidget !== undefined),\n      map(([action, fromWidget, currentEdit, windowManifest]) => {\n        const widgetManifestCopy = JSON.parse(JSON.stringify(windowManifest.widgets[fromWidget?.widgetIndex ?? 0]));\n        // Replacing updated query id by new query id\n        const arrayOfNamedQuery = Array.isArray(widgetManifestCopy.namedQuery)\n          ? widgetManifestCopy.namedQuery\n          : [widgetManifestCopy.namedQuery];\n\n        // @ts-ignore : we don't want to make core depending on search\n        const newQueryId = action.id;\n        const previousNqIndex = arrayOfNamedQuery.indexOf(fromWidget?.editedQuery);\n        if (previousNqIndex >= 0) {\n          arrayOfNamedQuery[previousNqIndex] = newQueryId;\n        } else {\n          // Editing a request that's not in the widget. Adding it\n          arrayOfNamedQuery.push(newQueryId);\n        }\n        widgetManifestCopy.namedQuery = arrayOfNamedQuery;\n\n        return DashboardActions.updateWidgetManifest({\n          index: fromWidget?.widgetIndex ?? 0,\n          manifest: widgetManifestCopy\n        });\n      })\n    )\n  );\n\n  loadedDataset$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.dataset.loadDataset),\n      mergeMap((action) =>\n        this.dataSourceService\n          .getDatasets()\n          .pipe(map((dsd) => DataSourceActions.dataset.loadedDataset({ datasets: dsd })))\n      )\n    )\n  );\n\n  loadDataset$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.load),\n      mergeMap((action) => [DataSourceActions.namedQuery.load(), DataSourceActions.dataset.loadDataset()])\n    )\n  );\n\n  createDataset$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.dataset.create),\n      switchMap((props: { dataset: Dataset; route: string }) =>\n        this.dataSourceService\n          .addDataset(props.dataset)\n          .pipe(\n            mergeMap(() => [\n              DataSourceActions.dataset.loadDataset(),\n              DataSourceActions.dataset.unselectDataset(),\n              DataSourceActions.dataset.created({ path: props.route })\n            ])\n          )\n      ),\n      catchError((error: any) => [DataSourceActions.dataset.failure({ error })])\n    )\n  );\n\n  updateDataset$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.dataset.update),\n      switchMap((props: { dataset: Dataset; route: string }) =>\n        this.dataSourceService\n          .updateDataset(props.dataset)\n          .pipe(\n            mergeMap(() => [\n              DataSourceActions.dataset.loadDataset(),\n              DataSourceActions.dataset.unselectDataset(),\n              DataSourceActions.dataset.updated({ path: props.route })\n            ])\n          )\n      ),\n      catchError((error: any) => [DataSourceActions.dataset.failure({ error })])\n    )\n  );\n\n  deleteDataset$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.dataset.delete),\n      switchMap((action) =>\n        this.dataSourceService.deleteDataset(action.name).pipe(\n          mergeMap(() => [\n            DataSourceActions.dataset.loadDataset(),\n            DataSourceActions.dataset.unselectDataset(),\n            DataSourceActions.dataset.deleted({ addRoute: action.addRoute })\n          ]),\n          catchError((error) => [DataSourceActions.dataset.failure({ error })])\n        )\n      )\n    )\n  );\n\n  getDatasetById$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.dataset.getDatasetById),\n      mergeMap((action) =>\n        this.dataSourceService.getDatasetById(action.id).pipe(\n          map((data) => DataSourceActions.dataset.getDatasetByIdSuccess({ data })),\n          catchError((error) => [DataSourceActions.dataset.getDatasetByIdFailure({ error })])\n        )\n      )\n    )\n  );\n\n  listVersions$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.dataset.listVersions),\n      switchMap((action) =>\n        this.dataSourceService.getDatasetVersions().pipe(\n          map((data) => DataSourceActions.dataset.listVersionsSuccess({ versions: data })),\n          catchError((error) => [DataSourceActions.dataset.listVersionsFailure()])\n        )\n      )\n    )\n  );\n\n  confirmDatasourceDeletion$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType(DataSourceActions.dataset.confirmDataSourceDeletion),\n        tap((action) => {\n          const data: YapDialogConfirmData = {\n            title: '@yap.admin.infoModalTitle',\n            message: '@yap.admin.dataset.delete',\n            actions: [\n              {\n                id: 0,\n                label: '@yap.admin.delete',\n                actions: [\n                  DataSourceActions.dataset.delete({\n                    name: action.name,\n                    route: action.route,\n                    addRoute: action.addRoute\n                  })\n                ]\n              },\n              { id: 0, label: '@yap.admin.cancel' }\n            ]\n          };\n          this.yapDialog.open(YapDialogConfirmComponent, { data });\n        })\n      ),\n    { dispatch: false }\n  );\n\n  deactivateDatasetVersion$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.dataset.deactivateDatasetVersion),\n      switchMap((action: any) =>\n        this.dataSourceService.deactivateDatasetVersion(action.id).pipe(\n          map((datasetVersion) => DataSourceActions.dataset.deactivateDatasetVersionSuccess({ datasetVersion })),\n          catchError((error) => [DataSourceActions.dataset.deactivateDatasetVersionFailure({ error })])\n        )\n      )\n    )\n  );\n\n  activateDatasetVersion$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.dataset.activateDatasetVersion),\n      switchMap((action: any) =>\n        this.dataSourceService.activateDatasetVersion(action.id).pipe(\n          map((datasetVersion) => DataSourceActions.dataset.activateDatasetVersionSuccess({ datasetVersion })),\n          catchError((error) => [DataSourceActions.dataset.activateDatasetVersionFailure({ error })])\n        )\n      )\n    )\n  );\n\n  errorsGetById$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DataSourceActions.dataset.errors.getById),\n      switchMap((action: any) =>\n        this.dataSourceService.retrieveErrors(action.id).pipe(\n          map((errors) => DataSourceActions.dataset.errors.getByIdSuccess({ errors })),\n          catchError((error) => [DataSourceActions.dataset.errors.getByIdFailure({ error })])\n        )\n      )\n    )\n  );\n}\n","import { createAction, props } from '@ngrx/store';\nimport { RelationType } from './relation-types.interface';\n\nexport const RelationTypesActions = {\n  load: createAction('[Relation Types] Load Relation Types'),\n  loadSuccess: createAction('[Relation Types Api] Load Relation Types Success', props<{ datas: RelationType[] }>()),\n  loadFailure: createAction('[Relation Types Api] Load Relation Types Failure', props<{ error: any }>()),\n\n  saveRelationType: createAction('[Relation Types] Save Relation Types', props<{ id: string; name: string }>()),\n  saveRelationTypeSuccess: createAction('[Relation Types Api] Save Relation Types Success'),\n  saveRelationTypeFailure: createAction('[Relation Types Api] Save Relation Types Failure', props<{ error: any }>()),\n\n  selectRelationType: createAction('[Relation Types] Select Relation Type', props<{ id: string }>()),\n  unSelectRelationType: createAction('[Relation Types] UnSelect Relation Type'),\n\n  deleteRelationType: createAction('[Relation Types] Delete Relation Types', props<{ relationType: RelationType }>()),\n  deleteRelationTypeSuccess: createAction('[Relation Types Api] Delete Relation Types Success'),\n  deleteRelationTypeFailure: createAction(\n    '[Relation Types Api] Delete Relation Types Failure',\n    props<{ error: any }>()\n  ),\n\n  createRelation: createAction(\n    '[Relation Types Api] Create Relation',\n    props<{ from: string[]; to: string; typeId: string; inversion: boolean }>()\n  ),\n  createRelationSuccess: createAction('[Relation Types Api] Create Relation success'),\n  createRelationFailure: createAction('[Relation Types Api] Create Relation failure', props<{ error: any }>()),\n\n  openModal: createAction('[Relation Types] Open modal'),\n  closeModal: createAction('[Relation Types] Close modal'),\n\n  openDeleteModale: createAction('[Relation Types] Open delete modal'),\n  closeDeleteModale: createAction('[Relation Types] Close delete modal')\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { map, mergeMap, Observable } from 'rxjs';\nimport { Relation } from '../../model/relation.interface';\nimport { ConfigSelectors } from '../config/config.selectors';\nimport { RelationType } from './relation-types.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RelationTypesService {\n  constructor(private store: Store, private httpClient: HttpClient) {}\n\n  addRelationType(id: string, name: string): Observable<void> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/relation-types`, { id: id, name: name })));\n  }\n\n  getRelationsTypes(): Observable<RelationType[]> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.get<RelationType[]>(`${url}/relation-types`)));\n  }\n\n  deleteRelationType(id: string): Observable<void> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.delete<void>(`${url}/relation-types/id/${id}`)));\n  }\n\n  createRelation(\n    sources: string[],\n    destination: string,\n    relationType: string,\n    inversion: boolean\n  ): Observable<Relation[]> {\n    let relations: any = [];\n    if (inversion) {\n      relations = sources.map((source) => ({ source: destination, destination: source, relationType }));\n    } else {\n      relations = sources.map((source) => ({ destination, source, relationType }));\n    }\n    return this.store.select(ConfigSelectors.dataUrl).pipe(\n      mergeMap((url) => this.httpClient.post<void>(`${url}/relations`, relations)),\n      map(() => relations)\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\nimport { DashboardActions } from '../../../dashboard/store/dashboard.actions';\nimport { YapDialogConfirmComponent, YapDialogConfirmData } from '../../components/overlay/dialog-confirm.component';\nimport { YapDialogService } from '../../components/overlay/dialog.service';\nimport { RelationTypesActions } from './relation-types.actions';\nimport { RelationTypesService } from './relation-types.service';\n\n@Injectable()\nexport class RelationTypesEffects {\n  loadRelationsTypes$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(RelationTypesActions.load),\n      mergeMap((action) =>\n        this.service.getRelationsTypes().pipe(\n          map((datas) => RelationTypesActions.loadSuccess({ datas })),\n          catchError((error) => [RelationTypesActions.loadFailure({ error })])\n        )\n      )\n    )\n  );\n\n  saveRelationType$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(RelationTypesActions.saveRelationType),\n      mergeMap((action) =>\n        this.service.addRelationType(action.id, action.name).pipe(\n          map((data) => RelationTypesActions.saveRelationTypeSuccess()),\n          catchError((error) => [RelationTypesActions.saveRelationTypeFailure({ error })])\n        )\n      )\n    )\n  );\n\n  saveRelationTypeSuccess$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(RelationTypesActions.saveRelationTypeSuccess),\n      map((action) => {\n        return RelationTypesActions.load();\n      })\n    )\n  );\n\n  deleteRelationType$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(RelationTypesActions.deleteRelationType),\n      mergeMap((action) => {\n        if (!action.relationType.deletable) {\n          const data: YapDialogConfirmData = {\n            title: '@yap.admin.infoModalTitle',\n            message: '@yap.admin.relationTypes.deleteModalMessage',\n            actions: [{ id: 0, label: '@yap.admin.closeModale' }]\n          };\n          this.yapDialog.open(YapDialogConfirmComponent, { data });\n          return [];\n        } else {\n          return this.service.deleteRelationType(action.relationType.id).pipe(\n            map((data) => RelationTypesActions.deleteRelationTypeSuccess()),\n            catchError((error) => [RelationTypesActions.deleteRelationTypeFailure({ error })])\n          );\n        }\n      })\n    )\n  );\n\n  createRelation$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(RelationTypesActions.createRelation),\n      mergeMap((action) =>\n        this.service.createRelation(action.from, action.to, action.typeId, action.inversion).pipe(\n          mergeMap((relations) => [\n            RelationTypesActions.createRelationSuccess(),\n            DashboardActions.addRelationsToResultSets({ relations })\n          ]),\n          catchError((error) => [RelationTypesActions.createRelationFailure({ error })])\n        )\n      )\n    )\n  );\n\n  constructor(\n    private actions$: Actions,\n    private service: RelationTypesService,\n    private router: Router,\n    private yapDialog: YapDialogService\n  ) {}\n}\n","import { createReducer, on } from '@ngrx/store';\nimport { RelationTypesActions } from './relation-types.actions';\nimport { RelationType } from './relation-types.interface';\n\nexport const relationTypesFeatureKey = '@yap/relation-types';\n\nexport interface RelationTypeState {\n  relationsTypes: RelationType[];\n  selectedRelationType?: RelationType;\n  loading: boolean;\n  openModal: boolean;\n  openDeleteModale: boolean;\n}\n\nexport const initialRelationTypeState: RelationTypeState = {\n  relationsTypes: [],\n  loading: false,\n  openModal: false,\n  openDeleteModale: false\n};\n\nexport const relationTypeReducer = createReducer(\n  initialRelationTypeState,\n  on(RelationTypesActions.load, (state, action) => ({\n    ...state,\n    loading: true\n  })),\n  on(RelationTypesActions.loadSuccess, (state, action) => ({\n    ...state,\n    relationsTypes: [...action.datas],\n    loading: false\n  })),\n  on(RelationTypesActions.loadFailure, (state, action) => ({\n    ...state,\n    loading: false\n  })),\n  on(RelationTypesActions.selectRelationType, (state, action) => ({\n    ...state,\n    selectedRelationType: state.relationsTypes.find((rt) => rt.id === action.id)\n  })),\n  on(RelationTypesActions.unSelectRelationType, (state, action) => ({\n    ...state,\n    selectedRelationType: undefined\n  })),\n  on(RelationTypesActions.openModal, (state, action) => ({\n    ...state,\n    openModal: true\n  })),\n  on(RelationTypesActions.closeModal, (state, action) => ({\n    ...state,\n    openModal: false\n  }))\n);\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { filter } from 'rxjs';\nimport { catchError, map, mergeMap, withLatestFrom } from 'rxjs/operators';\nimport { DashboardActions } from '../../../dashboard/store/dashboard.actions';\nimport { DashboardSelectors } from '../../../dashboard/store/dashboard.selectors';\nimport { MonoClassSearchPayload } from '../../model/search-mono-class.model';\nimport { FullTextSearchPayload, MultiClassSearchPayload } from '../../model/search-multi-class.model';\nimport { SearchActions } from './search.actions';\nimport { DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID } from './search.constants';\nimport { SearchService } from './search.service';\n\n@Injectable()\nexport class SearchEffects {\n  constructor(private actions$: Actions, private searchService: SearchService, private store: Store) {}\n\n  searchNamed$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchActions.getDatasourceItems),\n      withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.quickOrder)),\n      filter(([_, rank]) => rank === 0),\n      filter(([props, rank]) => props.id !== DEFAULT_NAMED_QUERY_ID && props.id !== EXPLORE_NAMED_QUERY_ID),\n      mergeMap(([props, rank, quickOrder]) =>\n        this.searchService.getItems(props.id, quickOrder[props.id]).pipe(\n          map((resultSet) =>\n            SearchActions.searchSuccess({\n              resultSet,\n              id: props.id,\n              params: this.searchService.getItemsSerializedParams(props.id, quickOrder)\n            })\n          ),\n          catchError((error) => [SearchActions.searchFailure({ error, id: props.id })])\n        )\n      )\n    )\n  );\n\n  search$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchActions.search),\n      mergeMap(\n        (props: { payload: MonoClassSearchPayload | MultiClassSearchPayload | FullTextSearchPayload; id?: string }) =>\n          this.searchService.search(props.payload).pipe(\n            map((resultSet) => SearchActions.searchSuccess({ resultSet, id: props.id })),\n            catchError((error) => [SearchActions.searchFailure({ error })])\n          )\n      )\n    )\n  );\n\n  searchSuccess$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(SearchActions.searchSuccess),\n      map((action) =>\n        DashboardActions.updateResultSet({\n          id: action.id ?? DEFAULT_NAMED_QUERY_ID,\n          resultSet: action.resultSet,\n          params: action.params ? action.params : undefined\n        })\n      )\n    )\n  );\n}\n","import { createReducer, on } from '@ngrx/store';\nimport { MonoClassSearchPayload } from '../../model/search-mono-class.model';\nimport { FullTextSearchPayload, MultiClassSearchPayload } from '../../model/search-multi-class.model';\nimport { SearchActions } from './search.actions';\nimport { DEFAULT_NAMED_QUERY_ID } from './search.constants';\n\nexport const searchFeatureKey = '@yap/search';\n\nexport interface SearchState {\n  searchLoading: string[];\n  payload?: MonoClassSearchPayload | MultiClassSearchPayload | FullTextSearchPayload;\n  id?: string;\n}\n\nexport const initialSearchState: SearchState = {\n  searchLoading: [],\n  payload: undefined,\n  id: undefined\n};\n\nexport const searchReducer = createReducer(\n  initialSearchState,\n  on(SearchActions.search, (state, action) => ({\n    ...state,\n    searchLoading: [...new Set([...state.searchLoading, DEFAULT_NAMED_QUERY_ID])],\n    payload: action.payload,\n    id: action.id\n  })),\n  on(SearchActions.getDatasourceItems, (state, action) => ({\n    ...state,\n    searchLoading: [...new Set([...state.searchLoading, action.id])]\n  })),\n  on(SearchActions.searchSuccess, (state, action) => ({\n    ...state,\n    searchLoading: [...state.searchLoading.filter((id) => id !== (action.id ?? DEFAULT_NAMED_QUERY_ID))]\n  })),\n  on(SearchActions.searchFailure, (state, action) => ({\n    ...state,\n    searchLoading: [...state.searchLoading.filter((id) => id !== (action.id ?? DEFAULT_NAMED_QUERY_ID))]\n  }))\n);\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { DashboardSelectors } from '../../../dashboard/store/dashboard.selectors';\nimport { YapI18nService } from '../../i18n/i18n.service';\n\n@Component({\n  selector: 'yap-title-presentation',\n  templateUrl: './title-presentation.component.html'\n})\nexport class YapTitlePresentationComponent {\n  presentationTitle$: Observable<string>;\n  constructor(private store: Store, private i18nService: YapI18nService) {\n    this.presentationTitle$ = combineLatest([this.store.select(DashboardSelectors.presentation)]).pipe(\n      map(([presentation]) => {\n        if (presentation.current) {\n          return presentation.current.name;\n        }\n        return this.i18nService.instant('@yap.header.noCurrentPresentation');\n      })\n    );\n  }\n}\n","<div>\n  <h1 class=\"a-h1 a-presentation-title\">{{ presentationTitle$ | async }}</h1>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { DatasetError } from '../../model/dataset.interface';\nimport { DataSourceActions } from '../../store/data-source/data-source.actions';\nimport { DatasetVersion } from '../../store/data-source/data-source.model';\nimport { DataSourceSelectors } from '../../store/data-source/data-source.selectors';\n\n@Component({\n  selector: 'yap-modalStatus',\n  templateUrl: 'modalStatus.component.html'\n})\nexport class YapModalStatusComponent {\n  @Output() gotoConsult = new EventEmitter<DatasetVersion>();\n  datasetErrors$?: Observable<DatasetError[]>;\n  _version?: DatasetVersion;\n\n  @Input() set version(version: DatasetVersion | undefined) {\n    this._version = version;\n    if (!!version) {\n      this.store.dispatch(DataSourceActions.dataset.errors.getById({ id: version.id }));\n      this.datasetErrors$ = this.store.select(DataSourceSelectors.datasetErrors);\n    }\n  }\n\n  constructor(private store: Store) {}\n\n  goBack() {\n    this.gotoConsult.emit(this.version);\n  }\n}\n","<div class=\"o-modal-wrapper\">\n  <div>\n    <h2>{{ '@yap.dataset.error.title' | i18n }}</h2>\n  </div>\n  <div></div>\n  <table class=\"a-table\">\n    <thead>\n      <tr>\n        <th>{{ '@yap.dataset.error.code' | i18n }}</th>\n        <th>{{ '@yap.dataset.error.elements' | i18n }} << TOFIX</th>\n        <th>{{ '@yap.dataset.error.message' | i18n }}</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr *ngFor=\"let error of datasetErrors$ | async\">\n        <td>\n          {{ error.code }}\n        </td>\n        <td>\n          {{ error.line }}\n        </td>\n        <td>\n          {{ error.message }}\n        </td>\n      </tr>\n    </tbody>\n  </table>\n  <div class=\"m-btn-group\">\n    <button>\n      <yap-icon [height]=\"15\" [width]=\"15\" iconSvg=\"download\" class=\"download\"></yap-icon>\n      <span>{{ '@yap.dataset.export' | i18n }}</span>\n    </button>\n    <button class=\"a-btn a-btn--primary\" (click)=\"goBack()\">\n      <span>{{ '@yap.dataset.error.close' | i18n }}</span>\n    </button>\n  </div>\n</div>\n","export const frTranslations = {\n  '@yap': {\n    dataset: {\n      title: 'Catalogue des jeux de données',\n      search: 'Rechercher',\n      date: 'Date',\n      status: 'Statut',\n      data: 'Données',\n      table: 'Tableau',\n      export: 'Export',\n      api: 'API',\n      returnToList: 'Retourner a la liste des jeux de donnees',\n      version: {\n        title: 'Intitulé',\n        INDEXING: 'En chargement',\n        LOADING: 'En chargement',\n        INACTIVE: 'Invalide',\n        ERROR: 'En erreur',\n        ACTIVE: 'Disponible',\n        currentlyActive: 'Active'\n      },\n      buttonAction: {\n        ACTIVE: 'Invalider',\n        INACTIVE: 'Valider',\n        ERROR: 'Consulter erreurs',\n        LOADING: '',\n        INDEXING: ''\n      },\n      error: {\n        title: 'Liste des erreurs',\n        code: 'Code',\n        elements: 'Elements',\n        message: 'Message',\n        close: 'Fermer'\n      }\n    }\n  }\n};\n","export const enTranslations = {\n  '@yap': {\n    dataset: {\n      title: 'Dataset catalog',\n      search: 'Search',\n      date: 'Date',\n      status: 'Status',\n      data: 'Data',\n      export: 'Export',\n      version: {\n        title: 'Title',\n        INDEXING: 'Loading',\n        LOADING: 'Loading',\n        INACTIVE: 'Invalid',\n        ERROR: 'Error',\n        ACTIVE: 'Available',\n        currentlyActive: 'Active'\n      },\n      buttonAction: {\n        ACTIVE: 'Invalidate',\n        INACTIVE: 'Validate',\n        ERROR: 'Consult errors',\n        LOADING: '',\n        INDEXING: ''\n      },\n      api: 'API',\n      error: {\n        title: 'List of errors',\n        close: 'Close'\n      }\n    }\n  }\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { YapModalStatusComponent } from './modalStatus.component';\nimport { YapIconModule } from '../icon/icon.module';\nimport { YapI18nModule } from '../../i18n/i18n.module';\nimport { YapI18nService } from '../../i18n/i18n.service';\nimport { frTranslations } from '../../../../dataset/i18n/fr.translations';\nimport { enTranslations } from '../../../../dataset/i18n/en.translations';\n\n@NgModule({\n  imports: [CommonModule, YapIconModule, YapI18nModule],\n  declarations: [YapModalStatusComponent],\n  exports: [YapModalStatusComponent]\n})\nexport class YapModalStatusModule {\n  constructor(private yapTranslateService: YapI18nService) {\n    this.yapTranslateService.addLangObject('fr', 'dataset', frTranslations);\n    this.yapTranslateService.addLangObject('en', 'dataset', enTranslations);\n  }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { YapAccessDirective } from './access/access.directive';\nimport { YAP_ACCESS_GUARD, YapDefaultAccessGuard } from './access/access.guard';\nimport { YAP_ACCESS_TOKEN, YapDefaultAccessService } from './access/access.service';\nimport { BaseLayoutComponent } from './components/base-layout/base-layout.component';\nimport { BaseMenuComponent } from './components/base-menu/base-menu.component';\nimport { BaseToolboxActionComponent } from './components/base-toolbox-action/base-toolbox-action.component';\nimport { BaseToolboxComponent } from './components/base-toolbox/base-toolbox.component';\nimport { GetSecuredImagePipe } from './components/get-secured-image/get-secured-image.pipe';\nimport { YapIconModule } from './components/icon/icon.module';\nimport { YapNqColorSelectorComponent } from './components/nq-color-selector/nq-color-selector.component';\nimport { YapOverlayModule } from './components/overlay/overlay.module';\nimport { YapSelectImageComponent } from './components/select-image/select-image.component';\nimport { TranslateIdPipe } from './components/translate-id/translate-id.pipe';\nimport { TranslateItemToSymbolPipe } from './components/translate-item-to-symbol/translate-item-to-symbol.pipe';\nimport { YapUploadComponent } from './components/upload/upload.component';\nimport { YapI18nModule } from './i18n/i18n.module';\nimport { YapI18nService } from './i18n/i18n.service';\nimport { CategoryEffects } from './store/category/category.effects';\nimport { categoriesFeatureKey, categoryReducer } from './store/category/category.reducer';\nimport { ClassEffects } from './store/class/class.effects';\nimport { classesFeatureKey, classReducer } from './store/class/class.reducer';\nimport { ConfigEffects } from './store/config/config.effects';\nimport { configFeatureKey, configReducer } from './store/config/config.reducer';\nimport { ContextMenuEffects } from './store/context-menu/context-menu.effects';\nimport { contextMenuFeatureKey, contextMenuReducer } from './store/context-menu/context-menu.reducer';\nimport { FieldEffects } from './store/field/field.effects';\nimport { fieldReducer, fieldsFeatureKey } from './store/field/field.reducer';\nimport { ImageEffects } from './store/image/image.effects';\nimport { imageFeatureKey, imageReducer } from './store/image/image.reducer';\nimport { ItemEffects } from './store/item/item.effects';\nimport { DataSourceEffects } from './store/data-source/data-source.effects';\nimport { dataSourceFeatureKey, dataSourceReducer } from './store/data-source/data-source.reducer';\nimport { RelationTypesEffects } from './store/relation-types/relation-types.effects';\nimport { relationTypeReducer, relationTypesFeatureKey } from './store/relation-types/relation-types.reducer';\nimport { SearchEffects } from './store/search/search.effects';\nimport { searchFeatureKey, searchReducer } from './store/search/search.reducer';\nimport { YapTitlePresentationComponent } from './components/title-presentation/title-presentation.component';\nimport { YapModalStatusModule } from './components/modalStatus/modalStatus.module';\n\n@NgModule({\n  declarations: [\n    TranslateIdPipe,\n    TranslateItemToSymbolPipe,\n    GetSecuredImagePipe,\n    BaseLayoutComponent,\n    BaseMenuComponent,\n    BaseToolboxComponent,\n    BaseToolboxActionComponent,\n    YapNqColorSelectorComponent,\n    YapAccessDirective,\n    YapUploadComponent,\n    YapSelectImageComponent,\n    YapTitlePresentationComponent\n  ],\n  imports: [\n    CommonModule,\n    RouterModule,\n    HttpClientModule,\n    StoreModule.forFeature(searchFeatureKey, searchReducer),\n    StoreModule.forFeature(dataSourceFeatureKey, dataSourceReducer),\n    StoreModule.forFeature(configFeatureKey, configReducer),\n    StoreModule.forFeature(fieldsFeatureKey, fieldReducer),\n    StoreModule.forFeature(classesFeatureKey, classReducer),\n    StoreModule.forFeature(imageFeatureKey, imageReducer),\n    StoreModule.forFeature(categoriesFeatureKey, categoryReducer),\n    StoreModule.forFeature(contextMenuFeatureKey, contextMenuReducer),\n    StoreModule.forFeature(relationTypesFeatureKey, relationTypeReducer),\n    EffectsModule.forFeature([FieldEffects, ImageEffects]),\n    EffectsModule.forFeature([ClassEffects]),\n    EffectsModule.forFeature([ConfigEffects]),\n    EffectsModule.forFeature([CategoryEffects]),\n    EffectsModule.forFeature([ContextMenuEffects]),\n    EffectsModule.forFeature([SearchEffects]),\n    EffectsModule.forFeature([DataSourceEffects]),\n    EffectsModule.forFeature([RelationTypesEffects]),\n    EffectsModule.forFeature([ItemEffects]),\n    YapIconModule,\n    OverlayModule,\n    YapOverlayModule,\n    YapI18nModule,\n    YapModalStatusModule\n  ],\n  providers: [AsyncPipe, TranslateIdPipe, TranslateItemToSymbolPipe],\n  exports: [\n    TranslateIdPipe,\n    TranslateItemToSymbolPipe,\n    GetSecuredImagePipe,\n    BaseLayoutComponent,\n    BaseMenuComponent,\n    BaseToolboxComponent,\n    YapNqColorSelectorComponent,\n    YapAccessDirective,\n    YapUploadComponent,\n    YapSelectImageComponent,\n    YapTitlePresentationComponent\n  ]\n})\nexport class YapCoreModule {\n  constructor(private yapTranslateService: YapI18nService) {\n    this.yapTranslateService.addCoreTranslations();\n  }\n\n  static forRoot(access?: { accessProvider?: Provider; guardProvider?: Provider }): ModuleWithProviders<YapCoreModule> {\n    const defaultAccessProvider = { provide: YAP_ACCESS_TOKEN, useClass: YapDefaultAccessService };\n    const defaultGuardProvider = { provide: YAP_ACCESS_GUARD, useClass: YapDefaultAccessGuard };\n    return {\n      ngModule: YapCoreModule,\n      providers: [access?.accessProvider ?? defaultAccessProvider, access?.guardProvider ?? defaultGuardProvider]\n    };\n  }\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromSearch from './search.reducer';\n\nconst feature = createFeatureSelector<fromSearch.SearchState>(fromSearch.searchFeatureKey);\n\nconst searchLoading = createSelector(feature, (state) => state.searchLoading);\n\nexport const SearchSelectors = {\n  feature,\n  searchLoading\n};\n","import { AttributeSimpleValue, Item } from '../../model/item.interface';\nimport { ResultSet } from '../../model/result-set.interface';\nimport { FieldType } from '../field/field.interface';\n\nexport const latLonToGeographicFieldTransformation =\n  (latAttrName: string, lonAttrName: string, locAttrName: string, datasetIds: string[] = []) =>\n  (id: string, result: ResultSet) => {\n    if (datasetIds.length > 0 && !datasetIds.includes(id)) {\n      return result;\n    }\n\n    const targetResultSet = { ...result } as ResultSet;\n    Object.keys(result.items).forEach((classId) => {\n      targetResultSet.items[classId] = [\n        ...result.items[classId].map((item) => {\n          if (!item.attributes[latAttrName] || !item.attributes[lonAttrName]) {\n            return item;\n          }\n\n          return {\n            ...item,\n            attributes: {\n              ...item.attributes,\n              [locAttrName]: {\n                type: 'VALUE',\n                visible: true,\n                value: {\n                  type: FieldType.POINT,\n                  coordinates: [\n                    parseFloat((item.attributes[lonAttrName] as AttributeSimpleValue).value + ''),\n                    parseFloat((item.attributes[latAttrName] as AttributeSimpleValue).value + '')\n                  ]\n                }\n              }\n            }\n          } as Item;\n        })\n      ];\n    });\n    return targetResultSet;\n  };\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromCategory from './category.reducer';\n\nconst feature = createFeatureSelector<fromCategory.CategoryState>(fromCategory.categoriesFeatureKey);\nconst entities = createSelector(feature, fromCategory.selectEntities);\nconst categories = createSelector(feature, fromCategory.selectAll);\n\nexport const CategorySelectors = {\n  feature,\n  entities,\n  categories\n};\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromRelationTypes from './relation-types.reducer';\n\nconst feature = createFeatureSelector<fromRelationTypes.RelationTypeState>(fromRelationTypes.relationTypesFeatureKey);\n\nconst relationsTypes = createSelector(feature, (state) => {\n  const arrayForSort = [...state?.relationsTypes];\n  return arrayForSort.sort((a, b) => a.name.localeCompare(b.name));\n});\nconst selectedRelationType = createSelector(feature, (state) => state?.selectedRelationType);\nconst openModal = createSelector(feature, (state) => state.openModal);\nconst openDeleteModale = createSelector(feature, (state) => state.openDeleteModale);\n\nexport const RelationTypesSelectors = {\n  feature,\n  relationsTypes,\n  selectedRelationType,\n  openModal,\n  openDeleteModale\n};\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\n\n@Component({\n  selector: 'loop-scroll-column',\n  templateUrl: './loop-scroll-column.component.html'\n})\nexport class LoopScrollColumnComponent implements AfterViewInit, OnChanges {\n  LOOP_COUNTER = [0, 1];\n  @ViewChild('column') column?: ElementRef;\n  @Input() list: any;\n  @Input() selectedItem: any;\n  @Output() selection = new EventEmitter<any>();\n\n  clones: any = [];\n  disableScroll = false;\n  scrollHeight = 0;\n  scrollPos = 0;\n  clonesHeight = 0;\n\n  constructor() {\n    this.reCalc();\n  }\n\n  ngAfterViewInit(): void {\n    this.clones = this.column?.nativeElement.querySelectorAll('.is-clone') ?? [];\n    this.reCalc();\n    this.column?.nativeElement.querySelector('.-selected')?.scrollIntoView();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    setTimeout(() => {\n      this.column?.nativeElement.querySelector('.-selected')?.scrollIntoView({ block: 'center' });\n    }, 0);\n  }\n\n  select(item: any) {\n    this.selectedItem = item;\n    this.selection.emit(item);\n  }\n\n  getScrollPos() {\n    return this.column?.nativeElement.scrollTop ?? 0;\n  }\n\n  setScrollPos(pos: number) {\n    if (this.column) {\n      this.column.nativeElement.scrollTop = pos;\n    }\n  }\n\n  getClonesHeight() {\n    this.clonesHeight = 0;\n    for (let i = 0; i < this.clones.length; i += 1) {\n      this.clonesHeight += (this.clones[i] as HTMLElement).offsetHeight;\n    }\n    return this.clonesHeight;\n  }\n\n  reCalc() {\n    this.scrollPos = this.getScrollPos();\n    this.scrollHeight = this.column?.nativeElement.scrollHeight || 0;\n    this.clonesHeight = this.getClonesHeight();\n\n    if (this.scrollPos <= 0) {\n      this.setScrollPos(1); // Scroll 1 pixel to allow upwards scrolling\n    }\n  }\n\n  onScroll() {\n    window.requestAnimationFrame(() => this.scrollUpdate());\n  }\n\n  scrollUpdate() {\n    if (!this.disableScroll) {\n      this.scrollPos = this.getScrollPos();\n\n      if (this.clonesHeight + this.scrollPos >= this.scrollHeight) {\n        // Scroll to the top when you’ve reached the bottom\n        this.setScrollPos(1); // Scroll down 1 pixel to allow upwards scrolling\n        this.disableScroll = true;\n      } else if (this.scrollPos <= 0) {\n        // Scroll to the bottom when you reach the top\n        this.setScrollPos(this.scrollHeight - this.clonesHeight);\n        this.disableScroll = true;\n      }\n    }\n\n    if (this.disableScroll) {\n      // Disable scroll-jumping for a short time to avoid flickering\n      window.setTimeout(() => {\n        this.disableScroll = false;\n      }, 40);\n    }\n  }\n}\n","<ul class=\"m-time-picker__list\" (scroll)=\"onScroll()\" [class.disable-scroll]=\"disableScroll\" #column>\n  <ng-container *ngFor=\"let index of LOOP_COUNTER\">\n    <li *ngFor=\"let item of list\" class=\"m-time-picker__list__item\" [class.is-clone]=\"index === 0\">\n      <button (click)=\"select(item)\" [class.-selected]=\"selectedItem === item\">{{ item }}</button>\n    </li>\n  </ng-container>\n</ul>\n","import { Component, ElementRef, forwardRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n  selector: 'yap-time-picker',\n  templateUrl: './time-picker.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => YapTimePickerComponent),\n      multi: true\n    }\n  ]\n})\nexport class YapTimePickerComponent implements ControlValueAccessor, OnInit {\n  HOURS = Array.from(Array(24).keys()).map((hour) => hour.toString().padStart(2, '0'));\n  MINUTES = Array.from(Array(60).keys()).map((min) => min.toString().padStart(2, '0'));\n  @Input() AMPMFormat: boolean = false;\n  selectedHour = new BehaviorSubject(new Date().getHours().toString().padStart(2, '0'));\n  selectedMinute = new BehaviorSubject(new Date().getMinutes().toString().padStart(2, '0'));\n  time = this.selectedHour + ':' + this.selectedHour + ':00';\n  @ViewChild('hourInput') hourInput?: ElementRef;\n  @ViewChild('minuteInput') minuteInput?: ElementRef;\n\n  onChange = (time: string) => {};\n  onTouched = () => {};\n  touched = false;\n  disabled = false;\n\n  ngOnInit(): void {\n    this.onChange(this.time);\n  }\n\n  writeValue(time: string | null): void {\n    if (time) {\n      this.selectedHour.next(new Date('1970-01-01T' + time).getHours().toString().padStart(2, '0'));\n      this.selectedMinute.next(new Date('1970-01-01T' + time).getMinutes().toString().padStart(2, '0'));\n    }\n  }\n\n  registerOnChange(onChange: any): void {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(onTouched: any): void {\n    this.onTouched = onTouched;\n  }\n\n  selectHour(event: string): void {\n    this.markAsTouched();\n    this.selectedHour.next(event);\n    this.onChange(this.getTimeFormatted());\n  }\n\n  selectMinute(event: string): void {\n    this.markAsTouched();\n    this.selectedMinute.next(event);\n    this.onChange(this.getTimeFormatted());\n  }\n\n  getTimeFormatted(): string {\n    return this.selectedHour.value + ':' + this.selectedMinute.value + ':00';\n  }\n\n  markAsTouched(): void {\n    if (!this.touched) {\n      this.onTouched();\n      this.touched = true;\n    }\n  }\n}\n","<div class=\"m-time-picker\" *ngIf=\"{ hour: selectedHour | async, minute: selectedMinute | async } as time\">\n  <loop-scroll-column\n    [list]=\"HOURS\"\n    [selectedItem]=\"time.hour\"\n    (selection)=\"selectHour($event)\"\n    #hourInput\n  ></loop-scroll-column>\n  <loop-scroll-column\n    [list]=\"MINUTES\"\n    [selectedItem]=\"time.minute\"\n    (selection)=\"selectMinute($event)\"\n    #minuteInput\n  ></loop-scroll-column>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'dateRangeHighlight'\n})\nexport class DateRangeHighlightPipe implements PipeTransform {\n  transform(day: number, month: number, year: number, start: Date | null, end: Date | null): string {\n    let className = '';\n    function getDate() {\n      return new Date(year, month, day + 1);\n    }\n\n    if ((start && !end) || this.areDatesEqual(start, end)) {\n      className = this.areDatesEqual(getDate(), start) ? '-selected' : '';\n    } else if (start && end) {\n      if (this.areDatesEqual(getDate(), start) && !this.areDatesEqual(start, end)) {\n        className = '-start';\n      } else if (this.areDatesEqual(getDate(), end) && !this.areDatesEqual(start, end)) {\n        className = '-end';\n      } else if (getDate() > start && getDate() < end) {\n        className = '-in-range';\n      }\n    }\n    return className;\n  }\n\n  private areDatesEqual(date1: Date | null, date2: Date | null) {\n    if (date1 && date2) {\n      date1.setHours(0, 0, 0, 0);\n      date2.setHours(0, 0, 0, 0);\n      return date1.getTime() === date2.getTime();\n    }\n    return false;\n  }\n}\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, combineLatest, map } from 'rxjs';\n\nexport interface DateRange {\n  start: string;\n  end?: string;\n}\n\n@Component({\n  selector: 'yap-date-picker',\n  templateUrl: './date-picker.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => YapDatePickerComponent),\n      multi: true\n    }\n  ]\n})\nexport class YapDatePickerComponent implements ControlValueAccessor {\n  TODAY = new Date();\n  WEEKDAYS = [...Array(7).keys()];\n  MONTHS = [...Array(12).keys()];\n  @Input() rangePicker: boolean = false;\n  @Input() timePicker: boolean = false;\n  @Input() maxYear: number = this.TODAY.getFullYear() + 10;\n  @Input() minYear: number = this.maxYear - 50;\n  @Input() roundSelection: boolean = false;\n  YEARS = [...Array(this.maxYear + 1).keys()].filter((year) => year >= this.minYear).reverse();\n  onChange = (date: string | Date | DateRange) => {};\n  onTouched = () => {};\n  touched = false;\n  disabled = false;\n\n  currentYear = new BehaviorSubject(this.TODAY.getFullYear());\n  currentMonth = new BehaviorSubject(this.TODAY.getMonth());\n  dayCount = combineLatest([this.currentYear, this.currentMonth]).pipe(\n    map(([year, month]) => this.getNumberOfDaysInMonth(year, month))\n  );\n  DAY$ = this.dayCount.pipe(map((count) => (count ? [...Array(count).keys()] : [])));\n  firstDay = combineLatest([this.currentYear, this.currentMonth]).pipe(\n    map(([year, month]) => new Date(year, month, 1).getDay())\n  );\n  dateRangeStart: null | Date = null;\n  dateRangeEnd: null | Date = null;\n  time = new BehaviorSubject(\n    `${new Date().getHours().toString().padStart(2, '0')}:${new Date().getMinutes().toString().padStart(2, '0')}:00`\n  );\n\n  writeValue(obj: string | Date | DateRange | null) {\n    if (\n      obj == null ||\n      obj == '' ||\n      (this.dateRangeStart\n        ? this.dateRangeStart > new Date(this.maxYear + 1, 0, 1) || this.dateRangeStart < new Date(this.minYear, 0, 1)\n        : false)\n    ) {\n      return;\n    } else if (typeof obj === 'string') {\n      this.dateRangeStart = !isNaN(new Date(obj).getTime()) ? new Date(obj) : null;\n    } else if (obj instanceof Date) {\n      this.dateRangeStart = !isNaN(new Date(obj).getTime()) ? obj : null;\n    } else {\n      this.dateRangeStart = obj.start ? new Date(obj.start) : null;\n      this.dateRangeEnd = obj.end ? new Date(obj.end) : null;\n    }\n    if (this.timePicker && this.dateRangeStart && !this.rangePicker) {\n      this.time.next(\n        `${this.dateRangeStart.getHours().toString().padStart(2, '0')}:${this.dateRangeStart\n          .getMinutes()\n          .toString()\n          .padStart(2, '0')}:00`\n      );\n    }\n    if (obj && this.dateRangeEnd) {\n      this.currentYear.next(this.dateRangeEnd.getFullYear());\n      this.currentMonth.next(this.dateRangeEnd.getMonth());\n    } else if (obj && this.dateRangeStart) {\n      this.currentYear.next(this.dateRangeStart.getFullYear());\n      this.currentMonth.next(this.dateRangeStart.getMonth());\n    }\n  }\n\n  registerOnChange(onChange: any): void {\n    this.onChange = onChange;\n    if (this.dateRangeEnd) {\n      this.currentYear.next(this.dateRangeEnd.getFullYear());\n      this.currentMonth.next(this.dateRangeEnd.getMonth());\n    } else if (this.dateRangeStart) {\n      this.currentYear.next(this.dateRangeStart.getFullYear());\n      this.currentMonth.next(this.dateRangeStart.getMonth());\n      if (this.timePicker) {\n        this.time.next(\n          `${this.dateRangeStart.getHours().toString().padStart(2, '0')}:${this.dateRangeStart\n            .getMinutes()\n            .toString()\n            .padStart(2, '0')}:00`\n        );\n      }\n    }\n  }\n\n  registerOnTouched(onTouched: any): void {\n    this.touched = onTouched;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  getNumberOfDaysInMonth(year: number, month: number): number {\n    return new Date(year, month + 1, 0).getDate();\n  }\n\n  addLeadingZero(number: number): string {\n    return number > 9 ? number.toString() : '0' + number.toString();\n  }\n\n  getDate(day: number) {\n    let date = new Date(this.currentYear.value, this.currentMonth.value, day);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  changeMonth(e: number) {\n    this.currentMonth.next(e);\n  }\n\n  changeYear(e: number) {\n    this.currentYear.next(e);\n  }\n\n  goBack() {\n    if (this.currentMonth.value - 1 < 0) {\n      this.currentYear.next(this.currentYear.value - 1);\n      this.currentMonth.next(11);\n    } else {\n      this.currentMonth.next(this.currentMonth.value - 1);\n    }\n  }\n\n  goForward() {\n    if (this.currentMonth.value + 1 > 11) {\n      this.currentYear.next(this.currentYear.value + 1);\n      this.currentMonth.next(0);\n    } else {\n      this.currentMonth.next(this.currentMonth.value + 1);\n    }\n  }\n\n  onClick() {\n    this.onTouched();\n    this.emitDateRange();\n  }\n\n  setTime($event: string) {\n    this.time.next($event);\n  }\n\n  setDateRange(day: number) {\n    let selectedDate = this.getDate(day);\n    if (!this.dateRangeStart || this.dateRangeStart.getTime() === selectedDate.getTime()) {\n      this.dateRangeStart = selectedDate;\n    } else if (!this.dateRangeEnd && this.rangePicker) {\n      if (selectedDate < this.dateRangeStart) {\n        this.dateRangeEnd = this.dateRangeStart;\n        this.dateRangeStart = selectedDate;\n      } else {\n        this.dateRangeEnd = selectedDate;\n      }\n    } else {\n      this.dateRangeStart = selectedDate;\n      this.dateRangeEnd = null;\n    }\n  }\n\n  emitDateRange() {\n    let start = this.dateRangeStart\n      ? this.dateRangeStart.getFullYear().toString() +\n        '-' +\n        this.addLeadingZero(this.dateRangeStart.getMonth() + 1) +\n        '-' +\n        this.addLeadingZero(this.dateRangeStart.getDate())\n      : '';\n    let end = this.dateRangeEnd\n      ? this.dateRangeEnd.getFullYear().toString() +\n        '-' +\n        this.addLeadingZero(this.dateRangeEnd.getMonth() + 1) +\n        '-' +\n        this.addLeadingZero(this.dateRangeEnd.getDate())\n      : null;\n\n    if (this.rangePicker && end) {\n      this.onChange({ start, end });\n    } else if (this.timePicker && start) {\n      this.onChange(start + 'T' + this.time.value);\n    } else if (start) {\n      this.onChange(start);\n    }\n  }\n}\n","<div class=\"o-date-picker-wrapper\">\n  <div\n    class=\"o-date-picker\"\n    *ngIf=\"{\n      month: currentMonth | async,\n      year: currentYear | async,\n      firstDay: firstDay | async,\n      count: dayCount | async\n    } as data\"\n  >\n    <div class=\"o-date-picker__header\">\n      <div>\n        <select\n          class=\"o-date-picker__header__dropdown\"\n          name=\"months\"\n          id=\"months\"\n          [ngModel]=\"data.month\"\n          (ngModelChange)=\"changeMonth($event)\"\n        >\n          <option *ngFor=\"let month of MONTHS\" [ngValue]=\"month\" [selected]=\"month === data.month\">\n            {{ '@yap.theme.months.' + month | i18n }}\n          </option>\n        </select>\n        <select\n          class=\"o-date-picker__header__dropdown\"\n          name=\"year\"\n          id=\"year\"\n          [ngModel]=\"data.year\"\n          (ngModelChange)=\"changeYear($event)\"\n        >\n          <option *ngFor=\"let year of YEARS\" [ngValue]=\"year\" [selected]=\"data.year === year\">\n            {{ year }}\n          </option>\n        </select>\n      </div>\n      <div>\n        <button\n          type=\"button\"\n          class=\"a-arrow a-arrow--left\"\n          (click)=\"goBack()\"\n          [disabled]=\"data.year === minYear && data.month === 0\"\n          [class.disabled]=\"disabled\"\n        >\n          <yap-icon iconSvg=\"fleche_bas\" [width]=\"15\" [height]=\"15\"></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.theme.previousMonth' | i18n }}</span>\n        </button>\n        <button\n          type=\"button\"\n          class=\"a-arrow a-arrow--right\"\n          (click)=\"goForward()\"\n          [disabled]=\"data.year === maxYear && data.month === 11\"\n          [class.disabled]=\"disabled\"\n        >\n          <yap-icon iconSvg=\"fleche_bas\" [width]=\"15\" [height]=\"15\"></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.theme.nextMonth' | i18n }}</span>\n        </button>\n      </div>\n    </div>\n\n    <ul class=\"o-date-picker__weekdays\">\n      <li *ngFor=\"let weekday of WEEKDAYS\" class=\"o-date-picker__weekdays__item\">\n        <span>{{ '@yap.theme.shortWeekdays.' + weekday | i18n }}</span>\n      </li>\n    </ul>\n\n    <div class=\"o-date-picker__days-grid\" *ngIf=\"data.month !== null && data.year !== null\">\n      <button\n        *ngFor=\"let day of DAY$ | async; first as first\"\n        (click)=\"setDateRange(day + 1); onClick()\"\n        class=\"o-date-picker__days-grid__item\"\n        [ngClass]=\"[\n          roundSelection ? 'round' : '',\n          first ? 'start-' + data.firstDay : '',\n          day | dateRangeHighlight : data.month : data.year : dateRangeStart : dateRangeEnd\n        ]\"\n      >\n        <time class=\"a-time\" [dateTime]=\"data.year + '-' + addLeadingZero(data.year) + '-' + addLeadingZero(day)\">{{\n          day + 1\n        }}</time>\n      </button>\n    </div>\n  </div>\n\n  <div class=\"m-time-picker-wrapper\" *ngIf=\"timePicker && !rangePicker\">\n    <yap-time-picker (click)=\"onClick()\" [ngModel]=\"time | async\" (ngModelChange)=\"setTime($event)\"></yap-time-picker>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { YapI18nModule } from '../../i18n/i18n.module';\nimport { YapIconModule } from '../icon/icon.module';\nimport { YapDatePickerComponent } from './date-picker.component';\nimport { DateRangeHighlightPipe } from './date-range-highlight.pipe';\nimport { LoopScrollColumnComponent } from './time-picker/loop-scroll-column/loop-scroll-column.component';\nimport { YapTimePickerComponent } from './time-picker/time-picker.component';\n\nconst YAP_DATE_PICKER_COMPONENTS = [\n  YapDatePickerComponent,\n  DateRangeHighlightPipe,\n  YapTimePickerComponent,\n  LoopScrollColumnComponent\n];\n\n@NgModule({\n  declarations: [...YAP_DATE_PICKER_COMPONENTS],\n  imports: [CommonModule, FormsModule, YapIconModule, YapI18nModule],\n  exports: [...YAP_DATE_PICKER_COMPONENTS]\n})\nexport class YapDatePickerModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet uniqueId = 0;\n\n@Component({\n  selector: 'yap-edit-input',\n  templateUrl: './edit-input.component.html',\n\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => YapEditInputComponent),\n      multi: true\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YapEditInputComponent implements ControlValueAccessor {\n  public id: number = uniqueId++;\n  _disabled: boolean = false;\n  value: any;\n  _onChange = (_: any) => {};\n  _onTouched = () => {};\n  editMode = false;\n  @Input() label: string = '';\n\n  constructor(private _cd: ChangeDetectorRef) {}\n\n  registerOnChange(fn: any): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this._onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this._disabled = isDisabled;\n  }\n\n  writeValue(obj: any): void {\n    if (this.value !== obj) {\n      this.value = obj;\n      this._onChange(this.value);\n      this._onTouched();\n      this._cd.markForCheck();\n    }\n  }\n\n  toggle(force?: boolean) {\n    this.editMode = force !== undefined ? force : !this.editMode;\n  }\n}\n","<div class=\"o-yap-edit\" [class.-edit]=\"editMode\">\n  <div class=\"m-form-label-field\">\n    <label id=\"edit-input-label-{{ id }}\" for=\"edit-input-{{ id }}\" class=\"a-label\">\n      {{ label | i18n }}\n      <span class=\"u-visually-hidden\">({{ label | i18n }})</span>\n    </label>\n    <div class=\"m-form-label-field__edit-inline\">\n      <p class=\"m-form-label-field__edit-inline__txtvalue\" *ngIf=\"!editMode\">\n        {{ value }}\n      </p>\n      <input\n        id=\"edit-input-{{ id }}\"\n        type=\"text\"\n        class=\"a-form-field\"\n        [ngModel]=\"value\"\n        (ngModelChange)=\"writeValue($event)\"\n        *ngIf=\"editMode\"\n      />\n      <button type=\"button\" class=\"a-btn a-btn--secondary a-btn--icon-only -circle -size-xs\" (click)=\"toggle()\">\n        <yap-icon [width]=\"16\" [height]=\"16\" [iconSvg]=\"editMode ? 'check' : 'edit'\"></yap-icon>\n        <span class=\"u-visually-hidden\">{{ '@yap.theme.editInput.toggle' | i18n }}</span>\n      </button>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { YapI18nModule } from '../../i18n/i18n.module';\nimport { YapIconModule } from '../icon/icon.module';\nimport { YapEditInputComponent } from './edit-input.component';\n\nconst YAP_CARD_COMPONENTS = [YapEditInputComponent];\n\n@NgModule({\n  imports: [CommonModule, YapIconModule, FormsModule, YapI18nModule],\n  declarations: [...YAP_CARD_COMPONENTS],\n  exports: [...YAP_CARD_COMPONENTS]\n})\nexport class YapEditInputModule {}\n","import { Directive, ElementRef, Renderer2 } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '../../store/config/config.selectors';\nimport { SubscriptionnerDirective } from '../../../dashboard/components/subscriptionner.directive';\n\n@Directive({\n  selector: '[yapHwo]'\n})\nexport class YapHiddenWhenOverlayDirective extends SubscriptionnerDirective {\n  constructor(private _elRef: ElementRef, private _renderer: Renderer2, private store: Store) {\n    super();\n    this.store.select(ConfigSelectors.hasOverlay).subscribe((hasOverlay: boolean) => {\n      if (hasOverlay) {\n        this._renderer.setAttribute(this._elRef.nativeElement, 'aria-hidden', hasOverlay + '');\n      } else {\n        this._renderer.removeAttribute(this._elRef.nativeElement, 'aria-hidden');\n      }\n    });\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { YapOverlayModule } from '../overlay/overlay.module';\nimport { YapHiddenWhenOverlayDirective } from './hidden-when-overlay.directive';\n\nconst YAP_TOGGLE_COMPONENTS = [YapHiddenWhenOverlayDirective];\n\n@NgModule({\n  imports: [CommonModule, YapOverlayModule],\n  declarations: [...YAP_TOGGLE_COMPONENTS],\n  exports: [...YAP_TOGGLE_COMPONENTS]\n})\nexport class YapHiddenWhenOverlay {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'yap-modal',\n  templateUrl: './modal.component.html'\n})\nexport class YapModalComponent {\n  @Input() titleModal: string = '';\n\n  @Input() opened: boolean = false;\n\n  @Input() validateLabel: string = '';\n\n  @Input() validateAction: () => void = () => {};\n\n  @Input() cancelLabel: string = '';\n\n  @Input() cancelAction: () => void = () => {};\n}\n","<div class=\"o-modal-wrapper\" *ngIf=\"opened\">\n  <div class=\"o-modal backdrop\">\n    <div class=\"o-modal__top\">\n      <div class=\"o-modal__top__title\">\n        <h2 class=\"a-h2\" id=\"dialog_title\">\n          {{ titleModal }}\n        </h2>\n      </div>\n      <div class=\"o-modal__top__close\">\n        <button class=\"a-btn a-btn--icon-only\" (click)=\"cancelAction()\">\n          <yap-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.toolbox.close' | i18n }}</span>\n        </button>\n      </div>\n    </div>\n\n    <ng-content></ng-content>\n\n    <div class=\"m-btn-group\">\n      <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"cancelAction()\">\n        {{ cancelLabel }}\n      </button>\n      <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"validateAction()\">\n        {{ validateLabel }}\n      </button>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { YapI18nModule } from '../../i18n/i18n.module';\nimport { YapIconModule } from '../icon/icon.module';\nimport { YapModalComponent } from './modal.component';\n\nconst YAP_MODAL_COMPONENTS = [YapModalComponent];\n\n@NgModule({\n  imports: [CommonModule, FormsModule, YapIconModule, YapI18nModule],\n  declarations: [...YAP_MODAL_COMPONENTS],\n  exports: [...YAP_MODAL_COMPONENTS]\n})\nexport class YapModalModule {}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  HostBinding,\n  Input,\n  ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet nextIdValue = 0;\n\n@Component({\n  selector: 'yap-toggle',\n  templateUrl: './toggle.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => YapToggleComponent),\n      multi: true\n    }\n  ]\n})\nexport class YapToggleComponent implements ControlValueAccessor {\n  @HostBinding('class') class = 'yap-toggle';\n  @ViewChild('input') _inputElement!: ElementRef<HTMLInputElement>;\n\n  @Input() alwaysActive = false;\n  @Input() disabled = false;\n  @Input() mode: 'input' | 'action' = 'input';\n  @Input() size: 'normal' | 'sm' = 'normal';\n  @Input() dir: 'rtl' | 'ltr' = 'rtl';\n\n  @Input() leftword?: any;\n  @Input() rightword?: any;\n\n  onChange: any = () => {};\n  onTouch: any = () => {};\n  private _checked: boolean = false;\n  _id: number;\n\n  get checked(): boolean {\n    return this._checked;\n  }\n\n  set checked(value: any) {\n    this._checked = value != null && `${value}` !== 'false';\n    this._cd.markForCheck();\n  }\n\n  constructor(private _cd: ChangeDetectorRef) {\n    this._id = nextIdValue++;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this._cd.markForCheck();\n  }\n\n  onChangeValue(event: Event) {\n    event.stopPropagation();\n    if (this.mode !== 'action') {\n      this.checked = this._inputElement.nativeElement.checked;\n    }\n    this.onChange(this.checked);\n    this.onTouch();\n  }\n\n  writeValue(value: any) {\n    this.checked = !!value;\n  }\n\n  onInputClick(event: any): void {\n    event.stopPropagation();\n    if (this.mode === 'action') {\n      this.checked = !this.checked;\n      this.onChange(this.checked);\n      this.onTouch();\n    }\n  }\n\n  get hasTextInside() {\n    return !!this.leftword || !!this.rightword;\n  }\n}\n","<ng-container *ngIf=\"mode !== 'action'\">\n  <label\n    class=\"a-toggle\"\n    [for]=\"'toggle-' + _id\"\n    [dir]=\"dir\"\n    [ngClass]=\"{\n      '-disabled': disabled,\n      '-always-active': alwaysActive,\n      '-size-sm': size === 'sm',\n      '-txt-inside': hasTextInside\n    }\"\n    [yapTooltip]=\"infoTooltip\"\n    yapTooltipPosition=\"bottom\"\n    aria-describedby=\"infoTooltip_toggle\"\n  >\n    <input\n      #input\n      type=\"checkbox\"\n      name=\"toggle\"\n      [id]=\"'toggle-' + _id\"\n      class=\"a-toggle__input\"\n      [checked]=\"checked\"\n      [disabled]=\"disabled\"\n      (change)=\"onChangeValue($event)\"\n      (click)=\"onInputClick($event)\"\n    />\n    <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n  </label>\n  <ng-template #infoTooltip>\n    <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_toggle\">\n      <span class=\"m-tooltip__text\">{{ '@yap.toolbox.edit' | i18n }}</span>\n    </div>\n  </ng-template>\n</ng-container>\n<ng-container *ngIf=\"mode === 'action'\">\n  <button\n    type=\"button\"\n    class=\"a-toggle\"\n    [dir]=\"dir\"\n    [ngClass]=\"{\n      '-disabled': disabled,\n      '-always-active': alwaysActive,\n      '-size-sm': size === 'sm',\n      '-txt-inside': hasTextInside\n    }\"\n    [attr.aria-pressed]=\"checked\"\n    [disabled]=\"disabled\"\n    (change)=\"onChangeValue($event)\"\n    (click)=\"onInputClick($event)\"\n    #button\n  >\n    <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n  </button>\n</ng-container>\n\n<ng-template #contentTpl>\n  <span class=\"a-toggle__display\" aria-hidden=\"true\">\n    <span class=\"a-toggle__display__txtleft\">{{ leftword }}</span>\n    <span class=\"a-toggle__display__txtright\">{{ rightword }}</span>\n  </span>\n  <span class=\"a-toggle__wording\">\n    <ng-content></ng-content>\n  </span>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { YapI18nModule } from '../../i18n/i18n.module';\nimport { YapOverlayModule } from '../overlay/overlay.module';\nimport { YapToggleComponent } from './toggle.component';\n\nconst YAP_TOGGLE_COMPONENTS = [YapToggleComponent];\n\n@NgModule({\n  imports: [CommonModule, YapOverlayModule, YapI18nModule],\n  declarations: [...YAP_TOGGLE_COMPONENTS],\n  exports: [...YAP_TOGGLE_COMPONENTS]\n})\nexport class YapToggleModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'yapSortData'\n})\nexport class YapSortDataPipe<T> implements PipeTransform {\n  transform(list: T[], property: keyof T | null, direction: 'asc' | 'desc'): T[] {\n    if (list) {\n      const data = list.slice();\n      if (!property) {\n        return data;\n      }\n\n      const isAsc = direction === 'asc';\n      return data.sort((a, b) => {\n        const valA = a[property];\n        const valB = b[property];\n        if (valA !== null && (valB === undefined || valB === null)) {\n          return -1;\n        }\n        if (valB !== null && (valA === undefined || valA === null)) {\n          return 1;\n        }\n        if (typeof valA === 'number' && typeof valB === 'number') {\n          return valA === valB ? 0 : this.compareNumber(valA, valB, isAsc);\n        } else if (typeof valA === 'string' && typeof valB === 'string') {\n          return valA === valB ? 0 : this.compareString(valA, valB, isAsc);\n        } else if (typeof valA === 'boolean' && typeof valB === 'boolean') {\n          return valA === valB ? 0 : this.compareBoolean(valA, valB, isAsc);\n        } else {\n          return 0;\n        }\n      });\n    }\n    return list;\n  }\n\n  private compareString(a: string, b: string, isAsc: boolean) {\n    return a.localeCompare(b) * (isAsc ? 1 : -1);\n  }\n  private compareNumber(a: number, b: number, isAsc: boolean) {\n    return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\n  }\n  private compareBoolean(a: boolean, b: boolean, isAsc: boolean) {\n    return (a && !b ? -1 : 1) * (isAsc ? 1 : -1);\n  }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[yapSortHeader]'\n})\nexport class YapSortHeaderDirective {}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\nimport { YapSortChange } from '../sort.model';\n\n@Component({\n  selector: 'th[yapSortHeader]',\n  templateUrl: './sort-header.component.html'\n})\nexport class YapSortHeaderComponent implements AfterViewInit {\n  @Input() yapSortHeader!: string;\n  yapSortActive = false;\n  yapSortDirection?: 'asc' | 'desc';\n  @Output() sortChange = new EventEmitter<YapSortChange>();\n\n  constructor(private _elRef: ElementRef, private _renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    if (this.yapSortActive) {\n      if (this.yapSortDirection === 'asc') {\n        this._renderer.setAttribute(this._elRef.nativeElement, 'aria-sort', 'ascending');\n      } else {\n        this._renderer.setAttribute(this._elRef.nativeElement, 'aria-sort', 'descending');\n      }\n    } else {\n      this._renderer.removeAttribute(this._elRef.nativeElement, 'aria-sort');\n    }\n  }\n\n  onChangeSort(): void {\n    // if no current sort then active asc\n    if (!this.yapSortActive) {\n      this.sortChange.emit({ active: this.yapSortHeader, direction: 'asc' });\n      this._renderer.setAttribute(this._elRef.nativeElement, 'aria-sort', 'ascending');\n    }\n    // if there is current asc sort then active desc\n    else if (this.yapSortActive && this.yapSortDirection === 'asc') {\n      this.sortChange.emit({ active: this.yapSortHeader, direction: 'desc' });\n      this._renderer.setAttribute(this._elRef.nativeElement, 'aria-sort', 'descending');\n    }\n    // else there is current desc sort then desactive sort\n    else {\n      this.sortChange.emit({});\n      this._renderer.removeAttribute(this._elRef.nativeElement, 'aria-sort');\n    }\n  }\n}\n","<button type=\"button\" class=\"m-btn-sorttable\" (click)=\"onChangeSort()\">\n  <span class=\"m-btn-sorttable__content\">\n    <span class=\"m-btn-sorttable__title\">\n      <ng-content></ng-content>\n    </span>\n    <yap-icon iconSvg=\"chevron_top\" class=\"m-btn-sorttable__icnmark -asc\"></yap-icon>\n    <yap-icon iconSvg=\"chevron_bottom\" class=\"m-btn-sorttable__icnmark -desc\"></yap-icon>\n  </span>\n</button>\n","import {\n  AfterContentInit,\n  ContentChildren,\n  Directive,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList\n} from '@angular/core';\nimport { merge, Subscription } from 'rxjs';\nimport { YapSortHeaderComponent } from './sort-header/sort-header.component';\nimport { YapSortChange } from './sort.model';\n\n@Directive({\n  selector: '[yapSortTable]'\n})\nexport class YapSortTableDirective implements AfterContentInit, OnDestroy {\n  @ContentChildren(YapSortHeaderComponent, { descendants: true }) contentChildrenC!: QueryList<YapSortHeaderComponent>;\n  @Input() yapSortActive?: string;\n  @Input() yapSortDirection?: 'asc' | 'desc';\n  @Output() yapSortChange = new EventEmitter<YapSortChange>();\n\n  private subSort?: Subscription;\n  private sub = new Subscription();\n\n  ngAfterContentInit() {\n    if (this.yapSortActive && this.yapSortDirection) {\n      const header = this.contentChildrenC.find((item) => item.yapSortHeader === this.yapSortActive);\n      if (header) {\n        header.yapSortActive = true;\n        header.yapSortDirection = this.yapSortDirection;\n      }\n    }\n    this.subSort = merge(...this.contentChildrenC.map((item) => item.sortChange.asObservable())).subscribe((value) => {\n      this.resetSorts(value);\n      this.yapSortChange.emit(value);\n    });\n    this.sub.add(\n      this.contentChildrenC.changes.subscribe(() => {\n        this.subSort?.unsubscribe();\n        this.subSort = merge(...this.contentChildrenC.map((item) => item.sortChange.asObservable())).subscribe(\n          (value) => {\n            this.resetSorts(value);\n            this.yapSortChange.emit(value);\n          }\n        );\n      })\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.sub.unsubscribe();\n    this.subSort?.unsubscribe();\n  }\n\n  private resetSorts(sort: YapSortChange): void {\n    this.contentChildrenC.forEach((item) => {\n      if (item.yapSortHeader !== sort.active) {\n        item.yapSortActive = false;\n        item.yapSortDirection = undefined;\n      } else {\n        item.yapSortActive = true;\n        item.yapSortDirection = sort.direction;\n      }\n    });\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { YapIconModule } from '../icon/icon.module';\nimport { YapSortDataPipe } from './sort-data.pipe';\nimport { YapSortHeaderDirective } from './sort-header.directive';\nimport { YapSortHeaderComponent } from './sort-header/sort-header.component';\nimport { YapSortTableDirective } from './sort-table.directive';\n\nconst YAP_SORT_COMPONENTS = [YapSortHeaderComponent, YapSortHeaderDirective, YapSortTableDirective, YapSortDataPipe];\n\n@NgModule({\n  declarations: [...YAP_SORT_COMPONENTS],\n  exports: [...YAP_SORT_COMPONENTS],\n  imports: [CommonModule, YapIconModule]\n})\nexport class YapSortModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, TemplateRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet uniqueId = 0;\n\n@Component({\n  selector: 'yap-select',\n  templateUrl: './select.component.html',\n\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => YapSelectComponent),\n      multi: true\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YapSelectComponent implements ControlValueAccessor {\n  public id: number = uniqueId++;\n\n  @Input() labelTranslate = false;\n  @Input() baseTranslate = '';\n  @Input() translationFn?: (...args: any[]) => any;\n  @Input() translationFnArgs: any[] = [];\n  @Input() clearable = false;\n  @Input() multiple = false;\n  @Input() multipleClearRight = false;\n\n  @Input() placeholder?: string;\n  @Input() isForm = false;\n  @Input() required?: any;\n  @Input() name?: any;\n  @Input() readonly = false;\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  @Input() items!: any[] | null;\n  @Input() itemsAsOption = false;\n  @Input() bindData = false;\n  @Input() bindValue: any;\n  @Input() bindLabel: any;\n  @Input() bindIcon: any;\n  @Input() iconSize = [14, 14];\n\n  @Input() templateLabel?: TemplateRef<any>;\n  @Input() templateOption?: TemplateRef<any>;\n\n  @Input() autocomplete: boolean = false;\n\n  value: any;\n\n  private _onChange = (_: any) => {};\n  private _onTouched = () => {};\n  private _disabled = false;\n\n  constructor(private _cd: ChangeDetectorRef) {}\n\n  registerOnChange(fn: any): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this._onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this._disabled = isDisabled;\n    this._cd.markForCheck();\n  }\n\n  writeValue(obj: any): void {\n    if (this.value !== obj) {\n      this.value = obj;\n      this._onChange(this.value);\n      this._onTouched();\n      this._cd.markForCheck();\n    }\n  }\n\n  customSearchFn(term: string, item: any) {\n    term = term.toLocaleLowerCase();\n    return item.code.toLocaleLowerCase().indexOf(term) > -1 || item.countryName.toLocaleLowerCase().indexOf(term) > -1;\n  }\n}\n","<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n  <ng-select\n    class=\"a-yap-select\"\n    [class.yap-select-form]=\"isForm\"\n    [multiple]=\"multiple\"\n    [closeOnSelect]=\"!multiple\"\n    [items]=\"items\"\n    [bindValue]=\"bindData ? undefined : bindValue\"\n    [bindLabel]=\"bindData ? undefined : bindLabel\"\n    [clearable]=\"clearable\"\n    [ngModel]=\"value\"\n    (ngModelChange)=\"writeValue($event)\"\n    [searchable]=\"autocomplete\"\n    [disabled]=\"disabled\"\n    [readonly]=\"readonly\"\n    [required]=\"required\"\n    [name]=\"name\"\n    [placeholder]=\"placeholder!\"\n  >\n    <!-- Label part -->\n    <ng-container *ngIf=\"templateLabel; else noTemplateLabel\">\n      <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n        <ng-container [ngTemplateOutlet]=\"templateLabel\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n      </ng-template>\n    </ng-container>\n    <ng-template #noTemplateLabel>\n      <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n        <span\n          *ngIf=\"multiple && !multipleClearRight\"\n          class=\"ng-value-icon left\"\n          (click)=\"clear(item)\"\n          aria-hidden=\"true\"\n          >×</span\n        >\n        <span class=\"ng-value-label\">\n          <ng-container *ngIf=\"bindIcon\">\n            <yap-icon\n              style=\"margin-right: 0.25em\"\n              [iconSvg]=\"item[bindIcon]\"\n              [width]=\"iconSize[0]\"\n              [height]=\"iconSize[1]\"\n              [animation]=\"false\"\n            ></yap-icon>\n          </ng-container>\n          <ng-container *ngIf=\"labelTranslate; else noTranslate\">\n            <ng-container *ngIf=\"translationFn; else noTranslationFn\">\n              {{ translationFn((bindData ? item : item?.[bindLabel]), translationFnArgs) | i18n }}\n            </ng-container>\n            <ng-template #noTranslationFn>\n              <ng-container *ngIf=\"baseTranslate + (bindData ? item : item?.[bindLabel]) !== 'null'\">\n                {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n              </ng-container>\n            </ng-template>\n          </ng-container>\n          <ng-template #noTranslate>\n            {{ (bindData ? item : item?.[bindLabel]) }}\n          </ng-template>\n        </span>\n        <span\n          *ngIf=\"multiple && multipleClearRight\"\n          class=\"ng-value-icon right\"\n          (click)=\"clear(item)\"\n          aria-hidden=\"true\"\n          >×</span\n        >\n      </ng-template>\n    </ng-template>\n\n    <!-- Option part -->\n    <ng-container *ngIf=\"templateOption; else noTemplateOption\">\n      <ng-template ng-option-tmp let-item=\"item\">\n        <ng-container [ngTemplateOutlet]=\"templateOption\" [ngTemplateOutletContext]=\"{ item }\"></ng-container>\n      </ng-template>\n    </ng-container>\n    <ng-template #noTemplateOption>\n      <ng-template ng-option-tmp let-item=\"item\">\n        <span class=\"ng-option-label\">\n          <yap-icon\n            *ngIf=\"bindIcon\"\n            [iconSvg]=\"item[bindIcon]\"\n            [width]=\"iconSize[0]\"\n            [height]=\"iconSize[1]\"\n            [animation]=\"false\"\n          ></yap-icon>\n          <ng-container *ngIf=\"labelTranslate; else noTranslateOption\">\n            <ng-container *ngIf=\"translationFn; else noTranslationFnOption\">\n              {{ translationFn((bindData ? item : item?.[bindLabel]), translationFnArgs) | i18n }}\n            </ng-container>\n            <ng-template #noTranslationFnOption>\n              {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n            </ng-template>\n          </ng-container>\n          <ng-template #noTranslateOption>\n            {{ (bindData ? item : item?.[bindLabel]) }}\n          </ng-template>\n        </span>\n      </ng-template>\n    </ng-template>\n  </ng-select>\n</ng-container>\n<ng-template #itemAsInput>\n  <ng-select\n    #select\n    appendTo=\"body\"\n    class=\"yap-select\"\n    [class.yap-select-form]=\"isForm\"\n    [multiple]=\"multiple\"\n    [closeOnSelect]=\"!multiple\"\n    [items]=\"items\"\n    [bindValue]=\"bindValue\"\n    [bindLabel]=\"bindLabel\"\n    [clearable]=\"clearable\"\n    [searchable]=\"autocomplete\"\n    [ngModel]=\"value\"\n    (ngModelChange)=\"writeValue($event)\"\n    [readonly]=\"readonly\"\n    [disabled]=\"disabled\"\n    [required]=\"required\"\n    [name]=\"name\"\n    [placeholder]=\"placeholder!\"\n  >\n  </ng-select>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { YapI18nModule } from '../../i18n/i18n.module';\nimport { YapIconModule } from '../icon/icon.module';\nimport { YapSelectComponent } from './select.component';\n\n@NgModule({\n  imports: [CommonModule, NgSelectModule, FormsModule, YapIconModule, YapI18nModule],\n  declarations: [YapSelectComponent],\n  exports: [YapSelectComponent]\n})\nexport class YapSelectModule {}\n","import {\n  ChangeDetectorRef,\n  Component,\n  DoCheck,\n  ElementRef,\n  forwardRef,\n  HostListener,\n  Input,\n  ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet uniqueId = 0;\n\n@Component({\n  selector: 'yap-range',\n  templateUrl: './range.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => YapRangeComponent),\n      multi: true\n    }\n  ]\n})\nexport class YapRangeComponent implements ControlValueAccessor, DoCheck {\n  @Input() min: string = '0';\n  @Input() max: string = '100';\n  @Input() step: string = '1';\n  @Input() disabled = false;\n\n  @Input() labelTranslate?: string;\n  @ViewChild('input') input!: ElementRef;\n\n  private _value = '';\n  id: number;\n\n  info: { left: number; text: string; backgroundSize: number } = {\n    left: 0,\n    text: this._value,\n    backgroundSize: 100\n  };\n\n  get value(): string {\n    return this._value;\n  }\n\n  set value(newValue: string) {\n    this._value = newValue;\n  }\n\n  constructor(private _cd: ChangeDetectorRef) {\n    this.id = uniqueId++;\n  }\n\n  onChange: any = (_: any) => {};\n  onTouch: any = () => {};\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this._cd.markForCheck();\n  }\n\n  writeValue(obj: string): void {\n    if (obj) {\n      this.value = obj;\n      this.updateView();\n      this.onChange(this.value);\n      this._cd.markForCheck();\n    }\n  }\n\n  private updateView() {\n    this.info = {\n      left: this.getLeftPosition(),\n      text: this.value,\n      backgroundSize: this.getBackgroundSize(this.value)\n    };\n  }\n\n  writeValueEvent($event: Event) {\n    this.writeValue(($event.target as HTMLInputElement).value);\n  }\n\n  getBackgroundSize(currentValue: string) {\n    return ((parseInt(currentValue) - parseInt(this.min)) * 100) / (parseInt(this.max) - parseInt(this.min));\n  }\n\n  getLeftPosition() {\n    if (this.input) {\n      let width = this.input.nativeElement.offsetWidth;\n      return (\n        ((parseInt(this.value) - parseInt(this.min)) / (parseInt(this.max) - parseInt(this.min))) * (width - 22) + 11\n      );\n    }\n    return 50;\n  }\n\n  @HostListener('window:resize')\n  ngDoCheck() {\n    this.updateView();\n  }\n}\n","<div class=\"m-form-label-field\">\n  <label class=\"a-label\" for=\"range-{{ id }}\" *ngIf=\"labelTranslate\">{{ labelTranslate | i18n }}</label>\n  <div class=\"a-range-slider-wrapper\">\n    <span aria-hidden=\"true\" class=\"a-range-slider__min\">{{ min }}</span>\n    <input\n      (input)=\"writeValueEvent($event)\"\n      [value]=\"value\"\n      class=\"a-range-slider\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [step]=\"step\"\n      [disabled]=\"disabled\"\n      type=\"range\"\n      id=\"range-{{ id }}\"\n      [style.background-size]=\"info.backgroundSize + '% 100%'\"\n      #input\n    />\n    <output\n      aria-hidden=\"true\"\n      for=\"range-{{ id }}\"\n      class=\"a-range-slider__selected-value\"\n      [style.left.px]=\"info.left\"\n      >{{ info.text }}</output\n    >\n    <span aria-hidden=\"true\" class=\"a-range-slider__max\">{{ max }}</span>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { YapRangeComponent } from './range.component';\nimport { YapI18nModule } from '../../i18n/i18n.module';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n  imports: [YapI18nModule, CommonModule],\n  declarations: [YapRangeComponent],\n  exports: [YapRangeComponent]\n})\nexport class YapRangeModule {}\n","export enum YapVisibilityType {\n  PRIVATE = 'PRIVATE',\n  PUBLIC = 'PUBLIC',\n  RESTRICTED = 'RESTRICTED'\n}\n\nexport interface YapVisibility {\n  type: YapVisibilityType;\n  users?: any[];\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport equal from 'fast-deep-equal/es6';\nimport { Observable } from 'rxjs';\nimport { YapVisibility, YapVisibilityType } from './share.model';\n\n@Component({\n  selector: 'yap-share',\n  templateUrl: './share.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => YapShareComponent),\n      multi: true\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YapShareComponent implements ControlValueAccessor, OnInit {\n  private _onChange = (_: any) => {};\n  private _onTouched = () => {};\n  _disabled = false;\n  YapVisibilityType = YapVisibilityType;\n  @Input() value?: YapVisibility;\n  @Input() labelProperty = 'label';\n  @Input() valueProperty = 'value';\n  @Input() users$: Observable<any[]> | null = null;\n  visibilityTypes: { label: string; value: string; icon: string }[] = [];\n\n  constructor(private _cd: ChangeDetectorRef) {}\n\n  ngOnInit(): void {\n    this.visibilityTypes = Object.keys(YapVisibilityType)\n      .filter((x) => !(parseInt(x) >= 0))\n      .filter((x) => (!this.users$ ? x !== YapVisibilityType.RESTRICTED : true))\n      .map((label) => ({ label: label.toLowerCase(), value: label, icon: `${label.toLowerCase()}` }));\n  }\n\n  registerOnChange(fn: any): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this._onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this._disabled = isDisabled;\n    this._cd.markForCheck();\n  }\n\n  writeValueUsers(obj: any[]): void {\n    if (!equal(this.value?.users, obj)) {\n      this.writeValue({ type: this.value?.type, users: obj });\n    }\n  }\n\n  writeValueType(type: YapVisibilityType): void {\n    if (this.value?.type !== type) {\n      this.writeValue({ type, users: this.value?.users });\n    }\n  }\n\n  writeValue(obj: any) {\n    if (!equal(this.value, obj)) {\n      this.value = obj;\n      this._onChange(this.value);\n      this._onTouched();\n      this._cd.markForCheck();\n    }\n  }\n}\n","<div class=\"m-form-label-field\">\n  <label class=\"a-label\" for=\"share_type\">{{ '@yap.share.type' | i18n }}</label>\n  <yap-select\n    (ngModelChange)=\"writeValueType($event)\"\n    [itemsAsOption]=\"true\"\n    [items]=\"visibilityTypes\"\n    [labelTranslate]=\"true\"\n    [ngModel]=\"value?.type\"\n    [disabled]=\"_disabled\"\n    baseTranslate=\"@yap.share.\"\n    class=\"a-yap-select\"\n    bindValue=\"value\"\n    bindLabel=\"label\"\n    id=\"share_type\"\n    bindIcon=\"icon\"\n    [iconSize]=\"[21, 18]\"\n  ></yap-select>\n</div>\n\n<ng-container *ngIf=\"value?.type === YapVisibilityType.RESTRICTED\">\n  <div class=\"m-form-label-field\">\n    <label class=\"a-label\" for=\"users\">{{ '@yap.share.users' | i18n }}</label>\n    <yap-select\n      (ngModelChange)=\"writeValueUsers($event)\"\n      [itemsAsOption]=\"true\"\n      [items]=\"users$ | async\"\n      [multiple]=\"true\"\n      [ngModel]=\"value?.users\"\n      [disabled]=\"_disabled\"\n      [bindLabel]=\"labelProperty\"\n      [bindValue]=\"valueProperty\"\n      [autocomplete]=\"true\"\n      class=\"a-yap-select\"\n      id=\"users\"\n    ></yap-select>\n  </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { YapI18nModule } from '../../i18n/i18n.module';\nimport { YapSelectModule } from '../select/select.module';\nimport { YapShareComponent } from './share.component';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, YapSelectModule, YapI18nModule],\n  declarations: [YapShareComponent],\n  exports: [YapShareComponent]\n})\nexport class YapShareModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { YapSnackbarComponent } from './snackbar/snackbar.component';\nimport { YapIconModule } from '../icon/icon.module';\n\n@NgModule({\n  declarations: [YapSnackbarComponent],\n  imports: [CommonModule, YapIconModule],\n  exports: [YapSnackbarComponent]\n})\nexport class YapSnackbarModule {}\n","import { YapAccess } from './access.model';\n\nexport class YapAccessUtils {\n  static notExistsAllowStrategy(\n    userRoles?: string[],\n    accessTree?: YapAccess,\n    moduleKey?: string,\n    pageKey?: string,\n    actionKey?: string\n  ): boolean {\n    const module = moduleKey && accessTree?.modules?.[moduleKey];\n    if (module) {\n      const moduleRoles = module.roles;\n      if (moduleRoles) {\n        const moduleKo = !this.rolesIntersect(userRoles, moduleRoles);\n        if (moduleKo) return false;\n      }\n      const page = pageKey && module?.pages?.[pageKey];\n      if (page) {\n        const pageRoles = page.roles;\n        if (pageRoles) {\n          const pageKo = !this.rolesIntersect(userRoles, pageRoles);\n          if (pageKo) return false;\n        }\n        const action = actionKey && page?.actions?.[actionKey];\n        if (action) {\n          const actionKo = !this.rolesIntersect(userRoles, action);\n          if (actionKo) return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  static notExistsBlockStrategy(\n    userRoles?: string[],\n    accessTree?: YapAccess,\n    moduleKey?: string,\n    pageKey?: string,\n    actionKey?: string\n  ): boolean {\n    const module = moduleKey && accessTree?.modules?.[moduleKey];\n    if (moduleKey && module) {\n      const moduleRoles = module.roles;\n      if (moduleRoles) {\n        const moduleKo = !this.rolesIntersect(userRoles, moduleRoles);\n        if (moduleKo) return false;\n      } else {\n        return false;\n      }\n      const page = pageKey && module?.pages?.[pageKey];\n      if (pageKey && page) {\n        const pageRoles = page.roles;\n        if (pageRoles) {\n          const pageKo = !this.rolesIntersect(userRoles, pageRoles);\n          if (pageKo) return false;\n        } else {\n          return false;\n        }\n        const action = actionKey && page?.actions?.[actionKey];\n        if (actionKey && action) {\n          const actionKo = !this.rolesIntersect(userRoles, action);\n          if (actionKo) return false;\n        } else if (!actionKey) {\n          return true;\n        } else {\n          return false;\n        }\n      } else if (!pageKey) {\n        return true;\n      } else {\n        return false;\n      }\n    } else {\n      return false;\n    }\n    return true;\n  }\n\n  static rolesIntersect(userRoles?: string[], roles?: string[]) {\n    if (!userRoles || !roles) return false;\n    return userRoles.find((role) => roles?.includes(role)) !== undefined;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { filter, Observable, ReplaySubject } from 'rxjs';\nimport { webSocket, WebSocketSubject } from 'rxjs/webSocket';\nimport { ConfigSelectors } from '../store/config/config.selectors';\n\nexport type wsMessage = { type: string; payload: any; id: string };\n\nconst MAX_DELAY = 5 * 60 * 1000;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class WebsocketService {\n  private websocket?: WebSocketSubject<any>;\n  private _messages$ = new ReplaySubject<wsMessage>();\n  private url?: string;\n  private delay = 0.5;\n  private active = true;\n  private currentRetry: undefined | number = undefined;\n\n  constructor(private store: Store<any>) {\n    this.store\n      .select(ConfigSelectors.wsUrl)\n      .pipe(filter((url) => !!url))\n      .subscribe((url) => {\n        this.url = url;\n        this.connect();\n      });\n  }\n\n  connect(currentDelay?: number) {\n    if (this.url && this.active) {\n      console.log(`Connecting to ${this.url}${currentDelay ? ' (retry after ' + currentDelay / 1000 + 's)' : ''}`);\n\n      this.currentRetry = undefined;\n      this.disconnect();\n\n      this.websocket = webSocket({\n        url: this.url,\n        openObserver: {\n          next: () => {\n            console.log(`Connection to ${this.url} succeeded`);\n            this.delay = 0.5;\n          }\n        },\n        closeObserver: {\n          next: () => this.retry()\n        }\n      });\n\n      this.websocket.subscribe({\n        next: (msg: wsMessage) => {\n          // message received (must be stored by type to present all of them when subscribing\n          this._messages$.next(msg);\n        },\n        error: (err) => this.retry(),\n        complete: () => this.retry()\n      });\n    }\n  }\n\n  sendMessage(type: string, payload: any) {\n    if (!!this.websocket) {\n      this.websocket.next({ type, payload });\n    }\n  }\n\n  messages$(type: string): Observable<wsMessage> {\n    return this._messages$.pipe(filter((msg) => msg.type === type));\n  }\n\n  retry() {\n    if (!this.currentRetry) {\n      this.delay = this.delay * 2;\n      this.disconnect();\n      const currentDelay = Math.min(MAX_DELAY, this.delay * 1000);\n      this.currentRetry = setTimeout(() => {\n        this.connect(currentDelay);\n      }, currentDelay) as unknown as number;\n    }\n  }\n\n  toggleActive(active?: boolean) {\n    this.active = active !== undefined ? active : !this.active;\n    if (this.active) {\n      this.connect();\n    } else {\n      this.disconnect();\n    }\n  }\n\n  disconnect() {\n    if (this.websocket) {\n      this.websocket?.unsubscribe();\n      this.websocket = undefined;\n    }\n  }\n}\n","export const MIME_TYPE_RESULTSET = 'application/resultset';\n","export const DEFAULT_GAP_PX = 2;\nexport const DEFAULT_COLUMNS_NUMBER = 12;\nexport const DEFAULT_ROWS_NUMBER = 12;\nexport const DEFAULT_ROW_HEIGHT_PX = 50;\n","import { DashboardGridLayout, WidgetLayout, WidgetManifest } from '../../../../core/model/manifest.interface';\nimport { DashboardCellParams } from '../../../store/dashboard.actions';\nimport { DEFAULT_COLUMNS_NUMBER, DEFAULT_ROWS_NUMBER } from '../../../store/dashboard.contants';\n\nconst arrayOf = (item: any, num: number) => {\n  return [...new Array(num)].map(() => item);\n};\n\nexport const createPlacedWidgetCopy = (widget: WidgetManifest, position: WidgetLayout) => {\n  const tmp = JSON.parse(JSON.stringify(widget));\n  if (!tmp.layout) {\n    tmp.layout = {};\n  }\n  tmp.layout.x = position.x;\n  tmp.layout.y = position.y;\n  tmp.layout.width = position.width;\n  tmp.layout.height = position.height;\n  return tmp as WidgetManifest;\n};\n\nexport type LayoutSizeImplementationFn = (\n  outLayout: { x: number; y: number; height: number; width: number },\n  params: Partial<DashboardCellParams>\n) => { x: number; y: number; height: number; width: number }[];\n\nexport type LayoutPlacementOptionImplementationFn = (\n  widgetToPlace: WidgetManifest,\n  sizes: WidgetLayout[],\n  params: Partial<DashboardCellParams>\n) => WidgetManifest[];\n\nexport const WidgetPlacementUtils = {\n  layoutSizeImplementations: {\n    [DashboardGridLayout.MANUAL]: (\n      outLayout: { x: number; y: number; height: number; width: number },\n      params: Partial<DashboardCellParams>\n    ) => {\n      outLayout.height = params.rows ?? DEFAULT_ROWS_NUMBER;\n      outLayout.width = params.columns ?? DEFAULT_COLUMNS_NUMBER;\n      return arrayOf(outLayout, 20);\n    },\n    [DashboardGridLayout.FULL]: (\n      outLayout: { x: number; y: number; height: number; width: number },\n      params: Partial<DashboardCellParams>\n    ) => {\n      outLayout.height = params.rows ?? DEFAULT_ROWS_NUMBER;\n      outLayout.width = params.columns ?? DEFAULT_COLUMNS_NUMBER;\n      return [outLayout];\n    },\n    [DashboardGridLayout.QUARTER]: (\n      outLayout: { x: number; y: number; height: number; width: number },\n      params: Partial<DashboardCellParams>\n    ) => {\n      outLayout.height = Math.floor((params.rows ?? DEFAULT_ROWS_NUMBER) / 2);\n      outLayout.width = Math.floor((params.columns ?? DEFAULT_COLUMNS_NUMBER) / 2);\n      return [outLayout, outLayout, outLayout, outLayout];\n    },\n    [DashboardGridLayout.HALF_HORIZONTAL]: (\n      outLayout: { x: number; y: number; height: number; width: number },\n      params: Partial<DashboardCellParams>\n    ) => {\n      outLayout.height = Math.floor((params.rows ?? DEFAULT_ROWS_NUMBER) / 2);\n      outLayout.width = params.columns ?? DEFAULT_COLUMNS_NUMBER;\n      return [outLayout, outLayout];\n    },\n    [DashboardGridLayout.HALF_VERTICAL]: (\n      outLayout: { x: number; y: number; height: number; width: number },\n      params: Partial<DashboardCellParams>\n    ) => {\n      outLayout.height = params.rows ?? DEFAULT_ROWS_NUMBER;\n      outLayout.width = Math.floor((params.columns ?? DEFAULT_COLUMNS_NUMBER) / 2);\n      return [outLayout, outLayout];\n    },\n    [DashboardGridLayout.THIRD_HORIZONTAL]: (\n      outLayout: { x: number; y: number; height: number; width: number },\n      params: Partial<DashboardCellParams>\n    ) => {\n      outLayout.height = Math.floor((params.rows ?? DEFAULT_ROWS_NUMBER) / 3);\n      outLayout.width = params.columns ?? DEFAULT_COLUMNS_NUMBER;\n      return [outLayout, outLayout, outLayout];\n    },\n    [DashboardGridLayout.THIRD_VERTICAL]: (\n      outLayout: { x: number; y: number; height: number; width: number },\n      params: Partial<DashboardCellParams>\n    ) => {\n      outLayout.height = params.rows ?? DEFAULT_ROWS_NUMBER;\n      outLayout.width = Math.floor((params.columns ?? DEFAULT_COLUMNS_NUMBER) / 3);\n      return [outLayout, outLayout, outLayout];\n    }\n  } as {\n    [layout: string]: LayoutSizeImplementationFn;\n  },\n  placementOptionsImplementations: {\n    // Manual mode do not offer automatic placement solutions... propose fullscreen\n    [DashboardGridLayout.MANUAL]: (\n      widgetToPlace: WidgetManifest,\n      sizes: WidgetLayout[],\n      params: Partial<DashboardCellParams>\n    ) => [createPlacedWidgetCopy(widgetToPlace, { ...sizes[0], x: 1, y: 1 })],\n    [DashboardGridLayout.FULL]: (\n      widgetToPlace: WidgetManifest,\n      sizes: WidgetLayout[],\n      params: Partial<DashboardCellParams>\n    ) => [createPlacedWidgetCopy(widgetToPlace, { ...sizes[0], x: 1, y: 1 })],\n    [DashboardGridLayout.HALF_VERTICAL]: (\n      widgetToPlace: WidgetManifest,\n      sizes: WidgetLayout[],\n      params: Partial<DashboardCellParams>\n    ) => [\n      createPlacedWidgetCopy(widgetToPlace, { ...sizes[0], x: 1, y: 1 }),\n      createPlacedWidgetCopy(widgetToPlace, {\n        ...sizes[1],\n        x: Math.floor((params.columns ?? DEFAULT_COLUMNS_NUMBER) / 2) + 1,\n        y: 1\n      })\n    ],\n    [DashboardGridLayout.HALF_HORIZONTAL]: (\n      widgetToPlace: WidgetManifest,\n      sizes: WidgetLayout[],\n      params: Partial<DashboardCellParams>\n    ) => [\n      createPlacedWidgetCopy(widgetToPlace, { ...sizes[0], x: 1, y: 1 }),\n      createPlacedWidgetCopy(widgetToPlace, {\n        ...sizes[1],\n        x: 1,\n        y: Math.ceil((params.rows ?? DEFAULT_ROWS_NUMBER) / 2) + 1\n      })\n    ],\n    [DashboardGridLayout.THIRD_VERTICAL]: (\n      widgetToPlace: WidgetManifest,\n      sizes: WidgetLayout[],\n      params: Partial<DashboardCellParams>\n    ) => [\n      createPlacedWidgetCopy(widgetToPlace, { ...sizes[0], x: 1, y: 1 }),\n      createPlacedWidgetCopy(widgetToPlace, {\n        ...sizes[1],\n        x: Math.ceil((params.columns ?? DEFAULT_COLUMNS_NUMBER) / 3) + 1,\n        y: 1\n      }),\n      createPlacedWidgetCopy(widgetToPlace, {\n        ...sizes[2],\n        x: Math.ceil(((params.columns ?? DEFAULT_COLUMNS_NUMBER) * 2) / 3) + 1,\n        y: 1\n      })\n    ],\n    [DashboardGridLayout.THIRD_HORIZONTAL]: (\n      widgetToPlace: WidgetManifest,\n      sizes: WidgetLayout[],\n      params: Partial<DashboardCellParams>\n    ) => [\n      createPlacedWidgetCopy(widgetToPlace, { ...sizes[0], x: 1, y: 1 }),\n      createPlacedWidgetCopy(widgetToPlace, {\n        ...sizes[1],\n        x: 1,\n        y: Math.ceil((params.rows ?? DEFAULT_ROWS_NUMBER) / 3) + 1\n      }),\n      createPlacedWidgetCopy(widgetToPlace, {\n        ...sizes[2],\n        x: 1,\n        y: Math.ceil(((params.rows ?? DEFAULT_ROWS_NUMBER) * 2) / 3) + 1\n      })\n    ],\n    [DashboardGridLayout.QUARTER]: (\n      widgetToPlace: WidgetManifest,\n      sizes: WidgetLayout[],\n      params: Partial<DashboardCellParams>\n    ) => [\n      createPlacedWidgetCopy(widgetToPlace, { ...sizes[0], x: 1, y: 1 }),\n      createPlacedWidgetCopy(widgetToPlace, {\n        ...sizes[2],\n        x: Math.ceil((params.columns ?? DEFAULT_COLUMNS_NUMBER) / 2) + 1,\n        y: 1\n      }),\n      createPlacedWidgetCopy(widgetToPlace, {\n        ...sizes[1],\n        x: 1,\n        y: Math.ceil((params.rows ?? DEFAULT_ROWS_NUMBER ?? DEFAULT_ROWS_NUMBER) / 2) + 1\n      }),\n      createPlacedWidgetCopy(widgetToPlace, {\n        ...sizes[3],\n        x: Math.ceil((params.columns ?? DEFAULT_COLUMNS_NUMBER) / 2) + 1,\n        y: Math.ceil((params.rows ?? DEFAULT_ROWS_NUMBER) / 2) + 1\n      })\n    ]\n  } as {\n    [layout: string]: LayoutPlacementOptionImplementationFn;\n  },\n  layoutImages: {\n    [DashboardGridLayout.MANUAL]: 'assets/svgs/grid_composition_libre.svg',\n    [DashboardGridLayout.THIRD_VERTICAL]: 'assets/svgs/grid_1_3_vertical.svg',\n    [DashboardGridLayout.THIRD_HORIZONTAL]: 'assets/svgs/grid_1_3_horizontal.svg',\n    [DashboardGridLayout.HALF_VERTICAL]: 'assets/svgs/grid_1_2_vertical.svg',\n    [DashboardGridLayout.HALF_HORIZONTAL]: 'assets/svgs/grid_1_2_horizontal.svg',\n    [DashboardGridLayout.QUARTER]: 'assets/svgs/grid_1_4.svg',\n    [DashboardGridLayout.FULL]: 'assets/svgs/grid_full.svg'\n  } as { [layout: string]: string },\n  addLayoutImplementation: (\n    type: string,\n    fnSizeImplementation: LayoutSizeImplementationFn,\n    fnPlacementOptionImplementation: LayoutPlacementOptionImplementationFn,\n    image?: string\n  ) => {\n    WidgetPlacementUtils.layoutSizeImplementations[type] = fnSizeImplementation;\n    WidgetPlacementUtils.placementOptionsImplementations[type] = fnPlacementOptionImplementation;\n    WidgetPlacementUtils.layoutImages[type] = image ?? 'assets/svgs/default.svg';\n  },\n  getLayouts: () =>\n    Object.keys(WidgetPlacementUtils.placementOptionsImplementations).map((layout) => ({\n      key: layout,\n      image: WidgetPlacementUtils.layoutImages[layout]\n    })),\n  isLeft: (w1: WidgetManifest, w2: WidgetManifest) => w2.layout.x + w2.layout.width <= w1.layout.x,\n  isBelow: (w1: WidgetManifest, w2: WidgetManifest) => w2.layout.y + w2.layout.height <= w1.layout.y,\n  areDisjoint: (w1: WidgetManifest, w2: WidgetManifest) =>\n    WidgetPlacementUtils.isLeft(w1, w2) ||\n    WidgetPlacementUtils.isLeft(w2, w1) ||\n    WidgetPlacementUtils.isBelow(w1, w2) ||\n    WidgetPlacementUtils.isBelow(w2, w1),\n  placementOptions: (widgetToPlace: WidgetManifest, layout: string, params: Partial<DashboardCellParams>) => {\n    if (!WidgetPlacementUtils.placementOptionsImplementations[layout]) {\n      return [];\n    }\n    return WidgetPlacementUtils.placementOptionsImplementations[layout](\n      widgetToPlace,\n      WidgetPlacementUtils.getLayoutSize(layout, params),\n      params\n    );\n  },\n  getLayoutSize(layout: string, params: Partial<DashboardCellParams>): WidgetLayout[] {\n    if (!WidgetPlacementUtils.layoutSizeImplementations[layout]) {\n      return [];\n    }\n    return WidgetPlacementUtils.layoutSizeImplementations[layout]({ x: 1, y: 1, height: 1, width: 1 }, params);\n  },\n  swapArrayElements: (arr: any[], x: number, y: number) => {\n    if (arr.length === 1) return arr;\n    arr.splice(y, 1, arr.splice(x, 1, arr[y])[0]);\n    return arr;\n  },\n  getOverlaps: (widgets: WidgetManifest[]): WidgetManifest[][] => {\n    const problems: WidgetManifest[][] = [];\n    widgets.forEach((widget, i) => {\n      const widgetProblems: WidgetManifest[] = [];\n      widgets.forEach((withWidget, j) => {\n        if (i < j && !WidgetPlacementUtils.areDisjoint(widget, withWidget)) {\n          widgetProblems.push(withWidget);\n        }\n      });\n      if (widgetProblems.length > 0) {\n        problems.push([widget, ...widgetProblems]);\n      }\n    });\n    // Resolve problems bottom-up or priorities will be messed up\n    problems.sort((a, b) => a[0].layout.y * 100000 - b[0].layout.y * 100000 + a[0].layout.x - b[0].layout.y);\n    return problems;\n  },\n  placesForLayout(layout: string) {\n    return this.getLayoutSize(layout, { rows: 1, columns: 1 }).length;\n  }\n};\n","import { DashboardGridLayout, DashboardManifest, WidgetManifest } from '../../core/model/manifest.interface';\nimport { WidgetPlacementUtils } from '../components/widgets/widget-placement/widget-placement.utils';\nimport { DEFAULT_COLUMNS_NUMBER, DEFAULT_ROWS_NUMBER } from '../store/dashboard.contants';\n\nexport function orderWidgetsAccordingToPlacement(\n  a: WidgetManifest & { layout: { weight?: number } },\n  b: WidgetManifest & { layout: { weight?: number } }\n): number {\n  return (\n    (b.layout.weight ?? 0) * 1000000 -\n    (a.layout.weight ?? 0) * 1000000 +\n    (b.layout.y + b.layout.height / 2) * 100000 -\n    (a.layout.y + a.layout.height / 2) * 100000 +\n    (b.layout.x + b.layout.width / 2) -\n    (a.layout.x + a.layout.width / 2)\n  );\n}\n\nexport const solvingCollisionOptions = {\n  invertedGravity: false,\n  minRows: 0\n};\n\nexport function solveCollisions(\n  candidateWidget: WidgetManifest,\n  initialWidgetManifestList: WidgetManifest[],\n  dashboardManifest: DashboardManifest\n): DashboardManifest {\n  let rows = dashboardManifest.grid?.rows ?? DEFAULT_ROWS_NUMBER;\n  const nextWidgetList: WidgetManifest[] = candidateWidget\n    ? JSON.parse(\n        JSON.stringify([\n          {\n            ...candidateWidget,\n            layout: { ...(candidateWidget?.layout ?? { x: 1, y: 1, width: 1, height: 1 }), weight: 10 }\n          },\n          ...initialWidgetManifestList\n        ])\n      )\n    : [];\n  let nonBlocking = 10000;\n\n  // Force all layout values to be positive and cannot be outside the grid\n  const actualCols = dashboardManifest.grid?.columns ?? DEFAULT_COLUMNS_NUMBER;\n  nextWidgetList.forEach((w) => {\n    w.layout.height = w.layout.height <= 0 ? 1 : w.layout.height;\n    w.layout.width = w.layout.width <= 0 ? 1 : w.layout.width;\n    w.layout.x =\n      w.layout.x <= 0 ? 1 : w.layout.x + w.layout.width > actualCols ? actualCols - w.layout.width + 1 : w.layout.x;\n    w.layout.y = w.layout.y <= 0 ? 1 : w.layout.y;\n  });\n\n  let overlappingWidgets = WidgetPlacementUtils.getOverlaps(nextWidgetList);\n  while (overlappingWidgets.length > 0 && nonBlocking > 0) {\n    overlappingWidgets.forEach((widgets) => {\n      // Keep upmost widget (and leftmost with lower priority)\n      const [stayingWidget, ...movingWidgets] = [...widgets].sort(orderWidgetsAccordingToPlacement);\n      stayingWidget.layout.y = Math.min(...widgets.map((w) => w.layout.y));\n      movingWidgets.forEach(\n        (movingWidget) => (movingWidget.layout.y = stayingWidget.layout.y + stayingWidget.layout.height)\n      );\n    });\n\n    overlappingWidgets = WidgetPlacementUtils.getOverlaps(nextWidgetList);\n    nonBlocking--;\n  }\n\n  // Adding rows if needed\n  rows = Math.max(rows, ...nextWidgetList.map((widget) => widget.layout.y + widget.layout.height - 1));\n\n  nextWidgetList.forEach((widget: WidgetManifest & { layout: { weight?: number } }) => delete widget.layout.weight);\n\n  const layout = dashboardManifest.grid?.layout ?? DashboardGridLayout.MANUAL;\n\n  if (!solvingCollisionOptions.invertedGravity || layout !== DashboardGridLayout.MANUAL) {\n    return {\n      ...dashboardManifest,\n      grid: { ...dashboardManifest.grid, rows },\n      widgets: nextWidgetList\n    };\n  } else {\n    // Remove \"holes\" and adapt complete height\n    nextWidgetList.sort((a, b) => a.layout.y - b.layout.y);\n    let somethingGoesUp = true;\n    while (somethingGoesUp) {\n      somethingGoesUp = false;\n      nextWidgetList.forEach((w) => {\n        if (w.layout.y > 1) {\n          const overlapsIfMovedUp = WidgetPlacementUtils.getOverlaps([\n            ...nextWidgetList,\n            { type: 'placeholder', layout: { ...w.layout, y: Math.max(w.layout.y - 1, 1), height: 1 } }\n          ]);\n          if (overlapsIfMovedUp.length === 0) {\n            w.layout.y--;\n            somethingGoesUp = true;\n          }\n        }\n      });\n    }\n\n    return {\n      ...dashboardManifest,\n      grid: {\n        ...dashboardManifest.grid,\n        rows: Math.max(solvingCollisionOptions.minRows, ...nextWidgetList.map((w) => w.layout.y + w.layout.height - 1))\n      },\n      widgets: nextWidgetList\n    };\n  }\n}\n","import { AfterViewChecked, Component, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport equal from 'fast-deep-equal/es6';\nimport {\n  BehaviorSubject,\n  combineLatestWith,\n  debounceTime,\n  distinctUntilChanged,\n  map,\n  merge,\n  Observable,\n  of,\n  startWith,\n  Subject,\n  Subscription,\n  switchMap\n} from 'rxjs';\nimport { WidgetManifest } from '../../../core/model/manifest.interface';\nimport { Size } from '../../../core/model/widget-chart-manifest.interface';\nimport { SubscriptionnerDirective } from '../subscriptionner.directive';\n\n@Component({ selector: 'yap-base-widget', template: '' })\nexport class BaseWidgetComponent extends SubscriptionnerDirective implements OnDestroy, AfterViewChecked {\n  widgetIndex$ = new BehaviorSubject<number>(0);\n  manifest$!: Observable<WidgetManifest>;\n  manifest: WidgetManifest = { type: 'placeholder' } as WidgetManifest;\n  sub?: Subscription;\n  observableList$ = new BehaviorSubject<Observable<WidgetManifest>[]>([] as Observable<WidgetManifest>[]);\n  staticManifest$ = new BehaviorSubject<WidgetManifest | null>(null);\n  displayHeader$: Observable<boolean | { [key: string]: boolean }>;\n  private _widgetSize$ = new BehaviorSubject<Size>({ width: 300, height: 300 });\n  widgetSize$: Observable<Size>;\n\n  @Input() open$: Observable<void> | Subject<void> = new Subject<void>();\n\n  @Output() manifestModified = new EventEmitter<{ widgetIndex: number; manifest: WidgetManifest }>();\n\n  @Input() set widgetIndex(index: number) {\n    this.widgetIndex$.next(index);\n  }\n\n  @Input() set staticManifest(manifest: WidgetManifest) {\n    this.staticManifest$.next(manifest);\n  }\n\n  set _manifest$(manifest: Observable<WidgetManifest>) {\n    this.manifest$ = manifest;\n    this.sub?.unsubscribe();\n    this.observableList$.next([manifest]);\n  }\n\n  get widgetIndex() {\n    return this.widgetIndex$.getValue();\n  }\n\n  constructor(protected store: Store<any>, protected el: ElementRef) {\n    super();\n    this.manifest$ = this.observableList$.pipe(\n      combineLatestWith(this.staticManifest$),\n      switchMap(([observables, staticManifest]) => (!staticManifest ? merge(...observables) : of(staticManifest))),\n      distinctUntilChanged((p, v) => equal(p, v))\n    );\n    this.subscriptions.add(this.manifest$.subscribe((manifest) => (this.manifest = manifest)));\n    this.displayHeader$ = this.manifest$.pipe(map((manifest) => manifest.header === undefined || manifest.header));\n    this.widgetSize$ = this._widgetSize$.pipe(\n      startWith({\n        width: 300,\n        height: 300\n      }),\n      distinctUntilChanged((p, c) => p.width === c.width && p.height === c.height),\n      debounceTime(100),\n      distinctUntilChanged((p, c) => p.width === c.width && p.height === c.height)\n    );\n  }\n\n  ngAfterViewChecked(): void {\n    this._widgetSize$.next({ width: this.el.nativeElement.offsetWidth, height: this.el.nativeElement.offsetHeight });\n  }\n\n  toImage(): Promise<string> {\n    return Promise.reject('Not yet implemented');\n  }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BaseWidgetComponent } from '../base-widget.component';\n\n@Component({\n  selector: 'yap-widget-placeholder',\n  templateUrl: './widget-placeholder.component.html'\n})\nexport class WidgetPlaceholderComponent extends BaseWidgetComponent {\n  constructor(store: Store<any>, el: ElementRef) {\n    super(store, el);\n  }\n}\n","<p>{{ '@yap.widget.unrecognized' | i18n : { type: manifest ? manifest.type : 'placeholder' } }}</p>\n","import { Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BaseWidgetComponent } from '../base-widget.component';\n\n@Component({\n  selector: 'yap-widget-filler',\n  templateUrl: './widget-filler.component.html'\n})\nexport class WidgetFillerComponent extends BaseWidgetComponent {\n  constructor(store: Store<any>, el: ElementRef) {\n    super(store, el);\n  }\n\n  get index() {\n    // @ts-ignore\n    return this.manifest.options?.index ?? 0;\n  }\n}\n","<div class=\"a-indicator-block\">\n  <p>{{ index + 1 }}</p>\n</div>\n","import { Inject, Injectable, InjectionToken, Injector, Type } from '@angular/core';\nimport { BehaviorSubject, from, map, Observable, of } from 'rxjs';\nimport { WidgetManifest } from '../../../../core/model/manifest.interface';\nimport { BaseWidgetComponent } from '../base-widget.component';\nimport { WidgetFillerComponent } from '../widget-filler/widget-filler.component';\nimport { WidgetPlaceholderComponent } from '../widget-placeholder/widget-placeholder.component';\nimport { WidgetDefinition, WidgetLazyDefinition, WidgetStaticDefinition } from './widgets-definition.model';\n\nexport const WIDGET_DEFINITION = new InjectionToken<string>('Widgets definition');\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class WidgetFactoryService {\n  reference$ = new BehaviorSubject<{ [key: string]: WidgetDefinition }>({\n    placeholder: { name: 'placeholder', component: WidgetPlaceholderComponent },\n    filler: { name: 'filler', component: WidgetFillerComponent }\n  });\n  moduleRefCache = {} as { [manifestType: string]: Type<BaseWidgetComponent> };\n\n  constructor(private injector: Injector, @Inject(WIDGET_DEFINITION) reference: { [key: string]: WidgetDefinition }) {\n    this.putDefinitions(reference);\n  }\n\n  resolveComponent(manifest: WidgetManifest) {\n    if (this.moduleRefCache[manifest.type]) {\n      return of(this.moduleRefCache[manifest.type]);\n    }\n    if (!!manifest && this.reference$.getValue()[manifest.type]) {\n      // @ts-ignore\n      if (this.reference$.getValue()[manifest.type].load === undefined) {\n        this.moduleRefCache[manifest.type] = (\n          this.reference$.getValue()[manifest.type] as WidgetStaticDefinition\n        ).component;\n        return of(this.moduleRefCache[manifest.type]);\n      } else {\n        return from(\n          (this.reference$.getValue()[manifest.type] as WidgetLazyDefinition).load().then((fn) => {\n            this.moduleRefCache[manifest.type] = fn(this.injector);\n            return this.moduleRefCache[manifest.type];\n          })\n        );\n      }\n    } else {\n      this.moduleRefCache[manifest.type] = (\n        this.reference$.getValue()['placeholder'] as WidgetStaticDefinition\n      ).component;\n      return of(this.moduleRefCache[manifest.type]);\n    }\n  }\n\n  private putDefinitions(definitions: { [key: string]: WidgetDefinition }) {\n    this.reference$.next({\n      ...this.reference$.getValue(),\n      ...definitions\n    });\n  }\n\n  isModuleLoaded(type: string): Observable<boolean> {\n    return this.reference$.pipe(map((componentDefs) => !!componentDefs[type]));\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport equal from 'fast-deep-equal/es6';\nimport {\n  BehaviorSubject,\n  combineLatest,\n  distinctUntilChanged,\n  Observable,\n  of,\n  Subject,\n  Subscription,\n  switchMap\n} from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { WidgetManifest } from '../../../../core/model/manifest.interface';\nimport { DashboardActions } from '../../../store/dashboard.actions';\nimport { DashboardSelectors } from '../../../store/dashboard.selectors';\nimport { SubscriptionnerDirective } from '../../subscriptionner.directive';\nimport { BaseWidgetComponent } from '../base-widget.component';\nimport { WidgetPlaceholderComponent } from '../widget-placeholder/widget-placeholder.component';\nimport { WidgetFactoryService } from './widget-factory.service';\n\n@Component({\n  selector: 'yap-widget-instanciator',\n  templateUrl: './widget-instanciator.component.html'\n})\nexport class WidgetInstanciatorComponent extends SubscriptionnerDirective implements AfterViewInit, OnDestroy {\n  _widgetIndex$ = new BehaviorSubject<number>(0);\n  widgetManifest$!: Observable<WidgetManifest>;\n  staticManifest$ = new BehaviorSubject<WidgetManifest | null>(null);\n\n  @Input() set widgetIndex(manifest: number) {\n    this._widgetIndex$.next(manifest);\n  }\n\n  get widgetIndex() {\n    return this._widgetIndex$.getValue();\n  }\n\n  @Input() set staticManifest(manifest: WidgetManifest) {\n    this.staticManifest$.next(manifest);\n  }\n\n  @Input() standalone = false;\n\n  @Output() manifestModified = new EventEmitter<{ widgetIndex: number; manifest: WidgetManifest }>();\n\n  @ViewChild('componentRef', { read: ViewContainerRef, static: false }) componentRef!: ViewContainerRef;\n  instanciatedComponent!: ComponentRef<any>;\n  instanceSubscription?: Subscription;\n  @Input() open$: Observable<void> | Subject<void> = new Subject<void>();\n\n  @Output() widgetInstance = new EventEmitter<BaseWidgetComponent>();\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    private widgetFactoryService: WidgetFactoryService,\n    private store: Store<any>\n  ) {\n    super();\n  }\n\n  ngAfterViewInit() {\n    // Dynamically create associated component\n    this.widgetManifest$ = combineLatest([this.staticManifest$, this._widgetIndex$]).pipe(\n      distinctUntilChanged(),\n      switchMap(([staticManifest, index]) =>\n        !!staticManifest ? of(staticManifest) : this.store.select(DashboardSelectors.widgetManifest(index))\n      ),\n      distinctUntilChanged((p, c) => equal(p, c))\n    );\n\n    this.subscriptions.add(\n      this.widgetManifest$.subscribe((widgetManifest) => {\n        this.componentRef.clear();\n        this.instanceSubscription?.unsubscribe();\n\n        this.widgetFactoryService\n          .resolveComponent(widgetManifest)\n          .pipe(delay(1))\n          .subscribe((component) => {\n            this.instanciatedComponent = !!component\n              ? this.componentRef.createComponent(component)\n              : this.componentRef.createComponent(WidgetPlaceholderComponent);\n            this.instanciatedComponent.instance._manifest$ = this.widgetManifest$;\n            this.instanciatedComponent.instance.widgetIndex = this._widgetIndex$.getValue();\n            this.instanciatedComponent.instance.open$ = this.open$;\n            this.instanceSubscription = this.instanciatedComponent.instance.manifestModified.subscribe(\n              (manifest: { widgetIndex: number; manifest: WidgetManifest }) => {\n                if (!this.standalone) {\n                  // Impact store global manifest\n                  this.store.dispatch(\n                    DashboardActions.updateWidgetManifest({ ...manifest, index: manifest.widgetIndex })\n                  );\n                }\n                this.manifestModified.emit(manifest);\n              }\n            );\n            this.widgetInstance.emit(this.instanciatedComponent.instance);\n          });\n      })\n    );\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    if (this.instanciatedComponent) {\n      this.instanciatedComponent.destroy();\n    }\n    this.cdRef.detectChanges();\n  }\n}\n","<ng-container #componentRef></ng-container>\n","export class DateUtils {\n  static formatDate(date: Date) {\n    // prettier-ignore\n    return `${date.getFullYear()}-${(date.getMonth() + 1 + '').padStart(2, '0')}-${(date.getDate() + '').padStart(2, '0')}T${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;\n  }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AttributeMultipleValue, AttributeSimpleValue, Item } from '../../../../core/model/item.interface';\nimport { Attribute, Class } from '../../../../core/store/class/class.interface';\nimport { ClassSelectors } from '../../../../core/store/class/class.selectors';\nimport { ConfigActions } from '../../../../core/store/config/config.actions';\nimport { ContextMenuSelectors } from '../../../../core/store/context-menu/context-menu.selectors';\nimport { Field, FieldType } from '../../../../core/store/field/field.interface';\nimport { FieldSelectors } from '../../../../core/store/field/field.selectors';\nimport { ItemActions } from '../../../../core/store/item/item.actions';\nimport { RelationTypesActions } from '../../../../core/store/relation-types/relation-types.actions';\nimport { RelationTypesSelectors } from '../../../../core/store/relation-types/relation-types.selectors';\nimport { DateUtils } from '../../../date-utils';\nimport { ItemUtils } from '../../../item-utils';\nimport { DashboardSelectors } from '../../../store/dashboard.selectors';\nimport { SubscriptionnerDirective } from '../../subscriptionner.directive';\n\nexport const HTTP_ORIGIN_METADATA = '_http_origin';\n\n@Component({\n  selector: 'yap-object-creation',\n  templateUrl: './object-edition.component.html'\n})\nexport class YapObjectEditionComponent extends SubscriptionnerDirective {\n  @Input() link: boolean = false;\n  @Input() object: boolean = false;\n  @Input() menu: boolean = false;\n\n  private overlayRef?: OverlayRef;\n  @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n  itemId$: Observable<string>;\n  from$: Observable<string>;\n  itemId?: string;\n  coordinates: number[] | undefined;\n  tmpObject: Item = this.newObject();\n  from: string = '';\n  @Output() closed = new EventEmitter<void>();\n  classes: Class[] = [];\n  fields: Field[] = [];\n  FieldType = FieldType;\n  relations$: Observable<{ id: string; label: string }[]>;\n  relation!: { typeId: string; itemId: string };\n  selectedItemsIds!: string[];\n  UPLOAD_METHOD = 'upload';\n  HTTP_ORIGIN_METHOD = 'metadata';\n  HTTP_ORIGIN_METADATA = HTTP_ORIGIN_METADATA;\n  rawMethods = [\n    { id: this.HTTP_ORIGIN_METHOD, name: '@yap.admin.fields.rawMethods.http' },\n    {\n      id: this.UPLOAD_METHOD,\n      name: '@yap.admin.fields.rawMethods.upload'\n    }\n  ];\n  method = this.UPLOAD_METHOD;\n  selectedDatePicker: string = '';\n  inversion: boolean = false;\n\n  constructor(private overlay: Overlay, private viewContainerRef: ViewContainerRef, private store: Store) {\n    super();\n    this.itemId$ = this.store.select(ContextMenuSelectors.itemId);\n    this.subscriptions.add(\n      this.store.select(ContextMenuSelectors.coordinates).subscribe((coordinates) => (this.coordinates = coordinates))\n    );\n    this.subscriptions.add(this.itemId$.subscribe((itemId) => (this.itemId = itemId)));\n    this.from$ = this.store.select(ContextMenuSelectors.from);\n    this.relations$ = this.store\n      .select(RelationTypesSelectors.relationsTypes)\n      .pipe(map((relations) => (relations || []).map((rel) => ({ id: rel.id, label: rel.name }))));\n    this.subscriptions.add(\n      combineLatest([this.from$, this.store.select(ClassSelectors.classes)])\n        .pipe(map(([from, classes]) => classes.filter((clazz) => from !== 'map' || ItemUtils.hasLocation(clazz))))\n        .subscribe((classes) => (this.classes = classes))\n    );\n    this.subscriptions.add(this.store.select(FieldSelectors.fields).subscribe((fields) => (this.fields = fields)));\n    this.subscriptions.add(this.from$.subscribe((from) => (this.from = from)));\n    this.subscriptions.add(\n      this.store.select(DashboardSelectors.selectedItemIds).subscribe((itemIds) => (this.selectedItemsIds = itemIds))\n    );\n  }\n\n  openCreateObjectPanel($event: MouseEvent) {\n    this.relation = { typeId: '', itemId: this.itemId ?? '' };\n    this.overlayRef = this.overlay.create(\n      new OverlayConfig({\n        hasBackdrop: true,\n        panelClass: ['m-context-menu', 'create-object-panel'],\n        backdropClass: 'backdrop'\n      })\n    );\n    this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n    this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n    this.overlayRef.backdropClick().subscribe((_) => this.hide());\n  }\n\n  hide() {\n    this.overlayRef?.dispose();\n    this.closed.emit();\n    this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n  }\n\n  newObject() {\n    return { id: uuidv4(), oClass: '', attributes: {}, metadata: {} };\n  }\n\n  get valid() {\n    return (\n      (!this.object || ItemUtils.isValidObject(this.tmpObject)) && (!this.link || (this.relation?.typeId ?? false))\n    );\n  }\n\n  createObjects() {\n    let relation = {\n      from: this.selectedItemsIds,\n      to: this.relation?.itemId ?? '',\n      typeId: this.relation?.typeId ?? '',\n      inversion: this.inversion\n    };\n    if (this.object) {\n      this.tmpObject = ItemUtils.ensureItemIdHasCorrectFormat(this.tmpObject);\n      this.store.dispatch(ItemActions.create({ item: this.tmpObject }));\n      if (this.link) {\n        relation.from = [this.tmpObject.id];\n        this.store.dispatch(RelationTypesActions.createRelation(relation));\n      }\n    } else {\n      this.store.dispatch(RelationTypesActions.createRelation(relation));\n    }\n\n    this.hide();\n  }\n\n  get attributes() {\n    return this.classes.find((cl) => cl.id === this.tmpObject.oClass)?.attributes ?? [];\n  }\n\n  fieldType(attribute: Attribute) {\n    return this.fields.find((field) => attribute.field === field.id)?.type;\n  }\n\n  assignValue(attribute: Attribute, $event: any) {\n    const value =\n      this.fieldType(attribute) === FieldType.INSTANT && $event !== '' ? new Date($event).getTime() : $event;\n    if (!this.tmpObject.attributes[attribute.name]) {\n      this.tmpObject.attributes[attribute.name] = { type: 'VALUE', metadata: {}, value, visible: true };\n    } else {\n      (this.tmpObject.attributes[attribute.name] as AttributeSimpleValue).value = value;\n    }\n  }\n\n  value(attribute: Attribute) {\n    const value = (this.tmpObject.attributes[attribute.name] as AttributeSimpleValue)?.value;\n    if (this.fieldType(attribute) === FieldType.INSTANT) {\n      return value !== undefined && value !== '' ? DateUtils.formatDate(new Date(value as string | number)) : undefined;\n    }\n    return ((this.tmpObject.attributes[attribute.name] as AttributeSimpleValue) ?? {}).value;\n  }\n\n  toggleDatePicker($event: Event, id: string) {\n    $event.preventDefault();\n    $event.stopPropagation();\n    if (this.selectedDatePicker === id) {\n      this.selectedDatePicker = '';\n    } else {\n      this.selectedDatePicker = id;\n    }\n  }\n\n  closeDatePicker($event: Event) {\n    if (!($event.currentTarget as HTMLElement).contains(($event as MouseEvent).relatedTarget as Node)) {\n      this.selectedDatePicker = '';\n    }\n  }\n\n  multiValues(attribute: Attribute) {\n    return ((this.tmpObject.attributes[attribute.name] as AttributeMultipleValue) ?? { values: [] }).values;\n  }\n\n  removeMultiValued(attribute: Attribute, i: number) {\n    (this.tmpObject.attributes[attribute.name] as AttributeMultipleValue).values.splice(i, 1);\n  }\n\n  addMultiValued(attribute: Attribute) {\n    if (!this.tmpObject.attributes[attribute.name]) {\n      this.tmpObject.attributes[attribute.name] = { type: 'MULTI', values: [] };\n    }\n    (this.tmpObject.attributes[attribute.name] as AttributeMultipleValue).values.push({\n      type: 'VALUE',\n      metadata: {},\n      // @ts-ignore\n      value: undefined,\n      visible: true\n    });\n    return (this.tmpObject.attributes[attribute.name] as AttributeMultipleValue).values.length - 1;\n  }\n\n  valueMulti(attribute: Attribute, i: number) {\n    return this.multiValues(attribute)[i].value;\n  }\n\n  assignValueMulti(attribute: Attribute, $event: any, i: number) {\n    const value = this.fieldType(attribute) === FieldType.INSTANT ? new Date($event).getTime() : $event;\n    if (!this.tmpObject.attributes[attribute.name]) {\n      this.tmpObject.attributes[attribute.name] = { type: 'MULTI', values: [] };\n    }\n    if (!(this.tmpObject.attributes[attribute.name] as AttributeMultipleValue).values[i]) {\n      (this.tmpObject.attributes[attribute.name] as AttributeMultipleValue).values[i] = {\n        type: 'VALUE',\n        metadata: {},\n        value,\n        visible: true\n      };\n    } else {\n      (this.tmpObject.attributes[attribute.name] as AttributeMultipleValue).values[i].value = value;\n    }\n  }\n\n  changeClass($event: any) {\n    this.tmpObject = this.newObject();\n    this.tmpObject.oClass = $event;\n    if (this.from === 'map') {\n      this.attributes.forEach((attribute) => {\n        if (['latitude', 'lat'].indexOf(attribute.name) >= 0) {\n          if (attribute.multiValued) {\n            const idx = this.addMultiValued(attribute);\n            this.assignValueMulti(attribute, (this.coordinates ?? [])[0], idx);\n          } else {\n            this.assignValue(attribute, (this.coordinates ?? [])[0]);\n          }\n        }\n        if (['longitude', 'long', 'lon', 'lng'].indexOf(attribute.name) >= 0) {\n          if (attribute.multiValued) {\n            const idx = this.addMultiValued(attribute);\n            this.assignValueMulti(attribute, (this.coordinates ?? [])[1], idx);\n          } else {\n            this.assignValue(attribute, (this.coordinates ?? [])[1]);\n          }\n        }\n      });\n    }\n  }\n\n  setRawMethod(attribute: Attribute, $event: any) {\n    this.method = $event;\n    if (!this.tmpObject.attributes[attribute.name]) {\n      this.tmpObject.attributes[attribute.name] = {\n        type: 'VALUE',\n        metadata: {},\n        value: '',\n        visible: true\n      };\n    }\n    if ($event === this.HTTP_ORIGIN_METHOD) {\n      this.assignMetadata(attribute, '', HTTP_ORIGIN_METADATA);\n    }\n    if ($event === this.UPLOAD_METHOD) {\n      // @ts-ignore\n      delete (this.tmpObject.attributes[attribute.name] as AttributeSimpleValue).metadata[HTTP_ORIGIN_METADATA];\n    }\n  }\n\n  valueMetadata(attribute: Attribute, type: string) {\n    return (((this.tmpObject.attributes[attribute.name] as AttributeSimpleValue) ?? {}).metadata ?? {})[type];\n  }\n\n  assignMetadata(attribute: Attribute, $event: any, type: string) {\n    if (!(this.tmpObject.attributes[attribute.name] as AttributeSimpleValue).metadata) {\n      (this.tmpObject.attributes[attribute.name] as AttributeSimpleValue).metadata = { [type]: $event };\n    } else {\n      // @ts-ignore\n      (this.tmpObject.attributes[attribute.name] as AttributeSimpleValue).metadata[type] = $event;\n    }\n  }\n\n  toggleInversion() {\n    this.inversion = !this.inversion;\n  }\n}\n","<button type=\"button\" class=\"a-btn -link-like\" (click)=\"openCreateObjectPanel($event)\" *ngIf=\"menu\">\n  {{ '@yap.context.createObject.title.' + (link && object ? 'linkedObject' : link ? 'link' : 'object') | i18n }}\n</button>\n<button\n  id=\"object_creator_link\"\n  type=\"button\"\n  (click)=\"openCreateObjectPanel($event)\"\n  *ngIf=\"!menu\"\n  class=\"a-btn a-btn--ghost -circle u-floating u-floating--bottom-right\"\n  [title]=\"'@yap.context.createObject.title.object' | i18n\"\n>\n  <span class=\"u-visually-hidden\">{{ '@yap.context.createObject.title.object' | i18n }}</span>\n  <yap-icon iconSvg=\"add_column\" [width]=\"24\" [height]=\"24\" aria-hidden=\"true\"></yap-icon>\n</button>\n\n<ng-template #template>\n  <div class=\"o-settings__popup\">\n    <div class=\"o-settings__popup__content\">\n      <ng-container *ngIf=\"link\">\n        <div class=\"m-form-label-field\">\n          <label class=\"a-label\" for=\"createobject_link\">{{ '@yap.context.createObject.title.link' | i18n }}</label>\n          <yap-select\n            [(ngModel)]=\"relation.typeId\"\n            [items]=\"relations$ | async\"\n            [itemsAsOption]=\"true\"\n            bindLabel=\"label\"\n            bindValue=\"id\"\n            class=\"a-yap-select\"\n            id=\"createobject_link\"\n          ></yap-select>\n        </div>\n        <div class=\"m-form-label-field\">\n          <label class=\"a-label\" for=\"createobject_inversion\">{{\n            '@yap.context.createObject.title.inversion' | i18n\n          }}</label>\n          <yap-checkbox\n            id=\"createobject_inversion\"\n            [ngModel]=\"inversion\"\n            (ngModelChange)=\"toggleInversion()\"\n          ></yap-checkbox>\n        </div>\n      </ng-container>\n\n      <div class=\"o-object-panel\" *ngIf=\"object\">\n        <div class=\"m-form-label-field\">\n          <label class=\"a-label\" for=\"createobject_class\">{{ '@yap.context.createObject.class' | i18n }}</label>\n          <yap-select\n            [ngModel]=\"tmpObject.oClass\"\n            (ngModelChange)=\"changeClass($event)\"\n            [items]=\"classes\"\n            [itemsAsOption]=\"true\"\n            bindValue=\"id\"\n            bindLabel=\"name\"\n            class=\"a-yap-select\"\n            id=\"createobject_class\"\n          ></yap-select>\n        </div>\n\n        <ng-container *ngFor=\"let attribute of attributes\" [class.multi-value]=\"attribute.multiValued\">\n          <div class=\"m-form-label-field\">\n            <label class=\"a-label\">{{ attribute.name }}</label>\n            <ng-container *ngIf=\"!attribute.multiValued\">\n              <ng-container [ngSwitch]=\"fieldType(attribute)\">\n                <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n                  <div class=\"a-date-input\" tabindex=\"-1\" (blur)=\"closeDatePicker($event)\">\n                    <input\n                      type=\"datetime-local\"\n                      class=\"a-form-field\"\n                      [ngModel]=\"value(attribute)\"\n                      (ngModelChange)=\"assignValue(attribute, $event)\"\n                    />\n                    <div class=\"a-open-date-picker\" (mousedown)=\"toggleDatePicker($event, attribute.id)\"></div>\n                    <div class=\"date-picker-container\" *ngIf=\"selectedDatePicker === attribute.id\">\n                      <yap-date-picker\n                        [ngModel]=\"value(attribute)\"\n                        (ngModelChange)=\"assignValue(attribute, $event)\"\n                        [roundSelection]=\"true\"\n                        [timePicker]=\"true\"\n                      ></yap-date-picker>\n                    </div>\n                  </div>\n                </ng-container>\n                <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n                  <input\n                    type=\"number\"\n                    step=\"any\"\n                    class=\"a-form-field\"\n                    [ngModel]=\"value(attribute)\"\n                    (ngModelChange)=\"assignValue(attribute, $event)\"\n                  />\n                </ng-container>\n                <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n                  <input\n                    type=\"number\"\n                    class=\"a-form-field\"\n                    [ngModel]=\"value(attribute)\"\n                    (ngModelChange)=\"assignValue(attribute, $event)\"\n                  />\n                </ng-container>\n                <ng-container *ngSwitchDefault>\n                  <input\n                    type=\"text\"\n                    class=\"a-form-field\"\n                    [ngModel]=\"value(attribute)\"\n                    (ngModelChange)=\"assignValue(attribute, $event)\"\n                  />\n                </ng-container>\n                <ng-container *ngSwitchCase=\"FieldType.RAW\">\n                  <yap-select\n                    [ngModel]=\"method\"\n                    (ngModelChange)=\"setRawMethod(attribute, $event)\"\n                    [items]=\"rawMethods\"\n                    [itemsAsOption]=\"true\"\n                    bindValue=\"id\"\n                    bindLabel=\"name\"\n                    [labelTranslate]=\"true\"\n                    class=\"a-yap-select\"\n                  ></yap-select>\n                  <input\n                    type=\"text\"\n                    class=\"a-form-field\"\n                    *ngIf=\"method === HTTP_ORIGIN_METHOD\"\n                    [ngModel]=\"valueMetadata(attribute, HTTP_ORIGIN_METADATA)\"\n                    (ngModelChange)=\"assignMetadata(attribute, $event, HTTP_ORIGIN_METADATA)\"\n                  />\n                  <ng-container *ngIf=\"method === UPLOAD_METHOD\">\n                    <yap-upload\n                      mode=\"doc\"\n                      accept=\"image/*,video/*\"\n                      (uploaded)=\"assignValue(attribute, $event)\"\n                    ></yap-upload>\n                  </ng-container>\n                </ng-container>\n              </ng-container>\n            </ng-container>\n          </div>\n\n          <div class=\"multi-value-container\" *ngIf=\"attribute.multiValued\">\n            <button\n              class=\"button-add a-btn a-btn--secondary a-btn--icon-text -size-sm\"\n              (click)=\"addMultiValued(attribute)\"\n            >\n              <yap-icon iconSvg=\"add\"></yap-icon>\n              <span>{{ '@yap.context.createObject.addMultiField' | i18n : { name: attribute.name } }}</span>\n            </button>\n            <div class=\"multi-value\" *ngFor=\"let multiValue of multiValues(attribute); let i = index\">\n              <ng-container [ngSwitch]=\"fieldType(attribute)\">\n                <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n                  <input\n                    type=\"datetime-local\"\n                    [ngModel]=\"valueMulti(attribute, i)\"\n                    (focusout)=\"assignValueMulti(attribute, $event, i)\"\n                  />\n                </ng-container>\n                <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n                  <input\n                    type=\"number\"\n                    step=\"any\"\n                    [ngModel]=\"valueMulti(attribute, i)\"\n                    (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n                  />\n                </ng-container>\n                <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n                  <input\n                    type=\"number\"\n                    [ngModel]=\"valueMulti(attribute, i)\"\n                    (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n                  />\n                </ng-container>\n                <ng-container *ngSwitchDefault>\n                  <input\n                    type=\"text\"\n                    [ngModel]=\"valueMulti(attribute, i)\"\n                    (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n                  />\n                </ng-container>\n                <button (click)=\"removeMultiValued(attribute, i)\">\n                  <yap-icon iconSvg=\"delete\"></yap-icon>\n                </button>\n              </ng-container>\n            </div>\n          </div>\n        </ng-container>\n      </div>\n    </div>\n    <div class=\"m-btn-group\">\n      <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"hide()\">\n        {{ '@yap.context.cancel' | i18n }}\n      </button>\n      <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"createObjects()\" [disabled]=\"!valid\">\n        {{ '@yap.context.create' | i18n }}\n      </button>\n    </div>\n  </div>\n</ng-template>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { withLatestFrom } from 'rxjs/operators';\nimport { ConfigActions } from '../../../core/store/config/config.actions';\nimport { ContextMenuActions } from '../../../core/store/context-menu/context-menu.actions';\nimport { ContextMenuSelectors } from '../../../core/store/context-menu/context-menu.selectors';\nimport { DashboardActions } from '../../store/dashboard.actions';\nimport { DashboardSelectors } from '../../store/dashboard.selectors';\nimport { SubscriptionnerDirective } from '../subscriptionner.directive';\nimport { WidgetFactoryService } from '../widgets/widget-instanciator/widget-factory.service';\n\n@Component({\n  selector: 'yap-context-menu',\n  templateUrl: './context-menu.component.html'\n})\nexport class ContextMenuComponent extends SubscriptionnerDirective {\n  opened$: Observable<boolean>;\n  position$: Observable<{ clientX: number; clientY: number }>;\n  itemId$: Observable<string>;\n  itemId?: string;\n  isSelected$: Observable<boolean>;\n  resultSet: string | undefined;\n  selectedIds$: Observable<string[]>;\n  selectedItemsIds?: string[];\n  from?: string;\n  coordinates?: number[];\n  private overlayRef?: OverlayRef;\n  @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n  private overlayDetailRef?: OverlayRef;\n  @ViewChild('detailTemplate', { read: TemplateRef }) detailTemplate!: TemplateRef<any>;\n  detailManifest = {\n    type: 'detail',\n    header: false,\n    layout: { x: 1, y: 1, width: 1, height: 1 },\n    options: { itemIds: [] as string[] }\n  };\n  isModuleLoaded: { [type: string]: boolean } = {};\n\n  constructor(\n    private store: Store,\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef,\n    public widgetFactoryService: WidgetFactoryService\n  ) {\n    super();\n    this.opened$ = this.store.select(ContextMenuSelectors.opened);\n    this.position$ = this.store.select(ContextMenuSelectors.position);\n    this.itemId$ = this.store.select(ContextMenuSelectors.itemId);\n    this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n    this.isSelected$ = combineLatest([this.selectedIds$, this.itemId$]).pipe(\n      map(([itemIds, itemId]) => itemIds.includes(itemId))\n    );\n\n    this.subscriptions.add(this.store.select(ContextMenuSelectors.from).subscribe((from) => (this.from = from)));\n    this.subscriptions.add(\n      this.store.select(ContextMenuSelectors.coordinates).subscribe((coordinates) => (this.coordinates = coordinates))\n    );\n    this.subscriptions.add(this.itemId$.subscribe((itemId) => (this.itemId = itemId)));\n    this.subscriptions.add(this.selectedIds$.subscribe((itemIds) => (this.selectedItemsIds = itemIds)));\n    this.subscriptions.add(\n      this.store.select(ContextMenuSelectors.resultSet).subscribe((resultSet) => (this.resultSet = resultSet))\n    );\n\n    this.subscriptions.add(\n      this.opened$.pipe(withLatestFrom(this.position$)).subscribe(([opened, position]) => {\n        if (opened) {\n          this.openWithTemplate(position);\n        } else {\n          this.overlayRef?.dispose();\n        }\n      })\n    );\n\n    this.widgetFactoryService.isModuleLoaded('detail').subscribe((loaded) => (this.isModuleLoaded['detail'] = loaded));\n    this.widgetFactoryService.isModuleLoaded('graph').subscribe((loaded) => (this.isModuleLoaded['graph'] = loaded));\n  }\n\n  openWithTemplate(position: any) {\n    this.overlayRef = this.overlay.create(\n      new OverlayConfig({\n        hasBackdrop: true,\n        panelClass: ['m-context-menu'],\n        backdropClass: 'backdrop'\n      })\n    );\n    this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n    this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n    this.overlayRef.backdropClick().subscribe(() => this.hide());\n    const contextMenu = document.querySelector('div.m-context-menu') as HTMLDivElement;\n    if (!!contextMenu) {\n      contextMenu.style.left =\n        Math.max(0, Math.min(window.innerWidth - contextMenu.clientWidth, position.clientX - 10)) + 'px';\n      contextMenu.style.top =\n        Math.max(0, Math.min(window.innerHeight - contextMenu.clientHeight, position.clientY - 10)) + 'px';\n    }\n  }\n\n  hide() {\n    this.store.dispatch(ContextMenuActions.hide());\n    this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n  }\n\n  selectionAddOrRemove() {\n    this.store.dispatch(DashboardActions.select({ id: this.itemId ?? '', cumulative: true }));\n    this.hide();\n  }\n\n  explore() {\n    this.store.dispatch(DashboardActions.explore({ id: this.itemId ?? '' }));\n    this.hide();\n  }\n\n  proximity() {\n    this.store.dispatch(DashboardActions.proximity({ id: this.itemId ?? '', targetResultSet: this.resultSet ?? '' }));\n    this.hide();\n  }\n\n  detail() {\n    this.store.dispatch(DashboardActions.detail({ ids: [this.itemId ?? ''] }));\n    this.hide();\n  }\n\n  selectionInvert() {\n    this.store.dispatch(DashboardActions.invertSelection());\n    this.hide();\n  }\n\n  addressFromLoc() {\n    this.store.dispatch(DashboardActions.searchAddressForPoint({ coordinates: this.coordinates ?? [0, 0] }));\n    this.hide();\n  }\n\n  flyingDetail() {\n    this.detailManifest.options.itemIds = [this.itemId ?? ''];\n    this.overlayDetailRef = this.overlay.create(\n      new OverlayConfig({\n        hasBackdrop: true,\n        panelClass: ['o-settings__popup'],\n        backdropClass: 'backdrop'\n      })\n    );\n    this.overlayDetailRef.attach(new TemplatePortal(this.detailTemplate, this.viewContainerRef));\n    this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name + '-detail' }));\n    this.overlayDetailRef.backdropClick().subscribe(() => this.hideDetail());\n    this.hide();\n  }\n\n  hideDetail() {\n    this.overlayDetailRef?.dispose();\n    this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-detail' }));\n  }\n}\n","<ng-template #template>\n  <ul class=\"m-context-menu__list\">\n    <ng-container *ngIf=\"!!itemId\">\n      <li class=\"m-context-menu__list__item\">\n        <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n          {{ ((isSelected$ | async) ? '@yap.context.remove' : '@yap.context.add') | i18n }}\n        </button>\n      </li>\n      <li class=\"m-context-menu__list__item\">\n        <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n          {{ '@yap.context.invert' | i18n }}\n        </button>\n      </li>\n      <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n        <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n          {{ '@yap.context.proximity' | i18n }}\n        </button>\n      </li>\n      <ng-container *ngIf=\"isModuleLoaded['graph']\">\n        <li class=\"m-context-menu__list__item\">\n          <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n            {{ '@yap.context.explore' | i18n }}\n          </button>\n        </li>\n      </ng-container>\n      <ng-container *ngIf=\"isModuleLoaded['detail']\">\n        <li class=\"m-context-menu__list__item\">\n          <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n            {{ '@yap.context.detail' | i18n }}\n          </button>\n        </li>\n        <li class=\"m-context-menu__list__item\">\n          <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n            {{ '@yap.context.flyingDetail' | i18n }}\n          </button>\n        </li>\n      </ng-container>\n      <ng-container *yapAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n        <li class=\"m-context-menu__list__item\">\n          <yap-object-creation\n            (closed)=\"hide()\"\n            [link]=\"true\"\n            [object]=\"false\"\n            [menu]=\"true\"\n            *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n          ></yap-object-creation>\n          <yap-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></yap-object-creation>\n        </li>\n      </ng-container>\n    </ng-container>\n    <ng-container *yapAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n      <li class=\"m-context-menu__list__item\">\n        <yap-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></yap-object-creation>\n      </li>\n    </ng-container>\n    <ng-container *ngIf=\"from === 'map'\">\n      <li class=\"m-context-menu__list__item\">\n        <button type=\"button\" class=\"a-btn -link-like\" (click)=\"addressFromLoc()\">\n          {{ '@yap.context.addressFromLoc' | i18n }}\n        </button>\n      </li>\n    </ng-container>\n  </ul>\n</ng-template>\n<ng-template #detailTemplate>\n  <div class=\"o-settings__popup__header\">\n    <h2 class=\"a-h2\">{{ '@yap.context.flyingDetail' | i18n }}</h2>\n    <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n      <yap-icon iconSvg=\"close\"></yap-icon>\n      <span class=\"u-visually-hidden\">{{ '@yap.action.close' | i18n }}</span>\n    </button>\n  </div>\n  <div class=\"o-settings__popup__content\">\n    <yap-widget-instanciator [staticManifest]=\"detailManifest\"></yap-widget-instanciator>\n  </div>\n  <div class=\"o-settings__popup__footer\">\n    <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n      {{ '@yap.action.close' | i18n }}\n    </button>\n  </div>\n</ng-template>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport equal from 'fast-deep-equal/es6';\nimport {\n  auditTime,\n  BehaviorSubject,\n  combineLatest,\n  combineLatestWith,\n  fromEvent,\n  Observable,\n  of,\n  switchMap\n} from 'rxjs';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport {\n  DashboardGridLayout,\n  DashboardManifest,\n  WidgetLayout,\n  WidgetManifest\n} from '../../core/model/manifest.interface';\nimport { MIME_TYPE_RESULTSET } from '../../core/model/mimetype-resultset.constant';\nimport { CategoryActions } from '../../core/store/category/category.actions';\nimport { ClassActions } from '../../core/store/class/class.actions';\nimport { ConfigActions } from '../../core/store/config/config.actions';\nimport { ConfigSelectors } from '../../core/store/config/config.selectors';\nimport { DataSourceActions } from '../../core/store/data-source/data-source.actions';\nimport { FieldActions } from '../../core/store/field/field.actions';\nimport { RelationTypesActions } from '../../core/store/relation-types/relation-types.actions';\nimport { WidgetPlacementUtils } from '../components/widgets/widget-placement/widget-placement.utils';\nimport { DashboardActions, DashboardCellParams } from '../store/dashboard.actions';\nimport {\n  DEFAULT_COLUMNS_NUMBER,\n  DEFAULT_GAP_PX,\n  DEFAULT_ROW_HEIGHT_PX,\n  DEFAULT_ROWS_NUMBER\n} from '../store/dashboard.contants';\nimport { DashboardSelectors } from '../store/dashboard.selectors';\nimport { solveCollisions } from './solve-collisions.function';\nimport { SubscriptionnerDirective } from './subscriptionner.directive';\nimport { BaseWidgetComponent } from './widgets/base-widget.component';\n\nexport const MIME_TYPE_WIDGET_MANIFEST = 'application/widget-manifest';\nexport const MIME_TYPE_WIDGET_TYPE = 'application/widget-type-';\nexport const MIME_TYPE_WIDGET_SIZE = 'application/widget-size-';\n\n@Component({\n  selector: 'yap-dashboard',\n  templateUrl: './dashboard.component.html'\n})\nexport class DashboardComponent extends SubscriptionnerDirective implements AfterViewInit {\n  manifest: DashboardManifest | null = null;\n  windowManifest$: Observable<DashboardManifest>;\n  modeEdition = false;\n  modeEdition$: Observable<boolean>;\n  actionType: string | undefined;\n  staticDashboard$: BehaviorSubject<DashboardManifest | null> = new BehaviorSubject<DashboardManifest | null>(null);\n  stacked$ = new BehaviorSubject<boolean>(false);\n  indexForRemoval: number = -1;\n  @ViewChild('templateModal', { read: TemplateRef }) templateModal!: TemplateRef<any>;\n  separators$: Observable<WidgetLayout[]>;\n  nonFillerWidgets$: Observable<number>;\n  widgetsInstances: Array<BaseWidgetComponent> = [];\n\n  @Input() set staticDashboard(window: DashboardManifest) {\n    this.staticDashboard$.next(window);\n  }\n\n  @Input() CloseOnDragOut = true;\n\n  @ViewChild('grid') gridRef!: ElementRef;\n  private canCalculateView = false;\n  targetIndexes$: Observable<number[]>;\n  dashboardParams: DashboardCellParams = {\n    gridWidth: 1,\n    gridHeight: 1,\n    gridGap: DEFAULT_GAP_PX,\n    columns: DEFAULT_COLUMNS_NUMBER,\n    cellWidth: 1,\n    cellHeight: DEFAULT_ROW_HEIGHT_PX,\n    rows: DEFAULT_ROWS_NUMBER,\n    offsetLeft: 0,\n    offsetTop: 0,\n    mobileMode: false\n  };\n  private breakpoint: number = 0;\n  @Output() rowHeight = new EventEmitter<number>();\n  @Output() rows = new EventEmitter<number>();\n  currentlyModifiedManifest: WidgetManifest | null = null;\n  initialWidgetManifestList: WidgetManifest[] = [];\n  move: {\n    initialX: number;\n    initialY: number;\n    previousX: number;\n    previousY: number;\n  } = {\n    initialX: -1,\n    initialY: -1,\n    previousX: -1,\n    previousY: -1\n  };\n  gridTemplateRows$: Observable<string>;\n  gridTemplateColumns$: Observable<string>;\n  DashboardGridLayout = DashboardGridLayout;\n  layout: DashboardGridLayout = DashboardGridLayout.MANUAL;\n  backgroundArea$: Observable<string>;\n  private confirmRemoveRef?: OverlayRef;\n  Array: any;\n\n  constructor(private store: Store<any>, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {\n    super();\n    this.modeEdition$ = this.store.select(DashboardSelectors.dashboardEditionMode);\n    this.subscriptions.add(\n      this.modeEdition$.subscribe((mode) => {\n        this.modeEdition = mode;\n        if (!mode) {\n          this.clearActions();\n        }\n      })\n    );\n    this.targetIndexes$ = this.store.select(DashboardSelectors.targetTenantsIndexes);\n    this.subscriptions.add(\n      this.store.select(DashboardSelectors.dashboardCellParams).subscribe((params) => (this.dashboardParams = params))\n    );\n    this.windowManifest$ = this.store.select(DashboardSelectors.windowManifest).pipe(\n      combineLatestWith(this.staticDashboard$),\n      switchMap(([windowManifest, staticDashboard]) => (!staticDashboard ? of(windowManifest) : of(staticDashboard))),\n      distinctUntilChanged((p, c) => equal(p, c)),\n      map((_wManifest) => {\n        const wManifest = JSON.parse(JSON.stringify(_wManifest));\n        if (wManifest.grid?.layout && wManifest.grid.layout !== DashboardGridLayout.MANUAL) {\n          // Complete with placeholders\n          const size = WidgetPlacementUtils.placesForLayout(wManifest.grid.layout);\n          const places = WidgetPlacementUtils.placementOptions(\n            { type: 'filler', layout: { x: 1, y: 1, width: 1, height: 1 } },\n            wManifest.grid.layout,\n            wManifest.grid\n          );\n          let added = true;\n          while (wManifest.widgets.length < size && added) {\n            added = false;\n            for (let i = 0; i < places.length; i++) {\n              const potential = { ...places[i], options: { index: i } };\n              if (\n                wManifest.widgets\n                  .map((widget: WidgetManifest) => WidgetPlacementUtils.areDisjoint(widget, potential))\n                  .reduce((a: boolean, b: boolean) => a && b, true)\n              ) {\n                wManifest.widgets.push(potential);\n                added = true;\n                break;\n              }\n            }\n          }\n        }\n        return wManifest;\n      })\n    );\n    this.nonFillerWidgets$ = this.windowManifest$.pipe(\n      map((wManifest) => wManifest.widgets.filter((w) => w.type !== 'filler').length)\n    );\n\n    this.subscriptions.add(\n      this.staticDashboard$.subscribe((manifest) => {\n        if (!!manifest) {\n          const getDataActions = (\n            (\n              [\n                ...new Set(\n                  (manifest.widgets ?? ([] as WidgetManifest[]))\n                    .reduce((p, c) => [...p, c], [] as WidgetManifest[])\n                    .map((widManifest) => widManifest.datasource)\n                )\n              ] as (string | string[])[]\n            ).reduce((p, c) => [...p, ...(Array.isArray(c) ? c : [c])], []) as string[]\n          ).map((resultSet) => DashboardActions.assertResultSets({ id: resultSet }));\n\n          getDataActions.forEach((action) => this.store.dispatch(action));\n        }\n      })\n    );\n\n    this.store.dispatch(FieldActions.load());\n    this.store.dispatch(ClassActions.load());\n    this.store.dispatch(CategoryActions.load());\n    this.store.dispatch(ConfigActions.getMapStyles());\n    this.store.dispatch(DataSourceActions.load());\n    this.store.dispatch(RelationTypesActions.load());\n    this.store.dispatch(ConfigActions.loadCustomization());\n\n    this.subscriptions.add(\n      fromEvent(window, 'resize')\n        .pipe(auditTime(100))\n        .subscribe(() => {\n          this.calculateView();\n        })\n    );\n\n    this.subscriptions.add(\n      combineLatest([this.windowManifest$, this.modeEdition$])\n        .pipe(auditTime(100))\n        .subscribe(() => {\n          this.calculateView();\n        })\n    );\n\n    this.subscriptions.add(\n      fromEvent(window, 'keydown')\n        .pipe(\n          map(($event: Event) => $event as KeyboardEvent),\n          filter(($event: KeyboardEvent) => $event.key === 'L' && $event.ctrlKey && $event.shiftKey)\n        )\n        .subscribe(() => this.store.dispatch(DashboardActions.toggleEditionMode({})))\n    );\n\n    this.subscriptions.add(\n      fromEvent(window, 'mouseup').subscribe(() => {\n        this.clearActions();\n      })\n    );\n\n    this.subscriptions.add(\n      this.store.select(ConfigSelectors.breakpoint).subscribe((bp) => {\n        this.breakpoint = bp;\n      })\n    );\n\n    this.subscriptions.add(\n      this.windowManifest$.subscribe((manifest) => {\n        this.manifest = manifest;\n      })\n    );\n\n    this.subscriptions.add(\n      this.store.select(DashboardSelectors.gridLayout).subscribe((layout) => {\n        this.layout = layout;\n      })\n    );\n\n    this.gridTemplateRows$ = combineLatest([this.windowManifest$, this.stacked$]).pipe(\n      map(([manifest, stacked]) =>\n        this.generateRows(\n          stacked && this.manifest\n            ? this.manifest?.widgets.map((wm) => wm.layout.height).reduce((wm1, wm2) => wm1 + wm2, 0)\n            : manifest.grid?.rows ?? DEFAULT_ROWS_NUMBER\n        )\n      )\n    );\n\n    this.gridTemplateColumns$ = combineLatest([this.windowManifest$, this.stacked$]).pipe(\n      map(([manifest, stacked]) => this.generateColumns(stacked ? 1 : manifest.grid?.columns || DEFAULT_COLUMNS_NUMBER))\n    );\n\n    this.backgroundArea$ = combineLatest([this.windowManifest$, this.stacked$]).pipe(\n      map(([manifest, stacked]) =>\n        !stacked\n          ? `3/3/${(manifest.grid?.rows ?? DEFAULT_ROWS_NUMBER) - 1}/${\n              (manifest.grid?.columns ?? DEFAULT_COLUMNS_NUMBER) - 1\n            }`\n          : `3/1/${(manifest.grid?.columns ?? DEFAULT_COLUMNS_NUMBER) - 1}/1`\n      )\n    );\n\n    this.separators$ = this.store\n      .select(DashboardSelectors.gridLayout)\n      .pipe(\n        map((layout) =>\n          layout === DashboardGridLayout.MANUAL\n            ? []\n            : WidgetPlacementUtils.getLayoutSize(layout, { rows: 1, columns: 1 })\n        )\n      );\n  }\n\n  ngAfterViewInit() {\n    this.canCalculateView = true;\n  }\n\n  /***\n   * Manage display\n   */\n\n  calculateView() {\n    if (this.canCalculateView) {\n      let element = this.gridRef.nativeElement;\n      while (element.getBoundingClientRect().height === 0 && !!element.parentElement) {\n        element = element.parentElement;\n      }\n\n      const gridWidth = (<HTMLElement>element).getBoundingClientRect().width;\n      const mobileMode = gridWidth < this.breakpoint;\n      this.stacked$.next(this.dashboardParams.mobileMode && !this.modeEdition);\n      const rows = !this.displayIsStacked\n        ? (!!this.manifest && !!this.manifest.grid && this.manifest.grid.rows) || DEFAULT_ROWS_NUMBER\n        : this.manifest?.widgets.reduce((p: number, c: WidgetManifest) => p + c.layout.height, 0) ?? 1;\n\n      const params = {\n        gridWidth,\n        // Calculate height to parennt the parent's\n        gridHeight: element.getBoundingClientRect().height,\n        gridGap: 1,\n        columns: (!!this.manifest && !!this.manifest.grid && this.manifest.grid.columns) || DEFAULT_COLUMNS_NUMBER,\n        cellHeight: 1,\n        rows,\n        cellWidth: 0,\n        offsetLeft: this.gridRef.nativeElement.offsetLeft,\n        offsetTop: this.gridRef.nativeElement.offsetTop,\n        mobileMode\n      };\n      params.gridGap =\n        params.rows * params.cellHeight < params.gridHeight\n          ? !!this.manifest && !!this.manifest.grid\n            ? this.manifest.grid.gap || DEFAULT_GAP_PX\n            : DEFAULT_GAP_PX\n          : 0;\n      params.cellHeight = (params.gridHeight - (params.rows - 1) * params.gridGap) / params.rows;\n      params.cellWidth = (params.gridWidth - (params.columns - 1) * params.gridGap) / params.columns;\n\n      this.store.dispatch(DashboardActions.updateDashboardParams({ params }));\n\n      this.rows.next(params.rows);\n      this.rowHeight.next(params.cellHeight);\n    }\n  }\n\n  get displayIsStacked() {\n    return this.stacked$.getValue();\n  }\n\n  gridColumn(layout: WidgetLayout): string {\n    if (this.displayIsStacked || !layout) {\n      return '1 / 1';\n    }\n    if (layout.width > 1) {\n      return `${Math.min(layout.x, this.dashboardParams.columns - layout.width + 1)} / ${Math.min(\n        layout.x + layout.width,\n        this.dashboardParams.columns + 1\n      )}`;\n    } else {\n      return `${layout.x}`;\n    }\n  }\n\n  gridRow(layout: WidgetLayout): string {\n    if (!layout) {\n      return '1';\n    }\n    if (this.displayIsStacked) {\n      const previousHeight = this.manifest?.widgets\n        .filter((wm: WidgetManifest) => (wm.layout.y === layout.y && wm.layout.x < layout.x) || wm.layout.y < layout.y)\n        .reduce((p: number, c: WidgetManifest) => p + c.layout.height, 1);\n      return `${previousHeight ?? 1} / ${(previousHeight ?? 1) + layout.height}`;\n    }\n    if (layout.height > 1) {\n      return `${Math.max(1, Math.min(layout.y, this.dashboardParams.rows - layout.height + 1))} / ${Math.min(\n        layout.y + layout.height,\n        this.dashboardParams.rows + 1\n      )}`;\n    } else {\n      return `${layout.y}`;\n    }\n  }\n\n  generateRows(rows: number): string {\n    return Array(rows).fill('1fr').join(' ');\n  }\n\n  generateColumns(columns: number): string {\n    return Array(columns).fill('1fr').join(' ');\n  }\n\n  /***\n   * Direct actions on widgets\n   */\n\n  remove(i: number) {\n    const listWidgetManifests = [...(this.manifest || { widgets: [] }).widgets];\n    listWidgetManifests.splice(i, 1).filter((widget) => widget.type !== 'filler');\n\n    this.store.dispatch(\n      DashboardActions.updateDashboardManifest({\n        manifest: {\n          ...this.manifest,\n          widgets: listWidgetManifests\n        }\n      })\n    );\n  }\n\n  moveInNewWindow(widgetIndex: number, targetIndex: number) {\n    this.store.dispatch(DashboardActions.moveWidget({ widgetIndex, targetIndex }));\n    this.store.dispatch(DashboardActions.toggleEditionMode({ force: false }));\n  }\n\n  maximize(widgetIndex: number) {\n    this.store.dispatch(DashboardActions.maximizeWidget({ widgetIndex }));\n  }\n\n  /***\n   * Manage drag n drop, move, resize\n   */\n\n  prepareModification($event: MouseEvent, indexManifest: number) {\n    this.move.initialX = $event.clientX;\n    this.move.initialY = $event.clientY;\n    this.initialWidgetManifestList = JSON.parse(JSON.stringify((this.manifest || { widgets: [] }).widgets));\n    this.currentlyModifiedManifest = this.initialWidgetManifestList.splice(indexManifest, 1)[0];\n    // console.log('prepare', this.currentlyModifiedManifest, this.initialWidgetManifestList);\n  }\n\n  startResize($event: MouseEvent, indexManifest: number, direction: string) {\n    this.actionType = direction;\n    this.prepareModification($event, indexManifest);\n    // console.log('start resize', this.currentlyModifiedManifest, this.initialWidgetManifestList);\n  }\n\n  dragStart($event: DragEvent, indexManifest: number) {\n    this.actionType = 'move';\n    this.prepareModification($event, indexManifest);\n    DashboardComponent.addTransferManifestMetadata($event, this.currentlyModifiedManifest ?? ({} as WidgetManifest));\n    // console.log('start move', this.currentlyModifiedManifest, this.initialWidgetManifestList);\n  }\n\n  private static addTransferManifestMetadata($event: DragEvent, manifest: WidgetManifest) {\n    if (!!$event && !!$event.dataTransfer && !$event.dataTransfer.types.includes(MIME_TYPE_WIDGET_MANIFEST)) {\n      $event.dataTransfer.setData(MIME_TYPE_WIDGET_MANIFEST, JSON.stringify(manifest));\n      $event.dataTransfer.setData(MIME_TYPE_WIDGET_TYPE + manifest.type, 'unused');\n      // Passing widget size as a mime type, so that we can bypass security for placeholder size at the arrival of the drag\n      $event.dataTransfer.setData(\n        MIME_TYPE_WIDGET_SIZE + `${manifest.layout.width}-${manifest.layout.height}`,\n        'useless' // data is in the mime type\n      );\n    }\n  }\n\n  dragEnter($event: DragEvent, force: boolean = false) {\n    $event.stopPropagation();\n    $event.preventDefault();\n\n    const types = ($event.dataTransfer || { types: [''] }).types;\n\n    if (types.includes(MIME_TYPE_WIDGET_MANIFEST)) {\n      this.store.dispatch(DashboardActions.toggleEditionMode({ force: true }));\n      this.actionType = 'move';\n    }\n  }\n\n  checkForDragEnter($event: MouseEvent) {\n    if (!this.currentlyModifiedManifest) {\n      // create placeholder as a drag entered the component, go into edition mode and move action if it's a widget being dragged\n      const types = (($event as DragEvent).dataTransfer || { types: [''] }).types;\n      if (types.includes(MIME_TYPE_WIDGET_MANIFEST)) {\n        this.actionType = 'move';\n        this.store.dispatch(DashboardActions.toggleEditionMode({ force: true }));\n\n        // On drag enter, we only can put a placeholder, since for security reasons, the content of the data-transfer is not available\n        this.move.initialX = this.dashboardParams.offsetLeft;\n        this.move.initialY = this.dashboardParams.offsetTop;\n        const target = this.getTarget($event, false);\n        this.currentlyModifiedManifest = {\n          type: 'placeholder',\n          layout: { x: target?.x ?? 0, y: target?.y ?? 0, width: 1, height: 1 }\n        };\n        this.initialWidgetManifestList = JSON.parse(JSON.stringify((this.manifest || { widgets: [] }).widgets));\n        // console.log('create placeholder', this.currentlyModifiedManifest, this.initialWidgetManifestList);\n\n        // We passed widget size as a mimetype so that we can still read it without security issues\n        const widgetSizeMimeType = types.find((type) => type.includes(MIME_TYPE_WIDGET_SIZE));\n        if (!!widgetSizeMimeType) {\n          const [_, _2, w, h] = widgetSizeMimeType.split('-');\n          this.currentlyModifiedManifest.layout.width = parseInt(w, 10);\n          this.currentlyModifiedManifest.layout.height = parseInt(h, 10);\n        } else {\n          // Use grid size\n          const layout = WidgetPlacementUtils.getLayoutSize(this.layout, this.dashboardParams)[\n            this.initialWidgetManifestList.length\n          ];\n          this.currentlyModifiedManifest.layout.width = layout.width;\n          this.currentlyModifiedManifest.layout.height = layout.height;\n        }\n\n        // We passed the type as a header name so that we can still access it without security issues\n        const widgetType = types.find((type) => type.includes(MIME_TYPE_WIDGET_TYPE));\n        if (!!widgetType) {\n          const [_, _2, type] = widgetType.split('-');\n          this.currentlyModifiedManifest.type = type;\n        }\n\n        // Reset initial position for the one we just calculated, so we can continue properly move the widget\n        this.move.initialX = $event.pageX;\n        this.move.initialY = $event.pageY;\n      }\n    }\n  }\n\n  getTarget($event: MouseEvent, optimize = true) {\n    const dX = $event.pageX - this.move.initialX;\n    const dY = $event.pageY - this.move.initialY;\n\n    const target = {\n      x:\n        dX === 0\n          ? 0\n          : Math.round(\n              ((dX / Math.abs(dX)) * (Math.abs(dX) - 0.5 * this.dashboardParams.cellWidth)) /\n                (this.dashboardParams.cellWidth + this.dashboardParams.gridGap)\n            ),\n      y:\n        dY === 0\n          ? 0\n          : Math.round(\n              ((dY / Math.abs(dY)) * (Math.abs(dY) - 0.5 * this.dashboardParams.cellHeight)) /\n                (this.dashboardParams.cellHeight + this.dashboardParams.gridGap)\n            )\n    };\n\n    if (!optimize || target.x !== this.move.previousX || target.y !== this.move.previousY) {\n      this.move.previousX = target.x;\n      this.move.previousY = target.y;\n      return target;\n    }\n\n    return null;\n  }\n\n  movingMouse($event: MouseEvent, optimize = true) {\n    if (this.modeEdition && !!this.actionType) {\n      const target = this.getTarget($event, optimize);\n      if (target !== null) {\n        this.checkForDragEnter($event);\n        const candidateWidget = JSON.parse(JSON.stringify(this.currentlyModifiedManifest));\n\n        switch (this.actionType) {\n          case 'resize-nw':\n            if (candidateWidget.layout.x + target.x > 0 && candidateWidget.layout.height - target.y > 0) {\n              candidateWidget.layout.x += target.x;\n              candidateWidget.layout.y += target.y;\n              candidateWidget.layout.width -= target.x;\n              candidateWidget.layout.height -= target.y;\n            }\n            break;\n          case 'resize-sw':\n            if (candidateWidget.layout.width - target.x > 0) {\n              candidateWidget.layout.x += target.x;\n              candidateWidget.layout.width -= target.x;\n              candidateWidget.layout.height += target.y;\n            }\n            break;\n          case 'resize-ne':\n            if (candidateWidget.layout.height - target.y > 0) {\n              candidateWidget.layout.y += target.y;\n              candidateWidget.layout.width += target.x;\n              candidateWidget.layout.height -= target.y;\n            }\n            break;\n          case 'resize-se':\n            candidateWidget.layout.width += target.x;\n            candidateWidget.layout.height += target.y;\n            break;\n          case 'move':\n            const currentMaxX =\n              Math.max(\n                this.manifest?.grid?.columns ?? DEFAULT_COLUMNS_NUMBER,\n                ...(this.manifest?.widgets ?? []).map((w) => w.layout.width + w.layout.x)\n              ) -\n              candidateWidget.layout.width +\n              1;\n            candidateWidget.layout.x = Math.max(0, Math.min(candidateWidget.layout.x + target.x, currentMaxX));\n\n            const currentMaxY =\n              Math.max(\n                this.manifest?.grid?.rows ?? DEFAULT_ROWS_NUMBER,\n                ...(this.manifest?.widgets ?? []).map((w) => w.layout.height + w.layout.y)\n              ) -\n              candidateWidget.layout.height +\n              1;\n            candidateWidget.layout.y = Math.max(0, Math.min(candidateWidget.layout.y + target.y, currentMaxY));\n            break;\n        }\n\n        this.store.dispatch(\n          DashboardActions.updateDashboardManifest({\n            manifest: solveCollisions(\n              candidateWidget,\n              this.initialWidgetManifestList,\n              this.manifest ?? ({} as DashboardManifest)\n            )\n          })\n        );\n      }\n    }\n  }\n\n  dragMove($event: DragEvent) {\n    $event.stopPropagation();\n    $event.preventDefault();\n\n    this.movingMouse($event);\n  }\n\n  dragLeave($event: DragEvent) {\n    $event.stopPropagation();\n    $event.preventDefault();\n\n    // @ts-ignore\n    if ($event.currentTarget.contains($event.relatedTarget)) {\n      return;\n    }\n\n    const types = ($event.dataTransfer || { types: [''] }).types;\n    if (types.includes(MIME_TYPE_WIDGET_MANIFEST)) {\n      // As the drag is leaving the window, delete the widget from it, and stop edition mode\n      if (!!$event && !!$event.dataTransfer) {\n        this.store.dispatch(\n          DashboardActions.updateDashboardManifest({\n            manifest: {\n              ...this.manifest,\n              widgets: this.initialWidgetManifestList\n            }\n          })\n        );\n        this.clearActions();\n      }\n    }\n  }\n\n  dropping($event: DragEvent) {\n    $event.preventDefault();\n    $event.stopPropagation();\n\n    // @ts-ignore\n    if (!!$event && !!$event.dataTransfer) {\n      if ($event.dataTransfer.types.includes(MIME_TYPE_WIDGET_MANIFEST)) {\n        // Rearrange drop to correct size, type, ..., as a placeholder already been added to manifest by dragenter event\n        const dataTransferManifest = JSON.parse(\n          $event.dataTransfer.getData(MIME_TYPE_WIDGET_MANIFEST)\n        ) as WidgetManifest;\n\n        this.currentlyModifiedManifest = {\n          ...dataTransferManifest,\n          layout: this.currentlyModifiedManifest?.layout ?? ({} as WidgetLayout)\n        };\n\n        this.movingMouse($event, false);\n\n        this.store.dispatch(DashboardActions.assertResultSets({}));\n      }\n\n      this.clearActions();\n    }\n  }\n\n  clearActions() {\n    this.actionType = undefined;\n    this.move.initialX = 0;\n    this.move.initialY = 0;\n    this.move.previousX = -1;\n    this.move.previousY = -1;\n    this.currentlyModifiedManifest = null;\n    this.initialWidgetManifestList = [];\n  }\n\n  /***\n   * Manage other kinds of drops (inside widgets)\n   */\n  droppingInWidget($event: DragEvent, index: number) {\n    if (!!$event && !!$event.dataTransfer) {\n      if ($event.dataTransfer.types.includes(MIME_TYPE_RESULTSET)) {\n        const listWidgetManifests = [...(this.manifest || { widgets: [] }).widgets];\n\n        const resultSetName = $event.dataTransfer.getData(MIME_TYPE_RESULTSET);\n        const currentResultSet = (\n          Array.isArray(listWidgetManifests[index].datasource)\n            ? listWidgetManifests[index].datasource\n            : [listWidgetManifests[index].datasource]\n        ) as string[];\n        const cumulative = $event.shiftKey;\n        const newResultSet = cumulative ? [...currentResultSet, resultSetName] : resultSetName;\n\n        listWidgetManifests[index] = {\n          ...listWidgetManifests[index],\n          datasource: newResultSet\n        };\n\n        this.store.dispatch(\n          DashboardActions.updateDashboardManifest({\n            manifest: {\n              ...this.manifest,\n              widgets: listWidgetManifests\n            }\n          })\n        );\n        this.store.dispatch(DashboardActions.assertResultSets({}));\n        $event.preventDefault();\n        $event.stopPropagation();\n      }\n    }\n  }\n\n  toggleRemoveConfirm($event?: MouseEvent, index?: number) {\n    if (!this.confirmRemoveRef) {\n      this.indexForRemoval = index ?? -1;\n      this.confirmRemoveRef = this.overlay.create(\n        new OverlayConfig({\n          hasBackdrop: true,\n          panelClass: ['o-modal-wrapper'],\n          backdropClass: 'backdrop'\n        })\n      );\n      this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name + '-modal' }));\n      this.confirmRemoveRef.backdropClick().subscribe((_) => this.toggleRemoveConfirm());\n      this.confirmRemoveRef.attach(new TemplatePortal(this.templateModal, this.viewContainerRef));\n      if ($event) {\n        const panel = document.querySelector('div.o-modal-wrapper') as HTMLDivElement;\n        if (!!panel) {\n          panel.style.left = Math.max(0, Math.min(window.innerWidth - panel.clientWidth, $event.clientX - 30)) + 'px';\n          panel.style.top = Math.max(0, Math.min(window.innerHeight - panel.clientHeight, $event.clientY - 10)) + 'px';\n        }\n      }\n    } else {\n      this.confirmRemoveRef.dispose();\n      this.confirmRemoveRef = undefined;\n      this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-modal' }));\n    }\n  }\n\n  confirmRemove() {\n    this.remove(this.indexForRemoval);\n    this.cancelRemoveConfirm();\n  }\n\n  cancelRemoveConfirm() {\n    this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-modal' }));\n    this.confirmRemoveRef?.dispose();\n    this.confirmRemoveRef = undefined;\n  }\n\n  trackWidgets(index: number, widgetManifest: WidgetManifest) {\n    return widgetManifest.type + '-' + widgetManifest.datasource;\n  }\n\n  updateInstance(widgetIndex: number, $event: BaseWidgetComponent) {\n    this.widgetsInstances[widgetIndex] = $event;\n  }\n}\n","<div\n  class=\"o-dashboard-grid\"\n  [style.gridTemplateColumns]=\"gridTemplateColumns$ | async\"\n  [style.gridTemplateRows]=\"gridTemplateRows$ | async\"\n  [style.gridGap]=\"dashboardParams.gridGap + 'px'\"\n  #grid\n  (mousemove)=\"movingMouse($event)\"\n  (drop)=\"dropping($event)\"\n  (dragover)=\"dragMove($event)\"\n  (dragleave)=\"dragLeave($event)\"\n  (dragenter)=\"dragEnter($event)\"\n>\n  <ng-container\n    *ngFor=\"\n      let widgetManifest of (windowManifest$ | async)?.widgets || [];\n      let widgetIndex = index;\n      trackBy: trackWidgets\n    \"\n  >\n    <div\n      class=\"o-dashboard-widget\"\n      [class.-edited]=\"modeEdition\"\n      [style.gridColumn]=\"gridColumn(widgetManifest.layout)\"\n      [style.gridRow]=\"gridRow(widgetManifest.layout)\"\n      (drop)=\"droppingInWidget($event, widgetIndex)\"\n    >\n      <ng-container *ngIf=\"modeEdition\">\n        <div class=\"resize nw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-nw')\">\n          <yap-icon iconSvg=\"north_west\" [animation]=\"false\"></yap-icon>\n        </div>\n        <div class=\"resize sw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-sw')\">\n          <yap-icon iconSvg=\"south_west\" [animation]=\"false\"></yap-icon>\n        </div>\n        <div class=\"resize ne-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-ne')\">\n          <yap-icon iconSvg=\"north_east\" [animation]=\"false\"></yap-icon>\n        </div>\n        <div class=\"resize se-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-se')\">\n          <yap-icon iconSvg=\"south_east\" [animation]=\"false\"></yap-icon>\n        </div>\n        <div class=\"resize delete\" (mousedown)=\"toggleRemoveConfirm($event, widgetIndex)\">\n          <yap-icon iconSvg=\"close\" [animation]=\"false\"></yap-icon>\n        </div>\n        <div class=\"move\" draggable=\"true\" (dragstart)=\"dragStart($event, widgetIndex)\">\n          <div class=\"move-inside move-{{ widgetManifest.type }}\">\n            <span>{{ widgetManifest.title ?? ('@yap.toolbox.' + widgetManifest.type | i18n) }}</span>\n          </div>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"!modeEdition\">\n        <yap-widget-instanciator\n          [staticManifest]=\"widgetManifest\"\n          [widgetIndex]=\"widgetIndex\"\n          (widgetInstance)=\"updateInstance(widgetIndex, $event)\"\n        ></yap-widget-instanciator>\n      </ng-container>\n    </div>\n  </ng-container>\n\n  <ng-container *ngIf=\"(nonFillerWidgets$ | async) === 0\">\n    <div class=\"no-widget\" [style.grid-area]=\"backgroundArea$ | async\">\n      <img\n        class=\"no-widget__search\"\n        src=\"../../../assets/svgs/yap_recherche.svg\"\n        alt=\"{{\n          (layout === DashboardGridLayout.MANUAL ? '@yap.widget.target.none_manual' : '@yap.widget.target.none_auto')\n            | i18n\n        }} {{ backgroundArea$ | async }}\"\n      />\n      <span class=\"no-widget__text\">{{\n        (layout === DashboardGridLayout.MANUAL ? '@yap.widget.target.none_manual' : '@yap.widget.target.none_auto')\n          | i18n\n      }}</span>\n    </div>\n  </ng-container>\n</div>\n<yap-context-menu></yap-context-menu>\n\n<ng-template #templateModal>\n  <div class=\"o-modal\">\n    <div class=\"o-modal__top\">\n      <div class=\"o-modal__top__title\">\n        <h2 class=\"a-h2\" id=\"dialog_title\">\n          {{ '@yap.widget.modalTitle' | i18n }}\n        </h2>\n      </div>\n      <div class=\"o-modal__top__close\">\n        <button class=\"a-btn a-btn--icon-only\" (click)=\"cancelRemoveConfirm()\">\n          <yap-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.toolbox.close' | i18n }}</span>\n        </button>\n      </div>\n    </div>\n    <div class=\"m-btn-group\">\n      <button type=\"button\" (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n        {{ '@yap.toolbox.manifest.close' | i18n }}\n      </button>\n      <button type=\"submit\" (click)=\"confirmRemove()\" class=\"a-btn a-btn--primary\">\n        {{ '@yap.toolbox.manifest.validate' | i18n }}\n      </button>\n    </div>\n  </div>\n</ng-template>\n","export enum Operation {\n  NONE = 'none',\n  COUNT = 'count',\n  SUM = 'sum',\n  DISTINCT = 'cardinality',\n  AVERAGE = 'avg',\n  MEDIAN = 'median',\n  Q1 = 'q1',\n  Q3 = 'q3',\n  MIN = 'min',\n  MAX = 'max'\n}\n\nexport enum GraphType {\n  AREA = 'area-default',\n  AREA_WITH_LINES_AND_POINTS = 'area-with-lines-and-points',\n  BAR = 'bar-default',\n  CIRCULAR = 'arc-default',\n  CURVE = 'line-default',\n  CURVE_WITH_POINTS = 'line-with-points',\n  DONUT = 'arc-donut',\n  HISTOGRAM = 'bar-histogram',\n  POINTS = 'point-default'\n}\n\nexport interface AtLimit {\n  at: number;\n  others: boolean;\n  order: 'asc' | 'desc';\n  isTimeLimit: false;\n}\n\nexport interface TimeLimit {\n  interval: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'quarter' | 'year';\n  isTimeLimit: true;\n}\n\nexport interface ChartAggregatedWidgetOptions {\n  abscissa: {\n    label: string;\n    attribute: string;\n    keep0: boolean;\n    limit?: AtLimit | TimeLimit;\n  };\n  ordinate: {\n    operation: Operation;\n    label: string;\n    attribute?: string;\n    keep0: boolean;\n  };\n  groupBy?: {\n    attribute: string;\n    color: string;\n  };\n  graph: {\n    donutSize?: number;\n    tooltip?: boolean;\n    title?: string;\n    type: GraphType;\n    stacked?: boolean;\n    legend?: boolean;\n  };\n  additionalSpec?: any;\n}\n","import { BehaviorSubject } from 'rxjs';\n\nexport interface MapWidgetOptions {\n  center?: number[];\n  zoom?: {\n    start: number;\n    min: number;\n    max: number;\n  };\n  style: string;\n  layers?: MapWidgetLayerOptions[];\n  fit?: boolean;\n  attributions?: boolean;\n  tooltipMode?: TooltipMode;\n}\n\nexport type MapWidgetLayerOptions =\n  | MapWidgetHeatMapLayerOptions\n  | MapWidgetMarkerLayerOptions\n  | MapWidgetBubbleLayerOptions\n  | MapWidgetRelationLayerOptions\n  | MapWMSLayerLayerOptions\n  | MapFeatureLayerOptions\n  | MapVectorTileLayerOptions\n  | MapRasterTileLayerOptions\n  | MapGeoServerLayerOptions\n  | MapWMTSLayerLayerOptions\n  | MapWidgetGeometryLayerOptions;\n\nexport interface BaseWidgetMapLayerOptions {\n  type: string;\n  attribution?: string;\n  title?: string;\n  minZoom?: number;\n  maxZoom?: number;\n  opacity?: number;\n}\n\nexport interface MapWidgetHeatMapLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'heatmap';\n  attribute: string;\n  classes?: string[];\n  intensityAttribute?: string;\n  intensityAsc?: boolean;\n  radius?: number;\n}\n\nexport interface MapWidgetGeometryLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'point' | 'line' | 'polygon' | 'multi-line' | 'multi-polygon';\n  attribute: string;\n  classes?: string[];\n}\n\nexport interface MapWidgetMarkerLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'marker';\n  attribute: string;\n  classes?: string[];\n  clustered?: boolean;\n  clusterDistance?: number;\n}\n\nexport interface MapWidgetBubbleLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'bubble';\n  attribute: string;\n  intensityAttribute?: string;\n  intensityAsc?: boolean;\n  radiusFactor?: number;\n  radius?: number;\n  classes?: string[];\n}\n\nexport interface MapWidgetRelationLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'relation';\n}\n\nexport interface MapWMSLayerLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'wms';\n  url: string;\n  paramLayer: string;\n  paramTiled: boolean;\n  oClass: string;\n}\n\nexport interface MapWMTSLayerLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'wmts';\n  url: string;\n  paramLayer: string;\n  matrixSet: string;\n  style: string;\n}\n\nexport interface MapFeatureLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'featurelayer';\n  url: string;\n}\n\nexport interface MapVectorTileLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'vectortile';\n  url: string;\n}\n\nexport interface MapRasterTileLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'rastertile';\n  url: string;\n}\n\nexport interface MapGeoServerLayerOptions extends BaseWidgetMapLayerOptions {\n  type: 'geoserver';\n  key: string;\n  paramLayer: string;\n  paramTiled: boolean;\n  url: string;\n  oClass: string;\n}\n\nexport enum TooltipMode {\n  HOVER = 'hover',\n  CLICK = 'click',\n  NONE = 'none'\n}\n\nexport const widgetMapConfig = {\n  actions$: new BehaviorSubject<('click' | 'lasso' | 'rectangle' | 'zoom' | 'move' | 'export' | 'upload')[]>([\n    'move',\n    'click',\n    'lasso',\n    'rectangle',\n    'zoom',\n    'export',\n    'upload'\n  ])\n};\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject } from 'rxjs';\nimport { MIME_TYPE_WIDGET_MANIFEST, MIME_TYPE_WIDGET_TYPE } from '../../dashboard/components/dashboard.component';\nimport { SubscriptionnerDirective } from '../../dashboard/components/subscriptionner.directive';\nimport { DashboardSelectors } from '../../dashboard/store/dashboard.selectors';\nimport { WidgetLayout, WidgetManifest } from '../model/manifest.interface';\nimport { GraphType } from '../model/widget-aggregated-chart-manifest.interface';\nimport { MarkSubType, MarkType } from '../model/widget-chart-manifest.interface';\nimport { TooltipMode } from '../model/widget-map-manifest.interface';\nimport { ConfigSelectors } from '../store/config/config.selectors';\n\nexport const USE_CURRENT_RESULTSET = 'use-current-resultset';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ToolboxManifestService extends SubscriptionnerDirective {\n  initialManifests$ = new BehaviorSubject<{ [key: string]: WidgetManifest }>({\n    heatmap: {\n      type: 'map',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: {\n        fit: true,\n        layers: [\n          {\n            type: 'heatmap'\n          }\n        ],\n        tooltipMode: TooltipMode.HOVER\n      },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    bubblemap: {\n      type: 'map',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: {\n        fit: true,\n        layers: [\n          {\n            type: 'bubble'\n          }\n        ],\n        tooltipMode: TooltipMode.HOVER\n      },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    markermap: {\n      type: 'map',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: {\n        fit: true,\n        layers: [\n          {\n            type: 'marker'\n          }\n        ],\n        tooltipMode: TooltipMode.HOVER\n      },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    table: {\n      type: 'table',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: {},\n      datasource: USE_CURRENT_RESULTSET\n    },\n    barchart: {\n      type: 'chart',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { graph: { type: GraphType.BAR } },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    histogram: {\n      type: 'chart',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { graph: { type: GraphType.HISTOGRAM } },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    linechart: {\n      type: 'chart',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { graph: { type: GraphType.CURVE } },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    pointchart: {\n      type: 'chart',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { graph: { type: GraphType.POINTS } },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    areachart: {\n      type: 'chart',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { graph: { type: GraphType.AREA } },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    arcchart: {\n      type: 'chart',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { graph: { type: GraphType.CIRCULAR } },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    barchartLegacy: {\n      type: 'chart-legacy',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { type: MarkType.BAR, subType: MarkSubType.DEFAULT },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    histogramLegacy: {\n      type: 'chart-legacy',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { type: MarkType.BAR, subType: MarkSubType.HISTOGRAM },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    linechartLegacy: {\n      type: 'chart-legacy',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { type: MarkType.LINE, subType: MarkSubType.DEFAULT },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    pointchartLegacy: {\n      type: 'chart-legacy',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { type: MarkType.POINT, subType: MarkSubType.DEFAULT },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    areachartLegacy: {\n      type: 'chart-legacy',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { type: MarkType.AREA, subType: MarkSubType.DEFAULT },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    arcchartLegacy: {\n      type: 'chart-legacy',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { type: MarkType.ARC, subType: MarkSubType.DEFAULT },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    radarchartLegacy: {\n      type: 'chart-legacy',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { type: MarkType.RADAR, subType: MarkSubType.DEFAULT },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    circlechartLegacy: {\n      type: 'chart-legacy',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: { type: MarkType.CIRCLE_PACK, subType: MarkSubType.DEFAULT },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    detail: {\n      type: 'detail',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: {}\n    },\n    iframe: {\n      type: 'iframe',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: {}\n    },\n    graph: {\n      type: 'graph',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: {\n        miniMap: true\n      },\n      datasource: USE_CURRENT_RESULTSET\n    },\n    tile: {\n      type: 'tile',\n      layout: {\n        x: 1,\n        y: 1,\n        height: 2,\n        width: 3\n      },\n      options: {},\n      datasource: USE_CURRENT_RESULTSET\n    }\n  });\n\n  currentResultSet: string[] = [];\n\n  constructor(private store: Store<any>) {\n    super();\n    this.subscriptions.add(\n      this.store.select(DashboardSelectors.defaultDatasourceNames).subscribe((rsName) => {\n        this.currentResultSet = rsName;\n      })\n    );\n\n    this.subscriptions.add(\n      this.store.select(ConfigSelectors.catalog).subscribe((widgets) => {\n        widgets.forEach((widget) => this.set(widget.id, { ...JSON.parse(widget.content), title: widget.name }));\n      })\n    );\n  }\n\n  get(id: string, instanciate = true): WidgetManifest {\n    const manifest = this.initialManifests$.getValue()[id];\n    if (!manifest) {\n      return manifest;\n    }\n    const copy = JSON.parse(JSON.stringify(manifest));\n    if (instanciate && !!copy && copy.datasource === USE_CURRENT_RESULTSET) {\n      copy.datasource = [];\n    }\n    return copy;\n  }\n\n  set(id: string, manifest: WidgetManifest): void {\n    this.initialManifests$.next({ ...this.initialManifests$.getValue(), [id]: manifest });\n  }\n\n  setAllLayouts(layout: WidgetLayout): void {\n    Object.keys(this.initialManifests$.getValue()).forEach(\n      (key) => (this.initialManifests$.getValue()[key].layout = JSON.parse(JSON.stringify(layout)))\n    );\n  }\n\n  isModel(id: string) {\n    const manifest = this.get(id, false);\n    return !!manifest && manifest.datasource === USE_CURRENT_RESULTSET;\n  }\n\n  dataTransfer($event: DragEvent, id: string) {\n    if (!!$event && !!$event.dataTransfer && !$event.dataTransfer.types.includes(MIME_TYPE_WIDGET_MANIFEST)) {\n      const manifest = this.get(id);\n\n      $event.dataTransfer.dropEffect = 'copy';\n      $event.dataTransfer.effectAllowed = 'copy';\n      if (!this.isModel(id)) {\n        manifest.header = { datasourceSelection: false };\n      }\n\n      $event.dataTransfer.setData(MIME_TYPE_WIDGET_MANIFEST, JSON.stringify(manifest));\n      $event.dataTransfer.setData(MIME_TYPE_WIDGET_TYPE + manifest.type, 'unused');\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { WidgetFactoryService } from '../../dashboard/components/widgets/widget-instanciator/widget-factory.service';\nimport { DashboardActions } from '../../dashboard/store/dashboard.actions';\nimport { YapVisibility } from '../components/share/share.model';\nimport { Widget } from '../model/widget.interface';\nimport { ConfigActions } from '../store/config/config.actions';\nimport { ConfigSelectors } from '../store/config/config.selectors';\nimport { DEFAULT_ICON_URL } from '../store/config/icon-definitions.interface';\nimport { ToolboxManifestService } from './toolbox-manifest.service';\n\nexport type WidgetDescriptionBase = {\n  icon: string;\n  label: string;\n};\n\nexport type WidgetDescriptionMenu = WidgetDescriptionBase & {\n  opened: boolean;\n  sub: CatalogEntry[];\n};\n\nexport type CatalogEntry = WidgetDescriptionBase & {\n  category?: string;\n  type: string;\n  description?: string;\n  isCustom?: boolean;\n  visibility?: YapVisibility;\n  cover?: boolean;\n};\n\nexport const defaultMenuStructure: WidgetDescriptionMenu[] = [\n  {\n    icon: 'share_location',\n    label: '@yap.toolbox.sub.map',\n    opened: false,\n    sub: [\n      { icon: 'bubble-chart-line', label: '@yap.toolbox.heatmap', type: 'heatmap' },\n      { icon: 'bulles', label: '@yap.toolbox.bubblemap', type: 'bubblemap' },\n      { icon: 'place', label: '@yap.toolbox.markermap', type: 'markermap' }\n    ]\n  },\n  {\n    icon: 'show_chart',\n    label: '@yap.toolbox.sub.chart',\n    opened: false,\n    sub: [\n      { icon: 'bar_chart', label: '@yap.toolbox.barchart', type: 'barchart' },\n      { icon: 'bar_chart', label: '@yap.toolbox.histogram', type: 'histogram' },\n      { icon: 'show_chart', label: '@yap.toolbox.linechart', type: 'linechart' },\n      { icon: 'auto_graph', label: '@yap.toolbox.pointchart', type: 'pointchart' },\n      { icon: 'area_chart', label: '@yap.toolbox.areachart', type: 'areachart' },\n      { icon: 'donut_large', label: '@yap.toolbox.arcchart', type: 'arcchart' }\n    ]\n  },\n  {\n    icon: 'show_chart',\n    label: '@yap.toolbox.sub.chart',\n    opened: false,\n    sub: [\n      { icon: 'bar_chart', label: '@yap.toolbox.barchart', type: 'barchartLegacy' },\n      { icon: 'bar_chart', label: '@yap.toolbox.histogram', type: 'histogramLegacy' },\n      { icon: 'show_chart', label: '@yap.toolbox.linechart', type: 'linechartLegacy' },\n      { icon: 'auto_graph', label: '@yap.toolbox.pointchart', type: 'pointchartLegacy' },\n      { icon: 'area_chart', label: '@yap.toolbox.areachart', type: 'areachartLegacy' },\n      { icon: 'donut_large', label: '@yap.toolbox.arcchart', type: 'arcchartLegacy' },\n      { icon: 'radar_chart', label: '@yap.toolbox.radarchart', type: 'radarchartLegacy' },\n      { icon: 'bubble-chart-line', label: '@yap.toolbox.circlechart', type: 'circlechartLegacy' }\n    ]\n  },\n  {\n    icon: 'toc',\n    label: '@yap.toolbox.sub.other',\n    opened: false,\n    sub: [\n      { icon: 'table_chart', label: '@yap.toolbox.table', type: 'table' },\n      { icon: 'toc', label: '@yap.toolbox.detail', type: 'detail' },\n      { icon: 'graph', label: '@yap.toolbox.graph', type: 'graph' },\n      { icon: 'settings_applications', label: '@yap.toolbox.iframe', type: 'iframe' },\n      { icon: 'tile', label: '@yap.toolbox.tile', type: 'tile' }\n    ]\n  }\n];\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ToolboxMenuService {\n  _menuStructure$ = new BehaviorSubject<WidgetDescriptionMenu[]>(defaultMenuStructure);\n  menuStructure$: Observable<WidgetDescriptionMenu[]>;\n  menuList$: Observable<CatalogEntry[]>;\n  types$: Observable<{ icon: string; label: string; type: string }[]>;\n\n  constructor(\n    private widgetFactoryService: WidgetFactoryService,\n    private toolboxManifestService: ToolboxManifestService,\n    private store: Store\n  ) {\n    this.menuStructure$ = combineLatest([\n      this._menuStructure$,\n      this.widgetFactoryService.reference$,\n      this.store.select(ConfigSelectors.catalog)\n    ]).pipe(\n      map(([menuStructure, reference, catalog]) =>\n        // Generic widgets\n        menuStructure\n          .filter((menu) => menu.sub.find((sub) => reference[this.toolboxManifestService.get(sub.type).type]))\n          .map(\n            (menu) =>\n              ({\n                ...menu,\n                sub: menu.sub\n                  .filter((sub) => reference[this.toolboxManifestService.get(sub.type).type])\n                  .map((entry) => ({ ...entry, icon: 'assets/svgs/' + entry.icon + '.svg' })) as CatalogEntry[]\n              } as WidgetDescriptionMenu)\n          )\n          // User defined widget configurations\n          .concat({\n            icon: 'library_add',\n            label: '@yap.toolbox.catalog.title',\n            opened: false,\n            sub: [\n              ...catalog.map((widget) => ({\n                icon: widget.image,\n                label: widget.name,\n                type: widget.id,\n                description: widget.description,\n                isCustom: true,\n                visibility: widget.visibility,\n                cover: widget.cover\n              }))\n            ]\n          })\n      )\n    );\n\n    this.menuList$ = this.menuStructure$.pipe(\n      map((menuDescription) =>\n        menuDescription\n          .map((menu) =>\n            menu.sub.map((subMenu) => ({\n              ...subMenu,\n              category: menu.label\n            }))\n          )\n          .reduce((p, c) => [...p, ...c], [])\n      )\n    );\n\n    this.types$ = combineLatest([this.toolboxManifestService.initialManifests$, this.menuStructure$]).pipe(\n      map(([manifests, menuStructure]) => {\n        const types = [...new Set(Object.values(manifests).map((manifest) => manifest.type))];\n        return types.map((type) => {\n          const matchingMenu = menuStructure.find(\n            (menu) => menu.label.replace('@yap.toolbox.sub.', '').indexOf(type) >= 0\n          );\n          if (!!matchingMenu) {\n            return { type, label: matchingMenu.label, icon: matchingMenu.icon };\n          }\n          const matchingSubMenu = menuStructure\n            .map((menu) => menu.sub.find((sub) => sub.label.replace('@yap.toolbox.', '').indexOf(type) >= 0))\n            .filter((matching) => !!matching)[0];\n          if (!!matchingSubMenu) {\n            return {\n              type,\n              label: matchingSubMenu.label,\n              icon: matchingSubMenu.icon.replace('assets/svgs/', '').replace(/.svg$/, '')\n            };\n          }\n          return { type, label: type, icon: DEFAULT_ICON_URL };\n        });\n      })\n    );\n  }\n\n  addMenu(icon: string, label: string) {\n    if (!this._menuStructure$.getValue().find((menu) => menu.label === label)) {\n      this._menuStructure$.next(this._menuStructure$.getValue().concat({ icon, label, opened: false, sub: [] }));\n    }\n  }\n\n  addWidget(menuLabel: string, icon: string, label: string, type: string) {\n    const menu = this._menuStructure$.getValue().find((menu) => menu.label === menuLabel);\n    if (!menu) {\n      console.error(`Menu with label ${menuLabel} has not been found`);\n    } else {\n      menu.sub.push({ icon, label, type });\n    }\n  }\n\n  setMenuStructure(structure: WidgetDescriptionMenu[]) {\n    this._menuStructure$.next(structure);\n  }\n\n  addToCatalog(widget: Widget, index: number) {\n    if (this.isValidForCatalog(widget.name)) {\n      const manifest = JSON.parse(widget.content);\n      this.store.dispatch(DashboardActions.updateWidgetManifest({ manifest, index }));\n      this.store.dispatch(ConfigActions.saveWidget({ widget }));\n      this.toolboxManifestService.set(widget.id, manifest);\n    } else {\n      console.error(`Trying to add existing type \"${name}\"`);\n    }\n  }\n\n  isValidForCatalog(name: string) {\n    return !!name && name.length > 3 && !this.toolboxManifestService.get(name);\n  }\n}\n","import { FieldType } from '../store/field/field.interface';\n\nexport interface Item {\n  id: string;\n  oClass: string;\n  metadata?: {\n    [key: string]: MetadataType;\n  };\n  attributes: {\n    [key: string]: AttributeSimpleValue | AttributeMultipleValue;\n  };\n}\n\nexport const baseItemProperties = ['id', 'oClass', 'metadata'];\n\nexport interface AttributeMultipleValue {\n  type: 'MULTI';\n  values: AttributeSimpleValue[];\n}\n\nexport interface AttributeSimpleValue {\n  type: 'VALUE';\n  value: ValueType;\n  metadata?: {\n    [key: string]: MetadataType;\n  };\n  visible: boolean;\n}\n\nexport type ValueType = string | number | PointValue | MultipointValue | MultiMultipointValue;\n\nexport type PointValue = {\n  type: FieldType.POINT;\n  coordinates: [number, number];\n};\nexport type MultipointValue = {\n  type: FieldType.MULTIPOINT | FieldType.LINE | FieldType.POLYGON;\n  coordinates: [number, number][];\n};\nexport type MultiMultipointValue = {\n  type: FieldType.MULTILINE | FieldType.MULTIPOLYGON | FieldType.GEOMETRYCOLLECTION;\n  coordinates: [number, number][][];\n};\n\nexport type MetadataType = string | number;\n","// File with all Interface relative to the search model Api\n\nimport { NamedQueryTypes } from '../store/data-source/named-query-types.model';\n\nexport type ConditionType = 'AND' | 'OR' | 'ATTRIBUTE';\nexport type ValueDataType = string | number;\nexport type OperatorType =\n  | 'EQUALS'\n  | 'CONTAINS'\n  | 'START_WITH'\n  | 'END_WITH'\n  | 'GREATER_THAN'\n  | 'LOWER_THAN'\n  | 'INSIDE'\n  | 'OUTSIDE';\n\nexport interface Condition {\n  type: ConditionType;\n  attribute?: string;\n  value?: ValueDataType;\n  upperValue?: ValueDataType;\n  operator?: OperatorType;\n  composed?: Array<Condition>;\n}\n\nexport interface NormalizedCondition {\n  id: string;\n  type: ConditionType;\n  parentId: string;\n  attribute?: string;\n  value?: ValueDataType;\n  upperValue?: ValueDataType;\n  operator?: OperatorType;\n  composed?: string[];\n  pattern?: string;\n  isDate?: boolean;\n}\n\nexport interface MonoClassConditions {\n  masterId: string | null;\n  parentId?: string;\n  ids: string[];\n  entities: {\n    [key: string]: NormalizedCondition;\n  };\n}\n\nexport interface MonoClassSearchPayload {\n  type: NamedQueryTypes.MONO_CLASS;\n  oClass: string;\n  icon?: string;\n  condition: Condition;\n  sort: {\n    attribute: string;\n    direction: string;\n  };\n}\n\nexport interface OperatorOption {\n  type: 'number' | 'string' | 'date';\n  operator: OperatorType;\n  translation: string;\n  twoValues: boolean;\n}\n\nexport const OPERATOR_OPTIONS: OperatorOption[] = [\n  { type: 'string', operator: 'CONTAINS', translation: '@yap.search.operator.contains', twoValues: false },\n  { type: 'string', operator: 'START_WITH', translation: '@yap.search.operator.startWith', twoValues: false },\n  { type: 'string', operator: 'END_WITH', translation: '@yap.search.operator.endWith', twoValues: false },\n  { type: 'string', operator: 'EQUALS', translation: '@yap.search.operator.equalsString', twoValues: false },\n  { type: 'number', operator: 'EQUALS', translation: '@yap.search.operator.equalsNumber', twoValues: false },\n  { type: 'number', operator: 'GREATER_THAN', translation: '@yap.search.operator.greaterThanNumber', twoValues: false },\n  { type: 'number', operator: 'LOWER_THAN', translation: '@yap.search.operator.lowerThanNumber', twoValues: false },\n  { type: 'number', operator: 'INSIDE', translation: '@yap.search.operator.innerBoundsNumber', twoValues: true },\n  { type: 'number', operator: 'OUTSIDE', translation: '@yap.search.operator.outerBoundsNumber', twoValues: true },\n  { type: 'date', operator: 'GREATER_THAN', translation: '@yap.search.operator.greaterThanDate', twoValues: false },\n  { type: 'date', operator: 'LOWER_THAN', translation: '@yap.search.operator.lowerThanDate', twoValues: false },\n  { type: 'date', operator: 'INSIDE', translation: '@yap.search.operator.innerBoundsDate', twoValues: true },\n  { type: 'date', operator: 'OUTSIDE', translation: '@yap.search.operator.outerBoundsDate', twoValues: true }\n];\n","export const notificationFeatureKey = '@yap/notification';\n\nexport interface YapNotification {\n  id: string;\n  text: { code: string; param?: { [key: string]: string }; title?: string };\n  link?: string;\n  creationDate: string;\n}\n","import { DescriptionQuery } from '../store/data-source/data-source.model';\nimport { DatasetMetadata } from './admin-api.model';\n\nexport enum YapDatasetType {\n  OPEN = 'OPEN',\n  CLOSED = 'CLOSED',\n  MODIFIABLE = 'MODIFIABLE'\n}\n\nexport interface Dataset extends DescriptionQuery {\n  sourceType: 'dataset';\n  id: string;\n  name: string;\n  oClass: string;\n  type: YapDatasetType;\n  metadata: DatasetMetadata[];\n}\n\nexport interface DatasetCount {\n  id: string;\n  count: number;\n}\n\nexport enum GeoMetadata {\n  NAMESPACE = '_geoNamespace',\n  KEY = '_geoKey',\n  OPACITY = '_geoOpacity'\n}\n\nexport interface DatasetError {\n  code: string;\n  line: number;\n  message: string;\n}\n","import { Attribute } from '../store/class/class.interface';\nimport { FieldType } from '../store/field/field.interface';\n\nexport interface Predicate {\n  id: string;\n  name: string;\n  value: string;\n}\n\nexport interface IMetadata {\n  id: string;\n  name: string;\n  type: VARIABLE_TYPE | METADATA_TYPE;\n  description?: string;\n  allowedValues?: Array<string>;\n}\n\nexport interface Environment {\n  name: string;\n  type: VARIABLE_TYPE;\n  value: any;\n}\n\n/**\n * Based on types present in yap-common\n */\nexport enum VARIABLE_TYPE {\n  INTEGER = 'INTEGER',\n  STRING = 'STRING',\n  DOUBLE = 'DOUBLE',\n  DATE = 'DATE',\n  UUID = 'UUID'\n}\n\nexport enum METADATA_TYPE {\n  LIST = 'LIST'\n}\n\nexport interface EnvOption {\n  type: 'number' | 'string' | 'date';\n  varType: VARIABLE_TYPE;\n  translation: string;\n}\n\nexport interface MetaOption {\n  type: 'number' | 'string' | 'date' | 'string[]';\n  varType: VARIABLE_TYPE | METADATA_TYPE;\n  translation: string;\n}\n\nexport const ENV_OPTIONS: EnvOption[] = [\n  { type: 'number', varType: VARIABLE_TYPE.INTEGER, translation: '@yap.admin.varType.int' },\n  { type: 'number', varType: VARIABLE_TYPE.DOUBLE, translation: '@yap.admin.varType.double' },\n  { type: 'string', varType: VARIABLE_TYPE.STRING, translation: '@yap.admin.varType.string' },\n  { type: 'string', varType: VARIABLE_TYPE.UUID, translation: '@yap.admin.varType.uuid' },\n  { type: 'date', varType: VARIABLE_TYPE.DATE, translation: '@yap.admin.varType.date' }\n];\n\nexport const META_OPTIONS: MetaOption[] = [\n  ...ENV_OPTIONS,\n  { type: 'string[]', varType: METADATA_TYPE.LIST, translation: '@yap.admin.varType.list' }\n];\n\nexport const FIELD_UUID = '8b4907be-6159-486a-8502-c5e2139bbc27';\nexport const DEFAULT_CATEGORY_UUID = 'cf666d66-838f-4d92-a4d2-a315df21fac9';\n\nexport interface AttributeExtended {\n  id: string;\n  name: string;\n  field: string;\n  fieldName: string;\n  category?: string;\n  categoryName?: string;\n  multiValued: boolean;\n}\n\nexport interface FieldOption {\n  varType: FieldType;\n  translation: string;\n}\n\nexport const FIELD_OPTIONS: FieldOption[] = [\n  { varType: FieldType.INTEGER, translation: '@yap.admin.fields.fieldType.int' },\n  { varType: FieldType.LONG, translation: '@yap.admin.fields.fieldType.long' },\n  { varType: FieldType.DECIMAL, translation: '@yap.admin.fields.fieldType.decimal' },\n  { varType: FieldType.STRING, translation: '@yap.admin.fields.fieldType.string' },\n  { varType: FieldType.KEYWORD, translation: '@yap.admin.fields.fieldType.keyword' },\n  { varType: FieldType.INSTANT, translation: '@yap.admin.fields.fieldType.instant' },\n  { varType: FieldType.RAW, translation: '@yap.admin.fields.fieldType.raw' },\n  { varType: FieldType.POINT, translation: '@yap.admin.fields.fieldType.point' },\n  { varType: FieldType.MULTIPOINT, translation: '@yap.admin.fields.fieldType.multipoint' },\n  { varType: FieldType.LINE, translation: '@yap.admin.fields.fieldType.line' },\n  { varType: FieldType.MULTILINE, translation: '@yap.admin.fields.fieldType.multiline' },\n  { varType: FieldType.POLYGON, translation: '@yap.admin.fields.fieldType.polygon' },\n  { varType: FieldType.MULTIPOLYGON, translation: '@yap.admin.fields.fieldType.multipolygon' }\n];\n\nexport interface MetadataUser {\n  userProfile: IMetadata;\n  value: string;\n}\n\nexport interface DatasetMetadata {\n  metadataDef: IMetadata;\n  value: string;\n}\n\nexport interface UserInfo {\n  id: string;\n  claim: string;\n  name: string;\n  familyName: string;\n  email: string;\n  roles: string[];\n}\n\nexport interface Link {\n  id: string;\n  relationType: string;\n  attributeSource: string;\n  attributeDestination: string;\n}\n\nexport interface LinkDetails {\n  id: string;\n  relationType: any;\n  attributeSource: Attribute;\n  attributeDestination: Attribute;\n}\n\nexport interface LinkExtended extends Link {\n  id: string;\n  relationType: string;\n  classSource: string;\n  attributeSource: string;\n  classDestination: string;\n  attributeDestination: string;\n}\n\nexport interface MetadataRules {\n  name: string;\n}\n\nexport interface MetadataRulesCreate {\n  id: string;\n  name: string;\n  userProfile: string;\n  metadata: string;\n}\n\nexport interface MetadataRules {\n  id: string;\n  name: string;\n  userProfile: IMetadata;\n  metadata: IMetadata;\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { YapSnackbarService } from '../components/snackbar/snackbar.service';\nimport { YapI18nService } from '../i18n/i18n.service';\n\nexport const httpErrorOptions = {\n  isDevMode: false\n};\n\n@Injectable({ providedIn: 'root' })\nexport class YapHttpErrorInterceptorService implements HttpInterceptor {\n  constructor(readonly snackbar: YapSnackbarService, private translateService: YapI18nService) {}\n\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    return next.handle(req).pipe(\n      catchError((error) => {\n        if (httpErrorOptions.isDevMode) {\n          let message = error.error.message;\n          if (!message) {\n            message = error.message;\n          }\n          this.snackbar.open({\n            message: 'Statut: ' + error.status + '. Erreur: ' + message,\n            type: 'error'\n          });\n\n          console.error(error);\n        } else {\n          this.snackbar.open({\n            message: this.translateService.instant('@yap.errors.codes.' + error.status),\n            type: 'error'\n          });\n        }\n        return throwError(() => error);\n      })\n    );\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Action, Store } from '@ngrx/store';\nimport { TypedAction } from '@ngrx/store/src/models';\nimport { v4 as uuid } from 'uuid';\nimport { DashboardActions } from '../../store/dashboard.actions';\nimport { BusAction } from '../bus-action.interface';\nimport { ControlMessage, ControlMessageType } from './control-message.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BusService {\n  sender: string;\n  dataChannel: BroadcastChannel;\n  controlChannel: BroadcastChannel;\n  buffer: Action[];\n\n  constructor(private store: Store<any>, private zone: NgZone) {\n    this.sender = uuid();\n    this.dataChannel = new BroadcastChannel('data');\n    this.controlChannel = new BroadcastChannel('control');\n    this.buffer = [];\n\n    // Dispatch any message received on the data channel as they must be ngrx actions\n    this.dataChannel.onmessage = (msg) => {\n      if (!msg.data.target || msg.data.target === this.sender) {\n        // if broadcast or i am the target\n        this.store.dispatch({ ...msg.data });\n      }\n    };\n    this.dataChannel.onmessageerror = (msg) => {\n      throw new Error(JSON.stringify(msg));\n    };\n\n    this.controlChannel.onmessage = (msg) =>\n      zone.run(() => {\n        this.manageControlMessage(msg.data);\n      });\n    this.dataChannel.onmessageerror = (msg) => {\n      throw new Error(JSON.stringify(msg));\n    };\n\n    window.onbeforeunload = () => this.postControl('leave', { sender: this.sender });\n\n    setTimeout(() => {\n      this.store.dispatch(\n        DashboardActions.declareSenderId({\n          sender: this.sender,\n          tenants: [this.sender]\n        })\n      );\n      this.postControl('join', { sender: this.sender });\n    }, 1);\n  }\n\n  postData(action: BusAction | Action, target?: string): void {\n    // @ts-ignore\n    if (!action.sender) {\n      // Send only non bus-received messages\n      this.dataChannel.postMessage({\n        ...action,\n        sender: this.sender,\n        target\n      });\n    }\n  }\n\n  postControl(type: ControlMessageType, data: any) {\n    this.controlChannel.postMessage({ type, data, sender: this.sender });\n  }\n\n  manageControlMessage(msg: ControlMessage) {\n    switch (msg.type) {\n      case 'join':\n        this.store.dispatch(DashboardActions.join({ sender: msg.sender }));\n        this.relaseBufferedActions(msg.sender);\n        break;\n      case 'leave':\n        this.store.dispatch(DashboardActions.leave({ sender: msg.sender }));\n        break;\n      default:\n        console.error('Message type unrecognized', msg.type);\n    }\n  }\n\n  bufferUntilJoined(action: TypedAction<any>) {\n    // Buffers these actions until a new tab join\n    this.buffer.push(action);\n  }\n\n  relaseBufferedActions(sender: string) {\n    // Release buffered actions waiting for that join\n    this.buffer.forEach((action) => {\n      this.postData(action, sender);\n    });\n    this.buffer.length = 0;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { filter, tap } from 'rxjs/operators';\nimport { BusService } from '../service/bus.service';\n\n@Injectable()\nexport class ActionBusEffects {\n  forwardOnBus$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        // For actions with type containing \"(bus)\", automatically transfer it on the data-bus to propagate to other windows\n        filter((action) => action.type.includes('(bus)')),\n        tap((action) => this.busService.postData(action))\n      ),\n    { dispatch: false }\n  );\n\n  constructor(private actions$: Actions, private store: Store<any>, private busService: BusService) {}\n}\n","import { Component, ElementRef, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { map, Observable } from 'rxjs';\nimport { ManifestDescription } from '../../../core/model/manifest.interface';\nimport { DashboardActions } from '../../store/dashboard.actions';\nimport { DashboardSelectors } from '../../store/dashboard.selectors';\n\n@Component({\n  selector: 'yap-manifests',\n  templateUrl: './manifests.component.html'\n})\nexport class ManifestsComponent {\n  manifests$: Observable<ManifestDescription[]>;\n  @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\n  checked: boolean[] = [];\n\n  constructor(protected store: Store<any>) {\n    this.store.dispatch(DashboardActions.fetchManifestsList());\n    this.manifests$ = this.store\n      .select(DashboardSelectors.manifestsList)\n      .pipe(\n        map((manifestList) => [...manifestList].sort((a, b) => a.modificationDate.localeCompare(b.modificationDate)))\n      );\n  }\n\n  fetch(id: string) {\n    this.store.dispatch(DashboardActions.loadAndActivateManifest({ id }));\n  }\n\n  delete(id: string) {\n    this.store.dispatch(DashboardActions.deleteManifest({ id }));\n  }\n\n  download(id: string, name: string) {\n    this.store.dispatch(DashboardActions.downloadManifest({ id, name }));\n  }\n\n  handleFileInput(event: Event | null) {\n    if (event) {\n      const files = (event.currentTarget as HTMLInputElement).files as FileList;\n      // @ts-ignore\n      for (const file of files) {\n        const reader = new FileReader();\n        reader.onload = (evt) => {\n          this.store.dispatch(\n            DashboardActions.saveManifest({\n              name: file.name.replace('.json', ''),\n              manifest: JSON.parse(evt.target?.result?.toString() ?? '{}')\n            })\n          );\n        };\n        reader.readAsText(file, 'UTF-8');\n      }\n    }\n  }\n\n  triggerFileInput() {\n    this.fileInput.nativeElement.click();\n  }\n\n  default(id: string, name: string) {\n    this.store.dispatch(DashboardActions.defaultManifest({ id, name }));\n  }\n}\n","<div class=\"o-manifest-layout\">\n  <div class=\"o-manifest-layout__toolbox\">\n    <button\n      class=\"a-btn a-btn--action\"\n      type=\"button\"\n      (click)=\"triggerFileInput()\"\n      title=\"{{ '@yap.manifest.importAlt' | i18n }}\"\n    >\n      <yap-icon iconSvg=\"upload\"></yap-icon>\n      {{ '@yap.manifest.import' | i18n }}\n    </button>\n    <input\n      type=\"file\"\n      id=\"file\"\n      (change)=\"handleFileInput($event)\"\n      #fileInput\n      multiple=\"true\"\n      class=\"u-visually-hidden\"\n    />\n  </div>\n\n  <div class=\"o-manifest-layout__content\">\n    <h1 class=\"a-h1\">{{ '@yap.manifest.title' | i18n }}</h1>\n\n    <div class=\"o-card-manifest\" *ngFor=\"let manifest of manifests$ | async\">\n      <div class=\"o-card-manifest__content\">\n        <p class=\"a-p\">\n          <span class=\"a-p__title\">{{ '@yap.manifest.name' | i18n }}</span>\n          {{ manifest.name }}\n        </p>\n        <p class=\"a-p\">\n          <span class=\"a-p__title\">{{ '@yap.manifest.description' | i18n }}</span>\n          {{ manifest.description }}\n        </p>\n        <p class=\"a-p\">\n          <span class=\"a-p__title\">{{ '@yap.manifest.modification' | i18n }}</span>\n          {{ manifest.modificationDate | date : ('@yap.format.datetime' | i18n) }}\n        </p>\n        <p class=\"a-p\">\n          <span class=\"a-p__title\">{{ '@yap.manifest.creation' | i18n }}</span>\n          {{ manifest.creationDate | date : ('@yap.format.datetime' | i18n) }}\n        </p>\n      </div>\n\n      <div class=\"m-btn-group\">\n        <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"default(manifest.id, manifest.name)\">\n          <yap-icon [iconSvg]=\"manifest.default ? 'home-fill' : 'home-line'\"></yap-icon>\n          <span class=\"u-visually-hidden\">TODO</span>\n        </button>\n\n        <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"download(manifest.id, manifest.name)\">\n          <yap-icon iconSvg=\"download\"></yap-icon>\n          <span class=\"u-visually-hidden\">TODO</span>\n        </button>\n\n        <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"fetch(manifest.id)\">\n          <yap-icon iconSvg=\"eye\"></yap-icon>\n          <span class=\"u-visually-hidden\">TODO</span>\n        </button>\n\n        <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"delete(manifest.id)\">\n          <yap-icon iconSvg=\"delete\"></yap-icon>\n          <span class=\"u-visually-hidden\">TODO</span>\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { AttributeSimpleValue, Item } from '../../../core/model/item.interface';\n\n@Component({\n  selector: 'yap-metadata',\n  templateUrl: './metadata.component.html'\n})\nexport class MetadataComponent {\n  metadata: { name: string; value: string | number }[] = [];\n  id: number;\n  opened: boolean = false;\n  static idGenerator = 0;\n\n  @Input()\n  set item(item: Item | AttributeSimpleValue) {\n    this.metadata = [\n      ...Object.keys(item?.metadata ?? {}).map((meta) => ({\n        name: meta,\n        value: (item?.metadata ?? {})[meta]\n      }))\n    ];\n  }\n\n  constructor() {\n    this.id = MetadataComponent.idGenerator++;\n  }\n\n  toggle() {\n    this.opened = !this.opened;\n  }\n}\n","<div class=\"m-metadata-tag\">\n  <button\n    type=\"button\"\n    class=\"a-btn a-btn--icon-text -link-like\"\n    [attr.aria-expanded]=\"opened\"\n    [attr.aria-controls]=\"'metadata_' + id\"\n    (click)=\"toggle()\"\n  >\n    <yap-icon [width]=\"18\" [height]=\"18\" iconSvg=\"tags\"></yap-icon>\n    {{ '@yap.metadata.view' | i18n }}\n  </button>\n\n  <ul [id]=\"'metadata_' + id\" class=\"m-metadata-tag__list\">\n    <li *ngFor=\"let meta of metadata\" class=\"m-metadata-tag__list__item\">\n      <p class=\"m-metadata-tag__chip\" [title]=\"meta.name + ': ' + meta.value\">\n        <span class=\"m-metadata-tag__chip__label\">{{ meta.name }}: </span>\n        {{ meta.value }}\n      </p>\n    </li>\n  </ul>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { SafeUrl } from '@angular/platform-browser';\nimport { from, Observable } from 'rxjs';\nimport { Item } from '../../../core/model/item.interface';\nimport { RawService } from '../../../core/store/raw/raw.service';\n\n@Component({\n  selector: 'yap-vizualize-raw',\n  templateUrl: './vizualize-raw.component.html'\n})\nexport class VizualizeRawComponent {\n  @Input() item?: Item;\n  @Input() propertyName: string = '';\n  @Input() alt?: string;\n  private _altDefault = 'vizualise-raw';\n  get altValue(): string {\n    return this.alt ?? this._altDefault;\n  }\n\n  constructor(private rawService: RawService) {}\n\n  rawDatas: { [key: string]: { type: string; url: SafeUrl } } = {};\n\n  getRawData(itemId: string, attributeName: string): Observable<{ type: string; url: SafeUrl }> {\n    return from(\n      new Promise<{ type: string; url: SafeUrl }>((resolve) => {\n        setTimeout(() => {\n          if (this.rawDatas[itemId + '@' + attributeName]) {\n            resolve(this.rawDatas[itemId + '@' + attributeName]);\n          } else {\n            this.rawDatas[itemId + '@' + attributeName] = { type: '', url: '' };\n            this.rawService.get(itemId, attributeName).subscribe((rawData) => {\n              this.rawDatas[itemId + '@' + attributeName] = rawData;\n              resolve(rawData);\n            });\n          }\n        }, 10);\n      })\n    );\n  }\n}\n","<ng-container *ngIf=\"rawDatas[item?.id + '@' + propertyName] as rawData\">\n  <ng-container *ngIf=\"rawData.type.includes('image')\">\n    <img [src]=\"rawData.url\" [alt]=\"altValue\" />\n  </ng-container>\n  <ng-container *ngIf=\"rawData.type.includes('video')\">\n    <video [preload]=\"true\" class=\"preview\" controls>\n      <source [src]=\"rawData.url\" [type]=\"rawData.type\" />\n    </video>\n  </ng-container>\n</ng-container>\n<ng-container *ngIf=\"!rawDatas[item?.id + '@' + propertyName]\">\n  <ng-container *ngIf=\"getRawData(item?.id ?? '', propertyName) | async\"> Downloading... </ng-container>\n</ng-container>\n","import { Item } from '../core/model/item.interface';\nimport { Relation } from '../core/model/relation.interface';\nimport { ResultSet } from '../core/model/result-set.interface';\n\nexport class ResultsetUtils {\n  static mergeResultSets(rs1: ResultSet, rs2: ResultSet): ResultSet {\n    if (!rs1) return rs2;\n    if (!rs2) return rs1;\n    const rs1Copy = JSON.parse(JSON.stringify(rs1)) as ResultSet;\n    Object.keys(rs2.items ?? {}).forEach((key) => {\n      if (!rs1Copy.items[key]) {\n        rs1Copy.items[key] = [];\n      }\n      rs1Copy.items[key].push(...rs2.items[key]);\n    });\n    rs1Copy.relations = [...(rs1Copy.relations ?? []), ...(rs2.relations ?? [])];\n\n    /* Make items and relations unique in resulted dataset */\n    Object.keys(rs1Copy.items).forEach((key) => {\n      const uniqueList = [...new Set(rs1Copy.items[key].map((it) => it.id))];\n      rs1Copy.items[key] = uniqueList.map((id) => rs1Copy.items[key].find((it) => it.id === id)) as Item[];\n    });\n\n    const uniqueRelations = [\n      ...new Set(rs1Copy.relations.map((rel) => `${rel.relationType}|${rel.source}|${rel.destination}`))\n    ];\n    rs1Copy.relations = uniqueRelations.map((key) => {\n      const splittedKey = key.split('|');\n      return rs1Copy.relations.find(\n        (rel) =>\n          rel.relationType === splittedKey[0] && rel.source === splittedKey[1] && rel.destination === splittedKey[2]\n      );\n    }) as Relation[];\n\n    return rs1Copy;\n  }\n}\n","import { Component, ElementRef, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport equal from 'fast-deep-equal/es6';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { UNKNOWN_DATASOURCE } from '../../../core/components/translate-id/translate-id.pipe';\nimport { Item } from '../../../core/model/item.interface';\nimport { ResultSet } from '../../../core/model/result-set.interface';\nimport { DataSource } from '../../../core/store/data-source/data-source.model';\nimport { DataSourceSelectors } from '../../../core/store/data-source/data-source.selectors';\nimport { ResultsetUtils } from '../../resultset-utils';\nimport { DashboardSelectors } from '../../store/dashboard.selectors';\nimport { BaseWidgetComponent } from './base-widget.component';\n\n@Component({ selector: 'yap-data-widget', template: '' })\nexport class DataWidgetComponent extends BaseWidgetComponent {\n  resultSet$: Observable<ResultSet>;\n  staticResultSet$ = new BehaviorSubject<ResultSet | null>(null);\n  datasourceIds$: Observable<string[]>;\n  allItems$: Observable<Item[]>;\n  usedDatasources$: Observable<DataSource[]>;\n\n  @Input() set staticResultSet(resultSet: ResultSet) {\n    this.staticResultSet$.next(resultSet);\n  }\n\n  constructor(store: Store<any>, el: ElementRef) {\n    super(store, el);\n    this.datasourceIds$ = this.manifest$.pipe(\n      map(\n        (manifest) =>\n          (Array.isArray(manifest.datasource) ? manifest.datasource : [manifest.datasource]).filter(\n            (id) => !!id\n          ) as string[]\n      )\n    );\n    this.usedDatasources$ = combineLatest([\n      this.datasourceIds$,\n      this.store.select(DataSourceSelectors.getDataSources)\n    ]).pipe(\n      map(\n        ([ids, datasources]) =>\n          ids\n            .map((id) => datasources.find((ds) => ds.id === id) ?? id)\n            .map((nq) => (typeof nq !== 'string' ? nq : UNKNOWN_DATASOURCE(nq))) as DataSource[]\n      )\n    );\n\n    this.resultSet$ = this.initResultSet$();\n\n    this.allItems$ = this.resultSet$.pipe(\n      filter((resultSet) => !!resultSet),\n      map(\n        (resultSet) =>\n          Object.keys(resultSet?.items)\n            .map((classId) => resultSet.items[classId])\n            .reduce((prev, curr) => [...prev, ...curr], []) as Item[]\n      )\n    );\n  }\n\n  initResultSet$() {\n    return combineLatest([\n      this.store.select(DashboardSelectors.resultSets),\n      this.datasourceIds$,\n      this.staticResultSet$\n    ]).pipe(\n      map(([resultSets, resultSetNamesArray, staticResultSet]) => {\n        if (!!staticResultSet) {\n          return staticResultSet;\n        }\n        const resultSetArray = resultSetNamesArray\n          .map((rsName) => resultSets[rsName ?? ''])\n          .filter((rsName) => !!rsName);\n        return resultSetArray.reduce((rs1, rs2) => ResultsetUtils.mergeResultSets(rs1, rs2), {\n          items: {},\n          relations: [],\n          merged: resultSetArray.length\n        });\n      }),\n      distinctUntilChanged((p, v) => equal(p, v))\n    );\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { YapI18nService } from '../../../../core/i18n/i18n.service';\nimport { DashboardSelectors } from '../../../store/dashboard.selectors';\n\n@Pipe({\n  name: 'resultSetSize'\n})\nexport class ResultSetSizePipe implements PipeTransform {\n  constructor(private store: Store, private translate: YapI18nService) {}\n\n  transform(_name: string | string[]): Observable<string> {\n    const names = Array.isArray(_name) ? _name : [_name];\n    return combineLatest(names.map((name) => this.calculate(name))).pipe(\n      map((values) => {\n        return values.reduce(\n          (p, c) => ({\n            displayed: p.displayed + c.displayed,\n            total: p.total + c.total,\n            accurate: p.accurate && c.accurate\n          }),\n          { total: 0, accurate: true, displayed: 0 }\n        );\n      }),\n      map((values) =>\n        this.translate.instant(\n          values.displayed === values.total\n            ? '@yap.widget.namedQuery.resultsAccurate'\n            : '@yap.widget.namedQuery.resultsNonAccurate',\n          values\n        )\n      )\n    );\n  }\n\n  calculate(name: string): Observable<{ displayed: number; total: number; accurate: boolean }> {\n    return this.store.select(DashboardSelectors.resultSets).pipe(\n      map((resultSets) => {\n        const displayed = Object.values(resultSets[name]?.items || {})\n          .map((items) => items.length)\n          .reduce((p, c) => p + c, 0);\n\n        return Object.values(resultSets[name]?.count || {}).reduce<{\n          displayed: number;\n          total: number;\n          accurate: boolean;\n        }>(\n          (p, c) => ({\n            displayed: displayed,\n            total: p.total + c.count,\n            accurate: p.accurate && c.accurate\n          }),\n          { displayed: 0, accurate: true, total: 0 }\n        );\n      })\n    );\n  }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { v4 } from 'uuid';\nimport { UNKNOWN_DATASOURCE } from '../../../../core/components/translate-id/translate-id.pipe';\nimport { DashboardGridLayout, DashboardManifest, WidgetManifest } from '../../../../core/model/manifest.interface';\nimport { Widget } from '../../../../core/model/widget.interface';\nimport { ConfigActions } from '../../../../core/store/config/config.actions';\nimport { DataSource, NamedQuery } from '../../../../core/store/data-source/data-source.model';\nimport { DataSourceSelectors } from '../../../../core/store/data-source/data-source.selectors';\nimport { LibraryTypes } from '../../../../core/store/image/image.service';\nimport { ToolboxMenuService } from '../../../../core/toolbox/toolbox-menu.service';\nimport { DashboardActions } from '../../../store/dashboard.actions';\nimport { DashboardSelectors } from '../../../store/dashboard.selectors';\nimport { SubscriptionnerDirective } from '../../subscriptionner.directive';\nimport { WidgetPlacementUtils } from '../widget-placement/widget-placement.utils';\n\nexport const WIDGET_HEADER_HEIGHT = 60;\n\nexport type HeaderAction = {\n  icon: string;\n  action: (that: YapWidgetHeaderComponent) => void;\n  label: string;\n  disabled?: (that: YapWidgetHeaderComponent) => boolean;\n};\n\n@Component({\n  selector: 'yap-widget-header',\n  templateUrl: './widget-header.component.html'\n})\nexport class YapWidgetHeaderComponent extends SubscriptionnerDirective {\n  @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n  @ViewChild('templateModal', { read: TemplateRef }) templateModal!: TemplateRef<any>;\n  @ViewChild('toggle', { read: TemplateRef }) toggle!: TemplateRef<any>;\n  @ViewChild('overlayMenu', { read: TemplateRef }) overlayMenu!: TemplateRef<any>;\n  @ViewChild('overlayCatalog', { read: TemplateRef }) overlayCatalog!: TemplateRef<any>;\n  @ViewChild('overlaySpot', { read: TemplateRef }) overlaySpot!: TemplateRef<any>;\n  @ViewChild('togglePanel') togglePanel!: ElementRef<HTMLButtonElement>;\n  @ViewChild('cross') cross!: ElementRef<HTMLButtonElement>;\n  @ViewChild('validate') validate!: ElementRef<HTMLButtonElement>;\n  @ViewChild('validateCatalog') validateCatalog!: ElementRef<HTMLButtonElement>;\n  @ViewChild('cancel') cancel!: ElementRef<HTMLButtonElement>;\n  @ViewChild('crossCatalog') crossCatalog!: ElementRef<HTMLButtonElement>;\n  @ViewChild('inputCatalog') inputCatalog!: ElementRef<HTMLInputElement>;\n  @ViewChild('menuList') menuList!: ElementRef;\n  manifest$ = new BehaviorSubject<WidgetManifest | null>(null);\n  subscription?: Subscription;\n  places: WidgetManifest[] = [];\n  selectedItem?: Element | null;\n\n  @Input() set manifest(manifest: WidgetManifest | null) {\n    this.manifest$.next(manifest);\n  }\n\n  @Input() additionalOptions: HeaderAction[] | null = [];\n  @Input() headerOptions: { [key: string]: boolean } | {} | undefined;\n  @Input() displayCount = true;\n\n  @Output() manifestModified = new EventEmitter<{ widgetIndex: number; manifest: WidgetManifest }>();\n\n  isEdit = false;\n  catalogInfo: Widget = {\n    id: v4(),\n    image: '',\n    name: '',\n    description: '',\n    content: '',\n    datasource: [],\n    modificationDate: ''\n  };\n\n  get title() {\n    return this.manifest?.title;\n  }\n\n  get manifest() {\n    return this.manifest$.getValue();\n  }\n\n  @Input() set datasourceIds$(datasourceIds$: Observable<string[]>) {\n    this.usedDatasources$ = combineLatest([datasourceIds$, this.store.select(DataSourceSelectors.getDataSources)]).pipe(\n      map(\n        ([ids, datasources]) =>\n          ids\n            .map((id) => datasources.find((ds) => ds.id === id) ?? id)\n            .map((nq) => (typeof nq !== 'string' ? nq : UNKNOWN_DATASOURCE(nq))) as NamedQuery[]\n      )\n    );\n    this.subscriptions.add(this.usedDatasources$.subscribe((unq) => (this.usedNameQueryIds = unq.map((nq) => nq.id))));\n    this.subscription?.unsubscribe();\n    this.subscription = datasourceIds$.subscribe(\n      (dsIds) => (this.selectedDataSource = JSON.parse(JSON.stringify(dsIds)))\n    );\n  }\n\n  @Input() set widgetIndex(widgetIndex: number) {\n    this._widgetIndex$.next(widgetIndex);\n    this._widgetIndex = widgetIndex;\n  }\n\n  search$ = new BehaviorSubject('');\n  lockedView$: Observable<boolean>;\n  targetIndexes$: Observable<number[]>;\n  usedDatasources$!: Observable<DataSource[]>;\n  allDataSources$: Observable<DataSource[]>;\n  usedNameQueryIds!: string[];\n  choiceUsed = {} as { [is: string]: boolean };\n  _widgetIndex$ = new BehaviorSubject<number>(0);\n  _widgetIndex!: number;\n  open = false;\n  selectedDataSource: string[] = [];\n  idToNameDatasource: { [id: string]: string } = {};\n\n  windowManifest: DashboardManifest | null = null;\n  private windowManifest$: Observable<DashboardManifest>;\n  private menuRef?: OverlayRef;\n  private comboRef?: OverlayRef;\n  private confirmRemoveRef?: OverlayRef;\n  private catalogRef?: OverlayRef;\n  private spotRef?: OverlayRef;\n  menu: boolean = false;\n  type: LibraryTypes = LibraryTypes.ILLUSTRATION;\n\n  constructor(\n    private store: Store,\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef,\n    public toolboxMenuService: ToolboxMenuService\n  ) {\n    super();\n    this.windowManifest$ = this.store\n      .select(DashboardSelectors.windowManifest)\n      .pipe(distinctUntilChanged((p, c) => JSON.stringify(p) === JSON.stringify(c)));\n\n    this.allDataSources$ = combineLatest([\n      this.manifest$,\n      this.store.select(DataSourceSelectors.getDataSourcesSorted),\n      this.search$\n    ]).pipe(\n      map(([manifest, allNamedQueries, searchValue]) => {\n        let nqs = [...allNamedQueries];\n        if (!!manifest) {\n          const manifestNamedQueries = Array.isArray(manifest.datasource) ? manifest.datasource : [manifest.datasource];\n          manifestNamedQueries.forEach((manifestNamedQuery) => {\n            const alreadyPresent = !!allNamedQueries.find((nq) => nq.id === manifestNamedQuery);\n            if (!alreadyPresent) {\n              nqs.push(UNKNOWN_DATASOURCE(manifestNamedQuery ?? ''));\n            }\n          });\n        }\n        return nqs.filter((nq) => nq.name.toLowerCase().includes(searchValue.toLowerCase()));\n      })\n    );\n    this.targetIndexes$ = this.store.select(DashboardSelectors.targetTenantsIndexes);\n    this.subscriptions.add(\n      this.allDataSources$.subscribe((allNqs) => allNqs.forEach((nq) => (this.choiceUsed[nq.id] = false)))\n    );\n    this.subscriptions.add(\n      this.windowManifest$.subscribe((manifest) => {\n        this.windowManifest = manifest;\n      })\n    );\n    this.lockedView$ = this.store\n      .select(DashboardSelectors.globalManifest)\n      .pipe(map((m) => !!m.locked || !!this.manifest?.locked));\n\n    this.subscriptions.add(\n      this.allDataSources$.subscribe((allDs) => allDs.forEach((ds) => (this.idToNameDatasource[ds.id] = ds.name)))\n    );\n  }\n\n  onArrowUp() {\n    const lastElement = this.menuList.nativeElement.lastElementChild;\n    if (this.selectedItem?.previousElementSibling) {\n      this.selectedItem = this.selectedItem.previousElementSibling;\n    } else {\n      this.selectedItem = lastElement;\n    }\n    const focusElement = this.selectedItem?.children[0] as HTMLButtonElement;\n    const focusChildrenElement = this.selectedItem?.children[0].children[0] as HTMLButtonElement;\n    if (focusChildrenElement) {\n      focusChildrenElement.focus();\n    }\n    focusElement.focus();\n  }\n\n  onArrowDown() {\n    const firstElement = this.menuList.nativeElement.firstElementChild;\n    if (this.selectedItem?.nextElementSibling) {\n      this.selectedItem = this.selectedItem.nextElementSibling;\n    } else {\n      this.selectedItem = firstElement;\n    }\n    const focusElement = this.selectedItem?.children[0] as HTMLButtonElement;\n    const focusChildrenElement = this.selectedItem?.children[0].children[0] as HTMLButtonElement;\n    if (focusChildrenElement) {\n      focusChildrenElement.focus();\n    }\n    focusElement.focus();\n  }\n\n  get currentLayout() {\n    return this.windowManifest?.grid?.layout ?? DashboardGridLayout.MANUAL;\n  }\n\n  get hasGrid() {\n    return this.currentLayout !== DashboardGridLayout.MANUAL;\n  }\n\n  get currentPlacementIndex() {\n    return this.places.findIndex(\n      (place) =>\n        this.manifest?.layout.x === place.layout.x &&\n        this.manifest.layout.y === place.layout.y &&\n        this.manifest.layout.width === place.layout.width &&\n        this.manifest.layout.height === place.layout.height\n    );\n  }\n\n  toogleDataSource(id: string) {\n    if (!this.selectedDataSource.includes(id)) {\n      this.selectedDataSource.push(id);\n    } else {\n      this.selectedDataSource = this.selectedDataSource.filter((dataSourceId) => dataSourceId !== id);\n    }\n  }\n\n  menuOpen($event?: MouseEvent, forceOpen?: boolean) {\n    this.menu = !this.menu;\n    const mustOpen = forceOpen !== undefined ? forceOpen : !this.menuRef;\n    if (mustOpen) {\n      this.menuRef = this.overlay.create(\n        new OverlayConfig({\n          hasBackdrop: true,\n          panelClass: ['m-context-menu-wrapper'],\n          backdropClass: 'backdrop',\n          positionStrategy: this.overlay\n            .position()\n            .flexibleConnectedTo(this.togglePanel)\n            .withPositions([\n              {\n                originX: 'start',\n                originY: 'bottom',\n                overlayX: 'start',\n                overlayY: 'top'\n              }\n            ])\n        })\n      );\n      this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name + '-menu' }));\n      this.menuRef.backdropClick().subscribe((_) => this.menuOpen());\n      this.menuRef.attach(new TemplatePortal(this.overlayMenu, this.viewContainerRef));\n      setTimeout(() => {\n        this.selectedItem = this.menuList?.nativeElement?.firstElementChild;\n        if (this.selectedItem) {\n          const focus = this.selectedItem?.children[0] as HTMLButtonElement;\n          const focusChildrenElement = this.selectedItem?.children[0]?.children[0] as HTMLButtonElement;\n          focus ? focus.focus() : focusChildrenElement?.focus();\n        }\n      }, 10);\n    } else {\n      this.menuRef?.dispose();\n      this.menuRef = undefined;\n      this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-menu' }));\n      this.togglePanel?.nativeElement?.focus();\n    }\n  }\n\n  toggleCombo() {\n    if (!this.comboRef) {\n      this.usedNameQueryIds.forEach((unq) => (this.choiceUsed[unq] = true));\n      this.comboRef = this.overlay.create(\n        new OverlayConfig({\n          hasBackdrop: true,\n          panelClass: ['o-widget__choose-resultset'],\n          backdropClass: 'backdrop'\n        })\n      );\n      this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name + '-combo' }));\n      this.comboRef.backdropClick().subscribe((_) => this.toggleCombo());\n      this.comboRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n      setTimeout(() => {\n        this.inputCatalog?.nativeElement?.focus();\n      }, 10);\n    } else {\n      this.comboRef.dispose();\n      this.comboRef = undefined;\n      this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-combo' }));\n      this.menuOpen();\n    }\n  }\n\n  moveInNewWindow(widgetIndex: number, targetIndex: number) {\n    this.store.dispatch(DashboardActions.moveWidget({ widgetIndex, targetIndex }));\n    this.store.dispatch(DashboardActions.toggleEditionMode({ force: false }));\n    this.menuOpen();\n  }\n\n  maximize(widgetIndex: number) {\n    this.store.dispatch(DashboardActions.maximizeWidget({ widgetIndex }));\n    this.menuOpen();\n  }\n\n  emitManifest() {\n    this.manifestModified.emit({\n      widgetIndex: this._widgetIndex,\n      manifest: {\n        ...this.manifest,\n        datasource: this.selectedDataSource\n      } as unknown as WidgetManifest\n    });\n    this.toggleCombo();\n  }\n\n  toggleRemoveConfirm($event?: MouseEvent) {\n    if (!this.confirmRemoveRef) {\n      this.confirmRemoveRef = this.overlay.create(\n        new OverlayConfig({\n          hasBackdrop: true,\n          panelClass: ['o-modal-wrapper'],\n          backdropClass: 'backdrop'\n        })\n      );\n      this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name + '-modal' }));\n      this.confirmRemoveRef.backdropClick().subscribe((_) => this.toggleRemoveConfirm());\n      this.confirmRemoveRef.attach(new TemplatePortal(this.templateModal, this.viewContainerRef));\n      if ($event) {\n        const panel = document.querySelector('div.o-modal-wrapper') as HTMLDivElement;\n        if (!!panel) {\n          panel.style.left = Math.max(0, Math.min(window.innerWidth - panel.clientWidth, $event.clientX - 30)) + 'px';\n          panel.style.top = Math.max(0, Math.min(window.innerHeight - panel.clientHeight, $event.clientY - 10)) + 'px';\n        }\n      }\n      setTimeout(() => {\n        this.cross?.nativeElement?.focus();\n      }, 10);\n    } else {\n      this.confirmRemoveRef.dispose();\n      this.confirmRemoveRef = undefined;\n      this.togglePanel?.nativeElement?.focus();\n      this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-modal' }));\n      this.menuOpen();\n    }\n  }\n\n  confirmRemove() {\n    this.remove();\n    this.cancelRemoveConfirm();\n  }\n\n  remove() {\n    const listWidgetManifests = [...(this.windowManifest || { widgets: [] }).widgets];\n    listWidgetManifests.splice(this._widgetIndex, 1);\n\n    this.store.dispatch(\n      DashboardActions.updateDashboardManifest({\n        manifest: {\n          ...this.windowManifest,\n          widgets: listWidgetManifests\n        }\n      })\n    );\n  }\n\n  cancelRemoveConfirm() {\n    this.isEdit = false;\n    this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n    this.confirmRemoveRef?.backdropClick().subscribe(() => this.toggleRemoveConfirm());\n    this.confirmRemoveRef?.dispose();\n    this.confirmRemoveRef = undefined;\n    this.menuRef?.dispose();\n    this.menuRef = undefined;\n    this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-menu' }));\n  }\n\n  toggleCatalog() {\n    if (!this.catalogRef) {\n      this.catalogInfo = {\n        id: v4(),\n        image: '',\n        name: '',\n        description: '',\n        content: '',\n        datasource: [],\n        modificationDate: ''\n      };\n      this.catalogRef = this.overlay.create(\n        new OverlayConfig({\n          hasBackdrop: true,\n          panelClass: ['o-modal-wrapper'],\n          backdropClass: 'backdrop'\n        })\n      );\n      this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name + '-catalog' }));\n      this.catalogRef.backdropClick().subscribe((_) => this.toggleCatalog());\n      this.catalogRef.attach(new TemplatePortal(this.overlayCatalog, this.viewContainerRef));\n      setTimeout(() => {\n        this.crossCatalog?.nativeElement?.focus();\n      }, 10);\n    } else {\n      this.catalogRef.dispose();\n      this.catalogRef = undefined;\n      this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-catalog' }));\n      this.menuOpen();\n    }\n  }\n\n  confirmCatalog() {\n    if (this.toolboxMenuService.isValidForCatalog(this.catalogInfo.name)) {\n      this.toolboxMenuService.addToCatalog(\n        {\n          ...this.catalogInfo,\n          content: JSON.stringify({ ...this.manifest, title: this.catalogInfo.name })\n        },\n        this._widgetIndex\n      );\n    }\n    this.toggleCatalog();\n  }\n\n  executeAction(options: HeaderAction) {\n    options.action(this);\n    this.menuOpen();\n  }\n\n  isActionDisabled(option: HeaderAction) {\n    return !!option?.disabled ? option?.disabled(this) : false;\n  }\n\n  displayOption(headerOptions: any, parameters: string) {\n    return (\n      headerOptions === undefined ||\n      headerOptions === true ||\n      headerOptions[parameters] === undefined ||\n      headerOptions[parameters] === true\n    );\n  }\n\n  displaySettings(headerOptions: { [p: string]: boolean } | {} | undefined) {\n    return headerOptions === undefined || headerOptions === true || Object.keys(headerOptions).length > 0;\n  }\n\n  toggleChangeSpot() {\n    if (!this.spotRef) {\n      this.places = WidgetPlacementUtils.placementOptions({ type: 'icon' } as WidgetManifest, this.currentLayout, {\n        ...this.windowManifest?.grid\n      });\n\n      this.spotRef = this.overlay.create(\n        new OverlayConfig({\n          hasBackdrop: true,\n          panelClass: ['o-modal-wrapper'],\n          backdropClass: 'backdrop'\n        })\n      );\n      this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name + '-spot' }));\n      this.spotRef.backdropClick().subscribe(() => this.toggleChangeSpot());\n      this.spotRef.attach(new TemplatePortal(this.overlaySpot, this.viewContainerRef));\n    } else {\n      this.spotRef.dispose();\n      this.spotRef = undefined;\n      this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-spot' }));\n      this.menuOpen();\n    }\n  }\n\n  moveToPlace(place: WidgetManifest) {\n    const startLayout = this.manifest!.layout;\n    const targetLayout = place.layout;\n    const newWindowManifest = JSON.parse(JSON.stringify(this.windowManifest)) as DashboardManifest;\n\n    const targetWidgetIndex = newWindowManifest.widgets.findIndex(\n      (w) =>\n        w.layout.x === targetLayout.x &&\n        w.layout.y === targetLayout.y &&\n        w.layout.width === targetLayout.width &&\n        w.layout.height === targetLayout.height\n    );\n    const startWidgetIndex = newWindowManifest.widgets.findIndex(\n      (w) =>\n        w.layout.x === startLayout.x &&\n        w.layout.y === startLayout.y &&\n        w.layout.width === startLayout.width &&\n        w.layout.height === startLayout.height\n    );\n    if (targetWidgetIndex !== -1) {\n      newWindowManifest.widgets[targetWidgetIndex].layout = startLayout;\n    }\n    newWindowManifest.widgets[startWidgetIndex].layout = targetLayout;\n\n    this.store.dispatch(DashboardActions.updateDashboardManifest({ manifest: newWindowManifest }));\n\n    this.toggleChangeSpot();\n  }\n\n  focusCrossElement() {\n    this.cross?.nativeElement?.focus();\n    this.crossCatalog?.nativeElement?.focus();\n  }\n\n  focusValidation() {\n    this.validateCatalog?.nativeElement?.focus();\n    if (!this.toolboxMenuService.isValidForCatalog(this.catalogInfo?.name)) {\n      this.cancel?.nativeElement?.focus();\n    }\n    this.validate?.nativeElement?.focus();\n  }\n\n  focusInputCatalog() {\n    this.inputCatalog?.nativeElement?.focus();\n  }\n\n  disableValidation() {\n    if (!this.toolboxMenuService.isValidForCatalog(this.catalogInfo?.name)) {\n      this.crossCatalog?.nativeElement?.focus();\n    }\n  }\n}\n","<div class=\"o-widget__header\">\n  <div class=\"o-widget__header__content\">\n    <h2 class=\"o-widget__header__content__title\" *ngIf=\"!!title; else querySelector\">\n      {{ title }}\n    </h2>\n    <ng-template #querySelector>\n      <div *ngFor=\"let ds of usedDatasources$ | async\" class=\"o-widget__header__content__query\">\n        <yap-nq-color-selector [disabled]=\"true\" [datasource]=\"ds\"></yap-nq-color-selector>\n        <img\n          [height]=\"20\"\n          [src]=\"ds.id | translateId : { type: 'datasource', output: 'icon' } | async\"\n          [width]=\"20\"\n          alt=\"\"\n          class=\"o-widget__header__content__query__icon\"\n        />\n        <h3 class=\"o-widget__header__content__query__name\">{{ ds.name }}</h3>\n        <h3 class=\"o-widget__header__content__query__name\" *ngIf=\"displayCount\">\n          ({{ usedNameQueryIds | resultSetSize | async }})\n        </h3>\n      </div>\n      <div *ngIf=\"!(usedDatasources$ | async)?.length\" class=\"o-widget__header__content__no-data\">\n        <h2 class=\"o-widget__header__content__title\">{{ '@yap.widget.noData' | i18n }}</h2>\n      </div>\n    </ng-template>\n  </div>\n  <div class=\"m-btn-group\" *ngIf=\"!(lockedView$ | async) && displaySettings(headerOptions)\">\n    <button\n      type=\"button\"\n      id=\"dialog_Menu\"\n      aria-controls=\"menu\"\n      [attr.aria-expanded]=\"this.menu\"\n      #togglePanel\n      class=\"a-btn a-btn--more\"\n      (click)=\"menuOpen($event)\"\n    >\n      <yap-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></yap-icon>\n      <span class=\"u-visually-hidden\">{{ '@yap.action.openMenuWidget' | i18n }}</span>\n    </button>\n  </div>\n</div>\n\n<ng-template #overlayMenu>\n  <div class=\"m-context-menu\">\n    <ul\n      class=\"m-context-menu__list\"\n      #menuList\n      id=\"menu\"\n      role=\"menu\"\n      aria-modal=\"true\"\n      aria-labelledby=\"dialog_Menu\"\n      (keydown.arrowDown)=\"onArrowDown()\"\n      (keydown.arrowUp)=\"onArrowUp()\"\n      (keydown.escape)=\"menuOpen()\"\n    >\n      <li\n        class=\"m-context-menu__list__item\"\n        role=\"none\"\n        *ngIf=\"!!manifest?.datasource && displayOption(headerOptions, 'datasourceSelection')\"\n      >\n        <button\n          type=\"button\"\n          role=\"menuitem\"\n          tabindex=\"-1\"\n          id=\"toggleActions\"\n          (click)=\"toggleCombo()\"\n          *yapAccess=\"{ module: 'dashboard', page: 'widget', action: 'select_named_query' }\"\n          class=\"a-btn\"\n          [yapTooltip]=\"infoTooltip\"\n          aria-describedby=\"infoTooltip_widgetHeader\"\n        >\n          <yap-icon [height]=\"17\" [width]=\"17\" iconSvg=\"stack-fill\"></yap-icon>\n          <span>{{ '@yap.widget.tooltip.readSearch' | i18n }}</span>\n        </button>\n      </li>\n      <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"displayOption(headerOptions, 'parameters')\">\n        <ng-content></ng-content>\n      </li>\n      <ng-container *ngIf=\"displayOption(headerOptions, 'window')\">\n        <li class=\"m-context-menu__list__item\" role=\"none\" *ngFor=\"let targetIndex of targetIndexes$ | async\">\n          <button\n            type=\"button\"\n            (click)=\"moveInNewWindow(_widgetIndex, targetIndex)\"\n            class=\"a-btn\"\n            role=\"menuitem\"\n            tabindex=\"-1\"\n            #secondElement\n          >\n            <yap-icon [height]=\"17\" [width]=\"17\" iconSvg=\"launch\"></yap-icon>\n            {{\n              (targetIndex !== -1 ? '@yap.widget.target.existing' : '@yap.widget.target.new')\n                | i18n : { targetIndex: this.targetIndex + 1 }\n            }}\n          </button>\n        </li>\n      </ng-container>\n      <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"hasGrid && displayOption(headerOptions, 'changeSpot')\">\n        <button\n          type=\"button\"\n          role=\"menuitem\"\n          (click)=\"toggleChangeSpot()\"\n          class=\"a-btn\"\n          tabindex=\"-1\"\n          [yapTooltip]=\"infoChangeSpot\"\n          aria-describedby=\"infoTooltip_changeSpot\"\n        >\n          <yap-icon [height]=\"17\" [width]=\"17\" iconSvg=\"move\"></yap-icon>\n          <span>{{ '@yap.widget.tooltip.changeSpot' | i18n }}</span>\n        </button>\n      </li>\n      <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"displayOption(headerOptions, 'maximize')\">\n        <button\n          type=\"button\"\n          role=\"menuitem\"\n          tabindex=\"-1\"\n          (click)=\"maximize(_widgetIndex)\"\n          class=\"a-btn\"\n          (keydown.escape)=\"menuOpen()\"\n        >\n          <yap-icon [height]=\"17\" [width]=\"17\" iconSvg=\"fullscreen\"></yap-icon>\n          {{ '@yap.widget.target.maximize' | i18n }}\n        </button>\n      </li>\n      <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"displayOption(headerOptions, 'addToCatalog')\">\n        <button\n          type=\"button\"\n          role=\"menuitem\"\n          tabindex=\"-1\"\n          (click)=\"toggleCatalog()\"\n          class=\"a-btn\"\n          [yapTooltip]=\"infoAdd\"\n          aria-describedby=\"infoAdd_widgetHeader\"\n        >\n          <yap-icon [height]=\"17\" [width]=\"17\" iconSvg=\"library_add\"></yap-icon>\n          <span>{{ '@yap.widget.tooltip.catalogWidget' | i18n }}</span>\n        </button>\n      </li>\n      <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"displayOption(headerOptions, 'delete')\">\n        <button\n          type=\"button\"\n          role=\"menuitem\"\n          tabindex=\"-1\"\n          (click)=\"toggleRemoveConfirm($event)\"\n          class=\"a-btn\"\n          [yapTooltip]=\"infoRemove\"\n          aria-describedby=\"infoRemove_widgetHeader\"\n          (keydown.tab)=\"menuOpen()\"\n        >\n          <yap-icon [height]=\"17\" [width]=\"17\" iconSvg=\"delete\"></yap-icon>\n          <span>{{ '@yap.widget.tooltip.deleteWidget' | i18n }}</span>\n        </button>\n      </li>\n      <li class=\"m-context-menu__list__item\" role=\"none\" *ngFor=\"let option of additionalOptions\">\n        <button\n          type=\"button\"\n          class=\"a-btn\"\n          role=\"menuitem\"\n          tabindex=\"-1\"\n          (click)=\"executeAction(option)\"\n          [disabled]=\"isActionDisabled(option)\"\n        >\n          <yap-icon [height]=\"17\" [width]=\"17\" [iconSvg]=\"option.icon\"></yap-icon>\n          {{ option.label | i18n }}\n        </button>\n      </li>\n    </ul>\n  </div>\n</ng-template>\n\n<ng-template #templateModal>\n  <div\n    class=\"o-modal\"\n    (keydown.escape)=\"cancelRemoveConfirm()\"\n    role=\"dialog\"\n    aria-modal=\"true\"\n    aria-labelledby=\"dialog confirm delete presentation\"\n  >\n    <div class=\"o-modal__top\">\n      <div class=\"o-modal__top__title\">\n        <h2 class=\"a-h2\" id=\"dialog_title\">\n          {{ '@yap.widget.modalTitle' | i18n }}\n        </h2>\n      </div>\n      <div class=\"o-modal__top__close\">\n        <button class=\"a-btn a-btn--icon-only\" #cross (click)=\"cancelRemoveConfirm()\">\n          <yap-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.toolbox.close' | i18n }}</span>\n        </button>\n      </div>\n    </div>\n    <div class=\"m-btn-group\">\n      <button type=\"button\" (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n        {{ '@yap.toolbox.manifest.close' | i18n }}\n      </button>\n      <button type=\"submit\" (click)=\"confirmRemove()\" class=\"a-btn a-btn--primary\" (keydown.tab)=\"focusCrossElement()\">\n        {{ '@yap.toolbox.manifest.validate' | i18n }}\n      </button>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #infoTooltip>\n  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_widgetHeader\" aria-hidden=\"true\">\n    <span class=\"m-tooltip__text\">{{ '@yap.widget.tooltip.readSearch' | i18n }}</span>\n  </div>\n</ng-template>\n<ng-template #infoRemove>\n  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoRemove_widgetHeader\" aria-hidden=\"true\">\n    <span class=\"m-tooltip__text\">{{ '@yap.widget.tooltip.deleteWidget' | i18n }}</span>\n  </div>\n</ng-template>\n<ng-template #infoAdd>\n  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoAdd_widgetHeader\" aria-hidden=\"true\">\n    <span class=\"m-tooltip__text\">{{ '@yap.widget.tooltip.catalogWidget' | i18n }}</span>\n  </div>\n</ng-template>\n<ng-template #infoChangeSpot>\n  <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoAdd_changeSpot\" aria-hidden=\"true\">\n    <span class=\"m-tooltip__text\">{{ '@yap.widget.tooltip.changeSpot' | i18n }}</span>\n  </div>\n</ng-template>\n\n<ng-template #template>\n  <div class=\"m-namedqueries-wrapper\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_namedqueries\">\n    <div class=\"o-widget__search\">\n      <input\n        id=\"catalog-search\"\n        #inputCatalog\n        (keydown.shift.tab)=\"focusValidation()\"\n        type=\"text\"\n        class=\"a-form-field\"\n        [placeholder]=\"'Recherchez une donnée'\"\n        [ngModel]=\"search$ | async\"\n        (ngModelChange)=\"this.search$.next($event)\"\n      />\n      <yap-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></yap-icon>\n    </div>\n    <div *ngIf=\"selectedDataSource.length > 0; else noDataSource\">\n      <h4 class=\"a-h4\">{{ '@yap.restitution.selection' | i18n }}</h4>\n      <div>\n        <ul class=\"o-datasources__list o-datasources__list--selected\">\n          <li *ngFor=\"let id of selectedDataSource\" class=\"o-datasources__item\">\n            <button class=\"o-datasources__card is-selected\" (click)=\"toogleDataSource(id)\" type=\"button\">\n              <p>\n                {{ idToNameDatasource[id] }}\n              </p>\n              <div class=\"a-btn a-btn--primary a-btn--icon-only\">\n                <yap-icon [iconSvg]=\"'close'\" [width]=\"17\" [height]=\"17\"></yap-icon>\n                <span class=\"u-visually-hidden\">{{ '@yap.restitution.unselectDataSource' | i18n }}</span>\n              </div>\n            </button>\n          </li>\n        </ul>\n      </div>\n    </div>\n    <ng-template #noDataSource>\n      <h4 class=\"a-h4\">{{ '@yap.restitution.noDataSourceSelected' | i18n }}</h4>\n    </ng-template>\n    <h4 class=\"a-h4\">{{ '@yap.restitution.select' | i18n }}</h4>\n    <ul class=\"o-datasources__list\">\n      <li *ngFor=\"let nq of allDataSources$ | async\" (click)=\"toogleDataSource(nq.id)\" class=\"o-datasources__item\">\n        <div class=\"o-datasources__card\">\n          <div class=\"o-datasources__card__name\">\n            <yap-checkbox\n              [ngModel]=\"selectedDataSource.includes(nq.id)\"\n              (click)=\"$event.preventDefault()\"\n            ></yap-checkbox>\n            <span class=\"u-visually-hidden\">{{ '@yap.restitution.selectDataSource' | i18n }}</span>\n            <p class=\"a-p\">{{ nq.id | translateId : { type: 'datasource', output: 'name' } | async }}</p>\n          </div>\n        </div>\n      </li>\n    </ul>\n  </div>\n  <div class=\"m-btn-group\">\n    <button type=\"button\" (click)=\"toggleCombo()\" class=\"a-btn a-btn--secondary\">\n      {{ '@yap.toolbox.manifest.close' | i18n }}\n    </button>\n    <button\n      type=\"button\"\n      (click)=\"emitManifest()\"\n      #validate\n      (keydown.tab)=\"focusInputCatalog()\"\n      class=\"a-btn a-btn--primary\"\n    >\n      {{ '@yap.toolbox.manifest.validated' | i18n }}\n    </button>\n  </div>\n</ng-template>\n\n<ng-template #overlayCatalog>\n  <div\n    class=\"o-modal\"\n    role=\"dialog\"\n    aria-modal=\"true\"\n    aria-labelledby=\"dialog_Catalog\"\n    (keydown.escape)=\"toggleCatalog()\"\n  >\n    <div class=\"o-modal__top\">\n      <div class=\"o-modal__top__title\">\n        <h2 class=\"a-h2\">\n          {{ '@yap.widget.defineCatalog' | i18n }}\n        </h2>\n      </div>\n      <div class=\"o-modal__top__close\">\n        <button\n          class=\"a-btn a-btn--icon-only\"\n          (keydown.shift.tab)=\"focusValidation()\"\n          #crossCatalog\n          (click)=\"toggleCatalog()\"\n        >\n          <yap-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.toolbox.close' | i18n }}</span>\n        </button>\n      </div>\n    </div>\n    <div class=\"m-form-label-field\">\n      <label class=\"a-label\" for=\"name\">{{ '@yap.toolbox.catalog.label' | i18n }}</label>\n      <input [(ngModel)]=\"catalogInfo.name\" id=\"name\" type=\"text\" class=\"a-form-field\" required />\n    </div>\n    <div class=\"m-form-label-field\">\n      <label class=\"a-label\" for=\"description\">{{ '@yap.toolbox.catalog.description' | i18n }}</label>\n      <input [(ngModel)]=\"catalogInfo.description\" id=\"description\" type=\"text\" class=\"a-form-field\" required />\n    </div>\n    <div class=\"m-form-label-field\">\n      <yap-select-image\n        [iconUrl]=\"catalogInfo.image\"\n        (changed)=\"catalogInfo.image = $event\"\n        [mode]=\"type\"\n      ></yap-select-image>\n    </div>\n    <div class=\"m-btn-group\">\n      <button\n        type=\"button\"\n        (click)=\"toggleCatalog()\"\n        #cancel\n        (keydown.tab)=\"disableValidation()\"\n        class=\"a-btn a-btn--secondary\"\n      >\n        {{ '@yap.toolbox.manifest.close' | i18n }}\n      </button>\n      <button\n        type=\"submit\"\n        #validateCatalog\n        (click)=\"confirmCatalog()\"\n        [disabled]=\"!toolboxMenuService.isValidForCatalog(catalogInfo.name)\"\n        class=\"a-btn a-btn--primary\"\n        (keydown.tab)=\"focusCrossElement()\"\n      >\n        {{ '@yap.toolbox.manifest.validate' | i18n }}\n      </button>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #overlaySpot>\n  <div class=\"o-modal\">\n    <div class=\"o-modal__top\">\n      <div class=\"o-modal__top__title\">\n        <h2 class=\"a-h2\">\n          {{ '@yap.widget.tooltip.changeSpot' | i18n }}\n        </h2>\n      </div>\n      <div class=\"o-modal__top__close\">\n        <button class=\"a-btn a-btn--icon-only\" (click)=\"toggleChangeSpot()\">\n          <yap-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></yap-icon>\n          <span class=\"u-visually-hidden\">{{ '@yap.toolbox.close' | i18n }}</span>\n        </button>\n      </div>\n    </div>\n    <ng-container *ngFor=\"let place of places; let i = index\">\n      <ng-container *ngIf=\"currentPlacementIndex !== i\">\n        <button type=\"button\" class=\"a-btn\" (click)=\"moveToPlace(place)\">\n          <span>{{ '@yap.widget.tooltip.spotName' | i18n : { place: i + 1 } }}</span>\n        </button>\n      </ng-container>\n    </ng-container>\n  </div>\n</ng-template>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';\nimport { ConfigActions } from '../../../../core/store/config/config.actions';\nimport { YapWidgetHeaderComponent } from '../header/widget-header.component';\n\n@Component({\n  selector: 'yap-settings',\n  templateUrl: './settings.component.html'\n})\nexport class SettingsComponent implements OnDestroy {\n  _widgetIndex$ = new BehaviorSubject<number>(0);\n  private openSub?: Subscription;\n\n  @Input() set widgetIndex(widgetIndex: number) {\n    this._widgetIndex$.next(widgetIndex);\n  }\n\n  @Input() isDisable?: boolean;\n\n  @Input() headerPresent!: boolean | null | { [key: string]: boolean };\n\n  @Input() set open$(open$: Observable<void> | Subject<void>) {\n    this.openSub?.unsubscribe();\n    this.openSub = open$.subscribe(() => {\n      this.toggle();\n    });\n  }\n\n  @Input() header?: YapWidgetHeaderComponent;\n\n  @Output() saveTriggered = new EventEmitter<void>();\n  open = false;\n\n  private overlayRef?: OverlayRef;\n  @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n  @ViewChild('cross') cross!: ElementRef<HTMLButtonElement>;\n  @ViewChild('validate') validate!: ElementRef<HTMLButtonElement>;\n\n  constructor(private store: Store<any>, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n  toggle() {\n    this.open = !this.open;\n    if (this.open) {\n      this.openWithTemplate();\n      setTimeout(() => {\n        this.cross?.nativeElement.focus();\n      }, 10);\n    } else {\n      this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n      this.overlayRef?.dispose();\n      if (!!this.header) {\n        this.header.menuOpen(undefined, false);\n      }\n    }\n  }\n\n  saveAndClose() {\n    this.toggle();\n    this.saveTriggered.emit();\n  }\n\n  openWithTemplate() {\n    this.overlayRef = this.overlay.create(\n      new OverlayConfig({\n        hasBackdrop: true,\n        panelClass: ['o-settings__popup'],\n        backdropClass: 'backdrop'\n      })\n    );\n    this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n    this.overlayRef.backdropClick().subscribe((_) => this.toggle());\n    this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n  }\n  focusCrossElement() {\n    this.cross.nativeElement.focus();\n  }\n\n  focusValidation() {\n    this.validate.nativeElement.focus();\n  }\n\n  ngOnDestroy(): void {\n    this.openSub?.unsubscribe();\n  }\n}\n","<button\n  type=\"button\"\n  (click)=\"toggle()\"\n  class=\"a-btn a-btn--icon-text -settings\"\n  [yapTooltip]=\"infoTooltipSearch\"\n  aria-describedby=\"infoTooltipSearch_settings\"\n>\n  <yap-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></yap-icon>\n  <span>{{ '@yap.widget.settings.title' | i18n }}</span>\n</button>\n\n<ng-template #template>\n  <div class=\"o-settings__popup\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_setting\">\n    <div class=\"o-settings__popup__header\">\n      <h2 class=\"a-h2\">{{ '@yap.widget.settings.title' | i18n }}</h2>\n      <button\n        type=\"button\"\n        #cross\n        (keydown.shift.tab)=\"focusValidation()\"\n        (click)=\"toggle()\"\n        class=\"a-btn a-btn--icon-only -close\"\n      >\n        <yap-icon iconSvg=\"close\"></yap-icon>\n        <span class=\"u-visually-hidden\">{{ '@yap.action.close' | i18n }}</span>\n      </button>\n    </div>\n\n    <div class=\"o-settings__popup__content\">\n      <ng-content></ng-content>\n    </div>\n\n    <div class=\"o-settings__popup__footer\">\n      <button\n        (click)=\"saveAndClose()\"\n        [class.btn-primary__disable]=\"isDisable\"\n        [disabled]=\"isDisable\"\n        (keydown.tab)=\"focusCrossElement()\"\n        class=\"a-btn a-btn--primary\"\n        #validate\n      >\n        {{ '@yap.widget.settings.validateUpdating' | i18n }}\n      </button>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #infoTooltipSearch>\n  <div class=\"m-tooltip\" aria-hidden=\"true\" role=\"tooltip\" id=\"infoTooltipSearch_settings\">\n    <span class=\"m-tooltip__text\"> {{ '@yap.widget.tooltip.openParameter' | i18n }}</span>\n  </div>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Filter } from '../../core/model/filter.interface';\nimport { SubscriptionnerDirective } from '../components/subscriptionner.directive';\nimport { DashboardActions } from '../store/dashboard.actions';\n\n@Component({ selector: 'yap-base-filter', template: '' })\nexport class BaseFilterComponent extends SubscriptionnerDirective {\n  @Input() filter?: Filter;\n  type!: string;\n\n  constructor(protected store: Store) {\n    super();\n    this.type = 'base';\n  }\n\n  updateFilter(value: any) {\n    if (this.filter) {\n      this.filter.attributes.forEach((attribute) => {\n        this.store.dispatch(\n          DashboardActions.updateFilterValue({\n            datasourceId: attribute.datasource,\n            id: this.filter?.id ?? '',\n            value\n          })\n        );\n      });\n    }\n  }\n}\n","import { ComponentRef, Inject, Injectable, InjectionToken, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, from, map, Observable, of } from 'rxjs';\nimport { ConfigSelectors } from '../../core/store/config/config.selectors';\nimport { BaseFilterComponent } from './base-filter.component';\n\nexport const FILTER_DEFINITION = new InjectionToken<string>('Filter definition');\n\nexport type FilterStaticDefinition = {\n  name: string;\n  component: Type<BaseFilterComponent>;\n};\nexport type FilterLazyDefinition = {\n  name: string;\n  load: () => Promise<(injector: Injector) => Type<BaseFilterComponent>>;\n};\nexport type FilterDefinition = FilterStaticDefinition | FilterLazyDefinition;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FilterFactoryService {\n  reference$ = new BehaviorSubject<{ [key: string]: FilterDefinition }>({});\n  types$: Observable<string[]>;\n  //TODO changer le any\n  defs: { [p: string]: any } = {};\n  moduleRefCache = {} as { [manifestType: string]: Type<BaseFilterComponent> };\n\n  constructor(\n    private injector: Injector,\n    @Inject(FILTER_DEFINITION) reference: { [key: string]: FilterDefinition },\n    private store: Store\n  ) {\n    this.putDefinitions(reference);\n    this.types$ = this.reference$.pipe(map((defs) => Object.keys(defs)));\n    this.store.select(ConfigSelectors.filterDefinitions).subscribe((defs) => (this.defs = defs));\n  }\n\n  resolveComponent(_type: string) {\n    let type = _type;\n    if (this.moduleRefCache[type]) {\n      return of(this.moduleRefCache[type]);\n    }\n    if (!this.reference$.getValue()[type]) {\n      type = 'default';\n    }\n    // @ts-ignore\n    if (this.reference$.getValue()[type].load === undefined) {\n      this.moduleRefCache[type] = (this.reference$.getValue()[type] as FilterStaticDefinition).component;\n      return of(this.moduleRefCache[type]);\n    } else {\n      return from(\n        (this.reference$.getValue()[type] as FilterLazyDefinition).load().then((fn) => {\n          this.moduleRefCache[type] = fn(this.injector);\n          return this.moduleRefCache[type];\n        })\n      );\n    }\n  }\n\n  private putDefinitions(definitions: { [key: string]: FilterDefinition }) {\n    this.reference$.next({\n      ...this.reference$.getValue(),\n      ...definitions\n    });\n  }\n\n  generateFilter(\n    type: string,\n    parentInjector: Injector,\n    container: ViewContainerRef\n  ): Observable<ComponentRef<BaseFilterComponent>> {\n    const definition = this.defs[type] ?? { type };\n    return this.resolveComponent(definition.type).pipe(\n      map((component) => {\n        const tmpComponent = container.createComponent<BaseFilterComponent>(component);\n        return tmpComponent;\n      })\n    );\n  }\n\n  addFilterDefinitions(defs: { [key: string]: FilterDefinition }) {\n    this.reference$.next({ ...this.reference$.getValue(), ...defs });\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  Injector,\n  Input,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject } from 'rxjs';\nimport { Filter } from '../../../../core/model/filter.interface';\nimport { SubscriptionnerDirective } from '../../../components/subscriptionner.directive';\nimport { FilterFactoryService } from '../../filter-factory.service';\n\n@Component({\n  selector: 'yap-filter-instanciator',\n  templateUrl: './filter-instanciator.component.html'\n})\nexport class FilterInstanciatorComponent extends SubscriptionnerDirective implements AfterViewInit {\n  filter$ = new BehaviorSubject<Filter | null>(null);\n\n  @Input() set filter(filter: Filter) {\n    this.filter$.next(filter);\n  }\n  @ViewChild('filters', { read: ViewContainerRef }) filterContainerRef!: ViewContainerRef;\n  constructor(\n    private store: Store,\n    private injector: Injector,\n    private filterFactoryService: FilterFactoryService,\n    private changeDetector: ChangeDetectorRef\n  ) {\n    super();\n  }\n\n  ngAfterViewInit() {\n    this.subscriptions.add(\n      this.filter$.subscribe((filter) => {\n        if (filter) {\n          const component$ = this.filterFactoryService.generateFilter(\n            filter.type,\n            this.injector,\n            this.filterContainerRef\n          );\n          component$.subscribe((component) => {\n            component.instance.filter = filter;\n            this.changeDetector.detectChanges();\n          });\n        }\n      })\n    );\n  }\n}\n","<ng-template #filters></ng-template>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { mergeMap, Observable, of } from 'rxjs';\nimport { catchError, map, withLatestFrom } from 'rxjs/operators';\nimport { v4 as uuidv4 } from 'uuid';\nimport { YapVisibility } from '../../core/components/share/share.model';\nimport { YapSnackbarService } from '../../core/components/snackbar/snackbar.service';\nimport { YapI18nService } from '../../core/i18n/i18n.service';\nimport { GlobalManifest, ManifestDescription } from '../../core/model/manifest.interface';\nimport { ConfigSelectors } from '../../core/store/config/config.selectors';\nimport { DashboardSelectors } from './dashboard.selectors';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ManifestService {\n  constructor(\n    private httpClient: HttpClient,\n    private store: Store<any>,\n    private snackBar: YapSnackbarService,\n    private translateService: YapI18nService\n  ) {}\n\n  list(): Observable<ManifestDescription[]> {\n    return this.store.select(ConfigSelectors.refUrl).pipe(\n      mergeMap((url) => this.httpClient.get<ManifestDescription[]>(encodeURI(`${url}/users/me/dashboards`))),\n      catchError((error) => {\n        if (error.error instanceof Error) {\n          // A client-side or network error occurred\n          console.error('A frontend error occurred:', error.error.message);\n          this.snackBar.open({\n            type: 'error',\n            message: this.translateService.instant('@yap.manifest.get.errorFront', { msg: error.error.message })\n          });\n        } else {\n          // The backend returned an unsuccessful response code.\n          console.error(`Backend returned code ${error.status}, body was: ${JSON.stringify(error.error)}`);\n          if (error.code !== 204) {\n            this.snackBar.open({\n              type: 'error',\n              message: this.translateService.instant('@yap.manifest.get.errorBack', {\n                code: error.status\n              })\n            });\n          }\n        }\n        return of([]);\n      })\n    );\n  }\n\n  get(id: string): Observable<GlobalManifest> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(\n        mergeMap((url) =>\n          this.httpClient.get<GlobalManifest>(encodeURI(`${url}/users/me/dashboards/id/${id}/manifest`))\n        )\n      );\n  }\n\n  save(\n    name: string,\n    manifest: GlobalManifest,\n    visibility: YapVisibility,\n    id?: string,\n    description?: string,\n    image?: string,\n    cover?: boolean\n  ): Observable<{ id: string; name: string; manifest: GlobalManifest }> {\n    return this.store.select(ConfigSelectors.refUrl).pipe(\n      mergeMap((url) =>\n        this.httpClient.post<{ id: string; description: string; name: string; manifest: GlobalManifest }>(\n          encodeURI(`${url}/users/me/dashboards`),\n          {\n            id: id === undefined || id.length === 0 ? uuidv4() : id,\n            name,\n            description,\n            manifest,\n            image,\n            visibility,\n            cover,\n            datasets: [\n              ...new Set(\n                manifest.windows\n                  .map((window) => window.widgets.map((widget) => widget.datasource))\n                  .flat(3)\n                  .filter((dataset) => !!dataset)\n              )\n            ]\n          }\n        )\n      )\n    );\n  }\n\n  delete(id: string): Observable<void> {\n    return this.store\n      .select(ConfigSelectors.refUrl)\n      .pipe(mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/users/me/dashboards/id/${id}`))));\n  }\n\n  default(id: string): Observable<boolean> {\n    return this.store.select(ConfigSelectors.refUrl).pipe(\n      withLatestFrom(this.store.select(DashboardSelectors.manifestsList)),\n      mergeMap(([url, manifests]) => {\n        const actual = manifests.find((manifest) => manifest.id === id);\n        if (!!actual && !actual.default) {\n          return this.httpClient\n            .put<ArrayBuffer>(encodeURI(`${url}/users/me/dashboards/id/${id}/default`), {})\n            .pipe(map(() => true));\n        } else {\n          return this.httpClient\n            .delete<ArrayBuffer>(encodeURI(`${url}/users/me/dashboards/default`), {})\n            .pipe(map(() => false));\n        }\n      })\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { mergeMap, Observable, of } from 'rxjs';\nimport { catchError, debounceTime, map, withLatestFrom } from 'rxjs/operators';\nimport { ConfigSelectors } from '../../core/store/config/config.selectors';\nimport { DashboardActions } from '../store/dashboard.actions';\nimport { DashboardSelectors } from '../store/dashboard.selectors';\nimport { ManifestService } from '../store/manifest.service';\n\n@Injectable()\nexport class DefaultViewGuard implements CanActivate {\n  constructor(private manifestService: ManifestService, private router: Router, private store: Store) {}\n\n  canActivate(\n    route: ActivatedRouteSnapshot,\n    state: RouterStateSnapshot\n  ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n    return this.store.select(ConfigSelectors.defaultViewGuardUsed).pipe(\n      debounceTime(500),\n      withLatestFrom(this.store.select(DashboardSelectors.rank)),\n      mergeMap(([used, rank]) =>\n        used || rank > 0\n          ? of(true)\n          : this.manifestService.list().pipe(\n              map((descriptions) => {\n                const defaultView = descriptions.find((description) => description.default);\n                if (!!defaultView) {\n                  this.store.dispatch(DashboardActions.loadAndActivateManifest({ id: defaultView.id }));\n                  console.log(`DefaultViewGuard: opening default view ${defaultView.name}.`);\n                } else {\n                  console.log('DefaultViewGuard: no default view found.');\n                }\n                return true;\n              })\n            )\n      ),\n      catchError((err) => {\n        console.error('DefaultViewGuard: error guard processing', err);\n        return of(true);\n      })\n    );\n  }\n}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ConfigActions } from '../../core/store/config/config.actions';\nimport { DashboardComponent } from '../components/dashboard.component';\n\nexport const BASE_CONFIG = new InjectionToken<string>('base config');\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DashboardInitService {\n  constructor(\n    private store: Store<any>,\n    private router: Router,\n    @Inject(BASE_CONFIG)\n    private baseConfig: { mapUrl?: string; yapUrl?: string; path?: string; wsUrl?: string; geoServerUrl?: string }\n  ) {}\n\n  init() {\n    this.store.dispatch(\n      ConfigActions.defineUrls({\n        mapUrl: this.baseConfig.mapUrl,\n        yapUrl: this.baseConfig.yapUrl,\n        wsUrl: this.baseConfig.wsUrl,\n        geoServerUrl: this.baseConfig.geoServerUrl\n      })\n    );\n\n    if (!!this.baseConfig.path) {\n      this.router.config.push({ path: this.baseConfig.path, component: DashboardComponent });\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { Store } from '@ngrx/store';\nimport { YapI18nService } from '../../core/i18n/i18n.service';\nimport { DashboardSelectors } from './dashboard.selectors';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class YapTitleService {\n  rank: number = 0;\n  displayPageNumber = true;\n  pageCount = 0;\n\n  constructor(private title: Title, private translateService: YapI18nService, private store: Store) {\n    this.store.select(DashboardSelectors.rank).subscribe((rank) => (this.rank = rank));\n    this.store.select(DashboardSelectors.tenants).subscribe((tenants) => (this.pageCount = tenants.length));\n  }\n\n  setDisplayPageNumber(display: boolean) {\n    this.displayPageNumber = display;\n  }\n\n  changeTitle(key?: string) {\n    const nextTitle = !!key ? this.translateService.instant(key) : this.title.getTitle().split('[')[0];\n    const pageNumber =\n      this.displayPageNumber && this.pageCount > 1\n        ? `[${this.translateService.instant('@yap.view.name', {\n            rank: this.rank + 1\n          })}]`\n        : '';\n    this.title.setTitle(`${nextTitle} ${pageNumber}`);\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { map, mergeMap, Observable } from 'rxjs';\nimport { ConfigSelectors } from '../../core/store/config/config.selectors';\n\nexport interface Geometry {\n  type: string;\n  coordinates: number[];\n}\n\nexport interface Properties {\n  label: string;\n  score: number;\n  housenumber: string;\n  id: string;\n  type: string;\n  name: string;\n  postcode: string;\n  citycode: string;\n  x: number;\n  y: number;\n  city: string;\n  context: string;\n  importance: number;\n  street: string;\n}\n\nexport interface Feature {\n  type: string;\n  geometry: Geometry;\n  properties: Properties;\n}\n\nexport interface GouvResponse {\n  type: string;\n  version: string;\n  features: Feature[];\n  attribution: string;\n  licence: string;\n  query: string;\n  limit: number;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class GeocodingService {\n  constructor(private httpClient: HttpClient, private store: Store) {}\n\n  fromAddress(address: string): Observable<{ latLon: number[]; pointAddress: string }> {\n    const preparedAddress = address.replace(/\\s/g, '+');\n    return this.store.select(ConfigSelectors.geocodingUrl).pipe(\n      mergeMap((url) =>\n        this.httpClient.get<GouvResponse>(`${url}/search/?text=${preparedAddress}`).pipe(\n          map((result) => ({\n            latLon: result.features[0].geometry.coordinates.reverse(),\n            pointAddress: result.features[0].properties.label\n          }))\n        )\n      )\n    );\n  }\n\n  fromLatLong(latLng: number[]): Observable<{ latLon: number[]; pointAddress: string }> {\n    return this.store.select(ConfigSelectors.geocodingUrl).pipe(\n      mergeMap((url) =>\n        this.httpClient\n          .get<GouvResponse>(`${url}/reverse/`, {\n            params: {\n              lat: latLng[0],\n              lon: latLng[1]\n            }\n          })\n          .pipe(\n            map((result) => ({\n              latLon: result.features[0].geometry.coordinates.reverse(),\n              pointAddress: result.features[0].properties.label\n            }))\n          )\n      )\n    );\n  }\n\n  getWmsFeatures(url: string): Observable<{ features: any[] }> {\n    return this.httpClient.get(url).pipe(map((json: any) => json));\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { filter, interval, Subscription } from 'rxjs';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { SearchActions } from '../../core/store/search/search.actions';\nimport { DashboardSelectors } from './dashboard.selectors';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RefreshService {\n  subscription?: Subscription;\n\n  constructor(private store: Store) {}\n\n  stop() {\n    this.subscription?.unsubscribe();\n  }\n\n  start() {\n    if (!this.subscription) {\n      this.subscription = interval(1000)\n        .pipe(\n          withLatestFrom(this.store.select(DashboardSelectors.refreshRates)),\n          map(([interval, refreshRates]) =>\n            Object.keys(refreshRates)\n              .filter((key) => refreshRates[key] !== undefined && refreshRates[key] !== 0)\n              .filter((key) => interval % refreshRates[key] === 0)\n          ),\n          filter((rs) => rs.length > 0)\n        )\n        .subscribe((resultSetsToUpdate) => {\n          resultSetsToUpdate.forEach((rs) => {\n            this.store.dispatch(SearchActions.getDatasourceItems({ id: rs }));\n          });\n        });\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, merge, of, throwError } from 'rxjs';\nimport { catchError, debounceTime, filter, map, mergeMap, tap, withLatestFrom } from 'rxjs/operators';\nimport { YapVisibilityType } from '../../core/components/share/share.model';\nimport { YapSnackbarService } from '../../core/components/snackbar/snackbar.service';\nimport { YapI18nService } from '../../core/i18n/i18n.service';\nimport { DashboardGridLayout, GlobalManifest, WidgetManifest } from '../../core/model/manifest.interface';\nimport { ChartWidgetOptions } from '../../core/model/widget-chart-manifest.interface';\nimport { MapWidgetOptions } from '../../core/model/widget-map-manifest.interface';\nimport { ItemService } from '../../core/store/item/item.service';\nimport { SearchActions } from '../../core/store/search/search.actions';\nimport { EXPLORE_NAMED_QUERY_ID } from '../../core/store/search/search.constants';\nimport { SearchService } from '../../core/store/search/search.service';\nimport { ToolboxManifestService } from '../../core/toolbox/toolbox-manifest.service';\nimport { BusService } from '../action-bus/service/bus.service';\nimport { WidgetPlacementUtils } from '../components/widgets/widget-placement/widget-placement.utils';\nimport { ResultsetUtils } from '../resultset-utils';\nimport { DashboardInitService } from './dashboard-init.service';\nimport { DashboardActions } from './dashboard.actions';\nimport { DashboardSelectors } from './dashboard.selectors';\nimport { GeocodingService } from './geocoding.service';\nimport { ManifestService } from './manifest.service';\nimport { RefreshService } from './refresh.service';\nimport { YapTitleService } from './title.service';\n\n@Injectable()\nexport class DashboardEffects {\n  join$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.join),\n      withLatestFrom(\n        this.store.select(DashboardSelectors.rank),\n        this.store.select(DashboardSelectors.tenants),\n        this.store.select(DashboardSelectors.globalManifest),\n        this.store.select(DashboardSelectors.resultSets),\n        this.store.select(DashboardSelectors.selectedItemIds),\n        this.store.select(DashboardSelectors.presentation)\n      ),\n      filter(([action, rank, tenants, manifest, resultSets]) => rank === 0),\n      map(([action, rank, tenants, manifest, resultSets, selectedIds, presentation]) =>\n        DashboardActions.updateManifestAfterTenantJoin({\n          tenants, // we already have added tenant in the reduce of the \"join\" action\n          manifest: {\n            ...manifest,\n            windows: manifest.windows\n          },\n          resultSets,\n          selectedIds,\n          joining: true,\n          presentation\n        })\n      )\n    )\n  );\n\n  leave$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.leave),\n      withLatestFrom(\n        this.store.select(DashboardSelectors.rank),\n        this.store.select(DashboardSelectors.tenants),\n        this.store.select(DashboardSelectors.globalManifest),\n        this.store.select(DashboardSelectors.selectedItemIds)\n      ),\n      filter(([action, rank, tenants, manifest]) => rank === 0 || (tenants[0] === action.sender && rank === 1)),\n      map(([action, rank, tenants, manifest, selectedIds]) => {\n        const leaverRank = tenants.indexOf(action.sender);\n        const newTenantsList = [...tenants];\n        const newWindowList = [...manifest.windows];\n        if (leaverRank > -1) {\n          newTenantsList.splice(leaverRank, 1);\n          newWindowList.splice(leaverRank, 1);\n        }\n\n        return DashboardActions.updateManifestAfterTenantLeave({\n          tenants: newTenantsList,\n          manifest: {\n            ...manifest,\n            windows: newWindowList\n          },\n          selectedIds\n        });\n      })\n    )\n  );\n  fetchStaticManifest$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.fetchStaticManifest),\n      mergeMap((action) =>\n        this.manifestService\n          .get(action.id)\n          .pipe(map((staticManifest) => DashboardActions.updateStaticManifest({ staticManifest })))\n      )\n    )\n  );\n\n  loadAndActivateManifest$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.loadAndActivateManifest, DashboardActions.loadManifest),\n      withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.selectedItemIds)),\n      filter(([action, rank]) => rank === 0),\n      mergeMap(([action, rank, selectedIds]) =>\n        this.manifestService.get(action.id).pipe(\n          mergeMap((manifest) => {\n            return action.type === DashboardActions.loadAndActivateManifest.type\n              ? [\n                  DashboardActions.updateManifestAfterFetch({ manifest, manifestId: action.id, selectedIds }),\n                  DashboardActions.followManifestRoute()\n                ]\n              : [DashboardActions.updateManifestWithoutActivation({ manifest, manifestId: action.id, selectedIds })];\n          })\n        )\n      )\n    )\n  );\n\n  clearManifest$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.clearManifest),\n      withLatestFrom(\n        this.store.select(DashboardSelectors.globalManifest),\n        this.store.select(DashboardSelectors.selectedItemIds)\n      ),\n      map(([action, manifest, selectedIds]) =>\n        DashboardActions.updateManifestAfterFetch({ manifest, manifestId: '', selectedIds })\n      )\n    )\n  );\n\n  downloadManifest$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType(DashboardActions.downloadManifest),\n        tap((action) =>\n          this.manifestService.get(action.id).subscribe((manifest: GlobalManifest) => {\n            const dataStr = 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(manifest));\n            const dlAnchorElem = document.createElement('a');\n            dlAnchorElem.setAttribute('href', dataStr);\n            dlAnchorElem.setAttribute('download', `${action.name}.json`);\n            dlAnchorElem.click();\n          })\n        )\n      ),\n    { dispatch: false }\n  );\n\n  followManifestRoute$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType(DashboardActions.followManifestRoute),\n        withLatestFrom(this.store.select(DashboardSelectors.windowManifest)),\n        tap(([action, manifest]) => {\n          if (manifest.route) {\n            this.router.navigateByUrl(manifest.route);\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  requestManifestRoute$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.requestAllRoutes),\n      map(() => DashboardActions.updateRouteManifest({ route: this.router.url }))\n    )\n  );\n\n  assertResultSets$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.assertResultSets),\n      withLatestFrom(\n        this.store.select(DashboardSelectors.globalManifest),\n        this.store.select(DashboardSelectors.resultSets),\n        this.store.select(DashboardSelectors.resultSetsParams),\n        this.store.select(DashboardSelectors.quickOrder)\n      ),\n      mergeMap(([action, manifest, resultSets, resultSetsParams, quickOrder]) => {\n        if (!action.id) {\n          return (\n            (\n              [\n                ...new Set(\n                  manifest.windows\n                    .map((winManifest) => (winManifest ?? {}).widgets ?? [])\n                    .reduce((p, c) => [...p, ...c], [])\n                    .map((widManifest) => widManifest.datasource)\n                )\n              ] as (string | string[])[]\n            ).reduce((p, c) => [...p, ...(Array.isArray(c) ? c : [c])], []) as string[]\n          )\n            .filter(\n              (resultSet) =>\n                !!resultSet &&\n                resultSet !== '' &&\n                (!resultSets[resultSet] ||\n                  resultSetsParams[resultSet] !== this.searchService.getItemsSerializedParams(resultSet, quickOrder))\n            )\n            .map((resultSet) => SearchActions.getDatasourceItems({ id: resultSet }));\n        } else {\n          if (!resultSets[action.id]) {\n            return [SearchActions.getDatasourceItems({ id: action.id as string })];\n          }\n          return [];\n        }\n      })\n    )\n  );\n\n  resize$ = createEffect(() =>\n    this.actions$.pipe(\n      // forward new manifest after any of these types of actions\n      ofType(\n        DashboardActions.updateDashboardManifest,\n        DashboardActions.moveWidget,\n        DashboardActions.updateWidgetManifest\n      ),\n      // @ts-ignore\n      filter((action) => !action.sender),\n      withLatestFrom(\n        this.store.select(DashboardSelectors.globalManifest),\n        this.store.select(DashboardSelectors.tenants),\n        this.store.select(DashboardSelectors.selectedItemIds)\n      ),\n      map(([action, manifest, tenants, selectedIds]) => {\n        const params = {\n          manifest,\n          selectedIds\n        } as { manifest: GlobalManifest; tenants: string[]; selectedIds: string[] };\n        if (!!tenants && tenants.length > 1) {\n          params.tenants = tenants;\n        }\n        return DashboardActions.updateManifestAfterResize(params);\n      })\n    )\n  );\n\n  startMissingViewAfterViewUpdate$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(\n        DashboardActions.updateManifest,\n        DashboardActions.updateManifestAfterFetch,\n        DashboardActions.updateManifestAfterResize,\n        DashboardActions.updateManifestAfterTenantLeave,\n        DashboardActions.updateManifestAfterTenantJoin,\n        DashboardActions.explore,\n        DashboardActions.detail,\n        DashboardActions.restoreInitialManifest,\n        DashboardActions.createTab\n      ),\n      withLatestFrom(this.store.select(DashboardSelectors.rank)),\n      filter(([action, rank]) => rank === 0),\n      mergeMap((action) => [\n        DashboardActions.startingMissingViews(),\n        DashboardActions.assertResultSets({}),\n        DashboardActions.solveCollisions()\n      ])\n    )\n  );\n\n  updateTitle$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType(\n          DashboardActions.updateManifest,\n          DashboardActions.updateManifestAfterTenantJoin,\n          DashboardActions.updateManifestAfterTenantLeave,\n          DashboardActions.updateManifestAfterFetch,\n          DashboardActions.updateManifestAfterResize,\n          DashboardActions.declareSenderId\n        ),\n        withLatestFrom(this.store.select(DashboardSelectors.rank)),\n        tap(([action, rank]) => {\n          this.titleService.changeTitle();\n        })\n      ),\n    { dispatch: false }\n  );\n\n  openOther$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType(DashboardActions.startingMissingViews),\n        withLatestFrom(\n          this.store.select(DashboardSelectors.rank),\n          this.store.select(DashboardSelectors.tenants),\n          this.store.select(DashboardSelectors.globalManifest)\n        ),\n        debounceTime(1000),\n        filter(([action, rank, tenants, manifest]) => rank === 0),\n        tap(([action, rank, tenants, manifest]) => {\n          manifest.windows.forEach((windowManifest, index) => {\n            if (!tenants[index]) {\n              // If no window is opened for this part, then open one\n              window.open(windowManifest.route ?? window.location.pathname, '_blank');\n            }\n          });\n        })\n      ),\n    { dispatch: false }\n  );\n\n  saveManifest$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.saveManifest),\n      withLatestFrom(this.store.select(DashboardSelectors.globalManifest)),\n      mergeMap(([action, currentManifest]) =>\n        this.manifestService\n          .save(\n            action.name,\n            action.manifest ?? currentManifest,\n            action.visibility ?? { type: YapVisibilityType.PRIVATE },\n            action.id,\n            action.description,\n            action.image,\n            action.cover\n          )\n          .pipe(\n            tap(() =>\n              this.snackBar.open({\n                message: this.translateService.instant('@yap.toolbox.manifest.saved', { viewId: action.name }),\n                type: 'success'\n              })\n            ),\n            map(() => action.manifest ?? currentManifest),\n            catchError((error) => {\n              this.snackBar.open({\n                message: this.translateService.instant('@yap.toolbox.manifest.saveErrorCode.' + error.error.code, {\n                  name: action.name\n                }),\n                type: 'error'\n              });\n              return throwError(error);\n            })\n          )\n      ),\n      mergeMap((manifest) => [\n        DashboardActions.fetchManifestsList(),\n        DashboardActions.setInitialPresentation({ initial: manifest })\n      ])\n    )\n  );\n\n  defaultManifest$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.defaultManifest),\n      mergeMap((action) =>\n        this.manifestService.default(action.id).pipe(\n          tap((res) => {\n            this.snackBar.open({\n              message: this.translateService.instant(\n                res ? '@yap.toolbox.manifest.defaulted' : '@yap.toolbox.manifest.undefaulted',\n                { viewId: action.name }\n              ),\n              type: 'success'\n            });\n          })\n        )\n      ),\n      map(() => DashboardActions.fetchManifestsList())\n    )\n  );\n\n  listManifests$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.fetchManifestsList),\n      withLatestFrom(this.store.select(DashboardSelectors.rank)),\n      filter(([action, rank]) => rank === 0 || rank === -1),\n      mergeMap(([action, rank]) =>\n        this.manifestService.list().pipe(map((manifests) => DashboardActions.updateManifestsList({ manifests })))\n      )\n    )\n  );\n\n  deleteManifest$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.deleteManifest),\n      mergeMap((action) =>\n        this.manifestService.delete(action.id).pipe(map(() => DashboardActions.fetchManifestsList()))\n      )\n    )\n  );\n\n  fetchObjectsDetails$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.fetchObjectsDetails),\n      mergeMap((action) => merge(...action.ids.map((id) => this.itemService.get(id)))),\n      map((item) => DashboardActions.updateObjectsDetails({ list: { [item.id]: item } }))\n    )\n  );\n\n  proximitySearch$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.proximity),\n      withLatestFrom(this.store.select(DashboardSelectors.resultSets)),\n      mergeMap(([action, resultSets]) =>\n        this.itemService.proximity(action.id).pipe(\n          map((proxRs) => {\n            return DashboardActions.updateResultSet({\n              id: action.targetResultSet,\n              resultSet: ResultsetUtils.mergeResultSets(proxRs, resultSets[action.targetResultSet])\n            });\n          })\n        )\n      )\n    )\n  );\n\n  explore$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.explore),\n      mergeMap((action) => [DashboardActions.proximity({ id: action.id, targetResultSet: EXPLORE_NAMED_QUERY_ID })])\n    )\n  );\n\n  searchAddress$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.searchAddressForPoint),\n      mergeMap((action) =>\n        this.geocodingService.fromLatLong(action.coordinates).pipe(\n          map((address) => DashboardActions.displayAddress({ address })),\n          catchError((error) => {\n            this.snackBar.open({\n              type: 'error',\n              message: this.translateService.instant('@yap.context.errorSearchAddress')\n            });\n            return throwError(error);\n          })\n        )\n      )\n    )\n  );\n\n  detailAsLoadInWidget$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.detail),\n      map((action) =>\n        DashboardActions.addWidgetToPresentation({\n          id: '',\n          widgetType: 'detail',\n          additionalOptions: {\n            itemIds: action.ids\n          }\n        })\n      )\n    )\n  );\n\n  updateWidgetInPresentation$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.updateWidgetInPresentation),\n      withLatestFrom(this.store.select(DashboardSelectors.globalManifest)),\n      mergeMap(([action, manifest]) => {\n        // Check if a widget with same datasource and type already exist in current presentation\n        const widgetToMatch = this.toolboxManifestService.get(action.widgetType);\n\n        let additionalMatchingFn: (optionsToMatch: any, options: any) => boolean;\n        switch (widgetToMatch.type) {\n          case 'chart':\n            additionalMatchingFn = (optionsToMatch: ChartWidgetOptions, options: ChartWidgetOptions) =>\n              optionsToMatch.type === options.type && optionsToMatch.subType === options.subType;\n            break;\n          case 'map':\n            additionalMatchingFn = (optionsToMatch: MapWidgetOptions, options: MapWidgetOptions) =>\n              !!options.layers!.find((layer) => layer.type === optionsToMatch.layers![0].type);\n            break;\n          default:\n            additionalMatchingFn = (optionsToMatch: any, options: any) => true;\n        }\n\n        const matchingWidgets = manifest.windows.map((window) =>\n          window.widgets\n            .filter((widget) => widget.type === widgetToMatch.type)\n            .filter(\n              (widget) =>\n                widget.datasource === action.id ||\n                (widget.datasource![0] === action.id && widget.datasource!.length === 1)\n            )\n            .find((widget) => additionalMatchingFn(widgetToMatch.options, widget.options))\n        );\n\n        const alreadyMatchedWidget = matchingWidgets.find((window) => !!window);\n\n        const result = [];\n        if (alreadyMatchedWidget) {\n          result.push(\n            DashboardActions.multiSnackBar({\n              message: {\n                type: 'success',\n                message: this.translateService.instant('@yap.widget.updatedInView', {\n                  index: matchingWidgets.findIndex((widget) => !!widget) + 1\n                })\n              }\n            })\n          );\n        } else {\n          result.push(DashboardActions.addWidgetToPresentation({ ...action }));\n        }\n\n        return result;\n      })\n    )\n  );\n\n  addWidgetToPresentation$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.addWidgetToPresentation),\n      withLatestFrom(\n        this.store.select(DashboardSelectors.gridLayout),\n        this.store.select(DashboardSelectors.globalManifest),\n        this.store.select(DashboardSelectors.rank),\n        this.store.select(DashboardSelectors.dashboardCellParams),\n        this.store.select(DashboardSelectors.selectedItemIds)\n      ),\n      map(([action, layout, _globalManifest, rank, params, selectedIds]) => {\n        const manifestGlobal = JSON.parse(JSON.stringify(_globalManifest)) as GlobalManifest;\n\n        // Create new configuration\n        const newOptions = this.toolboxManifestService.get(action.widgetType) ?? {\n          options: {},\n          type: action.widgetType\n        };\n        const newWidgetManifest = {\n          ...newOptions,\n          layout: {},\n          options: {\n            ...newOptions.options,\n            ...action.additionalOptions\n          }\n        } as WidgetManifest;\n        if (!this.toolboxManifestService.isModel(action.widgetType)) {\n          newWidgetManifest.header = { datasourceSelection: false };\n        }\n\n        if (!!action.id) {\n          newWidgetManifest.datasource = action.id;\n        }\n\n        let found: { actualRank: number; widget: WidgetManifest } | null = null;\n        // Try to find a spot in windows (starting by current rank, then in others)\n        const sequence = WidgetPlacementUtils.swapArrayElements(\n          new Array(manifestGlobal.windows.length).fill(0).map((_, idx, array) => idx),\n          0,\n          rank\n        );\n        // Trying all placement options\n        for (const actualRank of sequence) {\n          const windowLayout = manifestGlobal.windows[actualRank].grid?.layout ?? DashboardGridLayout.FULL;\n          const options = WidgetPlacementUtils.placementOptions(newWidgetManifest, windowLayout, params);\n          if (!found) {\n            for (const option of options) {\n              if (!found) {\n                // Are we disjoint from all other widgets ?\n                const isDisjointFromAll = (manifestGlobal.windows[actualRank].widgets ?? [])\n                  .map((widget) => WidgetPlacementUtils.areDisjoint(widget, option))\n                  .reduce((p, c) => p && c, true);\n                if (isDisjointFromAll) {\n                  // Found a disjoint placement !\n                  found = { actualRank, widget: option } as { actualRank: number; widget: WidgetManifest };\n                }\n              }\n            }\n          }\n        }\n\n        if (!!found) {\n          const placeWeFound = found as { actualRank: number; widget: WidgetManifest };\n          manifestGlobal.windows[placeWeFound.actualRank].widgets.push(placeWeFound.widget);\n        } else {\n          const currentWindowLayout = manifestGlobal.windows[rank].grid?.layout ?? DashboardGridLayout.FULL;\n\n          // si non trouvé : nouvelle page, première position suggérée\n          const firstProposedLayout = WidgetPlacementUtils.placementOptions(\n            newWidgetManifest,\n            currentWindowLayout,\n            params\n          )[0];\n\n          manifestGlobal.windows.push({ widgets: [firstProposedLayout], grid: { layout: currentWindowLayout } });\n        }\n\n        if (action.alert === undefined || action.alert === true) {\n          const messageAction = DashboardActions.multiSnackBar({\n            message: {\n              type: 'success',\n              message: this.translateService.instant('@yap.widget.addedInView', {\n                index: !!found\n                  ? (found as { actualRank: number; widget: WidgetManifest }).actualRank + 1\n                  : manifestGlobal.windows.length\n              })\n            }\n          });\n          this.store.dispatch(messageAction);\n\n          if (!found) {\n            this.busService.bufferUntilJoined(messageAction);\n          }\n        }\n\n        return DashboardActions.updateManifest({ manifest: manifestGlobal, selectedIds });\n      })\n    )\n  );\n\n  multiSnackBar$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType(DashboardActions.multiSnackBar),\n        tap((action) => this.snackBar.open(action.message))\n      ),\n    { dispatch: false }\n  );\n\n  relaunchAfterOrder$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.quickOrder),\n      map((action) => SearchActions.getDatasourceItems({ id: action.datasourceId }))\n    )\n  );\n\n  propagateGridLayout$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.setGridLayout),\n      withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.windowManifest)),\n      map(([action, rank, windowManifest]) => DashboardActions.propagateGridLayout({ manifest: windowManifest, rank }))\n    )\n  );\n\n  toggleEditionModeIfNotManual$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.setGridLayout),\n      filter((action) => action.layout !== DashboardGridLayout.MANUAL),\n      map(() => DashboardActions.toggleEditionMode({ force: false }))\n    )\n  );\n\n  updateViewAfterFilterValueUpdate$ = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.updateFilterValue),\n      map((action) => SearchActions.getDatasourceItems({ id: action.datasourceId }))\n    )\n  );\n\n  getWmsFeatures = createEffect(() =>\n    this.actions$.pipe(\n      ofType(DashboardActions.getWmsFeatures),\n      mergeMap((action) => combineLatest([of(action), this.geocodingService.getWmsFeatures(action.url)])),\n      map(([action, json]) => {\n        return DashboardActions.addWmsFeatures({\n          features: json.features.map((feature: any) => {\n            const result: any = {\n              oClass: action.oClass,\n              coordinates: action.coordinates,\n              values: { properties: [] }\n            };\n            Object.keys(feature.properties).forEach((property) => {\n              if (feature.properties[property] !== null) {\n                result.values.properties.push({ key: property, value: feature.properties[property] });\n              }\n            });\n            return result;\n          })\n        });\n      })\n    )\n  );\n\n  constructor(\n    private dashboardInitService: DashboardInitService,\n    private actions$: Actions,\n    private store: Store<any>,\n    private manifestService: ManifestService,\n    private itemService: ItemService,\n    private titleService: YapTitleService,\n    private translateService: YapI18nService,\n    private snackBar: YapSnackbarService,\n    private router: Router,\n    private geocodingService: GeocodingService,\n    private refreshService: RefreshService,\n    private toolboxManifestService: ToolboxManifestService,\n    private busService: BusService,\n    private searchService: SearchService\n  ) {\n    dashboardInitService.init();\n    refreshService.start();\n  }\n}\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { Filter } from '../../core/model/filter.interface';\nimport { Item } from '../../core/model/item.interface';\nimport {\n  DashboardGridLayout,\n  GlobalManifest,\n  ManifestDescription,\n  WidgetManifest\n} from '../../core/model/manifest.interface';\nimport { Relation } from '../../core/model/relation.interface';\nimport { ResultOrder } from '../../core/model/result-order.interface';\nimport { ResultSets } from '../../core/model/result-set.interface';\nimport { DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID } from '../../core/store/search/search.constants';\nimport { solveCollisions } from '../components/solve-collisions.function';\nimport { WidgetPlacementUtils } from '../components/widgets/widget-placement/widget-placement.utils';\nimport { DashboardActions, DashboardCellParams, ViewMode } from './dashboard.actions';\nimport {\n  DEFAULT_COLUMNS_NUMBER,\n  DEFAULT_GAP_PX,\n  DEFAULT_ROW_HEIGHT_PX,\n  DEFAULT_ROWS_NUMBER\n} from './dashboard.contants';\n\nexport const dashboardFeatureKey = '@yap/dashboard';\n\nexport interface DashboardState {\n  manifests: {\n    sender: string;\n    tenants: string[];\n    manifest: GlobalManifest;\n    list: ManifestDescription[];\n    currentId: string;\n    staticManifest: GlobalManifest;\n  };\n  presentation: {\n    current: ManifestDescription | undefined;\n    viewMode?: ViewMode;\n    initial: GlobalManifest | undefined;\n  };\n  results: {\n    resultSets: ResultSets;\n    resultSetsParams: { [id: string]: string | undefined };\n    availableDatasourceNames: string[];\n    defaultDatasource: string[];\n    selectedItems: string[];\n    objectDetails: { [id: string]: Item };\n    address: { latLon: number[]; pointAddress: string } | undefined;\n    quickOrder: { [id: string]: ResultOrder | undefined };\n  };\n  dashboard: {\n    params: DashboardCellParams;\n    editionMode: boolean;\n  };\n  wmsFeatures: any[];\n}\n\nexport const dashboardInitialState: DashboardState = {\n  manifests: {\n    sender: '',\n    tenants: [],\n    manifest: {\n      windows: [{ widgets: [] }]\n    },\n    staticManifest: {\n      windows: [{ widgets: [] }]\n    },\n    list: [],\n    currentId: ''\n  },\n  presentation: {\n    current: undefined,\n    initial: undefined\n  },\n  results: {\n    availableDatasourceNames: [],\n    resultSets: {\n      [DEFAULT_NAMED_QUERY_ID]: { items: {}, relations: [] },\n      [EXPLORE_NAMED_QUERY_ID]: { items: {}, relations: [] }\n    },\n    resultSetsParams: {\n      [DEFAULT_NAMED_QUERY_ID]: undefined,\n      [EXPLORE_NAMED_QUERY_ID]: undefined\n    },\n    defaultDatasource: ['current'],\n    selectedItems: [],\n    objectDetails: {},\n    address: undefined,\n    quickOrder: {}\n  },\n  dashboard: {\n    params: {\n      gridWidth: 1,\n      gridHeight: 1,\n      gridGap: DEFAULT_GAP_PX,\n      columns: DEFAULT_COLUMNS_NUMBER,\n      cellHeight: DEFAULT_ROW_HEIGHT_PX,\n      rows: DEFAULT_ROWS_NUMBER,\n      cellWidth: 1,\n      offsetLeft: 0,\n      offsetTop: 0,\n      mobileMode: false\n    },\n    editionMode: false\n  },\n  wmsFeatures: []\n};\n\nconst internalReducer = createReducer<DashboardState>(\n  dashboardInitialState,\n  on(DashboardActions.join, (state, action) => ({\n    ...state,\n    manifests: {\n      ...state.manifests,\n      tenants: [...state.manifests.tenants, action.sender]\n    }\n  })),\n  on(DashboardActions.declareSenderId, (state, action) => ({\n    ...state,\n    manifests: {\n      ...state.manifests,\n      sender: action.sender,\n      tenants: state.manifests.tenants.length === 0 ? action.tenants : state.manifests.tenants\n    }\n  })),\n  on(\n    DashboardActions.updateManifest,\n    DashboardActions.updateManifestAfterTenantJoin,\n    DashboardActions.updateManifestAfterTenantLeave,\n    DashboardActions.updateManifestAfterFetch,\n    DashboardActions.updateManifestAfterResize,\n    DashboardActions.updateManifestWithoutActivation,\n    (state, action) => {\n      // @ts-ignore\n      if (!!action.sender && !state.manifests.tenants.find((tenant) => tenant === action.sender) && !action.joining) {\n        // ignore manifest updates from tenants that have not joined\n        return state;\n      }\n      return {\n        ...state,\n        manifests: {\n          ...state.manifests,\n          tenants: action.tenants ?? state.manifests.tenants,\n          manifest: action.manifest,\n          currentId: action.manifestId ?? state.manifests.currentId\n        },\n        // @ts-ignore\n        presentation: action.presentation ?? state.presentation,\n        results: {\n          ...state.results,\n          selectedItems: action.selectedIds,\n          resultSets: !!action.resultSets\n            ? { ...state.results.resultSets, ...action.resultSets }\n            : state.results.resultSets\n        }\n      };\n    }\n  ),\n  on(DashboardActions.updateRouteManifest, (state, action) => {\n    const senderRank = state.manifests.tenants.indexOf(action.sender ?? state.manifests.sender);\n    const newWindows = [...state.manifests.manifest.windows];\n    newWindows[senderRank] = { ...newWindows[senderRank], route: action.route };\n\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          windows: newWindows\n        }\n      }\n    };\n  }),\n  on(DashboardActions.updateDashboardManifest, (state, action) => {\n    const myRank = state.manifests.tenants.indexOf(state.manifests.sender);\n    const newWindows = [...state.manifests.manifest.windows];\n    newWindows[myRank] = action.manifest;\n\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          windows: newWindows\n        }\n      }\n    };\n  }),\n  on(DashboardActions.updateWidgetManifest, (state, action) => {\n    const myRank = state.manifests.tenants.indexOf(state.manifests.sender);\n    const newWindows = JSON.parse(JSON.stringify(state.manifests.manifest.windows));\n    newWindows[myRank].widgets[action.index] = action.manifest;\n\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          windows: newWindows\n        }\n      }\n    };\n  }),\n  on(DashboardActions.updateResultSet, (state, action) => ({\n    ...state,\n    results: {\n      ...state.results,\n      resultSets: {\n        ...state.results.resultSets,\n        [action.id]: action.resultSet\n      },\n      resultSetsParams: {\n        ...state.results.resultSetsParams,\n        [action.id]: action.params\n      }\n    }\n  })),\n  on(DashboardActions.moveWidget, (state, action) => {\n    const myRank = state.manifests.tenants.indexOf(state.manifests.sender);\n    const newWindows = [...state.manifests.manifest.windows];\n\n    // Creating new current window manifest, without moved widget\n    const myNewWindow = {\n      ...newWindows[myRank],\n      widgets: [...newWindows[myRank].widgets]\n    };\n    const widget = myNewWindow.widgets.splice(action.widgetIndex, 1)[0];\n    newWindows[myRank] = myNewWindow;\n\n    // Creating either a new window manifest or update the target one\n    const targetRank = action.targetIndex;\n    if (targetRank !== -1) {\n      if (!newWindows[targetRank]) {\n        newWindows[targetRank] = {\n          ...newWindows[myRank],\n          widgets: [widget]\n        };\n      } else {\n        newWindows[targetRank] = {\n          ...newWindows[targetRank],\n          widgets: [...(newWindows[targetRank].widgets ?? []), widget]\n        };\n      }\n    } else {\n      // create new window to welcome this widget\n      newWindows.push({\n        ...newWindows[myRank],\n        widgets: [widget]\n      });\n    }\n\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          windows: newWindows\n        }\n      }\n    };\n  }),\n  on(DashboardActions.maximizeWidget, (state, action) => {\n    const myRank = state.manifests.tenants.indexOf(state.manifests.sender);\n    const newWindows = JSON.parse(JSON.stringify(state.manifests.manifest.windows));\n    newWindows[myRank].widgets[action.widgetIndex].layout = {\n      x: 1,\n      y: 1,\n      width: state.dashboard.params.columns,\n      height: state.dashboard.params.rows\n    };\n\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          windows: newWindows\n        }\n      }\n    };\n  }),\n  on(DashboardActions.setAvailableNamedQueries, (state, action) => ({\n    ...state,\n    results: {\n      ...state.results,\n      availableDatasourceNames: action.names,\n      defaultDatasource: state.results.defaultDatasource.filter((rsName) => action.names.includes(rsName))\n    }\n  })),\n  on(DashboardActions.setDefaultDatasource, (state, action) => ({\n    ...state,\n    results: {\n      ...state.results,\n      defaultDatasource: action.names\n    }\n  })),\n  on(DashboardActions.solveCollisions, (state, action) => ({\n    ...state,\n    manifests: {\n      ...state.manifests,\n      manifest: {\n        ...state.manifests.manifest,\n        windows: state.manifests.manifest.windows.map((window) => {\n          const [first, ...others] = window.widgets;\n          return solveCollisions(first, others, window);\n        })\n      }\n    }\n  })),\n  on(DashboardActions.updateDashboardParams, (state, action) => ({\n    ...state,\n    dashboard: {\n      ...state.dashboard,\n      params: {\n        ...state.dashboard.params,\n        ...action.params\n      }\n    }\n  })),\n  on(DashboardActions.toggleEditionMode, (state, action) => ({\n    ...state,\n    dashboard: {\n      ...state.dashboard,\n      editionMode: action.force ?? !state.dashboard.editionMode\n    }\n  })),\n  on(DashboardActions.select, (state, action) => ({\n    ...state,\n    results: {\n      ...state.results,\n      selectedItems: [\n        ...new Set(\n          !action.cumulative\n            ? [action.id]\n            : state.results.selectedItems.find((id) => id === action.id)\n            ? state.results.selectedItems.filter((id) => id !== action.id)\n            : [...state.results.selectedItems, action.id]\n        )\n      ]\n    }\n  })),\n  on(DashboardActions.invertSelection, (state, action) => {\n    const allItems = Object.keys(state.results.resultSets)\n      .map((rs) =>\n        Object.keys(state.results.resultSets[rs].items)\n          .map((classId) => state.results.resultSets[rs].items[classId] as Item[])\n          .reduce((p, c) => [...p, ...c], [])\n      )\n      .reduce((p, c) => [...p, ...c], [])\n      .map((item) => item.id);\n\n    const invertedItemsId = allItems.filter((itemId) => !state.results.selectedItems.includes(itemId));\n\n    return {\n      ...state,\n      results: {\n        ...state.results,\n        selectedItems: [...new Set(invertedItemsId)]\n      }\n    };\n  }),\n  on(DashboardActions.selectMany, (state, action) => ({\n    ...state,\n    results: {\n      ...state.results,\n      selectedItems: [...new Set(action.ids)]\n    }\n  })),\n  on(DashboardActions.updateManifestsList, (state, action) => ({\n    ...state,\n    manifests: {\n      ...state.manifests,\n      list: action.manifests\n    }\n  })),\n  on(DashboardActions.updateStaticManifest, (state, action) => ({\n    ...state,\n    manifests: {\n      ...state.manifests,\n      staticManifest: action.staticManifest\n    }\n  })),\n  on(DashboardActions.loadAndActivateManifest, DashboardActions.loadManifest, (state, action) => ({\n    ...state,\n    manifests: {\n      ...state.manifests,\n      manifest: {\n        windows: [...state.manifests.manifest.windows.map((winManifest) => ({ ...winManifest, widgets: [] }))]\n      }\n    }\n  })),\n  on(DashboardActions.clearManifest, (state, action) => ({\n    ...state,\n    manifests: {\n      ...state.manifests,\n      manifest: {\n        ...state.manifests.manifest,\n        windows: [...state.manifests.manifest.windows.map((previous) => ({ ...previous, widgets: [] }))],\n        filters: []\n      },\n      currentId: ''\n    }\n  })),\n  on(DashboardActions.updateObjectsDetails, (state, action) => ({\n    ...state,\n    results: {\n      ...state.results,\n      objectDetails: {\n        ...state.results.objectDetails,\n        ...action.list\n      }\n    }\n  })),\n  on(DashboardActions.explore, (state, action) => {\n    const currentItem = Object.keys(state.results.resultSets)\n      .map((key) =>\n        Object.keys(state.results.resultSets[key].items)\n          .map((keyClass) => state.results.resultSets[key].items[keyClass].find((item) => item.id === action.id))\n          .find((it) => !!it)\n      )\n      .find((it) => !!it) as Item;\n\n    const actualWindows = state.manifests.manifest.windows;\n\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          windows: actualWindows.concat({\n            widgets: [\n              {\n                layout: { x: 1, y: 1, width: 12, height: 12 },\n                type: 'graph',\n                options: {},\n                datasource: EXPLORE_NAMED_QUERY_ID\n              }\n            ]\n          })\n        }\n      },\n      results: {\n        ...state.results,\n        resultSets: {\n          ...state.results.resultSets,\n          [EXPLORE_NAMED_QUERY_ID]: {\n            items: { [currentItem.oClass]: [currentItem] },\n            relations: [] as Relation[]\n          }\n        }\n      }\n    };\n  }),\n  on(DashboardActions.displayAddress, (state, action) => {\n    return {\n      ...state,\n      results: {\n        ...state.results,\n        address: action.address\n      }\n    };\n  }),\n  on(DashboardActions.setRefreshRate, (state, action) => {\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          refreshRates: { ...state.manifests.manifest.refreshRates, [action.id]: action.rate }\n        }\n      }\n    };\n  }),\n  on(DashboardActions.addRelationsToResultSets, (state, action) => {\n    const updatedResultSets = JSON.parse(JSON.stringify(state.results.resultSets));\n    action.relations.forEach((relation) => {\n      Object.keys(updatedResultSets).forEach((rsId) => {\n        const isConcerned = Object.keys(updatedResultSets[rsId].items).map((classId) => {\n          return updatedResultSets[rsId].items[classId].map(\n            (item: Item) => item.id === relation.source || item.id === relation.destination\n          );\n        });\n        if (isConcerned) {\n          updatedResultSets[rsId].relations.push(relation);\n        }\n      });\n    });\n    return {\n      ...state,\n      results: {\n        ...state.results,\n        resultSets: updatedResultSets\n      }\n    };\n  }),\n  on(DashboardActions.addItemToResultSets, (state, action) => {\n    const updatedResultSets = JSON.parse(JSON.stringify(state.results.resultSets));\n\n    if (!!action.resultSet) {\n      if (!updatedResultSets[action.resultSet].items[action.item.oClass]) {\n        updatedResultSets[action.resultSet].items[action.item.oClass] = [action.item];\n      } else {\n        updatedResultSets[action.resultSet].items[action.item.oClass].push(action.item);\n      }\n    }\n\n    return {\n      ...state,\n      results: {\n        ...state.results,\n        resultSets: updatedResultSets\n      }\n    };\n  }),\n  on(DashboardActions.quickOrder, (state, action) => {\n    return {\n      ...state,\n      results: {\n        ...state.results,\n        quickOrder: {\n          ...state.results.quickOrder,\n          [action.datasourceId]: action.asc ? { attribute: action.attribute, asc: action.asc } : undefined\n        }\n      }\n    };\n  }),\n  on(DashboardActions.selectPresentation, (state, action) => {\n    return {\n      ...state,\n      presentation: {\n        ...state.presentation,\n        current: action.presentation,\n        viewMode: action.viewMode,\n        initial: action.presentation ? state.presentation.initial : undefined\n      }\n    };\n  }),\n  on(DashboardActions.setInitialPresentation, (state, action) => {\n    return {\n      ...state,\n      presentation: {\n        ...state.presentation,\n        initial: action.initial\n      }\n    };\n  }),\n  on(DashboardActions.setGridLayout, (state, action) => {\n    const myRank = state.manifests.tenants.indexOf(state.manifests.sender);\n    const newWindows = JSON.parse(JSON.stringify(state.manifests.manifest.windows ?? []));\n    if (!newWindows[myRank]) {\n      newWindows[myRank] = { widgets: [] };\n    }\n    if (!newWindows[myRank].grid) {\n      newWindows[myRank].grid = {};\n    }\n    if (!newWindows[myRank].widgets) {\n      newWindows[myRank].widgets = [];\n    }\n    newWindows[myRank].grid.layout = action.layout;\n    if (action.layout !== DashboardGridLayout.MANUAL) {\n      // Reorder layouts\n      const params = {\n        rows: newWindows[myRank].grid.rows,\n        columns: newWindows[myRank].grid.columns\n      };\n      const places = WidgetPlacementUtils.placementOptions({} as WidgetManifest, action.layout, params);\n\n      newWindows[myRank].widgets.forEach((widget: WidgetManifest, idx: number) => {\n        let targetLayout = places[idx]?.layout;\n        if (!targetLayout) {\n          targetLayout = { x: 1, y: 1, width: 1, height: 1 };\n          console.warn('Incorrect placement calculation', places, idx, widget, action.layout);\n        }\n        widget.layout = { ...targetLayout };\n      });\n    }\n\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          windows: newWindows\n        }\n      }\n    };\n  }),\n  on(DashboardActions.createTab, (state, action) => {\n    const myRank = state.manifests.tenants.indexOf(state.manifests.sender);\n    const myLayout = state.manifests.manifest.windows[myRank].grid?.layout ?? DashboardGridLayout.MANUAL;\n    const newWindows = JSON.parse(JSON.stringify(state.manifests.manifest.windows));\n    newWindows.push({ grid: { layout: myLayout }, widgets: [] });\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          windows: newWindows\n        }\n      }\n    };\n  }),\n  on(DashboardActions.restoreInitialManifest, (state, action) => {\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: JSON.parse(JSON.stringify(state.presentation.initial))\n      }\n    };\n  }),\n  on(DashboardActions.propagateGridLayout, (state, action) => {\n    const newWindows = JSON.parse(JSON.stringify(state.manifests.manifest.windows));\n    newWindows[action.rank] = action.manifest;\n\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          windows: newWindows\n        }\n      }\n    };\n  }),\n  on(DashboardActions.setFilters, (state, action) => ({\n    ...state,\n    manifests: {\n      ...state.manifests,\n      manifest: {\n        ...state.manifests.manifest,\n        filters: action.filters\n      }\n    }\n  })),\n  on(DashboardActions.updateFilters, (state, action) => {\n    const isPresent = state.manifests.manifest.filters?.find((filter) => filter.id === action.filter.id);\n    let filters = [];\n    if (isPresent) {\n      filters =\n        state.manifests.manifest.filters?.map((filter) => (filter.id === action.filter.id ? action.filter : filter)) ??\n        [];\n    } else {\n      if (state.manifests.manifest.filters) {\n        filters = [...(state.manifests.manifest.filters as Filter[]), action.filter];\n      } else {\n        filters = [action.filter];\n      }\n    }\n    return {\n      ...state,\n      manifests: {\n        ...state.manifests,\n        manifest: {\n          ...state.manifests.manifest,\n          filters: filters\n        }\n      }\n    };\n  }),\n  on(DashboardActions.removeFilter, (state, action) => ({\n    ...state,\n    manifests: {\n      ...state.manifests,\n      manifest: {\n        ...state.manifests.manifest,\n        filters: state.manifests.manifest.filters?.filter((filter) => filter.id !== action.id)\n      }\n    }\n  })),\n  on(DashboardActions.updateFilterValue, (state, action) => ({\n    ...state,\n    manifests: {\n      ...state.manifests,\n      manifest: {\n        ...state.manifests.manifest,\n        filters: state.manifests.manifest.filters\n          ? [\n              ...state.manifests.manifest.filters.map((filter, i) =>\n                i === state.manifests.manifest.filters?.findIndex((filter) => filter.id === action.id)\n                  ? { ...filter, value: action.value }\n                  : filter\n              )\n            ]\n          : []\n      }\n    }\n  })),\n  on(DashboardActions.getWmsFeatures, (state, action) => ({\n    ...state,\n    wmsFeatures: []\n  })),\n  on(DashboardActions.addWmsFeatures, (state, action) => ({\n    ...state,\n    wmsFeatures: [...state.wmsFeatures, ...action.features]\n  }))\n);\n\nexport function dashboardReducer(state: DashboardState, action: Action) {\n  return internalReducer(state, action);\n}\n","import { Component, ElementRef, HostBinding } from '@angular/core';\nimport { ResultSet } from '../../core/model/result-set.interface';\nimport { SubscriptionnerDirective } from '../components/subscriptionner.directive';\n\n@Component({ selector: 'yap-tooltip-widget', template: '' })\nexport class BaseTooltipComponent extends SubscriptionnerDirective {\n  @HostBinding('class') class = 'm-tooltip__item';\n\n  data: {\n    item?: any;\n    resultSet?: ResultSet;\n  } = {};\n  context: any;\n  popup?: ElementRef;\n}\n","import { Component } from '@angular/core';\nimport { BaseTooltipComponent } from '../../base-tooltip.component';\n\n@Component({\n  selector: 'yap-default-tooltip',\n  templateUrl: './default.tooltip.component.html'\n})\nexport class DefaultTooltipComponent extends BaseTooltipComponent {}\n","<div class=\"m-tooltip__item__content\" *ngIf=\"data.item.properties; else defaultTooltip\">\n  <p *ngFor=\"let property of data.item.properties\">\n    <span>{{ property.key | titlecase }} :</span> {{ property.value }}\n  </p>\n</div>\n<ng-template #defaultTooltip>\n  <p>\n    <span>{{ '@yap.widget.itemId' | i18n }} :</span> {{ data.item?.id }}\n  </p>\n  <p>\n    <span>{{ '@yap.widget.class' | i18n }} :</span>\n    {{\n      data.item?.oClass\n        | translateId\n          : {\n              type: 'class',\n              output: 'name'\n            }\n        | async\n    }}\n  </p>\n</ng-template>\n","import { ComponentRef, Inject, Injectable, InjectionToken, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, from, map, Observable, of } from 'rxjs';\nimport { TooltipOfClass } from '../../core/model/tooltip-of-class.interface';\nimport { ConfigSelectors } from '../../core/store/config/config.selectors';\nimport { BaseTooltipComponent } from './base-tooltip.component';\nimport { DefaultTooltipComponent } from './components/default/default.tooltip.component';\n\nexport const TOOLTIP_DEFINITION = new InjectionToken<string>('Tooltip definition');\n\nexport type TooltipStaticDefinition = {\n  name: string;\n  component: Type<BaseTooltipComponent>;\n};\nexport type TooltipLazyDefinition = {\n  name: string;\n  load: () => Promise<(injector: Injector) => Type<BaseTooltipComponent>>;\n};\nexport type TooltipDefinition = TooltipStaticDefinition | TooltipLazyDefinition;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TooltipFactoryService {\n  reference$ = new BehaviorSubject<{ [key: string]: TooltipDefinition }>({\n    default: { name: 'default', component: DefaultTooltipComponent },\n    none: { name: 'none', component: null as unknown as Type<BaseTooltipComponent> }\n  });\n  types$: Observable<string[]>;\n  defs: { [p: string]: TooltipOfClass } = {};\n  moduleRefCache = {} as { [manifestType: string]: Type<BaseTooltipComponent> };\n\n  constructor(\n    private injector: Injector,\n    @Inject(TOOLTIP_DEFINITION) reference: { [key: string]: TooltipDefinition },\n    private store: Store\n  ) {\n    this.putDefinitions(reference);\n    this.types$ = this.reference$.pipe(map((defs) => Object.keys(defs)));\n    this.store.select(ConfigSelectors.tooltipDefinitions).subscribe((defs) => (this.defs = defs));\n  }\n\n  resolveComponent(_type: string) {\n    let type = _type;\n    if (this.moduleRefCache[type]) {\n      return of(this.moduleRefCache[type]);\n    }\n    if (!this.reference$.getValue()[type]) {\n      type = 'default';\n    }\n    // @ts-ignore\n    if (this.reference$.getValue()[type].load === undefined) {\n      this.moduleRefCache[type] = (this.reference$.getValue()[type] as TooltipStaticDefinition).component;\n      return of(this.moduleRefCache[type]);\n    } else {\n      return from(\n        (this.reference$.getValue()[type] as TooltipLazyDefinition).load().then((fn) => {\n          this.moduleRefCache[type] = fn(this.injector);\n          return this.moduleRefCache[type];\n        })\n      );\n    }\n  }\n\n  private putDefinitions(definitions: { [key: string]: TooltipDefinition }) {\n    this.reference$.next({\n      ...this.reference$.getValue(),\n      ...definitions\n    });\n  }\n\n  isModuleLoaded(type: string): Observable<boolean> {\n    return this.reference$.pipe(map((componentDefs) => !!componentDefs[type]));\n  }\n\n  generateTooltip(\n    type: string,\n    parentInjector: Injector,\n    container: ViewContainerRef\n  ): Observable<ComponentRef<BaseTooltipComponent> | null> {\n    const definition = this.defs[type] ?? { type };\n    return this.resolveComponent(definition.type).pipe(\n      map((component) => {\n        if (component) {\n          const tmpComponent = container.createComponent<BaseTooltipComponent>(component);\n          tmpComponent.instance.context = definition.options;\n          return tmpComponent;\n        }\n        return null;\n      })\n    );\n  }\n\n  addTooltipDefinitions(defs: { [key: string]: TooltipDefinition }) {\n    this.reference$.next({ ...this.reference$.getValue(), ...defs });\n  }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { YapCheckboxModule } from '@onepoint-yap/dashboard/components/checkbox';\nimport { YapDatePickerModule } from '../core/components/date-picker/date-picker.module';\nimport { YapIconModule } from '../core/components/icon/icon.module';\nimport { YapOverlayModule } from '../core/components/overlay/overlay.module';\nimport { YapSelectModule } from '../core/components/select/select.module';\nimport { YapToggleModule } from '../core/components/toggle/toggle.module';\nimport { YapCoreModule } from '../core/core.module';\nimport { YapI18nModule } from '../core/i18n/i18n.module';\nimport { ConfigService } from '../core/store/config/config.service';\nimport { ToolboxManifestService } from '../core/toolbox/toolbox-manifest.service';\nimport { WebsocketService } from '../core/ws/websocket.service';\nimport { ActionBusEffects } from './action-bus/effect/action-bus.effects';\nimport { BusService } from './action-bus/service/bus.service';\nimport { ContextMenuComponent } from './components/context-menu/context-menu.component';\nimport { YapObjectEditionComponent } from './components/context-menu/object-edition/object-edition.component';\nimport { DashboardComponent } from './components/dashboard.component';\nimport { ManifestsComponent } from './components/manifests/manifests.component';\nimport { MetadataComponent } from './components/metadata/metadata.component';\nimport { VizualizeRawComponent } from './components/vizualize-raw/vizualize-raw.component';\nimport { BaseWidgetComponent } from './components/widgets/base-widget.component';\nimport { DataWidgetComponent } from './components/widgets/data-widget.component';\nimport { ResultSetSizePipe } from './components/widgets/header/resultset-size.pipe';\nimport { YapWidgetHeaderComponent } from './components/widgets/header/widget-header.component';\nimport { SettingsComponent } from './components/widgets/settings/settings.component';\nimport {\n  WIDGET_DEFINITION,\n  WidgetFactoryService\n} from './components/widgets/widget-instanciator/widget-factory.service';\nimport { WidgetInstanciatorComponent } from './components/widgets/widget-instanciator/widget-instanciator.component';\nimport { WidgetDefinition } from './components/widgets/widget-instanciator/widgets-definition.model';\nimport { WidgetPlaceholderComponent } from './components/widgets/widget-placeholder/widget-placeholder.component';\nimport {\n  LayoutPlacementOptionImplementationFn,\n  LayoutSizeImplementationFn,\n  WidgetPlacementUtils\n} from './components/widgets/widget-placement/widget-placement.utils';\nimport { BaseFilterComponent } from './filter/base-filter.component';\nimport { FilterInstanciatorComponent } from './filter/components/filter-instanciator/filter-instanciator.component';\nimport { FILTER_DEFINITION, FilterDefinition } from './filter/filter-factory.service';\nimport { DefaultViewGuard } from './guard/default-view.guard';\nimport { BASE_CONFIG, DashboardInitService } from './store/dashboard-init.service';\nimport { DashboardEffects } from './store/dashboard.effects';\nimport { dashboardFeatureKey, dashboardReducer } from './store/dashboard.reducers';\nimport { RefreshService } from './store/refresh.service';\nimport { YapTitleService } from './store/title.service';\nimport { BaseTooltipComponent } from './tooltip/base-tooltip.component';\nimport { DefaultTooltipComponent } from './tooltip/components/default/default.tooltip.component';\nimport { TOOLTIP_DEFINITION, TooltipDefinition } from './tooltip/tooltip-factory.service';\n\nconst components = [\n  DashboardComponent,\n  WidgetInstanciatorComponent,\n  WidgetPlaceholderComponent,\n  SettingsComponent,\n  ManifestsComponent,\n  MetadataComponent,\n  ContextMenuComponent,\n  DataWidgetComponent,\n  BaseWidgetComponent,\n  YapWidgetHeaderComponent,\n  YapObjectEditionComponent,\n  VizualizeRawComponent,\n  ResultSetSizePipe,\n  DefaultTooltipComponent,\n  BaseTooltipComponent,\n  BaseFilterComponent,\n  FilterInstanciatorComponent\n];\n\n@NgModule({\n  declarations: [...components],\n  imports: [\n    CommonModule,\n    FormsModule,\n    YapSelectModule,\n    YapIconModule,\n    OverlayModule,\n    YapCoreModule,\n    YapCheckboxModule,\n    YapToggleModule,\n    YapOverlayModule,\n    StoreModule.forFeature(dashboardFeatureKey, dashboardReducer),\n    EffectsModule.forFeature([ActionBusEffects, DashboardEffects]),\n    YapDatePickerModule,\n    YapI18nModule\n  ],\n  exports: [...components],\n  providers: [WidgetFactoryService]\n})\nexport class YapDashboardModule {\n  static forRoot(\n    widgetReference: { [key: string]: WidgetDefinition },\n    options: {\n      path?: string;\n      mapUrl?: string;\n      yapUrl?: string;\n      wsUrl?: string;\n      geoServerUrl?: string;\n    },\n    tooltipReference: { [key: string]: TooltipDefinition },\n    filterReference: { [key: string]: FilterDefinition },\n    additionalGridImplementations: {\n      type: string;\n      sizeImpl: LayoutSizeImplementationFn;\n      placementImpl: LayoutPlacementOptionImplementationFn;\n      image?: string;\n    }[] = []\n  ): ModuleWithProviders<YapDashboardModule> {\n    additionalGridImplementations.forEach((impl) => {\n      WidgetPlacementUtils.addLayoutImplementation(impl.type, impl.sizeImpl, impl.placementImpl, impl.image);\n    });\n    return {\n      ngModule: YapDashboardModule,\n      providers: [\n        { provide: BASE_CONFIG, useValue: options },\n        { provide: WIDGET_DEFINITION, useValue: widgetReference },\n        { provide: TOOLTIP_DEFINITION, useValue: tooltipReference },\n        { provide: FILTER_DEFINITION, useValue: filterReference },\n        BusService,\n        DashboardInitService,\n        ToolboxManifestService,\n        DefaultViewGuard,\n        RefreshService,\n        YapTitleService,\n        WebsocketService,\n        ConfigService\n      ]\n    };\n  }\n}\n","import { NgModule, Type } from '@angular/core';\nimport { BaseWidgetComponent } from './components/widgets/base-widget.component';\nimport { WidgetPlaceholderComponent } from './components/widgets/widget-placeholder/widget-placeholder.component';\n\n@NgModule({})\nexport class BaseWidgetModule {\n  getComponent(): Type<BaseWidgetComponent> {\n    return WidgetPlaceholderComponent;\n  }\n}\n","import { createNgModule, Injector, Type } from '@angular/core';\nimport { WidgetPlaceholderComponent } from './components/widgets/widget-placeholder/widget-placeholder.component';\nimport { BaseWidgetModule } from './base-widget.module';\nimport { BaseWidgetComponent } from './components/widgets/base-widget.component';\n\nconst moduleRefCache = {} as { [moduleName: string]: BaseWidgetModule };\n\nexport function widgetLoader(module: any, prop: string): (injector: Injector) => Type<BaseWidgetComponent> {\n  return (injector: Injector) => {\n    if (!!moduleRefCache[prop]) {\n      return moduleRefCache[prop].getComponent() as unknown as Type<BaseWidgetComponent>;\n    } else {\n      if (module.hasOwnProperty(prop)) {\n        const moduleRef = createNgModule(module[prop], Injector.create({ parent: injector, providers: [] }));\n        moduleRefCache[prop] = moduleRef.instance as BaseWidgetModule;\n        return moduleRefCache[prop].getComponent() as unknown as Type<BaseWidgetComponent>;\n      } else {\n        console.error(`module has no property ${prop}`, module);\n        return WidgetPlaceholderComponent;\n      }\n    }\n  };\n}\n","import { NgModule, Type } from '@angular/core';\nimport { BaseTooltipComponent } from './base-tooltip.component';\nimport { DefaultTooltipComponent } from './components/default/default.tooltip.component';\n\n@NgModule({})\nexport class BaseTooltipModule {\n  getComponent(): Type<BaseTooltipComponent> {\n    return DefaultTooltipComponent;\n  }\n}\n","import { createNgModule, Injector, Type } from '@angular/core';\nimport { DefaultTooltipComponent } from './components/default/default.tooltip.component';\nimport { BaseTooltipComponent } from './base-tooltip.component';\nimport { BaseTooltipModule } from './base-tooltip.module';\n\nconst moduleRefCache = {} as { [moduleName: string]: BaseTooltipModule };\n\nexport function tooltipLoader(module: any, prop: string): (injector: Injector) => Type<BaseTooltipComponent> {\n  return (injector: Injector) => {\n    if (!!moduleRefCache[prop]) {\n      return moduleRefCache[prop].getComponent() as unknown as Type<BaseTooltipComponent>;\n    } else {\n      if (module.hasOwnProperty(prop)) {\n        const moduleRef = createNgModule(module[prop], Injector.create({ parent: injector, providers: [] }));\n        moduleRefCache[prop] = moduleRef.instance as BaseTooltipModule;\n        return moduleRefCache[prop].getComponent() as unknown as Type<BaseTooltipComponent>;\n      } else {\n        console.error(`module has no property ${prop}`, module);\n        return DefaultTooltipComponent;\n      }\n    }\n  };\n}\n","import { NgModule, Type } from '@angular/core';\nimport { BaseFilterComponent } from './base-filter.component';\n\n@NgModule({})\nexport class BaseFilterModule {\n  getComponent(): Type<BaseFilterComponent> {\n    throw new Error('Should implement a custom filter');\n  }\n}\n","import { createNgModule, Injector, Type } from '@angular/core';\nimport { BaseFilterModule } from './base-filter.module';\nimport { BaseFilterComponent } from './base-filter.component';\n\nconst moduleRefCache = {} as { [moduleName: string]: BaseFilterModule };\n\nexport function filterLoader(module: any, prop: string): (injector: Injector) => Type<BaseFilterComponent> {\n  return (injector: Injector) => {\n    if (!!moduleRefCache[prop]) {\n      return moduleRefCache[prop].getComponent() as unknown as Type<BaseFilterComponent>;\n    } else {\n      if (module.hasOwnProperty(prop)) {\n        const moduleRef = createNgModule(module[prop], Injector.create({ parent: injector, providers: [] }));\n        moduleRefCache[prop] = moduleRef.instance as BaseFilterModule;\n        return moduleRefCache[prop].getComponent() as unknown as Type<BaseFilterComponent>;\n      } else {\n        console.error(`module has no property ${prop}`, module);\n        throw new Error(`module ${module} has no property ${prop}`);\n      }\n    }\n  };\n}\n","/*\n * Public API Surface of yap-dashboard\n */\nexport * from './lib/core/public-api';\nexport * from './lib/dashboard/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["enTranslations","frTranslations","i1.YapI18nService","i2","i3","i4.YapAccessDirective","i5.I18nPipe","i1","i3.YapIconComponent","i4","i2.BaseToolboxActionComponent","i3.YapAccessDirective","sortByName","adapter","internalReducer","selectIds","selectEntities","selectAll","selectTotal","feature","fromClass.classesFeatureKey","entities","fromClass.selectEntities","fromClass.selectAll","fromConfig.configFeatureKey","i2.YapIconComponent","i2.YapI18nService","i4.YapSnackbarService","i5.YapI18nService","i4.ImageService","from","i3.SymbolService","i4.YapIconComponent","POSITIONS","fromImage.imageFeatureKey","filter","i2.RawService","i4.I18nPipe","uniqueId","i4.YapUploadComponent","i6.GetSecuredImagePipe","fromField.fieldsFeatureKey","fromField.selectEntities","fromField.selectAll","i3.ImageService","i4.SymbolService","debounceTime","mergeMap","map","i2.CategoryService","i2.ClassService","i3.YapSnackbarService","i4.YapI18nService","catchError","i2.OpenMapTilesService","i4.ConfigService","i5.YapSnackbarService","i6.YapI18nService","i2.FieldService","i2.ImageService","fromContextMenu.contextMenuFeatureKey","i2.ItemService","i3.YapI18nService","tap","i2.SearchService","i3.DataSourceService","i6","i7.YapDialogService","i2.RelationTypesService","i4.YapDialogService","fromSearch.searchFeatureKey","fromCategory.categoriesFeatureKey","fromCategory.selectEntities","fromCategory.selectAll","fromRelationTypes.relationTypesFeatureKey","i2.LoopScrollColumnComponent","i4.YapTimePickerComponent","i6.DateRangeHighlightPipe","YAP_TOGGLE_COMPONENTS","i3.I18nPipe","i2.YapTooltipDirective","i1.YapIconComponent","i2.I18nPipe","i3.YapSelectComponent","distinctUntilChanged","i1.WidgetFactoryService","uuidv4","i5.YapSelectComponent","i6.YapIconComponent","i7.YapUploadComponent","i9.YapDatePickerComponent","i10.I18nPipe","i3.WidgetFactoryService","i5.YapIconComponent","i6.YapAccessDirective","i7.WidgetInstanciatorComponent","i8.YapObjectEditionComponent","i9.I18nPipe","i5.WidgetInstanciatorComponent","i6.ContextMenuComponent","i7.I18nPipe","i2.ToolboxManifestService","i1.YapSnackbarService","uuid","i3.BusService","i1.RawService","i3.ToolboxMenuService","i5","i7.YapNqColorSelectorComponent","i8.YapAccessDirective","i9.YapSelectImageComponent","i10","i11.YapTooltipDirective","i12.TranslateIdPipe","i13.I18nPipe","i14.ResultSetSizePipe","i4.YapTooltipDirective","i2.FilterFactoryService","i1.ManifestService","i1.DashboardInitService","i4.ManifestService","i5.ItemService","i6.YapTitleService","i7.YapI18nService","i8.YapSnackbarService","i9","i10.GeocodingService","i11.RefreshService","i12.ToolboxManifestService","i13.BusService","i14.SearchService","i2.TranslateIdPipe","moduleRefCache"],"mappings":"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"}