@provoly/dashboard 0.12.9 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.d.ts +3 -1
  2. package/components/sinceDate/sinceDate.pipe.d.ts +1 -1
  3. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +7 -1
  4. package/dataset/i18n/en.translations.d.ts +2 -0
  5. package/dataset/i18n/fr.translations.d.ts +2 -1
  6. package/dataset/style/_o-pry-dataset-detail.scss +13 -11
  7. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +8 -3
  8. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +2 -1
  9. package/esm2022/components/sinceDate/sinceDate.pipe.mjs +7 -9
  10. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +26 -8
  11. package/esm2022/dataset/components/dataset.component.mjs +4 -2
  12. package/esm2022/dataset/i18n/en.translations.mjs +3 -1
  13. package/esm2022/dataset/i18n/fr.translations.mjs +4 -3
  14. package/esm2022/dataset/style/css.component.mjs +2 -2
  15. package/esm2022/filters/date/date-filter.component.mjs +3 -3
  16. package/esm2022/filters/number/number-filter.component.mjs +3 -3
  17. package/esm2022/filters/text/text-filter.component.mjs +3 -3
  18. package/esm2022/import/components/import.component.mjs +5 -16
  19. package/esm2022/import/store/import.actions.mjs +1 -1
  20. package/esm2022/import/store/import.effects.mjs +3 -3
  21. package/esm2022/import/store/import.reducer.mjs +5 -13
  22. package/esm2022/import/store/import.selectors.mjs +5 -7
  23. package/esm2022/import/store/import.service.mjs +1 -1
  24. package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +42 -0
  25. package/esm2022/lib/core/components/accordion/accordion.component.mjs +13 -0
  26. package/esm2022/lib/core/components/select/select.component.mjs +3 -3
  27. package/esm2022/lib/core/core.module.mjs +26 -8
  28. package/esm2022/lib/core/i18n/en.translations.mjs +3 -2
  29. package/esm2022/lib/core/i18n/fr.translations.mjs +3 -2
  30. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -2
  31. package/esm2022/lib/core/public-api.mjs +3 -1
  32. package/esm2022/lib/core/symbol/symbol.service.mjs +53 -15
  33. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +4 -4
  34. package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +1 -1
  35. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +3 -2
  36. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +6 -4
  37. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +6 -11
  38. package/esm2022/pipeline/style/css.component.mjs +2 -2
  39. package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -7
  40. package/esm2022/restitution/style/css.component.mjs +2 -2
  41. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +53 -194
  42. package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +146 -0
  43. package/esm2022/widgets/widget-map/public-api.mjs +3 -1
  44. package/fesm2022/provoly-dashboard-admin.mjs +7 -2
  45. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  46. package/fesm2022/provoly-dashboard-components-sinceDate.mjs +6 -8
  47. package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -1
  48. package/fesm2022/provoly-dashboard-dataset.mjs +35 -12
  49. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  50. package/fesm2022/provoly-dashboard-filters-date.mjs +2 -2
  51. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
  52. package/fesm2022/provoly-dashboard-filters-number.mjs +2 -2
  53. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
  54. package/fesm2022/provoly-dashboard-filters-text.mjs +2 -2
  55. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
  56. package/fesm2022/provoly-dashboard-import.mjs +14 -35
  57. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  58. package/fesm2022/provoly-dashboard-pipeline.mjs +15 -19
  59. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  60. package/fesm2022/provoly-dashboard-restitution.mjs +4 -8
  61. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  62. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +256 -257
  63. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  64. package/fesm2022/provoly-dashboard.mjs +143 -38
  65. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  66. package/import/components/import.component.d.ts +3 -9
  67. package/import/store/import.actions.d.ts +3 -16
  68. package/import/store/import.effects.d.ts +1 -1
  69. package/import/store/import.reducer.d.ts +2 -5
  70. package/import/store/import.selectors.d.ts +2 -7
  71. package/import/store/import.service.d.ts +2 -2
  72. package/lib/core/components/accordion/accordion-item/accordion-item.component.d.ts +17 -0
  73. package/lib/core/components/accordion/accordion.component.d.ts +6 -0
  74. package/lib/core/core.module.d.ts +15 -11
  75. package/lib/core/i18n/en.translations.d.ts +1 -0
  76. package/lib/core/i18n/fr.translations.d.ts +1 -0
  77. package/lib/core/model/widget-map-manifest.interface.d.ts +0 -1
  78. package/lib/core/public-api.d.ts +2 -0
  79. package/lib/core/symbol/symbol.service.d.ts +18 -2
  80. package/lib/dashboard/components/widgets/base-widget.component.d.ts +1 -1
  81. package/package.json +25 -25
  82. package/pipeline/components/pipeline-editor/pipeline-editor.component.d.ts +1 -3
  83. package/pipeline/style/_o-pipeline.scss +0 -108
  84. package/restitution/components/restitution-list/restitution-list.component.d.ts +0 -2
  85. package/restitution/style/_o-restitution-list.scss +2 -24
  86. package/schematics/ng-add/index.spec.js +9 -0
  87. package/schematics/ng-add/index.spec.js.map +1 -1
  88. package/styles/abstracts/_mixins.scss +14 -0
  89. package/styles/components/_m-filter.scss +0 -1
  90. package/styles/components/_o-accordion.scss +91 -0
  91. package/styles-theme/components-theme/_o-accordion.theme.scss +30 -0
  92. package/styles-theme/components-theme/_o-pipeline.theme.scss +0 -26
  93. package/styles-theme/main-theme.scss +1 -0
  94. package/widgets/widget-map/component/widget-map.component.d.ts +13 -24
  95. package/widgets/widget-map/interaction/interaction-manager.class.d.ts +27 -0
  96. package/widgets/widget-map/public-api.d.ts +2 -0
