geonetwork-ui 2.8.0-dev.0c9b29721 → 2.8.0-dev.2abe6a279

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 (129) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +5 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -1
  4. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +2 -2
  5. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +10 -10
  6. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +3 -2
  7. package/esm2022/libs/common/domain/src/index.mjs +3 -0
  8. package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
  9. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +3 -1
  10. package/esm2022/libs/common/domain/src/lib/model/search/sort-by.model.mjs +6 -1
  11. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  12. package/esm2022/libs/feature/dataviz/src/index.mjs +2 -1
  13. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +3 -1
  14. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +18 -7
  15. package/esm2022/libs/feature/dataviz/src/lib/stac-view/stac-view.component.mjs +51 -0
  16. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
  17. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
  18. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +2 -1
  19. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +2 -1
  20. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +5 -1
  21. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +9 -7
  22. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +8 -12
  23. package/esm2022/libs/ui/elements/src/lib/external-link-card/external-link-card.component.mjs +11 -4
  24. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  25. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +2 -3
  26. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
  27. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +12 -1
  28. package/esm2022/libs/util/shared/src/lib/services/proxy.service.mjs +9 -11
  29. package/esm2022/libs/util/shared/src/lib/utils/sort-by.mjs +9 -6
  30. package/esm2022/translations/de.json +14 -3
  31. package/esm2022/translations/en.json +14 -4
  32. package/esm2022/translations/es.json +13 -2
  33. package/esm2022/translations/fr.json +14 -3
  34. package/esm2022/translations/it.json +15 -4
  35. package/esm2022/translations/nl.json +13 -2
  36. package/esm2022/translations/pt.json +13 -2
  37. package/esm2022/translations/sk.json +14 -3
  38. package/fesm2022/geonetwork-ui.mjs +285 -82
  39. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  40. package/index.d.ts +1 -0
  41. package/index.d.ts.map +1 -1
  42. package/index.ts +1 -0
  43. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  44. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  45. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  46. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +7 -7
  47. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  48. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  49. package/libs/common/domain/src/index.d.ts +3 -0
  50. package/libs/common/domain/src/index.d.ts.map +1 -0
  51. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +1 -1
  52. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
  53. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +1 -1
  54. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  55. package/libs/common/domain/src/lib/model/search/sort-by.model.d.ts.map +1 -1
  56. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  57. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  58. package/libs/feature/dataviz/src/index.d.ts +1 -0
  59. package/libs/feature/dataviz/src/index.d.ts.map +1 -1
  60. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  61. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  62. package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts +16 -0
  63. package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
  64. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
  65. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  66. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
  67. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  68. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  69. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +24 -24
  70. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  71. package/libs/feature/router/src/lib/default/router.service.d.ts +2 -0
  72. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  73. package/libs/feature/router/src/lib/default/state/router.effects.d.ts +3 -1
  74. package/libs/feature/router/src/lib/default/state/router.effects.d.ts.map +1 -1
  75. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts +4 -3
  76. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts.map +1 -1
  77. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  78. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts +3 -2
  79. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts.map +1 -1
  80. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  81. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  82. package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -0
  83. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  84. package/libs/util/shared/src/lib/services/proxy.service.d.ts +5 -4
  85. package/libs/util/shared/src/lib/services/proxy.service.d.ts.map +1 -1
  86. package/libs/util/shared/src/lib/utils/sort-by.d.ts.map +1 -1
  87. package/package.json +1 -1
  88. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +2 -0
  89. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -0
  90. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -1
  91. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +37 -36
  92. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -2
  93. package/src/libs/common/domain/src/index.ts +2 -0
  94. package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +1 -1
  95. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +4 -0
  96. package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +5 -0
  97. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -1
  98. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +5 -0
  99. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +19 -0
  100. package/src/libs/feature/dataviz/src/index.ts +1 -0
  101. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +1 -0
  102. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +16 -5
  103. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.css +0 -0
  104. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.html +40 -0
  105. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.ts +62 -0
  106. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
  107. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
  108. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +1 -0
  109. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +11 -1
  110. package/src/libs/feature/router/src/lib/default/router.service.ts +8 -0
  111. package/src/libs/feature/router/src/lib/default/state/router.effects.ts +6 -7
  112. package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +8 -12
  113. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.html +43 -22
  114. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.ts +12 -3
  115. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +56 -14
  116. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +4 -2
  117. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +4 -0
  118. package/src/libs/util/shared/src/lib/links/link-utils.ts +11 -0
  119. package/src/libs/util/shared/src/lib/services/proxy.service.ts +6 -2
  120. package/src/libs/util/shared/src/lib/utils/sort-by.ts +8 -5
  121. package/translations/de.json +14 -3
  122. package/translations/en.json +14 -4
  123. package/translations/es.json +13 -2
  124. package/translations/fr.json +14 -3
  125. package/translations/it.json +15 -4
  126. package/translations/nl.json +13 -2
  127. package/translations/pt.json +13 -2
  128. package/translations/sk.json +14 -3
  129. package/src/libs/common/domain/src/lib/index.ts +0 -2
