geonetwork-ui 2.5.0-dev.77e75b46a → 2.5.0-dev.97ab0d3e8

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 (78) hide show
  1. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +18 -16
  2. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +12 -17
  3. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
  4. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +6 -7
  5. package/esm2022/libs/ui/dataviz/src/index.mjs +3 -3
  6. package/esm2022/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.mjs +51 -0
  7. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +133 -0
  8. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.data.source.mjs +24 -0
  9. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.mjs +82 -0
  10. package/esm2022/libs/util/data-fetcher/src/index.mjs +3 -1
  11. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +7 -3
  12. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +20 -2
  13. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +3 -3
  14. package/esm2022/translations/de.json +7 -0
  15. package/esm2022/translations/en.json +7 -0
  16. package/esm2022/translations/es.json +7 -0
  17. package/esm2022/translations/fr.json +7 -0
  18. package/esm2022/translations/it.json +7 -0
  19. package/esm2022/translations/nl.json +7 -0
  20. package/esm2022/translations/pt.json +7 -0
  21. package/fesm2022/geonetwork-ui.mjs +352 -111
  22. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  23. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +7 -9
  24. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  25. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +3 -6
  26. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  27. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -2
  28. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  29. package/libs/ui/dataviz/src/index.d.ts +2 -2
  30. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  31. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts +14 -0
  32. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts.map +1 -0
  33. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +45 -0
  34. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -0
  35. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts +12 -0
  36. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts.map +1 -0
  37. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts +10 -0
  38. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts.map +1 -0
  39. package/libs/util/data-fetcher/src/index.d.ts +3 -1
  40. package/libs/util/data-fetcher/src/index.d.ts.map +1 -1
  41. package/libs/util/data-fetcher/src/lib/model.d.ts +1 -1
  42. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  43. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +3 -3
  46. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +17 -15
  47. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +4 -3
  48. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +9 -18
  49. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +1 -1
  50. package/src/libs/feature/record/src/lib/feature-record.module.ts +6 -4
  51. package/src/libs/ui/dataviz/src/index.ts +2 -2
  52. package/src/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.ts +52 -0
  53. package/src/libs/ui/dataviz/src/lib/{table/table.component.css → data-table/data-table.component.css} +4 -0
  54. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +67 -0
  55. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +173 -0
  56. package/src/libs/ui/dataviz/src/lib/data-table/data-table.data.source.ts +33 -0
  57. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +84 -0
  58. package/src/libs/util/data-fetcher/src/index.ts +3 -0
  59. package/src/libs/util/data-fetcher/src/lib/model.ts +6 -2
  60. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +23 -1
  61. package/src/libs/util/data-fetcher/src/lib/utils.ts +2 -2
  62. package/translations/de.json +7 -0
  63. package/translations/en.json +7 -0
  64. package/translations/es.json +7 -0
  65. package/translations/fr.json +7 -0
  66. package/translations/it.json +7 -0
  67. package/translations/nl.json +7 -0
  68. package/translations/pt.json +7 -0
  69. package/translations/sk.json +7 -0
  70. package/esm2022/libs/ui/dataviz/src/lib/table/table.component.mjs +0 -61
  71. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +0 -40
  72. package/libs/ui/dataviz/src/lib/table/table.component.d.ts +0 -29
  73. package/libs/ui/dataviz/src/lib/table/table.component.d.ts.map +0 -1
  74. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +0 -11
  75. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +0 -1
  76. package/src/libs/ui/dataviz/src/lib/table/table.component.html +0 -40
  77. package/src/libs/ui/dataviz/src/lib/table/table.component.ts +0 -80
  78. 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": "",
@@ -35137,8 +35186,12 @@ class FetchError {
35137
35186
  this.stack = null;
35138
35187
  this.message = `An error happened in the data fetcher, type: ${type}, info: ${info}`;
35139
35188
  }
35140
- static http(code) {
35141
- return new FetchError('http', '', code);
35189
+ static http(code, body) {
35190
+ const info = body
35191
+ ? `Error ${code}
35192
+ ${body}`
35193
+ : `${code}`;
35194
+ return new FetchError('http', info, code);
35142
35195
  }
35143
35196
  static corsOrNetwork(message) {
35144
35197
  return new FetchError('network', message, 0);
@@ -35246,7 +35299,7 @@ function fetchDataAsText(url) {
35246
35299
  })
35247
35300
  .then(async (response) => {
35248
35301
  if (!response.ok) {
35249
- throw FetchError.http(response.status);
35302
+ throw FetchError.http(response.status, await response.text());
35250
35303
  }
35251
35304
  return response.text();
35252
35305
  }), url, 'asText');
