geonetwork-ui 2.3.0-dev.2b8cc035 → 2.3.0-dev.3222f975

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 (88) hide show
  1. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +35 -2
  2. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +73 -20
  3. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +1 -1
  4. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +29 -8
  5. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -2
  6. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +1 -1
  7. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +2 -2
  8. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +16 -3
  9. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +5 -3
  10. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +1 -6
  11. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  12. package/esm2022/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +29 -0
  13. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  14. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +76 -0
  15. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +42 -18
  16. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +3 -8
  17. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -2
  18. package/esm2022/translations/de.json +9 -14
  19. package/esm2022/translations/en.json +9 -14
  20. package/esm2022/translations/es.json +9 -14
  21. package/esm2022/translations/fr.json +9 -14
  22. package/esm2022/translations/it.json +9 -14
  23. package/esm2022/translations/nl.json +9 -14
  24. package/esm2022/translations/pt.json +9 -14
  25. package/fesm2022/geonetwork-ui.mjs +352 -157
  26. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  27. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +3 -1
  28. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  29. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +10 -5
  30. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  31. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +1 -0
  32. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  33. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  34. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  35. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  36. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +3 -1
  37. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  38. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  39. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +29 -30
  40. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  41. package/libs/ui/inputs/src/index.d.ts +1 -0
  42. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  43. package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +12 -0
  44. package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -0
  45. package/libs/ui/layout/src/index.d.ts +1 -0
  46. package/libs/ui/layout/src/index.d.ts.map +1 -1
  47. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +25 -0
  48. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -0
  49. package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts +13 -6
  50. package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts.map +1 -1
  51. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +4 -5
  52. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  53. package/package.json +1 -1
  54. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +8 -0
  55. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +51 -1
  56. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +7 -0
  57. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +32 -18
  58. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +72 -17
  59. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +1 -0
  60. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +26 -8
  61. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +2 -1
  62. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +0 -1
  63. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +1 -1
  64. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +38 -20
  65. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +12 -0
  66. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +4 -2
  67. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -2
  68. package/src/libs/ui/inputs/src/index.ts +1 -0
  69. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.css +6 -0
  70. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.html +26 -0
  71. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.ts +32 -0
  72. package/src/libs/ui/layout/src/index.ts +1 -0
  73. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +23 -0
  74. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +20 -0
  75. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +84 -0
  76. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +7 -4
  77. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +4 -4
  78. package/src/libs/ui/layout/src/lib/carousel/carousel.component.ts +45 -15
  79. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -2
  80. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +1 -1
  81. package/translations/de.json +9 -14
  82. package/translations/en.json +9 -14
  83. package/translations/es.json +9 -14
  84. package/translations/fr.json +9 -14
  85. package/translations/it.json +9 -14
  86. package/translations/nl.json +9 -14
  87. package/translations/pt.json +9 -14
  88. package/translations/sk.json +9 -14
@@ -42,6 +42,10 @@ import TileLayer from 'ol/layer/Tile';
42
42
  import XYZ from 'ol/source/XYZ';
43
43
  import { bbox } from 'ol/loadingstrategy';
44
44
  import WMTS from 'ol/source/WMTS';