@@ -12,19 +12,21 @@ import * as i1$3 from '@ngrx/effects';
12
12
  import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
13
13
  import * as i1 from '@ngrx/store';
14
14
  import { createAction, props, createReducer, on, createFeatureSelector, createSelector, StoreModule } from '@ngrx/store';
15
- import { of, Subscription, filter, combineLatest, debounceTime, BehaviorSubject, map, Subject, mergeMap, from as from$1, forkJoin, catchError as catchError$1, throwError, switchMap, tap as tap$1, merge, ReplaySubject, combineLatestWith, distinctUntilChanged as distinctUntilChanged$1, startWith, fromEvent, auditTime, interval } from 'rxjs';
15
+ import { of, Subscription, filter, combineLatest, debounceTime, BehaviorSubject, map, Subject, mergeMap, from as from$1, forkJoin, catchError as catchError$1, throwError, switchMap, tap as tap$1, merge, ReplaySubject, combineLatestWith, distinctUntilChanged as distinctUntilChanged$1, startWith, delay, fromEvent, auditTime, interval } from 'rxjs';
16
16
  import * as i3 from '@angular/platform-browser';
17
17
  import { Style, Icon } from 'ol/style';
18
18
  import { createEntityAdapter } from '@ngrx/entity';
19
19
  import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
20
20
  import equal from 'fast-deep-equal/es6';
21
- import { distinctUntilChanged, filter as filter$1, debounceTime as debounceTime$1, mergeMap as mergeMap$1, map as map$1, catchError, withLatestFrom, tap, delay } from 'rxjs/operators';
21
+ import { distinctUntilChanged, filter as filter$1, debounceTime as debounceTime$1, mergeMap as mergeMap$1, map as map$1, catchError, withLatestFrom, tap, delay as delay$1 } from 'rxjs/operators';
22
22
  import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
23
23
  import { v4 } from 'uuid';
24
24
  import { GeoJSON } from 'ol/format';
25
25
  import { fromLonLat } from 'ol/proj';
26
+ import * as i1$4 from '@angular/cdk/accordion';
27
+ import { CdkAccordionModule } from '@angular/cdk/accordion';
26
28
  import * as i3$1 from '@angular/forms';
27
- import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
29
+ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
28
30
  import * as i2$2 from '@ng-select/ng-select';
29
31
  import { NgSelectModule } from '@ng-select/ng-select';
30
32
  import { webSocket } from 'rxjs/webSocket';
@@ -298,7 +300,7 @@ const enTranslations$1 = {
298
300
  },
299
301
  tile: 'Tiles',
300
302
  now: 'Today',