@@ -35258,7 +35311,7 @@ function fetchDataAsArrayBuffer(url) {
35258
35311
  })
35259
35312
  .then(async (response) => {
35260
35313
  if (!response.ok) {
35261
- throw FetchError.http(response.status);
35314
+ throw FetchError.http(response.status, await response.text());
35262
35315
  }
35263
35316
  // convert to a numeric array so that we can store the response in cache
35264
35317
  return Array.from(new Uint8Array(await response.arrayBuffer()));
@@ -35730,7 +35783,19 @@ class WfsReader extends BaseReader {
35730
35783
  this.version = this.endpoint.getVersion();
35731
35784
  }
35732
35785
  get properties() {
35733
- return this.getData().then((result) => result.properties);
35786
+ return this.endpoint
35787
+ .getFeatureTypeFull(this.featureTypeName)
35788
+ .then((featureType) => Object.keys(featureType.properties).map((prop) => {
35789
+ const originalType = featureType.properties[prop];
35790
+ const type = originalType === 'float' || originalType === 'integer'
35791
+ ? 'number'
35792
+ : originalType; // FIXME: ogc-client typing is incorrect, should be a string union
35793
+ return {
35794
+ name: prop,
35795
+ label: prop,
35796
+ type,
35797
+ };
35798
+ }));
35734
35799
  }
35735
35800
  get info() {
35736
35801
  return this.endpoint.getFeatureTypeFull(this.featureTypeName).then((result) => ({
@@ -35768,12 +35833,17 @@ class WfsReader extends BaseReader {
35768
35833
  }
35769
35834
  }
35770
35835
  getData() {
35836
+ if (this.aggregations || this.groupedBy) {
35837
+ throw new Error(marker('wfs.aggregations.notsupported'));
35838
+ }
35771
35839
  const asJson = this.endpoint.supportsJson(this.featureTypeName);
35840
+ const attributes = this.selected ?? undefined;
35772
35841
  let url = this.endpoint.getFeatureUrl(this.featureTypeName, {
35773
35842
  ...(this.startIndex !== null && { startIndex: this.startIndex }),
35774
35843
  ...(this.count !== null && { maxFeatures: this.count }),
35775
35844
  asJson,
35776
35845
  outputCrs: 'EPSG:4326',
35846
+ attributes,
35777
35847
  // sortBy: this.sort // TODO: no sort in ogc-client?
35778
35848
  });
35779
35849
  if (Array.isArray(this.sort) && this.sort.length > 0) {
@@ -36265,22 +36335,136 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36265
36335
  args: ['chartCanvas']
36266
36336
  }] } });
36267
36337
 
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;
36338
+ class DataTableDataSource {
36339
+ constructor() {
36340
+ this.dataItems$ = new BehaviorSubject([]);
36341
+ }
36342
+ connect() {
36343
+ return this.dataItems$.asObservable().pipe(map$1((items) => items.map((item) => ({
36344
+ id: item.id,
36345
+ ...item.properties,
36346
+ }))));
36347
+ }
36348
+ disconnect() {
36349
+ this.dataItems$.complete();
36350
+ }
36351
+ async showData(itemsPromise) {
36352
+ const items = await itemsPromise;
36353
+ this.dataItems$.next(items);
36354
+ }
36355
+ clearData() {
36356
+ this.dataItems$.next([]);
36357
+ }
36358
+ }
36359
+
36360
+ class CustomMatPaginatorIntl extends MatPaginatorIntl {
36361
+ constructor(translate) {
36362
+ super();
36363
+ this.translate = translate;
36364
+ this.changes = new Subject();
36365
+ this.setLabels();
36366
+ this.translate.onLangChange.subscribe(() => {
36367
+ this.setLabels();
36368
+ this.changes.next();
36369
+ });
36370
+ }
36371
+ setLabels() {
36372
+ this.itemsPerPageLabel = this.translate.instant('table.paginator.itemsPerPage');
36373
+ this.nextPageLabel = this.translate.instant('table.paginator.nextPage');
36374
+ this.previousPageLabel = this.translate.instant('table.paginator.previousPage');
36375
+ this.firstPageLabel = this.translate.instant('table.paginator.firstPage');
36376
+ this.lastPageLabel = this.translate.instant('table.paginator.lastPage');
36377
+ this.getRangeLabel = this.getRangeLabelIntl;
36378
+ this.changes.next();
36379
+ }
36380
+ getRangeLabelIntl(page, pageSize, length) {
36381
+ if (length === 0 || pageSize === 0) {
36382
+ return this.translate.instant('table.paginator.rangeLabel', {
36383
+ startIndex: 0,
36384
+ endIndex: 0,
36385
+ length,
36386
+ });
36387
+ }
36388
+ const startIndex = page * pageSize;
36389
+ const endIndex = startIndex < length
36390
+ ? Math.min(startIndex + pageSize, length)
36391
+ : startIndex + pageSize;
36392
+ return this.translate.instant('table.paginator.rangeLabel', {
36393
+ startIndex: startIndex + 1,
36394
+ endIndex,
36395
+ length,
36396
+ });
36276
36397
  }
36277
- constructor(eltRef) {
36398
+ 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 }); }
36399
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomMatPaginatorIntl }); }
36400
+ }
36401
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomMatPaginatorIntl, decorators: [{
36402
+ type: Injectable
36403
+ }], ctorParameters: () => [{ type: i1$1.TranslateService }] });
36404
+
36405
+ const rowIdPrefix = 'table-item-';
36406
+ class DataTableComponent {
36407
+ set dataset(value) {
36408
+ this.properties$.next(null);
36409
+ this.dataset_ = value;
36410
+ this.dataset_.load();
36411
+ this.dataset_.properties.then((properties) => this.properties$.next(properties.map((p) => p.name)));
36412
+ this.dataset_.info.then((info) => (this.count = info.itemsCount));
36413
+ }
36414
+ constructor(eltRef, cdr, translateService) {
36278
36415
  this.eltRef = eltRef;
36416
+ this.cdr = cdr;
36417
+ this.translateService = translateService;
36279
36418
  this.selected = new EventEmitter();
36419
+ this.properties$ = new BehaviorSubject(null);
36420
+ this.loading$ = new BehaviorSubject(false);
36421
+ this.error = null;
36422
+ }
36423
+ ngOnInit() {
36424
+ this.dataSource = new DataTableDataSource();
36280
36425
  }
36281
36426
  ngAfterViewInit() {
36282
36427
  this.headerHeight =
36283
36428
  this.eltRef.nativeElement.querySelector('thead').offsetHeight;
36429
+ this.setPagination();
36430
+ this.cdr.detectChanges();
36431
+ }
36432
+ ngOnChanges() {
36433
+ this.setPagination();
36434
+ }
36435
+ setSort(sort) {
36436
+ if (!this.dataset_)
36437
+ return;
36438
+ if (!sort.active) {
36439
+ this.dataset_.orderBy();
36440
+ }
36441
+ else {
36442
+ this.dataset_.orderBy([sort.direction || 'asc', sort.active]);
36443
+ }
36444
+ this.readData();
36445
+ }
36446
+ setPagination() {
36447
+ if (!this.paginator)
36448
+ return;
36449
+ if (!this.dataset_)
36450
+ return;
36451
+ this.dataset_.limit(this.paginator.pageIndex * this.paginator.pageSize, this.paginator.pageSize);
36452
+ this.readData();
36453
+ }
36454
+ async readData() {
36455
+ this.loading$.next(true);
36456
+ // wait for properties to be read
36457
+ const properties = await firstValueFrom(this.properties$.pipe(filter$1((p) => !!p)));
36458
+ const propsWithoutGeom = properties.filter((p) => !p.toLowerCase().startsWith('geom'));
36459
+ this.dataset_.select(...propsWithoutGeom);
36460
+ try {
36461
+ await this.dataSource.showData(this.dataset_.read());
36462
+ this.error = null;
36463
+ }
36464
+ catch (error) {
36465
+ this.handleError(error);
36466
+ }
36467
+ this.loading$.next(false);
36284
36468
  }
36285
36469
  scrollToItem(itemId) {
36286
36470
  const row = this.eltRef.nativeElement.querySelector(`#${this.getRowEltId(itemId)}`);
@@ -36289,20 +36473,36 @@ class TableComponent {
36289
36473
  getRowEltId(id) {
36290
36474
  return rowIdPrefix + id;
36291
36475
  }
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 }); }
36476
+ handleError(error) {
36477
+ this.dataSource.clearData();
36478
+ if (error instanceof FetchError) {
36479
+ this.error = this.translateService.instant(`dataset.error.${error.type}`, {
36480
+ info: error.info,
36481
+ });
36482
+ console.warn(error.message);
36483
+ }
36484
+ else {
36485
+ this.error = this.translateService.instant(error.message);
36486
+ console.warn(error.stack || error);
36487
+ }
36488
+ }
36489
+ 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 }); }
36490
+ 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
36491
  }