45
+ import OGCVectorTile from 'ol/source/OGCVectorTile.js';
46
+ import { MVT, WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
47
+ import VectorTileLayer from 'ol/layer/VectorTile';
48
+ import OGCMapTile from 'ol/source/OGCMapTile.js';
45
49
  import * as i2$3 from '@angular/material/tabs';
46
50
  import { MatTabsModule } from '@angular/material/tabs';
47
51
  import * as i2$1 from '@angular/forms';
@@ -93,7 +97,6 @@ import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table
93
97
  import * as Papa from 'papaparse';
94
98
  import parseDate from 'date-fns/parse';
95
99
  import parseIsoDate from 'date-fns/parseISO';
96
- import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
97
100
  import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
98
101
  import * as i3$3 from '@ngrx/router-store';
99
102
  import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
@@ -17499,6 +17502,7 @@ var de = {
17499
17502
  "multiselect.filter.placeholder": "Suche",
17500
17503
  "nav.back": "Zurück",
17501
17504
  next: next$6,
17505
+ "ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
17502
17506
  "organisation.filter.placeholder": "Ergebnisse filtern",
17503
17507
  "organisation.sort.sortBy": "Sortieren nach:",
17504
17508
  "organisations.hits.found": "{hits, plural, =0{Keine Organisation gefunden} other{{hits} von {total} Organisationen angezeigt}}",
@@ -17563,14 +17567,6 @@ var de = {
17563
17567
  "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
17564
17568
  "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
17565
17569
  "record.metadata.related": "Ähnliche Datensätze",
17566
- "record.metadata.userFeedbacks": "",
17567
- "record.metadata.userFeedbacks.anonymousUser": "",
17568
- "record.metadata.userFeedbacks.sortSelector.label": "",
17569
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
17570
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
17571
- "record.metadata.userFeedbacks.newComment.placeholder": "",
17572
- "record.metadata.userFeedbacks.newAnswer.placeholder": "",
17573
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
17574
17570
  "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
17575
17571
  "record.metadata.status": "Status",
17576
17572
  "record.metadata.technical": "Technische Informationen",
@@ -17585,6 +17581,14 @@ var de = {
17585
17581
  "record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
17586
17582
  "record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
17587
17583
  "record.metadata.usage": "Nutzung und Einschränkungen",
17584
+ "record.metadata.userFeedbacks": "",
17585
+ "record.metadata.userFeedbacks.anonymousUser": "",
17586
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
17587
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
17588
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
17589
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
17590
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
17591
+ "record.metadata.userFeedbacks.sortSelector.label": "",
17588
17592
  "record.more.details": "Weitere Details",
17589
17593
  "record.tab.chart": "Diagramm",
17590
17594
  "record.tab.data": "Tabelle",
@@ -17644,12 +17648,6 @@ var de = {
17644
17648
  "table.loading.data": "Daten werden geladen...",
17645
17649
  "table.object.count": "Objekte in diesem Datensatz",
17646
17650
  "table.select.data": "Datenquelle",
17647
- "timeSincePipe.lessThanAMinute": "",
17648
- "timeSincePipe.minutesAgo": "",
17649
- "timeSincePipe.hoursAgo": "",
17650
- "timeSincePipe.daysAgo": "",
17651
- "timeSincePipe.monthsAgo": "",
17652
- "timeSincePipe.yearsAgo": "",
17653
17651
  "tooltip.html.copy": "HTML kopieren",
17654
17652
  "tooltip.id.copy": "Eindeutige Kennung kopieren",
17655
17653
  "tooltip.url.copy": "URL kopieren",
@@ -17895,6 +17893,7 @@ var en = {
17895
17893
  "multiselect.filter.placeholder": "Search",
17896
17894
  "nav.back": "Back",
17897
17895
  next: next$5,
17896
+ "ogc.unreachable.unknown": "The service could not be reached",
17898
17897
  "organisation.filter.placeholder": "Filter results",
17899
17898
  "organisation.sort.sortBy": "Sort by:",
17900
17899
  "organisations.hits.found": "{hits, plural, =0{No organizations found} other{{hits} out of {total} organizations shown}}",
@@ -17959,14 +17958,6 @@ var en = {
17959
17958
  "record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
17960
17959
  "record.metadata.quality.updateFrequency.success": "Update frequency is specified",
17961
17960
  "record.metadata.related": "Related records",
17962
- "record.metadata.userFeedbacks": "Questions / Answers",
17963
- "record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
17964
- "record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
17965
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
17966
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
17967
- "record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
17968
- "record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
17969
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
17970
17961
  "record.metadata.sheet": "Original metadata",
17971
17962
  "record.metadata.status": "Status",
17972
17963
  "record.metadata.technical": "Technical information",
@@ -17981,6 +17972,14 @@ var en = {
17981
17972
  "record.metadata.updateFrequency": "Data Update Frequency",
17982
17973
  "record.metadata.updatedOn": "Last Data Information Update",
17983
17974
  "record.metadata.usage": "License and Conditions",
17975
+ "record.metadata.userFeedbacks": "Questions / Answers",
17976
+ "record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
17977
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
17978
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
17979
+ "record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
17980
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
17981
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
17982
+ "record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
17984
17983
  "record.more.details": "Read more",
17985
17984
  "record.tab.chart": "Chart",
17986
17985
  "record.tab.data": "Table",
@@ -18040,12 +18039,6 @@ var en = {
18040
18039
  "table.loading.data": "Loading data...",
18041
18040
  "table.object.count": "objects in this dataset",
18042
18041
  "table.select.data": "Data source",
18043
- "timeSincePipe.lessThanAMinute": "Less than a minute ago",
18044
- "timeSincePipe.minutesAgo": "{value} minute{s} ago",
18045
- "timeSincePipe.hoursAgo": "{value} hour{s} ago",
18046
- "timeSincePipe.daysAgo": "{value} day{s} ago",
18047
- "timeSincePipe.monthsAgo": "{value} month{s} ago",
18048
- "timeSincePipe.yearsAgo": "{value} year{s} ago",
18049
18042
  "tooltip.html.copy": "Copy HTML",
18050
18043
  "tooltip.id.copy": "Copy unique identifier",
18051
18044
  "tooltip.url.copy": "Copy URL",
@@ -18291,6 +18284,7 @@ var es = {
18291
18284
  "multiselect.filter.placeholder": "",
18292
18285
  "nav.back": "",
18293
18286
  next: next$4,
18287
+ "ogc.unreachable.unknown": "",
18294
18288
  "organisation.filter.placeholder": "",
18295
18289
  "organisation.sort.sortBy": "",
18296
18290
  "organisations.hits.found": "",
@@ -18355,14 +18349,6 @@ var es = {
18355
18349
  "record.metadata.quality.updateFrequency.failed": "",
18356
18350
  "record.metadata.quality.updateFrequency.success": "",
18357
18351
  "record.metadata.related": "",
18358
- "record.metadata.userFeedbacks": "",
18359
- "record.metadata.userFeedbacks.anonymousUser": "",
18360
- "record.metadata.userFeedbacks.sortSelector.label": "",
18361
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
18362
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
18363
- "record.metadata.userFeedbacks.newComment.placeholder": "",
18364
- "record.metadata.userFeedbacks.newAnswer.placeholder": "",
18365
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
18366
18352
  "record.metadata.sheet": "",
18367
18353
  "record.metadata.status": "",
18368
18354
  "record.metadata.technical": "",
@@ -18377,6 +18363,14 @@ var es = {
18377
18363
  "record.metadata.updateFrequency": "",
18378
18364
  "record.metadata.updatedOn": "",
18379
18365
  "record.metadata.usage": "",
18366
+ "record.metadata.userFeedbacks": "",
18367
+ "record.metadata.userFeedbacks.anonymousUser": "",
18368
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
18369
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
18370
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
18371
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
18372
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
18373
+ "record.metadata.userFeedbacks.sortSelector.label": "",
18380
18374
  "record.more.details": "",
18381
18375
  "record.tab.chart": "",
18382
18376
  "record.tab.data": "",
@@ -18436,12 +18430,6 @@ var es = {
18436
18430
  "table.loading.data": "",
18437
18431
  "table.object.count": "",
18438
18432
  "table.select.data": "",
18439
- "timeSincePipe.lessThanAMinute": "",
18440
- "timeSincePipe.minutesAgo": "",
18441
- "timeSincePipe.hoursAgo": "",
18442
- "timeSincePipe.daysAgo": "",
18443
- "timeSincePipe.monthsAgo": "",
18444
- "timeSincePipe.yearsAgo": "",
18445
18433
  "tooltip.html.copy": "",
18446
18434
  "tooltip.id.copy": "",
18447
18435
  "tooltip.url.copy": "",
@@ -18687,6 +18675,7 @@ var fr = {
18687
18675
  "multiselect.filter.placeholder": "Rechercher",
18688
18676
  "nav.back": "Retour",
18689
18677
  next: next$3,
18678
+ "ogc.unreachable.unknown": "Le service n'est pas accessible",
18690
18679
  "organisation.filter.placeholder": "Filtrer les résultats",
18691
18680
  "organisation.sort.sortBy": "Trier par :",
18692
18681
  "organisations.hits.found": "{hits, plural, =0{Aucune organisation trouvé} one{1 organisation sur {total} affichée} other{{hits} organisations sur {total} affichées}}",
@@ -18751,14 +18740,6 @@ var fr = {
18751
18740
  "record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
18752
18741
  "record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
18753
18742
  "record.metadata.related": "Voir aussi",
18754
- "record.metadata.userFeedbacks": "Questions / Réponses",
18755
- "record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
18756
- "record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
18757
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
18758
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
18759
- "record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
18760
- "record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
18761
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
18762
18743
  "record.metadata.sheet": "Fiche de métadonnées d'origine",
18763
18744
  "record.metadata.status": "Statut",
18764
18745
  "record.metadata.technical": "Informations techniques",
@@ -18773,6 +18754,14 @@ var fr = {
18773
18754
  "record.metadata.updateFrequency": "Fréquence de mise à jour des données",
18774
18755
  "record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
18775
18756
  "record.metadata.usage": "Licences et conditions d'utilisation",
18757
+ "record.metadata.userFeedbacks": "Questions / Réponses",
18758
+ "record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
18759
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
18760
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
18761
+ "record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
18762
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
18763
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
18764
+ "record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
18776
18765
  "record.more.details": "Détails",
18777
18766
  "record.tab.chart": "Graphique",
18778
18767
  "record.tab.data": "Tableau",
@@ -18832,12 +18821,6 @@ var fr = {
18832
18821
  "table.loading.data": "Chargement des données...",
18833
18822
  "table.object.count": "enregistrements dans ces données",
18834
18823
  "table.select.data": "Source de données",
18835
- "timeSincePipe.lessThanAMinute": "Il y a moins d'une minute",
18836
- "timeSincePipe.minutesAgo": "Il y a {value} minute{s}",
18837
- "timeSincePipe.hoursAgo": "Il y a {value} heure{s}",
18838
- "timeSincePipe.daysAgo": "Il y a {value} jour{s}",
18839
- "timeSincePipe.monthsAgo": "Il y a {value} mois",
18840
- "timeSincePipe.yearsAgo": "Il y a {value} an{s}",
18841
18824
  "tooltip.html.copy": "Copier le HTML",
18842
18825
  "tooltip.id.copy": "Copier l'identifiant unique",
18843
18826
  "tooltip.url.copy": "Copier l'URL",
@@ -19083,6 +19066,7 @@ var it = {
19083
19066
  "multiselect.filter.placeholder": "Cerca",
19084
19067
  "nav.back": "Indietro",
19085
19068
  next: next$2,
19069
+ "ogc.unreachable.unknown": "Il servizio non è accessibile",
19086
19070
  "organisation.filter.placeholder": "Filtra i risultati",
19087
19071
  "organisation.sort.sortBy": "Ordina per:",
19088
19072
  "organisations.hits.found": "{hits, plural, =0{Nessuna organizzazione trovata} one{1 organizzazione su {total} visualizzata} other{{hits} organizzazioni su {total} visualizzate}}",
@@ -19147,14 +19131,6 @@ var it = {
19147
19131
  "record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
19148
19132
  "record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
19149
19133
  "record.metadata.related": "Vedi anche",
19150
- "record.metadata.userFeedbacks": "",
19151
- "record.metadata.userFeedbacks.anonymousUser": "",
19152
- "record.metadata.userFeedbacks.sortSelector.label": "",
19153
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
19154
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
19155
- "record.metadata.userFeedbacks.newComment.placeholder": "",
19156
- "record.metadata.userFeedbacks.newAnswer.placeholder": "",
19157
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
19158
19134
  "record.metadata.sheet": "Origine del metadata",
19159
19135
  "record.metadata.status": "Stato",
19160
19136
  "record.metadata.technical": "Informazioni tecniche",
@@ -19169,6 +19145,14 @@ var it = {
19169
19145
  "record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
19170
19146
  "record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
19171
19147
  "record.metadata.usage": "Licenze e limiti di utilizzo",
19148
+ "record.metadata.userFeedbacks": "",
19149
+ "record.metadata.userFeedbacks.anonymousUser": "",
19150
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
19151
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
19152
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
19153
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
19154
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
19155
+ "record.metadata.userFeedbacks.sortSelector.label": "",
19172
19156
  "record.more.details": "Dettagli",
19173
19157
  "record.tab.chart": "Grafico",
19174
19158
  "record.tab.data": "Tabella",
@@ -19228,12 +19212,6 @@ var it = {
19228
19212
  "table.loading.data": "Caricamento dei dati...",
19229
19213
  "table.object.count": "record in questi dati",
19230
19214
  "table.select.data": "Sorgente dati",
19231
- "timeSincePipe.lessThanAMinute": "",
19232
- "timeSincePipe.minutesAgo": "",
19233
- "timeSincePipe.hoursAgo": "",
19234
- "timeSincePipe.daysAgo": "",
19235
- "timeSincePipe.monthsAgo": "",
19236
- "timeSincePipe.yearsAgo": "",
19237
19215
  "tooltip.html.copy": "Copiare il HTML",
19238
19216
  "tooltip.id.copy": "Copiare l'identificatore unico",
19239
19217
  "tooltip.url.copy": "Copiare l'URL",
@@ -19479,6 +19457,7 @@ var nl = {
19479
19457
  "multiselect.filter.placeholder": "",
19480
19458
  "nav.back": "",
19481
19459
  next: next$1,
19460
+ "ogc.unreachable.unknown": "",
19482
19461
  "organisation.filter.placeholder": "",
19483
19462
  "organisation.sort.sortBy": "",
19484
19463
  "organisations.hits.found": "",
@@ -19543,14 +19522,6 @@ var nl = {
19543
19522
  "record.metadata.quality.updateFrequency.failed": "",
19544
19523
  "record.metadata.quality.updateFrequency.success": "",
19545
19524
  "record.metadata.related": "",
19546
- "record.metadata.userFeedbacks": "",
19547
- "record.metadata.userFeedbacks.anonymousUser": "",
19548
- "record.metadata.userFeedbacks.sortSelector.label": "",
19549
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
19550
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
19551
- "record.metadata.userFeedbacks.newComment.placeholder": "",
19552
- "record.metadata.userFeedbacks.newAnswer.placeholder": "",
19553
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
19554
19525
  "record.metadata.sheet": "",
19555
19526
  "record.metadata.status": "",
19556
19527
  "record.metadata.technical": "",
@@ -19565,6 +19536,14 @@ var nl = {
19565
19536
  "record.metadata.updateFrequency": "",
19566
19537
  "record.metadata.updatedOn": "",
19567
19538
  "record.metadata.usage": "",
19539
+ "record.metadata.userFeedbacks": "",
19540
+ "record.metadata.userFeedbacks.anonymousUser": "",
19541
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
19542
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
19543
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
19544
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
19545
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
19546
+ "record.metadata.userFeedbacks.sortSelector.label": "",
19568
19547
  "record.more.details": "",
19569
19548
  "record.tab.chart": "",
19570
19549
  "record.tab.data": "",
@@ -19624,12 +19603,6 @@ var nl = {
19624
19603
  "table.loading.data": "",
19625
19604
  "table.object.count": "",
19626
19605
  "table.select.data": "",
19627
- "timeSincePipe.lessThanAMinute": "",
19628
- "timeSincePipe.minutesAgo": "",
19629
- "timeSincePipe.hoursAgo": "",
19630
- "timeSincePipe.daysAgo": "",
19631
- "timeSincePipe.monthsAgo": "",
19632
- "timeSincePipe.yearsAgo": "",
19633
19606
  "tooltip.html.copy": "",
19634
19607
  "tooltip.id.copy": "",
19635
19608
  "tooltip.url.copy": "",
@@ -19875,6 +19848,7 @@ var pt = {
19875
19848
  "multiselect.filter.placeholder": "",
19876
19849
  "nav.back": "",
19877
19850
  next: next,
19851
+ "ogc.unreachable.unknown": "",
19878
19852
  "organisation.filter.placeholder": "",
19879
19853
  "organisation.sort.sortBy": "",
19880
19854
  "organisations.hits.found": "",
@@ -19939,14 +19913,6 @@ var pt = {
19939
19913
  "record.metadata.quality.updateFrequency.failed": "",
19940
19914
  "record.metadata.quality.updateFrequency.success": "",
19941
19915
  "record.metadata.related": "",
19942
- "record.metadata.userFeedbacks": "",
19943
- "record.metadata.userFeedbacks.anonymousUser": "",
19944
- "record.metadata.userFeedbacks.sortSelector.label": "",
19945
- "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
19946
- "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
19947
- "record.metadata.userFeedbacks.newComment.placeholder": "",
19948
- "record.metadata.userFeedbacks.newAnswer.placeholder": "",
19949
- "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
19950
19916
  "record.metadata.sheet": "",
19951
19917
  "record.metadata.status": "",
19952
19918
  "record.metadata.technical": "",
@@ -19961,6 +19927,14 @@ var pt = {
19961
19927
  "record.metadata.updateFrequency": "",
19962
19928
  "record.metadata.updatedOn": "",
19963
19929
  "record.metadata.usage": "",
19930
+ "record.metadata.userFeedbacks": "",
19931
+ "record.metadata.userFeedbacks.anonymousUser": "",
19932
+ "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
19933
+ "record.metadata.userFeedbacks.newAnswer.placeholder": "",
19934
+ "record.metadata.userFeedbacks.newComment.placeholder": "",
19935
+ "record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
19936
+ "record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
19937
+ "record.metadata.userFeedbacks.sortSelector.label": "",
19964
19938
  "record.more.details": "",
19965
19939
  "record.tab.chart": "",
19966
19940
  "record.tab.data": "",
@@ -20020,12 +19994,6 @@ var pt = {
20020
19994
  "table.loading.data": "",
20021
19995
  "table.object.count": "",
20022
19996
  "table.select.data": "",
20023
- "timeSincePipe.lessThanAMinute": "",
20024
- "timeSincePipe.minutesAgo": "",
20025
- "timeSincePipe.hoursAgo": "",
20026
- "timeSincePipe.daysAgo": "",
20027
- "timeSincePipe.monthsAgo": "",
20028
- "timeSincePipe.yearsAgo": "",
20029
19997
  "tooltip.html.copy": "",
20030
19998
  "tooltip.id.copy": "",
20031
19999
  "tooltip.url.copy": "",
@@ -22524,7 +22492,7 @@ class LinkClassifierService {
22524
22492
  case 'wmts':
22525
22493
  return [LinkUsage.API, LinkUsage.MAP_API];
22526
22494
  case 'ogcFeatures':
22527
- return [LinkUsage.API];
22495
+ return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
22528
22496
  default:
22529
22497
  return [LinkUsage.UNKNOWN];
22530
22498
  }
@@ -23825,13 +23793,30 @@ class MapContextService {
23825
23793
  const style = this.styleService.styles.default;
23826
23794
  switch (type) {
23827
23795
  case MapContextLayerTypeEnum.OGCAPI:
23828
- return new VectorLayer({
23829
- source: new VectorSource({
23830
- format: new GeoJSON(),
23831
- url: layerModel.url,
23832
- }),
23833
- style,
23834
- });
23796
+ if (layerModel.layerType === 'vectorTiles') {
23797
+ return new VectorTileLayer({
23798
+ source: new OGCVectorTile({
23799
+ url: layerModel.url,
23800
+ format: new MVT(),
23801
+ }),
23802
+ });
23803
+ }
23804
+ else if (layerModel.layerType === 'mapTiles') {
23805
+ return new TileLayer({
23806
+ source: new OGCMapTile({
23807
+ url: layerModel.url,
23808
+ }),
23809
+ });
23810
+ }
23811
+ else {
23812
+ return new VectorLayer({
23813
+ source: new VectorSource({
23814
+ format: new GeoJSON(),
23815
+ url: layerModel.url,
23816
+ }),
23817
+ style,
23818
+ });
23819
+ }
23835
23820
  case MapContextLayerTypeEnum.XYZ:
23836
23821
  return new TileLayer({
23837
23822
  source: new XYZ({
@@ -25689,34 +25674,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
25689
25674
  }]
25690
25675
  }] });
25691
25676
 
25677
+ class PreviousNextButtonsComponent {
25678
+ constructor() {
25679
+ this.directionButtonClicked = new EventEmitter();
25680
+ }
25681
+ previousButtonClicked() {
25682
+ this.directionButtonClicked.next('previous');
25683
+ }
25684
+ nextButtonClicked() {
25685
+ this.directionButtonClicked.next('next');
25686
+ }
25687
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25688
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PreviousNextButtonsComponent, isStandalone: true, selector: "gn-ui-previous-next-buttons", inputs: { isFirst: "isFirst", isLast: "isLast" }, outputs: { directionButtonClicked: "directionButtonClicked" }, ngImport: i0, template: "<div class=\"flex flex-row gap-x-4 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n [type]=\"isFirst ? 'default' : 'outline'\"\n [disabled]=\"isFirst\"\n (buttonClick)=\"previousButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_back\n </mat-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n [type]=\"isLast ? 'default' : 'outline'\"\n [disabled]=\"isLast\"\n (buttonClick)=\"nextButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_forward\n </mat-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25689
+ }
25690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
25691
+ type: Component,
25692
+ args: [{ selector: 'gn-ui-previous-next-buttons', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ButtonComponent, MatIconModule], template: "<div class=\"flex flex-row gap-x-4 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n [type]=\"isFirst ? 'default' : 'outline'\"\n [disabled]=\"isFirst\"\n (buttonClick)=\"previousButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_back\n </mat-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n [type]=\"isLast ? 'default' : 'outline'\"\n [disabled]=\"isLast\"\n (buttonClick)=\"nextButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_forward\n </mat-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"] }]
25693
+ }], propDecorators: { isFirst: [{
25694
+ type: Input
25695
+ }], isLast: [{
25696
+ type: Input
25697
+ }], directionButtonClicked: [{
25698
+ type: Output
25699
+ }] } });
25700
+
25692
25701
  class AddLayerFromOgcApiComponent {
25693
25702
  constructor(changeDetectorRef) {
25694
25703
  this.changeDetectorRef = changeDetectorRef;
25695
25704
  this.layerAdded = new EventEmitter();
25696
25705
  this.urlChange = new Subject();
25697
- this.layerUrl = '';
25698
25706
  this.loading = false;
25699
25707
  this.layers = [];
25700
- this.ogcEndpoint = null;
25701
25708
  this.errorMessage = null;
25709
+ this.selectedLayerTypes = {};
25702
25710
  }
25703
25711
  ngOnInit() {
25704
25712
  this.urlChange.pipe(debounceTime$1(700)).subscribe(() => {
25705
25713
  this.loadLayers();
25706
- this.changeDetectorRef.detectChanges(); // manually trigger change detection
25707
25714
  });
25708
25715
  }
25709
25716
  async loadLayers() {
25710
25717
  this.errorMessage = null;
25711
25718
  try {
25712
25719
  this.loading = true;
25713
- if (this.ogcUrl.trim() === '') {
25720
+ if (!this.ogcUrl.trim()) {
25714
25721
  this.layers = [];
25715
25722
  return;
25716
25723
  }
25717
- this.ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
25718
- // Currently only supports feature collections
25719
- this.layers = await this.ogcEndpoint.featureCollections;
25724
+ const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
25725
+ this.layers = await ogcEndpoint.allCollections;
25726
+ this.setDefaultLayerTypes();
25720
25727
  }
25721
25728
  catch (error) {
25722
25729
  const err = error;
@@ -25728,21 +25735,75 @@ class AddLayerFromOgcApiComponent {
25728
25735
  this.changeDetectorRef.markForCheck();
25729
25736
  }
25730
25737
  }
25731
- async addLayer(layer) {
25732
- this.layerUrl = await this.ogcEndpoint.getCollectionItemsUrl(layer);
25733
- const layerToAdd = {
25734
- name: layer,
25735
- url: this.layerUrl,
25736
- type: MapContextLayerTypeEnum.OGCAPI,
25737
- };
25738
- this.layerAdded.emit({ ...layerToAdd, title: layer });
25738
+ setDefaultLayerTypes() {
25739
+ this.layers.forEach((layer) => {
25740
+ const choices = this.getLayerChoices(layer);
25741
+ if (choices.length > 0) {
25742
+ this.selectedLayerTypes[layer.name] = choices[0].value;
25743
+ }
25744
+ });
25745
+ }
25746
+ getLayerChoices(layer) {
25747
+ const choices = [];
25748
+ if (layer.hasRecords) {
25749
+ choices.push({ label: 'Records', value: 'record' });
25750
+ }
25751
+ if (layer.hasFeatures) {
25752
+ choices.push({ label: 'Features', value: 'features' });
25753
+ }
25754
+ if (layer.hasVectorTiles) {
25755
+ choices.push({ label: 'Vector Tiles', value: 'vectorTiles' });
25756
+ }
25757
+ if (layer.hasMapTiles) {
25758
+ choices.push({ label: 'Map Tiles', value: 'mapTiles' });
25759
+ }
25760
+ return choices;
25761
+ }
25762
+ shouldDisplayLayer(layer) {
25763
+ return (layer.hasRecords ||
25764
+ layer.hasFeatures ||
25765
+ layer.hasVectorTiles ||
25766
+ layer.hasMapTiles);
25767
+ }
25768
+ onLayerTypeSelect(layerName, selectedType) {
25769
+ this.selectedLayerTypes[layerName] = selectedType
25770
+ ? selectedType
25771
+ : this.getLayerChoices(layerName)[0]?.value;
25772
+ }
25773
+ async addLayer(layer, layerType) {
25774
+ try {
25775
+ const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
25776
+ let layerUrl;
25777
+ if (layerType === 'vectorTiles') {
25778
+ layerUrl = await ogcEndpoint.getVectorTilesetUrl(layer);
25779
+ }
25780
+ else if (layerType === 'mapTiles') {
25781
+ layerUrl = await ogcEndpoint.getMapTilesetUrl(layer);
25782
+ }
25783
+ else {
25784
+ layerUrl = await ogcEndpoint.getCollectionItemsUrl(layer, {
25785
+ outputFormat: 'json',
25786
+ });
25787
+ }
25788
+ const layerToAdd = {
25789
+ name: layer,
25790
+ url: layerUrl,
25791
+ type: MapContextLayerTypeEnum.OGCAPI,
25792
+ layerType: layerType,
25793
+ };
25794
+ this.layerAdded.emit({ ...layerToAdd, title: layer });
25795
+ }
25796
+ catch (error) {
25797
+ const err = error;
25798
+ console.error('Error adding layer:', err.message);
25799
+ }
25739
25800
  }
25740
25801
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
25741
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer }}\n </p>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }] }); }
25802
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n ></gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<ng-container *ngFor=\"let layer of layers\">\n <div\n *ngIf=\"shouldDisplayLayer(layer)\"\n class=\"flex items-center justify-between my-2 layer-item-tree\"\n >\n <div class=\"flex flex-col items-start w-full\">\n <p\n class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\"\n [title]=\"layer.name\"\n >\n {{ layer.name }}\n </p>\n <div class=\"flex justify-between items-center w-full\">\n <gn-ui-dropdown-selector\n [title]=\"'Add Layer As' | translate\"\n [choices]=\"getLayerChoices(layer)\"\n (selectValue)=\"onLayerTypeSelect(layer.name, $event)\"\n [selected]=\"selectedLayerTypes[layer.name]\"\n extraBtnClass=\"w-6 h-5 !text-sm !px-2 !py-1\"\n ></gn-ui-dropdown-selector>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer.name, selectedLayerTypes[layer.name])\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n >\n <span translate>map.layer.add</span>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".dropdown-content{display:none}.relative:hover .dropdown-content{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: UiInputsModule }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }] }); }
25742
25803
  }
25743
25804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
25744
25805
  type: Component,
25745
- args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer }}\n </p>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n" }]
25806
+ args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n ></gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<ng-container *ngFor=\"let layer of layers\">\n <div\n *ngIf=\"shouldDisplayLayer(layer)\"\n class=\"flex items-center justify-between my-2 layer-item-tree\"\n >\n <div class=\"flex flex-col items-start w-full\">\n <p\n class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\"\n [title]=\"layer.name\"\n >\n {{ layer.name }}\n </p>\n <div class=\"flex justify-between items-center w-full\">\n <gn-ui-dropdown-selector\n [title]=\"'Add Layer As' | translate\"\n [choices]=\"getLayerChoices(layer)\"\n (selectValue)=\"onLayerTypeSelect(layer.name, $event)\"\n [selected]=\"selectedLayerTypes[layer.name]\"\n extraBtnClass=\"w-6 h-5 !text-sm !px-2 !py-1\"\n ></gn-ui-dropdown-selector>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer.name, selectedLayerTypes[layer.name])\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n >\n <span translate>map.layer.add</span>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".dropdown-content{display:none}.relative:hover .dropdown-content{display:block}\n"] }]
25746
25807
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { ogcUrl: [{
25747
25808
  type: Input
25748
25809
  }], layerAdded: [{
@@ -26628,7 +26689,7 @@ class DownloadsListComponent {
26628
26689
  return getBadgeColor(getFileFormat(link));
26629
26690
  }
26630
26691
  isFromWfs(link) {
26631
- return link.type === 'service' && link.accessServiceProtocol === 'wfs';
26692
+ return link.type === 'download' && link.accessServiceProtocol === 'wfs';
26632
26693
  }
26633
26694
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
26634
26695
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DownloadsListComponent, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-50')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromWfs]=\"isFromWfs(link)\"\n ></gn-ui-download-item>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromWfs"], outputs: ["exportUrl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -26660,14 +26721,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
26660
26721
  }] } });
26661
26722
 
26662
26723
  class LinkCardComponent {
26724
+ constructor() {
26725
+ this.compact = false;
26726
+ }
26727
+ get title() {
26728
+ if (this.link.name && this.link.description) {
26729
+ return `${this.link.name} | ${this.link.description}`;
26730
+ }
26731
+ return this.link.name || this.link.description || '';
26732
+ }
26663
26733
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26664
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, selector: "gn-ui-link-card", inputs: { link: "link" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group h-40 grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden lg:w-80\"\n>\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\">open_in_new</mat-icon>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26734
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, isStandalone: true, selector: "gn-ui-link-card", inputs: { link: "link", compact: "compact" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden\"\n [ngClass]=\"{ 'h-40': !compact }\"\n [title]=\"title\"\n>\n <ng-container *ngIf=\"!compact; else compactTpl\">\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-container>\n <ng-template #compactTpl>\n <div class=\"flex items-center justify-between gap-4\">\n <p\n class=\"overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap\"\n >\n {{ link.name || link.description }}\n </p>\n <mat-icon class=\"material-symbols-outlined card-icon flex-shrink-0\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-template>\n</a>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26665
26735
  }
26666
26736
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, decorators: [{
26667
26737
  type: Component,
26668
- args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group h-40 grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden lg:w-80\"\n>\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\">open_in_new</mat-icon>\n </div>\n</a>\n" }]
26738
+ args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden\"\n [ngClass]=\"{ 'h-40': !compact }\"\n [title]=\"title\"\n>\n <ng-container *ngIf=\"!compact; else compactTpl\">\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-container>\n <ng-template #compactTpl>\n <div class=\"flex items-center justify-between gap-4\">\n <p\n class=\"overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap\"\n >\n {{ link.name || link.description }}\n </p>\n <mat-icon class=\"material-symbols-outlined card-icon flex-shrink-0\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-template>\n</a>\n" }]
26669
26739
  }], propDecorators: { link: [{
26670
26740
  type: Input
26741
+ }], compact: [{
26742
+ type: Input
26671
26743
  }] } });
26672
26744
 
26673
26745
  class MarkdownParserComponent {
@@ -27151,9 +27223,11 @@ class RecordApiFormComponent {
27151
27223
  this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
27152
27224
  }
27153
27225
  set apiLink(value) {
27154
- this.apiBaseUrl = value ? value.url.href : undefined;
27155
27226
  this.outputFormats = [{ value: 'json', label: 'JSON' }];
27156
- this.parseOutputFormats();
27227
+ if (value) {
27228
+ this.apiBaseUrl = value.url.href;
27229
+ this.parseOutputFormats();
27230
+ }
27157
27231
  this.resetUrl();
27158
27232
  }
27159
27233
  setOffset(value) {
@@ -27305,43 +27379,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
27305
27379
  }] } });
27306
27380
 
27307
27381
  class CarouselComponent {
27382
+ get isFirstStep() {
27383
+ return this.currentStep === 0;
27384
+ }
27385
+ get isLastStep() {
27386
+ return this.currentStep === this.steps.length - 1;
27387
+ }
27388
+ get stepsCount() {
27389
+ return this.steps.length;
27390
+ }
27308
27391
  constructor(changeDetector) {
27309
27392
  this.changeDetector = changeDetector;
27310
27393
  this.containerClass = '';
27311
- this.stepsContainerClass = '';
27394
+ this.stepsContainerClass = 'w-full bottom-0 top-auto';
27395
+ this.currentStepChange = new EventEmitter();
27312
27396
  this.steps = [];
27313
- this.selectedStep = -1;
27397
+ this.currentStep = 0;
27398
+ this.refreshSteps = () => {
27399
+ this.steps = this.emblaApi.scrollSnapList();
27400
+ this.currentStep = this.emblaApi.selectedScrollSnap();
27401
+ this.currentStepChange.emit(this.currentStep);
27402
+ this.changeDetector.detectChanges();
27403
+ };
27314
27404
  }
27315
27405
  ngAfterViewInit() {
27316
27406
  this.emblaApi = EmblaCarousel(this.carouselOverflowContainer.nativeElement, {
27317
27407
  duration: 15,
27318
27408
  });
27319
- const refreshSteps = () => {
27320
- this.steps = this.emblaApi.scrollSnapList();
27321
- this.selectedStep = this.emblaApi.selectedScrollSnap();
27322
- this.changeDetector.detectChanges();
27323
- };
27324
27409
  this.emblaApi
27325
- .on('init', refreshSteps)
27326
- .on('reInit', refreshSteps)
27327
- .on('select', refreshSteps);
27410
+ .on('init', this.refreshSteps)
27411
+ .on('reInit', this.refreshSteps)
27412
+ .on('select', this.refreshSteps);
27328
27413
  }
27329
27414
  scrollToStep(stepIndex) {
27330
27415
  this.emblaApi.scrollTo(stepIndex);
27331
27416
  }
27417
+ slideToPrevious() {
27418
+ if (this.isFirstStep)
27419
+ return;
27420
+ this.emblaApi.scrollPrev();
27421
+ }
27422
+ slideToNext() {
27423
+ if (this.isLastStep)
27424
+ return;
27425
+ this.emblaApi.scrollNext();
27426
+ }
27332
27427
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
27333
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27428
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, isStandalone: true, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, outputs: { currentStepChange: "currentStepChange" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"currentStep === i ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27334
27429
  }
27335
27430
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
27336
27431
  type: Component,
27337
- args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"] }]
27338
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerClass: [{
27432
+ args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"currentStep === i ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"] }]
27433
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { carouselOverflowContainer: [{
27434
+ type: ViewChild,
27435
+ args: ['carouselOverflowContainer']
27436
+ }], containerClass: [{
27339
27437
  type: Input
27340
27438
  }], stepsContainerClass: [{
27341
27439
  type: Input
27342
- }], carouselOverflowContainer: [{
27343
- type: ViewChild,
27344
- args: ['carouselOverflowContainer']
27440
+ }], currentStepChange: [{
27441
+ type: Output
27345
27442
  }] } });
27346
27443
 
27347
27444
  class FormFieldWrapperComponent {
@@ -27495,17 +27592,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
27495
27592
  args: ['innerContainer']
27496
27593
  }] } });