301
- since_day: 'Since {{day}} days',
303
+ since_day: 'Since {{day}} day{{plural}}',
302
304
  layout: {
303
305
  '0': 'Free layout',
304
306
  '0_detailled': 'Free mode display, rendering size and positioning fully customizable by the user.',
@@ -473,6 +475,7 @@ const enTranslations$1 = {
473
475
  label: 'Filters settings',
474
476
  noAttributes: 'Presentation had no available attributes',
475
477
  noFilters: 'No filters set up for this presentation yet.',
478
+ clear: 'Clear all',
476
479
  list: {
477
480
  attributes: 'Attributes: ',
478
481
  add: 'Add filter',
@@ -625,7 +628,7 @@ const frTranslations$1 = {
625
628
  },
626
629
  tile: 'Tuiles',
627
630
  now: "Aujourd'hui",
628
- since_day: 'Il y a {{day}} jours',
631
+ since_day: 'Il y a {{day}} jour{{plural}}',
629
632
  layout: {
630
633
  '0': 'Composition libre',
631
634
  '0_detailled': "Affichage en mode libre, la taille et le positionnement des restitutions sont entièrement paramétrables par l'utilisateur.",
@@ -800,6 +803,7 @@ const frTranslations$1 = {
800
803
  label: 'Paramétrer les filtres',
801
804
  noAttributes: "La présentation en cours ne dispose d'aucune attribut sur lequel filtrer",
802
805
  noFilters: "Vous n'avez pas encore paramétré de filtre.",
806
+ clear: 'Effacer',
803
807
  list: {
804
808
  attributes: 'Attributs: ',
805
809
  add: 'Créer un filtre',
@@ -1851,22 +1855,51 @@ class SymbolService {
1851
1855
  this.imageService = imageService;
1852
1856
  this.definitions = {};
1853
1857
  this.classes = [];
1858
+ this.imageCache = {};
1854
1859
  this.cache = {};
1855
- this.store.select(ConfigSelectors.iconDefinitions).subscribe((defs) => (this.definitions = defs));
1856
1860
  this.store.select(ClassSelectors.classes).subscribe((classes) => (this.classes = classes));
1861
+ this.store.select(ConfigSelectors.iconDefinitions).subscribe((defs) => {
1862
+ this.definitions = defs;
1863
+ // For each class, generate all icons for ruleset
1864
+ Object.keys(this.definitions).forEach((classId) => {
1865
+ if (!this.imageCache[classId]) {
1866
+ this.imageCache[classId] = { images: {}, borderedImages: {}, ruleSignature: '--init--' };
1867
+ }
1868
+ if (!this.imageCache[classId] ||
1869
+ this.imageCache[classId].ruleSignature !== JSON.stringify(this.definitions[classId])) {
1870
+ this.imageCache[classId].ruleSignature = JSON.stringify(this.definitions[classId]);
1871
+ this.imageCache[classId].images = this.generateAllRulesCombinaisonImages(this.definitions[classId]);
1872
+ this.imageCache[classId].borderedImages = this.generateAllRulesCombinaisonImages(this.definitions[classId], '#8cd560');
1873
+ }
1874
+ });
1875
+ });
1876
+ }
1877
+ generateAllRulesCombinaisonImages(definition, borderColor) {
1878
+ return this.recursiveRuleMatches(definition)
1879
+ .map((ruleMatch) => ({ [ruleMatch]: this.generateImageForRuleMatch(ruleMatch, definition, borderColor) }))
1880
+ .reduce((p, c) => ({ ...p, ...c }), {});
1857
1881
  }
1858
- getSymbol(item, borderColor) {
1882
+ recursiveRuleMatches(definition) {
1883
+ const [rule, ...otherRules] = definition;
1884
+ if (!rule) {
1885
+ return [''];
1886
+ }
1887
+ return this.recursiveRuleMatches(otherRules)
1888
+ .map((rule) => ['0' + rule, '1' + rule])
1889
+ .flat();
1890
+ }
1891
+ generateImageForRuleMatch(ruleMatch, definition, borderColor) {
1859
1892
  const canvas = document.createElement('canvas');
1860
1893
  const ctx = canvas.getContext('2d') ?? null;
1894
+ let applicableRules = definition.filter((_, idx) => ruleMatch[idx] === '1');
1895
+ if (applicableRules.length === 0) {
1896
+ // If no rule match, then apply default rule only
1897
+ applicableRules = definition.filter((def) => !!def.isDefault);
1898
+ }
1899
+ const promiseImages = Promise.all(applicableRules.map((rule) => this.downloadImage(rule.iconUrl)));
1861
1900
  return new Promise((resolve, reject) => {
1862
- // First, we try to apply non-default rules
1863
- let appliableRules = (this.definitions[item.oClass] ?? this.definitions['default']).filter((def) => this.matchRule(item, def.rule) && !def.isDefault);
1864
- if (appliableRules.length === 0) {
1865
- // If no rule match, then apply default rule
1866
- appliableRules = (this.definitions[item.oClass] ?? this.definitions['default']).filter((def) => !!def.isDefault);
1867
- }
1868
- const promiseImages = Promise.all(appliableRules.map((rule) => this.downloadImage(rule.iconUrl)));
1869
- promiseImages.then((images) => {
1901
+ promiseImages
1902
+ .then((images) => {
1870
1903
  canvas.width = 600;
1871
1904
  canvas.height = 600;
1872
1905
  const subSize = {
@@ -1876,7 +1909,7 @@ class SymbolService {
1876
1909
  offsetToBottom: 600 * (1 - SUB_ICON_SIZE_PERCENT)
1877
1910
  };
1878
1911
  // Then draw everything
1879
- appliableRules.forEach((def, idx, arr) => {
1912
+ applicableRules.forEach((def, idx, arr) => {
1880
1913
  const image = images[idx];
1881
1914
  switch (def.position) {
1882
1915
  case IconPosition.BOTTOM_RIGHT:
@@ -1921,9 +1954,18 @@ class SymbolService {
1921
1954
  }
1922
1955
  });
1923
1956
  resolve(canvas);
1924
- });
1957
+ })
1958
+ .catch((err) => reject(err));
1925
1959
  });
1926
1960
  }
1961
+ getSymbol(item, bordered) {
1962
+ // First, we try to apply non-default rules
1963
+ let ruleMatch = (this.definitions[item.oClass] ?? this.definitions['default'])
1964
+ .map((def) => (this.matchRule(item, def.rule) && !def.isDefault ? '1' : '0'))
1965
+ .join('');
1966
+ const imageSet = this.imageCache[item.oClass] ?? this.imageCache['default'];
1967
+ return imageSet[bordered ? 'borderedImages' : 'images'][ruleMatch];
1968
+ }
1927
1969
  getSymbolOfClass(id) {
1928
1970
  const definitionsForClass = (this.definitions[id] || []).find((def) => def.isDefault);
1929
1971
  return this.downloadAsUrl(definitionsForClass?.iconUrl ?? DEFAULT_ICON_URL);
@@ -1941,9 +1983,9 @@ class SymbolService {
1941
1983
  });
1942
1984
  });
1943
1985
  }
1944
- getSymbolAsIconStyle(item, borderColor) {
1986
+ getSymbolAsIconStyle(item, bordered) {
1945
1987
  return new Promise((resolve, reject) => {
1946
- this.getSymbol(item, borderColor)
1988
+ this.getSymbol(item, bordered)
1947
1989
  .then((canvas) => {
1948
1990
  const size = (this.definitions[item.oClass] ?? this.definitions['default'])[0].iconSize;
1949
1991
  const scale = [size[0] / canvas.width, size[1] / canvas.height];
@@ -2054,6 +2096,8 @@ const enTranslations = {
2054
2096
  status: 'Status',
2055
2097
  versionHistory: 'Version history',
2056
2098
  data: 'Data',
2099
+ table: 'Table',
2100
+ map: 'Map',
2057
2101
  export: 'Export',
2058
2102
  api: 'API',
2059
2103
  returnToList: 'Back to catalog',
@@ -2088,9 +2132,10 @@ const frTranslations = {
2088
2132
  search: 'Rechercher',
2089
2133
  date: 'Date',
2090
2134
  status: 'Statut',
2091
- data: 'Données',
2092
2135
  versionHistory: 'Historique de versions',
2136
+ data: 'Données',
2093
2137
  table: 'Tableau',
2138
+ map: 'Carte',
2094
2139
  export: 'Export',
2095
2140
  api: 'API',
2096
2141
  returnToList: 'Retour au catalogue',
@@ -2101,7 +2146,7 @@ const frTranslations = {
2101
2146
  INACTIVE: 'Invalide',
2102
2147
  ERROR: 'En erreur',
2103
2148
  ACTIVE: 'Disponible',
2104
- currentlyActive: 'Active'
2149
+ currentlyActive: 'Actif'
2105
2150
  },
2106
2151
  buttonAction: {
2107
2152
  ACTIVE: 'Invalider',
@@ -4722,6 +4767,51 @@ const searchReducer = createReducer(initialSearchState, on(SearchActions.search,
4722
4767
  searchLoading: [...state.searchLoading.filter((id) => id !== (action.id ?? DEFAULT_NAMED_QUERY_ID))]
4723
4768
  })));
4724
4769
 
4770
+ class AccordionComponent {
4771
+ constructor() { }
4772
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4773
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AccordionComponent, selector: "pry-accordion", ngImport: i0, template: "<cdk-accordion class=\"o-accordion\">\n <ng-content></ng-content>\n</cdk-accordion>\n", dependencies: [{ kind: "directive", type: i1$4.CdkAccordion, selector: "cdk-accordion, [cdkAccordion]", inputs: ["multi"], exportAs: ["cdkAccordion"] }] }); }
4774
+ }
4775
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AccordionComponent, decorators: [{
4776
+ type: Component,
4777
+ args: [{ selector: 'pry-accordion', template: "<cdk-accordion class=\"o-accordion\">\n <ng-content></ng-content>\n</cdk-accordion>\n" }]
4778
+ }], ctorParameters: function () { return []; } });
4779
+
4780
+ class AccordionItemComponent {
4781
+ constructor() {
4782
+ this.item = '';
4783
+ this.borderColor = '';
4784
+ this.translationStringBase = '';
4785
+ this.showSearchBar = false;
4786
+ this.search = new EventEmitter();
4787
+ }
4788
+ onSearch(item, $event) {
4789
+ this.search.emit({ ...this.search$.getValue(), [item]: $event });
4790
+ }
4791
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4792
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AccordionItemComponent, selector: "pry-accordion-item", inputs: { item: "item", borderColor: "borderColor", index: "index", translationStringBase: "translationStringBase", length: "length", showSearchBar: "showSearchBar", search$: "search$" }, outputs: { search: "search" }, ngImport: i0, template: "<cdk-accordion-item\n #accordionItem=\"cdkAccordionItem\"\n [id]=\"'button_' + item\"\n role=\"tab\"\n [attr.aria-controls]=\"'panel_' + item\"\n [attr.aria-selected]=\"accordionItem.expanded\"\n [attr.aria-expanded]=\"accordionItem.expanded\"\n>\n <div class=\"o-accordion__title\" [class.is-active]=\"accordionItem.expanded\" [style.--border-color]=\"borderColor\">\n <button type=\"button\" class=\"o-accordion__title__btn\" (click)=\"accordionItem.toggle()\">\n <span>\n {{ translationStringBase + item | i18n }}\n <ng-container *ngIf=\"length\">&nbsp;({{ length }}) </ng-container>\n </span>\n <pry-icon\n [width]=\"15\"\n [height]=\"15\"\n [iconSvg]=\"accordionItem.expanded ? 'chevron_top_rounded' : 'chevron_bottom_rounded'\"\n ></pry-icon>\n </button>\n </div>\n <div\n *ngIf=\"accordionItem.expanded\"\n class=\"o-accordion__panel\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'button_' + item\"\n [id]=\"'panel_' + item\"\n [attr.aria-hidden]=\"!accordionItem.expanded\"\n [style.--border-color]=\"borderColor\"\n >\n <div *ngIf=\"showSearchBar\" class=\"o-accordion__panel__head\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.toolbox.catalog.filter.name' | i18n\"\n [ngModel]=\"(search$ | async)[item]\"\n (ngModelChange)=\"onSearch(item, $event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n <ng-content></ng-content>\n </div>\n</cdk-accordion-item>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i1$4.CdkAccordionItem, selector: "cdk-accordion-item, [cdkAccordionItem]", inputs: ["expanded", "disabled"], outputs: ["closed", "opened", "destroyed", "expandedChange"], exportAs: ["cdkAccordionItem"] }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
4793
+ }
4794
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AccordionItemComponent, decorators: [{
4795
+ type: Component,
4796
+ args: [{ selector: 'pry-accordion-item', template: "<cdk-accordion-item\n #accordionItem=\"cdkAccordionItem\"\n [id]=\"'button_' + item\"\n role=\"tab\"\n [attr.aria-controls]=\"'panel_' + item\"\n [attr.aria-selected]=\"accordionItem.expanded\"\n [attr.aria-expanded]=\"accordionItem.expanded\"\n>\n <div class=\"o-accordion__title\" [class.is-active]=\"accordionItem.expanded\" [style.--border-color]=\"borderColor\">\n <button type=\"button\" class=\"o-accordion__title__btn\" (click)=\"accordionItem.toggle()\">\n <span>\n {{ translationStringBase + item | i18n }}\n <ng-container *ngIf=\"length\">&nbsp;({{ length }}) </ng-container>\n </span>\n <pry-icon\n [width]=\"15\"\n [height]=\"15\"\n [iconSvg]=\"accordionItem.expanded ? 'chevron_top_rounded' : 'chevron_bottom_rounded'\"\n ></pry-icon>\n </button>\n </div>\n <div\n *ngIf=\"accordionItem.expanded\"\n class=\"o-accordion__panel\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'button_' + item\"\n [id]=\"'panel_' + item\"\n [attr.aria-hidden]=\"!accordionItem.expanded\"\n [style.--border-color]=\"borderColor\"\n >\n <div *ngIf=\"showSearchBar\" class=\"o-accordion__panel__head\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.toolbox.catalog.filter.name' | i18n\"\n [ngModel]=\"(search$ | async)[item]\"\n (ngModelChange)=\"onSearch(item, $event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n <ng-content></ng-content>\n </div>\n</cdk-accordion-item>\n" }]
4797
+ }], ctorParameters: function () { return []; }, propDecorators: { item: [{
4798
+ type: Input
4799
+ }], borderColor: [{
4800
+ type: Input
4801
+ }], index: [{
4802
+ type: Input
4803
+ }], translationStringBase: [{
4804
+ type: Input
4805
+ }], length: [{
4806
+ type: Input
4807
+ }], showSearchBar: [{
4808
+ type: Input
4809
+ }], search$: [{
4810
+ type: Input
4811
+ }], search: [{
4812
+ type: Output
4813
+ }] } });
4814
+
4725
4815
  class PryCoreModule {
4726
4816
  constructor(pryTranslateService) {
4727
4817
  this.pryTranslateService = pryTranslateService;
@@ -4746,13 +4836,17 @@ class PryCoreModule {
4746
4836
  PryNqColorSelectorComponent,
4747
4837
  PryAccessDirective,
4748
4838
  PryUploadComponent,
4749
- PrySelectImageComponent], imports: [CommonModule,
4839
+ PrySelectImageComponent,
4840
+ AccordionComponent,
4841
+ AccordionItemComponent], imports: [CommonModule,
4750
4842
  RouterModule,
4751
4843
  HttpClientModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, PryIconModule,
4752
4844
  OverlayModule,
4753
4845
  PryOverlayModule,
4754
4846
  PryI18nModule,
4755
- PryModalStatusModule], exports: [TranslateIdPipe,
4847
+ PryModalStatusModule,
4848
+ CdkAccordionModule,
4849
+ FormsModule], exports: [TranslateIdPipe,
4756
4850
  TranslateItemToSymbolPipe,
4757
4851
  GetSecuredImagePipe,
4758
4852
  BaseLayoutComponent,
@@ -4761,7 +4855,9 @@ class PryCoreModule {
4761
4855
  PryNqColorSelectorComponent,
4762
4856
  PryAccessDirective,
4763
4857
  PryUploadComponent,
4764
- PrySelectImageComponent] }); }
4858
+ PrySelectImageComponent,
4859
+ AccordionComponent,
4860
+ AccordionItemComponent] }); }
4765
4861
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryCoreModule, providers: [AsyncPipe, TranslateIdPipe, TranslateItemToSymbolPipe], imports: [CommonModule,
4766
4862
  RouterModule,
4767
4863
  HttpClientModule,
@@ -4787,7 +4883,9 @@ class PryCoreModule {
4787
4883
  OverlayModule,
4788
4884
  PryOverlayModule,
4789
4885
  PryI18nModule,
4790
- PryModalStatusModule] }); }
4886
+ PryModalStatusModule,
4887
+ CdkAccordionModule,
4888
+ FormsModule] }); }
4791
4889
  }