36295
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, decorators: [{
36492
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
36296
36493
  type: Component,
36297
36494
  args: [{ standalone: true, imports: [
36298
36495
  MatTableModule,
36299
36496
  MatSortModule,
36300
- TableVirtualScrollModule,
36497
+ MatPaginatorModule,
36301
36498
  ScrollingModule,
36302
- NgForOf,
36303
36499
  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: [{
36500
+ CommonModule,
36501
+ LoadingMaskComponent,
36502
+ PopupAlertComponent,
36503
+ LetDirective,
36504
+ ], 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"] }]
36505
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { dataset: [{
36306
36506
  type: Input
36307
36507
  }], activeId: [{
36308
36508
  type: Input
@@ -36310,48 +36510,93 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36310
36510
  type: Output
36311
36511
  }], sort: [{
36312
36512
  type: ViewChild,
36313
- args: [MatSort, { static: true }]
36513
+ args: [MatSort]
36514
+ }], paginator: [{
36515
+ type: ViewChild,
36516
+ args: [MatPaginator]
36314
36517
  }] } });
36315
36518
 
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
- ];
36519
+ const tableItemsFixture = {
36520
+ items: [
36521
+ {
36522
+ type: 'Feature',
36523
+ geometry: null,
36524
+ properties: {
36525
+ id: '0001',
36526
+ firstName: 'John',
36527
+ lastName: 'Lennon',
36528
+ },
36529
+ },
36530
+ {
36531
+ type: 'Feature',
36532
+ geometry: null,
36533
+ properties: {
36534
+ id: '0002',
36535
+ firstName: 'Ozzy',
36536
+ lastName: 'Osbourne',
36537
+ },
36538
+ },
36539
+ {
36540
+ type: 'Feature',
36541
+ geometry: null,
36542
+ properties: {
36543
+ id: '0003',
36544
+ firstName: 'Claude',
36545
+ lastName: 'François',
36546
+ },
36547
+ },
36548
+ ],
36549
+ properties: [
36550
+ { name: 'id', label: 'id', type: 'string' },
36551
+ { name: 'firstName', label: 'Firstname', type: 'string' },
36552
+ { name: 'lastName', label: 'Lastname', type: 'string' },
36553
+ ],
36554
+ };
36555
+ const someHabTableItemFixture = {
36556
+ items: [
36557
+ {
36558
+ type: 'Feature',
36559
+ geometry: null,
36560
+ properties: {
36561
+ id: '1',
36562
+ name: 'France',
36563
+ pop: 50500000,
36564
+ },
36565
+ },
36566
+ {
36567
+ type: 'Feature',
36568
+ geometry: null,
36569
+ properties: {
36570
+ id: '2',
36571
+ name: 'Italy',
36572
+ pop: 155878789655,
36573
+ },
36574
+ },
36575
+ {
36576
+ type: 'Feature',
36577
+ geometry: null,
36578
+ properties: {
36579
+ id: '3',
36580
+ name: 'UK',
36581
+ pop: 31522456,
36582
+ },
36583
+ },
36584
+ {
36585
+ type: 'Feature',
36586
+ geometry: null,
36587
+ properties: {
36588
+ id: '4',
36589
+ name: 'US',
36590
+ pop: 3215448888,
36591
+ },
36592
+ },
36593
+ ],
36594
+ properties: [
36595
+ { name: 'id', label: 'ID', type: 'string' },
36596
+ { name: 'name', label: 'Name', type: 'string' },
36597
+ { name: 'pop', label: 'Population', type: 'number' },
36598
+ ],
36599
+ };
36355
36600
 
36356
36601
  marker('chart.type.bar');
36357
36602
  marker('chart.type.barHorizontal');
@@ -36593,22 +36838,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36593
36838
  }] } });
