geonetwork-ui 2.5.0-dev.77e75b46a → 2.5.0-dev.80a8304dd

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 (95) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +31 -16
  2. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +2 -2
  3. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +18 -16
  4. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +3 -1
  5. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +12 -17
  6. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
  7. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +6 -7
  8. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +46 -1
  9. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +3 -2
  10. package/esm2022/libs/ui/dataviz/src/index.mjs +3 -3
  11. package/esm2022/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.mjs +51 -0
  12. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +133 -0
  13. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.data.source.mjs +24 -0
  14. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.mjs +82 -0
  15. package/esm2022/libs/util/data-fetcher/src/index.mjs +3 -1
  16. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +7 -3
  17. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +20 -2
  18. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +3 -3
  19. package/esm2022/translations/de.json +7 -0
  20. package/esm2022/translations/en.json +7 -0
  21. package/esm2022/translations/es.json +7 -0
  22. package/esm2022/translations/fr.json +7 -0
  23. package/esm2022/translations/it.json +7 -0
  24. package/esm2022/translations/nl.json +7 -0
  25. package/esm2022/translations/pt.json +7 -0
  26. package/fesm2022/geonetwork-ui.mjs +431 -127
  27. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  28. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +2 -1
  29. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  30. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  31. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +7 -9
  32. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  33. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  34. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +3 -6
  35. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  36. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -2
  37. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  38. package/libs/feature/search/src/lib/utils/service/fields.d.ts +10 -0
  39. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  40. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  41. package/libs/ui/dataviz/src/index.d.ts +2 -2
  42. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  43. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts +14 -0
  44. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts.map +1 -0
  45. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +45 -0
  46. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -0
  47. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts +12 -0
  48. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts.map +1 -0
  49. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts +10 -0
  50. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts.map +1 -0
  51. package/libs/util/data-fetcher/src/index.d.ts +3 -1
  52. package/libs/util/data-fetcher/src/index.d.ts.map +1 -1
  53. package/libs/util/data-fetcher/src/lib/model.d.ts +1 -1
  54. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  55. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  56. package/package.json +1 -1
  57. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +33 -16
  58. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +1 -5
  59. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +3 -3
  60. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +17 -15
  61. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +2 -0
  62. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +4 -3
  63. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +9 -18
  64. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +1 -1
  65. package/src/libs/feature/record/src/lib/feature-record.module.ts +6 -4
  66. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -0
  67. package/src/libs/feature/search/src/lib/utils/service/fields.ts +55 -0
  68. package/src/libs/ui/dataviz/src/index.ts +2 -2
  69. package/src/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.ts +52 -0
  70. package/src/libs/ui/dataviz/src/lib/{table/table.component.css → data-table/data-table.component.css} +4 -0
  71. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +67 -0
  72. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +173 -0
  73. package/src/libs/ui/dataviz/src/lib/data-table/data-table.data.source.ts +33 -0
  74. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +84 -0
  75. package/src/libs/util/data-fetcher/src/index.ts +3 -0
  76. package/src/libs/util/data-fetcher/src/lib/model.ts +6 -2
  77. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +23 -1
  78. package/src/libs/util/data-fetcher/src/lib/utils.ts +2 -2
  79. package/translations/de.json +7 -0
  80. package/translations/en.json +7 -0
  81. package/translations/es.json +7 -0
  82. package/translations/fr.json +7 -0
  83. package/translations/it.json +7 -0
  84. package/translations/nl.json +7 -0
  85. package/translations/pt.json +7 -0
  86. package/translations/sk.json +7 -0
  87. package/esm2022/libs/ui/dataviz/src/lib/table/table.component.mjs +0 -61
  88. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +0 -40
  89. package/libs/ui/dataviz/src/lib/table/table.component.d.ts +0 -29
  90. package/libs/ui/dataviz/src/lib/table/table.component.d.ts.map +0 -1
  91. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +0 -11
  92. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +0 -1
  93. package/src/libs/ui/dataviz/src/lib/table/table.component.html +0 -40
  94. package/src/libs/ui/dataviz/src/lib/table/table.component.ts +0 -80
  95. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +0 -40
@@ -16,7 +16,7 @@ import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-comp
16
16
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
17
17
  import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, first as first$1, share, pairwise, delay, defaultIfEmpty, toArray } from 'rxjs/operators';
18
18
  import * as i1$2 from '@angular/common';
19
- import { CommonModule, NgOptimizedImage, DatePipe, NgIf, NgForOf } from '@angular/common';
19
+ import { CommonModule, NgOptimizedImage, DatePipe, NgIf } from '@angular/common';
20
20
  import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, timer, takeUntil, EMPTY, mergeMap as mergeMap$1, startWith as startWith$1, withLatestFrom as withLatestFrom$1, shareReplay as shareReplay$1, pairwise as pairwise$1 } from 'rxjs';
21
21
  import { lt, valid, coerce, satisfies, ltr } from 'semver';
22
22
  import chroma from 'chroma-js';
@@ -59,7 +59,7 @@ import * as i1$b from '@angular/material/dialog';
59
59
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
60
60
  import * as i2$3 from '@angular/material/tabs';
61
61
  import { MatTabsModule } from '@angular/material/tabs';
62
- import * as i1$f from '@angular/router';
62
+ import * as i1$e from '@angular/router';
63
63
  import { RouterLink, RouterModule, RouteReuseStrategy } from '@angular/router';
64
64
  import { marked } from 'marked';
65
65
  import Duration from 'duration-relativetimeformat';
@@ -89,16 +89,16 @@ import { parseISO } from 'date-fns/parseISO';
89
89
  import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
90
90
  import { tablerFolderOpen } from '@ng-icons/tabler-icons';
91
91
  import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
92
- import * as i4 from '@angular/cdk/scrolling';
93
92
  import { ScrollingModule } from '@angular/cdk/scrolling';
94
- import * as i2$4 from '@angular/material/sort';
93
+ import * as i3$1 from '@angular/material/sort';
95
94
  import { MatSort, MatSortModule } from '@angular/material/sort';
96
- import * as i1$d from '@angular/material/table';
95
+ import * as i2$4 from '@angular/material/table';
97
96
  import { MatTableModule } from '@angular/material/table';