27497
27594
 
27595
+ class BlockListComponent {
27596
+ get pages() {
27597
+ return new Array(this.pagesCount).fill(0).map((_, i) => i);
27598
+ }
27599
+ get isFirstPage() {
27600
+ return this.currentPage === 0;
27601
+ }
27602
+ get isLastPage() {
27603
+ return this.currentPage === this.pagesCount - 1;
27604
+ }
27605
+ get pagesCount() {
27606
+ return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
27607
+ }
27608
+ constructor(changeDetector) {
27609
+ this.changeDetector = changeDetector;
27610
+ this.pageSize = 5;
27611
+ this.containerClass = '';
27612
+ this.paginationContainerClass = 'w-full bottom-0 top-auto';
27613
+ this.minHeight = 0;
27614
+ this.currentPage = 0;
27615
+ this.refreshBlocksVisibility = () => {
27616
+ this.blocks.forEach((block, index) => {
27617
+ block.nativeElement.style.display =
27618
+ index >= this.currentPage * this.pageSize &&
27619
+ index < (this.currentPage + 1) * this.pageSize
27620
+ ? null
27621
+ : 'none';
27622
+ });
27623
+ };
27624
+ }
27625
+ ngAfterViewInit() {
27626
+ this.blocks.changes.subscribe(this.refreshBlocksVisibility);
27627
+ this.refreshBlocksVisibility();
27628
+ // we store the first height as the min-height of the list container
27629
+ this.minHeight = this.blockContainer.nativeElement.clientHeight;
27630
+ this.changeDetector.detectChanges();
27631
+ }
27632
+ goToPage(index) {
27633
+ this.currentPage = Math.max(Math.min(index, this.pagesCount - 1), 0);
27634
+ this.changeDetector.detectChanges();
27635
+ this.refreshBlocksVisibility();
27636
+ }
27637
+ previousPage() {
27638
+ if (this.isFirstPage)
27639
+ return;
27640
+ this.goToPage(this.currentPage - 1);
27641
+ }
27642
+ nextPage() {
27643
+ if (this.isLastPage)
27644
+ return;
27645
+ this.goToPage(this.currentPage + 1);
27646
+ }
27647
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
27648
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: BlockListComponent, isStandalone: true, selector: "gn-ui-block-list", inputs: { pageSize: "pageSize", containerClass: "containerClass", paginationContainerClass: "paginationContainerClass" }, queries: [{ propertyName: "blocks", predicate: ["block"], read: ElementRef }], viewQueries: [{ propertyName: "blockContainer", first: true, predicate: ["blockContainer"], descendants: true }], ngImport: i0, template: "<div\n class=\"block-list-container flex flex-col\"\n #blockContainer\n [ngClass]=\"containerClass\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"pagesCount > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"paginationContainerClass\"\n>\n <button\n *ngFor=\"let page of pages\"\n class=\"list-page-dot\"\n (click)=\"goToPage(page)\"\n [ngClass]=\"currentPage === page ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.list-page-dot{width:6px;height:6px;border-radius:6px;position:relative}.list-page-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27649
+ }
27650
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, decorators: [{
27651
+ type: Component,
27652
+ args: [{ selector: 'gn-ui-block-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div\n class=\"block-list-container flex flex-col\"\n #blockContainer\n [ngClass]=\"containerClass\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"pagesCount > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"paginationContainerClass\"\n>\n <button\n *ngFor=\"let page of pages\"\n class=\"list-page-dot\"\n (click)=\"goToPage(page)\"\n [ngClass]=\"currentPage === page ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.list-page-dot{width:6px;height:6px;border-radius:6px;position:relative}.list-page-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"] }]
27653
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageSize: [{
27654
+ type: Input
27655
+ }], containerClass: [{
27656
+ type: Input
27657
+ }], paginationContainerClass: [{
27658
+ type: Input
27659
+ }], blocks: [{
27660
+ type: ContentChildren,
27661
+ args: ['block', { read: ElementRef }]
27662
+ }], blockContainer: [{
27663
+ type: ViewChild,
27664
+ args: ['blockContainer']
27665
+ }] } });
27666
+
27498
27667
  class UiLayoutModule {
27499
27668
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27500
27669
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, declarations: [ExpandablePanelComponent,
27501
27670
  StickyHeaderComponent,
27502
27671
  AnchorLinkDirective,
27503
- ExpandablePanelButtonComponent,
27504
- CarouselComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
27672
+ ExpandablePanelButtonComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
27505
27673
  StickyHeaderComponent,
27506
27674
  AnchorLinkDirective,
27507
- ExpandablePanelButtonComponent,
27508
- CarouselComponent] }); }
27675
+ ExpandablePanelButtonComponent] }); }
27509
27676
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, imports: [CommonModule, MatIconModule, TranslateModule.forChild()] }); }
27510
27677
  }