@@ -15,7 +15,7 @@ import { TranslateCompiler, TranslateLoader, TranslateDefaultParser, TranslatePa
15
15
  import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
16
16
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
17
17
  import { map as map$1, shareReplay as shareReplay$1, catchError, tap as tap$1, filter as filter$1, startWith as startWith$1, withLatestFrom, switchMap as switchMap$1, take, mergeMap, delay, distinctUntilChanged, debounceTime, finalize, throttleTime, first as first$1, pairwise as pairwise$1, share, defaultIfEmpty, toArray } from 'rxjs/operators';
18
- import { of, map as map$2, lastValueFrom, fromEvent, startWith, shareReplay, filter, pairwise, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, animationFrameScheduler, debounceTime as debounceTime$1, Observable, buffer, tap as tap$2, combineLatestWith, take as take$1, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1 } from 'rxjs';
18
+ import { of, map as map$2, lastValueFrom, fromEvent, startWith, shareReplay, filter, pairwise, switchMap, Subject, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, animationFrameScheduler, debounceTime as debounceTime$1, Observable, buffer, tap as tap$2, combineLatestWith, take as take$1, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1 } from 'rxjs';
19
19
  import { lt, valid, coerce, satisfies, ltr } from 'semver';
20
20
  import chroma from 'chroma-js';
21
21
  import * as i1$2 from '@angular/common';
@@ -31,7 +31,7 @@ import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/g
31
31
  import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
32
32
  import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
33
33
  import { provideIcons, provideNgIconsConfig, NgIconComponent, NgIcon } from '@ng-icons/core';
34
- import { matSwipeOutline, matErrorOutlineOutline, matComputerOutline, matLocationSearchingOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matInfoOutline, matWarningAmberOutline, matCloseOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline, matMoreHorizOutline } from '@ng-icons/material-icons/outline';
34
+ import { matSwipeOutline, matErrorOutlineOutline, matComputerOutline, matLocationSearchingOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matInfoOutline, matWarningAmberOutline, matCloseOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline, matDeleteOutline, matMoreHorizOutline } from '@ng-icons/material-icons/outline';
35
35
  import { createLegendFromLayer } from '@geospatial-sdk/legend';
36
36
  import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
37
37
  import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
@@ -666,6 +666,10 @@ function matchProtocol(protocol) {
666
666
  return 'esriRest';
667
667
  if (/DOWNLOAD-1/i.test(protocol))
668
668
  return 'GPFDL';
669
+ if (/DB:POSTGIS/i.test(protocol))
670
+ return 'postgis';
671
+ if (/stac\W*items/i.test(protocol))
672
+ return 'stac';
669
673
  return 'other';
670
674
  }
671
675
  function matchMimeType(format) {
@@ -914,6 +918,8 @@ marker('record.metadata.api.accessServiceProtocol.ogcFeatures');
914
918
  marker('record.metadata.api.accessServiceProtocol.GPFDL');
915
919
  marker('record.metadata.api.accessServiceProtocol.tms');
916
920
  marker('record.metadata.api.accessServiceProtocol.maplibre-style');
921
+ marker('record.metadata.api.accessServiceProtocol.postgis');
922
+ marker('record.metadata.api.accessServiceProtocol.stac');
917
923
  marker('record.metadata.api.accessServiceProtocol.other');
918
924
 
919
925
  function getUpdateFrequencyFromFrequencyCode(frequencyCode) {
@@ -19159,6 +19165,8 @@ var de = {
19159
19165
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
19160
19166
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
19161
19167
  "record.metadata.api.accessServiceProtocol.other": "",
19168
+ "record.metadata.api.accessServiceProtocol.postgis": "",
19169
+ "record.metadata.api.accessServiceProtocol.stac": "",
19162
19170
  "record.metadata.api.accessServiceProtocol.tms": "",
19163
19171
  "record.metadata.api.accessServiceProtocol.wfs": "",
19164
19172
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -19206,7 +19214,8 @@ var de = {
19206
19214
  "record.metadata.isGeographical": "Geographischer Datensatz",
19207
19215
  "record.metadata.keywords": "Stichworte",
19208
19216
  "record.metadata.languages": "Sprachen",
19209
- "record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
19217
+ "record.metadata.link.postgis.table": "",
19218
+ "record.metadata.link.postgis.tooltip": "",
19210
19219
  "record.metadata.linked.datasets": "Verknüpfte Datensätze",
19211
19220
  "record.metadata.linked.records": "Verknüpfte Inhalte",
19212
19221
  "record.metadata.linked.reuses": "Verknüpfte Wiederverwendungen",
@@ -19247,6 +19256,9 @@ var de = {
19247
19256
  "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
19248
19257
  "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
19249
19258
  "record.metadata.related": "Entdecken Sie den Katalog",
19259
+ "record.metadata.resourceCreated": "Erstellt am {date}",
19260
+ "record.metadata.resourcePublished": "Veröffentlicht am {date}",
19261
+ "record.metadata.resourceUpdated": "Zuletzt aktualisiert am {date}",
19250
19262
  "record.metadata.ressources.and.links": "Ressourcen und Links",
19251
19263
  "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
19252
19264
  "record.metadata.status": "Status",
@@ -19259,8 +19271,9 @@ var de = {
19259
19271
  "record.metadata.title": "Titel",
19260
19272
  "record.metadata.topics": "Kategorien",
19261
19273
  "record.metadata.uniqueId": "Eindeutige Kennung",
19274
+ "record.metadata.update": "Aktualisierungsdatum",
19262
19275
  "record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
19263
- "record.metadata.updatedOn": "Geändert am",
19276
+ "record.metadata.updatedOn": "Informationen geändert am",
19264
19277
  "record.metadata.usage": "Nutzung und Einschränkungen",
19265
19278
  "record.metadata.userFeedbacks": "",
19266
19279
  "record.metadata.userFeedbacks.anonymousUser": "",
@@ -19275,6 +19288,7 @@ var de = {
19275
19288
  "record.tab.chart": "Diagramm",
19276
19289
  "record.tab.data": "Tabelle",
19277
19290
  "record.tab.map": "Karte",
19291
+ "record.tab.stac": "",
19278
19292
  "record.was.created.time": "erstellte diesen Ressource {time}",
19279
19293
  records: records$7,
19280
19294
  "results.layout.selectOne": "Layout auswählen",
@@ -19283,7 +19297,6 @@ var de = {
19283
19297
  "results.records.hits.found": "{hits, plural, =0{Keine Ressource entsprechen der angegebenen Suche.} one{1 Ressource gefunden.} other{{hits} Ressourcen gefunden.}}",
19284
19298
  "results.records.hits.selected": "{ amount } ausgewählt",
19285
19299
  "results.showMore": "Mehr Ergebnisse anzeigen...",
19286
- "results.sortBy.changeDate": "",
19287
19300
  "results.sortBy.dateStamp": "Neueste",
19288
19301
  "results.sortBy.popularity": "Beliebtheit",
19289
19302
  "results.sortBy.qualityScore": "Fertigstellungsanzeige",
@@ -19367,6 +19380,10 @@ var de = {
19367
19380
  "service.metadata.spatialExtent": "",
19368
19381
  "share.tab.permalink": "Teilen",
19369
19382
  "share.tab.webComponent": "Integrieren",
19383
+ "stac.filter.from": "",
19384
+ "stac.filter.period": "",
19385
+ "stac.filter.reset": "",
19386
+ "stac.filter.to": "",
19370
19387
  "table.loading.data": "Daten werden geladen...",
19371
19388
  "table.object.count": "Objekte in diesem Datensatz",
19372
19389
  "table.paginator.firstPage": "Erste Seite",
@@ -19634,7 +19651,6 @@ var en = {
19634
19651
  "editor.record.form.topics.inspire.intelligence": "Intelligence / Military",
19635
19652
  "editor.record.form.topics.inspire.location": "Location",
19636
19653
  "editor.record.form.topics.inspire.oceans": "Oceans",
19637
- "editor.record.form.topics.inspire.placeholder": "Select an INSPIRE theme",
19638
19654
  "editor.record.form.topics.inspire.planning": "Planning / Cadastre",
19639
19655
  "editor.record.form.topics.inspire.society": "Society",
19640
19656
  "editor.record.form.topics.inspire.structure": "Structure",
@@ -19812,6 +19828,8 @@ var en = {
19812
19828
  "record.metadata.api.accessServiceProtocol.maplibre-style": "maplibre-style",
19813
19829
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "ogcFeatures",
19814
19830
  "record.metadata.api.accessServiceProtocol.other": "other",
19831
+ "record.metadata.api.accessServiceProtocol.postgis": "PostGIS",
19832
+ "record.metadata.api.accessServiceProtocol.stac": "STAC",
19815
19833
  "record.metadata.api.accessServiceProtocol.tms": "tms",
19816
19834
  "record.metadata.api.accessServiceProtocol.wfs": "wfs",
19817
19835
  "record.metadata.api.accessServiceProtocol.wms": "wms",
@@ -19859,7 +19877,8 @@ var en = {
19859
19877
  "record.metadata.isGeographical": "Geographical dataset",
19860
19878
  "record.metadata.keywords": "Keywords",
19861
19879
  "record.metadata.languages": "Languages",
19862
- "record.metadata.lastUpdate": "Last updated on {date}",
19880
+ "record.metadata.link.postgis.table": "table :",
19881
+ "record.metadata.link.postgis.tooltip": "PostGIS resources do not have access links",
19863
19882
  "record.metadata.linked.datasets": "Associated datasets",
19864
19883
  "record.metadata.linked.records": "Associated content",
19865
19884
  "record.metadata.linked.reuses": "Associated reuses",
@@ -19900,6 +19919,9 @@ var en = {
19900
19919
  "record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
19901
19920
  "record.metadata.quality.updateFrequency.success": "Update frequency is specified",
19902
19921
  "record.metadata.related": "Explore the catalog",
19922
+ "record.metadata.resourceCreated": "Created on {date}",
19923
+ "record.metadata.resourcePublished": "Published on {date}",
19924
+ "record.metadata.resourceUpdated": "Last updated on {date}",
19903
19925
  "record.metadata.ressources.and.links": "Resources and links",
19904
19926
  "record.metadata.sheet": "Original metadata",
19905
19927
  "record.metadata.status": "Status",
@@ -19912,8 +19934,9 @@ var en = {
19912
19934
  "record.metadata.title": "Title",
19913
19935
  "record.metadata.topics": "Categories",
19914
19936
  "record.metadata.uniqueId": "Unique Identifier",
19937
+ "record.metadata.update": "Date of update",
19915
19938
  "record.metadata.updateFrequency": "Data Update Frequency",
19916
- "record.metadata.updatedOn": "Updated on",
19939
+ "record.metadata.updatedOn": "Metadata modified on",
19917
19940
  "record.metadata.usage": "License and Conditions",
19918
19941
  "record.metadata.userFeedbacks": "Questions / Answers",
19919
19942
  "record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
@@ -19928,6 +19951,7 @@ var en = {
19928
19951
  "record.tab.chart": "Chart",
19929
19952
  "record.tab.data": "Table",
19930
19953
  "record.tab.map": "Map",
19954
+ "record.tab.stac": "STAC",
19931
19955
  "record.was.created.time": "created this record {time}",
19932
19956
  records: records$6,
19933
19957
  "results.layout.selectOne": "Results layout",
@@ -19936,7 +19960,6 @@ var en = {
19936
19960
  "results.records.hits.found": "{hits, plural, =0{No record match the specified search.} one{1 record found.} other{{hits} records found.}}",
19937
19961
  "results.records.hits.selected": "{ amount } selected",
19938
19962
  "results.showMore": "Show more results...",
19939
- "results.sortBy.changeDate": "Last modification",
19940
19963
  "results.sortBy.dateStamp": "Newest",
19941
19964
  "results.sortBy.popularity": "Popularity",
19942
19965
  "results.sortBy.qualityScore": "Completion score",
@@ -20020,6 +20043,10 @@ var en = {
20020
20043
  "service.metadata.spatialExtent": "Spatial extent",
20021
20044
  "share.tab.permalink": "Share",
20022
20045
  "share.tab.webComponent": "Integrate",
20046
+ "stac.filter.from": "From",
20047
+ "stac.filter.period": "Period",
20048
+ "stac.filter.reset": "Reset filters",
20049
+ "stac.filter.to": "To",
20023
20050
  "table.loading.data": "Loading data...",
20024
20051
  "table.object.count": "Objects in this dataset",
20025
20052
  "table.paginator.firstPage": "First page",
@@ -20464,6 +20491,8 @@ var es = {
20464
20491
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
20465
20492
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
20466
20493
  "record.metadata.api.accessServiceProtocol.other": "",
20494
+ "record.metadata.api.accessServiceProtocol.postgis": "",
20495
+ "record.metadata.api.accessServiceProtocol.stac": "",
20467
20496
  "record.metadata.api.accessServiceProtocol.tms": "",
20468
20497
  "record.metadata.api.accessServiceProtocol.wfs": "",
20469
20498
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -20511,7 +20540,8 @@ var es = {
20511
20540
  "record.metadata.isGeographical": "",
20512
20541
  "record.metadata.keywords": "",
20513
20542
  "record.metadata.languages": "",
20514
- "record.metadata.lastUpdate": "",
20543
+ "record.metadata.link.postgis.table": "",
20544
+ "record.metadata.link.postgis.tooltip": "",
20515
20545
  "record.metadata.linked.datasets": "",
20516
20546
  "record.metadata.linked.records": "",
20517
20547
  "record.metadata.linked.reuses": "",
@@ -20552,6 +20582,9 @@ var es = {
20552
20582
  "record.metadata.quality.updateFrequency.failed": "",
20553
20583
  "record.metadata.quality.updateFrequency.success": "",
20554
20584
  "record.metadata.related": "",
20585
+ "record.metadata.resourceCreated": "",
20586
+ "record.metadata.resourcePublished": "",
20587
+ "record.metadata.resourceUpdated": "",
20555
20588
  "record.metadata.ressources.and.links": "Recursos y enlaces",
20556
20589
  "record.metadata.sheet": "",
20557
20590
  "record.metadata.status": "",
@@ -20564,6 +20597,7 @@ var es = {
20564
20597
  "record.metadata.title": "",
20565
20598
  "record.metadata.topics": "",
20566
20599
  "record.metadata.uniqueId": "",
20600
+ "record.metadata.update": "",
20567
20601
  "record.metadata.updateFrequency": "",
20568
20602
  "record.metadata.updatedOn": "",
20569
20603
  "record.metadata.usage": "",
@@ -20580,6 +20614,7 @@ var es = {
20580
20614
  "record.tab.chart": "",
20581
20615
  "record.tab.data": "",
20582
20616
  "record.tab.map": "",
20617
+ "record.tab.stac": "",
20583
20618
  "record.was.created.time": "",
20584
20619
  records: records$5,
20585
20620
  "results.layout.selectOne": "",
@@ -20588,7 +20623,6 @@ var es = {
20588
20623
  "results.records.hits.found": "",
20589
20624
  "results.records.hits.selected": "",
20590
20625
  "results.showMore": "",
20591
- "results.sortBy.changeDate": "",
20592
20626
  "results.sortBy.dateStamp": "",
20593
20627
  "results.sortBy.popularity": "",
20594
20628
  "results.sortBy.qualityScore": "",
@@ -20672,6 +20706,10 @@ var es = {
20672
20706
  "service.metadata.spatialExtent": "",
20673
20707
  "share.tab.permalink": "",
20674
20708
  "share.tab.webComponent": "",
20709
+ "stac.filter.from": "",
20710
+ "stac.filter.period": "",
20711
+ "stac.filter.reset": "",
20712
+ "stac.filter.to": "",
20675
20713
  "table.loading.data": "",
20676
20714
  "table.object.count": "",
20677
20715
  "table.paginator.firstPage": "Primera página",
@@ -21116,6 +21154,8 @@ var fr = {
21116
21154
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
21117
21155
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
21118
21156
  "record.metadata.api.accessServiceProtocol.other": "autre",
21157
+ "record.metadata.api.accessServiceProtocol.postgis": "PostGIS",
21158
+ "record.metadata.api.accessServiceProtocol.stac": "STAC",
21119
21159
  "record.metadata.api.accessServiceProtocol.tms": "",
21120
21160
  "record.metadata.api.accessServiceProtocol.wfs": "",
21121
21161
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -21163,7 +21203,8 @@ var fr = {
21163
21203
  "record.metadata.isGeographical": "Donnée géographique",
21164
21204
  "record.metadata.keywords": "Mots-clés",
21165
21205
  "record.metadata.languages": "Langues",
21166
- "record.metadata.lastUpdate": "Mis à jour le {date}",
21206
+ "record.metadata.link.postgis.table": "table :",
21207
+ "record.metadata.link.postgis.tooltip": "Les ressources de type PostGIS n'ont pas de lien d'accès",
21167
21208
  "record.metadata.linked.datasets": "Jeux de données associés",
21168
21209
  "record.metadata.linked.records": "Contenus associés",
21169
21210
  "record.metadata.linked.reuses": "Réutilisations associées",
@@ -21204,6 +21245,9 @@ var fr = {
21204
21245
  "record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
21205
21246
  "record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
21206
21247
  "record.metadata.related": "Explorez le catalogue",
21248
+ "record.metadata.resourceCreated": "Créé le {date}",
21249
+ "record.metadata.resourcePublished": "Publié le {date}",
21250
+ "record.metadata.resourceUpdated": "Mis à jour le {date}",
21207
21251
  "record.metadata.ressources.and.links": "Ressources et liens",
21208
21252
  "record.metadata.sheet": "Fiche de métadonnées d'origine",
21209
21253
  "record.metadata.status": "Statut",
@@ -21216,8 +21260,9 @@ var fr = {
21216
21260
  "record.metadata.title": "Intitulé",
21217
21261
  "record.metadata.topics": "Catégories",
21218
21262
  "record.metadata.uniqueId": "Identificateur de ressource unique",
21263
+ "record.metadata.update": "Date de mise à jour",
21219
21264
  "record.metadata.updateFrequency": "Fréquence de mise à jour des données",
21220
- "record.metadata.updatedOn": "Modifié le",
21265
+ "record.metadata.updatedOn": "Fiche de métadonnées modifiée le",
21221
21266
  "record.metadata.usage": "Licences et conditions d'utilisation",
21222
21267
  "record.metadata.userFeedbacks": "Questions / Réponses",
21223
21268
  "record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
@@ -21232,6 +21277,7 @@ var fr = {
21232
21277
  "record.tab.chart": "Graphique",
21233
21278
  "record.tab.data": "Tableau",
21234
21279
  "record.tab.map": "Carte",
21280
+ "record.tab.stac": "STAC",
21235
21281
  "record.was.created.time": "a créé cette ressource {time}",
21236
21282
  records: records$4,
21237
21283
  "results.layout.selectOne": "Affichage des résultats",
@@ -21240,7 +21286,6 @@ var fr = {
21240
21286
  "results.records.hits.found": "{hits, plural, =0{Aucune correspondance.} one{1 ressource trouvée.} other{{hits} ressources.}}",
21241
21287
  "results.records.hits.selected": "{amount, plural, one{1 selectionné} other{{ amount } sélectionnés}}",
21242
21288
  "results.showMore": "Plus de résultats...",
21243
- "results.sortBy.changeDate": "Dernière modification",
21244
21289
  "results.sortBy.dateStamp": "Plus récent",
21245
21290
  "results.sortBy.popularity": "Popularité",
21246
21291
  "results.sortBy.qualityScore": "Indicateur de complétion",
@@ -21324,6 +21369,10 @@ var fr = {
21324
21369
  "service.metadata.spatialExtent": "Etendue spatiale",
21325
21370
  "share.tab.permalink": "Partager",
21326
21371
  "share.tab.webComponent": "Intégrer",
21372
+ "stac.filter.from": "Du",
21373
+ "stac.filter.period": "Choix de la période",
21374
+ "stac.filter.reset": "Réinitialiser les filtres",
21375
+ "stac.filter.to": "Au",
21327
21376
  "table.loading.data": "Chargement des données...",
21328
21377
  "table.object.count": "enregistrements dans ce jeu de données",
21329
21378
  "table.paginator.firstPage": "Première page",
@@ -21768,6 +21817,8 @@ var it = {
21768
21817
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
21769
21818
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
21770
21819
  "record.metadata.api.accessServiceProtocol.other": "",
21820
+ "record.metadata.api.accessServiceProtocol.postgis": "",
21821
+ "record.metadata.api.accessServiceProtocol.stac": "",
21771
21822
  "record.metadata.api.accessServiceProtocol.tms": "",
21772
21823
  "record.metadata.api.accessServiceProtocol.wfs": "",
21773
21824
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -21815,7 +21866,8 @@ var it = {
21815
21866
  "record.metadata.isGeographical": "Dati geografici",
21816
21867
  "record.metadata.keywords": "Parole chiave",
21817
21868
  "record.metadata.languages": "Lingue",
21818
- "record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
21869
+ "record.metadata.link.postgis.table": "",
21870
+ "record.metadata.link.postgis.tooltip": "",
21819
21871
  "record.metadata.linked.datasets": "",
21820
21872
  "record.metadata.linked.records": "",
21821
21873
  "record.metadata.linked.reuses": "",
@@ -21856,8 +21908,11 @@ var it = {
21856
21908
  "record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
21857
21909
  "record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
21858
21910
  "record.metadata.related": "Vedi anche",
21911
+ "record.metadata.resourceCreated": "Creato il {date}",
21912
+ "record.metadata.resourcePublished": "Pubblicato il {date}",
21913
+ "record.metadata.resourceUpdated": "Ultimo aggiornamento il {date}",
21859
21914
  "record.metadata.ressources.and.links": "Risorse e collegamenti",
21860
- "record.metadata.sheet": "Origine del metadata",
21915
+ "record.metadata.sheet": "Origine dei metadati",
21861
21916
  "record.metadata.status": "Stato",
21862
21917
  "record.metadata.status.notPublished": "Non pubblicato",
21863
21918
  "record.metadata.status.published": "Pubblicato",
@@ -21868,8 +21923,9 @@ var it = {
21868
21923
  "record.metadata.title": "Titolo",
21869
21924
  "record.metadata.topics": "Categorie",
21870
21925
  "record.metadata.uniqueId": "Identificatore unico di risorsa",
21926
+ "record.metadata.update": "Data di aggiornamento",
21871
21927
  "record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
21872
- "record.metadata.updatedOn": "Modificato il",
21928
+ "record.metadata.updatedOn": "Metadati modificati il",
21873
21929
  "record.metadata.usage": "Licenze e limiti di utilizzo",
21874
21930
  "record.metadata.userFeedbacks": "Domande / Risposte",
21875
21931
  "record.metadata.userFeedbacks.anonymousUser": "Per pubblicare un commento, effettua il login.",
@@ -21884,6 +21940,7 @@ var it = {
21884
21940
  "record.tab.chart": "Grafico",
21885
21941
  "record.tab.data": "Tabella",
21886
21942
  "record.tab.map": "Mappa",
21943
+ "record.tab.stac": "",
21887
21944
  "record.was.created.time": "ha creato questi dati {time}",
21888
21945
  records: records$3,
21889
21946
  "results.layout.selectOne": "Mostra risultati",
@@ -21892,7 +21949,6 @@ var it = {
21892
21949
  "results.records.hits.found": "{hits, plural, =0{Nessuna corrispondenza.} one{1 record trovato.} other{{hits} risultati.}}",
21893
21950
  "results.records.hits.selected": "{amount, plural, one{1 selezionato} other{{ amount } selezionati}}",
21894
21951
  "results.showMore": "Altri risultati...",
21895
- "results.sortBy.changeDate": "Ultima modifica",
21896
21952
  "results.sortBy.dateStamp": "Più recente",
21897
21953
  "results.sortBy.popularity": "Popolarità",
21898
21954
  "results.sortBy.qualityScore": "Indicatore di completamento",
@@ -21976,6 +22032,10 @@ var it = {
21976
22032
  "service.metadata.spatialExtent": "Estensione spaziale",
21977
22033
  "share.tab.permalink": "Condividere",
21978
22034
  "share.tab.webComponent": "Incorporare",
22035
+ "stac.filter.from": "",
22036
+ "stac.filter.period": "",
22037
+ "stac.filter.reset": "",
22038
+ "stac.filter.to": "",
21979
22039
  "table.loading.data": "Caricamento dei dati...",
21980
22040
  "table.object.count": "record in questi dati",
21981
22041
  "table.paginator.firstPage": "Prima pagina",
@@ -22420,6 +22480,8 @@ var nl = {
22420
22480
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
22421
22481
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
22422
22482
  "record.metadata.api.accessServiceProtocol.other": "",
22483
+ "record.metadata.api.accessServiceProtocol.postgis": "",
22484
+ "record.metadata.api.accessServiceProtocol.stac": "",
22423
22485
  "record.metadata.api.accessServiceProtocol.tms": "",
22424
22486
  "record.metadata.api.accessServiceProtocol.wfs": "",
22425
22487
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -22467,7 +22529,8 @@ var nl = {
22467
22529
  "record.metadata.isGeographical": "",
22468
22530
  "record.metadata.keywords": "",
22469
22531
  "record.metadata.languages": "",
22470
- "record.metadata.lastUpdate": "",
22532
+ "record.metadata.link.postgis.table": "",
22533
+ "record.metadata.link.postgis.tooltip": "",
22471
22534
  "record.metadata.linked.datasets": "",
22472
22535
  "record.metadata.linked.records": "",
22473
22536
  "record.metadata.linked.reuses": "",
@@ -22508,6 +22571,9 @@ var nl = {
22508
22571
  "record.metadata.quality.updateFrequency.failed": "",
22509
22572
  "record.metadata.quality.updateFrequency.success": "",
22510
22573
  "record.metadata.related": "",
22574
+ "record.metadata.resourceCreated": "",
22575
+ "record.metadata.resourcePublished": "",
22576
+ "record.metadata.resourceUpdated": "",
22511
22577
  "record.metadata.ressources.and.links": "Bronnen en links",
22512
22578
  "record.metadata.sheet": "",
22513
22579
  "record.metadata.status": "",
@@ -22520,6 +22586,7 @@ var nl = {
22520
22586
  "record.metadata.title": "",
22521
22587
  "record.metadata.topics": "",
22522
22588
  "record.metadata.uniqueId": "",
22589
+ "record.metadata.update": "",
22523
22590
  "record.metadata.updateFrequency": "",
22524
22591
  "record.metadata.updatedOn": "",
22525
22592
  "record.metadata.usage": "",
@@ -22536,6 +22603,7 @@ var nl = {
22536
22603
  "record.tab.chart": "",
22537
22604
  "record.tab.data": "",
22538
22605
  "record.tab.map": "",
22606
+ "record.tab.stac": "",
22539
22607
  "record.was.created.time": "",
22540
22608
  records: records$2,
22541
22609
  "results.layout.selectOne": "",
@@ -22544,7 +22612,6 @@ var nl = {
22544
22612
  "results.records.hits.found": "",
22545
22613
  "results.records.hits.selected": "",
22546
22614
  "results.showMore": "",
22547
- "results.sortBy.changeDate": "",
22548
22615
  "results.sortBy.dateStamp": "",
22549
22616
  "results.sortBy.popularity": "",
22550
22617
  "results.sortBy.qualityScore": "",
@@ -22628,6 +22695,10 @@ var nl = {
22628
22695
  "service.metadata.spatialExtent": "",
22629
22696
  "share.tab.permalink": "",
22630
22697
  "share.tab.webComponent": "",
22698
+ "stac.filter.from": "",
22699
+ "stac.filter.period": "",
22700
+ "stac.filter.reset": "",
22701
+ "stac.filter.to": "",
22631
22702
  "table.loading.data": "",
22632
22703
  "table.object.count": "",
22633
22704
  "table.paginator.firstPage": "",
@@ -23072,6 +23143,8 @@ var pt = {
23072
23143
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
23073
23144
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
23074
23145
  "record.metadata.api.accessServiceProtocol.other": "",
23146
+ "record.metadata.api.accessServiceProtocol.postgis": "",
23147
+ "record.metadata.api.accessServiceProtocol.stac": "",
23075
23148
  "record.metadata.api.accessServiceProtocol.tms": "",
23076
23149
  "record.metadata.api.accessServiceProtocol.wfs": "",
23077
23150
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -23119,7 +23192,8 @@ var pt = {
23119
23192
  "record.metadata.isGeographical": "",
23120
23193
  "record.metadata.keywords": "",
23121
23194
  "record.metadata.languages": "",
23122
- "record.metadata.lastUpdate": "",
23195
+ "record.metadata.link.postgis.table": "",
23196
+ "record.metadata.link.postgis.tooltip": "",
23123
23197
  "record.metadata.linked.datasets": "",
23124
23198
  "record.metadata.linked.records": "",
23125
23199
  "record.metadata.linked.reuses": "",
@@ -23160,6 +23234,9 @@ var pt = {
23160
23234
  "record.metadata.quality.updateFrequency.failed": "",
23161
23235
  "record.metadata.quality.updateFrequency.success": "",
23162
23236
  "record.metadata.related": "",
23237
+ "record.metadata.resourceCreated": "",
23238
+ "record.metadata.resourcePublished": "",
23239
+ "record.metadata.resourceUpdated": "",
23163
23240
  "record.metadata.ressources.and.links": "Recursos e links",
23164
23241
  "record.metadata.sheet": "",
23165
23242
  "record.metadata.status": "",
@@ -23172,6 +23249,7 @@ var pt = {
23172
23249
  "record.metadata.title": "",
23173
23250
  "record.metadata.topics": "",
23174
23251
  "record.metadata.uniqueId": "",
23252
+ "record.metadata.update": "",
23175
23253
  "record.metadata.updateFrequency": "",
23176
23254
  "record.metadata.updatedOn": "",
23177
23255
  "record.metadata.usage": "",
@@ -23188,6 +23266,7 @@ var pt = {
23188
23266
  "record.tab.chart": "",
23189
23267
  "record.tab.data": "",
23190
23268
  "record.tab.map": "",
23269
+ "record.tab.stac": "",
23191
23270
  "record.was.created.time": "",
23192
23271
  records: records$1,
23193
23272
  "results.layout.selectOne": "",
@@ -23196,7 +23275,6 @@ var pt = {
23196
23275
  "results.records.hits.found": "",
23197
23276
  "results.records.hits.selected": "",
23198
23277
  "results.showMore": "",
23199
- "results.sortBy.changeDate": "",
23200
23278
  "results.sortBy.dateStamp": "",
23201
23279
  "results.sortBy.popularity": "",
23202
23280
  "results.sortBy.qualityScore": "",
@@ -23280,6 +23358,10 @@ var pt = {
23280
23358
  "service.metadata.spatialExtent": "",
23281
23359
  "share.tab.permalink": "",
23282
23360
  "share.tab.webComponent": "",
23361
+ "stac.filter.from": "",
23362
+ "stac.filter.period": "",
23363
+ "stac.filter.reset": "",
23364
+ "stac.filter.to": "",
23283
23365
  "table.loading.data": "",
23284
23366
  "table.object.count": "",
23285
23367
  "table.paginator.firstPage": "",
@@ -23724,6 +23806,8 @@ var sk = {
23724
23806
  "record.metadata.api.accessServiceProtocol.maplibre-style": "",
23725
23807
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
23726
23808
  "record.metadata.api.accessServiceProtocol.other": "",
23809
+ "record.metadata.api.accessServiceProtocol.postgis": "",
23810
+ "record.metadata.api.accessServiceProtocol.stac": "",
23727
23811
  "record.metadata.api.accessServiceProtocol.tms": "",
23728
23812
  "record.metadata.api.accessServiceProtocol.wfs": "",
23729
23813
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -23771,7 +23855,8 @@ var sk = {
23771
23855
  "record.metadata.isGeographical": "Súbor geografických údajov",
23772
23856
  "record.metadata.keywords": "Kľúčové slová",
23773
23857
  "record.metadata.languages": "",
23774
- "record.metadata.lastUpdate": "Posledná aktualizácia",
23858
+ "record.metadata.link.postgis.table": "",
23859
+ "record.metadata.link.postgis.tooltip": "",
23775
23860
  "record.metadata.linked.datasets": "",
23776
23861
  "record.metadata.linked.records": "",
23777
23862
  "record.metadata.linked.reuses": "",
@@ -23812,6 +23897,9 @@ var sk = {
23812
23897
  "record.metadata.quality.updateFrequency.failed": "Frekvencia aktualizácie nie je určená",
23813
23898
  "record.metadata.quality.updateFrequency.success": "Frekvencia aktualizácie je určená",
23814
23899
  "record.metadata.related": "Súvisiace záznamy",
23900
+ "record.metadata.resourceCreated": "",
23901
+ "record.metadata.resourcePublished": "",
23902
+ "record.metadata.resourceUpdated": "",
23815
23903
  "record.metadata.ressources.and.links": "Prostředky a odkazy",
23816
23904
  "record.metadata.sheet": "Ďalšie metadáta sú k dispozícii na:",
23817
23905
  "record.metadata.status": "Stav",
@@ -23824,8 +23912,9 @@ var sk = {
23824
23912
  "record.metadata.title": "Názov",
23825
23913
  "record.metadata.topics": "",
23826
23914
  "record.metadata.uniqueId": "Jedinečný identifikátor",
23915
+ "record.metadata.update": "Dátum aktualizácie",
23827
23916
  "record.metadata.updateFrequency": "Frekvencia aktualizácie metadát",
23828
- "record.metadata.updatedOn": "Posledná aktualizácia metadát",
23917
+ "record.metadata.updatedOn": "Metadáta zmenené dňa",
23829
23918
  "record.metadata.usage": "Použitie a obmedzenia",
23830
23919
  "record.metadata.userFeedbacks": "",
23831
23920
  "record.metadata.userFeedbacks.anonymousUser": "",
@@ -23840,6 +23929,7 @@ var sk = {
23840
23929
  "record.tab.chart": "Graf",
23841
23930
  "record.tab.data": "Tabuľka",
23842
23931
  "record.tab.map": "Mapa",
23932
+ "record.tab.stac": "",
23843
23933
  "record.was.created.time": "vytvoril tento dataset o {time}",
23844
23934
  records: records,
23845
23935
  "results.layout.selectOne": "Rozmiestnenie výsledkov",
@@ -23848,7 +23938,6 @@ var sk = {
23848
23938
  "results.records.hits.found": "{hits, plural, =0{Žiadne dokumenty nezodpovedajú zadanému vyhľadávaniu.} one{1 záznam nájdený.} other{{hits} záznamov nájdených.}}",
23849
23939
  "results.records.hits.selected": "{ amount } označených",
23850
23940
  "results.showMore": "Zobraziť viac výsledkov...",
23851
- "results.sortBy.changeDate": "",
23852
23941
  "results.sortBy.dateStamp": "Najnovšie",
23853
23942
  "results.sortBy.popularity": "Popularita",
23854
23943
  "results.sortBy.qualityScore": "Indikátor dokončenia",
@@ -23932,6 +24021,10 @@ var sk = {
23932
24021
  "service.metadata.spatialExtent": "",
23933
24022
  "share.tab.permalink": "Zdieľať",
23934
24023
  "share.tab.webComponent": "Integrovať",
24024
+ "stac.filter.from": "",
24025
+ "stac.filter.period": "",
24026
+ "stac.filter.reset": "",
24027
+ "stac.filter.to": "",
23935
24028
  "table.loading.data": "Načítanie údajov...",
23936
24029
  "table.object.count": "objekty v tomto súbore údajov",
23937
24030
  "table.paginator.firstPage": "",
@@ -24337,6 +24430,8 @@ class Gn4FieldMapper {
24337
24430
  /^OGC:WMTS/.test(protocol) ||
24338
24431
  /TMS/i.test(protocol) ||
24339
24432
  /ogc\W*api\W*features/i.test(protocol) ||
24433
+ /^DB:POSTGIS/i.test(protocol) ||
24434
+ /stac\W*items/i.test(protocol) ||
24340
24435
  (/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
24341
24436
  ) {
24342
24437
  return 'service';
@@ -24607,8 +24702,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
24607
24702
 
24608
24703
  const PROXY_PATH = new InjectionToken('proxyPath');
24609
24704
  class ProxyService {
24610
- constructor(proxyPath, location) {
24611
- this.proxyPath = proxyPath;
24705
+ get proxyPath() {
24706
+ return this.injector.get(PROXY_PATH, null);
24707
+ }
24708
+ constructor(injector, location) {
24709
+ this.injector = injector;
24612
24710
  this.location = location;
24613
24711
  }
24614
24712
  /**
@@ -24631,7 +24729,7 @@ class ProxyService {
24631
24729
  return url;
24632
24730
  return new URL(`${this.proxyPath}${encodeURIComponent(url)}`, window.location.href).toString();
24633
24731
  }
24634
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, deps: [{ token: PROXY_PATH, optional: true }, { token: i1$2.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
24732
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, deps: [{ token: i0.Injector }, { token: i1$2.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
24635
24733
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, providedIn: 'root' }); }
24636
24734
  }
24637
24735
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, decorators: [{
@@ -24639,12 +24737,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
24639
24737
  args: [{
24640
24738
  providedIn: 'root',
24641
24739
  }]
24642
- }], ctorParameters: () => [{ type: undefined, decorators: [{
24643
- type: Optional
24644
- }, {
24645
- type: Inject,
24646
- args: [PROXY_PATH]
24647
- }] }, { type: i1$2.Location }] });
24740
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1$2.Location }] });
24648
24741
 
24649
24742
  class DateService {
24650
24743
  constructor(translateService) {
@@ -24983,13 +25076,16 @@ function sortByToStrings(sortBy) {
24983
25076
  return array.map((param) => `${param[0] === 'desc' ? '-' : ''}${param[1]}`);
24984
25077
  }
24985
25078
  function sortByToString(sortBy) {
24986
- return sortByToStrings(sortBy)[0];
25079
+ return sortByToStrings(sortBy).join(',');
24987
25080
  }
24988
25081
  function sortByFromString(sortByString) {
24989
- return [
24990
- sortByString.startsWith('-') ? 'desc' : 'asc',
24991
- sortByString.startsWith('-') ? sortByString.substring(1) : sortByString,
24992
- ];
25082
+ const fields = sortByString
25083
+ .split(',')
25084
+ .map((field) => [
25085
+ field.startsWith('-') ? 'desc' : 'asc',
25086
+ field.startsWith('-') ? field.substring(1) : field,
25087
+ ]);
25088
+ return fields.length > 1 ? fields : fields[0];
24993
25089
  }
24994
25090
 
24995
25091
  const stripHtml = function (html) {
@@ -25187,6 +25283,12 @@ const FORMATS = {
25187
25283
  color: '#5A9E6F',
25188
25284
  mimeTypes: ['image/webp'],
25189
25285
  },
25286
+ postgis: {
25287
+ extensions: ['postgis'],
25288
+ priority: 18,
25289
+ color: '#336791',
25290
+ mimeTypes: [],
25291
+ },
25190
25292
  };
25191
25293
  function getFormatPriority(linkFormat) {
25192
25294
  for (const format in FORMATS) {
@@ -25217,6 +25319,11 @@ function getFileFormatFromServiceOutput(serviceOutput) {
25217
25319
  return null;
25218
25320
  }
25219
25321
  function getFileFormat(link) {
25322
+ if ('accessServiceProtocol' in link) {
25323
+ if (link.accessServiceProtocol in FORMATS) {
25324
+ return link.accessServiceProtocol;
25325
+ }
25326
+ }
25220
25327
  if ('mimeType' in link) {
25221
25328
  const mimeTypeFormat = mimeTypeToFormat(link.mimeType);
25222
25329
  if (mimeTypeFormat !== null) {
@@ -25382,6 +25489,10 @@ class LinkClassifierService {
25382
25489
  return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
25383
25490
  case 'GPFDL':
25384
25491
  return [LinkUsage.API];
25492
+ case 'postgis':
25493
+ return [LinkUsage.UNKNOWN];
25494
+ case 'stac':
25495
+ return [LinkUsage.API];
25385
25496
  default:
25386
25497
  return [LinkUsage.UNKNOWN];
25387
25498
  }
@@ -25445,7 +25556,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
25445
25556
  }] } });
25446
25557
 
25447
25558
  var name = "geonetwork-ui";
25448
- var version = "2.8.0-dev.0c9b29721";
25559
+ var version = "2.8.0-dev.2abe6a279";
25449
25560
  var engines = {
25450
25561
  node: ">=20"
25451
25562
  };
@@ -26197,7 +26308,7 @@ class Gn4SettingsService {
26197
26308
  this.apiVersion$ = this.getSettingsSetValueByKey('system/platform/version');
26198
26309
  }
26199
26310
  getSettingsSetValueByKey(key) {
26200
- return this.siteApiService.getSettingsSet(null, [key]).pipe(map$1((v) => v[key]), shareReplay$1({ bufferSize: 1, refCount: true }));
26311
+ return of(true).pipe(switchMap(() => this.siteApiService.getSettingsSet(null, [key])), map$1((v) => v[key]), shareReplay$1({ bufferSize: 1, refCount: true }));
26201
26312
  }
26202
26313
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, deps: [{ token: SiteApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
26203
26314
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
@@ -26824,7 +26935,7 @@ class AuthService {
26824
26935
  baseUrl = baseUrl.replace('?', '&');
26825
26936
  }
26826
26937
  return baseUrl
26827
- .replace('${current_url}', new URL(this.location.path(), window.location.href).toString())
26938
+ .replace('${current_url}', new URL(this.location.prepareExternalUrl(this.location.path()), window.location.href).toString())
26828
26939
  .replace('${lang2}', toLang2(this.translateService.currentLang))
26829
26940
  .replace('${lang3}', toLang3(this.translateService.currentLang));
26830
26941
  }
@@ -27136,6 +27247,9 @@ class Gn4PlatformService {
27136
27247
  console.warn('Error while loading gnui language package');
27137
27248
  return of({});
27138
27249
  }), shareReplay$1(1));
27250
+ this.me$ = this.disableAuth
27251
+ ? of(null)
27252
+ : of(true).pipe(switchMap(() => this.meApi.getMe()), switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay$1({ bufferSize: 1, refCount: true }));
27139
27253
  /**
27140
27254
  * A map of already loaded thesauri (groups of keywords); the key is a URI
27141
27255
  * @private
@@ -27146,9 +27260,6 @@ class Gn4PlatformService {
27146
27260
  .pipe(map$1((thesaurus) => {
27147
27261
  return thesaurus[0];
27148
27262
  }), shareReplay$1(1));
27149
- this.me$ = this.disableAuth
27150
- ? of(null)
27151
- : this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay$1({ bufferSize: 1, refCount: true }));
27152
27263
  this.isUserAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
27153
27264
  this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay$1());
27154
27265
  }
@@ -29761,8 +29872,7 @@ class DropdownSelectorComponent {
29761
29872
  ];
29762
29873
  }
29763
29874
  get selectedChoice() {
29764
- return (this.choices.find((choice) => choice.value === this.selected) ??
29765
- this.choices[0]);
29875
+ return (this.choices.find((choice) => JSON.stringify(choice.value) === JSON.stringify(this.selected)) ?? this.choices[0]);
29766
29876
  }
29767
29877
  get id() {
29768
29878
  return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
@@ -33739,7 +33849,7 @@ class ExternalLinkCardComponent {
33739
33849
  }
33740
33850
  set size(value) {
33741
33851
  this._size = value;
33742
- this.cardClass = this.sizeClassMap[value];
33852
+ this.cardClass = `group flex flex-row justify-between card-shadow rounded overflow-hidden ${this.sizeClassMap[value]}`;
33743
33853
  }
33744
33854
  get size() {
33745
33855
  return this._size;
@@ -33750,6 +33860,10 @@ class ExternalLinkCardComponent {
33750
33860
  }
33751
33861
  return this.link.name || this.link.description || '';
33752
33862
  }
33863
+ get isDatabase() {
33864
+ return (this.link.type === 'service' &&
33865
+ this.link.accessServiceProtocol === 'postgis');
33866
+ }
33753
33867
  getLinkFormat(link) {
33754
33868
  return getFileFormat(link);
33755
33869
  }
@@ -33760,18 +33874,20 @@ class ExternalLinkCardComponent {
33760
33874
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExternalLinkCardComponent, isStandalone: true, selector: "gn-ui-external-link-card", inputs: { link: "link", size: "size" }, providers: [
33761
33875
  provideIcons({
33762
33876
  matOpenInNew,
33877
+ iconoirDatabase,
33763
33878
  }),
33764
33879
  provideNgIconsConfig({ size: '1.5em' }),
33765
- ], ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n [ngClass]=\"cardClass\"\n [title]=\"title\"\n>\n <div class=\"flex flex-col justify-between flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >{{\n getLinkFormat(link) || ('downloads.format.unknown' | translate)\n }}</span\n >\n </div>\n </div>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33880
+ ], ngImport: i0, template: "<ng-container *ngIf=\"isDatabase; else clickableLink\">\n <div [ngClass]=\"cardClass\" [title]=\"title\">\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div\n class=\"gn-ui-card-icon\"\n [title]=\"'record.metadata.link.postgis.tooltip' | translate\"\n >\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"iconoirDatabase\"\n ></ng-icon>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #clickableLink>\n <a [href]=\"link.url\" target=\"_blank\" [ngClass]=\"cardClass\" [title]=\"title\">\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n </a>\n</ng-template>\n<ng-template #cardContent>\n <div class=\"flex flex-col justify-between flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n <ng-container *ngIf=\"isDatabase\">\n {{ 'record.metadata.link.postgis.table' | translate }}\n </ng-container>\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >\n {{ getLinkFormat(link) || ('downloads.format.unknown' | translate) }}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33766
33881
  }
33767
33882
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExternalLinkCardComponent, decorators: [{
33768
33883
  type: Component,
33769
33884
  args: [{ selector: 'gn-ui-external-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslatePipe], providers: [
33770
33885
  provideIcons({
33771
33886
  matOpenInNew,
33887
+ iconoirDatabase,
33772
33888
  }),
33773
33889
  provideNgIconsConfig({ size: '1.5em' }),
33774
- ], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n [ngClass]=\"cardClass\"\n [title]=\"title\"\n>\n <div class=\"flex flex-col justify-between flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >{{\n getLinkFormat(link) || ('downloads.format.unknown' | translate)\n }}</span\n >\n </div>\n </div>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n</a>\n" }]
33890
+ ], template: "<ng-container *ngIf=\"isDatabase; else clickableLink\">\n <div [ngClass]=\"cardClass\" [title]=\"title\">\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div\n class=\"gn-ui-card-icon\"\n [title]=\"'record.metadata.link.postgis.tooltip' | translate\"\n >\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"iconoirDatabase\"\n ></ng-icon>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #clickableLink>\n <a [href]=\"link.url\" target=\"_blank\" [ngClass]=\"cardClass\" [title]=\"title\">\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n </a>\n</ng-template>\n<ng-template #cardContent>\n <div class=\"flex flex-col justify-between flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n <ng-container *ngIf=\"isDatabase\">\n {{ 'record.metadata.link.postgis.table' | translate }}\n </ng-container>\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >\n {{ getLinkFormat(link) || ('downloads.format.unknown' | translate) }}\n </span>\n </div>\n </div>\n</ng-template>\n" }]
33775
33891
  }], propDecorators: { link: [{
33776
33892
  type: Input
33777
33893
  }], size: [{
@@ -34041,7 +34157,7 @@ class MetadataInfoComponent {
34041
34157
  return this.dateService.formatDateTime(date);
34042
34158
  }
34043
34159
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
34044
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
34160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines\n [maxLines]=\"6\"\n *ngIf=\"metadata.abstract\"\n data-test=\"metadata-info-abstract\"\n >\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n resourceContact ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.lineage\"\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div\n class=\"flex flex-row gap-6 mt-5 mb-8 resource-contact\"\n *ngIf=\"resourceContact\"\n data-test=\"details-panel-resource-contact\"\n >\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div\n *ngIf=\"metadata.resourceCreated\"\n data-test=\"details-panel-resource-created\"\n >\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1 resource-created\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.resourcePublished\"\n data-test=\"details-panel-resource-published\"\n >\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1 resource-published\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.resourceUpdated\"\n data-test=\"details-panel-resource-updated\"\n >\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p class=\"text-primary font-medium mt-1 resource-updated\">\n {{ formatDate(metadata.resourceUpdated) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.updateFrequency\"\n data-test=\"details-panel-update-frequency\"\n >\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.otherLanguages?.length\"\n data-test=\"details-panel-other-languages\"\n >\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium other-languages\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && temporalExtent\"\n data-test=\"details-panel-temporal-extent\"\n >\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
34045
34161
  provideIcons({
34046
34162
  matOpenInNew,
34047
34163
  matMailOutline: matMailOutline$1,
@@ -34069,7 +34185,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
34069
34185
  matOpenInNew,
34070
34186
  matMailOutline: matMailOutline$1,
34071
34187
  }),
34072
- ], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
34188
+ ], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines\n [maxLines]=\"6\"\n *ngIf=\"metadata.abstract\"\n data-test=\"metadata-info-abstract\"\n >\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n resourceContact ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.lineage\"\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div\n class=\"flex flex-row gap-6 mt-5 mb-8 resource-contact\"\n *ngIf=\"resourceContact\"\n data-test=\"details-panel-resource-contact\"\n >\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div\n *ngIf=\"metadata.resourceCreated\"\n data-test=\"details-panel-resource-created\"\n >\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1 resource-created\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.resourcePublished\"\n data-test=\"details-panel-resource-published\"\n >\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1 resource-published\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.resourceUpdated\"\n data-test=\"details-panel-resource-updated\"\n >\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p class=\"text-primary font-medium mt-1 resource-updated\">\n {{ formatDate(metadata.resourceUpdated) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.updateFrequency\"\n data-test=\"details-panel-update-frequency\"\n >\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.otherLanguages?.length\"\n data-test=\"details-panel-other-languages\"\n >\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium other-languages\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && temporalExtent\"\n data-test=\"details-panel-temporal-extent\"\n >\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
34073
34189
  }], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
34074
34190
  type: Input
34075
34191
  }], incomplete: [{
@@ -36457,6 +36573,11 @@ const SortByEnum = {
36457
36573
  RELEVANCY: ['desc', '_score'],
36458
36574
  QUALITY_SCORE: ['desc', 'qualityScore'],
36459
36575
  CHANGE_DATE: ['desc', 'changeDate'],
36576
+ RESOURCE_DATES: [
36577
+ ['desc', 'revisionDateForResource'],
36578
+ ['desc', 'publicationDateForResource'],
36579
+ ['desc', 'creationDateForResource'],
36580
+ ],
36460
36581
  };
36461
36582
 
36462
36583
  class SortByComponent {
@@ -36466,33 +36587,29 @@ class SortByComponent {
36466
36587
  this.choices = [
36467
36588
  {
36468
36589
  label: marker('results.sortBy.relevancy'),
36469
- value: SortByEnum.RELEVANCY.join(','),
36590
+ value: SortByEnum.RELEVANCY,
36470
36591
  },
36471
36592
  {
36472
36593
  label: marker('results.sortBy.dateStamp'),
36473
- value: SortByEnum.CREATE_DATE.join(','),
36474
- },
36475
- {
36476
- label: marker('results.sortBy.changeDate'),
36477
- value: SortByEnum.CHANGE_DATE.join(','),
36594
+ value: SortByEnum.RESOURCE_DATES,
36478
36595
  },
36479
36596
  {
36480
36597
  label: marker('results.sortBy.popularity'),
36481
- value: SortByEnum.POPULARITY.join(','),
36598
+ value: SortByEnum.POPULARITY,
36482
36599
  },
36483
36600
  ];
36484
- this.currentSortBy$ = this.facade.sortBy$.pipe(filter$1((sortBy) => !!sortBy), map$1((sortBy) => sortBy.join(',')));
36601
+ this.currentSortBy$ = this.facade.sortBy$.pipe(filter$1((sortBy) => !!sortBy), map$1((sortBy) => sortBy));
36485
36602
  }
36486
36603
  ngOnInit() {
36487
36604
  if (this.isQualitySortable) {
36488
36605
  this.choices.push({
36489
36606
  label: marker('results.sortBy.qualityScore'),
36490
- value: SortByEnum.QUALITY_SCORE.join(','),
36607
+ value: SortByEnum.QUALITY_SCORE,
36491
36608
  });
36492
36609
  }
36493
36610
  }
36494
- changeSortBy(criteriaAsString) {
36495
- this.searchService.setSortBy(criteriaAsString.split(','));
36611
+ changeSortBy(criteria) {
36612
+ this.searchService.setSortBy(criteria);
36496
36613
  }
36497
36614
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SortByComponent, deps: [{ token: SearchFacade }, { token: SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
36498
36615
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SortByComponent, isStandalone: true, selector: "gn-ui-sort-by", inputs: { isQualitySortable: "isQualitySortable" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'search.field.sortBy' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"changeSortBy($event)\"\n [selected]=\"currentSortBy$ | async\"\n ariaName=\"search-sort-by\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
@@ -38175,13 +38292,24 @@ class DataService {
38175
38292
  if (!featureType) {
38176
38293
  throw new Error('wfs.featuretype.notfound');
38177
38294
  }
38295
+ const wfsVersion = endpoint.getVersion();
38296
+ const addSrsName = wfsVersion === '1.1.0' || wfsVersion === '2.0.0';
38297
+ const defaultCrs = featureType.defaultCrs;
38298
+ const shouldAddOutputCrs = addSrsName && defaultCrs;
38178
38299
  return {
38179
- all: featureType.outputFormats.reduce((prev, curr) => ({
38180
- ...prev,
38181
- [curr]: endpoint.getFeatureUrl(featureType.name, {
38182
- outputFormat: curr,
38183
- }),
38184
- }), {}),
38300
+ all: featureType.outputFormats.reduce((prev, curr) => {
38301
+ const isJsonFormat = curr.toLowerCase().includes('json');
38302
+ return {
38303
+ ...prev,
38304
+ [curr]: endpoint.getFeatureUrl(featureType.name, {
38305
+ outputFormat: curr,
38306
+ ...(shouldAddOutputCrs &&
38307
+ !isJsonFormat && {
38308
+ outputCrs: defaultCrs,
38309
+ }),
38310
+ }),
38311
+ };
38312
+ }, {}),
38185
38313
  geojson: endpoint.supportsJson(featureType.name)
38186
38314
  ? endpoint.getFeatureUrl(featureType.name, {
38187
38315
  asJson: true,
@@ -38856,6 +38984,8 @@ class ChartViewComponent {
38856
38984
  this.chartType$.next(value);
38857
38985
  }
38858
38986
  set userChartConfig(config) {
38987
+ if (!config)
38988
+ return;
38859
38989
  this.aggregation$.next(config.aggregation);
38860
38990
  this.xProperty$.next(config.xProperty);
38861
38991
  this.yProperty$.next(config.yProperty);
@@ -39293,6 +39423,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39293
39423
  type: Input
39294
39424
  }] } });
39295
39425
 
39426
+ class StacViewComponent {
39427
+ constructor() {
39428
+ this.currentTemporalExtent = null;
39429
+ this.isTemporalFilterModified = false;
39430
+ }
39431
+ onStartDateChange(date) {
39432
+ this.currentTemporalExtent = {
39433
+ ...this.currentTemporalExtent,
39434
+ start: date,
39435
+ };
39436
+ this.isTemporalFilterModified = true;
39437
+ }
39438
+ onEndDateChange(date) {
39439
+ this.currentTemporalExtent = {
39440
+ ...this.currentTemporalExtent,
39441
+ end: date,
39442
+ };
39443
+ this.isTemporalFilterModified = true;
39444
+ }
39445
+ onResetFilters() {
39446
+ this.currentTemporalExtent = this.initialTemporalExtent;
39447
+ this.isTemporalFilterModified = false;
39448
+ }
39449
+ ngOnInit() {
39450
+ this.currentTemporalExtent = this.initialTemporalExtent;
39451
+ }
39452
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StacViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39453
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StacViewComponent, isStandalone: true, selector: "gn-ui-stac-view", inputs: { link: "link", initialTemporalExtent: "initialTemporalExtent" }, ngImport: i0, template: "<div\n class=\"w-full h-full flex flex-row mt-6 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n>\n <div class=\"flex-1 flex flex-col\">\n <div class=\"m-8\">\n <p class=\"mb-4\" translate>stac.filter.period</p>\n <p translate>stac.filter.from</p>\n <gn-ui-date-picker\n id=\"start-date-picker\"\n [date]=\"currentTemporalExtent?.start\"\n (dateChange)=\"onStartDateChange($event)\"\n />\n <p class=\"mt-4\" translate>stac.filter.to</p>\n <gn-ui-date-picker\n id=\"end-date-picker\"\n [date]=\"currentTemporalExtent?.end\"\n (dateChange)=\"onEndDateChange($event)\"\n />\n </div>\n\n <div class=\"mt-auto mb-8 mx-8\" *ngIf=\"isTemporalFilterModified\">\n <button\n id=\"reset-filters-button\"\n type=\"button\"\n class=\"flex items-center\"\n (click)=\"onResetFilters()\"\n >\n <span translate>stac.filter.reset</span>\n <ng-icon\n name=\"matDeleteOutline\"\n class=\"pointer-events-none ml-2\"\n ></ng-icon>\n </button>\n </div>\n </div>\n\n <div class=\"w-[655px] flex-shrink-0 flex items-center justify-center\">\n <span>Map...</span>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DatePickerComponent, selector: "gn-ui-date-picker", inputs: ["date"], outputs: ["dateChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [provideIcons({ matDeleteOutline })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39454
+ }
39455
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StacViewComponent, decorators: [{
39456
+ type: Component,
39457
+ args: [{ selector: 'gn-ui-stac-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
39458
+ CommonModule,
39459
+ DatePickerComponent,
39460
+ NgIconComponent,
39461
+ TranslateDirective,
39462
+ ], viewProviders: [provideIcons({ matDeleteOutline })], template: "<div\n class=\"w-full h-full flex flex-row mt-6 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n>\n <div class=\"flex-1 flex flex-col\">\n <div class=\"m-8\">\n <p class=\"mb-4\" translate>stac.filter.period</p>\n <p translate>stac.filter.from</p>\n <gn-ui-date-picker\n id=\"start-date-picker\"\n [date]=\"currentTemporalExtent?.start\"\n (dateChange)=\"onStartDateChange($event)\"\n />\n <p class=\"mt-4\" translate>stac.filter.to</p>\n <gn-ui-date-picker\n id=\"end-date-picker\"\n [date]=\"currentTemporalExtent?.end\"\n (dateChange)=\"onEndDateChange($event)\"\n />\n </div>\n\n <div class=\"mt-auto mb-8 mx-8\" *ngIf=\"isTemporalFilterModified\">\n <button\n id=\"reset-filters-button\"\n type=\"button\"\n class=\"flex items-center\"\n (click)=\"onResetFilters()\"\n >\n <span translate>stac.filter.reset</span>\n <ng-icon\n name=\"matDeleteOutline\"\n class=\"pointer-events-none ml-2\"\n ></ng-icon>\n </button>\n </div>\n </div>\n\n <div class=\"w-[655px] flex-shrink-0 flex items-center justify-center\">\n <span>Map...</span>\n </div>\n</div>\n" }]
39463
+ }], propDecorators: { link: [{
39464
+ type: Input
39465
+ }], initialTemporalExtent: [{
39466
+ type: Input
39467
+ }] } });
39468
+
39296
39469
  /**
39297
39470
  * The Metadata View Facade is used to render complete metadata records.
39298
39471
  * Supply it with an incomplete record (at least containing the uuid) and the
@@ -39325,6 +39498,7 @@ class MdViewFacade {
39325
39498
  this.allLinks$ = this.metadata$.pipe(map$1((record) => 'onlineResources' in record ? record.onlineResources : []), shareReplay$1(1));
39326
39499
  this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))), shareReplay$1(1));
39327
39500
  this.mapApiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API))), shareReplay$1(1));
39501
+ this.stacLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => link.type === 'service' && link.accessServiceProtocol === 'stac')), shareReplay$1(1));
39328
39502
  this.downloadLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DOWNLOAD))));
39329
39503
  this.dataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DATA))));
39330
39504
  this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
@@ -39482,8 +39656,9 @@ class DataViewPermalinkComponent {
39482
39656
  set viewType(value) {
39483
39657
  this.viewType$.next(value);
39484
39658
  }
39485
- constructor(config, wcEmbedderBaseUrl, facade) {
39659
+ constructor(config, proxyPath, wcEmbedderBaseUrl, facade) {
39486
39660
  this.config = config;
39661
+ this.proxyPath = proxyPath;
39487
39662
  this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
39488
39663
  this.facade = facade;
39489
39664
  this.viewType$ = new BehaviorSubject('map');
@@ -39516,6 +39691,9 @@ class DataViewPermalinkComponent {
39516
39691
  url.searchParams.append('e', `gn-dataset-view-map`);
39517
39692
  }
39518
39693
  url.searchParams.append('a', `api-url=${this.config.basePath}`);
39694
+ if (this.proxyPath) {
39695
+ url.searchParams.append('a', `proxy-path=${this.proxyPath}`);
39696
+ }
39519
39697
  url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`);
39520
39698
  url.searchParams.append('a', `primary-color=#0f4395`);
39521
39699
  url.searchParams.append('a', `secondary-color=#8bc832`);
@@ -39524,7 +39702,7 @@ class DataViewPermalinkComponent {
39524
39702
  return url.toString();
39525
39703
  }));
39526
39704
  }
39527
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
39705
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: PROXY_PATH, optional: true }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
39528
39706
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewPermalinkComponent, isStandalone: true, selector: "gn-ui-data-view-permalink", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n *ngIf=\"wcEmbedderBaseUrl\"\n [text]=\"permalinkUrl$ | async\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39529
39707
  }
39530
39708
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
@@ -39535,6 +39713,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39535
39713
  args: [Configuration]
39536
39714
  }] }, { type: undefined, decorators: [{
39537
39715
  type: Optional
39716
+ }, {
39717
+ type: Inject,
39718
+ args: [PROXY_PATH]
39719
+ }] }, { type: undefined, decorators: [{
39720
+ type: Optional
39538
39721
  }, {
39539
39722
  type: Inject,
39540
39723
  args: [WEB_COMPONENT_EMBEDDER_URL]
@@ -39643,8 +39826,9 @@ class DataViewWebComponentComponent {
39643
39826
  set viewType(value) {
39644
39827
  this.viewType$.next(value);
39645
39828
  }
39646
- constructor(config, facade) {
39829
+ constructor(config, proxyPath, facade) {
39647
39830
  this.config = config;
39831
+ this.proxyPath = proxyPath;
39648
39832
  this.facade = facade;
39649
39833
  this.viewType$ = new BehaviorSubject('map');
39650
39834
  this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
@@ -39653,7 +39837,10 @@ class DataViewWebComponentComponent {
39653
39837
  const { aggregation, xProperty, yProperty, chartType } = config;
39654
39838
  return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
39655
39839
  <gn-dataset-view-chart
39656
- api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
39840
+ api-url="${new URL(this.config.basePath, window.location.origin).toString()}"${this.proxyPath
39841
+ ? `
39842
+ proxy-path="${this.proxyPath}"`
39843
+ : ''}
39657
39844
  dataset-id="${metadata.uniqueIdentifier}"
39658
39845
  aggregation="${aggregation}"
39659
39846
  x-property="${xProperty}"
@@ -39672,7 +39859,10 @@ class DataViewWebComponentComponent {
39672
39859
  else if (viewType === 'table') {
39673
39860
  return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
39674
39861
  <gn-dataset-view-table
39675
- api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
39862
+ api-url="${new URL(this.config.basePath, window.location.origin).toString()}"${this.proxyPath
39863
+ ? `
39864
+ proxy-path="${this.proxyPath}"`
39865
+ : ''}
39676
39866
  dataset-id="${metadata.uniqueIdentifier}"
39677
39867
  primary-color="#0f4395"
39678
39868
  secondary-color="#8bc832"
@@ -39685,7 +39875,10 @@ class DataViewWebComponentComponent {
39685
39875
  else {
39686
39876
  return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
39687
39877
  <gn-dataset-view-map
39688
- api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
39878
+ api-url="${new URL(this.config.basePath, window.location.origin).toString()}"${this.proxyPath
39879
+ ? `
39880
+ proxy-path="${this.proxyPath}"`
39881
+ : ''}
39689
39882
  dataset-id="${metadata.uniqueIdentifier}"
39690
39883
  primary-color="#0f4395"
39691
39884
  secondary-color="#8bc832"
@@ -39697,7 +39890,7 @@ class DataViewWebComponentComponent {
39697
39890
  }
39698
39891
  }));
39699
39892
  }
39700
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
39893
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: PROXY_PATH, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
39701
39894
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewWebComponentComponent, isStandalone: true, selector: "gn-ui-data-view-web-component", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n [text]=\"webComponentHtml$ | async\"\n [rows]=\"3\"\n [tooltipText]=\"'tooltip.html.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39702
39895
  }
39703
39896
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
@@ -39706,6 +39899,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39706
39899
  }], ctorParameters: () => [{ type: Configuration, decorators: [{
39707
39900
  type: Inject,
39708
39901
  args: [Configuration]
39902
+ }] }, { type: undefined, decorators: [{
39903
+ type: Optional
39904
+ }, {
39905
+ type: Inject,
39906
+ args: [PROXY_PATH]
39709
39907
  }] }, { type: MdViewFacade }], propDecorators: { viewType: [{
39710
39908
  type: Input
39711
39909
  }] } });
@@ -40026,6 +40224,7 @@ class MapViewComponent {
40026
40224
  set exceedsLimit(value) {
40027
40225
  this.excludeWfs$.next(value);
40028
40226
  }
40227
+ // FIXME the map view component should not need a selectedView
40029
40228
  set selectedView(value) {
40030
40229
  this.selectedView$.next(value);
40031
40230
  }
@@ -43792,6 +43991,9 @@ class RouterService {
43792
43991
  getOrganizationPageRoute() {
43793
43992
  return ROUTER_ROUTE_ORGANIZATION;
43794
43993
  }
43994
+ getDefaultSort() {
43995
+ return SortByEnum.RESOURCE_DATES;
43996
+ }
43795
43997
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$d.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
43796
43998
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
43797
43999
  }
@@ -43952,13 +44154,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
43952
44154
  }], ctorParameters: () => [{ type: i1$3.Store }, { type: RouterService }] });
43953
44155
 
43954
44156
  class RouterEffects {
43955
- constructor(_actions$, _router, _location, facade, routerConfig, fieldsService) {
44157
+ constructor(_actions$, _router, _location, facade, routerConfig, fieldsService, routerService) {
43956
44158
  this._actions$ = _actions$;
43957
44159
  this._router = _router;
43958
44160
  this._location = _location;
43959
44161
  this.facade = facade;
43960
44162
  this.routerConfig = routerConfig;
43961
44163
  this.fieldsService = fieldsService;
44164
+ this.routerService = routerService;
43962
44165
  this.navigate$ = createEffect(() => this._actions$.pipe(ofType(goAction), tap$1(({ path, query: queryParams, queryParamsHandling }) => {
43963
44166
  this._router.navigate([path], {
43964
44167
  queryParams,
@@ -43970,14 +44173,14 @@ class RouterEffects {
43970
44173
  .pipe(map$1((filters) => [searchParams, filters]))), startWith([null, {}]), pairwise(), map$1(([[oldParams, oldFilters], [newParams, newFilters]]) => {
43971
44174
  let sortBy = ROUTE_PARAMS.SORT in newParams
43972
44175
  ? sortByFromString(newParams[ROUTE_PARAMS.SORT])
43973
- : SortByEnum.CHANGE_DATE;
44176
+ : this.routerService.getDefaultSort();
43974
44177
  let pageNumber = ROUTE_PARAMS.PAGE in newParams
43975
44178
  ? parseInt(newParams[ROUTE_PARAMS.PAGE])
43976
44179
  : 1;
43977
44180
  if (oldParams !== null) {
43978
44181
  const oldSort = ROUTE_PARAMS.SORT in oldParams
43979
44182
  ? sortByFromString(oldParams[ROUTE_PARAMS.SORT])
43980
- : SortByEnum.CHANGE_DATE;
44183
+ : this.routerService.getDefaultSort();
43981
44184
  if (JSON.stringify(sortBy) === JSON.stringify(oldSort)) {
43982
44185
  sortBy = null;
43983
44186
  }
@@ -44034,7 +44237,7 @@ class RouterEffects {
44034
44237
  this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
44035
44238
  this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
44036
44239
  }
44037
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$d.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
44240
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$d.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }, { token: RouterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
44038
44241
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
44039
44242
  }
44040
44243
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
@@ -44042,7 +44245,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
44042
44245
  }], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$d.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
44043
44246
  type: Inject,
44044
44247
  args: [ROUTER_CONFIG]
44045
- }] }, { type: FieldsService }] });
44248
+ }] }, { type: FieldsService }, { type: RouterService }] });
44046
44249
 
44047
44250
  class DefaultRouterModule {
44048
44251
  constructor(routerService) {
@@ -44180,5 +44383,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
44180
44383
  * Generated bundle index. Do not edit.
44181
44384
  */
44182
44385
 
44183
- export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DISABLE_AUTH, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetItemComponent, FacetListComponent, FacetsContainerComponent, FavoriteStarComponent, FavoritesService, FeatureCatalogListComponent, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldTopicsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryBoundingBox, getGeometryFromGeoJSON, getGlobalConfig, getIsMobile, getJsonDataItemsProxy, getLayers, getLinkId, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, handleScrollOnNavigation, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, organizationsServiceFactory, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, toLang2, toLang3, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
44386
+ export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DISABLE_AUTH, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetItemComponent, FacetListComponent, FacetsContainerComponent, FavoriteStarComponent, FavoritesService, FeatureCatalogListComponent, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldTopicsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OrganizationsServiceInterface, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PlatformServiceInterface, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StacViewComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryBoundingBox, getGeometryFromGeoJSON, getGlobalConfig, getIsMobile, getJsonDataItemsProxy, getLayers, getLinkId, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, handleScrollOnNavigation, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, organizationsServiceFactory, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, toLang2, toLang3, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
44184
44387
  //# sourceMappingURL=geonetwork-ui.mjs.map