4792
4890
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryCoreModule, decorators: [{
4793
4891
  type: NgModule,
@@ -4803,7 +4901,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
4803
4901
  PryNqColorSelectorComponent,
4804
4902
  PryAccessDirective,
4805
4903
  PryUploadComponent,
4806
- PrySelectImageComponent
4904
+ PrySelectImageComponent,
4905
+ AccordionComponent,
4906
+ AccordionItemComponent
4807
4907
  ],
4808
4908
  imports: [
4809
4909
  CommonModule,
@@ -4831,7 +4931,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
4831
4931
  OverlayModule,
4832
4932
  PryOverlayModule,
4833
4933
  PryI18nModule,
4834
- PryModalStatusModule
4934
+ PryModalStatusModule,
4935
+ CdkAccordionModule,
4936
+ FormsModule
4835
4937
  ],
4836
4938
  providers: [AsyncPipe, TranslateIdPipe, TranslateItemToSymbolPipe],
4837
4939
  exports: [
@@ -4844,7 +4946,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
4844
4946
  PryNqColorSelectorComponent,
4845
4947
  PryAccessDirective,
4846
4948
  PryUploadComponent,
4847
- PrySelectImageComponent
4949
+ PrySelectImageComponent,
4950
+ AccordionComponent,
4951
+ AccordionItemComponent
4848
4952
  ]
4849
4953
  }]
