geonetwork-ui 2.7.0-dev.fd871c105 → 2.7.0

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 (91) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -3
  2. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +20 -6
  3. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  4. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  5. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +4 -4
  6. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-topics/form-field-topics.component.mjs +55 -0
  7. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +6 -6
  8. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -2
  9. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +51 -45
  10. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -2
  11. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +24 -17
  12. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  13. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +5 -5
  14. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +8 -4
  15. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +33 -8
  16. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  17. package/esm2022/libs/util/shared/src/lib/utils/scroll.mjs +40 -0
  18. package/esm2022/translations/de.json +25 -23
  19. package/esm2022/translations/en.json +26 -23
  20. package/esm2022/translations/es.json +25 -23
  21. package/esm2022/translations/fr.json +25 -23
  22. package/esm2022/translations/it.json +25 -23
  23. package/esm2022/translations/nl.json +25 -23
  24. package/esm2022/translations/pt.json +25 -23
  25. package/esm2022/translations/sk.json +25 -23
  26. package/fesm2022/geonetwork-ui.mjs +449 -332
  27. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  28. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts +5 -1
  29. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  30. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +6 -2
  31. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  32. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +1 -1
  33. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -0
  34. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  35. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -1
  36. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  37. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-topics/form-field-topics.component.d.ts +20 -0
  38. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-topics/form-field-topics.component.d.ts.map +1 -0
  39. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +1 -1
  40. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  41. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -1
  42. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  43. package/libs/feature/editor/src/lib/fields.config.d.ts +4 -4
  44. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  45. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  46. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +1 -0
  47. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  48. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  49. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts +1 -1
  50. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -1
  51. package/libs/util/shared/src/lib/links/link-utils.d.ts +26 -7
  52. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  53. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  54. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  55. package/libs/util/shared/src/lib/utils/scroll.d.ts +12 -0
  56. package/libs/util/shared/src/lib/utils/scroll.d.ts.map +1 -0
  57. package/package.json +2 -2
  58. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +13 -2
  59. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +17 -6
  60. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +1 -1
  61. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -0
  62. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +4 -4
  63. package/src/libs/feature/editor/src/lib/components/record-form/form-field/{form-field-inspire-field/form-field-inspire-theme.component.html → form-field-topics/form-field-topics.component.html} +6 -6
  64. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-topics/form-field-topics.component.ts +57 -0
  65. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
  66. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +3 -3
  67. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -1
  68. package/src/libs/feature/editor/src/lib/fields.config.ts +51 -45
  69. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -2
  70. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +23 -16
  71. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +5 -1
  72. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +4 -3
  73. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -2
  74. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +1 -4
  75. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +5 -1
  76. package/src/libs/util/shared/src/lib/links/link-utils.ts +32 -7
  77. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  78. package/src/libs/util/shared/src/lib/utils/scroll.ts +48 -0
  79. package/translations/de.json +25 -23
  80. package/translations/en.json +26 -23
  81. package/translations/es.json +25 -23
  82. package/translations/fr.json +25 -23
  83. package/translations/it.json +25 -23
  84. package/translations/nl.json +25 -23
  85. package/translations/pt.json +25 -23
  86. package/translations/sk.json +25 -23
  87. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.mjs +0 -55
  88. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.d.ts +0 -20
  89. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.d.ts.map +0 -1
  90. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.ts +0 -57
  91. /package/src/libs/feature/editor/src/lib/components/record-form/form-field/{form-field-inspire-field/form-field-inspire-theme.component.css → form-field-topics/form-field-topics.component.css} +0 -0
@@ -14,12 +14,14 @@ import * as i1$1 from '@ngx-translate/core';
14
14
  import { TranslateCompiler, TranslateLoader, TranslateDefaultParser, TranslateParser, TranslateService, provideTranslateService, TranslateDirective, TranslatePipe, TranslateModule } from '@ngx-translate/core';
15
15
  import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
16
16
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
17
- import { map as map$1, shareReplay as shareReplay$1, catchError, tap as tap$1, filter, startWith as startWith$1, withLatestFrom, switchMap as switchMap$1, take, mergeMap, delay, distinctUntilChanged, debounceTime, finalize, throttleTime, first as first$1, pairwise, share, defaultIfEmpty, toArray } from 'rxjs/operators';
18
- import { of, map as map$2, lastValueFrom, fromEvent, startWith, shareReplay, 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, filter as filter$1, take as take$1, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, pairwise as pairwise$1 } from 'rxjs';
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';
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';
22
22
  import { CommonModule, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgClass, NgTemplateOutlet, DatePipe } from '@angular/common';
23
+ import * as i1$d from '@angular/router';
24
+ import { Scroll, NavigationEnd, RouteReuseStrategy } from '@angular/router';
23
25
  import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache, TmsEndpoint } from '@camptocamp/ogc-client';
24
26
  import { getLength } from 'ol/sphere';
25
27
  import { LineString, Polygon } from 'ol/geom';
@@ -92,8 +94,6 @@ import { MatTableModule } from '@angular/material/table';
92
94
  import * as i4 from '@angular/material/paginator';