36594
36839
 
36595
36840
  class GeoTableViewComponent {
36596
- get features() {
36597
- return this.data.features;
36598
- }
36599
36841
  constructor(changeRef) {
36600
36842
  this.changeRef = changeRef;
36601
- this.data = { type: 'FeatureCollection', features: [] };
36602
36843
  this.subscription = new Subscription();
36603
36844
  }
36604
- ngOnInit() {
36605
- this.tableData = this.geojsonToTableData(this.data);
36606
- this.mapContext = this.initMapContext();
36845
+ async ngOnInit() {
36846
+ this.mapContext = await this.initMapContext();
36607
36847
  }
36608
36848
  onTableSelect(tableEntry) {
36609
36849
  const { id } = tableEntry;
36610
36850
  this.selectionId = id;
36611
- this.selection = this.getFeatureFromId(id);
36851
+ // this.selection = this.getFeatureFromId(id)
36612
36852
  if (this.selection) {
36613
36853
  this.animateToFeature(this.selection);
36614
36854
  }
@@ -36629,7 +36869,8 @@ class GeoTableViewComponent {
36629
36869
  ...f.properties,
36630
36870
  }));
36631
36871
  }
36632
- initMapContext() {
36872
+ async initMapContext() {
36873
+ this.dataset.selectAll();
36633
36874
  return {
36634
36875
  layers: [
36635
36876
  {
@@ -36638,7 +36879,11 @@ class GeoTableViewComponent {
36638
36879
  },
36639
36880
  {
36640
36881
  type: 'geojson',
36641
- data: this.data,
36882
+ data: {
36883
+ type: 'FeatureCollection',
36884
+ // FIXME: we're not getting geojson here
36885
+ features: await this.dataset.read(),
36886
+ },
36642
36887
  },
36643
36888
  ],
36644
36889
  view: {
@@ -36662,18 +36907,19 @@ class GeoTableViewComponent {
36662
36907
  // })
36663
36908
  }
36664
36909
  getFeatureFromId(id) {
36665
- return this.features.find((feature) => feature.id === id);
36910
+ // FIXME: restore this once we need it?
36911
+ // return this.features.find((feature) => feature.id === id)
36666
36912
  }
36667
36913
  ngOnDestroy() {
36668
36914
  this.subscription.unsubscribe();
36669
36915
  }
36670
36916
  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 }); }
36917
+ 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
36918
  }
36673
36919
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, decorators: [{
36674
36920
  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: [{
36921
+ 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" }]
36922
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { dataset: [{
36677
36923
  type: Input
36678
36924
  }], uiTable: [{
36679
36925
  type: ViewChild,
@@ -36696,23 +36942,18 @@ class TableViewComponent {
36696
36942
  this.tableData$ = this.currentLink$.pipe(switchMap$1((link) => {
36697
36943
  this.error = null;
36698
36944
  if (!link)
36699
- return of([]);
36945
+ return of(undefined);
36700
36946
  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) => {
36947
+ return this.getDatasetReader(link).pipe(catchError((error) => {
36705
36948
  this.handleError(error);
36706
- return of([]);
36949
+ return of(undefined);
36707
36950
  }), finalize(() => {
36708
36951
  this.loading = false;
36709
36952
  }));
36710
- }), startWith([]), shareReplay(1));
36953
+ }), startWith(undefined), shareReplay(1));
36711
36954
  }
36712
- fetchData(link) {
36713
- return this.dataService
36714
- .getDataset(link)
36715
- .pipe(switchMap$1((dataset) => dataset.read()));
36955
+ getDatasetReader(link) {
36956
+ return this.dataService.getDataset(link);
36716
36957
  }
36717
36958
  onTableSelect(event) {
36718
36959
  console.log(event);
@@ -36735,17 +36976,17 @@ class TableViewComponent {
36735
36976
  this.loading = false;
36736
36977
  }
36737
36978
  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 }); }
36979
+ 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
36980
  }
36740
36981
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
36741
36982
  type: Component,
36742
36983
  args: [{ selector: 'gn-ui-table-view', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
36743
36984
  CommonModule,
36744
- TableComponent,
36985
+ DataTableComponent,
36745
36986
  LoadingMaskComponent,
36746
36987
  PopupAlertComponent,
36747
36988
  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" }]
36989
+ ], 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
36990
  }], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { link: [{
36750
36991
  type: Input
36751
36992
  }] } });