27511
27678
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, decorators: [{
@@ -27517,14 +27684,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
27517
27684
  StickyHeaderComponent,
27518
27685
  AnchorLinkDirective,
27519
27686
  ExpandablePanelButtonComponent,
27520
- CarouselComponent,
27521
27687
  ],
27522
27688
  exports: [
27523
27689
  ExpandablePanelComponent,
27524
27690
  StickyHeaderComponent,
27525
27691
  AnchorLinkDirective,
27526
27692
  ExpandablePanelButtonComponent,
27527
- CarouselComponent,
27528
27693
  ],
27529
27694
  }]
27530
27695
  }] });
@@ -27658,7 +27823,6 @@ class UiElementsModule {
27658
27823
  DownloadItemComponent,
27659
27824
  DownloadsListComponent,
27660
27825
  ApiCardComponent,
27661
- LinkCardComponent,
27662
27826
  RelatedRecordCardComponent,
27663
27827
  MetadataContactComponent,
27664
27828
  MetadataCatalogComponent,
@@ -27689,7 +27853,6 @@ class UiElementsModule {
27689
27853
  DownloadItemComponent,
27690
27854
  DownloadsListComponent,
27691
27855
  ApiCardComponent,
27692
- LinkCardComponent,
27693
27856
  RelatedRecordCardComponent,
27694
27857
  MetadataContactComponent,
27695
27858
  MetadataCatalogComponent,
@@ -27743,7 +27906,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
27743
27906
  DownloadItemComponent,
27744
27907
  DownloadsListComponent,
27745
27908
  ApiCardComponent,
27746
- LinkCardComponent,
27747
27909
  RelatedRecordCardComponent,
27748
27910
  MetadataContactComponent,
27749
27911
  MetadataCatalogComponent,
@@ -27766,7 +27928,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
27766
27928
  DownloadItemComponent,
27767
27929
  DownloadsListComponent,
27768
27930
  ApiCardComponent,
27769
- LinkCardComponent,
27770
27931
  RelatedRecordCardComponent,
27771
27932
  MetadataContactComponent,
27772
27933
  MetadataCatalogComponent,
@@ -32010,6 +32171,7 @@ marker('wfs.unreachable.http');
32010
32171
  marker('wfs.unreachable.unknown');
32011
32172
  marker('wfs.featuretype.notfound');
32012
32173
  marker('wfs.geojsongml.notsupported');
32174
+ marker('ogc.unreachable.unknown');
32013
32175
  marker('dataset.error.network');
32014
32176
  marker('dataset.error.http');
32015
32177
  marker('dataset.error.parse');
@@ -32089,6 +32251,27 @@ class DataService {
32089
32251
  mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
32090
32252
  }))));