98
- import * as i3$1 from 'ng-table-virtual-scroll';
99
- import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
97
+ import * as i4 from '@angular/material/paginator';
98
+ import { MatPaginatorIntl, MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
99
+ import { LetDirective } from '@ngrx/component';
100
100
  import axios from 'axios';
101
- import * as i1$e from '@angular/platform-browser';
101
+ import * as i1$d from '@angular/platform-browser';
102
102
  import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
103
103
  import { Polygon } from 'ol/geom';
104
104
  import * as i4$1 from '@angular/material/radio';
@@ -19190,6 +19190,12 @@ var de = {
19190
19190
  "share.tab.webComponent": "Integrieren",
19191
19191
  "table.loading.data": "Daten werden geladen...",
19192
19192
  "table.object.count": "Objekte in diesem Datensatz",
19193
+ "table.paginator.firstPage": "Erste Seite",
19194
+ "table.paginator.itemsPerPage": "Elemente pro Seite",
19195
+ "table.paginator.lastPage": "Letzte Seite",
19196
+ "table.paginator.nextPage": "Nächste Seite",
19197
+ "table.paginator.previousPage": "Vorherige Seite",
19198
+ "table.paginator.rangeLabel": "{startIndex} - {endIndex} von {length}",
19193
19199
  "table.select.data": "Datenquelle",
19194
19200
  "tooltip.html.copy": "HTML kopieren",
19195
19201
  "tooltip.id.copy": "Eindeutige Kennung kopieren",
@@ -19197,6 +19203,7 @@ var de = {
19197
19203
  "tooltip.url.open": "URL öffnen",
19198
19204
  "ui.readLess": "Weniger lesen",
19199
19205
  "ui.readMore": "Weiterlesen",
19206
+ "wfs.aggregations.notsupported": "",
19200
19207
  "wfs.feature.limit": "Zu viele Features, um den WFS-Layer anzuzeigen!",
19201
19208
  "wfs.featuretype.notfound": "Kein passender Feature-Typ wurde im Dienst gefunden",
19202
19209
  "wfs.geojsongml.notsupported": "Dieser Dienst unterstützt das GeoJSON- oder GML-Format nicht",
@@ -19800,6 +19807,12 @@ var en = {
19800
19807
  "share.tab.webComponent": "Integrate",
19801
19808
  "table.loading.data": "Loading data...",
19802
19809
  "table.object.count": "Objects in this dataset",
19810
+ "table.paginator.firstPage": "First page",
19811
+ "table.paginator.itemsPerPage": "Items per page",
19812
+ "table.paginator.lastPage": "Last page",
19813
+ "table.paginator.nextPage": "Next page",
19814
+ "table.paginator.previousPage": "Previous page",
19815
+ "table.paginator.rangeLabel": "{startIndex} - {endIndex} of {length}",
19803
19816
  "table.select.data": "Data source",
19804
19817
  "tooltip.html.copy": "Copy HTML",
19805
19818
  "tooltip.id.copy": "Copy unique identifier",
@@ -19807,6 +19820,7 @@ var en = {
19807
19820
  "tooltip.url.open": "Open URL",
19808
19821
  "ui.readLess": "Read less",
19809
19822
  "ui.readMore": "Read more",
19823
+ "wfs.aggregations.notsupported": "Aggregations are currently not supported for WFS services",
19810
19824
  "wfs.feature.limit": "Too many features to display the WFS layer!",
19811
19825
  "wfs.featuretype.notfound": "No matching feature type was found in the service",
19812
19826
  "wfs.geojsongml.notsupported": "This service does not support the GeoJSON or GML format",
@@ -20410,6 +20424,12 @@ var es = {
20410
20424
  "share.tab.webComponent": "",
20411
20425
  "table.loading.data": "",
20412
20426
  "table.object.count": "",
20427
+ "table.paginator.firstPage": "Primera página",
20428
+ "table.paginator.itemsPerPage": "Elementos por página",
20429
+ "table.paginator.lastPage": "Última página",
20430
+ "table.paginator.nextPage": "Página siguiente",
20431
+ "table.paginator.previousPage": "Página anterior",
20432
+ "table.paginator.rangeLabel": "{startIndex} - {endIndex} de {length}",
20413
20433
  "table.select.data": "",
20414
20434
  "tooltip.html.copy": "",
20415
20435
  "tooltip.id.copy": "",
@@ -20417,6 +20437,7 @@ var es = {
20417
20437
  "tooltip.url.open": "",
20418
20438
  "ui.readLess": "",
20419
20439
  "ui.readMore": "",
20440
+ "wfs.aggregations.notsupported": "",
20420
20441
  "wfs.feature.limit": "",
20421
20442
  "wfs.featuretype.notfound": "",
20422
20443
  "wfs.geojsongml.notsupported": "",
@@ -21020,6 +21041,12 @@ var fr = {
21020
21041
  "share.tab.webComponent": "Intégrer",
21021
21042
  "table.loading.data": "Chargement des données...",
21022
21043
  "table.object.count": "enregistrements dans ces données",
21044
+ "table.paginator.firstPage": "Première page",
21045
+ "table.paginator.itemsPerPage": "Éléments par page",
21046
+ "table.paginator.lastPage": "Dernière page",
21047
+ "table.paginator.nextPage": "Page suivante",
21048
+ "table.paginator.previousPage": "Page précédente",
21049
+ "table.paginator.rangeLabel": "{startIndex} - {endIndex} sur {length}",
21023
21050
  "table.select.data": "Source de données",
21024
21051
  "tooltip.html.copy": "Copier le HTML",
21025
21052
  "tooltip.id.copy": "Copier l'identifiant unique",
@@ -21027,6 +21054,7 @@ var fr = {
21027
21054
  "tooltip.url.open": "Ouvrir l'URL",
21028
21055
  "ui.readLess": "Réduire",
21029
21056
  "ui.readMore": "Lire la suite",
21057
+ "wfs.aggregations.notsupported": "Agrégations non supportées pour les services WFS",
21030
21058
  "wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
21031
21059
  "wfs.featuretype.notfound": "La classe d'objets n'a pas été trouvée dans le service",
21032
21060
  "wfs.geojsongml.notsupported": "Le service ne supporte pas le format GeoJSON ou GML",
@@ -21630,6 +21658,12 @@ var it = {
21630
21658
  "share.tab.webComponent": "Incorporare",
21631
21659
  "table.loading.data": "Caricamento dei dati...",
21632
21660
  "table.object.count": "record in questi dati",
21661
+ "table.paginator.firstPage": "Prima pagina",
21662
+ "table.paginator.itemsPerPage": "Elementi per pagina",
21663
+ "table.paginator.lastPage": "Ultima pagina",
21664
+ "table.paginator.nextPage": "Pagina successiva",
21665
+ "table.paginator.previousPage": "Pagina precedente",
21666
+ "table.paginator.rangeLabel": "{startIndex} - {endIndex} di {total}",
21633
21667
  "table.select.data": "Sorgente dati",
21634
21668
  "tooltip.html.copy": "Copiare il HTML",
21635
21669
  "tooltip.id.copy": "Copiare l'identificatore unico",
@@ -21637,6 +21671,7 @@ var it = {
21637
21671
  "tooltip.url.open": "Aprire l'URL",
21638
21672
  "ui.readLess": "Ridurre",
21639
21673
  "ui.readMore": "Leggere di più",
21674
+ "wfs.aggregations.notsupported": "",
21640
21675
  "wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
21641
21676
  "wfs.featuretype.notfound": "La classe di oggetto non è stata trovata nel servizio",
21642
21677
  "wfs.geojsongml.notsupported": "Il servizio non supporta il formato GeoJSON o GML",
@@ -22240,6 +22275,12 @@ var nl = {
22240
22275
  "share.tab.webComponent": "",
22241
22276
  "table.loading.data": "",
22242
22277
  "table.object.count": "",
22278
+ "table.paginator.firstPage": "",
22279
+ "table.paginator.itemsPerPage": "",
22280
+ "table.paginator.lastPage": "",
22281
+ "table.paginator.nextPage": "",
22282
+ "table.paginator.previousPage": "",
22283
+ "table.paginator.rangeLabel": "",
22243
22284
  "table.select.data": "",
22244
22285
  "tooltip.html.copy": "",
22245
22286
  "tooltip.id.copy": "",
@@ -22247,6 +22288,7 @@ var nl = {
22247
22288
  "tooltip.url.open": "",
22248
22289
  "ui.readLess": "",
22249
22290
  "ui.readMore": "",
22291
+ "wfs.aggregations.notsupported": "",
22250
22292
  "wfs.feature.limit": "",
22251
22293
  "wfs.featuretype.notfound": "",
22252
22294
  "wfs.geojsongml.notsupported": "",
@@ -22850,6 +22892,12 @@ var pt = {
22850
22892
  "share.tab.webComponent": "",
22851
22893
  "table.loading.data": "",
22852
22894
  "table.object.count": "",
22895
+ "table.paginator.firstPage": "",
22896
+ "table.paginator.itemsPerPage": "",
22897
+ "table.paginator.lastPage": "",
22898
+ "table.paginator.nextPage": "",
22899
+ "table.paginator.previousPage": "",
22900
+ "table.paginator.rangeLabel": "",
22853
22901
  "table.select.data": "",
22854
22902
  "tooltip.html.copy": "",
22855
22903
  "tooltip.id.copy": "",
@@ -22857,6 +22905,7 @@ var pt = {
22857
22905
  "tooltip.url.open": "",
22858
22906
  "ui.readLess": "",
22859
22907
  "ui.readMore": "",
22908
+ "wfs.aggregations.notsupported": "",
22860
22909
  "wfs.feature.limit": "",
22861
22910
  "wfs.featuretype.notfound": "",
22862
22911
  "wfs.geojsongml.notsupported": "",
@@ -23360,7 +23409,7 @@ class ElasticsearchService {
23360
23409
  this.runtimeFields = {};
23361
23410
  this.lang3 = this.langService.iso3;
23362
23411
  }
23363
- getSearchRequestBody(aggregations = {}, size = 0, from = 0, sortBy = null, requestFields = [], searchFilters = {}, configFilters = {}, uuids, geometry) {
23412
+ getSearchRequestBody(aggregations = {}, size = 0, from = 0, sortBy = null, requestFields = null, searchFilters = {}, configFilters = {}, uuids, geometry) {
23364
23413
  const payload = {
23365
23414
  aggregations,
23366
23415
  from,
@@ -23368,7 +23417,7 @@ class ElasticsearchService {
23368
23417
  sort: this.buildPayloadSort(sortBy),
23369
23418
  query: this.buildPayloadQuery(searchFilters, configFilters, uuids, geometry),
23370
23419
  ...(size > 0 ? { track_total_hits: true } : {}),
23371
- _source: requestFields,
23420
+ ...(requestFields && { _source: requestFields }),
23372
23421
  };
23373
23422
  this.processRuntimeFields(payload);
23374
23423
  return payload;
@@ -23428,7 +23477,7 @@ class ElasticsearchService {
23428
23477
  },
23429
23478
  };
23430
23479
  }
23431
- getRelatedRecordPayload(title, uuid, size = 6, _source = [...ES_SOURCE_SUMMARY, 'allKeywords', 'createDate']) {
23480
+ getRelatedRecordPayload(record, size = 6, _source = [...ES_SOURCE_SUMMARY, 'allKeywords', 'createDate']) {
23432
23481
  return {
23433
23482
  query: {
23434
23483
  bool: {
@@ -23438,9 +23487,21 @@ class ElasticsearchService {
23438
23487
  fields: [
23439
23488
  'resourceTitleObject.default',
23440
23489
  'resourceAbstractObject.default',
23441
- 'tag.raw',
23490
+ 'allKeywords',
23491
+ ],
23492
+ like: [
23493
+ {
23494
+ doc: {
23495
+ resourceTitleObject: {
23496
+ default: record.title,
23497
+ },
23498
+ resourceAbstractObject: {
23499
+ default: record.abstract,
23500
+ },
23501
+ allKeywords: record.keywords.map((keyword) => keyword.label),
23502
+ },
23503
+ },
23442
23504
  ],
23443
- like: title,
23444
23505
  min_term_freq: 1,
23445
23506
  max_query_terms: 12,
23446
23507
  },
@@ -23456,7 +23517,7 @@ class ElasticsearchService {
23456
23517
  },
23457
23518
  },
23458
23519
  ],
23459
- must_not: [{ wildcard: { uuid: uuid } }],
23520
+ must_not: [{ wildcard: { uuid: record.uniqueIdentifier } }],
23460
23521
  },
23461
23522
  },
23462
23523
  size,
@@ -23503,6 +23564,7 @@ class ElasticsearchService {
23503
23564
  return this.metadataLang === 'current';
23504
23565
  }
23505
23566
  filtersToQuery(filters) {
23567
+ const addQuote = (key) => (/^\/.+\/$/.test(key) ? key : `"${key}"`);
23506
23568
  const makeQuery = (filter) => {
23507
23569
  if (typeof filter === 'string') {
23508
23570
  return filter;
@@ -23510,9 +23572,9 @@ class ElasticsearchService {
23510
23572
  return Object.keys(filter)
23511
23573
  .map((key) => {
23512
23574
  if (filter[key] === true) {
23513
- return `"${key}"`;
23575
+ return addQuote(key);
23514
23576
  }
23515
- return `-"${key}"`;
23577
+ return `-${addQuote(key)}`;
23516
23578
  })
23517
23579
  .join(' OR ');
23518
23580
  };
@@ -23758,13 +23820,15 @@ class ElasticsearchService {
23758
23820
  switch (aggregation.type) {
23759
23821
  case 'filters':
23760
23822
  return {
23761
- filters: Object.keys(aggregation.filters).reduce((prev, curr) => {
23762
- const filter = aggregation.filters[curr];
23763
- return {
23764
- ...prev,
23765
- [curr]: this.filtersToQuery(filter)[0],
23766
- };
23767
- }, {}),
23823
+ filters: {
23824
+ filters: Object.keys(aggregation.filters).reduce((prev, curr) => {
23825
+ const filter = aggregation.filters[curr];
23826
+ return {
23827
+ ...prev,
23828
+ [curr]: this.filtersToQuery(filter)[0],
23829
+ };
23830
+ }, {}),
23831
+ },
23768
23832
  };
23769
23833
  case 'terms':
23770
23834
  return {
@@ -23877,7 +23941,7 @@ class Gn4Repository {
23877
23941
  }
23878
23942
  getSimilarRecords(similarTo) {
23879
23943
  return this.gn4SearchApi
23880
- .search('bucket', null, JSON.stringify(this.gn4SearchHelper.getRelatedRecordPayload(similarTo.title, similarTo.uniqueIdentifier, 3)))
23944
+ .search('bucket', null, JSON.stringify(this.gn4SearchHelper.getRelatedRecordPayload(similarTo, 3)))
23881
23945
  .pipe(switchMap((results) => this.gn4Mapper.readRecords(results.hits.hits)));
23882
23946
  }
23883
23947
  aggregate(params) {
@@ -32468,6 +32532,51 @@ class DateRangeSearchField extends SimpleSearchField {
32468
32532
  return 'dateRange';
32469
32533
  }
32470
32534
  }
32535
+ marker('search.filters.availableServices.view');
32536
+ marker('search.filters.availableServices.download');
32537
+ class AvailableServicesField extends SimpleSearchField {
32538
+ constructor(injector) {
32539
+ super('availableServices', injector, 'asc');
32540
+ this.translateService = this.injector.get(TranslateService);
32541
+ this.linkProtocolViewFilter = '/OGC:WMT?S.*/';
32542
+ this.linkProtocolDownloadFilter = '/OGC:WFS.*/';
32543
+ }
32544
+ async getBucketLabel(bucket) {
32545
+ return firstValueFrom(this.translateService.get(`search.filters.availableServices.${bucket.term}`));
32546
+ }
32547
+ getAggregations() {
32548
+ return {
32549
+ availableServices: {
32550
+ type: 'filters',
32551
+ filters: {
32552
+ view: `+linkProtocol:${this.linkProtocolViewFilter}`,
32553
+ download: `+linkProtocol:${this.linkProtocolDownloadFilter}`,
32554
+ },
32555
+ },
32556
+ };
32557
+ }
32558
+ getFiltersForValues(values) {
32559
+ const filters = {};
32560
+ if (values.includes('view'))
32561
+ filters[this.linkProtocolViewFilter] = true;
32562
+ if (values.includes('download'))
32563
+ filters[this.linkProtocolDownloadFilter] = true;
32564
+ return of({
32565
+ linkProtocol: filters,
32566
+ });
32567
+ }
32568
+ getValuesForFilter(filters) {
32569
+ const linkFilter = filters.linkProtocol;
32570
+ if (!linkFilter)
32571
+ return of([]);
32572
+ const values = [];
32573
+ if (linkFilter[this.linkProtocolViewFilter])
32574
+ values.push('view');
32575
+ if (linkFilter[this.linkProtocolDownloadFilter])
32576
+ values.push('download');
32577
+ return of(values);
32578
+ }
32579
+ }
32471
32580
 
32472
32581
  marker('search.filters.format');
32473
32582
  marker('search.filters.inspireKeyword');
@@ -32509,6 +32618,7 @@ class FieldsService {
32509
32618
  publisherOrg: new MultilingualSearchField('distributorOrgForResourceObject', this.injector, 'asc', 'key'),
32510
32619
  user: new UserSearchField(this.injector),
32511
32620
  changeDate: new DateRangeSearchField('changeDate', this.injector, 'desc'),
32621
+ availableServices: new AvailableServicesField(this.injector),
32512
32622
  };
32513
32623
  }
32514
32624
  getAvailableValues(fieldName) {
@@ -35137,8 +35247,12 @@ class FetchError {
35137
35247
  this.stack = null;
35138
35248
  this.message = `An error happened in the data fetcher, type: ${type}, info: ${info}`;
35139
35249
  }
35140
- static http(code) {
35141
- return new FetchError('http', '', code);
35250
+ static http(code, body) {
35251
+ const info = body
35252
+ ? `Error ${code}
35253
+ ${body}`
35254
+ : `${code}`;
35255
+ return new FetchError('http', info, code);
35142
35256
  }
35143
35257
  static corsOrNetwork(message) {
35144
35258
  return new FetchError('network', message, 0);
@@ -35246,7 +35360,7 @@ function fetchDataAsText(url) {
35246
35360
  })
35247
35361
  .then(async (response) => {
35248
35362
  if (!response.ok) {
35249
- throw FetchError.http(response.status);
35363
+ throw FetchError.http(response.status, await response.text());
35250
35364
  }
35251
35365
  return response.text();
35252
35366
  }), url, 'asText');
@@ -35258,7 +35372,7 @@ function fetchDataAsArrayBuffer(url) {
35258
35372
  })
35259
35373
  .then(async (response) => {
35260
35374
  if (!response.ok) {
35261
- throw FetchError.http(response.status);
35375
+ throw FetchError.http(response.status, await response.text());
35262
35376
  }
35263
35377
  // convert to a numeric array so that we can store the response in cache
35264
35378
  return Array.from(new Uint8Array(await response.arrayBuffer()));
@@ -35730,7 +35844,19 @@ class WfsReader extends BaseReader {
35730
35844
  this.version = this.endpoint.getVersion();
35731
35845
  }
35732
35846
  get properties() {
35733
- return this.getData().then((result) => result.properties);
35847
+ return this.endpoint
35848
+ .getFeatureTypeFull(this.featureTypeName)
35849
+ .then((featureType) => Object.keys(featureType.properties).map((prop) => {
35850
+ const originalType = featureType.properties[prop];
35851
+ const type = originalType === 'float' || originalType === 'integer'
35852
+ ? 'number'
35853
+ : originalType; // FIXME: ogc-client typing is incorrect, should be a string union
35854
+ return {
35855
+ name: prop,
35856
+ label: prop,
35857
+ type,
35858
+ };
35859
+ }));
35734
35860
  }
35735
35861
  get info() {
35736
35862
  return this.endpoint.getFeatureTypeFull(this.featureTypeName).then((result) => ({
@@ -35768,12 +35894,17 @@ class WfsReader extends BaseReader {
35768
35894
  }
35769
35895
  }
35770
35896
  getData() {
35897
+ if (this.aggregations || this.groupedBy) {
35898
+ throw new Error(marker('wfs.aggregations.notsupported'));
35899
+ }
35771
35900
  const asJson = this.endpoint.supportsJson(this.featureTypeName);
35901
+ const attributes = this.selected ?? undefined;
35772
35902
  let url = this.endpoint.getFeatureUrl(this.featureTypeName, {
35773
35903
  ...(this.startIndex !== null && { startIndex: this.startIndex }),
35774
35904
  ...(this.count !== null && { maxFeatures: this.count }),
35775
35905
  asJson,
35776
35906
  outputCrs: 'EPSG:4326',
35907
+ attributes,
35777
35908
  // sortBy: this.sort // TODO: no sort in ogc-client?
35778
35909
  });
35779
35910
  if (Array.isArray(this.sort) && this.sort.length > 0) {
@@ -35943,6 +36074,7 @@ class DataService {
35943
36074
  // Pour DL toutes les données
35944
36075
  return this.getDownloadUrlsFromWfs(wfsLink.url.toString(), wfsLink.name).pipe(map$1((urls) => urls.all), map$1((urls) => Object.keys(urls).map((format) => ({
35945
36076
  ...wfsLink,
36077
+ name: wfsLink.name,
35946
36078
  type: 'download',
35947
36079
  url: new URL(urls[format]),
35948
36080
  mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
@@ -35953,6 +36085,7 @@ class DataService {
35953
36085
  return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
35954
36086
  return {
35955
36087
  ...ogcApiLink,
36088
+ name: collectionInfo.id,
35956
36089
  type: 'download',
35957
36090
  url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
35958
36091
  mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
@@ -36265,22 +36398,136 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36265
36398
  args: ['chartCanvas']
36266
36399
  }] } });
36267
36400
 
36268
- const rowIdPrefix = 'table-item-';
36269
- class TableComponent {
36270
- set data(value) {
36271
- this.dataSource = new TableVirtualScrollDataSource(value);
36272
- this.dataSource.sort = this.sort;
36273
- this.properties =
36274
- Array.isArray(value) && value.length ? Object.keys(value[0]) : [];
36275
- this.count = value.length;
36401
+ class DataTableDataSource {
36402
+ constructor() {
36403
+ this.dataItems$ = new BehaviorSubject([]);
36404
+ }
36405
+ connect() {
36406
+ return this.dataItems$.asObservable().pipe(map$1((items) => items.map((item) => ({
36407
+ id: item.id,
36408
+ ...item.properties,
36409
+ }))));
36276
36410
  }
36277
- constructor(eltRef) {
36411
+ disconnect() {
36412
+ this.dataItems$.complete();
36413
+ }
36414
+ async showData(itemsPromise) {
36415
+ const items = await itemsPromise;
36416
+ this.dataItems$.next(items);
36417
+ }
36418
+ clearData() {
36419
+ this.dataItems$.next([]);
36420
+ }
36421
+ }
36422
+
36423
+ class CustomMatPaginatorIntl extends MatPaginatorIntl {
36424
+ constructor(translate) {
36425
+ super();
36426
+ this.translate = translate;
36427
+ this.changes = new Subject();
36428
+ this.setLabels();
36429
+ this.translate.onLangChange.subscribe(() => {
36430
+ this.setLabels();
36431
+ this.changes.next();
36432
+ });
36433
+ }
36434
+ setLabels() {
36435
+ this.itemsPerPageLabel = this.translate.instant('table.paginator.itemsPerPage');
36436
+ this.nextPageLabel = this.translate.instant('table.paginator.nextPage');
36437
+ this.previousPageLabel = this.translate.instant('table.paginator.previousPage');
36438
+ this.firstPageLabel = this.translate.instant('table.paginator.firstPage');
36439
+ this.lastPageLabel = this.translate.instant('table.paginator.lastPage');
36440
+ this.getRangeLabel = this.getRangeLabelIntl;
36441
+ this.changes.next();
36442
+ }
36443
+ getRangeLabelIntl(page, pageSize, length) {
36444
+ if (length === 0 || pageSize === 0) {
36445
+ return this.translate.instant('table.paginator.rangeLabel', {
36446
+ startIndex: 0,
36447
+ endIndex: 0,
36448
+ length,
36449
+ });
36450
+ }
36451
+ const startIndex = page * pageSize;
36452
+ const endIndex = startIndex < length
36453
+ ? Math.min(startIndex + pageSize, length)
36454
+ : startIndex + pageSize;
36455
+ return this.translate.instant('table.paginator.rangeLabel', {
36456
+ startIndex: startIndex + 1,
36457
+ endIndex,
36458
+ length,
36459
+ });
36460
+ }
36461
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomMatPaginatorIntl, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
36462
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomMatPaginatorIntl }); }
36463
+ }
36464
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomMatPaginatorIntl, decorators: [{
36465
+ type: Injectable
36466
+ }], ctorParameters: () => [{ type: i1$1.TranslateService }] });
36467
+
36468
+ const rowIdPrefix = 'table-item-';
36469
+ class DataTableComponent {
36470
+ set dataset(value) {
36471
+ this.properties$.next(null);
36472
+ this.dataset_ = value;
36473
+ this.dataset_.load();
36474
+ this.dataset_.properties.then((properties) => this.properties$.next(properties.map((p) => p.name)));
36475
+ this.dataset_.info.then((info) => (this.count = info.itemsCount));
36476
+ }
36477
+ constructor(eltRef, cdr, translateService) {
36278
36478
  this.eltRef = eltRef;
36479
+ this.cdr = cdr;
36480
+ this.translateService = translateService;
36279
36481
  this.selected = new EventEmitter();
36482
+ this.properties$ = new BehaviorSubject(null);
36483
+ this.loading$ = new BehaviorSubject(false);
36484
+ this.error = null;
36485
+ }
36486
+ ngOnInit() {
36487
+ this.dataSource = new DataTableDataSource();
36280
36488
  }
36281
36489
  ngAfterViewInit() {
36282
36490
  this.headerHeight =
36283
36491
  this.eltRef.nativeElement.querySelector('thead').offsetHeight;
36492
+ this.setPagination();
36493
+ this.cdr.detectChanges();
36494
+ }
36495
+ ngOnChanges() {
36496
+ this.setPagination();
36497
+ }
36498
+ setSort(sort) {
36499
+ if (!this.dataset_)
36500
+ return;
36501
+ if (!sort.active) {
36502
+ this.dataset_.orderBy();
36503
+ }
36504
+ else {
36505
+ this.dataset_.orderBy([sort.direction || 'asc', sort.active]);
36506
+ }
36507
+ this.readData();
36508
+ }
36509
+ setPagination() {
36510
+ if (!this.paginator)
36511
+ return;
36512
+ if (!this.dataset_)
36513
+ return;
36514
+ this.dataset_.limit(this.paginator.pageIndex * this.paginator.pageSize, this.paginator.pageSize);
36515
+ this.readData();
36516
+ }
36517
+ async readData() {
36518
+ this.loading$.next(true);
36519
+ // wait for properties to be read
36520
+ const properties = await firstValueFrom(this.properties$.pipe(filter$1((p) => !!p)));
36521
+ const propsWithoutGeom = properties.filter((p) => !p.toLowerCase().startsWith('geom'));
36522
+ this.dataset_.select(...propsWithoutGeom);
36523
+ try {
36524
+ await this.dataSource.showData(this.dataset_.read());
36525
+ this.error = null;
36526
+ }
36527
+ catch (error) {
36528
+ this.handleError(error);
36529
+ }
36530
+ this.loading$.next(false);
36284
36531
  }
36285
36532
  scrollToItem(itemId) {
36286
36533
  const row = this.eltRef.nativeElement.querySelector(`#${this.getRowEltId(itemId)}`);
@@ -36289,20 +36536,36 @@ class TableComponent {
36289
36536
  getRowEltId(id) {
36290
36537
  return rowIdPrefix + id;
36291
36538
  }
36292
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
36293
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n >&nbsp;<span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$d.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$d.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$d.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$d.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1$d.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$d.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$d.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$d.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$d.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$d.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$4.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$1.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36539
+ handleError(error) {
36540
+ this.dataSource.clearData();
36541
+ if (error instanceof FetchError) {
36542
+ this.error = this.translateService.instant(`dataset.error.${error.type}`, {
36543
+ info: error.info,
36544
+ });
36545
+ console.warn(error.message);
36546
+ }
36547
+ else {
36548
+ this.error = this.translateService.instant(error.message);
36549
+ console.warn(error.stack || error);
36550
+ }
36551
+ }
36552
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
36553
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataTableComponent, isStandalone: true, selector: "gn-ui-data-table", inputs: { dataset: "dataset", activeId: "activeId" }, outputs: { selected: "selected" }, providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n >&nbsp;<span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i3$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36294
36554
  }
36295
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, decorators: [{
36555
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
36296
36556
  type: Component,
36297
36557
  args: [{ standalone: true, imports: [
36298
36558
  MatTableModule,
36299
36559
  MatSortModule,
36300
- TableVirtualScrollModule,
36560
+ MatPaginatorModule,
36301
36561
  ScrollingModule,
36302
- NgForOf,
36303
36562
  TranslateModule,
36304
- ], selector: 'gn-ui-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n >&nbsp;<span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"] }]
36305
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { data: [{
36563
+ CommonModule,
36564
+ LoadingMaskComponent,
36565
+ PopupAlertComponent,
36566
+ LetDirective,
36567
+ ], providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], selector: 'gn-ui-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n >&nbsp;<span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"] }]
36568
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { dataset: [{
36306
36569
  type: Input
36307
36570
  }], activeId: [{
36308
36571
  type: Input
@@ -36310,48 +36573,93 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36310
36573
  type: Output
36311
36574
  }], sort: [{
36312
36575
  type: ViewChild,
36313
- args: [MatSort, { static: true }]
36576
+ args: [MatSort]
36577
+ }], paginator: [{
36578
+ type: ViewChild,
36579
+ args: [MatPaginator]
36314
36580
  }] } });
36315
36581
 
36316
- const tableItemFixture = () => [
36317
- {
36318
- name: 'name 1',
36319
- id: 'id 1',
36320
- age: 15,
36321
- },
36322
- {
36323
- name: 'name 2',
36324
- id: 'id 2',
36325
- age: 10,
36326
- },
36327
- {
36328
- name: 'name 3',
36329
- id: 'id 3',
36330
- age: 55,
36331
- },
36332
- ];
36333
- const someHabTableItemFixture = () => [
36334
- {
36335
- name: 'France',
36336
- id: '1',
36337
- pop: 50500000,
36338
- },
36339
- {
36340
- name: 'Italy',
36341
- id: '2',
36342
- pop: 155878789655,
36343
- },
36344
- {
36345
- name: 'UK',
36346
- id: '3',
36347
- pop: 31522456,
36348
- },
36349
- {
36350
- name: 'US',
36351
- id: '4',
36352
- pop: 3215448888,
36353
- },
36354
- ];
36582
+ const tableItemsFixture = {
36583
+ items: [
36584
+ {
36585
+ type: 'Feature',
36586
+ geometry: null,
36587
+ properties: {
36588
+ id: '0001',
36589
+ firstName: 'John',
36590
+ lastName: 'Lennon',
36591
+ },
36592
+ },
36593
+ {
36594
+ type: 'Feature',
36595
+ geometry: null,
36596
+ properties: {
36597
+ id: '0002',
36598
+ firstName: 'Ozzy',
36599
+ lastName: 'Osbourne',
36600
+ },
36601
+ },
36602
+ {
36603
+ type: 'Feature',
36604
+ geometry: null,
36605
+ properties: {
36606
+ id: '0003',
36607
+ firstName: 'Claude',
36608
+ lastName: 'François',
36609
+ },
36610
+ },
36611
+ ],
36612
+ properties: [
36613
+ { name: 'id', label: 'id', type: 'string' },
36614
+ { name: 'firstName', label: 'Firstname', type: 'string' },
36615
+ { name: 'lastName', label: 'Lastname', type: 'string' },
36616
+ ],
36617
+ };
36618
+ const someHabTableItemFixture = {
36619
+ items: [
36620
+ {
36621
+ type: 'Feature',
36622
+ geometry: null,
36623
+ properties: {
36624
+ id: '1',
36625
+ name: 'France',
36626
+ pop: 50500000,
36627
+ },
36628
+ },
36629
+ {
36630
+ type: 'Feature',
36631
+ geometry: null,
36632
+ properties: {
36633
+ id: '2',
36634
+ name: 'Italy',
36635
+ pop: 155878789655,
36636
+ },
36637
+ },
36638
+ {
36639
+ type: 'Feature',
36640
+ geometry: null,
36641
+ properties: {
36642
+ id: '3',
36643
+ name: 'UK',
36644
+ pop: 31522456,
36645
+ },
36646
+ },
36647
+ {
36648
+ type: 'Feature',
36649
+ geometry: null,
36650
+ properties: {
36651
+ id: '4',
36652
+ name: 'US',
36653
+ pop: 3215448888,
36654
+ },
36655
+ },
36656
+ ],
36657
+ properties: [
36658
+ { name: 'id', label: 'ID', type: 'string' },
36659
+ { name: 'name', label: 'Name', type: 'string' },
36660
+ { name: 'pop', label: 'Population', type: 'number' },
36661
+ ],
36662
+ };
36355
36663
 
36356
36664
  marker('chart.type.bar');
36357
36665
  marker('chart.type.barHorizontal');
@@ -36593,22 +36901,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36593
36901
  }] } });
36594
36902
 
36595
36903
  class GeoTableViewComponent {
36596
- get features() {
36597
- return this.data.features;
36598
- }
36599
36904
  constructor(changeRef) {
36600
36905
  this.changeRef = changeRef;
36601
- this.data = { type: 'FeatureCollection', features: [] };
36602
36906
  this.subscription = new Subscription();
36603
36907
  }
36604
- ngOnInit() {
36605
- this.tableData = this.geojsonToTableData(this.data);
36606
- this.mapContext = this.initMapContext();
36908
+ async ngOnInit() {
36909
+ this.mapContext = await this.initMapContext();
36607
36910
  }
36608
36911
  onTableSelect(tableEntry) {
36609
36912
  const { id } = tableEntry;
36610
36913
  this.selectionId = id;
36611
- this.selection = this.getFeatureFromId(id);
36914
+ // this.selection = this.getFeatureFromId(id)
36612
36915
  if (this.selection) {
36613
36916
  this.animateToFeature(this.selection);
36614
36917
  }
@@ -36629,7 +36932,8 @@ class GeoTableViewComponent {
36629
36932
  ...f.properties,
36630
36933
  }));
36631
36934
  }
36632
- initMapContext() {
36935
+ async initMapContext() {
36936
+ this.dataset.selectAll();
36633
36937
  return {
36634
36938
  layers: [
36635
36939
  {
@@ -36638,7 +36942,11 @@ class GeoTableViewComponent {
36638
36942
  },
36639
36943
  {
36640
36944
  type: 'geojson',
36641
- data: this.data,
36945
+ data: {
36946
+ type: 'FeatureCollection',
36947
+ // FIXME: we're not getting geojson here
36948
+ features: await this.dataset.read(),
36949
+ },
36642
36950
  },
36643
36951
  ],
36644
36952
  view: {
@@ -36662,18 +36970,19 @@ class GeoTableViewComponent {
36662
36970
  // })
36663
36971
  }
36664
36972
  getFeatureFromId(id) {
36665
- return this.features.find((feature) => feature.id === id);
36973
+ // FIXME: restore this once we need it?
36974
+ // return this.features.find((feature) => feature.id === id)
36666
36975
  }
36667
36976
  ngOnDestroy() {
36668
36977
  this.subscription.unsubscribe();
36669
36978
  }
36670
36979
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
36671
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoTableViewComponent, isStandalone: true, selector: "gn-ui-geo-table-view", inputs: { data: "data" }, viewQueries: [{ propertyName: "uiTable", first: true, predicate: ["table"], descendants: true }, { propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-table\n #table\n class=\"w-1/2 overflow-auto\"\n [data]=\"tableData\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: TableComponent, selector: "gn-ui-table", inputs: ["data", "activeId"], outputs: ["selected"] }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36980
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoTableViewComponent, isStandalone: true, selector: "gn-ui-geo-table-view", inputs: { dataset: "dataset" }, viewQueries: [{ propertyName: "uiTable", first: true, predicate: ["table"], descendants: true }, { propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-data-table\n #table\n class=\"w-1/2 overflow-auto\"\n [dataset]=\"dataset\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36672
36981
  }
36673
36982
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, decorators: [{
36674
36983
  type: Component,
36675
- args: [{ selector: 'gn-ui-geo-table-view', changeDetection: ChangeDetectionStrategy.OnPush, imports: [TableComponent, MapContainerComponent, FeatureDetailComponent], standalone: true, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-table\n #table\n class=\"w-1/2 overflow-auto\"\n [data]=\"tableData\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n" }]
36676
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { data: [{
36984
+ args: [{ selector: 'gn-ui-geo-table-view', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MapContainerComponent, FeatureDetailComponent, DataTableComponent], standalone: true, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-data-table\n #table\n class=\"w-1/2 overflow-auto\"\n [dataset]=\"dataset\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n" }]
36985
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { dataset: [{
36677
36986
  type: Input
36678
36987
  }], uiTable: [{
36679
36988
  type: ViewChild,
@@ -36696,23 +37005,18 @@ class TableViewComponent {
36696
37005
  this.tableData$ = this.currentLink$.pipe(switchMap$1((link) => {
36697
37006
  this.error = null;
36698
37007
  if (!link)
36699
- return of([]);
37008
+ return of(undefined);
36700
37009
  this.loading = true;
36701
- return this.fetchData(link).pipe(map$1((items) => items.map((item) => ({
36702
- id: item.id,
36703
- ...item.properties,
36704
- }))), catchError((error) => {
37010
+ return this.getDatasetReader(link).pipe(catchError((error) => {
36705
37011
  this.handleError(error);
36706
- return of([]);
37012
+ return of(undefined);
36707
37013
  }), finalize(() => {
36708
37014
  this.loading = false;
36709
37015
  }));
36710
- }), startWith([]), shareReplay(1));
37016
+ }), startWith(undefined), shareReplay(1));
36711
37017
  }
36712
- fetchData(link) {
36713
- return this.dataService
36714
- .getDataset(link)
36715
- .pipe(switchMap$1((dataset) => dataset.read()));
37018
+ getDatasetReader(link) {
37019
+ return this.dataService.getDataset(link);
36716
37020
  }
36717
37021
  onTableSelect(event) {
36718
37022
  console.log(event);
@@ -36735,17 +37039,17 @@ class TableViewComponent {
36735
37039
  this.loading = false;
36736
37040
  }
36737
37041
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, deps: [{ token: DataService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
36738
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-table\n class=\"overflow-auto grow\"\n [data]=\"tableData$ | async\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: TableComponent, selector: "gn-ui-table", inputs: ["data", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37042
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36739
37043
  }
36740
37044
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
36741
37045
  type: Component,
36742
37046
  args: [{ selector: 'gn-ui-table-view', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
36743
37047
  CommonModule,
36744
- TableComponent,
37048
+ DataTableComponent,
36745
37049
  LoadingMaskComponent,
36746
37050
  PopupAlertComponent,
36747
37051
  TranslateModule,
36748
- ], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-table\n class=\"overflow-auto grow\"\n [data]=\"tableData$ | async\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
37052
+ ], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
36749
37053
  }], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { link: [{
36750
37054
  type: Input
36751
37055
  }] } });
@@ -37323,7 +37627,7 @@ class FeatureRecordModule {
37323
37627
  MatTabsModule,
37324
37628
  UiWidgetsModule,
37325
37629
  TranslateModule,
37326
- TableComponent,
37630
+ DataTableComponent,
37327
37631
  NgIconsModule,
37328
37632
  DropdownSelectorComponent] }); }
37329
37633
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureRecordModule, providers: [
@@ -37342,7 +37646,7 @@ class FeatureRecordModule {
37342
37646
  MatTabsModule,
37343
37647
  UiWidgetsModule,
37344
37648
  TranslateModule,
37345
- TableComponent,
37649
+ DataTableComponent,
37346
37650
  NgIconsModule,
37347
37651
  DropdownSelectorComponent] }); }
37348
37652
  }
@@ -37361,7 +37665,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
37361
37665
  MatTabsModule,
37362
37666
  UiWidgetsModule,
37363
37667
  TranslateModule,
37364
- TableComponent,
37668
+ DataTableComponent,
37365
37669
  NgIconsModule,
37366
37670
  DropdownSelectorComponent,
37367
37671
  ],
@@ -37477,7 +37781,7 @@ class DataViewComponent {
37477
37781
  this.selectedLink$.next(link);
37478
37782
  }
37479
37783
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, deps: [{ token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
37480
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37784
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37481
37785
  }
37482
37786
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, decorators: [{
37483
37787
  type: Component,
@@ -37487,7 +37791,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
37487
37791
  TableViewComponent,
37488
37792
  TranslateModule,
37489
37793
  ChartViewComponent,
37490
- ], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n" }]
37794
+ ], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n" }]
37491
37795
  }], ctorParameters: () => [{ type: MdViewFacade }], propDecorators: { mode: [{
37492
37796
  type: Input
37493
37797
  }], displaySource: [{
@@ -38034,7 +38338,7 @@ class RecordMetaComponent {
38034
38338
  this.meta.removeTag('property="og:url"');
38035
38339
  this.meta.removeTag('property="og:title"');
38036
38340
  }
38037
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$e.Meta }], target: i0.ɵɵFactoryTarget.Component }); }
38341
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$d.Meta }], target: i0.ɵɵFactoryTarget.Component }); }
38038
38342
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordMetaComponent, isStandalone: true, selector: "gn-ui-record-meta", inputs: { metadata: "metadata" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
38039
38343
  }
38040
38344
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, decorators: [{
@@ -38045,7 +38349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
38045
38349
  changeDetection: ChangeDetectionStrategy.OnPush,
38046
38350
  standalone: true,
38047
38351
  }]
38048
- }], ctorParameters: () => [{ type: i1$e.Meta }], propDecorators: { metadata: [{
38352
+ }], ctorParameters: () => [{ type: i1$d.Meta }], propDecorators: { metadata: [{
38049
38353
  type: Input
38050
38354
  }] } });
38051
38355
 
@@ -39109,7 +39413,7 @@ class ImportRecordComponent {
39109
39413
  },
39110
39414
  });
39111
39415
  }
39112
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$f.Router }, { token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: NotificationsService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
39416
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$e.Router }, { token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: NotificationsService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
39113
39417
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImportRecordComponent, isStandalone: true, selector: "gn-ui-import-record", outputs: { closeImportMenu: "closeImportMenu" }, providers: [
39114
39418
  provideIcons({
39115
39419
  iconoirImport,
@@ -39140,7 +39444,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39140
39444
  size: '1.5em',
39141
39445
  }),
39142
39446
  ], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\" translate\n >dashboard.importRecord.importExternal.title</span\n >\n <span translate>dashboard.importRecord.importExternal.subtitle</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n" }]
39143
- }], ctorParameters: () => [{ type: i1$f.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
39447
+ }], ctorParameters: () => [{ type: i1$e.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
39144
39448
  type: Output
39145
39449
  }] } });
39146
39450
 
@@ -41140,7 +41444,7 @@ class RouterService {
41140
41444
  getOrganizationPageRoute() {
41141
41445
  return ROUTER_ROUTE_ORGANIZATION;
41142
41446
  }
41143
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$f.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
41447
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$e.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
41144
41448
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
41145
41449
  }
41146
41450
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, decorators: [{
@@ -41151,7 +41455,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
41151
41455
  }], ctorParameters: () => [{ type: undefined, decorators: [{
41152
41456
  type: Inject,
41153
41457
  args: [ROUTER_CONFIG]
41154
- }] }, { type: i1$f.Router }] });
41458
+ }] }, { type: i1$e.Router }] });
41155
41459
 
41156
41460
  const goAction = createAction('[Router] Go', props());
41157
41461
  const backAction = createAction('[Router] Back');
@@ -41456,12 +41760,12 @@ class RouterEffects {
41456
41760
  this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
41457
41761
  this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
41458
41762
  }
41459
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$f.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
41763
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$e.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
41460
41764
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
41461
41765
  }
41462
41766
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
41463
41767
  type: Injectable
41464
- }], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$f.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
41768
+ }], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$e.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
41465
41769
  type: Inject,
41466
41770
  args: [ROUTER_CONFIG]
41467
41771
  }] }, { type: FieldsService }] });
@@ -41521,5 +41825,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
41521
41825
  * Generated bundle index. Do not edit.
41522
41826
  */
41523
41827
 
41524
- export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
41828
+ export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
41525
41829
  //# sourceMappingURL=geonetwork-ui.mjs.map