@@ -37323,7 +37564,7 @@ class FeatureRecordModule {
37323
37564
  MatTabsModule,
37324
37565
  UiWidgetsModule,
37325
37566
  TranslateModule,
37326
- TableComponent,
37567
+ DataTableComponent,
37327
37568
  NgIconsModule,
37328
37569
  DropdownSelectorComponent] }); }
37329
37570
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureRecordModule, providers: [
@@ -37342,7 +37583,7 @@ class FeatureRecordModule {
37342
37583
  MatTabsModule,
37343
37584
  UiWidgetsModule,
37344
37585
  TranslateModule,
37345
- TableComponent,
37586
+ DataTableComponent,
37346
37587
  NgIconsModule,
37347
37588
  DropdownSelectorComponent] }); }
37348
37589
  }
@@ -37361,7 +37602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
37361
37602
  MatTabsModule,
37362
37603
  UiWidgetsModule,
37363
37604
  TranslateModule,
37364
- TableComponent,
37605
+ DataTableComponent,
37365
37606
  NgIconsModule,
37366
37607
  DropdownSelectorComponent,
37367
37608
  ],
@@ -37477,7 +37718,7 @@ class DataViewComponent {
37477
37718
  this.selectedLink$.next(link);
37478
37719
  }
37479
37720
  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 }); }