32091
32253
  }
32254
+ async getDownloadLinksFromOgcApiFeatures(ogcApiLink) {
32255
+ const collectionInfo = await this.getDownloadUrlsFromOgcApi(ogcApiLink.url.href);
32256
+ return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
32257
+ return {
32258
+ ...ogcApiLink,
32259
+ type: 'download',
32260
+ url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
32261
+ mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
32262
+ };
32263
+ });
32264
+ }
32265
+ async getDownloadUrlsFromOgcApi(url) {
32266
+ const endpoint = new OgcApiEndpoint(this.proxy.getProxiedUrl(url));
32267
+ return await endpoint.featureCollections
32268
+ .then((collections) => {
32269
+ return endpoint.getCollectionInfo(collections[0]);
32270
+ })
32271
+ .catch((error) => {
32272
+ throw new Error(`ogc.unreachable.unknown`);
32273
+ });
32274
+ }
32092
32275
  getDownloadLinksFromEsriRest(esriRestLink) {
32093
32276
  return ['json', 'geojson'].map((format) => ({
32094
32277
  ...esriRestLink,
@@ -32132,6 +32315,17 @@ class DataService {
32132
32315
  const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
32133
32316
  return from(openDataset(url, 'geojson')).pipe();
32134
32317
  }
32318
+ else if (link.type === 'service' &&
32319
+ link.accessServiceProtocol === 'ogcFeatures') {
32320
+ return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
32321
+ const geojsonUrl = collectionInfo.jsonDownloadLink;
32322
+ return openDataset(geojsonUrl, 'geojson');
32323
+ }), tap$1((url) => {
32324
+ if (url === null) {
32325
+ throw new Error('wfs.geojsongml.notsupported');
32326
+ }
32327
+ }));
32328
+ }
32135
32329
  return throwError(() => 'protocol not supported');
32136
32330
  }
32137
32331
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataService, deps: [{ token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -32590,7 +32784,8 @@ class MapViewComponent {
32590
32784
  }
32591
32785
  else if ((link.type === 'service' &&
32592
32786
  (link.accessServiceProtocol === 'wfs' ||
32593
- link.accessServiceProtocol === 'esriRest')) ||
32787
+ link.accessServiceProtocol === 'esriRest' ||
32788
+ link.accessServiceProtocol === 'ogcFeatures')) ||
32594
32789
  link.type === 'download') {
32595
32790
  return this.dataService.readAsGeoJson(link).pipe(map$1((data) => ({
32596
32791
  type: MapContextLayerTypeEnum.GEOJSON,
@@ -34600,5 +34795,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
34600
34795
  * Generated bundle index. Do not edit.
34601
34796
  */
34602
34797
 
34603
- export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, 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_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, 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, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
34798
+ export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, 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_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, 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, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
34604
34799
  //# sourceMappingURL=geonetwork-ui.mjs.map