4850
4954
  }], ctorParameters: function () { return [{ type: PryI18nService }]; } });
@@ -5842,7 +5946,7 @@ class PrySelectComponent {
5842
5946
  useExisting: forwardRef(() => PrySelectComponent),
5843
5947
  multi: true
5844
5948
  }
5845
- ], ngImport: i0, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-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 >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-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 >\u00D7</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 <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-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 class=\"pry-select\"\n [class.pry-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", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2$2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2$2.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5949
+ ], ngImport: i0, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-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 [clearAllText]=\"'@pry.filters.clear' | i18n\"\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 >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-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 >\u00D7</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 <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-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 class=\"pry-select\"\n [class.pry-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 [clearAllText]=\"'@pry.filters.clear' | i18n\"\n >\n </ng-select>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2$2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2$2.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5846
5950
  }
5847
5951
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySelectComponent, decorators: [{
5848
5952
  type: Component,
@@ -5852,7 +5956,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
5852
5956
  useExisting: forwardRef(() => PrySelectComponent),
5853
5957
  multi: true
5854
5958
  }
5855
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-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 >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-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 >\u00D7</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 <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-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 class=\"pry-select\"\n [class.pry-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" }]
5959
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-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 [clearAllText]=\"'@pry.filters.clear' | i18n\"\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 >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-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 >\u00D7</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 <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-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 class=\"pry-select\"\n [class.pry-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 [clearAllText]=\"'@pry.filters.clear' | i18n\"\n >\n </ng-select>\n</ng-template>\n" }]
5856
5960
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { labelTranslate: [{
5857
5961
  type: Input
5858
5962
  }], baseTranslate: [{
@@ -6743,7 +6847,9 @@ class WidgetInstanciatorComponent extends SubscriptionnerDirective {
6743
6847
  ngAfterViewInit() {
6744
6848
  // Dynamically create associated component
6745
6849
  this.widgetManifest$ = combineLatest([this.staticManifest$, this._widgetIndex$]).pipe(distinctUntilChanged$1(), switchMap(([staticManifest, index]) => !!staticManifest ? of(staticManifest) : this.store.select(DashboardSelectors.widgetManifest(index))), distinctUntilChanged$1((p, c) => equal(p, c)));
6746
- this.subscriptions.add(this.widgetManifest$.subscribe((widgetManifest) => {
6850
+ this.subscriptions.add(this.widgetManifest$
6851
+ .pipe(map((widgetManifest) => ({ type: widgetManifest.type, layout: widgetManifest.layout })), distinctUntilChanged$1((p, c) => equal(p, c)), withLatestFrom(this.widgetManifest$), map(([triggering, widgetManifest]) => widgetManifest))
6852
+ .subscribe((widgetManifest) => {
6747
6853
  this.componentRef.clear();
6748
6854
  this.instanceSubscription?.unsubscribe();
6749
6855
  this.widgetFactoryService
@@ -7711,7 +7817,6 @@ var GraphType;
7711
7817
 
7712
7818
  var TooltipMode;
7713
7819
  (function (TooltipMode) {
7714
- TooltipMode["HOVER"] = "hover";
7715
7820
  TooltipMode["CLICK"] = "click";
7716
7821
  TooltipMode["NONE"] = "none";
7717
7822
  })(TooltipMode || (TooltipMode = {}));
@@ -7748,7 +7853,7 @@ class ToolboxManifestService extends SubscriptionnerDirective {
7748
7853
  type: 'heatmap'
7749
7854
  }
7750
7855
  ],
7751
- tooltipMode: TooltipMode.HOVER
7856
+ tooltipMode: TooltipMode.CLICK
7752
7857
  },
7753
7858
  datasource: USE_CURRENT_RESULTSET
7754
7859
  },
@@ -7767,7 +7872,7 @@ class ToolboxManifestService extends SubscriptionnerDirective {
7767
7872
  type: 'bubble'
7768
7873
  }
7769
7874
  ],
7770
- tooltipMode: TooltipMode.HOVER
7875
+ tooltipMode: TooltipMode.CLICK
7771
7876
  },
7772
7877
  datasource: USE_CURRENT_RESULTSET
7773
7878
  },
@@ -7786,7 +7891,7 @@ class ToolboxManifestService extends SubscriptionnerDirective {
7786
7891
  type: 'marker'
7787
7892
  }
7788
7893
  ],
7789
- tooltipMode: TooltipMode.HOVER
7894
+ tooltipMode: TooltipMode.CLICK
7790
7895
  },
7791
7896
  datasource: USE_CURRENT_RESULTSET
7792
7897
  },
@@ -8786,7 +8891,7 @@ class PryWidgetHeaderComponent extends SubscriptionnerDirective {
8786
8891
  this.type = LibraryTypes.ILLUSTRATION;
8787
8892
  this.windowManifest$ = this.store
8788
8893
  .select(DashboardSelectors.windowManifest)
8789
- .pipe(distinctUntilChanged$1((p, c) => JSON.stringify(p) === JSON.stringify(c)));
8894
+ .pipe(distinctUntilChanged$1((p, c) => equal(p, c)));
8790
8895
  this.targetIndexes$ = this.store.select(DashboardSelectors.targetTenantsIndexes);
8791
8896
  this.subscriptions.add(this.windowManifest$.subscribe((manifest) => {
8792
8897
  this.windowManifest = manifest;
@@ -9583,7 +9688,7 @@ class DashboardEffects {
9583
9688
  this.fetchStaticManifest$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.fetchStaticManifest), withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.selectedItemIds)), filter$1(([action, rank]) => rank === 0), mergeMap$1(([action, rank]) => this.manifestService
9584
9689
  .get(action.id)
9585
9690
  .pipe(map$1((staticManifest) => DashboardActions.updateStaticManifest({ staticManifest }))))));
9586
- this.fetchStaticManifestLoading$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.fetchStaticManifest), delay(5000), map$1((action) => DashboardActions.endLoading())));
9691
+ this.fetchStaticManifestLoading$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.fetchStaticManifest), delay$1(5000), map$1((action) => DashboardActions.endLoading())));
9587
9692
  this.loadAndActivateManifest$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.loadAndActivateManifest, DashboardActions.loadManifest), withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.selectedItemIds)), filter$1(([action, rank]) => rank === 0), mergeMap$1(([action, rank, selectedIds]) => this.manifestService.get(action.id).pipe(mergeMap$1((manifest) => {
9588
9693
  return action.type === DashboardActions.loadAndActivateManifest.type
9589
9694
  ? [
@@ -10784,5 +10889,5 @@ function filterLoader(module, prop) {
10784
10889
  * Generated bundle index. Do not edit.
10785
10890
  */
10786
10891
 
10787
- export { Aggregation, BaseFilterComponent, BaseFilterModule, BaseLayoutComponent, BaseMenuComponent, BaseToolboxComponent, BaseTooltipComponent, BaseTooltipModule, BaseWidgetComponent, BaseWidgetModule, BusService, CategoryActions, CategorySelectors, CategoryService, ChartOptionDefault, ClassActions, ClassSelectors, ClassService, ConfigActions, ConfigSelectors, ConfigService, ContextMenuActions, ContextMenuComponent, ContextMenuSelectors, DEFAULT_CATEGORY_UUID, DEFAULT_COLUMNS_NUMBER, DEFAULT_GAP_PX, DEFAULT_ICON_URL, DEFAULT_MSG_TIMEOUT, DEFAULT_NAMED_QUERY_ID, DEFAULT_RESTITUTION_ICON_URL, DEFAULT_ROWS_NUMBER, DEFAULT_ROW_HEIGHT_PX, DELAY_FOR_HIDE, DashboardActions, DashboardComponent, DashboardGridLayout, DashboardSelectors, DataSourceActions, DataSourceSelectors, DataSourceService, DataWidgetComponent, DatasourceSelectorComponent, DateRangeHighlightPipe, DateUtils, DefaultTooltipComponent, DefaultViewGuard, ENV_OPTIONS, EXPLORE_NAMED_QUERY_ID, FIELD_OPTIONS, FIELD_UUID, FILTERS_DOMAIN, FILTER_DEFINITION, FieldActions, FieldSelectors, FieldService, FieldType, FilterFactoryService, FilterInstanciatorComponent, GeoMetadata, GeocodingService, GetSecuredImagePipe, GraphType, HTTP_ORIGIN_METADATA, I18nPipe, INTERNALLY_STORED_IMAGE_PREFIX, IconPosition, ImageActions, ImageService, ImagesSelectors, ItemUtils, LibraryTypes, LoopScrollColumnComponent, METADATA_TYPE, META_OPTIONS, MIME_TYPE_RESULTSET, MIME_TYPE_WIDGET_MANIFEST, MIME_TYPE_WIDGET_SIZE, MIME_TYPE_WIDGET_TYPE, ManifestService, ManifestsComponent, MarkSubType, MarkType, MetadataComponent, NamedQueryTypes, NamedQueryUtils, OPERATOR_OPTIONS, Operation, PRY_ACCESS_GUARD, PRY_ACCESS_TOKEN, PRY_CUSTOMEVENT_TYPE, PRY_DIALOG_DATA, PryAccessDirective, PryAccessUtils, PryBaseAccess, PryBaseAccessGuard, PryCoreModule, PryDashboardModule, PryDatasetType, PryDatePickerComponent, PryDatePickerModule, PryDefaultAccessGuard, PryDefaultAccessService, PryDialogConfirmComponent, PryDialogRef, PryDialogService, PryEditInputComponent, PryEditInputModule, PryHiddenWhenOverlay, PryHiddenWhenOverlayDirective, PryHttpErrorInterceptorService, PryI18nModule, PryI18nService, PryIconComponent, PryIconModule, PryModalComponent, PryModalModule, PryModalStatusComponent, PryModalStatusModule, PryNqColorSelectorComponent, PryObjectEditionComponent, PryOverlayDirective, PryOverlayModule, PryRangeComponent, PryRangeModule, PrySelectComponent, PrySelectImageComponent, PrySelectModule, PryShareComponent, PryShareModule, PrySnackbarComponent, PrySnackbarModule, PrySnackbarService, PrySortDataPipe, PrySortHeaderComponent, PrySortHeaderDirective, PrySortModule, PrySortTableDirective, PryTimePickerComponent, PryTitleService, PryToggleComponent, PryToggleModule, PryTooltipDirective, PryUploadComponent, PryVisibilityType, PryWidgetHeaderComponent, RawService, RelationTypesActions, RelationTypesSelectors, RelationTypesService, ResultSetSizePipe, ResultsetUtils, SYMBOL_DOMAIN, SearchActions, SearchSelectors, SearchService, SettingsComponent, SubscriptionnerDirective, SymbolService, TABLE_ATTR_DOMAIN, TILE_ATTR_DOMAIN, TOOLTIPS_DOMAIN, TOOLTIP_DEFINITION, ToolboxManifestService, ToolboxMenuService, TooltipFactoryService, TooltipMode, TranslateIdPipe, TranslateItemToSymbolPipe, UNKNOWN_DATASOURCE, USE_CURRENT_RESULTSET, VARIABLE_TYPE, VegaColorType, VegaType, ViewMode, VizualizeRawComponent, WIDGET_DEFINITION, WIDGET_HEADER_HEIGHT, WebsocketService, WidgetFactoryService, WidgetInstanciatorComponent, WidgetPlaceholderComponent, WidgetPlacementUtils, adapter$2 as adapter, aggregationDefault, baseItemProperties, classReducer, classesFeatureKey, compareOperationFunctions, contextMenuFeatureKey, contextMenuReducer, createPlacedWidgetCopy, dashboardFeatureKey, dashboardInitialState, dashboardReducer, dataSourceFeatureKey, dataSourceReducer, deepMerge, defaultColors, defaultMenuStructure, enTranslations$1 as enTranslations, filterLoader, frTranslations$1 as frTranslations, httpErrorOptions, imageFeatureKey, imageReducer, initialClassState, initialContextMenuState, initialDataSourceState, initialImageState, initialSearchState, latLonToGeographicFieldTransformation, markTypesDefault, notificationFeatureKey, orderWidgetsAccordingToPlacement, searchFeatureKey, searchReducer, selectAll$2 as selectAll, selectEntities$2 as selectEntities, selectIds$2 as selectIds, selectTotal$2 as selectTotal, solveCollisions, solvingCollisionOptions, sortByName$2 as sortByName, subTypesDefault, tooltipLoader, vegaColorSchemesDefault, widgetLoader, widgetMapConfig };
10892
+ export { AccordionComponent, AccordionItemComponent, Aggregation, BaseFilterComponent, BaseFilterModule, BaseLayoutComponent, BaseMenuComponent, BaseToolboxComponent, BaseTooltipComponent, BaseTooltipModule, BaseWidgetComponent, BaseWidgetModule, BusService, CategoryActions, CategorySelectors, CategoryService, ChartOptionDefault, ClassActions, ClassSelectors, ClassService, ConfigActions, ConfigSelectors, ConfigService, ContextMenuActions, ContextMenuComponent, ContextMenuSelectors, DEFAULT_CATEGORY_UUID, DEFAULT_COLUMNS_NUMBER, DEFAULT_GAP_PX, DEFAULT_ICON_URL, DEFAULT_MSG_TIMEOUT, DEFAULT_NAMED_QUERY_ID, DEFAULT_RESTITUTION_ICON_URL, DEFAULT_ROWS_NUMBER, DEFAULT_ROW_HEIGHT_PX, DELAY_FOR_HIDE, DashboardActions, DashboardComponent, DashboardGridLayout, DashboardSelectors, DataSourceActions, DataSourceSelectors, DataSourceService, DataWidgetComponent, DatasourceSelectorComponent, DateRangeHighlightPipe, DateUtils, DefaultTooltipComponent, DefaultViewGuard, ENV_OPTIONS, EXPLORE_NAMED_QUERY_ID, FIELD_OPTIONS, FIELD_UUID, FILTERS_DOMAIN, FILTER_DEFINITION, FieldActions, FieldSelectors, FieldService, FieldType, FilterFactoryService, FilterInstanciatorComponent, GeoMetadata, GeocodingService, GetSecuredImagePipe, GraphType, HTTP_ORIGIN_METADATA, I18nPipe, INTERNALLY_STORED_IMAGE_PREFIX, IconPosition, ImageActions, ImageService, ImagesSelectors, ItemUtils, LibraryTypes, LoopScrollColumnComponent, METADATA_TYPE, META_OPTIONS, MIME_TYPE_RESULTSET, MIME_TYPE_WIDGET_MANIFEST, MIME_TYPE_WIDGET_SIZE, MIME_TYPE_WIDGET_TYPE, ManifestService, ManifestsComponent, MarkSubType, MarkType, MetadataComponent, NamedQueryTypes, NamedQueryUtils, OPERATOR_OPTIONS, Operation, PRY_ACCESS_GUARD, PRY_ACCESS_TOKEN, PRY_CUSTOMEVENT_TYPE, PRY_DIALOG_DATA, PryAccessDirective, PryAccessUtils, PryBaseAccess, PryBaseAccessGuard, PryCoreModule, PryDashboardModule, PryDatasetType, PryDatePickerComponent, PryDatePickerModule, PryDefaultAccessGuard, PryDefaultAccessService, PryDialogConfirmComponent, PryDialogRef, PryDialogService, PryEditInputComponent, PryEditInputModule, PryHiddenWhenOverlay, PryHiddenWhenOverlayDirective, PryHttpErrorInterceptorService, PryI18nModule, PryI18nService, PryIconComponent, PryIconModule, PryModalComponent, PryModalModule, PryModalStatusComponent, PryModalStatusModule, PryNqColorSelectorComponent, PryObjectEditionComponent, PryOverlayDirective, PryOverlayModule, PryRangeComponent, PryRangeModule, PrySelectComponent, PrySelectImageComponent, PrySelectModule, PryShareComponent, PryShareModule, PrySnackbarComponent, PrySnackbarModule, PrySnackbarService, PrySortDataPipe, PrySortHeaderComponent, PrySortHeaderDirective, PrySortModule, PrySortTableDirective, PryTimePickerComponent, PryTitleService, PryToggleComponent, PryToggleModule, PryTooltipDirective, PryUploadComponent, PryVisibilityType, PryWidgetHeaderComponent, RawService, RelationTypesActions, RelationTypesSelectors, RelationTypesService, ResultSetSizePipe, ResultsetUtils, SYMBOL_DOMAIN, SearchActions, SearchSelectors, SearchService, SettingsComponent, SubscriptionnerDirective, SymbolService, TABLE_ATTR_DOMAIN, TILE_ATTR_DOMAIN, TOOLTIPS_DOMAIN, TOOLTIP_DEFINITION, ToolboxManifestService, ToolboxMenuService, TooltipFactoryService, TooltipMode, TranslateIdPipe, TranslateItemToSymbolPipe, UNKNOWN_DATASOURCE, USE_CURRENT_RESULTSET, VARIABLE_TYPE, VegaColorType, VegaType, ViewMode, VizualizeRawComponent, WIDGET_DEFINITION, WIDGET_HEADER_HEIGHT, WebsocketService, WidgetFactoryService, WidgetInstanciatorComponent, WidgetPlaceholderComponent, WidgetPlacementUtils, adapter$2 as adapter, aggregationDefault, baseItemProperties, classReducer, classesFeatureKey, compareOperationFunctions, contextMenuFeatureKey, contextMenuReducer, createPlacedWidgetCopy, dashboardFeatureKey, dashboardInitialState, dashboardReducer, dataSourceFeatureKey, dataSourceReducer, deepMerge, defaultColors, defaultMenuStructure, enTranslations$1 as enTranslations, filterLoader, frTranslations$1 as frTranslations, httpErrorOptions, imageFeatureKey, imageReducer, initialClassState, initialContextMenuState, initialDataSourceState, initialImageState, initialSearchState, latLonToGeographicFieldTransformation, markTypesDefault, notificationFeatureKey, orderWidgetsAccordingToPlacement, searchFeatureKey, searchReducer, selectAll$2 as selectAll, selectEntities$2 as selectEntities, selectIds$2 as selectIds, selectTotal$2 as selectTotal, solveCollisions, solvingCollisionOptions, sortByName$2 as sortByName, subTypesDefault, tooltipLoader, vegaColorSchemesDefault, widgetLoader, widgetMapConfig };
10788
10893
  //# sourceMappingURL=provoly-dashboard.mjs.map