37721
+ 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
37722
  }
37482
37723
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, decorators: [{
37483
37724
  type: Component,
@@ -37487,7 +37728,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
37487
37728
  TableViewComponent,
37488
37729
  TranslateModule,
37489
37730
  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" }]
37731
+ ], 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
37732
  }], ctorParameters: () => [{ type: MdViewFacade }], propDecorators: { mode: [{
37492
37733
  type: Input
37493
37734
  }], displaySource: [{
@@ -38034,7 +38275,7 @@ class RecordMetaComponent {
38034
38275
  this.meta.removeTag('property="og:url"');
38035
38276
  this.meta.removeTag('property="og:title"');
38036
38277
  }
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 }); }
38278
+ 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
38279
  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
38280
  }
38040
38281
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, decorators: [{
@@ -38045,7 +38286,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
38045
38286
  changeDetection: ChangeDetectionStrategy.OnPush,
38046
38287
  standalone: true,
38047
38288
  }]
38048
- }], ctorParameters: () => [{ type: i1$e.Meta }], propDecorators: { metadata: [{
38289
+ }], ctorParameters: () => [{ type: i1$d.Meta }], propDecorators: { metadata: [{
38049
38290
  type: Input
38050
38291
  }] } });
38051
38292
 
@@ -39109,7 +39350,7 @@ class ImportRecordComponent {
39109
39350
  },
39110
39351
  });
39111
39352
  }
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 }); }
39353
+ 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
39354
  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
39355
  provideIcons({
39115
39356
  iconoirImport,
@@ -39140,7 +39381,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39140
39381
  size: '1.5em',
39141
39382
  }),
39142
39383
  ], 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: [{
39384
+ }], ctorParameters: () => [{ type: i1$e.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
39144
39385
  type: Output
39145
39386
  }] } });
39146
39387
 
@@ -41140,7 +41381,7 @@ class RouterService {
41140
41381
  getOrganizationPageRoute() {
41141
41382
  return ROUTER_ROUTE_ORGANIZATION;
41142
41383
  }
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 }); }
41384
+ 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
41385
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
41145
41386
  }
41146
41387
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, decorators: [{
@@ -41151,7 +41392,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
41151
41392
  }], ctorParameters: () => [{ type: undefined, decorators: [{
41152
41393
  type: Inject,
41153
41394
  args: [ROUTER_CONFIG]
41154
- }] }, { type: i1$f.Router }] });
41395
+ }] }, { type: i1$e.Router }] });
41155
41396
 
41156
41397
  const goAction = createAction('[Router] Go', props());
41157
41398
  const backAction = createAction('[Router] Back');
@@ -41456,12 +41697,12 @@ class RouterEffects {
41456
41697
  this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
41457
41698
  this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
41458
41699
  }
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 }); }
41700
+ 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
41701
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
41461
41702
  }
41462
41703
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
41463
41704
  type: Injectable
41464
- }], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$f.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
41705
+ }], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$e.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
41465
41706
  type: Inject,
41466
41707
  args: [ROUTER_CONFIG]
41467
41708
  }] }, { type: FieldsService }] });
@@ -41521,5 +41762,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
41521
41762
  * Generated bundle index. Do not edit.
41522
41763
  */
41523
41764
 
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 };
41765
+ export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, 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
41766
  //# sourceMappingURL=geonetwork-ui.mjs.map