geonetwork-ui 2.8.0-dev.83aaa1736 → 2.8.0-dev.8b715be88

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 (146) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +25 -1
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +7 -7
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -2
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -3
  8. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +10 -10
  9. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +3 -2
  10. package/esm2022/libs/common/domain/src/index.mjs +3 -0
  11. package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
  12. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +2 -1
  13. package/esm2022/libs/common/domain/src/lib/model/search/sort-by.model.mjs +6 -1
  14. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  15. package/esm2022/libs/feature/dataviz/src/index.mjs +2 -1
  16. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +3 -1
  17. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +18 -7
  18. package/esm2022/libs/feature/dataviz/src/lib/stac-view/stac-view.component.mjs +51 -0
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +23 -3
  20. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  21. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
  22. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
  23. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +14 -1
  24. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +5 -1
  25. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +9 -7
  26. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +8 -12
  27. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  28. package/esm2022/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.mjs +37 -0
  29. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  30. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +2 -3
  31. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +3 -1
  32. package/esm2022/libs/util/shared/src/lib/utils/sort-by.mjs +9 -6
  33. package/esm2022/translations/de.json +13 -3
  34. package/esm2022/translations/en.json +13 -4
  35. package/esm2022/translations/es.json +12 -2
  36. package/esm2022/translations/fr.json +13 -3
  37. package/esm2022/translations/it.json +14 -4
  38. package/esm2022/translations/nl.json +12 -2
  39. package/esm2022/translations/pt.json +12 -2
  40. package/esm2022/translations/sk.json +13 -3
  41. package/fesm2022/geonetwork-ui.mjs +340 -83
  42. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  43. package/index.d.ts +1 -0
  44. package/index.d.ts.map +1 -1
  45. package/index.ts +1 -0
  46. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  47. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  48. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  49. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -1
  50. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  51. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  52. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +7 -7
  53. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  54. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  55. package/libs/common/domain/src/index.d.ts +3 -0
  56. package/libs/common/domain/src/index.d.ts.map +1 -0
  57. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +1 -1
  58. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
  59. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +7 -2
  60. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  61. package/libs/common/domain/src/lib/model/search/sort-by.model.d.ts.map +1 -1
  62. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  63. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  64. package/libs/feature/dataviz/src/index.d.ts +1 -0
  65. package/libs/feature/dataviz/src/index.d.ts.map +1 -1
  66. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  67. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  68. package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts +16 -0
  69. package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
  70. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +2 -0
  71. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  72. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
  73. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  74. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
  75. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  76. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -24
  77. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  78. package/libs/feature/router/src/lib/default/router.service.d.ts +2 -0
  79. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  80. package/libs/feature/router/src/lib/default/state/router.effects.d.ts +3 -1
  81. package/libs/feature/router/src/lib/default/state/router.effects.d.ts.map +1 -1
  82. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts +4 -3
  83. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts.map +1 -1
  84. package/libs/ui/elements/src/index.d.ts +1 -0
  85. package/libs/ui/elements/src/index.d.ts.map +1 -1
  86. package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts +8 -0
  87. package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts.map +1 -0
  88. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  89. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  90. package/libs/util/shared/src/lib/utils/sort-by.d.ts.map +1 -1
  91. package/package.json +1 -1
  92. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  93. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +2 -2
  94. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -1
  95. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +1 -1
  96. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -2
  97. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  98. package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -1
  99. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  100. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +1 -1
  101. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +1 -1
  102. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +27 -0
  103. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +13 -6
  104. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -2
  105. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -2
  106. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +37 -36
  107. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -2
  108. package/src/libs/common/domain/src/index.ts +2 -0
  109. package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +1 -1
  110. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +10 -1
  111. package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +5 -0
  112. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -1
  113. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +5 -0
  114. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +10 -0
  115. package/src/libs/feature/dataviz/src/index.ts +1 -0
  116. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +1 -0
  117. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +16 -5
  118. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.css +0 -0
  119. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.html +40 -0
  120. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.ts +62 -0
  121. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
  122. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -0
  123. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  124. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
  125. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
  126. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +30 -1
  127. package/src/libs/feature/router/src/lib/default/router.service.ts +8 -0
  128. package/src/libs/feature/router/src/lib/default/state/router.effects.ts +6 -7
  129. package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +8 -12
  130. package/src/libs/ui/elements/src/index.ts +1 -0
  131. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.css +0 -0
  132. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.html +31 -0
  133. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.ts +30 -0
  134. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +56 -14
  135. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +4 -2
  136. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +2 -0
  137. package/src/libs/util/shared/src/lib/utils/sort-by.ts +8 -5
  138. package/translations/de.json +13 -3
  139. package/translations/en.json +13 -4
  140. package/translations/es.json +12 -2
  141. package/translations/fr.json +13 -3
  142. package/translations/it.json +14 -4
  143. package/translations/nl.json +12 -2
  144. package/translations/pt.json +12 -2
  145. package/translations/sk.json +13 -3
  146. package/src/libs/common/domain/src/lib/index.ts +0 -2