93
95
  import { MatPaginatorIntl, MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
94
96
  import { LetDirective } from '@ngrx/component';
95
- import * as i1$d from '@angular/router';
96
- import { RouteReuseStrategy } from '@angular/router';
97
97
  import axios from 'axios';
98
98
  import * as i1$e from '@angular/platform-browser';
99
99
  import { tablerFolderOpen } from '@ng-icons/tabler-icons';
@@ -18925,26 +18925,6 @@ var de = {
18925
18925
  "editor.record.form.field.topics": "Kategorien",
18926
18926
  "editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
18927
18927
  "editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
18928
- "editor.record.form.inspire.biota": "",
18929
- "editor.record.form.inspire.boundaries": "",
18930
- "editor.record.form.inspire.climatology": "",
18931
- "editor.record.form.inspire.economy": "",
18932
- "editor.record.form.inspire.elevation": "",
18933
- "editor.record.form.inspire.environnement": "",
18934
- "editor.record.form.inspire.farming": "",
18935
- "editor.record.form.inspire.geoscientific": "",
18936
- "editor.record.form.inspire.health": "",
18937
- "editor.record.form.inspire.imagery": "",
18938
- "editor.record.form.inspire.intelligence": "",
18939
- "editor.record.form.inspire.location": "",
18940
- "editor.record.form.inspire.oceans": "",
18941
- "editor.record.form.inspire.placeholder": "",
18942
- "editor.record.form.inspire.planning": "",
18943
- "editor.record.form.inspire.society": "",
18944
- "editor.record.form.inspire.structure": "",
18945
- "editor.record.form.inspire.transportation": "",
18946
- "editor.record.form.inspire.utilities": "",
18947
- "editor.record.form.inspire.waters": "",
18948
18928
  "editor.record.form.keywords.place.placeholder": "",
18949
18929
  "editor.record.form.keywords.place.withoutExtent": "",
18950
18930
  "editor.record.form.keywords.placeholder": "",
@@ -18980,15 +18960,35 @@ var de = {
18980
18960
  "editor.record.form.section.dataManagers.description": "",
18981
18961
  "editor.record.form.section.dataManagers.label": "",
18982
18962
  "editor.record.form.section.geographicalCoverage.label": "",
18983
- "editor.record.form.section.inspire.description": "",
18984
- "editor.record.form.section.inspire.label": "",
18985
18963
  "editor.record.form.section.metadataPointOfContact.description": "",
18986
18964
  "editor.record.form.section.metadataPointOfContact.label": "",
18965
+ "editor.record.form.section.topics.description": "",
18966
+ "editor.record.form.section.topics.label": "",
18987
18967
  "editor.record.form.section.useAndAccessConditions.label": "",
18988
18968
  "editor.record.form.temporalExtents.addDate": "Zeitpunkt",
18989
18969
  "editor.record.form.temporalExtents.addRange": "Zeitraum",
18990
18970
  "editor.record.form.temporalExtents.date": "Datum",
18991
18971
  "editor.record.form.temporalExtents.range": "Datumsbereich",
18972
+ "editor.record.form.topics.inspire.biota": "",
18973
+ "editor.record.form.topics.inspire.boundaries": "",
18974
+ "editor.record.form.topics.inspire.climatology": "",
18975
+ "editor.record.form.topics.inspire.economy": "",
18976
+ "editor.record.form.topics.inspire.elevation": "",
18977
+ "editor.record.form.topics.inspire.environnement": "",
18978
+ "editor.record.form.topics.inspire.farming": "",
18979
+ "editor.record.form.topics.inspire.geoscientific": "",
18980
+ "editor.record.form.topics.inspire.health": "",
18981
+ "editor.record.form.topics.inspire.imagery": "",
18982
+ "editor.record.form.topics.inspire.intelligence": "",
18983
+ "editor.record.form.topics.inspire.location": "",
18984
+ "editor.record.form.topics.inspire.oceans": "",
18985
+ "editor.record.form.topics.inspire.planning": "",
18986
+ "editor.record.form.topics.inspire.society": "",
18987
+ "editor.record.form.topics.inspire.structure": "",
18988
+ "editor.record.form.topics.inspire.transportation": "",
18989
+ "editor.record.form.topics.inspire.utilities": "",
18990
+ "editor.record.form.topics.inspire.waters": "",
18991
+ "editor.record.form.topics.placeholder": "",
18992
18992
  "editor.record.form.updateFrequency.planned": "Dieses Dataset wird regelmäßig aktualisiert.",
18993
18993
  "editor.record.importFromExternalFile.failure.body": "",
18994
18994
  "editor.record.importFromExternalFile.failure.title": "",
@@ -19050,7 +19050,8 @@ var de = {
19050
19050
  "facets.block.title.tag.default": "Stichwort",
19051
19051
  "facets.block.title.th_regions_tree.default": "Regionen",
19052
19052
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
19053
- "favorite.starToggle.label": "Zu Favoriten hinzufügen",
19053
+ "favorite.starToggle.add": "Zu Favoriten hinzufügen",
19054
+ "favorite.starToggle.remove": "Aus Favoriten entfernen",
19054
19055
  "feature.catalog.attribute.code": "Code",
19055
19056
  "feature.catalog.attribute.definition": "Beschreibung",
19056
19057
  "feature.catalog.attribute.name": "Name",
@@ -19263,6 +19264,7 @@ var de = {
19263
19264
  "record.metadata.usage": "Nutzung und Einschränkungen",
19264
19265
  "record.metadata.userFeedbacks": "",
19265
19266
  "record.metadata.userFeedbacks.anonymousUser": "",
19267
+ "record.metadata.userFeedbacks.authDisabled": "",
19266
19268
  "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
19267
19269
  "record.metadata.userFeedbacks.newAnswer.placeholder": "",
19268
19270
  "record.metadata.userFeedbacks.newComment.placeholder": "",
@@ -19575,26 +19577,6 @@ var en = {
19575
19577
  "editor.record.form.field.topics": "Categories",
19576
19578
  "editor.record.form.field.uniqueIdentifier": "Unique identifier",
19577
19579
  "editor.record.form.field.updateFrequency": "Update frequency",
19578
- "editor.record.form.inspire.biota": "Biota",
19579
- "editor.record.form.inspire.boundaries": "Boundaries",
19580
- "editor.record.form.inspire.climatology": "Climatology / Meteorology / Atmosphere",
19581
- "editor.record.form.inspire.economy": "Economy",
19582
- "editor.record.form.inspire.elevation": "Elevation",
19583
- "editor.record.form.inspire.environnement": "Environnement",
19584
- "editor.record.form.inspire.farming": "Farming",
19585
- "editor.record.form.inspire.geoscientific": "Geoscientific Information",
19586
- "editor.record.form.inspire.health": "Health",
19587
- "editor.record.form.inspire.imagery": "Imagery / Base Maps / Earth Cover",
19588
- "editor.record.form.inspire.intelligence": "Intelligence / Military",
19589
- "editor.record.form.inspire.location": "Location",
19590
- "editor.record.form.inspire.oceans": "Oceans",
19591
- "editor.record.form.inspire.placeholder": "Select an INSPIRE theme",
19592
- "editor.record.form.inspire.planning": "Planning / Cadastre",
19593
- "editor.record.form.inspire.society": "Society",
19594
- "editor.record.form.inspire.structure": "Structure",
19595
- "editor.record.form.inspire.transportation": "Transportation",
19596
- "editor.record.form.inspire.utilities": "Utilities / Communication",
19597
- "editor.record.form.inspire.waters": "Inland Waters",
19598
19580
  "editor.record.form.keywords.place.placeholder": "Search for place keywords",
19599
19581
  "editor.record.form.keywords.place.withoutExtent": "This keyword is not associated with any geographical extent",
19600
19582
  "editor.record.form.keywords.placeholder": "Select a keyword",
@@ -19630,15 +19612,36 @@ var en = {
19630
19612
  "editor.record.form.section.dataManagers.description": "The data managers are responsible for the data",
19631
19613
  "editor.record.form.section.dataManagers.label": "Data managers",
19632
19614
  "editor.record.form.section.geographicalCoverage.label": "Geographical coverage",
19633
- "editor.record.form.section.inspire.description": "Appropriate INSPIRE themes help users find the dataset",
19634
- "editor.record.form.section.inspire.label": "INSPIRE themes",
19635
19615
  "editor.record.form.section.metadataPointOfContact.description": "This information concerns the metadata",
19636
19616
  "editor.record.form.section.metadataPointOfContact.label": "Metadata point of contact",
19617
+ "editor.record.form.section.topics.description": "Topics help to better group datasets",
19618
+ "editor.record.form.section.topics.label": "Topics",
19637
19619
  "editor.record.form.section.useAndAccessConditions.label": "Use and access conditions",
19638
19620
  "editor.record.form.temporalExtents.addDate": "Time instant",
19639
19621
  "editor.record.form.temporalExtents.addRange": "Time period",
19640
19622
  "editor.record.form.temporalExtents.date": "Date",
19641
19623
  "editor.record.form.temporalExtents.range": "Date range",
19624
+ "editor.record.form.topics.inspire.biota": "Biota",
19625
+ "editor.record.form.topics.inspire.boundaries": "Boundaries",
19626
+ "editor.record.form.topics.inspire.climatology": "Climatology / Meteorology / Atmosphere",
19627
+ "editor.record.form.topics.inspire.economy": "Economy",
19628
+ "editor.record.form.topics.inspire.elevation": "Elevation",
19629
+ "editor.record.form.topics.inspire.environnement": "Environnement",
19630
+ "editor.record.form.topics.inspire.farming": "Farming",
19631
+ "editor.record.form.topics.inspire.geoscientific": "Geoscientific Information",
19632
+ "editor.record.form.topics.inspire.health": "Health",
19633
+ "editor.record.form.topics.inspire.imagery": "Imagery / Base Maps / Earth Cover",
19634
+ "editor.record.form.topics.inspire.intelligence": "Intelligence / Military",
19635
+ "editor.record.form.topics.inspire.location": "Location",
19636
+ "editor.record.form.topics.inspire.oceans": "Oceans",
19637
+ "editor.record.form.topics.inspire.placeholder": "Select an INSPIRE theme",
19638
+ "editor.record.form.topics.inspire.planning": "Planning / Cadastre",
19639
+ "editor.record.form.topics.inspire.society": "Society",
19640
+ "editor.record.form.topics.inspire.structure": "Structure",
19641
+ "editor.record.form.topics.inspire.transportation": "Transportation",
19642
+ "editor.record.form.topics.inspire.utilities": "Utilities / Communication",
19643
+ "editor.record.form.topics.inspire.waters": "Inland Waters",
19644
+ "editor.record.form.topics.placeholder": "Select one or several topics",
19642
19645
  "editor.record.form.updateFrequency.planned": "This dataset is updated regularly",
19643
19646
  "editor.record.importFromExternalFile.failure.body": "Failure",
19644
19647
  "editor.record.importFromExternalFile.failure.title": "The dataset import failed: ",
@@ -19700,7 +19703,8 @@ var en = {
19700
19703
  "facets.block.title.tag.default": "Tag",
19701
19704
  "facets.block.title.th_regions_tree.default": "Regions",
19702
19705
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
19703
- "favorite.starToggle.label": "Add to favorites",
19706
+ "favorite.starToggle.add": "Add to favorites",
19707
+ "favorite.starToggle.remove": "Remove from favorites",
19704
19708
  "feature.catalog.attribute.code": "Code",
19705
19709
  "feature.catalog.attribute.definition": "Description",
19706
19710
  "feature.catalog.attribute.name": "Name",
@@ -19913,6 +19917,7 @@ var en = {
19913
19917
  "record.metadata.usage": "License and Conditions",
19914
19918
  "record.metadata.userFeedbacks": "Questions / Answers",
19915
19919
  "record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
19920
+ "record.metadata.userFeedbacks.authDisabled": "User comments are disabled.",
19916
19921
  "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
19917
19922
  "record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
19918
19923
  "record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
@@ -20225,26 +20230,6 @@ var es = {
20225
20230
  "editor.record.form.field.topics": "Categorías",
20226
20231
  "editor.record.form.field.uniqueIdentifier": "",
20227
20232
  "editor.record.form.field.updateFrequency": "",
20228
- "editor.record.form.inspire.biota": "",
20229
- "editor.record.form.inspire.boundaries": "",
20230
- "editor.record.form.inspire.climatology": "",
20231
- "editor.record.form.inspire.economy": "",
20232
- "editor.record.form.inspire.elevation": "",
20233
- "editor.record.form.inspire.environnement": "",
20234
- "editor.record.form.inspire.farming": "",
20235
- "editor.record.form.inspire.geoscientific": "",
20236
- "editor.record.form.inspire.health": "",
20237
- "editor.record.form.inspire.imagery": "",
20238
- "editor.record.form.inspire.intelligence": "",
20239
- "editor.record.form.inspire.location": "",
20240
- "editor.record.form.inspire.oceans": "",
20241
- "editor.record.form.inspire.placeholder": "",
20242
- "editor.record.form.inspire.planning": "",
20243
- "editor.record.form.inspire.society": "",
20244
- "editor.record.form.inspire.structure": "",
20245
- "editor.record.form.inspire.transportation": "",
20246
- "editor.record.form.inspire.utilities": "",
20247
- "editor.record.form.inspire.waters": "",
20248
20233
  "editor.record.form.keywords.place.placeholder": "",
20249
20234
  "editor.record.form.keywords.place.withoutExtent": "",
20250
20235
  "editor.record.form.keywords.placeholder": "",
@@ -20280,15 +20265,35 @@ var es = {
20280
20265
  "editor.record.form.section.dataManagers.description": "",
20281
20266
  "editor.record.form.section.dataManagers.label": "",
20282
20267
  "editor.record.form.section.geographicalCoverage.label": "",
20283
- "editor.record.form.section.inspire.description": "",
20284
- "editor.record.form.section.inspire.label": "",
20285
20268
  "editor.record.form.section.metadataPointOfContact.description": "",
20286
20269
  "editor.record.form.section.metadataPointOfContact.label": "",
20270
+ "editor.record.form.section.topics.description": "",
20271
+ "editor.record.form.section.topics.label": "",
20287
20272
  "editor.record.form.section.useAndAccessConditions.label": "",
20288
20273
  "editor.record.form.temporalExtents.addDate": "",
20289
20274
  "editor.record.form.temporalExtents.addRange": "",
20290
20275
  "editor.record.form.temporalExtents.date": "",
20291
20276
  "editor.record.form.temporalExtents.range": "",
20277
+ "editor.record.form.topics.inspire.biota": "",
20278
+ "editor.record.form.topics.inspire.boundaries": "",
20279
+ "editor.record.form.topics.inspire.climatology": "",
20280
+ "editor.record.form.topics.inspire.economy": "",
20281
+ "editor.record.form.topics.inspire.elevation": "",
20282
+ "editor.record.form.topics.inspire.environnement": "",
20283
+ "editor.record.form.topics.inspire.farming": "",
20284
+ "editor.record.form.topics.inspire.geoscientific": "",
20285
+ "editor.record.form.topics.inspire.health": "",
20286
+ "editor.record.form.topics.inspire.imagery": "",
20287
+ "editor.record.form.topics.inspire.intelligence": "",
20288
+ "editor.record.form.topics.inspire.location": "",
20289
+ "editor.record.form.topics.inspire.oceans": "",
20290
+ "editor.record.form.topics.inspire.planning": "",
20291
+ "editor.record.form.topics.inspire.society": "",
20292
+ "editor.record.form.topics.inspire.structure": "",
20293
+ "editor.record.form.topics.inspire.transportation": "",
20294
+ "editor.record.form.topics.inspire.utilities": "",
20295
+ "editor.record.form.topics.inspire.waters": "",
20296
+ "editor.record.form.topics.placeholder": "",
20292
20297
  "editor.record.form.updateFrequency.planned": "Este conjunto de datos se actualiza regularmente.",
20293
20298
  "editor.record.importFromExternalFile.failure.body": "",
20294
20299
  "editor.record.importFromExternalFile.failure.title": "",
@@ -20350,7 +20355,8 @@ var es = {
20350
20355
  "facets.block.title.tag.default": "",
20351
20356
  "facets.block.title.th_regions_tree.default": "",
20352
20357
  "favorite.not.authenticated.tooltip": "",
20353
- "favorite.starToggle.label": "Añadir a favoritos",
20358
+ "favorite.starToggle.add": "Añadir a favoritos",
20359
+ "favorite.starToggle.remove": "Eliminar de favoritos",
20354
20360
  "feature.catalog.attribute.code": "Código",
20355
20361
  "feature.catalog.attribute.definition": "Descripción",
20356
20362
  "feature.catalog.attribute.name": "Nombre",
@@ -20563,6 +20569,7 @@ var es = {
20563
20569
  "record.metadata.usage": "",
20564
20570
  "record.metadata.userFeedbacks": "",
20565
20571
  "record.metadata.userFeedbacks.anonymousUser": "",
20572
+ "record.metadata.userFeedbacks.authDisabled": "",
20566
20573
  "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
20567
20574
  "record.metadata.userFeedbacks.newAnswer.placeholder": "",
20568
20575
  "record.metadata.userFeedbacks.newComment.placeholder": "",
@@ -20875,26 +20882,6 @@ var fr = {
20875
20882
  "editor.record.form.field.topics": "Thèmes",
20876
20883
  "editor.record.form.field.uniqueIdentifier": "Identifiant unique",
20877
20884
  "editor.record.form.field.updateFrequency": "Fréquence de mise à jour",
20878
- "editor.record.form.inspire.biota": "Biote",
20879
- "editor.record.form.inspire.boundaries": "Limites",
20880
- "editor.record.form.inspire.climatology": "Climatologie / Météorologie / Atmosphère",
20881
- "editor.record.form.inspire.economy": "Économie",
20882
- "editor.record.form.inspire.elevation": "Altitude",
20883
- "editor.record.form.inspire.environnement": "Environnement",
20884
- "editor.record.form.inspire.farming": "Agriculture",
20885
- "editor.record.form.inspire.geoscientific": "Informations géoscientifiques",
20886
- "editor.record.form.inspire.health": "Santé",
20887
- "editor.record.form.inspire.imagery": "Imagerie/Cartes de base/Occupation des terres",
20888
- "editor.record.form.inspire.intelligence": "Renseignement/Secteur militaire",
20889
- "editor.record.form.inspire.location": "Localisation",
20890
- "editor.record.form.inspire.oceans": "Océans",
20891
- "editor.record.form.inspire.placeholder": "Sélectionnez un thème INSPIRE",
20892
- "editor.record.form.inspire.planning": "Planification/Cadastre",
20893
- "editor.record.form.inspire.society": "Société",
20894
- "editor.record.form.inspire.structure": "Structure",
20895
- "editor.record.form.inspire.transportation": "Transport",
20896
- "editor.record.form.inspire.utilities": "Services d’utilité publique/Communication",
20897
- "editor.record.form.inspire.waters": "Eaux intérieures",
20898
20885
  "editor.record.form.keywords.place.placeholder": "Rechercher une localisation par mot-clé",
20899
20886
  "editor.record.form.keywords.place.withoutExtent": "Ce mot-clé n'a pas de localisation géographique associée",
20900
20887
  "editor.record.form.keywords.placeholder": "Sélectionnez un mot-clé",
@@ -20930,15 +20917,35 @@ var fr = {
20930
20917
  "editor.record.form.section.dataManagers.description": "Cette information concerne la donnée",
20931
20918
  "editor.record.form.section.dataManagers.label": "Responsables de la donnée",
20932
20919
  "editor.record.form.section.geographicalCoverage.label": "Couverture géographique",
20933
- "editor.record.form.section.inspire.description": "Des thèmes appropriés aident à trouver le jeu de données",
20934
- "editor.record.form.section.inspire.label": "Thèmes INSPIRE",
20935
20920
  "editor.record.form.section.metadataPointOfContact.description": "Cette information concerne la métadonnée",
20936
20921
  "editor.record.form.section.metadataPointOfContact.label": "Point de contact de la métadonnée",
20922
+ "editor.record.form.section.topics.description": "Les thèmes permettent de regrouper plus facilement des jeux de données",
20923
+ "editor.record.form.section.topics.label": "Thèmes",
20937
20924
  "editor.record.form.section.useAndAccessConditions.label": "Conditions d'accès et d'utilisation",
20938
20925
  "editor.record.form.temporalExtents.addDate": "Date déterminée",
20939
20926
  "editor.record.form.temporalExtents.addRange": "Période de temps",
20940
20927
  "editor.record.form.temporalExtents.date": "Date concernée",
20941
20928
  "editor.record.form.temporalExtents.range": "Période concernée",
20929
+ "editor.record.form.topics.inspire.biota": "Biote",
20930
+ "editor.record.form.topics.inspire.boundaries": "Limites",
20931
+ "editor.record.form.topics.inspire.climatology": "Climatologie/Météorologie/Atmosphère",
20932
+ "editor.record.form.topics.inspire.economy": "Économie",
20933
+ "editor.record.form.topics.inspire.elevation": "Altitude",
20934
+ "editor.record.form.topics.inspire.environnement": "Environnement",
20935
+ "editor.record.form.topics.inspire.farming": "Agriculture",
20936
+ "editor.record.form.topics.inspire.geoscientific": "Informations géoscientifiques",
20937
+ "editor.record.form.topics.inspire.health": "Santé",
20938
+ "editor.record.form.topics.inspire.imagery": "Imagerie/Cartes de base/Occupation des terres",
20939
+ "editor.record.form.topics.inspire.intelligence": "Renseignement/Secteur militaire",
20940
+ "editor.record.form.topics.inspire.location": "Localisation",
20941
+ "editor.record.form.topics.inspire.oceans": "Océans",
20942
+ "editor.record.form.topics.inspire.planning": "Planification/Cadastre",
20943
+ "editor.record.form.topics.inspire.society": "Société",
20944
+ "editor.record.form.topics.inspire.structure": "Structure",
20945
+ "editor.record.form.topics.inspire.transportation": "Transport",
20946
+ "editor.record.form.topics.inspire.utilities": "Services d’utilité publique/Communication",
20947
+ "editor.record.form.topics.inspire.waters": "Eaux intérieures",
20948
+ "editor.record.form.topics.placeholder": "Sélectionnez un ou plusieurs thèmes",
20942
20949
  "editor.record.form.updateFrequency.planned": "Ce jeu de données est mis à jour régulièrement",
20943
20950
  "editor.record.importFromExternalFile.failure.body": "Une erreur est survenue pendant l'import du jeu de données : ",
20944
20951
  "editor.record.importFromExternalFile.failure.title": "Erreur",
@@ -21000,7 +21007,8 @@ var fr = {
21000
21007
  "facets.block.title.tag.default": "Tag",
21001
21008
  "facets.block.title.th_regions_tree.default": "Régions",
21002
21009
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
21003
- "favorite.starToggle.label": "Ajouter aux favoris",
21010
+ "favorite.starToggle.add": "Ajouter aux favoris",
21011
+ "favorite.starToggle.remove": "Retirer des favoris",
21004
21012
  "feature.catalog.attribute.code": "Code",
21005
21013
  "feature.catalog.attribute.definition": "Description",
21006
21014
  "feature.catalog.attribute.name": "Nom",
@@ -21213,6 +21221,7 @@ var fr = {
21213
21221
  "record.metadata.usage": "Licences et conditions d'utilisation",
21214
21222
  "record.metadata.userFeedbacks": "Questions / Réponses",
21215
21223
  "record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
21224
+ "record.metadata.userFeedbacks.authDisabled": "Les commentaires sont désactivés.",
21216
21225
  "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
21217
21226
  "record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
21218
21227
  "record.metadata.userFeedbacks.newComment.placeholder": "Rédigez votre commentaire ici...",
@@ -21525,26 +21534,6 @@ var it = {
21525
21534
  "editor.record.form.field.topics": "",
21526
21535
  "editor.record.form.field.uniqueIdentifier": "Identificatore univoco",
21527
21536
  "editor.record.form.field.updateFrequency": "Frequenza di aggiornamento",
21528
- "editor.record.form.inspire.biota": "",
21529
- "editor.record.form.inspire.boundaries": "",
21530
- "editor.record.form.inspire.climatology": "",
21531
- "editor.record.form.inspire.economy": "",
21532
- "editor.record.form.inspire.elevation": "",
21533
- "editor.record.form.inspire.environnement": "",
21534
- "editor.record.form.inspire.farming": "",
21535
- "editor.record.form.inspire.geoscientific": "",
21536
- "editor.record.form.inspire.health": "",
21537
- "editor.record.form.inspire.imagery": "",
21538
- "editor.record.form.inspire.intelligence": "",
21539
- "editor.record.form.inspire.location": "",
21540
- "editor.record.form.inspire.oceans": "",
21541
- "editor.record.form.inspire.placeholder": "",
21542
- "editor.record.form.inspire.planning": "",
21543
- "editor.record.form.inspire.society": "",
21544
- "editor.record.form.inspire.structure": "",
21545
- "editor.record.form.inspire.transportation": "",
21546
- "editor.record.form.inspire.utilities": "",
21547
- "editor.record.form.inspire.waters": "",
21548
21537
  "editor.record.form.keywords.place.placeholder": "Cerca una posizione per parola chiave",
21549
21538
  "editor.record.form.keywords.place.withoutExtent": "Questa parola chiave non ha una posizione geografica associata",
21550
21539
  "editor.record.form.keywords.placeholder": "Seleziona una parola chiave",
@@ -21580,15 +21569,35 @@ var it = {
21580
21569
  "editor.record.form.section.dataManagers.description": "Queste informazioni riguardano i dati",
21581
21570
  "editor.record.form.section.dataManagers.label": "Gestori dei dati",
21582
21571
  "editor.record.form.section.geographicalCoverage.label": "Copertura geografica",
21583
- "editor.record.form.section.inspire.description": "",
21584
- "editor.record.form.section.inspire.label": "",
21585
21572
  "editor.record.form.section.metadataPointOfContact.description": "Queste informazioni riguardano i metadati",
21586
21573
  "editor.record.form.section.metadataPointOfContact.label": "Punto di contatto dei metadati",
21574
+ "editor.record.form.section.topics.description": "",
21575
+ "editor.record.form.section.topics.label": "",
21587
21576
  "editor.record.form.section.useAndAccessConditions.label": "Condizioni di accesso e utilizzo",
21588
21577
  "editor.record.form.temporalExtents.addDate": "Data specificata",
21589
21578
  "editor.record.form.temporalExtents.addRange": "Periodo di tempo",
21590
21579
  "editor.record.form.temporalExtents.date": "Data rilevante",
21591
21580
  "editor.record.form.temporalExtents.range": "Periodo interessato",
21581
+ "editor.record.form.topics.inspire.biota": "",
21582
+ "editor.record.form.topics.inspire.boundaries": "",
21583
+ "editor.record.form.topics.inspire.climatology": "",
21584
+ "editor.record.form.topics.inspire.economy": "",
21585
+ "editor.record.form.topics.inspire.elevation": "",
21586
+ "editor.record.form.topics.inspire.environnement": "",
21587
+ "editor.record.form.topics.inspire.farming": "",
21588
+ "editor.record.form.topics.inspire.geoscientific": "",
21589
+ "editor.record.form.topics.inspire.health": "",
21590
+ "editor.record.form.topics.inspire.imagery": "",
21591
+ "editor.record.form.topics.inspire.intelligence": "",
21592
+ "editor.record.form.topics.inspire.location": "",
21593
+ "editor.record.form.topics.inspire.oceans": "",
21594
+ "editor.record.form.topics.inspire.planning": "",
21595
+ "editor.record.form.topics.inspire.society": "",
21596
+ "editor.record.form.topics.inspire.structure": "",
21597
+ "editor.record.form.topics.inspire.transportation": "",
21598
+ "editor.record.form.topics.inspire.utilities": "",
21599
+ "editor.record.form.topics.inspire.waters": "",
21600
+ "editor.record.form.topics.placeholder": "",
21592
21601
  "editor.record.form.updateFrequency.planned": "Questi dati dovrebbero essere aggiornati regolarmente",
21593
21602
  "editor.record.importFromExternalFile.failure.body": "Ha successo un'errore durante l'importazione del dataset: ",
21594
21603
  "editor.record.importFromExternalFile.failure.title": "Errore",
@@ -21650,7 +21659,8 @@ var it = {
21650
21659
  "facets.block.title.tag.default": "Tag",
21651
21660
  "facets.block.title.th_regions_tree.default": "Regioni",
21652
21661
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
21653
- "favorite.starToggle.label": "",
21662
+ "favorite.starToggle.add": "Aggiungi ai preferiti",
21663
+ "favorite.starToggle.remove": "Rimuovi dai preferiti",
21654
21664
  "feature.catalog.attribute.code": "Codice",
21655
21665
  "feature.catalog.attribute.definition": "Descrizione",
21656
21666
  "feature.catalog.attribute.name": "Nome",
@@ -21863,6 +21873,7 @@ var it = {
21863
21873
  "record.metadata.usage": "Licenze e limiti di utilizzo",
21864
21874
  "record.metadata.userFeedbacks": "Domande / Risposte",
21865
21875
  "record.metadata.userFeedbacks.anonymousUser": "Per pubblicare un commento, effettua il login.",
21876
+ "record.metadata.userFeedbacks.authDisabled": "",
21866
21877
  "record.metadata.userFeedbacks.newAnswer.buttonTitle": "Pubblica",
21867
21878
  "record.metadata.userFeedbacks.newAnswer.placeholder": "Risponde...",
21868
21879
  "record.metadata.userFeedbacks.newComment.placeholder": "Scrive qui il suo commento...",
@@ -22175,26 +22186,6 @@ var nl = {
22175
22186
  "editor.record.form.field.topics": "",
22176
22187
  "editor.record.form.field.uniqueIdentifier": "",
22177
22188
  "editor.record.form.field.updateFrequency": "",
22178
- "editor.record.form.inspire.biota": "",
22179
- "editor.record.form.inspire.boundaries": "",
22180
- "editor.record.form.inspire.climatology": "",
22181
- "editor.record.form.inspire.economy": "",
22182
- "editor.record.form.inspire.elevation": "",
22183
- "editor.record.form.inspire.environnement": "",
22184
- "editor.record.form.inspire.farming": "",
22185
- "editor.record.form.inspire.geoscientific": "",
22186
- "editor.record.form.inspire.health": "",
22187
- "editor.record.form.inspire.imagery": "",
22188
- "editor.record.form.inspire.intelligence": "",
22189
- "editor.record.form.inspire.location": "",
22190
- "editor.record.form.inspire.oceans": "",
22191
- "editor.record.form.inspire.placeholder": "",
22192
- "editor.record.form.inspire.planning": "",
22193
- "editor.record.form.inspire.society": "",
22194
- "editor.record.form.inspire.structure": "",
22195
- "editor.record.form.inspire.transportation": "",
22196
- "editor.record.form.inspire.utilities": "",
22197
- "editor.record.form.inspire.waters": "",
22198
22189
  "editor.record.form.keywords.place.placeholder": "",
22199
22190
  "editor.record.form.keywords.place.withoutExtent": "",
22200
22191
  "editor.record.form.keywords.placeholder": "",
@@ -22230,15 +22221,35 @@ var nl = {
22230
22221
  "editor.record.form.section.dataManagers.description": "",
22231
22222
  "editor.record.form.section.dataManagers.label": "",
22232
22223
  "editor.record.form.section.geographicalCoverage.label": "",
22233
- "editor.record.form.section.inspire.description": "",
22234
- "editor.record.form.section.inspire.label": "",
22235
22224
  "editor.record.form.section.metadataPointOfContact.description": "",
22236
22225
  "editor.record.form.section.metadataPointOfContact.label": "",
22226
+ "editor.record.form.section.topics.description": "",
22227
+ "editor.record.form.section.topics.label": "",
22237
22228
  "editor.record.form.section.useAndAccessConditions.label": "",
22238
22229
  "editor.record.form.temporalExtents.addDate": "",
22239
22230
  "editor.record.form.temporalExtents.addRange": "",
22240
22231
  "editor.record.form.temporalExtents.date": "",
22241
22232
  "editor.record.form.temporalExtents.range": "",
22233
+ "editor.record.form.topics.inspire.biota": "",
22234
+ "editor.record.form.topics.inspire.boundaries": "",
22235
+ "editor.record.form.topics.inspire.climatology": "",
22236
+ "editor.record.form.topics.inspire.economy": "",
22237
+ "editor.record.form.topics.inspire.elevation": "",
22238
+ "editor.record.form.topics.inspire.environnement": "",
22239
+ "editor.record.form.topics.inspire.farming": "",
22240
+ "editor.record.form.topics.inspire.geoscientific": "",
22241
+ "editor.record.form.topics.inspire.health": "",
22242
+ "editor.record.form.topics.inspire.imagery": "",
22243
+ "editor.record.form.topics.inspire.intelligence": "",
22244
+ "editor.record.form.topics.inspire.location": "",
22245
+ "editor.record.form.topics.inspire.oceans": "",
22246
+ "editor.record.form.topics.inspire.planning": "",
22247
+ "editor.record.form.topics.inspire.society": "",
22248
+ "editor.record.form.topics.inspire.structure": "",
22249
+ "editor.record.form.topics.inspire.transportation": "",
22250
+ "editor.record.form.topics.inspire.utilities": "",
22251
+ "editor.record.form.topics.inspire.waters": "",
22252
+ "editor.record.form.topics.placeholder": "",
22242
22253
  "editor.record.form.updateFrequency.planned": "Deze dataset wordt regelmatig bijgewerkt.",
22243
22254
  "editor.record.importFromExternalFile.failure.body": "",
22244
22255
  "editor.record.importFromExternalFile.failure.title": "",
@@ -22300,7 +22311,8 @@ var nl = {
22300
22311
  "facets.block.title.tag.default": "",
22301
22312
  "facets.block.title.th_regions_tree.default": "",
22302
22313
  "favorite.not.authenticated.tooltip": "",
22303
- "favorite.starToggle.label": "",
22314
+ "favorite.starToggle.add": "Toevoegen aan favorieten",
22315
+ "favorite.starToggle.remove": "Verwijderen uit favorieten",
22304
22316
  "feature.catalog.attribute.code": "Code",
22305
22317
  "feature.catalog.attribute.definition": "Beschrijving",
22306
22318
  "feature.catalog.attribute.name": "Naam",
@@ -22513,6 +22525,7 @@ var nl = {
22513
22525
  "record.metadata.usage": "",
22514
22526
  "record.metadata.userFeedbacks": "",
22515
22527
  "record.metadata.userFeedbacks.anonymousUser": "",
22528
+ "record.metadata.userFeedbacks.authDisabled": "",
22516
22529
  "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
22517
22530
  "record.metadata.userFeedbacks.newAnswer.placeholder": "",
22518
22531
  "record.metadata.userFeedbacks.newComment.placeholder": "",
@@ -22825,26 +22838,6 @@ var pt = {
22825
22838
  "editor.record.form.field.topics": "",
22826
22839
  "editor.record.form.field.uniqueIdentifier": "",
22827
22840
  "editor.record.form.field.updateFrequency": "",
22828
- "editor.record.form.inspire.biota": "",
22829
- "editor.record.form.inspire.boundaries": "",
22830
- "editor.record.form.inspire.climatology": "",
22831
- "editor.record.form.inspire.economy": "",
22832
- "editor.record.form.inspire.elevation": "",
22833
- "editor.record.form.inspire.environnement": "",
22834
- "editor.record.form.inspire.farming": "",
22835
- "editor.record.form.inspire.geoscientific": "",
22836
- "editor.record.form.inspire.health": "",
22837
- "editor.record.form.inspire.imagery": "",
22838
- "editor.record.form.inspire.intelligence": "",
22839
- "editor.record.form.inspire.location": "",
22840
- "editor.record.form.inspire.oceans": "",
22841
- "editor.record.form.inspire.placeholder": "",
22842
- "editor.record.form.inspire.planning": "",
22843
- "editor.record.form.inspire.society": "",
22844
- "editor.record.form.inspire.structure": "",
22845
- "editor.record.form.inspire.transportation": "",
22846
- "editor.record.form.inspire.utilities": "",
22847
- "editor.record.form.inspire.waters": "",
22848
22841
  "editor.record.form.keywords.place.placeholder": "",
22849
22842
  "editor.record.form.keywords.place.withoutExtent": "",
22850
22843
  "editor.record.form.keywords.placeholder": "",
@@ -22880,15 +22873,35 @@ var pt = {
22880
22873
  "editor.record.form.section.dataManagers.description": "",
22881
22874
  "editor.record.form.section.dataManagers.label": "",
22882
22875
  "editor.record.form.section.geographicalCoverage.label": "",
22883
- "editor.record.form.section.inspire.description": "",
22884
- "editor.record.form.section.inspire.label": "",
22885
22876
  "editor.record.form.section.metadataPointOfContact.description": "",
22886
22877
  "editor.record.form.section.metadataPointOfContact.label": "",
22878
+ "editor.record.form.section.topics.description": "",
22879
+ "editor.record.form.section.topics.label": "",
22887
22880
  "editor.record.form.section.useAndAccessConditions.label": "",
22888
22881
  "editor.record.form.temporalExtents.addDate": "",
22889
22882
  "editor.record.form.temporalExtents.addRange": "",
22890
22883
  "editor.record.form.temporalExtents.date": "",
22891
22884
  "editor.record.form.temporalExtents.range": "",
22885
+ "editor.record.form.topics.inspire.biota": "",
22886
+ "editor.record.form.topics.inspire.boundaries": "",
22887
+ "editor.record.form.topics.inspire.climatology": "",
22888
+ "editor.record.form.topics.inspire.economy": "",
22889
+ "editor.record.form.topics.inspire.elevation": "",
22890
+ "editor.record.form.topics.inspire.environnement": "",
22891
+ "editor.record.form.topics.inspire.farming": "",
22892
+ "editor.record.form.topics.inspire.geoscientific": "",
22893
+ "editor.record.form.topics.inspire.health": "",
22894
+ "editor.record.form.topics.inspire.imagery": "",
22895
+ "editor.record.form.topics.inspire.intelligence": "",
22896
+ "editor.record.form.topics.inspire.location": "",
22897
+ "editor.record.form.topics.inspire.oceans": "",
22898
+ "editor.record.form.topics.inspire.planning": "",
22899
+ "editor.record.form.topics.inspire.society": "",
22900
+ "editor.record.form.topics.inspire.structure": "",
22901
+ "editor.record.form.topics.inspire.transportation": "",
22902
+ "editor.record.form.topics.inspire.utilities": "",
22903
+ "editor.record.form.topics.inspire.waters": "",
22904
+ "editor.record.form.topics.placeholder": "",
22892
22905
  "editor.record.form.updateFrequency.planned": "Este conjunto de dados é atualizado regularmente.",
22893
22906
  "editor.record.importFromExternalFile.failure.body": "",
22894
22907
  "editor.record.importFromExternalFile.failure.title": "",
@@ -22950,7 +22963,8 @@ var pt = {
22950
22963
  "facets.block.title.tag.default": "",
22951
22964
  "facets.block.title.th_regions_tree.default": "",
22952
22965
  "favorite.not.authenticated.tooltip": "",
22953
- "favorite.starToggle.label": "",
22966
+ "favorite.starToggle.add": "Adicionar aos favoritos",
22967
+ "favorite.starToggle.remove": "Remover dos favoritos",
22954
22968
  "feature.catalog.attribute.code": "Código",
22955
22969
  "feature.catalog.attribute.definition": "Descrição",
22956
22970
  "feature.catalog.attribute.name": "Nome",
@@ -23163,6 +23177,7 @@ var pt = {
23163
23177
  "record.metadata.usage": "",
23164
23178
  "record.metadata.userFeedbacks": "",
23165
23179
  "record.metadata.userFeedbacks.anonymousUser": "",
23180
+ "record.metadata.userFeedbacks.authDisabled": "",
23166
23181
  "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
23167
23182
  "record.metadata.userFeedbacks.newAnswer.placeholder": "",
23168
23183
  "record.metadata.userFeedbacks.newComment.placeholder": "",
@@ -23475,26 +23490,6 @@ var sk = {
23475
23490
  "editor.record.form.field.topics": "",
23476
23491
  "editor.record.form.field.uniqueIdentifier": "",
23477
23492
  "editor.record.form.field.updateFrequency": "",
23478
- "editor.record.form.inspire.biota": "",
23479
- "editor.record.form.inspire.boundaries": "",
23480
- "editor.record.form.inspire.climatology": "",
23481
- "editor.record.form.inspire.economy": "",
23482
- "editor.record.form.inspire.elevation": "",
23483
- "editor.record.form.inspire.environnement": "",
23484
- "editor.record.form.inspire.farming": "",
23485
- "editor.record.form.inspire.geoscientific": "",
23486
- "editor.record.form.inspire.health": "",
23487
- "editor.record.form.inspire.imagery": "",
23488
- "editor.record.form.inspire.intelligence": "",
23489
- "editor.record.form.inspire.location": "",
23490
- "editor.record.form.inspire.oceans": "",
23491
- "editor.record.form.inspire.placeholder": "",
23492
- "editor.record.form.inspire.planning": "",
23493
- "editor.record.form.inspire.society": "",
23494
- "editor.record.form.inspire.structure": "",
23495
- "editor.record.form.inspire.transportation": "",
23496
- "editor.record.form.inspire.utilities": "",
23497
- "editor.record.form.inspire.waters": "",
23498
23493
  "editor.record.form.keywords.place.placeholder": "",
23499
23494
  "editor.record.form.keywords.place.withoutExtent": "",
23500
23495
  "editor.record.form.keywords.placeholder": "",
@@ -23530,15 +23525,35 @@ var sk = {
23530
23525
  "editor.record.form.section.dataManagers.description": "",
23531
23526
  "editor.record.form.section.dataManagers.label": "",
23532
23527
  "editor.record.form.section.geographicalCoverage.label": "",
23533
- "editor.record.form.section.inspire.description": "",
23534
- "editor.record.form.section.inspire.label": "",
23535
23528
  "editor.record.form.section.metadataPointOfContact.description": "",
23536
23529
  "editor.record.form.section.metadataPointOfContact.label": "",
23530
+ "editor.record.form.section.topics.description": "",
23531
+ "editor.record.form.section.topics.label": "",
23537
23532
  "editor.record.form.section.useAndAccessConditions.label": "",
23538
23533
  "editor.record.form.temporalExtents.addDate": "",
23539
23534
  "editor.record.form.temporalExtents.addRange": "",
23540
23535
  "editor.record.form.temporalExtents.date": "",
23541
23536
  "editor.record.form.temporalExtents.range": "",
23537
+ "editor.record.form.topics.inspire.biota": "",
23538
+ "editor.record.form.topics.inspire.boundaries": "",
23539
+ "editor.record.form.topics.inspire.climatology": "",
23540
+ "editor.record.form.topics.inspire.economy": "",
23541
+ "editor.record.form.topics.inspire.elevation": "",
23542
+ "editor.record.form.topics.inspire.environnement": "",
23543
+ "editor.record.form.topics.inspire.farming": "",
23544
+ "editor.record.form.topics.inspire.geoscientific": "",
23545
+ "editor.record.form.topics.inspire.health": "",
23546
+ "editor.record.form.topics.inspire.imagery": "",
23547
+ "editor.record.form.topics.inspire.intelligence": "",
23548
+ "editor.record.form.topics.inspire.location": "",
23549
+ "editor.record.form.topics.inspire.oceans": "",
23550
+ "editor.record.form.topics.inspire.planning": "",
23551
+ "editor.record.form.topics.inspire.society": "",
23552
+ "editor.record.form.topics.inspire.structure": "",
23553
+ "editor.record.form.topics.inspire.transportation": "",
23554
+ "editor.record.form.topics.inspire.utilities": "",
23555
+ "editor.record.form.topics.inspire.waters": "",
23556
+ "editor.record.form.topics.placeholder": "",
23542
23557
  "editor.record.form.updateFrequency.planned": "Táto množina údajov sa pravidelne aktualizuje",
23543
23558
  "editor.record.importFromExternalFile.failure.body": "",
23544
23559
  "editor.record.importFromExternalFile.failure.title": "",
@@ -23600,7 +23615,8 @@ var sk = {
23600
23615
  "facets.block.title.tag.default": "Štítok",
23601
23616
  "facets.block.title.th_regions_tree.default": "Regióny",
23602
23617
  "favorite.not.authenticated.tooltip": "<div><a href='{link}'>Prihlásiť sa</a> pre prístup k tejto funkcii</div>",
23603
- "favorite.starToggle.label": "",
23618
+ "favorite.starToggle.add": "Pridať k obľúbeným",
23619
+ "favorite.starToggle.remove": "Odstrániť z obľúbených",
23604
23620
  "feature.catalog.attribute.code": "Kód",
23605
23621
  "feature.catalog.attribute.definition": "Popis",
23606
23622
  "feature.catalog.attribute.name": "Názov",
@@ -23813,6 +23829,7 @@ var sk = {
23813
23829
  "record.metadata.usage": "Použitie a obmedzenia",
23814
23830
  "record.metadata.userFeedbacks": "",
23815
23831
  "record.metadata.userFeedbacks.anonymousUser": "",
23832
+ "record.metadata.userFeedbacks.authDisabled": "",
23816
23833
  "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
23817
23834
  "record.metadata.userFeedbacks.newAnswer.placeholder": "",
23818
23835
  "record.metadata.userFeedbacks.newComment.placeholder": "",
@@ -24923,6 +24940,44 @@ const removeWhitespace = function (str) {
24923
24940
  return str?.replace(/\s+/g, ' ').trim();
24924
24941
  };
24925
24942
 
24943
+ /**
24944
+ * When route is changed, Angular interprets a simple query params change as "forward navigation" too.
24945
+ * Using the pairwise function allows us to have both the previous and current router events, which we can
24946
+ * use to effectively compare the two navigation events and see if they actually change route, or only
24947
+ * the route parameters (i.e. search params stored in query params).
24948
+ *
24949
+ * Related to: https://github.com/angular/angular/issues/26744
24950
+ */
24951
+ function handleScrollOnNavigation(router, viewportScroller) {
24952
+ router.events
24953
+ .pipe(filter((e) => e instanceof Scroll), pairwise())
24954
+ .subscribe(([previous, current]) => {
24955
+ if (current.position) {
24956
+ // Backward navigation
24957
+ viewportScroller.scrollToPosition(current.position);
24958
+ }
24959
+ else if (current.anchor) {
24960
+ // Anchor navigation
24961
+ viewportScroller.scrollToAnchor(current.anchor);
24962
+ }
24963
+ else {
24964
+ // Check if routes match, or if it is only a query param change
24965
+ if (previous.routerEvent instanceof NavigationEnd &&
24966
+ current.routerEvent instanceof NavigationEnd &&
24967
+ getBaseRoute(previous.routerEvent.urlAfterRedirects) !==
24968
+ getBaseRoute(current.routerEvent.urlAfterRedirects)) {
24969
+ // Routes don't match, this is actual forward navigation
24970
+ // Default behavior: scroll to top
24971
+ viewportScroller.scrollToPosition([0, 0]);
24972
+ }
24973
+ }
24974
+ });
24975
+ }
24976
+ function getBaseRoute(url) {
24977
+ // return url without query params
24978
+ return url.split('?')[0];
24979
+ }
24980
+
24926
24981
  function sortByToStrings(sortBy) {
24927
24982
  const array = Array.isArray(sortBy[0]) ? sortBy : [sortBy];
24928
24983
  return array.map((param) => `${param[0] === 'desc' ? '-' : ''}${param[1]}`);
@@ -25057,10 +25112,17 @@ const FORMATS = {
25057
25112
  mimeTypes: ['application/geopackage+sqlite3'],
25058
25113
  },
25059
25114
  zip: {
25060
- extensions: ['zip', 'tar.gz'],
25115
+ extensions: ['zip', 'tar.gz', 'gz', '7z', '7zip'],
25061
25116
  priority: 8,
25062
25117
  color: '#B0CB52',
25063
- mimeTypes: ['application/zip', 'application/x-zip'],
25118
+ mimeTypes: [
25119
+ 'application/zip',
25120
+ 'application/x-zip',
25121
+ 'application/x-compressed',
25122
+ 'application/x-7z-compressed',
25123
+ 'application/gzip',
25124
+ 'application/x-gzip',
25125
+ ],
25064
25126
  },
25065
25127
  pdf: {
25066
25128
  extensions: ['pdf'],
@@ -25074,39 +25136,57 @@ const FORMATS = {
25074
25136
  color: '#C4A98F',
25075
25137
  mimeTypes: ['image/jpg'],
25076
25138
  },
25139
+ png: {
25140
+ extensions: ['png'],
25141
+ priority: 10,
25142
+ color: '#8B5A3C',
25143
+ mimeTypes: ['image/png'],
25144
+ },
25145
+ tiff: {
25146
+ extensions: ['tiff', 'tif', 'geotiff', 'geotif'],
25147
+ priority: 11,
25148
+ color: '#6B4423',
25149
+ mimeTypes: ['image/tiff'],
25150
+ },
25077
25151
  svg: {
25078
25152
  extensions: ['svg'],
25079
- priority: 10,
25153
+ priority: 12,
25080
25154
  color: '#EB6D82',
25081
25155
  mimeTypes: ['image/svg+xml'],
25082
25156
  },
25083
25157
  dxf: {
25084
25158
  extensions: ['dxf'],
25085
- priority: 11,
25159
+ priority: 13,
25086
25160
  color: '#DCCD00',
25087
25161
  mimeTypes: ['application/x-dxf', 'image/x-dxf'],
25088
25162
  },
25089
25163
  html: {
25090
25164
  extensions: ['html', 'htm'],
25091
- priority: 12,
25165
+ priority: 14,
25092
25166
  color: '#C0C9B6',
25093
25167
  mimeTypes: ['text/html'],
25094
25168
  },
25095
25169
  fgb: {
25096
25170
  extensions: ['fgb', 'flatgeobuf'],
25097
- priority: 13,
25171
+ priority: 15,
25098
25172
  color: '#A8111C',
25099
25173
  mimeTypes: ['application/flatgeobuf'],
25100
25174
  },
25101
25175
  jsonfg: {
25102
25176
  extensions: ['jsonfg', 'jsonfgc'],
25103
- priority: 14,
25177
+ priority: 16,
25104
25178
  color: '#009EE0',
25105
25179
  mimeTypes: [
25106
25180
  'application/vnd.ogc.fg+json',
25107
25181
  'application/vnd.ogc.fg+json;compatibility=geojson',
25108
25182
  ],
25109
25183
  },
25184
+ webp: {
25185
+ extensions: ['webp'],
25186
+ priority: 17,
25187
+ color: '#5A9E6F',
25188
+ mimeTypes: ['image/webp'],
25189
+ },
25110
25190
  };
25111
25191
  function getFormatPriority(linkFormat) {
25112
25192
  for (const format in FORMATS) {
@@ -25365,7 +25445,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
25365
25445
  }] } });
25366
25446
 
25367
25447
  var name = "geonetwork-ui";
25368
- var version = "2.7.0-dev.fd871c105";
25448
+ var version = "2.7.0";
25369
25449
  var engines = {
25370
25450
  node: ">=20"
25371
25451
  };
@@ -25405,7 +25485,7 @@ var peerDependencies = {
25405
25485
  };
25406
25486
  var dependencies = {
25407
25487
  "@biesbjerg/ngx-translate-extract-marker": "~1.0.0",
25408
- "@camptocamp/ogc-client": "1.2.1-dev.b1a75df",
25488
+ "@camptocamp/ogc-client": "^1.3.0",
25409
25489
  "@geospatial-sdk/core": "0.0.5-dev.37",
25410
25490
  "@geospatial-sdk/geocoding": "0.0.5-dev.37",
25411
25491
  "@geospatial-sdk/legend": "0.0.5-dev.37",
@@ -26455,7 +26535,7 @@ class OrganizationsFromMetadataService {
26455
26535
  this.platformService = platformService;
26456
26536
  this.translateService = translateService;
26457
26537
  this.groups$ = of(true).pipe(switchMap(() => this.groupsApiService.getGroups()), shareReplay$1());
26458
- this.organisationsAggs$ = this.platformService.getApiVersion().pipe(switchMap((version) => this.searchApiService.search('bucket', null, JSON.stringify(this.getAggregationSearchRequest(version)))), filter((response) => !!response.aggregations.contact.org), tap$1((response) => response.aggregations.contact.org.buckets.forEach((r) => (r.doc_count =
26538
+ this.organisationsAggs$ = this.platformService.getApiVersion().pipe(switchMap((version) => this.searchApiService.search('bucket', null, JSON.stringify(this.getAggregationSearchRequest(version)))), filter$1((response) => !!response.aggregations.contact.org), tap$1((response) => response.aggregations.contact.org.buckets.forEach((r) => (r.doc_count =
26459
26539
  response.aggregations.orgForResource.buckets.find((org) => org.key === r.key)?.doc_count || r.doc_count))), map$1((response) => response.aggregations.contact.org.buckets), shareReplay$1());
26460
26540
  this.organisationsWithoutGroups$ = this.organisationsAggs$.pipe(map$1((buckets) => buckets.map((bucket) => {
26461
26541
  const logoUrl = bucket.logoUrl.buckets?.[0]?.key;
@@ -27025,11 +27105,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
27025
27105
  }], ctorParameters: () => [{ type: AvatarServiceInterface }] });
27026
27106
 
27027
27107
  const minApiVersion = '4.2.2';
27108
+ const DISABLE_AUTH = new InjectionToken('gnDisableAuth', {
27109
+ factory: () => false,
27110
+ });
27028
27111
  class Gn4PlatformService {
27029
27112
  get lang3() {
27030
27113
  return toLang3(this.translateService.currentLang);
27031
27114
  }
27032
- constructor(meApi, usersApi, mapper, toolsApiService, registriesApiService, translateService, userfeedbackApiService, httpClient, recordsApiService, settingsService) {
27115
+ constructor(meApi, usersApi, mapper, toolsApiService, registriesApiService, translateService, userfeedbackApiService, httpClient, recordsApiService, settingsService, disableAuth) {
27033
27116
  this.meApi = meApi;
27034
27117
  this.usersApi = usersApi;
27035
27118
  this.mapper = mapper;
@@ -27040,6 +27123,7 @@ class Gn4PlatformService {
27040
27123
  this.httpClient = httpClient;
27041
27124
  this.recordsApiService = recordsApiService;
27042
27125
  this.settingsService = settingsService;
27126
+ this.disableAuth = disableAuth;
27043
27127
  this.type = 'GeoNetwork';
27044
27128
  this.gnParseVersion = '4.2.5';
27045
27129
  this.keyTranslations$ = this.toolsApiService
@@ -27058,7 +27142,9 @@ class Gn4PlatformService {
27058
27142
  .pipe(map$1((thesaurus) => {
27059
27143
  return thesaurus[0];
27060
27144
  }), shareReplay$1(1));
27061
- this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay$1({ bufferSize: 1, refCount: true }));
27145
+ this.me$ = this.disableAuth
27146
+ ? of(null)
27147
+ : this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay$1({ bufferSize: 1, refCount: true }));
27062
27148
  this.isUserAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
27063
27149
  this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay$1());
27064
27150
  }
@@ -27213,7 +27299,7 @@ class Gn4PlatformService {
27213
27299
  };
27214
27300
  }
27215
27301
  return undefined;
27216
- }), filter((event) => !!event), catchError((error) => {
27302
+ }), filter$1((event) => !!event), catchError((error) => {
27217
27303
  return throwError(() => new Error(error.error?.message ?? error.message));
27218
27304
  }));
27219
27305
  }
@@ -27256,18 +27342,30 @@ class Gn4PlatformService {
27256
27342
  }
27257
27343
  }));
27258
27344
  }
27259
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4PlatformService, deps: [{ token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }, { token: i1$1.TranslateService }, { token: UserfeedbackApiService }, { token: i1.HttpClient }, { token: RecordsApiService }, { token: Gn4SettingsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
27345
+ supportsAuthentication() {
27346
+ return !this.disableAuth;
27347
+ }
27348
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4PlatformService, deps: [{ token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }, { token: i1$1.TranslateService }, { token: UserfeedbackApiService }, { token: i1.HttpClient }, { token: RecordsApiService }, { token: Gn4SettingsService }, { token: DISABLE_AUTH, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
27260
27349
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4PlatformService }); }
27261
27350
  }
27262
27351
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4PlatformService, decorators: [{
27263
27352
  type: Injectable
27264
- }], ctorParameters: () => [{ type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: i1$1.TranslateService }, { type: UserfeedbackApiService }, { type: i1.HttpClient }, { type: RecordsApiService }, { type: Gn4SettingsService }] });
27353
+ }], ctorParameters: () => [{ type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: i1$1.TranslateService }, { type: UserfeedbackApiService }, { type: i1.HttpClient }, { type: RecordsApiService }, { type: Gn4SettingsService }, { type: undefined, decorators: [{
27354
+ type: Inject,
27355
+ args: [DISABLE_AUTH]
27356
+ }, {
27357
+ type: Optional
27358
+ }] }] });
27265
27359
 
27266
27360
  class RecordsRepositoryInterface {
27267
27361
  }
27268
27362
 
27269
- function provideGn4() {
27363
+ function provideGn4(provideOptions) {
27270
27364
  return [
27365
+ {
27366
+ provide: DISABLE_AUTH,
27367
+ useValue: provideOptions?.disableAuth,
27368
+ },
27271
27369
  {
27272
27370
  provide: PlatformServiceInterface,
27273
27371
  useClass: Gn4PlatformService,
@@ -28978,10 +29076,10 @@ class AutocompleteComponent {
28978
29076
  }
28979
29077
  }
28980
29078
  ngOnInit() {
28981
- const newValue$ = merge(of(''), this.inputCleared.pipe(map$1(() => '')), this.control.valueChanges.pipe(filter((value) => typeof value === 'string'), distinctUntilChanged(), debounceTime(400)));
28982
- const externalValueChange$ = this.control.valueChanges.pipe(filter((value) => typeof value === 'object' && value.title), map$1((item) => item.title));
29079
+ const newValue$ = merge(of(''), this.inputCleared.pipe(map$1(() => '')), this.control.valueChanges.pipe(filter$1((value) => typeof value === 'string'), distinctUntilChanged(), debounceTime(400)));
29080
+ const externalValueChange$ = this.control.valueChanges.pipe(filter$1((value) => typeof value === 'object' && value.title), map$1((item) => item.title));
28983
29081
  // this observable emits arrays of suggestions loaded using the given action
28984
- const suggestionsFromAction = merge(newValue$.pipe(filter((value) => value.length >= this.minCharacterCount)), externalValueChange$).pipe(tap$1(() => {
29082
+ const suggestionsFromAction = merge(newValue$.pipe(filter$1((value) => value.length >= this.minCharacterCount)), externalValueChange$).pipe(tap$1(() => {
28985
29083
  this.searching = true;
28986
29084
  this.error = null;
28987
29085
  }), switchMap$1((value) => this.action(value)), tap$1((suggestions) => {
@@ -28995,10 +29093,10 @@ class AutocompleteComponent {
28995
29093
  }), finalize(() => (this.searching = false)));
28996
29094
  this.suggestions$ = merge(suggestionsFromAction,
28997
29095
  // if a new value is under the min char count, clear suggestions
28998
- newValue$.pipe(filter((value) => value.length < this.minCharacterCount), map$1(() => [])));
29096
+ newValue$.pipe(filter$1((value) => value.length < this.minCharacterCount), map$1(() => [])));
28999
29097
  // close the panel whenever suggestions are cleared
29000
29098
  this.subscription.add(this.suggestions$
29001
- .pipe(filter((suggestions) => suggestions.length === 0))
29099
+ .pipe(filter$1((suggestions) => suggestions.length === 0))
29002
29100
  .subscribe(() => {
29003
29101
  this.triggerRef?.closePanel();
29004
29102
  }));
@@ -29008,7 +29106,7 @@ class AutocompleteComponent {
29008
29106
  }
29009
29107
  }));
29010
29108
  this.control.valueChanges
29011
- .pipe(filter((value) => typeof value === 'string'))
29109
+ .pipe(filter$1((value) => typeof value === 'string'))
29012
29110
  .subscribe(this.lastInputValue$);
29013
29111
  }
29014
29112
  ngAfterViewInit() {
@@ -30205,7 +30303,7 @@ class StarToggleComponent {
30205
30303
  event.preventDefault();
30206
30304
  }
30207
30305
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30208
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled", displayLabel: "displayLabel" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle cursor-pointer\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n <span *ngIf=\"displayLabel\" class=\"mx-2 text-[16px] content-center\" translate\n >favorite.starToggle.label</span\n >\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n [style]=\"displayLabel ? 'left: 16px' : 'left: 50%'\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"], 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: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [
30306
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled", displayLabel: "displayLabel" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle cursor-pointer\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n <span *ngIf=\"displayLabel\" class=\"mx-2 text-[16px] content-center\">{{\n (toggled ? 'favorite.starToggle.remove' : 'favorite.starToggle.add')\n | translate\n }}</span>\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n [style]=\"displayLabel ? 'left: 16px' : 'left: 50%'\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"], 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: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], viewProviders: [
30209
30307
  provideIcons({ matStar, matStarBorder }),
30210
30308
  provideNgIconsConfig({
30211
30309
  size: '1.5em',
@@ -30214,12 +30312,12 @@ class StarToggleComponent {
30214
30312
  }
30215
30313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, decorators: [{
30216
30314
  type: Component,
30217
- args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, ButtonComponent, TranslateDirective], viewProviders: [
30315
+ args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, ButtonComponent, TranslatePipe], viewProviders: [
30218
30316
  provideIcons({ matStar, matStarBorder }),
30219
30317
  provideNgIconsConfig({
30220
30318
  size: '1.5em',
30221
30319
  }),
30222
- ], template: "<div class=\"inline-block relative align-middle cursor-pointer\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n <span *ngIf=\"displayLabel\" class=\"mx-2 text-[16px] content-center\" translate\n >favorite.starToggle.label</span\n >\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n [style]=\"displayLabel ? 'left: 16px' : 'left: 50%'\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
30320
+ ], template: "<div class=\"inline-block relative align-middle cursor-pointer\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n <span *ngIf=\"displayLabel\" class=\"mx-2 text-[16px] content-center\">{{\n (toggled ? 'favorite.starToggle.remove' : 'favorite.starToggle.add')\n | translate\n }}</span>\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n [style]=\"displayLabel ? 'left: 16px' : 'left: 50%'\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
30223
30321
  }], propDecorators: { toggled: [{
30224
30322
  type: Input
30225
30323
  }], disabled: [{
@@ -30352,8 +30450,8 @@ class ViewportIntersectorComponent {
30352
30450
  constructor(vcRef) {
30353
30451
  this.vcRef = vcRef;
30354
30452
  this.isInViewport = new EventEmitter();
30355
- this.entersViewport = this.isInViewport.pipe(filter((inViewport) => inViewport), map$1(() => undefined));
30356
- this.exitsViewport = this.isInViewport.pipe(filter((inViewport) => !inViewport), map$1(() => undefined));
30453
+ this.entersViewport = this.isInViewport.pipe(filter$1((inViewport) => inViewport), map$1(() => undefined));
30454
+ this.exitsViewport = this.isInViewport.pipe(filter$1((inViewport) => !inViewport), map$1(() => undefined));
30357
30455
  }
30358
30456
  ngOnInit() {
30359
30457
  const elToObserve = this.vcRef.element.nativeElement;
@@ -33939,7 +34037,7 @@ class MetadataInfoComponent {
33939
34037
  return this.dateService.formatDateTime(date);
33940
34038
  }
33941
34039
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
33942
- 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 <div *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 </div>\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=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\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: [
34040
+ 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 <div *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 </div>\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: [
33943
34041
  provideIcons({
33944
34042
  matOpenInNew,
33945
34043
  matMailOutline: matMailOutline$1,
@@ -33967,7 +34065,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
33967
34065
  matOpenInNew,
33968
34066
  matMailOutline: matMailOutline$1,
33969
34067
  }),
33970
- ], 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 <div *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 </div>\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=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\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"] }]
34068
+ ], 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 <div *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 </div>\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"] }]
33971
34069
  }], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
33972
34070
  type: Input
33973
34071
  }], incomplete: [{
@@ -34170,7 +34268,7 @@ class RecordApiFormComponent {
34170
34268
  this.limit$,
34171
34269
  this.format$,
34172
34270
  // only compute the url if the endpoint was created
34173
- this.endpoint$.pipe(filter$1((endpoint) => !!endpoint)),
34271
+ this.endpoint$.pipe(filter((endpoint) => !!endpoint)),
34174
34272
  ]).pipe(switchMap(([offset, limit, format]) => this.generateApiQueryUrl(offset, limit, format)));
34175
34273
  this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
34176
34274
  this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
@@ -35320,7 +35418,11 @@ class ResultsHitsSearchKindComponent {
35320
35418
  ];
35321
35419
  }
35322
35420
  onSelectedValues(values) {
35323
- const selectedValues = values.includes('all') ? [] : values;
35421
+ const selectedValues = values.includes('all')
35422
+ ? []
35423
+ : values.length > 1
35424
+ ? [values[values.length - 1]]
35425
+ : values;
35324
35426
  this.selectionChanged.emit(selectedValues);
35325
35427
  }
35326
35428
  isSelectedChoice(choiceValue) {
@@ -35330,7 +35432,7 @@ class ResultsHitsSearchKindComponent {
35330
35432
  return this.selected.length === 0 && choiceValue === 'all';
35331
35433
  }
35332
35434
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsSearchKindComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35333
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsSearchKindComponent, isStandalone: true, selector: "gn-ui-results-hits-search-kind", inputs: { selected: "selected", choices: "choices" }, outputs: { selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [styling]=\"'custom'\"\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n", 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: InlineFilterComponent, selector: "gn-ui-inline-filter", inputs: ["choices", "selected"], outputs: ["selectValues"] }, { kind: "component", type: KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["styling", "contentTemplate", "kind", "extraClass"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
35435
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsSearchKindComponent, isStandalone: true, selector: "gn-ui-results-hits-search-kind", inputs: { selected: "selected", choices: "choices" }, outputs: { selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [styling]=\"'custom'\"\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate }}\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: InlineFilterComponent, selector: "gn-ui-inline-filter", inputs: ["choices", "selected"], outputs: ["selectValues"] }, { kind: "component", type: KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["styling", "contentTemplate", "kind", "extraClass"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
35334
35436
  }
35335
35437
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsSearchKindComponent, decorators: [{
35336
35438
  type: Component,
@@ -35339,7 +35441,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
35339
35441
  InlineFilterComponent,
35340
35442
  KindBadgeComponent,
35341
35443
  TranslatePipe,
35342
- ], template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [styling]=\"'custom'\"\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n" }]
35444
+ ], template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [styling]=\"'custom'\"\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate }}\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n" }]
35343
35445
  }], propDecorators: { selected: [{
35344
35446
  type: Input
35345
35447
  }], choices: [{
@@ -35652,6 +35754,7 @@ class FavoriteStarComponent {
35652
35754
  this.displayLabel = false;
35653
35755
  this.displayCount = true;
35654
35756
  this.isFavorite$ = this.favoritesService.myFavoritesUuid$.pipe(map$1((favorites) => favorites.indexOf(this.record.uniqueIdentifier) > -1));
35757
+ this.supportsAuthentication = this.platformService.supportsAuthentication();
35655
35758
  this.isAnonymous$ = this.platformService.isAnonymous();
35656
35759
  this.loading = false;
35657
35760
  this.loginUrl = this.authService.loginUrl;
@@ -35661,22 +35764,24 @@ class FavoriteStarComponent {
35661
35764
  })));
35662
35765
  }
35663
35766
  ngAfterViewInit() {
35664
- this.subscription = this.isAnonymous$
35665
- .pipe(withLatestFrom(this.loginMessage$))
35666
- .subscribe(([anonymous, loginMessage]) => {
35667
- if (anonymous) {
35668
- tippy(this.starToggleRef.nativeElement, {
35669
- appendTo: () => document.body,
35670
- content: loginMessage,
35671
- allowHTML: true,
35672
- interactive: true,
35673
- zIndex: 60,
35674
- maxWidth: 250,
35675
- });
35676
- }
35677
- });
35767
+ if (this.supportsAuthentication) {
35768
+ this.subscription = this.isAnonymous$
35769
+ .pipe(withLatestFrom(this.loginMessage$))
35770
+ .subscribe(([anonymous, loginMessage]) => {
35771
+ if (anonymous) {
35772
+ tippy(this.starToggleRef.nativeElement, {
35773
+ appendTo: () => document.body,
35774
+ content: loginMessage,
35775
+ allowHTML: true,
35776
+ interactive: true,
35777
+ zIndex: 60,
35778
+ maxWidth: 250,
35779
+ });
35780
+ }
35781
+ });
35782
+ }
35678
35783
  this.countSubscription = this.favoritesService.myFavoritesUuid$
35679
- .pipe(pairwise())
35784
+ .pipe(pairwise$1())
35680
35785
  .subscribe(([oldFavs, newFavs]) => {
35681
35786
  const editedFavs = (oldFavs.length < newFavs.length
35682
35787
  ? newFavs.slice(-1)
@@ -35693,8 +35798,12 @@ class FavoriteStarComponent {
35693
35798
  });
35694
35799
  }
35695
35800
  ngOnDestroy() {
35696
- this.subscription.unsubscribe();
35697
- this.countSubscription.unsubscribe();
35801
+ if (this.subscription) {
35802
+ this.subscription.unsubscribe();
35803
+ }
35804
+ if (this.countSubscription) {
35805
+ this.countSubscription.unsubscribe();
35806
+ }
35698
35807
  }
35699
35808
  toggleFavorite(isFavorite) {
35700
35809
  this.loading = true;
@@ -35753,8 +35862,8 @@ class ResultsListContainerComponent {
35753
35862
  }
35754
35863
  }), map$1((records) => !!records[0]?.extras.qualityScore));
35755
35864
  this.error$ = this.facade.error$;
35756
- this.errorCode$ = this.error$.pipe(filter((error) => error !== null), map$1((error) => error.code));
35757
- this.errorMessage$ = this.error$.pipe(filter((error) => error !== null), map$1((error) => error.message));
35865
+ this.errorCode$ = this.error$.pipe(filter$1((error) => error !== null), map$1((error) => error.code));
35866
+ this.errorMessage$ = this.error$.pipe(filter$1((error) => error !== null), map$1((error) => error.message));
35758
35867
  this.allowShowMore$ = combineLatest([
35759
35868
  this.facade.isLoading$,
35760
35869
  this.facade.currentPage$,
@@ -35833,7 +35942,7 @@ class FilterDropdownComponent {
35833
35942
  this.searchFacade = searchFacade;
35834
35943
  this.searchService = searchService;
35835
35944
  this.fieldsService = fieldsService;
35836
- this.selected$ = this.searchFacade.searchFilters$.pipe(switchMap((filters) => this.fieldsService.readFieldValuesFromFilters(filters)), map$1((fieldValues) => fieldValues[this.fieldName]), filter((selected) => !!selected), startWith$1([]), catchError(() => of([])));
35945
+ this.selected$ = this.searchFacade.searchFilters$.pipe(switchMap((filters) => this.fieldsService.readFieldValuesFromFilters(filters)), map$1((fieldValues) => fieldValues[this.fieldName]), filter$1((selected) => !!selected), startWith$1([]), catchError(() => of([])));
35837
35946
  this.selectedDateRange$ = this.selected$.pipe(map$1((selectedDateRange) => selectedDateRange));
35838
35947
  }
35839
35948
  ngOnInit() {
@@ -36291,7 +36400,7 @@ class ResultsHitsContainerComponent {
36291
36400
  this.fieldName = 'recordKind';
36292
36401
  }
36293
36402
  ngOnInit() {
36294
- this.selected$ = this.searchFacade.searchFilters$.pipe(switchMap((filters) => this.fieldsService.readFieldValuesFromFilters(filters)), map$2((fieldValues) => fieldValues[this.fieldName]), filter$1((selected) => !!selected), startWith([]), catchError$1(() => of([])));
36403
+ this.selected$ = this.searchFacade.searchFilters$.pipe(switchMap((filters) => this.fieldsService.readFieldValuesFromFilters(filters)), map$2((fieldValues) => fieldValues[this.fieldName]), filter((selected) => !!selected), startWith([]), catchError$1(() => of([])));
36295
36404
  this.filterChoices$ = (this.fieldsService.getAvailableValues(this.fieldName));
36296
36405
  }
36297
36406
  onSelectionChanged(values) {
@@ -36368,7 +36477,7 @@ class SortByComponent {
36368
36477
  value: SortByEnum.POPULARITY.join(','),
36369
36478
  },
36370
36479
  ];
36371
- this.currentSortBy$ = this.facade.sortBy$.pipe(filter((sortBy) => !!sortBy), map$1((sortBy) => sortBy.join(',')));
36480
+ this.currentSortBy$ = this.facade.sortBy$.pipe(filter$1((sortBy) => !!sortBy), map$1((sortBy) => sortBy.join(',')));
36372
36481
  }
36373
36482
  ngOnInit() {
36374
36483
  if (this.isQualitySortable) {
@@ -38133,9 +38242,9 @@ class DataService {
38133
38242
  }
38134
38243
  async getDownloadUrlsFromOgcApi(url) {
38135
38244
  const endpoint = new OgcApiEndpoint(url);
38136
- return await endpoint.allCollections
38245
+ return await endpoint.featureCollections
38137
38246
  .then((collections) => {
38138
- return endpoint.getCollectionInfo(collections[0].name);
38247
+ return endpoint.getCollectionInfo(collections[0]);
38139
38248
  })
38140
38249
  .catch((error) => {
38141
38250
  throw new Error(`ogc.unreachable.unknown`);
@@ -38146,7 +38255,7 @@ class DataService {
38146
38255
  return await endpoint.featureCollections
38147
38256
  .then((collections) => {
38148
38257
  return collections.length
38149
- ? endpoint.getCollectionItem(collections[0], '1')
38258
+ ? endpoint.getCollectionItems(collections[0])
38150
38259
  : null;
38151
38260
  })
38152
38261
  .catch(() => {
@@ -38534,7 +38643,7 @@ class DataTableComponent {
38534
38643
  async readData() {
38535
38644
  this.loading$.next(true);
38536
38645
  // wait for properties to be read
38537
- const properties = await firstValueFrom(this.properties$.pipe(filter$1((p) => !!p)));
38646
+ const properties = await firstValueFrom(this.properties$.pipe(filter((p) => !!p)));
38538
38647
  const propsWithoutGeom = properties.filter((p) => !p.toLowerCase().startsWith('geom'));
38539
38648
  this.dataset_.select(...propsWithoutGeom);
38540
38649
  try {
@@ -38785,8 +38894,8 @@ class ChartViewComponent {
38785
38894
  this.yProperty$ = new BehaviorSubject(undefined);
38786
38895
  this.chartType$ = new BehaviorSubject('bar');
38787
38896
  this.chartConfig$ = combineLatest([
38788
- this.xProperty$.pipe(filter((value) => value !== undefined)),
38789
- this.yProperty$.pipe(filter((value) => value !== undefined)),
38897
+ this.xProperty$.pipe(filter$1((value) => value !== undefined)),
38898
+ this.yProperty$.pipe(filter$1((value) => value !== undefined)),
38790
38899
  this.aggregation$,
38791
38900
  this.chartType$,
38792
38901
  ]).pipe(map$1(([xProperty, yProperty, aggregation, chartType]) => ({
@@ -38805,7 +38914,7 @@ class ChartViewComponent {
38805
38914
  { label: 'chart.type.lineSmooth', value: 'line-interpolated' },
38806
38915
  { label: 'chart.type.pie', value: 'pie' },
38807
38916
  ];
38808
- this.dataset$ = this.currentLink$.pipe(filter((link) => !!link), switchMap$1((link) => {
38917
+ this.dataset$ = this.currentLink$.pipe(filter$1((link) => !!link), switchMap$1((link) => {
38809
38918
  this.error = null;
38810
38919
  this.loading = true;
38811
38920
  if (link.accessRestricted) {
@@ -38841,10 +38950,10 @@ class ChartViewComponent {
38841
38950
  }));
38842
38951
  this.chartData$ = combineLatest([
38843
38952
  this.dataset$,
38844
- this.xProperty$.pipe(filter((value) => value !== undefined)),
38845
- this.yProperty$.pipe(filter((value) => value !== undefined)),
38953
+ this.xProperty$.pipe(filter$1((value) => value !== undefined)),
38954
+ this.yProperty$.pipe(filter$1((value) => value !== undefined)),
38846
38955
  this.aggregation$,
38847
- ]).pipe(filter(([_, x, y]) => !!x || !!y), switchMap$1(([dataset, xProp, yProp, aggregation]) => {
38956
+ ]).pipe(filter$1(([_, x, y]) => !!x || !!y), switchMap$1(([dataset, xProp, yProp, aggregation]) => {
38848
38957
  const fieldAgg = aggregation === 'count' ? ['count'] : [aggregation, yProp];
38849
38958
  return dataset
38850
38959
  .groupBy(['distinct', xProp])
@@ -39194,9 +39303,9 @@ class MdViewFacade {
39194
39303
  this.dataService = dataService;
39195
39304
  this.isPresent$ = this.store.pipe(select(getMetadataUuid), map$1((uuid) => !!uuid));
39196
39305
  this.isMetadataLoading$ = this.store.pipe(select(getMetadataIsLoading));
39197
- this.metadata$ = this.store.pipe(select(getMetadata), filter((md) => !!md));
39306
+ this.metadata$ = this.store.pipe(select(getMetadata), filter$1((md) => !!md));
39198
39307
  this.featureCatalog$ = this.store.pipe(select(getFeatureCatalog));
39199
- this.isIncomplete$ = this.store.pipe(select(getMetadataIsIncomplete), filter((incomplete) => incomplete !== null));
39308
+ this.isIncomplete$ = this.store.pipe(select(getMetadataIsIncomplete), filter$1((incomplete) => incomplete !== null));
39200
39309
  this.isHighUpdateFrequency$ = this.metadata$.pipe(map$1((record) => {
39201
39310
  if (record.updateFrequency instanceof Object) {
39202
39311
  return (record.updateFrequency.per === 'day' &&
@@ -39220,7 +39329,9 @@ class MdViewFacade {
39220
39329
  if (link.type === 'service' &&
39221
39330
  link.accessServiceProtocol === 'ogcFeatures') {
39222
39331
  return from(this.dataService.getItemsFromOgcApi(link.url.href)).pipe(map$1((collectionRecords) => {
39223
- return collectionRecords && collectionRecords.geometry
39332
+ return collectionRecords &&
39333
+ collectionRecords[0] &&
39334
+ collectionRecords[0].geometry
39224
39335
  ? link
39225
39336
  : null;
39226
39337
  }), defaultIfEmpty(null), catchError((e) => {
@@ -39300,7 +39411,7 @@ class MdViewEffects {
39300
39411
  }
39301
39412
  return loadFullMetadataSuccess({ full: record });
39302
39413
  }), catchError((error) => of(loadFullMetadataFailure({ otherError: error.message })))));
39303
- this.loadFeatureCatalog$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), filter(({ full }) => full !== undefined), switchMap$1(({ full }) => this.recordsRepository.getFeatureCatalog(full)), map$1((featureCatalog) => loadFeatureCatalogSuccess({
39414
+ this.loadFeatureCatalog$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), filter$1(({ full }) => full !== undefined), switchMap$1(({ full }) => this.recordsRepository.getFeatureCatalog(full)), map$1((featureCatalog) => loadFeatureCatalogSuccess({
39304
39415
  datasetCatalog: featureCatalog,
39305
39416
  })), catchError((error) => of(loadFeatureCatalogFailure({
39306
39417
  error: error.message,
@@ -40281,7 +40392,7 @@ class SourcesService {
40281
40392
  this.sources$ = this.sourcesApiService.getSubPortals1().pipe(shareReplay$1());
40282
40393
  }
40283
40394
  getSourceLabel(uuid) {
40284
- return this.sources$.pipe(map$1((sources) => sources.filter((source) => source.uuid === uuid)[0]), filter((source) => !!source), map$1((source) => source.label[toLang3(this.translateService.currentLang)]));
40395
+ return this.sources$.pipe(map$1((sources) => sources.filter((source) => source.uuid === uuid)[0]), filter$1((source) => !!source), map$1((source) => source.label[toLang3(this.translateService.currentLang)]));
40285
40396
  }
40286
40397
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SourcesService, deps: [{ token: SourcesApiService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
40287
40398
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SourcesService, providedIn: 'root' }); }
@@ -40847,9 +40958,9 @@ const CLASSIFICATION_SECTION = {
40847
40958
  hidden: false,
40848
40959
  fields: [RECORD_KEYWORDS_FIELD],
40849
40960
  };
40850
- const INSPIRE_SECTION = {
40851
- labelKey: marker('editor.record.form.section.inspire.label'),
40852
- descriptionKey: marker('editor.record.form.section.inspire.description'),
40961
+ const TOPICS_SECTION = {
40962
+ labelKey: marker('editor.record.form.section.topics.label'),
40963
+ descriptionKey: marker('editor.record.form.section.topics.description'),
40853
40964
  hidden: false,
40854
40965
  fields: [RECORD_TOPICS_FIELD],
40855
40966
  };
@@ -40887,7 +40998,7 @@ const DEFAULT_CONFIGURATION = {
40887
40998
  sections: [
40888
40999
  TITLE_SECTION,
40889
41000
  CLASSIFICATION_SECTION,
40890
- INSPIRE_SECTION,
41001
+ TOPICS_SECTION,
40891
41002
  ABOUT_SECTION,
40892
41003
  GEOGRAPHICAL_COVERAGE_SECTION,
40893
41004
  ],
@@ -40951,70 +41062,76 @@ const SPATIAL_SCOPES = [
40951
41062
  },
40952
41063
  ];
40953
41064
  /************************************************************
40954
- *************** INSPIRE THEMES **************
41065
+ *************** INSPIRE TOPICS **************
40955
41066
  ************************************************************
40956
41067
  */
40957
- const INSPIRE_THEMES = [
40958
- { value: 'biota', label: 'editor.record.form.inspire.biota' },
40959
- { value: 'boundaries', label: 'editor.record.form.inspire.boundaries' },
41068
+ const INSPIRE_TOPICS = [
41069
+ { value: 'biota', label: 'editor.record.form.topics.inspire.biota' },
41070
+ {
41071
+ value: 'boundaries',
41072
+ label: 'editor.record.form.topics.inspire.boundaries',
41073
+ },
40960
41074
  {
40961
41075
  value: 'climatologyMeteorologyAtmosphere',
40962
- label: 'editor.record.form.inspire.climatology',
41076
+ label: 'editor.record.form.topics.inspire.climatology',
41077
+ },
41078
+ { value: 'economy', label: 'editor.record.form.topics.inspire.economy' },
41079
+ { value: 'elevation', label: 'editor.record.form.topics.inspire.elevation' },
41080
+ {
41081
+ value: 'environment',
41082
+ label: 'editor.record.form.topics.inspire.environnement',
40963
41083
  },
40964
- { value: 'economy', label: 'editor.record.form.inspire.economy' },
40965
- { value: 'elevation', label: 'editor.record.form.inspire.elevation' },
40966
- { value: 'environment', label: 'editor.record.form.inspire.environnement' },
40967
- { value: 'farming', label: 'editor.record.form.inspire.farming' },
41084
+ { value: 'farming', label: 'editor.record.form.topics.inspire.farming' },
40968
41085
  {
40969
41086
  value: 'geoscientific information',
40970
- label: 'editor.record.form.inspire.geoscientific',
41087
+ label: 'editor.record.form.topics.inspire.geoscientific',
40971
41088
  },
40972
- { value: 'health', label: 'editor.record.form.inspire.health' },
41089
+ { value: 'health', label: 'editor.record.form.topics.inspire.health' },
40973
41090
  {
40974
41091
  value: 'imageryBaseMapsEarthCover',
40975
- label: 'editor.record.form.inspire.imagery',
41092
+ label: 'editor.record.form.topics.inspire.imagery',
40976
41093
  },
40977
- { value: 'inlandWaters', label: 'editor.record.form.inspire.waters' },
41094
+ { value: 'inlandWaters', label: 'editor.record.form.topics.inspire.waters' },
40978
41095
  {
40979
41096
  value: 'intelligenceMilitary',
40980
- label: 'editor.record.form.inspire.intelligence',
41097
+ label: 'editor.record.form.topics.inspire.intelligence',
40981
41098
  },
40982
- { value: 'Location', label: 'editor.record.form.inspire.location' },
40983
- { value: 'Oceans', label: 'editor.record.form.inspire.oceans' },
41099
+ { value: 'Location', label: 'editor.record.form.topics.inspire.location' },
41100
+ { value: 'Oceans', label: 'editor.record.form.topics.inspire.oceans' },
40984
41101
  {
40985
41102
  value: 'planningCadastre',
40986
- label: 'editor.record.form.inspire.planning',
41103
+ label: 'editor.record.form.topics.inspire.planning',
40987
41104
  },
40988
- { value: 'Society', label: 'editor.record.form.inspire.society' },
40989
- { value: 'Structure', label: 'editor.record.form.inspire.structure' },
41105
+ { value: 'Society', label: 'editor.record.form.topics.inspire.society' },
41106
+ { value: 'Structure', label: 'editor.record.form.topics.inspire.structure' },
40990
41107
  {
40991
41108
  value: 'Transportation',
40992
- label: 'editor.record.form.inspire.transportation',
41109
+ label: 'editor.record.form.topics.inspire.transportation',
40993
41110
  },
40994
41111
  {
40995
41112
  value: 'utilitiesCommunication',
40996
- label: 'editor.record.form.inspire.utilities',
41113
+ label: 'editor.record.form.topics.inspire.utilities',
40997
41114
  },
40998
41115
  ];
40999
- marker('editor.record.form.inspire.biota');
41000
- marker('editor.record.form.inspire.boundaries');
41001
- marker('editor.record.form.inspire.climatology');
41002
- marker('editor.record.form.inspire.economy');
41003
- marker('editor.record.form.inspire.elevation');
41004
- marker('editor.record.form.inspire.environnement');
41005
- marker('editor.record.form.inspire.farming');
41006
- marker('editor.record.form.inspire.geoscientific');
41007
- marker('editor.record.form.inspire.health');
41008
- marker('editor.record.form.inspire.imagery');
41009
- marker('editor.record.form.inspire.intelligence');
41010
- marker('editor.record.form.inspire.location');
41011
- marker('editor.record.form.inspire.oceans');
41012
- marker('editor.record.form.inspire.planning');
41013
- marker('editor.record.form.inspire.society');
41014
- marker('editor.record.form.inspire.structure');
41015
- marker('editor.record.form.inspire.transportation');
41016
- marker('editor.record.form.inspire.utilities');
41017
- marker('editor.record.form.inspire.waters');
41116
+ marker('editor.record.form.topics.inspire.biota');
41117
+ marker('editor.record.form.topics.inspire.boundaries');
41118
+ marker('editor.record.form.topics.inspire.climatology');
41119
+ marker('editor.record.form.topics.inspire.economy');
41120
+ marker('editor.record.form.topics.inspire.elevation');
41121
+ marker('editor.record.form.topics.inspire.environnement');
41122
+ marker('editor.record.form.topics.inspire.farming');
41123
+ marker('editor.record.form.topics.inspire.geoscientific');
41124
+ marker('editor.record.form.topics.inspire.health');
41125
+ marker('editor.record.form.topics.inspire.imagery');
41126
+ marker('editor.record.form.topics.inspire.intelligence');
41127
+ marker('editor.record.form.topics.inspire.location');
41128
+ marker('editor.record.form.topics.inspire.oceans');
41129
+ marker('editor.record.form.topics.inspire.planning');
41130
+ marker('editor.record.form.topics.inspire.society');
41131
+ marker('editor.record.form.topics.inspire.structure');
41132
+ marker('editor.record.form.topics.inspire.transportation');
41133
+ marker('editor.record.form.topics.inspire.utilities');
41134
+ marker('editor.record.form.topics.inspire.waters');
41018
41135
 
41019
41136
  const EDITOR_FEATURE_KEY = 'editor';
41020
41137
  const initialEditorState = {
@@ -41128,7 +41245,7 @@ class EditorFacade {
41128
41245
  this.record$ = this.store.pipe(select(selectRecord));
41129
41246
  this.recordSource$ = this.store.pipe(select(selectRecordSource));
41130
41247
  this.saving$ = this.store.pipe(select(selectRecordSaving));
41131
- this.saveError$ = this.store.pipe(select(selectRecordSaveError), filter$1((error) => !!error));
41248
+ this.saveError$ = this.store.pipe(select(selectRecordSaveError), filter((error) => !!error));
41132
41249
  this.saveSuccess$ = this.actions$.pipe(ofType(saveRecordSuccess));
41133
41250
  this.changedSinceSave$ = this.store.pipe(select(selectRecordChangedSinceSave));
41134
41251
  this.currentSections$ = this.store.pipe(select(selectRecordSections));
@@ -41288,7 +41405,7 @@ class EditorEffects {
41288
41405
  record,
41289
41406
  recordSource,
41290
41407
  }))));
41291
- this.checkHasChangesOnOpen$ = createEffect(() => this.actions$.pipe(ofType(openRecord), map$1(({ record }) => this.recordsRepository.recordHasDraft(record.uniqueIdentifier)), filter$1((hasDraft) => hasDraft), map$1(() => markRecordAsChanged())));
41408
+ this.checkHasChangesOnOpen$ = createEffect(() => this.actions$.pipe(ofType(openRecord), map$1(({ record }) => this.recordsRepository.recordHasDraft(record.uniqueIdentifier)), filter((hasDraft) => hasDraft), map$1(() => markRecordAsChanged())));
41292
41409
  this.hasRecordChangedSinceDraft$ = createEffect(() => this.actions$.pipe(ofType(hasRecordChangedSinceDraft), switchMap$1(({ record }) => this.editorService
41293
41410
  .hasRecordChangedSinceDraft(record)
41294
41411
  .pipe(map$1((changes) => hasRecordChangedSinceDraftSuccess({ changes }))))));
@@ -43123,46 +43240,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
43123
43240
  args: [{ selector: 'gn-ui-form-field-spatial-toggle', standalone: true, imports: [CommonModule, SwitchToggleComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-switch-toggle\n [options]=\"switchToggleOptions$ | async\"\n (selectedValue)=\"onSpatialScopeChange($event)\"\n extraClasses=\"grow text-sm\"\n></gn-ui-switch-toggle>\n" }]
43124
43241
  }], ctorParameters: () => [{ type: EditorFacade }] });
43125
43242
 
43126
- class FormFieldInspireThemeComponent {
43127
- set value(themes) {
43128
- this.themes = themes;
43243
+ class FormFieldTopicsComponent {
43244
+ set value(topics) {
43245
+ this.topics = topics;
43129
43246
  }
43130
43247
  constructor(translateService) {
43131
43248
  this.translateService = translateService;
43132
- this.themes = [];
43249
+ this.topics = [];
43133
43250
  this.valueChange = new EventEmitter();
43134
- this.availableThemes = INSPIRE_THEMES.map((theme) => {
43251
+ this.availableTopics = INSPIRE_TOPICS.map((topic) => {
43135
43252
  return {
43136
- label: this.translateService.instant(theme.label),
43137
- value: theme.value,
43253
+ label: this.translateService.instant(topic.label),
43254
+ value: topic.value,
43138
43255
  };
43139
43256
  });
43140
43257
  }
43141
43258
  handleItemSelection(selectedItems) {
43142
- this.themes = selectedItems;
43143
- this.valueChange.emit(this.themes);
43259
+ this.topics = selectedItems;
43260
+ this.valueChange.emit(this.topics);
43144
43261
  }
43145
- removeTheme(theme) {
43146
- this.themes = this.themes.filter((t) => t !== theme);
43147
- this.valueChange.emit(this.themes);
43262
+ removeTopic(topic) {
43263
+ this.topics = this.topics.filter((t) => t !== topic);
43264
+ this.valueChange.emit(this.topics);
43148
43265
  }
43149
- getTranslatedTheme(theme) {
43150
- const themeKey = this.availableThemes.find((avail) => avail.value === theme)?.label;
43151
- return themeKey ? this.translateService.instant(themeKey) : '';
43266
+ getTranslatedTopic(topic) {
43267
+ const topicKey = this.availableTopics.find((avail) => avail.value === topic)?.label;
43268
+ return topicKey ? this.translateService.instant(topicKey) : '';
43152
43269
  }
43153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldInspireThemeComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
43154
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldInspireThemeComponent, isStandalone: true, selector: "gn-ui-form-field-inspire-theme", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-col gap-4\">\n <gn-ui-dropdown-multiselect\n class=\"w-full\"\n [title]=\"'editor.record.form.inspire.placeholder' | translate\"\n [maxRows]=\"6\"\n [selected]=\"themes\"\n [choices]=\"availableThemes || []\"\n [allowSearch]=\"true\"\n (selectValues)=\"handleItemSelection($event)\"\n >\n </gn-ui-dropdown-multiselect>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let theme of themes\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeTheme(theme)\"\n >{{ getTranslatedTheme(theme) }}\n </gn-ui-badge>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: ["title", "choices", "selected", "allowSearch", "maxRows", "searchInputValue"], outputs: ["selectValues"] }] }); }
43270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldTopicsComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
43271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldTopicsComponent, isStandalone: true, selector: "gn-ui-form-field-topics", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-col gap-4\">\n <gn-ui-dropdown-multiselect\n class=\"w-full\"\n [title]=\"'editor.record.form.topics.placeholder' | translate\"\n [maxRows]=\"6\"\n [selected]=\"topics\"\n [choices]=\"availableTopics || []\"\n [allowSearch]=\"true\"\n (selectValues)=\"handleItemSelection($event)\"\n >\n </gn-ui-dropdown-multiselect>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let topic of topics\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeTopic(topic)\"\n >{{ getTranslatedTopic(topic) }}\n </gn-ui-badge>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: ["title", "choices", "selected", "allowSearch", "maxRows", "searchInputValue"], outputs: ["selectValues"] }] }); }
43155
43272
  }
43156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldInspireThemeComponent, decorators: [{
43273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldTopicsComponent, decorators: [{
43157
43274
  type: Component,
43158
- args: [{ selector: 'gn-ui-form-field-inspire-theme', standalone: true, imports: [
43275
+ args: [{ selector: 'gn-ui-form-field-topics', standalone: true, imports: [
43159
43276
  CommonModule,
43160
43277
  AutocompleteComponent,
43161
43278
  NgIconComponent,
43162
43279
  BadgeComponent,
43163
43280
  TranslatePipe,
43164
43281
  DropdownMultiselectComponent,
43165
- ], template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-col gap-4\">\n <gn-ui-dropdown-multiselect\n class=\"w-full\"\n [title]=\"'editor.record.form.inspire.placeholder' | translate\"\n [maxRows]=\"6\"\n [selected]=\"themes\"\n [choices]=\"availableThemes || []\"\n [allowSearch]=\"true\"\n (selectValues)=\"handleItemSelection($event)\"\n >\n </gn-ui-dropdown-multiselect>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let theme of themes\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeTheme(theme)\"\n >{{ getTranslatedTheme(theme) }}\n </gn-ui-badge>\n </div>\n </div>\n</div>\n" }]
43282
+ ], template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-col gap-4\">\n <gn-ui-dropdown-multiselect\n class=\"w-full\"\n [title]=\"'editor.record.form.topics.placeholder' | translate\"\n [maxRows]=\"6\"\n [selected]=\"topics\"\n [choices]=\"availableTopics || []\"\n [allowSearch]=\"true\"\n (selectValues)=\"handleItemSelection($event)\"\n >\n </gn-ui-dropdown-multiselect>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let topic of topics\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeTopic(topic)\"\n >{{ getTranslatedTopic(topic) }}\n </gn-ui-badge>\n </div>\n </div>\n</div>\n" }]
43166
43283
  }], ctorParameters: () => [{ type: i1$1.TranslateService }], propDecorators: { value: [{
43167
43284
  type: Input
43168
43285
  }], valueChange: [{
@@ -43206,7 +43323,7 @@ class FormFieldComponent {
43206
43323
  get valueAsKeywords() {
43207
43324
  return this.value;
43208
43325
  }
43209
- get valueAsInspireTheme() {
43326
+ get valueAsTopics() {
43210
43327
  return this.value;
43211
43328
  }
43212
43329
  get valueAsConstraints() {
@@ -43219,7 +43336,7 @@ class FormFieldComponent {
43219
43336
  return this.value;
43220
43337
  }
43221
43338
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n *ngIf=\"config.hintKey\"\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifier'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-inspire-theme\n [value]=\"valueAsInspireTheme\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-inspire-theme>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordLicences"], outputs: ["recordLicencesChange"] }, { kind: "component", type: FormFieldDateComponent, selector: "gn-ui-form-field-date", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "readonly", "invalid", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "component", type: FormFieldSpatialToggleComponent, selector: "gn-ui-form-field-spatial-toggle" }, { kind: "component", type: FormFieldInspireThemeComponent, selector: "gn-ui-form-field-inspire-theme", inputs: ["value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i3$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
43339
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n *ngIf=\"config.hintKey\"\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifier'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordLicences"], outputs: ["recordLicencesChange"] }, { kind: "component", type: FormFieldDateComponent, selector: "gn-ui-form-field-date", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "readonly", "invalid", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "component", type: FormFieldSpatialToggleComponent, selector: "gn-ui-form-field-spatial-toggle" }, { kind: "component", type: FormFieldTopicsComponent, selector: "gn-ui-form-field-topics", inputs: ["value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i3$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
43223
43340
  }
43224
43341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, decorators: [{
43225
43342
  type: Component,
@@ -43244,9 +43361,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
43244
43361
  FormFieldConstraintsComponent,
43245
43362
  FormFieldConstraintsShortcutsComponent,
43246
43363
  FormFieldSpatialToggleComponent,
43247
- FormFieldInspireThemeComponent,
43364
+ FormFieldTopicsComponent,
43248
43365
  TextFieldModule,
43249
- ], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n *ngIf=\"config.hintKey\"\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifier'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-inspire-theme\n [value]=\"valueAsInspireTheme\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-inspire-theme>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n" }]
43366
+ ], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n *ngIf=\"config.hintKey\"\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifier'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n" }]
43250
43367
  }], propDecorators: { uniqueIdentifier: [{
43251
43368
  type: Input
43252
43369
  }], model: [{
@@ -43775,7 +43892,7 @@ class RouterFacade {
43775
43892
  this.routerService = routerService;
43776
43893
  this.currentRoute$ = this.store.pipe(select(selectCurrentRoute));
43777
43894
  this.pathParams$ = this.store.pipe(select(selectRouteParams));
43778
- this.searchParams$ = this.currentRoute$.pipe(filter((route) => !!route), filter((route) => route.url[0]?.path.startsWith(ROUTER_ROUTE_SEARCH)), map$1((route) => route.queryParams), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), map$1(expandQueryParams));
43895
+ this.searchParams$ = this.currentRoute$.pipe(filter$1((route) => !!route), filter$1((route) => route.url[0]?.path.startsWith(ROUTER_ROUTE_SEARCH)), map$1((route) => route.queryParams), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), map$1(expandQueryParams));
43779
43896
  this.routeMap = {
43780
43897
  dataset: ROUTER_ROUTE_DATASET,
43781
43898
  service: ROUTER_ROUTE_SERVICE,
@@ -43785,7 +43902,7 @@ class RouterFacade {
43785
43902
  goToMetadata(metadata) {
43786
43903
  const selectedRoute = this.routeMap[metadata.kind] || ROUTER_ROUTE_DATASET;
43787
43904
  this.pathParams$
43788
- .pipe(take(1), filter((params) => params.metadataUuid !== metadata.uniqueIdentifier))
43905
+ .pipe(take(1), filter$1((params) => params.metadataUuid !== metadata.uniqueIdentifier))
43789
43906
  .subscribe(() => {
43790
43907
  this.go({
43791
43908
  path: `${selectedRoute}/${metadata.uniqueIdentifier}`,
@@ -43846,7 +43963,7 @@ class RouterEffects {
43846
43963
  })), { dispatch: false });
43847
43964
  this.syncSearchState$ = createEffect(() => this.facade.searchParams$.pipe(mergeMap((searchParams) => this.fieldsService
43848
43965
  .buildFiltersFromFieldValues(searchParams)
43849
- .pipe(map$1((filters) => [searchParams, filters]))), startWith([null, {}]), pairwise$1(), map$1(([[oldParams, oldFilters], [newParams, newFilters]]) => {
43966
+ .pipe(map$1((filters) => [searchParams, filters]))), startWith([null, {}]), pairwise(), map$1(([[oldParams, oldFilters], [newParams, newFilters]]) => {
43850
43967
  let sortBy = ROUTE_PARAMS.SORT in newParams
43851
43968
  ? sortByFromString(newParams[ROUTE_PARAMS.SORT])
43852
43969
  : SortByEnum.CHANGE_DATE;
@@ -44059,5 +44176,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
44059
44176
  * Generated bundle index. Do not edit.
44060
44177
  */
44061
44178
 
44062
- 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, 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, FormFieldInspireThemeComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, 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, 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 };
44179
+ 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 };
44063
44180
  //# sourceMappingURL=geonetwork-ui.mjs.map