@@ -15,7 +15,7 @@ import { TranslateCompiler, TranslateLoader, TranslateDefaultParser, TranslatePa
15
15
  import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
16
16
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
17
17
  import { map as map$1, shareReplay as shareReplay$1, catchError, tap as tap$1, filter as filter$1, startWith as startWith$1, withLatestFrom, switchMap as switchMap$1, take, mergeMap, delay, distinctUntilChanged, debounceTime, finalize, throttleTime, first as first$1, pairwise as pairwise$1, share, defaultIfEmpty, toArray } from 'rxjs/operators';
18
- import { of, map as map$2, lastValueFrom, fromEvent, startWith, shareReplay, filter, pairwise, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, animationFrameScheduler, debounceTime as debounceTime$1, Observable, buffer, tap as tap$2, combineLatestWith, take as take$1, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1 } from 'rxjs';
18
+ import { of, map as map$2, lastValueFrom, fromEvent, startWith, shareReplay, filter, pairwise, switchMap, Subject, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, animationFrameScheduler, debounceTime as debounceTime$1, Observable, buffer, tap as tap$2, combineLatestWith, take as take$1, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1 } from 'rxjs';
19
19
  import { lt, valid, coerce, satisfies, ltr } from 'semver';
20
20
  import chroma from 'chroma-js';
21
21
  import * as i1$2 from '@angular/common';
@@ -31,7 +31,7 @@ import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/g
31
31
  import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
32
32
  import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
33
33
  import { provideIcons, provideNgIconsConfig, NgIconComponent, NgIcon } from '@ng-icons/core';
34
- import { matSwipeOutline, matErrorOutlineOutline, matComputerOutline, matLocationSearchingOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matInfoOutline, matWarningAmberOutline, matCloseOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline, matMoreHorizOutline } from '@ng-icons/material-icons/outline';
34
+ import { matSwipeOutline, matErrorOutlineOutline, matComputerOutline, matLocationSearchingOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matInfoOutline, matWarningAmberOutline, matCloseOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline, matDeleteOutline, matMoreHorizOutline } from '@ng-icons/material-icons/outline';
35
35
  import { createLegendFromLayer } from '@geospatial-sdk/legend';
36
36
  import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
37
37
  import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
@@ -668,6 +668,8 @@ function matchProtocol(protocol) {
668
668
  return 'GPFDL';
669
669
  if (/DB:POSTGIS/i.test(protocol))
670
670
  return 'postgis';
671
+ if (/stac\W*items/i.test(protocol))
672
+ return 'stac';
671
673
  return 'other';
672
674
  }
673
675
  function matchMimeType(format) {
@@ -917,6 +919,7 @@ marker('record.metadata.api.accessServiceProtocol.GPFDL');
917
919
  marker('record.metadata.api.accessServiceProtocol.tms');
918
920
  marker('record.metadata.api.accessServiceProtocol.maplibre-style');
919
921
  marker('record.metadata.api.accessServiceProtocol.postgis');
922
+ marker('record.metadata.api.accessServiceProtocol.stac');
920
923
  marker('record.metadata.api.accessServiceProtocol.other');
921
924
 
922
925
  function getUpdateFrequencyFromFrequencyCode(frequencyCode) {
@@ -1577,7 +1580,8 @@ function readDefaultLanguage$2(rootEl) {
1577
1580
  return pipe(findChildElement('gmd:language', false), findChildElement('lan:LanguageCode'), readAttribute('codeListValue'), map((lang) => (lang ? toLang2(lang.toLowerCase()) : null)))(rootEl);
1578
1581
  }
1579
1582
  function readResourceIdentifier(rootEl) {
1580
- return pipe(findIdentification(), findNestedElement('gmd:citation', 'gmd:CI_Citation', 'gmd:identifier', 'gmd:MD_Identifier', 'gmd:code'), extractCharacterString())(rootEl);
1583
+ const code = pipe(findIdentification(), findNestedElement('gmd:citation', 'gmd:CI_Citation', 'gmd:identifier', 'gmd:MD_Identifier', 'gmd:code'), extractCharacterString())(rootEl);
1584
+ return code ? [{ code }] : [];
1581
1585
  }
1582
1586
 
1583
1587
  function writeLocalizedElement(writeFn, text, translations, defaultLanguage) {
@@ -2083,8 +2087,9 @@ function writeDefaultLanguage$1(record, rootEl) {
2083
2087
  return pipe(findNestedChildOrCreate('gmd:language', 'gmd:LanguageCode'), writeAttribute('codeList', 'http://www.loc.gov/standards/iso639-2/'), writeAttribute('codeListValue', lang3))(rootEl);
2084
2088
  }
2085
2089
  function writeResourceIdentifier(record, rootEl) {
2086
- pipe(findOrCreateIdentification(), findNestedChildOrCreate('gmd:citation', 'gmd:CI_Citation'), removeChildrenByName('gmd:identifier'), record.resourceIdentifier
2087
- ? pipe(createNestedChild('gmd:identifier', 'gmd:MD_Identifier', 'gmd:code'), writeCharacterString(record.resourceIdentifier))
2090
+ const firstIdentifier = record.resourceIdentifiers?.[0]?.code;
2091
+ pipe(findOrCreateIdentification(), findNestedChildOrCreate('gmd:citation', 'gmd:CI_Citation'), removeChildrenByName('gmd:identifier'), firstIdentifier
2092
+ ? pipe(createNestedChild('gmd:identifier', 'gmd:MD_Identifier', 'gmd:code'), writeCharacterString(firstIdentifier))
2088
2093
  : noop)(rootEl);
2089
2094
  }
2090
2095
 
@@ -2098,7 +2103,7 @@ class Iso19139Converter extends BaseConverter {
2098
2103
  recordUpdated: readRecordUpdated$2,
2099
2104
  recordCreated: () => undefined, // not supported in ISO19139
2100
2105
  recordPublished: () => undefined, // not supported in ISO19139
2101
- resourceIdentifier: readResourceIdentifier,
2106
+ resourceIdentifiers: readResourceIdentifier,
2102
2107
  resourceUpdated: readResourceUpdated$1,
2103
2108
  resourceCreated: readResourceCreated$1,
2104
2109
  resourcePublished: readResourcePublished,
@@ -2135,7 +2140,7 @@ class Iso19139Converter extends BaseConverter {
2135
2140
  recordUpdated: writeRecordUpdated$1,
2136
2141
  recordCreated: () => undefined, // not supported in ISO19139
2137
2142
  recordPublished: () => undefined, // not supported in ISO19139
2138
- resourceIdentifier: writeResourceIdentifier,
2143
+ resourceIdentifiers: writeResourceIdentifier,
2139
2144
  resourceUpdated: writeResourceUpdated$1,
2140
2145
  resourceCreated: writeResourceCreated$1,
2141
2146
  resourcePublished: writeResourcePublished$1,
@@ -2236,11 +2241,11 @@ class Iso19139Converter extends BaseConverter {
2236
2241
  const onlineResources = this.readers['onlineResources'](rootEl, tr);
2237
2242
  const otherLanguages = this.readers['otherLanguages'](rootEl, tr);
2238
2243
  const defaultLanguage = this.readers['defaultLanguage'](rootEl, tr);
2239
- const resourceIdentifier = this.readers['resourceIdentifier'](rootEl, tr);
2244
+ const resourceIdentifiers = this.readers['resourceIdentifiers'](rootEl, tr);
2240
2245
  const spatialExtents = this.readers['spatialExtents'](rootEl, tr);
2241
2246
  return {
2242
2247
  uniqueIdentifier,
2243
- ...(resourceIdentifier && { resourceIdentifier }),
2248
+ ...(resourceIdentifiers?.length > 0 && { resourceIdentifiers }),
2244
2249
  kind,
2245
2250
  otherLanguages,
2246
2251
  defaultLanguage,
@@ -2368,8 +2373,8 @@ class Iso19139Converter extends BaseConverter {
2368
2373
  this.writers['otherConstraints'](record, rootEl);
2369
2374
  fieldChanged('onlineResources') &&
2370
2375
  this.writers['onlineResources'](record, rootEl);
2371
- fieldChanged('resourceIdentifier') &&
2372
- this.writers['resourceIdentifier'](record, rootEl);
2376
+ fieldChanged('resourceIdentifiers') &&
2377
+ this.writers['resourceIdentifiers'](record, rootEl);
2373
2378
  if (record.kind === 'dataset') {
2374
2379
  fieldChanged('status') && this.writers['status'](record, rootEl);
2375
2380
  fieldChanged('updateFrequency') &&
@@ -3316,7 +3321,7 @@ class DcatApConverter extends BaseConverter {
3316
3321
  spatialExtents: readSpatialExtents,
3317
3322
  keywords: readKeywords,
3318
3323
  topics: readTopics,
3319
- resourceIdentifier: () => undefined,
3324
+ resourceIdentifiers: () => undefined,
3320
3325
  recordUpdated: readRecordUpdated,
3321
3326
  recordCreated: readRecordCreated,
3322
3327
  resourceUpdated: readResourceUpdated,
@@ -3352,7 +3357,7 @@ class DcatApConverter extends BaseConverter {
3352
3357
  recordUpdated: () => undefined,
3353
3358
  recordCreated: () => undefined,
3354
3359
  recordPublished: () => undefined,
3355
- resourceIdentifier: () => undefined,
3360
+ resourceIdentifiers: () => undefined,
3356
3361
  resourceUpdated: () => undefined,
3357
3362
  resourceCreated: () => undefined,
3358
3363
  resourcePublished: () => undefined,
@@ -19163,6 +19168,7 @@ var de = {
19163
19168
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
19164
19169
  "record.metadata.api.accessServiceProtocol.other": "",
19165
19170
  "record.metadata.api.accessServiceProtocol.postgis": "",
19171
+ "record.metadata.api.accessServiceProtocol.stac": "",
19166
19172
  "record.metadata.api.accessServiceProtocol.tms": "",
19167
19173
  "record.metadata.api.accessServiceProtocol.wfs": "",
19168
19174
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -19204,13 +19210,14 @@ var de = {
19204
19210
  "record.metadata.contact": "Kontakt",
19205
19211
  "record.metadata.creation": "Erstellungsdatum",
19206
19212
  "record.metadata.details": "Über die Daten",
19213
+ "record.metadata.doi.copy": "",
19214
+ "record.metadata.doi.open": "",
19207
19215
  "record.metadata.download": "Downloads",
19208
19216
  "record.metadata.feature.catalog": "",
19209
19217
  "record.metadata.formats": "Formate",
19210
19218
  "record.metadata.isGeographical": "Geographischer Datensatz",
19211
19219
  "record.metadata.keywords": "Stichworte",
19212
19220
  "record.metadata.languages": "Sprachen",
19213
- "record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
19214
19221
  "record.metadata.link.postgis.table": "",
19215
19222
  "record.metadata.link.postgis.tooltip": "",
19216
19223
  "record.metadata.linked.datasets": "Verknüpfte Datensätze",
@@ -19253,6 +19260,9 @@ var de = {
19253
19260
  "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
19254
19261
  "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
19255
19262
  "record.metadata.related": "Entdecken Sie den Katalog",
19263
+ "record.metadata.resourceCreated": "Erstellt am {date}",
19264
+ "record.metadata.resourcePublished": "Veröffentlicht am {date}",
19265
+ "record.metadata.resourceUpdated": "Zuletzt aktualisiert am {date}",
19256
19266
  "record.metadata.ressources.and.links": "Ressourcen und Links",
19257
19267
  "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
19258
19268
  "record.metadata.status": "Status",
@@ -19265,8 +19275,9 @@ var de = {
19265
19275
  "record.metadata.title": "Titel",
19266
19276
  "record.metadata.topics": "Kategorien",
19267
19277
  "record.metadata.uniqueId": "Eindeutige Kennung",
19278
+ "record.metadata.update": "Aktualisierungsdatum",
19268
19279
  "record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
19269
- "record.metadata.updatedOn": "Geändert am",
19280
+ "record.metadata.updatedOn": "Informationen geändert am",
19270
19281
  "record.metadata.usage": "Nutzung und Einschränkungen",
19271
19282
  "record.metadata.userFeedbacks": "",
19272
19283
  "record.metadata.userFeedbacks.anonymousUser": "",
@@ -19281,6 +19292,7 @@ var de = {
19281
19292
  "record.tab.chart": "Diagramm",
19282
19293
  "record.tab.data": "Tabelle",
19283
19294
  "record.tab.map": "Karte",
19295
+ "record.tab.stac": "",
19284
19296
  "record.was.created.time": "erstellte diesen Ressource {time}",
19285
19297
  records: records$7,
19286
19298
  "results.layout.selectOne": "Layout auswählen",
@@ -19289,7 +19301,6 @@ var de = {
19289
19301
  "results.records.hits.found": "{hits, plural, =0{Keine Ressource entsprechen der angegebenen Suche.} one{1 Ressource gefunden.} other{{hits} Ressourcen gefunden.}}",
19290
19302
  "results.records.hits.selected": "{ amount } ausgewählt",
19291
19303
  "results.showMore": "Mehr Ergebnisse anzeigen...",
19292
- "results.sortBy.changeDate": "",
19293
19304
  "results.sortBy.dateStamp": "Neueste",
19294
19305
  "results.sortBy.popularity": "Beliebtheit",
19295
19306
  "results.sortBy.qualityScore": "Fertigstellungsanzeige",
@@ -19373,6 +19384,10 @@ var de = {
19373
19384
  "service.metadata.spatialExtent": "",
19374
19385
  "share.tab.permalink": "Teilen",
19375
19386
  "share.tab.webComponent": "Integrieren",
19387
+ "stac.filter.from": "",
19388
+ "stac.filter.period": "",
19389
+ "stac.filter.reset": "",
19390
+ "stac.filter.to": "",
19376
19391
  "table.loading.data": "Daten werden geladen...",
19377
19392
  "table.object.count": "Objekte in diesem Datensatz",
19378
19393
  "table.paginator.firstPage": "Erste Seite",
@@ -19640,7 +19655,6 @@ var en = {
19640
19655
  "editor.record.form.topics.inspire.intelligence": "Intelligence / Military",
19641
19656
  "editor.record.form.topics.inspire.location": "Location",
19642
19657
  "editor.record.form.topics.inspire.oceans": "Oceans",
19643
- "editor.record.form.topics.inspire.placeholder": "Select an INSPIRE theme",
19644
19658
  "editor.record.form.topics.inspire.planning": "Planning / Cadastre",
19645
19659
  "editor.record.form.topics.inspire.society": "Society",
19646
19660
  "editor.record.form.topics.inspire.structure": "Structure",
@@ -19819,6 +19833,7 @@ var en = {
19819
19833
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "ogcFeatures",
19820
19834
  "record.metadata.api.accessServiceProtocol.other": "other",
19821
19835
  "record.metadata.api.accessServiceProtocol.postgis": "PostGIS",
19836
+ "record.metadata.api.accessServiceProtocol.stac": "STAC",
19822
19837
  "record.metadata.api.accessServiceProtocol.tms": "tms",
19823
19838
  "record.metadata.api.accessServiceProtocol.wfs": "wfs",
19824
19839
  "record.metadata.api.accessServiceProtocol.wms": "wms",
@@ -19860,13 +19875,14 @@ var en = {
19860
19875
  "record.metadata.contact": "Contact",
19861
19876
  "record.metadata.creation": "Date of creation",
19862
19877
  "record.metadata.details": "About the data",
19878
+ "record.metadata.doi.copy": "Copy DOI",
19879
+ "record.metadata.doi.open": "Open DOI link",
19863
19880
  "record.metadata.download": "Downloads",
19864
19881
  "record.metadata.feature.catalog": "Feature catalog",
19865
19882
  "record.metadata.formats": "Formats",
19866
19883
  "record.metadata.isGeographical": "Geographical dataset",
19867
19884
  "record.metadata.keywords": "Keywords",
19868
19885
  "record.metadata.languages": "Languages",
19869
- "record.metadata.lastUpdate": "Last updated on {date}",
19870
19886
  "record.metadata.link.postgis.table": "table :",
19871
19887
  "record.metadata.link.postgis.tooltip": "PostGIS resources do not have access links",
19872
19888
  "record.metadata.linked.datasets": "Associated datasets",
@@ -19909,6 +19925,9 @@ var en = {
19909
19925
  "record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
19910
19926
  "record.metadata.quality.updateFrequency.success": "Update frequency is specified",
19911
19927
  "record.metadata.related": "Explore the catalog",
19928
+ "record.metadata.resourceCreated": "Created on {date}",
19929
+ "record.metadata.resourcePublished": "Published on {date}",
19930
+ "record.metadata.resourceUpdated": "Last updated on {date}",
19912
19931
  "record.metadata.ressources.and.links": "Resources and links",
19913
19932
  "record.metadata.sheet": "Original metadata",
19914
19933
  "record.metadata.status": "Status",
@@ -19921,8 +19940,9 @@ var en = {
19921
19940
  "record.metadata.title": "Title",
19922
19941
  "record.metadata.topics": "Categories",
19923
19942
  "record.metadata.uniqueId": "Unique Identifier",
19943
+ "record.metadata.update": "Date of update",
19924
19944
  "record.metadata.updateFrequency": "Data Update Frequency",
19925
- "record.metadata.updatedOn": "Updated on",
19945
+ "record.metadata.updatedOn": "Metadata modified on",
19926
19946
  "record.metadata.usage": "License and Conditions",
19927
19947
  "record.metadata.userFeedbacks": "Questions / Answers",
19928
19948
  "record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
@@ -19937,6 +19957,7 @@ var en = {
19937
19957
  "record.tab.chart": "Chart",
19938
19958
  "record.tab.data": "Table",
19939
19959
  "record.tab.map": "Map",
19960
+ "record.tab.stac": "STAC",
19940
19961
  "record.was.created.time": "created this record {time}",
19941
19962
  records: records$6,
19942
19963
  "results.layout.selectOne": "Results layout",
@@ -19945,7 +19966,6 @@ var en = {
19945
19966
  "results.records.hits.found": "{hits, plural, =0{No record match the specified search.} one{1 record found.} other{{hits} records found.}}",
19946
19967
  "results.records.hits.selected": "{ amount } selected",
19947
19968
  "results.showMore": "Show more results...",
19948
- "results.sortBy.changeDate": "Last modification",
19949
19969
  "results.sortBy.dateStamp": "Newest",
19950
19970
  "results.sortBy.popularity": "Popularity",
19951
19971
  "results.sortBy.qualityScore": "Completion score",
@@ -20029,6 +20049,10 @@ var en = {
20029
20049
  "service.metadata.spatialExtent": "Spatial extent",
20030
20050
  "share.tab.permalink": "Share",
20031
20051
  "share.tab.webComponent": "Integrate",
20052
+ "stac.filter.from": "From",
20053
+ "stac.filter.period": "Period",
20054
+ "stac.filter.reset": "Reset filters",
20055
+ "stac.filter.to": "To",
20032
20056
  "table.loading.data": "Loading data...",
20033
20057
  "table.object.count": "Objects in this dataset",
20034
20058
  "table.paginator.firstPage": "First page",
@@ -20474,6 +20498,7 @@ var es = {
20474
20498
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
20475
20499
  "record.metadata.api.accessServiceProtocol.other": "",
20476
20500
  "record.metadata.api.accessServiceProtocol.postgis": "",
20501
+ "record.metadata.api.accessServiceProtocol.stac": "",
20477
20502
  "record.metadata.api.accessServiceProtocol.tms": "",
20478
20503
  "record.metadata.api.accessServiceProtocol.wfs": "",
20479
20504
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -20515,13 +20540,14 @@ var es = {
20515
20540
  "record.metadata.contact": "",
20516
20541
  "record.metadata.creation": "",
20517
20542
  "record.metadata.details": "",
20543
+ "record.metadata.doi.copy": "",
20544
+ "record.metadata.doi.open": "",
20518
20545
  "record.metadata.download": "",
20519
20546
  "record.metadata.feature.catalog": "",
20520
20547
  "record.metadata.formats": "",
20521
20548
  "record.metadata.isGeographical": "",
20522
20549
  "record.metadata.keywords": "",
20523
20550
  "record.metadata.languages": "",
20524
- "record.metadata.lastUpdate": "",
20525
20551
  "record.metadata.link.postgis.table": "",
20526
20552
  "record.metadata.link.postgis.tooltip": "",
20527
20553
  "record.metadata.linked.datasets": "",
@@ -20564,6 +20590,9 @@ var es = {
20564
20590
  "record.metadata.quality.updateFrequency.failed": "",
20565
20591
  "record.metadata.quality.updateFrequency.success": "",
20566
20592
  "record.metadata.related": "",
20593
+ "record.metadata.resourceCreated": "",
20594
+ "record.metadata.resourcePublished": "",
20595
+ "record.metadata.resourceUpdated": "",
20567
20596
  "record.metadata.ressources.and.links": "Recursos y enlaces",
20568
20597
  "record.metadata.sheet": "",
20569
20598
  "record.metadata.status": "",
@@ -20576,6 +20605,7 @@ var es = {
20576
20605
  "record.metadata.title": "",
20577
20606
  "record.metadata.topics": "",
20578
20607
  "record.metadata.uniqueId": "",
20608
+ "record.metadata.update": "",
20579
20609
  "record.metadata.updateFrequency": "",
20580
20610
  "record.metadata.updatedOn": "",
20581
20611
  "record.metadata.usage": "",
@@ -20592,6 +20622,7 @@ var es = {
20592
20622
  "record.tab.chart": "",
20593
20623
  "record.tab.data": "",
20594
20624
  "record.tab.map": "",
20625
+ "record.tab.stac": "",
20595
20626
  "record.was.created.time": "",
20596
20627
  records: records$5,
20597
20628
  "results.layout.selectOne": "",
@@ -20600,7 +20631,6 @@ var es = {
20600
20631
  "results.records.hits.found": "",
20601
20632
  "results.records.hits.selected": "",
20602
20633
  "results.showMore": "",
20603
- "results.sortBy.changeDate": "",
20604
20634
  "results.sortBy.dateStamp": "",
20605
20635
  "results.sortBy.popularity": "",
20606
20636
  "results.sortBy.qualityScore": "",
@@ -20684,6 +20714,10 @@ var es = {
20684
20714
  "service.metadata.spatialExtent": "",
20685
20715
  "share.tab.permalink": "",
20686
20716
  "share.tab.webComponent": "",
20717
+ "stac.filter.from": "",
20718
+ "stac.filter.period": "",
20719
+ "stac.filter.reset": "",
20720
+ "stac.filter.to": "",
20687
20721
  "table.loading.data": "",
20688
20722
  "table.object.count": "",
20689
20723
  "table.paginator.firstPage": "Primera página",
@@ -21129,6 +21163,7 @@ var fr = {
21129
21163
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
21130
21164
  "record.metadata.api.accessServiceProtocol.other": "autre",
21131
21165
  "record.metadata.api.accessServiceProtocol.postgis": "PostGIS",
21166
+ "record.metadata.api.accessServiceProtocol.stac": "STAC",
21132
21167
  "record.metadata.api.accessServiceProtocol.tms": "",
21133
21168
  "record.metadata.api.accessServiceProtocol.wfs": "",
21134
21169
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -21170,13 +21205,14 @@ var fr = {
21170
21205
  "record.metadata.contact": "Contact",
21171
21206
  "record.metadata.creation": "Date de création",
21172
21207
  "record.metadata.details": "À propos de la donnée",
21208
+ "record.metadata.doi.copy": "Copier le DOI",
21209
+ "record.metadata.doi.open": "Ouvrir le lien DOI",
21173
21210
  "record.metadata.download": "Téléchargements",
21174
21211
  "record.metadata.feature.catalog": "Catalogue d'attributs",
21175
21212
  "record.metadata.formats": "Formats",
21176
21213
  "record.metadata.isGeographical": "Donnée géographique",
21177
21214
  "record.metadata.keywords": "Mots-clés",
21178
21215
  "record.metadata.languages": "Langues",
21179
- "record.metadata.lastUpdate": "Mis à jour le {date}",
21180
21216
  "record.metadata.link.postgis.table": "table :",
21181
21217
  "record.metadata.link.postgis.tooltip": "Les ressources de type PostGIS n'ont pas de lien d'accès",
21182
21218
  "record.metadata.linked.datasets": "Jeux de données associés",
@@ -21219,6 +21255,9 @@ var fr = {
21219
21255
  "record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
21220
21256
  "record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
21221
21257
  "record.metadata.related": "Explorez le catalogue",
21258
+ "record.metadata.resourceCreated": "Créé le {date}",
21259
+ "record.metadata.resourcePublished": "Publié le {date}",
21260
+ "record.metadata.resourceUpdated": "Mis à jour le {date}",
21222
21261
  "record.metadata.ressources.and.links": "Ressources et liens",
21223
21262
  "record.metadata.sheet": "Fiche de métadonnées d'origine",
21224
21263
  "record.metadata.status": "Statut",
@@ -21231,8 +21270,9 @@ var fr = {
21231
21270
  "record.metadata.title": "Intitulé",
21232
21271
  "record.metadata.topics": "Catégories",
21233
21272
  "record.metadata.uniqueId": "Identificateur de ressource unique",
21273
+ "record.metadata.update": "Date de mise à jour",
21234
21274
  "record.metadata.updateFrequency": "Fréquence de mise à jour des données",
21235
- "record.metadata.updatedOn": "Modifié le",
21275
+ "record.metadata.updatedOn": "Fiche de métadonnées modifiée le",
21236
21276
  "record.metadata.usage": "Licences et conditions d'utilisation",
21237
21277
  "record.metadata.userFeedbacks": "Questions / Réponses",
21238
21278
  "record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
@@ -21247,6 +21287,7 @@ var fr = {
21247
21287
  "record.tab.chart": "Graphique",
21248
21288
  "record.tab.data": "Tableau",
21249
21289
  "record.tab.map": "Carte",
21290
+ "record.tab.stac": "STAC",
21250
21291
  "record.was.created.time": "a créé cette ressource {time}",
21251
21292
  records: records$4,
21252
21293
  "results.layout.selectOne": "Affichage des résultats",
@@ -21255,7 +21296,6 @@ var fr = {
21255
21296
  "results.records.hits.found": "{hits, plural, =0{Aucune correspondance.} one{1 ressource trouvée.} other{{hits} ressources.}}",
21256
21297
  "results.records.hits.selected": "{amount, plural, one{1 selectionné} other{{ amount } sélectionnés}}",
21257
21298
  "results.showMore": "Plus de résultats...",
21258
- "results.sortBy.changeDate": "Dernière modification",
21259
21299
  "results.sortBy.dateStamp": "Plus récent",
21260
21300
  "results.sortBy.popularity": "Popularité",
21261
21301
  "results.sortBy.qualityScore": "Indicateur de complétion",
@@ -21339,6 +21379,10 @@ var fr = {
21339
21379
  "service.metadata.spatialExtent": "Etendue spatiale",
21340
21380
  "share.tab.permalink": "Partager",
21341
21381
  "share.tab.webComponent": "Intégrer",
21382
+ "stac.filter.from": "Du",
21383
+ "stac.filter.period": "Choix de la période",
21384
+ "stac.filter.reset": "Réinitialiser les filtres",
21385
+ "stac.filter.to": "Au",
21342
21386
  "table.loading.data": "Chargement des données...",
21343
21387
  "table.object.count": "enregistrements dans ce jeu de données",
21344
21388
  "table.paginator.firstPage": "Première page",
@@ -21784,6 +21828,7 @@ var it = {
21784
21828
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
21785
21829
  "record.metadata.api.accessServiceProtocol.other": "",
21786
21830
  "record.metadata.api.accessServiceProtocol.postgis": "",
21831
+ "record.metadata.api.accessServiceProtocol.stac": "",
21787
21832
  "record.metadata.api.accessServiceProtocol.tms": "",
21788
21833
  "record.metadata.api.accessServiceProtocol.wfs": "",
21789
21834
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -21825,13 +21870,14 @@ var it = {
21825
21870
  "record.metadata.contact": "Contatto",
21826
21871
  "record.metadata.creation": "Data di creazione",
21827
21872
  "record.metadata.details": "A proposito del dati",
21873
+ "record.metadata.doi.copy": "",
21874
+ "record.metadata.doi.open": "",
21828
21875
  "record.metadata.download": "Download",
21829
21876
  "record.metadata.feature.catalog": "Catalogo dei oggetti",
21830
21877
  "record.metadata.formats": "Formati",
21831
21878
  "record.metadata.isGeographical": "Dati geografici",
21832
21879
  "record.metadata.keywords": "Parole chiave",
21833
21880
  "record.metadata.languages": "Lingue",
21834
- "record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
21835
21881
  "record.metadata.link.postgis.table": "",
21836
21882
  "record.metadata.link.postgis.tooltip": "",
21837
21883
  "record.metadata.linked.datasets": "",
@@ -21874,8 +21920,11 @@ var it = {
21874
21920
  "record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
21875
21921
  "record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
21876
21922
  "record.metadata.related": "Vedi anche",
21923
+ "record.metadata.resourceCreated": "Creato il {date}",
21924
+ "record.metadata.resourcePublished": "Pubblicato il {date}",
21925
+ "record.metadata.resourceUpdated": "Ultimo aggiornamento il {date}",
21877
21926
  "record.metadata.ressources.and.links": "Risorse e collegamenti",
21878
- "record.metadata.sheet": "Origine del metadata",
21927
+ "record.metadata.sheet": "Origine dei metadati",
21879
21928
  "record.metadata.status": "Stato",
21880
21929
  "record.metadata.status.notPublished": "Non pubblicato",
21881
21930
  "record.metadata.status.published": "Pubblicato",
@@ -21886,8 +21935,9 @@ var it = {
21886
21935
  "record.metadata.title": "Titolo",
21887
21936
  "record.metadata.topics": "Categorie",
21888
21937
  "record.metadata.uniqueId": "Identificatore unico di risorsa",
21938
+ "record.metadata.update": "Data di aggiornamento",
21889
21939
  "record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
21890
- "record.metadata.updatedOn": "Modificato il",
21940
+ "record.metadata.updatedOn": "Metadati modificati il",
21891
21941
  "record.metadata.usage": "Licenze e limiti di utilizzo",
21892
21942
  "record.metadata.userFeedbacks": "Domande / Risposte",
21893
21943
  "record.metadata.userFeedbacks.anonymousUser": "Per pubblicare un commento, effettua il login.",
@@ -21902,6 +21952,7 @@ var it = {
21902
21952
  "record.tab.chart": "Grafico",
21903
21953
  "record.tab.data": "Tabella",
21904
21954
  "record.tab.map": "Mappa",
21955
+ "record.tab.stac": "",
21905
21956
  "record.was.created.time": "ha creato questi dati {time}",
21906
21957
  records: records$3,
21907
21958
  "results.layout.selectOne": "Mostra risultati",
@@ -21910,7 +21961,6 @@ var it = {
21910
21961
  "results.records.hits.found": "{hits, plural, =0{Nessuna corrispondenza.} one{1 record trovato.} other{{hits} risultati.}}",
21911
21962
  "results.records.hits.selected": "{amount, plural, one{1 selezionato} other{{ amount } selezionati}}",
21912
21963
  "results.showMore": "Altri risultati...",
21913
- "results.sortBy.changeDate": "Ultima modifica",
21914
21964
  "results.sortBy.dateStamp": "Più recente",
21915
21965
  "results.sortBy.popularity": "Popolarità",
21916
21966
  "results.sortBy.qualityScore": "Indicatore di completamento",
@@ -21994,6 +22044,10 @@ var it = {
21994
22044
  "service.metadata.spatialExtent": "Estensione spaziale",
21995
22045
  "share.tab.permalink": "Condividere",
21996
22046
  "share.tab.webComponent": "Incorporare",
22047
+ "stac.filter.from": "",
22048
+ "stac.filter.period": "",
22049
+ "stac.filter.reset": "",
22050
+ "stac.filter.to": "",
21997
22051
  "table.loading.data": "Caricamento dei dati...",
21998
22052
  "table.object.count": "record in questi dati",
21999
22053
  "table.paginator.firstPage": "Prima pagina",
@@ -22439,6 +22493,7 @@ var nl = {
22439
22493
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
22440
22494
  "record.metadata.api.accessServiceProtocol.other": "",
22441
22495
  "record.metadata.api.accessServiceProtocol.postgis": "",
22496
+ "record.metadata.api.accessServiceProtocol.stac": "",
22442
22497
  "record.metadata.api.accessServiceProtocol.tms": "",
22443
22498
  "record.metadata.api.accessServiceProtocol.wfs": "",
22444
22499
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -22480,13 +22535,14 @@ var nl = {
22480
22535
  "record.metadata.contact": "",
22481
22536
  "record.metadata.creation": "",
22482
22537
  "record.metadata.details": "",
22538
+ "record.metadata.doi.copy": "",
22539
+ "record.metadata.doi.open": "",
22483
22540
  "record.metadata.download": "",
22484
22541
  "record.metadata.feature.catalog": "",
22485
22542
  "record.metadata.formats": "",
22486
22543
  "record.metadata.isGeographical": "",
22487
22544
  "record.metadata.keywords": "",
22488
22545
  "record.metadata.languages": "",
22489
- "record.metadata.lastUpdate": "",
22490
22546
  "record.metadata.link.postgis.table": "",
22491
22547
  "record.metadata.link.postgis.tooltip": "",
22492
22548
  "record.metadata.linked.datasets": "",
@@ -22529,6 +22585,9 @@ var nl = {
22529
22585
  "record.metadata.quality.updateFrequency.failed": "",
22530
22586
  "record.metadata.quality.updateFrequency.success": "",
22531
22587
  "record.metadata.related": "",
22588
+ "record.metadata.resourceCreated": "",
22589
+ "record.metadata.resourcePublished": "",
22590
+ "record.metadata.resourceUpdated": "",
22532
22591
  "record.metadata.ressources.and.links": "Bronnen en links",
22533
22592
  "record.metadata.sheet": "",
22534
22593
  "record.metadata.status": "",
@@ -22541,6 +22600,7 @@ var nl = {
22541
22600
  "record.metadata.title": "",
22542
22601
  "record.metadata.topics": "",
22543
22602
  "record.metadata.uniqueId": "",
22603
+ "record.metadata.update": "",
22544
22604
  "record.metadata.updateFrequency": "",
22545
22605
  "record.metadata.updatedOn": "",
22546
22606
  "record.metadata.usage": "",
@@ -22557,6 +22617,7 @@ var nl = {
22557
22617
  "record.tab.chart": "",
22558
22618
  "record.tab.data": "",
22559
22619
  "record.tab.map": "",
22620
+ "record.tab.stac": "",
22560
22621
  "record.was.created.time": "",
22561
22622
  records: records$2,
22562
22623
  "results.layout.selectOne": "",
@@ -22565,7 +22626,6 @@ var nl = {
22565
22626
  "results.records.hits.found": "",
22566
22627
  "results.records.hits.selected": "",
22567
22628
  "results.showMore": "",
22568
- "results.sortBy.changeDate": "",
22569
22629
  "results.sortBy.dateStamp": "",
22570
22630
  "results.sortBy.popularity": "",
22571
22631
  "results.sortBy.qualityScore": "",
@@ -22649,6 +22709,10 @@ var nl = {
22649
22709
  "service.metadata.spatialExtent": "",
22650
22710
  "share.tab.permalink": "",
22651
22711
  "share.tab.webComponent": "",
22712
+ "stac.filter.from": "",
22713
+ "stac.filter.period": "",
22714
+ "stac.filter.reset": "",
22715
+ "stac.filter.to": "",
22652
22716
  "table.loading.data": "",
22653
22717
  "table.object.count": "",
22654
22718
  "table.paginator.firstPage": "",
@@ -23094,6 +23158,7 @@ var pt = {
23094
23158
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
23095
23159
  "record.metadata.api.accessServiceProtocol.other": "",
23096
23160
  "record.metadata.api.accessServiceProtocol.postgis": "",
23161
+ "record.metadata.api.accessServiceProtocol.stac": "",
23097
23162
  "record.metadata.api.accessServiceProtocol.tms": "",
23098
23163
  "record.metadata.api.accessServiceProtocol.wfs": "",
23099
23164
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -23135,13 +23200,14 @@ var pt = {
23135
23200
  "record.metadata.contact": "",
23136
23201
  "record.metadata.creation": "",
23137
23202
  "record.metadata.details": "",
23203
+ "record.metadata.doi.copy": "",
23204
+ "record.metadata.doi.open": "",
23138
23205
  "record.metadata.download": "",
23139
23206
  "record.metadata.feature.catalog": "",
23140
23207
  "record.metadata.formats": "",
23141
23208
  "record.metadata.isGeographical": "",
23142
23209
  "record.metadata.keywords": "",
23143
23210
  "record.metadata.languages": "",
23144
- "record.metadata.lastUpdate": "",
23145
23211
  "record.metadata.link.postgis.table": "",
23146
23212
  "record.metadata.link.postgis.tooltip": "",
23147
23213
  "record.metadata.linked.datasets": "",
@@ -23184,6 +23250,9 @@ var pt = {
23184
23250
  "record.metadata.quality.updateFrequency.failed": "",
23185
23251
  "record.metadata.quality.updateFrequency.success": "",
23186
23252
  "record.metadata.related": "",
23253
+ "record.metadata.resourceCreated": "",
23254
+ "record.metadata.resourcePublished": "",
23255
+ "record.metadata.resourceUpdated": "",
23187
23256
  "record.metadata.ressources.and.links": "Recursos e links",
23188
23257
  "record.metadata.sheet": "",
23189
23258
  "record.metadata.status": "",
@@ -23196,6 +23265,7 @@ var pt = {
23196
23265
  "record.metadata.title": "",
23197
23266
  "record.metadata.topics": "",
23198
23267
  "record.metadata.uniqueId": "",
23268
+ "record.metadata.update": "",
23199
23269
  "record.metadata.updateFrequency": "",
23200
23270
  "record.metadata.updatedOn": "",
23201
23271
  "record.metadata.usage": "",
@@ -23212,6 +23282,7 @@ var pt = {
23212
23282
  "record.tab.chart": "",
23213
23283
  "record.tab.data": "",
23214
23284
  "record.tab.map": "",
23285
+ "record.tab.stac": "",
23215
23286
  "record.was.created.time": "",
23216
23287
  records: records$1,
23217
23288
  "results.layout.selectOne": "",
@@ -23220,7 +23291,6 @@ var pt = {
23220
23291
  "results.records.hits.found": "",
23221
23292
  "results.records.hits.selected": "",
23222
23293
  "results.showMore": "",
23223
- "results.sortBy.changeDate": "",
23224
23294
  "results.sortBy.dateStamp": "",
23225
23295
  "results.sortBy.popularity": "",
23226
23296
  "results.sortBy.qualityScore": "",
@@ -23304,6 +23374,10 @@ var pt = {
23304
23374
  "service.metadata.spatialExtent": "",
23305
23375
  "share.tab.permalink": "",
23306
23376
  "share.tab.webComponent": "",
23377
+ "stac.filter.from": "",
23378
+ "stac.filter.period": "",
23379
+ "stac.filter.reset": "",
23380
+ "stac.filter.to": "",
23307
23381
  "table.loading.data": "",
23308
23382
  "table.object.count": "",
23309
23383
  "table.paginator.firstPage": "",
@@ -23749,6 +23823,7 @@ var sk = {
23749
23823
  "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
23750
23824
  "record.metadata.api.accessServiceProtocol.other": "",
23751
23825
  "record.metadata.api.accessServiceProtocol.postgis": "",
23826
+ "record.metadata.api.accessServiceProtocol.stac": "",
23752
23827
  "record.metadata.api.accessServiceProtocol.tms": "",
23753
23828
  "record.metadata.api.accessServiceProtocol.wfs": "",
23754
23829
  "record.metadata.api.accessServiceProtocol.wms": "",
@@ -23790,13 +23865,14 @@ var sk = {
23790
23865
  "record.metadata.contact": "Kontakt",
23791
23866
  "record.metadata.creation": "",
23792
23867
  "record.metadata.details": "Detaily",
23868
+ "record.metadata.doi.copy": "",
23869
+ "record.metadata.doi.open": "",
23793
23870
  "record.metadata.download": "Sťahovania",
23794
23871
  "record.metadata.feature.catalog": "",
23795
23872
  "record.metadata.formats": "Formáty",
23796
23873
  "record.metadata.isGeographical": "Súbor geografických údajov",
23797
23874
  "record.metadata.keywords": "Kľúčové slová",
23798
23875
  "record.metadata.languages": "",
23799
- "record.metadata.lastUpdate": "Posledná aktualizácia",
23800
23876
  "record.metadata.link.postgis.table": "",
23801
23877
  "record.metadata.link.postgis.tooltip": "",
23802
23878
  "record.metadata.linked.datasets": "",
@@ -23839,6 +23915,9 @@ var sk = {
23839
23915
  "record.metadata.quality.updateFrequency.failed": "Frekvencia aktualizácie nie je určená",
23840
23916
  "record.metadata.quality.updateFrequency.success": "Frekvencia aktualizácie je určená",
23841
23917
  "record.metadata.related": "Súvisiace záznamy",
23918
+ "record.metadata.resourceCreated": "",
23919
+ "record.metadata.resourcePublished": "",
23920
+ "record.metadata.resourceUpdated": "",
23842
23921
  "record.metadata.ressources.and.links": "Prostředky a odkazy",
23843
23922
  "record.metadata.sheet": "Ďalšie metadáta sú k dispozícii na:",
23844
23923
  "record.metadata.status": "Stav",
@@ -23851,8 +23930,9 @@ var sk = {
23851
23930
  "record.metadata.title": "Názov",
23852
23931
  "record.metadata.topics": "",
23853
23932
  "record.metadata.uniqueId": "Jedinečný identifikátor",
23933
+ "record.metadata.update": "Dátum aktualizácie",
23854
23934
  "record.metadata.updateFrequency": "Frekvencia aktualizácie metadát",
23855
- "record.metadata.updatedOn": "Posledná aktualizácia metadát",
23935
+ "record.metadata.updatedOn": "Metadáta zmenené dňa",
23856
23936
  "record.metadata.usage": "Použitie a obmedzenia",
23857
23937
  "record.metadata.userFeedbacks": "",
23858
23938
  "record.metadata.userFeedbacks.anonymousUser": "",
@@ -23867,6 +23947,7 @@ var sk = {
23867
23947
  "record.tab.chart": "Graf",
23868
23948
  "record.tab.data": "Tabuľka",
23869
23949
  "record.tab.map": "Mapa",
23950
+ "record.tab.stac": "",
23870
23951
  "record.was.created.time": "vytvoril tento dataset o {time}",
23871
23952
  records: records,
23872
23953
  "results.layout.selectOne": "Rozmiestnenie výsledkov",
@@ -23875,7 +23956,6 @@ var sk = {
23875
23956
  "results.records.hits.found": "{hits, plural, =0{Žiadne dokumenty nezodpovedajú zadanému vyhľadávaniu.} one{1 záznam nájdený.} other{{hits} záznamov nájdených.}}",
23876
23957
  "results.records.hits.selected": "{ amount } označených",
23877
23958
  "results.showMore": "Zobraziť viac výsledkov...",
23878
- "results.sortBy.changeDate": "",
23879
23959
  "results.sortBy.dateStamp": "Najnovšie",
23880
23960
  "results.sortBy.popularity": "Popularita",
23881
23961
  "results.sortBy.qualityScore": "Indikátor dokončenia",
@@ -23959,6 +24039,10 @@ var sk = {
23959
24039
  "service.metadata.spatialExtent": "",
23960
24040
  "share.tab.permalink": "Zdieľať",
23961
24041
  "share.tab.webComponent": "Integrovať",
24042
+ "stac.filter.from": "",
24043
+ "stac.filter.period": "",
24044
+ "stac.filter.reset": "",
24045
+ "stac.filter.to": "",
23962
24046
  "table.loading.data": "Načítanie údajov...",
23963
24047
  "table.object.count": "objekty v tomto súbore údajov",
23964
24048
  "table.paginator.firstPage": "",
@@ -24256,6 +24340,29 @@ class Gn4FieldMapper {
24256
24340
  }),
24257
24341
  };
24258
24342
  },
24343
+ resourceIdentifier: (output, source) => {
24344
+ const identifiers = getAsArray(selectField(source, 'resourceIdentifier'));
24345
+ if (!identifiers.length)
24346
+ return output;
24347
+ const mappedIdentifiers = identifiers
24348
+ .map((id) => {
24349
+ const code = selectField(id, 'code');
24350
+ const codeSpace = selectField(id, 'codeSpace');
24351
+ const link = selectField(id, 'link');
24352
+ return {
24353
+ code,
24354
+ ...(codeSpace && { codeSpace }),
24355
+ ...(link && { url: link }),
24356
+ };
24357
+ })
24358
+ .filter((id) => id !== null);
24359
+ if (!mappedIdentifiers.length)
24360
+ return output;
24361
+ return {
24362
+ ...output,
24363
+ resourceIdentifiers: mappedIdentifiers,
24364
+ };
24365
+ },
24259
24366
  };
24260
24367
  this.genericField = (output) => output;
24261
24368
  this.constraintField = (type, output, constraintArray) => {
@@ -24365,6 +24472,7 @@ class Gn4FieldMapper {
24365
24472
  /TMS/i.test(protocol) ||
24366
24473
  /ogc\W*api\W*features/i.test(protocol) ||
24367
24474
  /^DB:POSTGIS/i.test(protocol) ||
24475
+ /stac\W*items/i.test(protocol) ||
24368
24476
  (/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
24369
24477
  ) {
24370
24478
  return 'service';
@@ -25009,13 +25117,16 @@ function sortByToStrings(sortBy) {
25009
25117
  return array.map((param) => `${param[0] === 'desc' ? '-' : ''}${param[1]}`);
25010
25118
  }
25011
25119
  function sortByToString(sortBy) {
25012
- return sortByToStrings(sortBy)[0];
25120
+ return sortByToStrings(sortBy).join(',');
25013
25121
  }
25014
25122
  function sortByFromString(sortByString) {
25015
- return [
25016
- sortByString.startsWith('-') ? 'desc' : 'asc',
25017
- sortByString.startsWith('-') ? sortByString.substring(1) : sortByString,
25018
- ];
25123
+ const fields = sortByString
25124
+ .split(',')
25125
+ .map((field) => [
25126
+ field.startsWith('-') ? 'desc' : 'asc',
25127
+ field.startsWith('-') ? field.substring(1) : field,
25128
+ ]);
25129
+ return fields.length > 1 ? fields : fields[0];
25019
25130
  }
25020
25131
 
25021
25132
  const stripHtml = function (html) {
@@ -25421,6 +25532,8 @@ class LinkClassifierService {
25421
25532
  return [LinkUsage.API];
25422
25533
  case 'postgis':
25423
25534
  return [LinkUsage.UNKNOWN];
25535
+ case 'stac':
25536
+ return [LinkUsage.API];
25424
25537
  default:
25425
25538
  return [LinkUsage.UNKNOWN];
25426
25539
  }
@@ -25484,7 +25597,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
25484
25597
  }] } });
25485
25598
 
25486
25599
  var name = "geonetwork-ui";
25487
- var version = "2.8.0-dev.83aaa1736";
25600
+ var version = "2.8.0-dev.8b715be88";
25488
25601
  var engines = {
25489
25602
  node: ">=20"
25490
25603
  };
@@ -26236,7 +26349,7 @@ class Gn4SettingsService {
26236
26349
  this.apiVersion$ = this.getSettingsSetValueByKey('system/platform/version');
26237
26350
  }
26238
26351
  getSettingsSetValueByKey(key) {
26239
- return this.siteApiService.getSettingsSet(null, [key]).pipe(map$1((v) => v[key]), shareReplay$1({ bufferSize: 1, refCount: true }));
26352
+ return of(true).pipe(switchMap(() => this.siteApiService.getSettingsSet(null, [key])), map$1((v) => v[key]), shareReplay$1({ bufferSize: 1, refCount: true }));
26240
26353
  }
26241
26354
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, deps: [{ token: SiteApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
26242
26355
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
@@ -27175,6 +27288,9 @@ class Gn4PlatformService {
27175
27288
  console.warn('Error while loading gnui language package');
27176
27289
  return of({});
27177
27290
  }), shareReplay$1(1));
27291
+ this.me$ = this.disableAuth
27292
+ ? of(null)
27293
+ : of(true).pipe(switchMap(() => this.meApi.getMe()), switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay$1({ bufferSize: 1, refCount: true }));
27178
27294
  /**
27179
27295
  * A map of already loaded thesauri (groups of keywords); the key is a URI
27180
27296
  * @private
@@ -27185,9 +27301,6 @@ class Gn4PlatformService {
27185
27301
  .pipe(map$1((thesaurus) => {
27186
27302
  return thesaurus[0];
27187
27303
  }), shareReplay$1(1));
27188
- this.me$ = this.disableAuth
27189
- ? of(null)
27190
- : this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay$1({ bufferSize: 1, refCount: true }));
27191
27304
  this.isUserAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
27192
27305
  this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay$1());
27193
27306
  }
@@ -29800,8 +29913,7 @@ class DropdownSelectorComponent {
29800
29913
  ];
29801
29914
  }
29802
29915
  get selectedChoice() {
29803
- return (this.choices.find((choice) => choice.value === this.selected) ??
29804
- this.choices[0]);
29916
+ return (this.choices.find((choice) => JSON.stringify(choice.value) === JSON.stringify(this.selected)) ?? this.choices[0]);
29805
29917
  }
29806
29918
  get id() {
29807
29919
  return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
@@ -33936,6 +34048,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
33936
34048
  type: Output
33937
34049
  }] } });
33938
34050
 
34051
+ class MetadataDoiComponent {
34052
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataDoiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34053
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataDoiComponent, isStandalone: true, selector: "gn-ui-metadata-doi", inputs: { code: "code", link: "link" }, ngImport: i0, template: "<div\n class=\"border border-gray-300 rounded-lg py-4 px-5 text-black flex justify-between items-center gap-4\"\n>\n <div class=\"overflow-hidden flex-1\">\n <p class=\"text-base font-medium mb-3\">DOI</p>\n <p\n class=\"text-base font-medium overflow-hidden text-ellipsis whitespace-nowrap\"\n [title]=\"code\"\n >\n {{ code }}\n </p>\n </div>\n <div class=\"flex gap-2 items-start\">\n <gn-ui-copy-text-button\n [text]=\"code\"\n [displayText]=\"false\"\n [tooltipText]=\"'record.metadata.doi.copy' | translate\"\n class=\"[&>div]:flex [&>div]:items-center [&>div]:justify-center [&_button]:w-[40px] [&_button]:h-[32px] [&_button]:flex [&_button]:items-center [&_button]:justify-center [&_button]:hover:bg-gray-100 [&_button]:rounded-lg [&_button]:transition-colors [&_button]:border [&_button]:border-gray-300 [&_button]:px-2 [&_button]:py-1 [&_ng-icon]:w-5 [&_ng-icon]:h-5\"\n ></gn-ui-copy-text-button>\n <a\n *ngIf=\"link\"\n [href]=\"link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"w-[40px] h-[32px] flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors border border-gray-300 px-2 py-1\"\n [matTooltip]=\"'record.metadata.doi.open' | translate\"\n >\n <ng-icon name=\"matOpenInNew\" size=\"20\"></ng-icon>\n </a>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }], viewProviders: [
34054
+ provideIcons({
34055
+ matOpenInNew,
34056
+ }),
34057
+ ] }); }
34058
+ }
34059
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataDoiComponent, decorators: [{
34060
+ type: Component,
34061
+ args: [{ selector: 'gn-ui-metadata-doi', standalone: true, imports: [
34062
+ CommonModule,
34063
+ MatTooltipModule,
34064
+ NgIcon,
34065
+ TranslatePipe,
34066
+ CopyTextButtonComponent,
34067
+ ], viewProviders: [
34068
+ provideIcons({
34069
+ matOpenInNew,
34070
+ }),
34071
+ ], template: "<div\n class=\"border border-gray-300 rounded-lg py-4 px-5 text-black flex justify-between items-center gap-4\"\n>\n <div class=\"overflow-hidden flex-1\">\n <p class=\"text-base font-medium mb-3\">DOI</p>\n <p\n class=\"text-base font-medium overflow-hidden text-ellipsis whitespace-nowrap\"\n [title]=\"code\"\n >\n {{ code }}\n </p>\n </div>\n <div class=\"flex gap-2 items-start\">\n <gn-ui-copy-text-button\n [text]=\"code\"\n [displayText]=\"false\"\n [tooltipText]=\"'record.metadata.doi.copy' | translate\"\n class=\"[&>div]:flex [&>div]:items-center [&>div]:justify-center [&_button]:w-[40px] [&_button]:h-[32px] [&_button]:flex [&_button]:items-center [&_button]:justify-center [&_button]:hover:bg-gray-100 [&_button]:rounded-lg [&_button]:transition-colors [&_button]:border [&_button]:border-gray-300 [&_button]:px-2 [&_button]:py-1 [&_ng-icon]:w-5 [&_ng-icon]:h-5\"\n ></gn-ui-copy-text-button>\n <a\n *ngIf=\"link\"\n [href]=\"link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"w-[40px] h-[32px] flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors border border-gray-300 px-2 py-1\"\n [matTooltip]=\"'record.metadata.doi.open' | translate\"\n >\n <ng-icon name=\"matOpenInNew\" size=\"20\"></ng-icon>\n </a>\n </div>\n</div>\n" }]
34072
+ }], propDecorators: { code: [{
34073
+ type: Input
34074
+ }], link: [{
34075
+ type: Input
34076
+ }] } });
34077
+
33939
34078
  /* eslint-disable @angular-eslint/directive-selector */
33940
34079
  class GnUiLinkifyDirective {
33941
34080
  constructor(el, renderer) {
@@ -34086,7 +34225,7 @@ class MetadataInfoComponent {
34086
34225
  return this.dateService.formatDateTime(date);
34087
34226
  }
34088
34227
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
34089
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
34228
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines\n [maxLines]=\"6\"\n *ngIf=\"metadata.abstract\"\n data-test=\"metadata-info-abstract\"\n >\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n resourceContact ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.lineage\"\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div\n class=\"flex flex-row gap-6 mt-5 mb-8 resource-contact\"\n *ngIf=\"resourceContact\"\n data-test=\"details-panel-resource-contact\"\n >\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div\n *ngIf=\"metadata.resourceCreated\"\n data-test=\"details-panel-resource-created\"\n >\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1 resource-created\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.resourcePublished\"\n data-test=\"details-panel-resource-published\"\n >\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1 resource-published\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.resourceUpdated\"\n data-test=\"details-panel-resource-updated\"\n >\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p class=\"text-primary font-medium mt-1 resource-updated\">\n {{ formatDate(metadata.resourceUpdated) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.updateFrequency\"\n data-test=\"details-panel-update-frequency\"\n >\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.otherLanguages?.length\"\n data-test=\"details-panel-other-languages\"\n >\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium other-languages\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && temporalExtent\"\n data-test=\"details-panel-temporal-extent\"\n >\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
34090
34229
  provideIcons({
34091
34230
  matOpenInNew,
34092
34231
  matMailOutline: matMailOutline$1,
@@ -34114,7 +34253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
34114
34253
  matOpenInNew,
34115
34254
  matMailOutline: matMailOutline$1,
34116
34255
  }),
34117
- ], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
34256
+ ], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines\n [maxLines]=\"6\"\n *ngIf=\"metadata.abstract\"\n data-test=\"metadata-info-abstract\"\n >\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n resourceContact ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.lineage\"\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div\n class=\"flex flex-row gap-6 mt-5 mb-8 resource-contact\"\n *ngIf=\"resourceContact\"\n data-test=\"details-panel-resource-contact\"\n >\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div\n *ngIf=\"metadata.resourceCreated\"\n data-test=\"details-panel-resource-created\"\n >\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1 resource-created\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.resourcePublished\"\n data-test=\"details-panel-resource-published\"\n >\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1 resource-published\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.resourceUpdated\"\n data-test=\"details-panel-resource-updated\"\n >\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p class=\"text-primary font-medium mt-1 resource-updated\">\n {{ formatDate(metadata.resourceUpdated) }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.updateFrequency\"\n data-test=\"details-panel-update-frequency\"\n >\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div\n *ngIf=\"metadata.otherLanguages?.length\"\n data-test=\"details-panel-other-languages\"\n >\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium other-languages\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && temporalExtent\"\n data-test=\"details-panel-temporal-extent\"\n >\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
34118
34257
  }], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
34119
34258
  type: Input
34120
34259
  }], incomplete: [{
@@ -36502,6 +36641,11 @@ const SortByEnum = {
36502
36641
  RELEVANCY: ['desc', '_score'],
36503
36642
  QUALITY_SCORE: ['desc', 'qualityScore'],
36504
36643
  CHANGE_DATE: ['desc', 'changeDate'],
36644
+ RESOURCE_DATES: [
36645
+ ['desc', 'revisionDateForResource'],
36646
+ ['desc', 'publicationDateForResource'],
36647
+ ['desc', 'creationDateForResource'],
36648
+ ],
36505
36649
  };
36506
36650
 
36507
36651
  class SortByComponent {
@@ -36511,33 +36655,29 @@ class SortByComponent {
36511
36655
  this.choices = [
36512
36656
  {
36513
36657
  label: marker('results.sortBy.relevancy'),
36514
- value: SortByEnum.RELEVANCY.join(','),
36658
+ value: SortByEnum.RELEVANCY,
36515
36659
  },
36516
36660
  {
36517
36661
  label: marker('results.sortBy.dateStamp'),
36518
- value: SortByEnum.CREATE_DATE.join(','),
36519
- },
36520
- {
36521
- label: marker('results.sortBy.changeDate'),
36522
- value: SortByEnum.CHANGE_DATE.join(','),
36662
+ value: SortByEnum.RESOURCE_DATES,
36523
36663
  },
36524
36664
  {
36525
36665
  label: marker('results.sortBy.popularity'),
36526
- value: SortByEnum.POPULARITY.join(','),
36666
+ value: SortByEnum.POPULARITY,
36527
36667
  },
36528
36668
  ];
36529
- this.currentSortBy$ = this.facade.sortBy$.pipe(filter$1((sortBy) => !!sortBy), map$1((sortBy) => sortBy.join(',')));
36669
+ this.currentSortBy$ = this.facade.sortBy$.pipe(filter$1((sortBy) => !!sortBy), map$1((sortBy) => sortBy));
36530
36670
  }
36531
36671
  ngOnInit() {
36532
36672
  if (this.isQualitySortable) {
36533
36673
  this.choices.push({
36534
36674
  label: marker('results.sortBy.qualityScore'),
36535
- value: SortByEnum.QUALITY_SCORE.join(','),
36675
+ value: SortByEnum.QUALITY_SCORE,
36536
36676
  });
36537
36677
  }
36538
36678
  }
36539
- changeSortBy(criteriaAsString) {
36540
- this.searchService.setSortBy(criteriaAsString.split(','));
36679
+ changeSortBy(criteria) {
36680
+ this.searchService.setSortBy(criteria);
36541
36681
  }
36542
36682
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SortByComponent, deps: [{ token: SearchFacade }, { token: SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
36543
36683
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SortByComponent, isStandalone: true, selector: "gn-ui-sort-by", inputs: { isQualitySortable: "isQualitySortable" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'search.field.sortBy' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"changeSortBy($event)\"\n [selected]=\"currentSortBy$ | async\"\n ariaName=\"search-sort-by\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
@@ -38220,13 +38360,24 @@ class DataService {
38220
38360
  if (!featureType) {
38221
38361
  throw new Error('wfs.featuretype.notfound');
38222
38362
  }
38363
+ const wfsVersion = endpoint.getVersion();
38364
+ const addSrsName = wfsVersion === '1.1.0' || wfsVersion === '2.0.0';
38365
+ const defaultCrs = featureType.defaultCrs;
38366
+ const shouldAddOutputCrs = addSrsName && defaultCrs;
38223
38367
  return {
38224
- all: featureType.outputFormats.reduce((prev, curr) => ({
38225
- ...prev,
38226
- [curr]: endpoint.getFeatureUrl(featureType.name, {
38227
- outputFormat: curr,
38228
- }),
38229
- }), {}),
38368
+ all: featureType.outputFormats.reduce((prev, curr) => {
38369
+ const isJsonFormat = curr.toLowerCase().includes('json');
38370
+ return {
38371
+ ...prev,
38372
+ [curr]: endpoint.getFeatureUrl(featureType.name, {
38373
+ outputFormat: curr,
38374
+ ...(shouldAddOutputCrs &&
38375
+ !isJsonFormat && {
38376
+ outputCrs: defaultCrs,
38377
+ }),
38378
+ }),
38379
+ };
38380
+ }, {}),
38230
38381
  geojson: endpoint.supportsJson(featureType.name)
38231
38382
  ? endpoint.getFeatureUrl(featureType.name, {
38232
38383
  asJson: true,
@@ -38901,6 +39052,8 @@ class ChartViewComponent {
38901
39052
  this.chartType$.next(value);
38902
39053
  }
38903
39054
  set userChartConfig(config) {
39055
+ if (!config)
39056
+ return;
38904
39057
  this.aggregation$.next(config.aggregation);
38905
39058
  this.xProperty$.next(config.xProperty);
38906
39059
  this.yProperty$.next(config.yProperty);
@@ -39338,6 +39491,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39338
39491
  type: Input
39339
39492
  }] } });
39340
39493
 
39494
+ class StacViewComponent {
39495
+ constructor() {
39496
+ this.currentTemporalExtent = null;
39497
+ this.isTemporalFilterModified = false;
39498
+ }
39499
+ onStartDateChange(date) {
39500
+ this.currentTemporalExtent = {
39501
+ ...this.currentTemporalExtent,
39502
+ start: date,
39503
+ };
39504
+ this.isTemporalFilterModified = true;
39505
+ }
39506
+ onEndDateChange(date) {
39507
+ this.currentTemporalExtent = {
39508
+ ...this.currentTemporalExtent,
39509
+ end: date,
39510
+ };
39511
+ this.isTemporalFilterModified = true;
39512
+ }
39513
+ onResetFilters() {
39514
+ this.currentTemporalExtent = this.initialTemporalExtent;
39515
+ this.isTemporalFilterModified = false;
39516
+ }
39517
+ ngOnInit() {
39518
+ this.currentTemporalExtent = this.initialTemporalExtent;
39519
+ }
39520
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StacViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39521
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StacViewComponent, isStandalone: true, selector: "gn-ui-stac-view", inputs: { link: "link", initialTemporalExtent: "initialTemporalExtent" }, ngImport: i0, template: "<div\n class=\"w-full h-full flex flex-row mt-6 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n>\n <div class=\"flex-1 flex flex-col\">\n <div class=\"m-8\">\n <p class=\"mb-4\" translate>stac.filter.period</p>\n <p translate>stac.filter.from</p>\n <gn-ui-date-picker\n id=\"start-date-picker\"\n [date]=\"currentTemporalExtent?.start\"\n (dateChange)=\"onStartDateChange($event)\"\n />\n <p class=\"mt-4\" translate>stac.filter.to</p>\n <gn-ui-date-picker\n id=\"end-date-picker\"\n [date]=\"currentTemporalExtent?.end\"\n (dateChange)=\"onEndDateChange($event)\"\n />\n </div>\n\n <div class=\"mt-auto mb-8 mx-8\" *ngIf=\"isTemporalFilterModified\">\n <button\n id=\"reset-filters-button\"\n type=\"button\"\n class=\"flex items-center\"\n (click)=\"onResetFilters()\"\n >\n <span translate>stac.filter.reset</span>\n <ng-icon\n name=\"matDeleteOutline\"\n class=\"pointer-events-none ml-2\"\n ></ng-icon>\n </button>\n </div>\n </div>\n\n <div class=\"w-[655px] flex-shrink-0 flex items-center justify-center\">\n <span>Map...</span>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DatePickerComponent, selector: "gn-ui-date-picker", inputs: ["date"], outputs: ["dateChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [provideIcons({ matDeleteOutline })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39522
+ }
39523
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StacViewComponent, decorators: [{
39524
+ type: Component,
39525
+ args: [{ selector: 'gn-ui-stac-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
39526
+ CommonModule,
39527
+ DatePickerComponent,
39528
+ NgIconComponent,
39529
+ TranslateDirective,
39530
+ ], viewProviders: [provideIcons({ matDeleteOutline })], template: "<div\n class=\"w-full h-full flex flex-row mt-6 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n>\n <div class=\"flex-1 flex flex-col\">\n <div class=\"m-8\">\n <p class=\"mb-4\" translate>stac.filter.period</p>\n <p translate>stac.filter.from</p>\n <gn-ui-date-picker\n id=\"start-date-picker\"\n [date]=\"currentTemporalExtent?.start\"\n (dateChange)=\"onStartDateChange($event)\"\n />\n <p class=\"mt-4\" translate>stac.filter.to</p>\n <gn-ui-date-picker\n id=\"end-date-picker\"\n [date]=\"currentTemporalExtent?.end\"\n (dateChange)=\"onEndDateChange($event)\"\n />\n </div>\n\n <div class=\"mt-auto mb-8 mx-8\" *ngIf=\"isTemporalFilterModified\">\n <button\n id=\"reset-filters-button\"\n type=\"button\"\n class=\"flex items-center\"\n (click)=\"onResetFilters()\"\n >\n <span translate>stac.filter.reset</span>\n <ng-icon\n name=\"matDeleteOutline\"\n class=\"pointer-events-none ml-2\"\n ></ng-icon>\n </button>\n </div>\n </div>\n\n <div class=\"w-[655px] flex-shrink-0 flex items-center justify-center\">\n <span>Map...</span>\n </div>\n</div>\n" }]
39531
+ }], propDecorators: { link: [{
39532
+ type: Input
39533
+ }], initialTemporalExtent: [{
39534
+ type: Input
39535
+ }] } });
39536
+
39341
39537
  /**
39342
39538
  * The Metadata View Facade is used to render complete metadata records.
39343
39539
  * Supply it with an incomplete record (at least containing the uuid) and the
@@ -39368,8 +39564,21 @@ class MdViewFacade {
39368
39564
  this.sourceOf$ = this.store.pipe(select(getSourceOf));
39369
39565
  this.chartConfig$ = this.store.pipe(select(getChartConfig));
39370
39566
  this.allLinks$ = this.metadata$.pipe(map$1((record) => 'onlineResources' in record ? record.onlineResources : []), shareReplay$1(1));
39567
+ this.resourceDoi$ = this.metadata$.pipe(map$1((record) => {
39568
+ if (!record?.resourceIdentifiers?.length)
39569
+ return null;
39570
+ const doiIdentifier = record.resourceIdentifiers.find((id) => id.codeSpace?.toLowerCase().includes('doi.org') ||
39571
+ id.code.startsWith('10.'));
39572
+ if (!doiIdentifier)
39573
+ return null;
39574
+ return {
39575
+ code: doiIdentifier.code,
39576
+ url: doiIdentifier.url ? doiIdentifier.url : null,
39577
+ };
39578
+ }), shareReplay$1(1));
39371
39579
  this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))), shareReplay$1(1));
39372
39580
  this.mapApiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API))), shareReplay$1(1));
39581
+ this.stacLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => link.type === 'service' && link.accessServiceProtocol === 'stac')), shareReplay$1(1));
39373
39582
  this.downloadLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DOWNLOAD))));
39374
39583
  this.dataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DATA))));
39375
39584
  this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
@@ -39527,8 +39736,9 @@ class DataViewPermalinkComponent {
39527
39736
  set viewType(value) {
39528
39737
  this.viewType$.next(value);
39529
39738
  }
39530
- constructor(config, wcEmbedderBaseUrl, facade) {
39739
+ constructor(config, proxyPath, wcEmbedderBaseUrl, facade) {
39531
39740
  this.config = config;
39741
+ this.proxyPath = proxyPath;
39532
39742
  this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
39533
39743
  this.facade = facade;
39534
39744
  this.viewType$ = new BehaviorSubject('map');
@@ -39561,6 +39771,9 @@ class DataViewPermalinkComponent {
39561
39771
  url.searchParams.append('e', `gn-dataset-view-map`);
39562
39772
  }
39563
39773
  url.searchParams.append('a', `api-url=${this.config.basePath}`);
39774
+ if (this.proxyPath) {
39775
+ url.searchParams.append('a', `proxy-path=${this.proxyPath}`);
39776
+ }
39564
39777
  url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`);
39565
39778
  url.searchParams.append('a', `primary-color=#0f4395`);
39566
39779
  url.searchParams.append('a', `secondary-color=#8bc832`);
@@ -39569,7 +39782,7 @@ class DataViewPermalinkComponent {
39569
39782
  return url.toString();
39570
39783
  }));
39571
39784
  }
39572
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
39785
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: PROXY_PATH, optional: true }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
39573
39786
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewPermalinkComponent, isStandalone: true, selector: "gn-ui-data-view-permalink", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n *ngIf=\"wcEmbedderBaseUrl\"\n [text]=\"permalinkUrl$ | async\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39574
39787
  }
39575
39788
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
@@ -39580,6 +39793,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39580
39793
  args: [Configuration]
39581
39794
  }] }, { type: undefined, decorators: [{
39582
39795
  type: Optional
39796
+ }, {
39797
+ type: Inject,
39798
+ args: [PROXY_PATH]
39799
+ }] }, { type: undefined, decorators: [{
39800
+ type: Optional
39583
39801
  }, {
39584
39802
  type: Inject,
39585
39803
  args: [WEB_COMPONENT_EMBEDDER_URL]
@@ -39688,8 +39906,9 @@ class DataViewWebComponentComponent {
39688
39906
  set viewType(value) {
39689
39907
  this.viewType$.next(value);
39690
39908
  }
39691
- constructor(config, facade) {
39909
+ constructor(config, proxyPath, facade) {
39692
39910
  this.config = config;
39911
+ this.proxyPath = proxyPath;
39693
39912
  this.facade = facade;
39694
39913
  this.viewType$ = new BehaviorSubject('map');
39695
39914
  this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
@@ -39698,7 +39917,10 @@ class DataViewWebComponentComponent {
39698
39917
  const { aggregation, xProperty, yProperty, chartType } = config;
39699
39918
  return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
39700
39919
  <gn-dataset-view-chart
39701
- api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
39920
+ api-url="${new URL(this.config.basePath, window.location.origin).toString()}"${this.proxyPath
39921
+ ? `
39922
+ proxy-path="${this.proxyPath}"`
39923
+ : ''}
39702
39924
  dataset-id="${metadata.uniqueIdentifier}"
39703
39925
  aggregation="${aggregation}"
39704
39926
  x-property="${xProperty}"
@@ -39717,7 +39939,10 @@ class DataViewWebComponentComponent {
39717
39939
  else if (viewType === 'table') {
39718
39940
  return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
39719
39941
  <gn-dataset-view-table
39720
- api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
39942
+ api-url="${new URL(this.config.basePath, window.location.origin).toString()}"${this.proxyPath
39943
+ ? `
39944
+ proxy-path="${this.proxyPath}"`
39945
+ : ''}
39721
39946
  dataset-id="${metadata.uniqueIdentifier}"
39722
39947
  primary-color="#0f4395"
39723
39948
  secondary-color="#8bc832"
@@ -39730,7 +39955,10 @@ class DataViewWebComponentComponent {
39730
39955
  else {
39731
39956
  return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
39732
39957
  <gn-dataset-view-map
39733
- api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
39958
+ api-url="${new URL(this.config.basePath, window.location.origin).toString()}"${this.proxyPath
39959
+ ? `
39960
+ proxy-path="${this.proxyPath}"`
39961
+ : ''}
39734
39962
  dataset-id="${metadata.uniqueIdentifier}"
39735
39963
  primary-color="#0f4395"
39736
39964
  secondary-color="#8bc832"
@@ -39742,7 +39970,7 @@ class DataViewWebComponentComponent {
39742
39970
  }
39743
39971
  }));
39744
39972
  }
39745
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
39973
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: PROXY_PATH, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
39746
39974
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewWebComponentComponent, isStandalone: true, selector: "gn-ui-data-view-web-component", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n [text]=\"webComponentHtml$ | async\"\n [rows]=\"3\"\n [tooltipText]=\"'tooltip.html.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39747
39975
  }
39748
39976
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
@@ -39751,6 +39979,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39751
39979
  }], ctorParameters: () => [{ type: Configuration, decorators: [{
39752
39980
  type: Inject,
39753
39981
  args: [Configuration]
39982
+ }] }, { type: undefined, decorators: [{
39983
+ type: Optional
39984
+ }, {
39985
+ type: Inject,
39986
+ args: [PROXY_PATH]
39754
39987
  }] }, { type: MdViewFacade }], propDecorators: { viewType: [{
39755
39988
  type: Input
39756
39989
  }] } });
@@ -40871,7 +41104,7 @@ const RECORD_RESOURCE_CREATED_FIELD = {
40871
41104
  gridColumnSpan: 1,
40872
41105
  };
40873
41106
  const RESOURCE_IDENTIFIER_FIELD = {
40874
- model: 'resourceIdentifier',
41107
+ model: 'resourceIdentifiers',
40875
41108
  formFieldConfig: {
40876
41109
  labelKey: marker('editor.record.form.field.resourceIdentifier'),
40877
41110
  },
@@ -43385,8 +43618,28 @@ class FormFieldComponent {
43385
43618
  get valueAsOnlineResources() {
43386
43619
  return this.value;
43387
43620
  }
43621
+ get valueAsResourceIdentifierCode() {
43622
+ const identifiers = this.value;
43623
+ return identifiers?.[0]?.code || '';
43624
+ }
43625
+ handleResourceIdentifierChange(code) {
43626
+ const identifiers = this.value;
43627
+ if (!code) {
43628
+ this.valueChange.emit(identifiers?.slice(1) || []);
43629
+ return;
43630
+ }
43631
+ if (identifiers?.[0]) {
43632
+ this.valueChange.emit([
43633
+ { ...identifiers[0], code },
43634
+ ...identifiers.slice(1),
43635
+ ]);
43636
+ }
43637
+ else {
43638
+ this.valueChange.emit([{ code }]);
43639
+ }
43640
+ }
43388
43641
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43389
- 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 }); }
43642
+ 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=\"'resourceIdentifiers'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsResourceIdentifierCode\"\n (valueChange)=\"handleResourceIdentifierChange($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 }); }
43390
43643
  }
43391
43644
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, decorators: [{
43392
43645
  type: Component,
@@ -43413,7 +43666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
43413
43666
  FormFieldSpatialToggleComponent,
43414
43667
  FormFieldTopicsComponent,
43415
43668
  TextFieldModule,
43416
- ], 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" }]
43669
+ ], 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=\"'resourceIdentifiers'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsResourceIdentifierCode\"\n (valueChange)=\"handleResourceIdentifierChange($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" }]
43417
43670
  }], propDecorators: { uniqueIdentifier: [{
43418
43671
  type: Input
43419
43672
  }], model: [{
@@ -43838,6 +44091,9 @@ class RouterService {
43838
44091
  getOrganizationPageRoute() {
43839
44092
  return ROUTER_ROUTE_ORGANIZATION;
43840
44093
  }
44094
+ getDefaultSort() {
44095
+ return SortByEnum.RESOURCE_DATES;
44096
+ }
43841
44097
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$d.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
43842
44098
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
43843
44099
  }
@@ -43998,13 +44254,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
43998
44254
  }], ctorParameters: () => [{ type: i1$3.Store }, { type: RouterService }] });
43999
44255
 
44000
44256
  class RouterEffects {
44001
- constructor(_actions$, _router, _location, facade, routerConfig, fieldsService) {
44257
+ constructor(_actions$, _router, _location, facade, routerConfig, fieldsService, routerService) {
44002
44258
  this._actions$ = _actions$;
44003
44259
  this._router = _router;
44004
44260
  this._location = _location;
44005
44261
  this.facade = facade;
44006
44262
  this.routerConfig = routerConfig;
44007
44263
  this.fieldsService = fieldsService;
44264
+ this.routerService = routerService;
44008
44265
  this.navigate$ = createEffect(() => this._actions$.pipe(ofType(goAction), tap$1(({ path, query: queryParams, queryParamsHandling }) => {
44009
44266
  this._router.navigate([path], {
44010
44267
  queryParams,
@@ -44016,14 +44273,14 @@ class RouterEffects {
44016
44273
  .pipe(map$1((filters) => [searchParams, filters]))), startWith([null, {}]), pairwise(), map$1(([[oldParams, oldFilters], [newParams, newFilters]]) => {
44017
44274
  let sortBy = ROUTE_PARAMS.SORT in newParams
44018
44275
  ? sortByFromString(newParams[ROUTE_PARAMS.SORT])
44019
- : SortByEnum.CHANGE_DATE;
44276
+ : this.routerService.getDefaultSort();
44020
44277
  let pageNumber = ROUTE_PARAMS.PAGE in newParams
44021
44278
  ? parseInt(newParams[ROUTE_PARAMS.PAGE])
44022
44279
  : 1;
44023
44280
  if (oldParams !== null) {
44024
44281
  const oldSort = ROUTE_PARAMS.SORT in oldParams
44025
44282
  ? sortByFromString(oldParams[ROUTE_PARAMS.SORT])
44026
- : SortByEnum.CHANGE_DATE;
44283
+ : this.routerService.getDefaultSort();
44027
44284
  if (JSON.stringify(sortBy) === JSON.stringify(oldSort)) {
44028
44285
  sortBy = null;
44029
44286
  }
@@ -44080,7 +44337,7 @@ class RouterEffects {
44080
44337
  this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
44081
44338
  this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
44082
44339
  }
44083
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$d.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
44340
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$d.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }, { token: RouterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
44084
44341
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
44085
44342
  }
44086
44343
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
@@ -44088,7 +44345,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
44088
44345
  }], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$d.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
44089
44346
  type: Inject,
44090
44347
  args: [ROUTER_CONFIG]
44091
- }] }, { type: FieldsService }] });
44348
+ }] }, { type: FieldsService }, { type: RouterService }] });
44092
44349
 
44093
44350
  class DefaultRouterModule {
44094
44351
  constructor(routerService) {
@@ -44226,5 +44483,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
44226
44483
  * Generated bundle index. Do not edit.
44227
44484
  */
44228
44485
 
44229
- 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 };
44486
+ 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, MetadataDoiComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OrganizationsServiceInterface, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PlatformServiceInterface, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StacViewComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryBoundingBox, getGeometryFromGeoJSON, getGlobalConfig, getIsMobile, getJsonDataItemsProxy, getLayers, getLinkId, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, handleScrollOnNavigation, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, organizationsServiceFactory, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, toLang2, toLang3, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
44230
44487
  //# sourceMappingURL=geonetwork-ui.mjs.map