geonetwork-ui 2.3.0-dev.3d65a13b → 2.3.0-dev.3e7f46f3

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 (492) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +6 -2
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +2 -2
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +9 -7
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +23 -8
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +15 -4
  7. package/esm2022/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.mjs +1 -1
  8. package/esm2022/libs/api/repository/src/lib/gn4/auth/gravatar.service.mjs +12 -1
  9. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +36 -3
  10. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +21 -7
  11. package/esm2022/libs/common/domain/src/lib/model/record/index.mjs +2 -1
  12. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  13. package/esm2022/libs/common/domain/src/lib/model/record/user-feedbacks.model.mjs +2 -0
  14. package/esm2022/libs/common/domain/src/lib/model/user/index.mjs +2 -0
  15. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  16. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +35 -7
  17. package/esm2022/libs/data-access/gn4/src/openapi/model/models.mjs +1 -2
  18. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +1 -1
  19. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +47 -2
  20. package/esm2022/libs/feature/editor/src/index.mjs +2 -2
  21. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +6 -2
  22. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-array/form-field-array.component.mjs +11 -0
  23. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-file/form-field-file.component.mjs +28 -0
  24. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +64 -0
  25. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.mjs +11 -0
  26. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +15 -0
  27. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +45 -0
  28. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.mjs +50 -0
  29. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +11 -0
  30. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.mjs +11 -0
  31. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +104 -0
  32. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +126 -0
  33. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.mjs +2 -0
  34. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +10 -0
  35. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +29 -0
  36. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
  37. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +10 -10
  38. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +23 -1
  39. package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +1 -1
  40. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +3 -3
  41. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +73 -20
  42. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
  43. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
  44. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +1 -1
  45. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +58 -17
  46. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +7 -3
  47. package/esm2022/libs/feature/notifications/src/index.mjs +4 -0
  48. package/esm2022/libs/feature/notifications/src/lib/feature-notifications.module.mjs +18 -0
  49. package/esm2022/libs/feature/notifications/src/lib/notification.model.mjs +2 -0
  50. package/esm2022/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.mjs +49 -0
  51. package/esm2022/libs/feature/notifications/src/lib/notifications.service.mjs +29 -0
  52. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
  53. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +4 -4
  54. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +13 -8
  55. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +22 -4
  56. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +37 -10
  57. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +52 -8
  58. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +50 -17
  59. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +18 -3
  60. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +2 -2
  61. package/esm2022/libs/feature/search/src/index.mjs +2 -1
  62. package/esm2022/libs/feature/search/src/lib/results-layout/results-layout.component.mjs +1 -1
  63. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +4 -4
  64. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +3 -3
  65. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +1 -1
  66. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +1 -1
  67. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +1 -1
  68. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +3 -3
  69. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +1 -1
  70. package/esm2022/libs/ui/elements/src/index.mjs +16 -16
  71. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -2
  72. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +2 -2
  73. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +30 -0
  74. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +5 -5
  75. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +16 -3
  76. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +45 -0
  77. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  78. package/esm2022/libs/ui/elements/src/lib/notification/notification.component.mjs +34 -0
  79. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +98 -36
  80. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +4 -3
  81. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +19 -15
  82. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +59 -0
  83. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +60 -0
  84. package/esm2022/libs/ui/inputs/src/index.mjs +16 -16
  85. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -1
  86. package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +4 -3
  87. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +22 -0
  88. package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +7 -5
  89. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +19 -8
  90. package/esm2022/libs/ui/inputs/src/lib/files-drop/files-drop.directive.mjs +59 -0
  91. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +183 -0
  92. package/esm2022/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +29 -0
  93. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +27 -4
  94. package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +21 -3
  95. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +21 -31
  96. package/esm2022/libs/ui/layout/src/index.mjs +7 -5
  97. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +76 -0
  98. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +42 -18
  99. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +18 -0
  100. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +3 -8
  101. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
  102. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  103. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  104. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -2
  105. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +22 -1
  106. package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -0
  107. package/esm2022/libs/util/shared/src/lib/utils/image-resize.mjs +60 -0
  108. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +8 -6
  109. package/esm2022/translations/de.json +42 -0
  110. package/esm2022/translations/en.json +42 -0
  111. package/esm2022/translations/es.json +42 -0
  112. package/esm2022/translations/fr.json +42 -0
  113. package/esm2022/translations/it.json +42 -0
  114. package/esm2022/translations/nl.json +42 -0
  115. package/esm2022/translations/pt.json +42 -0
  116. package/fesm2022/geonetwork-ui.mjs +3835 -2086
  117. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  118. package/index.d.ts +1 -0
  119. package/index.d.ts.map +1 -1
  120. package/index.ts +1 -0
  121. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  122. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +2 -2
  123. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
  124. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +1 -1
  125. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  126. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +4 -1
  127. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  128. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +2 -1
  129. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  130. package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts +1 -0
  131. package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts.map +1 -1
  132. package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts +1 -0
  133. package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts.map +1 -1
  134. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +6 -2
  135. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  136. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -6
  137. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  138. package/libs/common/domain/src/lib/model/record/index.d.ts +1 -0
  139. package/libs/common/domain/src/lib/model/record/index.d.ts.map +1 -1
  140. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +3 -3
  141. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  142. package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts +15 -0
  143. package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts.map +1 -0
  144. package/libs/common/domain/src/lib/model/user/index.d.ts +2 -0
  145. package/libs/common/domain/src/lib/model/user/index.d.ts.map +1 -0
  146. package/libs/common/domain/src/lib/platform.service.interface.d.ts +3 -0
  147. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  148. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +9 -5
  149. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  150. package/libs/data-access/gn4/src/openapi/model/models.d.ts +0 -1
  151. package/libs/data-access/gn4/src/openapi/model/models.d.ts.map +1 -1
  152. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +4 -1
  153. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  154. package/libs/feature/editor/src/index.d.ts +1 -1
  155. package/libs/feature/editor/src/index.d.ts.map +1 -1
  156. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +8 -5
  157. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  158. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.d.ts +1 -1
  159. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-array/form-field-array.component.d.ts.map +1 -0
  160. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.d.ts +1 -1
  161. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-file/form-field-file.component.d.ts.map +1 -0
  162. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +39 -0
  163. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -0
  164. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.d.ts +1 -1
  165. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.d.ts.map +1 -0
  166. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +8 -0
  167. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +1 -0
  168. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts +16 -0
  169. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -0
  170. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.d.ts +2 -2
  171. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.d.ts.map +1 -0
  172. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts +1 -1
  173. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -0
  174. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts +1 -1
  175. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts.map +1 -0
  176. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +21 -0
  177. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -0
  178. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.component.d.ts +13 -4
  179. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -0
  180. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts.map +1 -0
  181. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -0
  182. package/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.d.ts +3 -3
  183. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -0
  184. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +1 -1
  185. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  186. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  187. package/libs/feature/editor/src/lib/models/fields.model.d.ts +1 -1
  188. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +10 -5
  189. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  190. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +7 -0
  191. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  192. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -1
  193. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  194. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  195. package/libs/feature/notifications/src/index.d.ts +4 -0
  196. package/libs/feature/notifications/src/index.d.ts.map +1 -0
  197. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts +7 -0
  198. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts.map +1 -0
  199. package/libs/feature/notifications/src/lib/notification.model.d.ts +7 -0
  200. package/libs/feature/notifications/src/lib/notification.model.d.ts.map +1 -0
  201. package/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.d.ts +12 -0
  202. package/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.d.ts.map +1 -0
  203. package/libs/feature/notifications/src/lib/notifications.service.d.ts +15 -0
  204. package/libs/feature/notifications/src/lib/notifications.service.d.ts.map +1 -0
  205. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  206. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +2 -2
  207. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  208. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +40 -6
  209. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  210. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +24 -4
  211. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  212. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +18 -5
  213. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  214. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +8 -5
  215. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  216. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +12 -9
  217. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  218. package/libs/feature/search/src/index.d.ts +1 -0
  219. package/libs/feature/search/src/index.d.ts.map +1 -1
  220. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts +3 -3
  221. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  222. package/libs/ui/elements/src/index.d.ts +15 -15
  223. package/libs/ui/elements/src/index.d.ts.map +1 -1
  224. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  225. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  226. package/libs/ui/elements/src/lib/error/error.component.d.ts +16 -0
  227. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -0
  228. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +3 -1
  229. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  230. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts +13 -0
  231. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -0
  232. package/libs/ui/elements/src/lib/notification/notification.component.d.ts +13 -0
  233. package/libs/ui/elements/src/lib/notification/notification.component.d.ts.map +1 -0
  234. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +24 -4
  235. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  236. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +1 -1
  237. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  238. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +29 -28
  239. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  240. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +11 -0
  241. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +1 -0
  242. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts +21 -0
  243. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts.map +1 -0
  244. package/libs/ui/inputs/src/index.d.ts +15 -15
  245. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  246. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  247. package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts +1 -1
  248. package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts.map +1 -1
  249. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +9 -0
  250. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -0
  251. package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts +1 -1
  252. package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
  253. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +2 -1
  254. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  255. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts +14 -0
  256. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts.map +1 -0
  257. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +44 -0
  258. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -0
  259. package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +12 -0
  260. package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -0
  261. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +7 -1
  262. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  263. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +5 -1
  264. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
  265. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +35 -42
  266. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  267. package/libs/ui/layout/src/index.d.ts +6 -4
  268. package/libs/ui/layout/src/index.d.ts.map +1 -1
  269. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +25 -0
  270. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -0
  271. package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts +13 -6
  272. package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts.map +1 -1
  273. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts +8 -0
  274. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts.map +1 -0
  275. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +4 -5
  276. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  277. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  278. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  279. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  280. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  281. package/libs/util/shared/src/lib/links/link-utils.d.ts +18 -0
  282. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  283. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -0
  284. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -0
  285. package/libs/util/shared/src/lib/utils/image-resize.d.ts +3 -0
  286. package/libs/util/shared/src/lib/utils/image-resize.d.ts.map +1 -0
  287. package/libs/util/shared/src/lib/utils/index.d.ts +7 -5
  288. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  289. package/package.json +2 -2
  290. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +9 -1
  291. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +7 -1
  292. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +3 -3
  293. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +35 -31
  294. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +68 -16
  295. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +72 -17
  296. package/src/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.ts +1 -0
  297. package/src/libs/api/repository/src/lib/gn4/auth/gravatar.service.ts +12 -1
  298. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +51 -1
  299. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +40 -7
  300. package/src/libs/common/domain/src/lib/model/record/index.ts +1 -0
  301. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -3
  302. package/src/libs/common/domain/src/lib/model/record/user-feedbacks.model.ts +15 -0
  303. package/src/libs/common/domain/src/lib/platform.service.interface.ts +3 -0
  304. package/src/libs/common/fixtures/src/index.ts +8 -6
  305. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +8 -0
  306. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +11 -3
  307. package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +83 -0
  308. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +43 -12
  309. package/src/libs/data-access/gn4/src/openapi/model/models.ts +0 -1
  310. package/src/libs/data-access/gn4/src/spec.yaml +1 -1
  311. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +65 -1
  312. package/src/libs/feature/editor/src/index.ts +1 -1
  313. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +8 -1
  314. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +8 -0
  315. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +70 -0
  316. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.ts +1 -0
  317. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.ts +4 -1
  318. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.html +8 -0
  319. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +64 -0
  320. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.ts +1 -0
  321. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.html +4 -0
  322. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.ts +15 -0
  323. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +20 -0
  324. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +44 -0
  325. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.ts +4 -1
  326. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +1 -0
  327. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.css +0 -0
  328. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.ts +1 -0
  329. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +0 -0
  330. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +14 -0
  331. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +143 -0
  332. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.css +0 -0
  333. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +97 -0
  334. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +142 -0
  335. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.css +0 -0
  336. package/src/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.html +1 -0
  337. package/src/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.ts +4 -4
  338. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +9 -9
  339. package/src/libs/feature/editor/src/lib/fields.config.ts +22 -0
  340. package/src/libs/feature/editor/src/lib/models/fields.model.ts +1 -1
  341. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +1 -1
  342. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +7 -0
  343. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +32 -18
  344. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +72 -17
  345. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +7 -0
  346. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +57 -17
  347. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +6 -2
  348. package/src/libs/feature/notifications/src/index.ts +3 -0
  349. package/src/libs/feature/notifications/src/lib/feature-notifications.module.ts +10 -0
  350. package/src/libs/feature/notifications/src/lib/notification.model.ts +6 -0
  351. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.css +0 -0
  352. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.html +17 -0
  353. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.ts +44 -0
  354. package/src/libs/feature/notifications/src/lib/notifications.service.ts +27 -0
  355. package/src/libs/feature/record/src/lib/feature-record.module.ts +5 -2
  356. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +12 -9
  357. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +51 -6
  358. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +82 -7
  359. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +86 -9
  360. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +79 -24
  361. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +40 -10
  362. package/src/libs/feature/router/src/lib/default/state/router.effects.ts +2 -2
  363. package/src/libs/feature/search/src/index.ts +1 -0
  364. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +4 -4
  365. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +3 -3
  366. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -2
  367. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +5 -5
  368. package/src/libs/ui/elements/src/index.ts +15 -15
  369. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +2 -1
  370. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +1 -1
  371. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.html → error/error.component.html} +18 -3
  372. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.ts → error/error.component.ts} +5 -4
  373. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  374. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +38 -20
  375. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +12 -0
  376. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +0 -5
  377. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +0 -21
  378. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -14
  379. package/src/libs/ui/elements/src/lib/notification/notification.component.css +0 -0
  380. package/src/libs/ui/elements/src/lib/notification/notification.component.html +52 -0
  381. package/src/libs/ui/elements/src/lib/notification/notification.component.ts +31 -0
  382. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +27 -11
  383. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +125 -30
  384. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +5 -3
  385. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +9 -7
  386. package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +54 -0
  387. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.css +0 -0
  388. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +75 -0
  389. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +62 -0
  390. package/src/libs/ui/inputs/src/index.ts +15 -15
  391. package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -1
  392. package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.ts +3 -0
  393. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +3 -0
  394. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +11 -0
  395. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +16 -0
  396. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +8 -1
  397. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -0
  398. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +14 -0
  399. package/src/libs/ui/inputs/src/lib/files-drop/files-drop.directive.ts +45 -0
  400. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +0 -0
  401. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +146 -0
  402. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +193 -0
  403. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.css +6 -0
  404. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.html +26 -0
  405. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.ts +32 -0
  406. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +2 -1
  407. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +29 -0
  408. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +2 -1
  409. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +17 -1
  410. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +6 -22
  411. package/src/libs/ui/layout/src/index.ts +6 -4
  412. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +23 -0
  413. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +20 -0
  414. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +84 -0
  415. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +8 -4
  416. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +4 -4
  417. package/src/libs/ui/layout/src/lib/carousel/carousel.component.ts +45 -15
  418. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.css +0 -0
  419. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +18 -0
  420. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +16 -0
  421. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -2
  422. package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
  423. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  424. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  425. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +1 -1
  426. package/src/libs/util/shared/src/lib/links/link-utils.ts +21 -0
  427. package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +3 -0
  428. package/src/libs/util/shared/src/lib/utils/image-resize.ts +72 -0
  429. package/src/libs/util/shared/src/lib/utils/index.ts +7 -5
  430. package/tailwind.base.css +36 -0
  431. package/translations/de.json +42 -0
  432. package/translations/en.json +42 -0
  433. package/translations/es.json +42 -0
  434. package/translations/fr.json +42 -0
  435. package/translations/it.json +42 -0
  436. package/translations/nl.json +42 -0
  437. package/translations/pt.json +42 -0
  438. package/translations/sk.json +42 -0
  439. package/esm2022/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.mjs +0 -13
  440. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +0 -30
  441. package/esm2022/libs/ui/elements/src/lib/search-results-error/search-results-error.component.mjs +0 -29
  442. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-array/form-field-array.component.mjs +0 -11
  443. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-file/form-field-file.component.mjs +0 -27
  444. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.mjs +0 -11
  445. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.mjs +0 -27
  446. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.mjs +0 -49
  447. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +0 -11
  448. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.mjs +0 -11
  449. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.component.mjs +0 -76
  450. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.model.mjs +0 -2
  451. package/esm2022/libs/ui/inputs/src/lib/form-field/index.mjs +0 -10
  452. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts +0 -18
  453. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts.map +0 -1
  454. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +0 -1
  455. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts +0 -15
  456. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts.map +0 -1
  457. package/libs/ui/inputs/src/lib/form-field/form-field-array/form-field-array.component.d.ts.map +0 -1
  458. package/libs/ui/inputs/src/lib/form-field/form-field-file/form-field-file.component.d.ts.map +0 -1
  459. package/libs/ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.d.ts.map +0 -1
  460. package/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.d.ts +0 -11
  461. package/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.d.ts.map +0 -1
  462. package/libs/ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.d.ts.map +0 -1
  463. package/libs/ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +0 -1
  464. package/libs/ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts.map +0 -1
  465. package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts.map +0 -1
  466. package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts.map +0 -1
  467. package/libs/ui/inputs/src/lib/form-field/index.d.ts.map +0 -1
  468. package/src/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.ts +0 -18
  469. package/src/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.html +0 -11
  470. package/src/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.ts +0 -15
  471. package/src/libs/ui/inputs/src/lib/form-field/form-field.component.html +0 -68
  472. package/src/libs/ui/inputs/src/lib/form-field/form-field.component.ts +0 -80
  473. /package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.model.d.ts +0 -0
  474. /package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/index.d.ts +0 -0
  475. /package/src/libs/feature/editor/src/lib/{record-form/record-form.component.css → components/overview-upload/overview-upload.component.css} +0 -0
  476. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.css +0 -0
  477. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.html +0 -0
  478. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.css +0 -0
  479. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.html +0 -0
  480. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css} +0 -0
  481. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.css} +0 -0
  482. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.html +0 -0
  483. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css} +0 -0
  484. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.css} +0 -0
  485. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.css} +0 -0
  486. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.html +0 -0
  487. /package/src/libs/{ui/inputs/src/lib/form-field/form-field.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.css} +0 -0
  488. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +0 -0
  489. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.html +0 -0
  490. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.model.ts +0 -0
  491. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/index.ts +0 -0
  492. /package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.css → error/error.component.css} +0 -0
@@ -0,0 +1,30 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/material/icon";
5
+ import * as i3 from "@ngx-translate/core";
6
+ export var ErrorType;
7
+ (function (ErrorType) {
8
+ ErrorType[ErrorType["COULD_NOT_REACH_API"] = 0] = "COULD_NOT_REACH_API";
9
+ ErrorType[ErrorType["RECEIVED_ERROR"] = 1] = "RECEIVED_ERROR";
10
+ ErrorType[ErrorType["RECORD_NOT_FOUND"] = 2] = "RECORD_NOT_FOUND";
11
+ ErrorType[ErrorType["DATASET_HAS_NO_LINK"] = 3] = "DATASET_HAS_NO_LINK";
12
+ })(ErrorType || (ErrorType = {}));
13
+ export class ErrorComponent {
14
+ constructor() {
15
+ this.types = ErrorType;
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ErrorComponent, selector: "gn-ui-error", inputs: { type: "type", error: "error", recordId: "recordId" }, ngImport: i0, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark</mat-icon\n >\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark</mat-icon\n >\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark</mat-icon\n >\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ErrorComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'gn-ui-error', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark</mat-icon\n >\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark</mat-icon\n >\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark</mat-icon\n >\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"] }]
23
+ }], propDecorators: { type: [{
24
+ type: Input
25
+ }], error: [{
26
+ type: Input
27
+ }], recordId: [{
28
+ type: Input
29
+ }] } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9lbGVtZW50cy9zcmMvbGliL2Vycm9yL2Vycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9lcnJvci9lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTs7Ozs7QUFFekUsTUFBTSxDQUFOLElBQVksU0FLWDtBQUxELFdBQVksU0FBUztJQUNuQix1RUFBbUIsQ0FBQTtJQUNuQiw2REFBYyxDQUFBO0lBQ2QsaUVBQWdCLENBQUE7SUFDaEIsdUVBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLFNBQVMsS0FBVCxTQUFTLFFBS3BCO0FBUUQsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFVRSxVQUFLLEdBQUcsU0FBUyxDQUFBO0tBQ2xCOzhHQUxZLGNBQWM7a0dBQWQsY0FBYyxtSENmM0IsdXVEQWtEQTs7MkZEbkNhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmV4cG9ydCBlbnVtIEVycm9yVHlwZSB7XG4gIENPVUxEX05PVF9SRUFDSF9BUEksXG4gIFJFQ0VJVkVEX0VSUk9SLFxuICBSRUNPUkRfTk9UX0ZPVU5ELFxuICBEQVRBU0VUX0hBU19OT19MSU5LLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1lcnJvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Vycm9yLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEVycm9yQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdHlwZSE6IEVycm9yVHlwZVxuICBASW5wdXQoKSBlcnJvcj86IHN0cmluZ1xuICBASW5wdXQoKSByZWNvcmRJZD86IHN0cmluZ1xuICB0eXBlcyA9IEVycm9yVHlwZVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInAtWzEuN2VtXSBiZy1yZWQtNTAgdGV4dC1yZWQtODAwIHRleHQtWzEuNWVtXSB0ZXh0LWNlbnRlciByb3VuZGVkLWxnXCJcbj5cbiAgPGRpdlxuICAgICpuZ0lmPVwidHlwZSA9PT0gdHlwZXMuQ09VTERfTk9UX1JFQUNIX0FQSVwiXG4gICAgZGF0YS10ZXN0PVwiY291bGQtbm90LXJlYWNoLWFwaS1lcnJvclwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgb3BhY2l0eS00MFwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmYWNlXCI+ZmFjZTwvbWF0LWljb24+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHF1ZXN0aW9uLW1hcmsxXCJcbiAgICAgICAgPnF1ZXN0aW9uX21hcms8L21hdC1pY29uXG4gICAgICA+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHF1ZXN0aW9uLW1hcmsyXCJcbiAgICAgICAgPnF1ZXN0aW9uX21hcms8L21hdC1pY29uXG4gICAgICA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB0cmFuc2xhdGU+c2VhcmNoLmVycm9yLmNvdWxkTm90UmVhY2hBcGk8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cInR5cGUgPT09IHR5cGVzLkRBVEFTRVRfSEFTX05PX0xJTktcIlxuICAgIGRhdGEtdGVzdD1cImRhdGFzZXQtaGFzLW5vLWxpbmstZXJyb3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIG9wYWNpdHktNDBcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZmFjZVwiPmNvbXB1dGVyPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHRyYW5zbGF0ZT5zZWFyY2guZXJyb3IucmVjb3JkSGFzbm9saW5rPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gdHlwZXMuUkVDRUlWRURfRVJST1JcIiBkYXRhLXRlc3Q9XCJyZWNlaXZlZC1lcnJvci1lcnJvclwiPlxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBvcGFjaXR5LTQwXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGZhY2VcIj5tb29kX2JhZDwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB0cmFuc2xhdGU+c2VhcmNoLmVycm9yLnJlY2VpdmVkRXJyb3I8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JcIj57eyBlcnJvciB9fTwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwidHlwZSA9PT0gdHlwZXMuUkVDT1JEX05PVF9GT1VORFwiXG4gICAgZGF0YS10ZXN0PVwicmVjb3JkLW5vdC1mb3VuZC1lcnJvclwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgb3BhY2l0eS00MFwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBjb21wdXRlclwiPmNvbXB1dGVyPC9tYXQtaWNvbj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY29tcHV0ZXItcXVlc3Rpb24tbWFya1wiXG4gICAgICAgID5xdWVzdGlvbl9tYXJrPC9tYXQtaWNvblxuICAgICAgPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgdHJhbnNsYXRlIFt0cmFuc2xhdGVQYXJhbXNdPVwieyBpZDogcmVjb3JkSWQgfVwiPlxuICAgICAgc2VhcmNoLmVycm9yLnJlY29yZE5vdEZvdW5kXG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImVycm9yXCI+e3sgZXJyb3IgfX08L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -4,8 +4,8 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  import * as i2 from "@angular/material/icon";
6
6
  import * as i3 from "../../../../inputs/src/lib/button/button.component";
7
- import * as i4 from "../content-ghost/content-ghost.component";
8
- import * as i5 from "../thumbnail/thumbnail.component";
7
+ import * as i4 from "../thumbnail/thumbnail.component";
8
+ import * as i5 from "../content-ghost/content-ghost.component";
9
9
  export class ImageOverlayPreviewComponent {
10
10
  constructor() {
11
11
  this.isPlaceholderShown = new EventEmitter();
@@ -14,14 +14,14 @@ export class ImageOverlayPreviewComponent {
14
14
  basicLightbox.create(`<img src="${src}"/>`).show();
15
15
  }
16
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i4.ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: i5.ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }] }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i4.ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i5.ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }] }); }
18
18
  }
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, decorators: [{
20
20
  type: Component,
21
- args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n" }]
21
+ args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n" }]
22
22
  }], propDecorators: { imageUrl: [{
23
23
  type: Input
24
24
  }], isPlaceholderShown: [{
25
25
  type: Output
26
26
  }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utb3ZlcmxheS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9pbWFnZS1vdmVybGF5LXByZXZpZXcvaW1hZ2Utb3ZlcmxheS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9pbWFnZS1vdmVybGF5LXByZXZpZXcvaW1hZ2Utb3ZlcmxheS1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdEUsT0FBTyxLQUFLLGFBQWEsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7QUFPOUMsTUFBTSxPQUFPLDRCQUE0QjtJQUx6QztRQU9ZLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUE7S0FJM0Q7SUFIQyxZQUFZLENBQUMsR0FBVztRQUN0QixhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNwRCxDQUFDOzhHQUxVLDRCQUE0QjtrR0FBNUIsNEJBQTRCLDRKQ1J6QyxzK0JBOEJBOzsyRkR0QmEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLDZCQUE2Qjs4QkFLOUIsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgKiBhcyBiYXNpY0xpZ2h0Ym94IGZyb20gJ2Jhc2ljbGlnaHRib3gnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWltYWdlLW92ZXJsYXktcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1vdmVybGF5LXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbWFnZS1vdmVybGF5LXByZXZpZXcuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZU92ZXJsYXlQcmV2aWV3Q29tcG9uZW50IHtcbiAgQElucHV0KCkgaW1hZ2VVcmw6IHN0cmluZ1xuICBAT3V0cHV0KCkgaXNQbGFjZWhvbGRlclNob3duID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIG9wZW5MaWdodGJveChzcmM6IHN0cmluZykge1xuICAgIGJhc2ljTGlnaHRib3guY3JlYXRlKGA8aW1nIHNyYz1cIiR7c3JjfVwiLz5gKS5zaG93KClcbiAgfVxufVxuIiwiPGduLXVpLWNvbnRlbnQtZ2hvc3RcbiAgW3Nob3dDb250ZW50XT1cImltYWdlVXJsICE9PSB1bmRlZmluZWRcIlxuICBnaG9zdENsYXNzPVwiaC00OCBtYi0zXCJcbj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiaW1hZ2VVcmxcIlxuICAgIFtzaG93Q29udGVudF09XCJpbWFnZVVybCAhPT0gdW5kZWZpbmVkXCJcbiAgICBkYXRhLWN5PVwicmVjb3JkLXRodW1ibmFpbFwiXG4gICAgY2xhc3M9XCJmbGV4LXNocmluay0wIGJnLWdyYXktMTAwIHJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuIHctZnVsbCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGdyb3VwLWhvdmVyOnNoYWRvdy14bCBncm91cC1ob3Zlcjpib3JkZXItMCBoLTQ4IG1iLTNcIlxuICA+XG4gICAgPGduLXVpLXRodW1ibmFpbFxuICAgICAgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgdy1mdWxsXCJcbiAgICAgIFt0aHVtYm5haWxVcmxdPVwiaW1hZ2VVcmxcIlxuICAgICAgZml0PVwiY292ZXJcIlxuICAgICAgKHBsYWNlaG9sZGVyU2hvd24pPVwiaXNQbGFjZWhvbGRlclNob3duLmVtaXQoJGV2ZW50KVwiXG4gICAgPjwvZ24tdWktdGh1bWJuYWlsPlxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICBjbGFzcz1cImFic29sdXRlIGJvdHRvbS0wIHJpZ2h0LTAgei0xMCBtci0yIG1iLTJcIlxuICAgICAgICBbdHlwZV09XCInb3V0bGluZSdcIlxuICAgICAgICBbZXh0cmFDbGFzc109XCInIXB5LTIgIXB4LTAnXCJcbiAgICAgICAgKGJ1dHRvbkNsaWNrKT1cIm9wZW5MaWdodGJveChpbWFnZVVybClcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGZvbnQtZXh0cmFsaWdodFwiXG4gICAgICAgICAgPnpvb21fb3V0X21hcDwvbWF0LWljb25cbiAgICAgICAgPlxuICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9nbi11aS1jb250ZW50LWdob3N0PlxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utb3ZlcmxheS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9pbWFnZS1vdmVybGF5LXByZXZpZXcvaW1hZ2Utb3ZlcmxheS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9pbWFnZS1vdmVybGF5LXByZXZpZXcvaW1hZ2Utb3ZlcmxheS1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdEUsT0FBTyxLQUFLLGFBQWEsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7QUFPOUMsTUFBTSxPQUFPLDRCQUE0QjtJQUx6QztRQU9ZLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUE7S0FJM0Q7SUFIQyxZQUFZLENBQUMsR0FBVztRQUN0QixhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNwRCxDQUFDOzhHQUxVLDRCQUE0QjtrR0FBNUIsNEJBQTRCLDRKQ1J6QyxpK0JBOEJBOzsyRkR0QmEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLDZCQUE2Qjs4QkFLOUIsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgKiBhcyBiYXNpY0xpZ2h0Ym94IGZyb20gJ2Jhc2ljbGlnaHRib3gnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWltYWdlLW92ZXJsYXktcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1vdmVybGF5LXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbWFnZS1vdmVybGF5LXByZXZpZXcuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZU92ZXJsYXlQcmV2aWV3Q29tcG9uZW50IHtcbiAgQElucHV0KCkgaW1hZ2VVcmw6IHN0cmluZ1xuICBAT3V0cHV0KCkgaXNQbGFjZWhvbGRlclNob3duID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIG9wZW5MaWdodGJveChzcmM6IHN0cmluZykge1xuICAgIGJhc2ljTGlnaHRib3guY3JlYXRlKGA8aW1nIHNyYz1cIiR7c3JjfVwiLz5gKS5zaG93KClcbiAgfVxufVxuIiwiPGduLXVpLWNvbnRlbnQtZ2hvc3RcbiAgW3Nob3dDb250ZW50XT1cImltYWdlVXJsICE9PSB1bmRlZmluZWRcIlxuICBnaG9zdENsYXNzPVwiaC00OCBtYi0zXCJcbj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiaW1hZ2VVcmxcIlxuICAgIFtzaG93Q29udGVudF09XCJpbWFnZVVybCAhPT0gdW5kZWZpbmVkXCJcbiAgICBkYXRhLWN5PVwicmVjb3JkLXRodW1ibmFpbFwiXG4gICAgY2xhc3M9XCJzaHJpbmstMCBiZy1ncmF5LTEwMCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiB3LWZ1bGwgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBncm91cC1ob3ZlcjpzaGFkb3cteGwgZ3JvdXAtaG92ZXI6Ym9yZGVyLTAgaC00OCBtYi0zXCJcbiAgPlxuICAgIDxnbi11aS10aHVtYm5haWxcbiAgICAgIGNsYXNzPVwicmVsYXRpdmUgaC1mdWxsIHctZnVsbFwiXG4gICAgICBbdGh1bWJuYWlsVXJsXT1cImltYWdlVXJsXCJcbiAgICAgIGZpdD1cImNvdmVyXCJcbiAgICAgIChwbGFjZWhvbGRlclNob3duKT1cImlzUGxhY2Vob2xkZXJTaG93bi5lbWl0KCRldmVudClcIlxuICAgID48L2duLXVpLXRodW1ibmFpbD5cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cbiAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBib3R0b20tMCByaWdodC0wIHotMTAgbXItMiBtYi0yXCJcbiAgICAgICAgW3R5cGVdPVwiJ291dGxpbmUnXCJcbiAgICAgICAgW2V4dHJhQ2xhc3NdPVwiJyFweS0yICFweC0wJ1wiXG4gICAgICAgIChidXR0b25DbGljayk9XCJvcGVuTGlnaHRib3goaW1hZ2VVcmwpXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmb250LWV4dHJhbGlnaHRcIlxuICAgICAgICAgID56b29tX291dF9tYXA8L21hdC1pY29uXG4gICAgICAgID5cbiAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZ24tdWktY29udGVudC1naG9zdD5cbiJdfQ==
@@ -1,15 +1,28 @@
1
1
  import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
2
+ import { MatIconModule } from '@angular/material/icon';
3
+ import { CommonModule } from '@angular/common';
2
4
  import * as i0 from "@angular/core";
3
5
  import * as i1 from "@angular/common";
4
6
  import * as i2 from "@angular/material/icon";
5
7
  export class LinkCardComponent {
8
+ constructor() {
9
+ this.compact = false;
10
+ }
11
+ get title() {
12
+ if (this.link.name && this.link.description) {
13
+ return `${this.link.name} | ${this.link.description}`;
14
+ }
15
+ return this.link.name || this.link.description || '';
16
+ }
6
17
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, selector: "gn-ui-link-card", inputs: { link: "link" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group h-40 grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden lg:w-80\"\n>\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\">open_in_new</mat-icon>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, isStandalone: true, selector: "gn-ui-link-card", inputs: { link: "link", compact: "compact" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden\"\n [ngClass]=\"{ 'h-40': !compact }\"\n [title]=\"title\"\n>\n <ng-container *ngIf=\"!compact; else compactTpl\">\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-container>\n <ng-template #compactTpl>\n <div class=\"flex items-center justify-between gap-4\">\n <p\n class=\"overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap\"\n >\n {{ link.name || link.description }}\n </p>\n <mat-icon class=\"material-symbols-outlined card-icon flex-shrink-0\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-template>\n</a>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8
19
  }
9
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, decorators: [{
10
21
  type: Component,
11
- args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group h-40 grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden lg:w-80\"\n>\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\">open_in_new</mat-icon>\n </div>\n</a>\n" }]
22
+ args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden\"\n [ngClass]=\"{ 'h-40': !compact }\"\n [title]=\"title\"\n>\n <ng-container *ngIf=\"!compact; else compactTpl\">\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-container>\n <ng-template #compactTpl>\n <div class=\"flex items-center justify-between gap-4\">\n <p\n class=\"overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap\"\n >\n {{ link.name || link.description }}\n </p>\n <mat-icon class=\"material-symbols-outlined card-icon flex-shrink-0\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-template>\n</a>\n" }]
12
23
  }], propDecorators: { link: [{
13
24
  type: Input
25
+ }], compact: [{
26
+ type: Input
14
27
  }] } });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9saW5rLWNhcmQvbGluay1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9saW5rLWNhcmQvbGluay1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7O0FBU3pFLE1BQU0sT0FBTyxpQkFBaUI7OEdBQWpCLGlCQUFpQjtrR0FBakIsaUJBQWlCLGlGQ1Q5QixxdkJBeUJBOzsyRkRoQmEsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBEYXRhc2V0RGlzdHJpYnV0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1saW5rLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGluay1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGluay1jYXJkLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExpbmtDYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbGluazogRGF0YXNldERpc3RyaWJ1dGlvblxufVxuIiwiPGFcbiAgW2hyZWZdPVwibGluay51cmxcIlxuICB0YXJnZXQ9XCJfYmxhbmtcIlxuICBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGdyb3VwIGgtNDAgZ3JvdyBweS01IHB4LTUgYmctd2hpdGUgcm91bmRlZCBib3JkZXItZ3JheS0zMDAgZmlsdGVyIGNhcmQtc2hhZG93IG92ZXJmbG93LWhpZGRlbiBsZzp3LTgwXCJcbj5cbiAgPGRpdiBjbGFzcz1cIm1heC1oLTI0IG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzXCI+XG4gICAgPHBcbiAgICAgIGNsYXNzPVwiZm9udC10aXRsZSBmb250LW1lZGl1bSB0ZXh0LTIxIHRleHQtYmxhY2sgYnJlYWstd29yZHMgbWItMSBsaW5lLWNsYW1wLTJcIlxuICAgID5cbiAgICAgIHt7IGxpbmsubmFtZSB9fVxuICAgIDwvcD5cbiAgICA8cCBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtc20gYnJlYWstd29yZHNcIj5cbiAgICAgIHt7IGxpbmsuZGVzY3JpcHRpb24gfX1cbiAgICA8L3A+XG4gICAgPHBcbiAgICAgICpuZ0lmPVwiIWxpbmsubmFtZSAmJiAhbGluay5kZXNjcmlwdGlvblwiXG4gICAgICBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtc20gYnJlYWstd29yZHMgdHJ1bmNhdGVcIlxuICAgID5cbiAgICAgIHt7IGxpbmsudXJsIH19XG4gICAgPC9wPlxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGNhcmQtaWNvblwiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cbiAgPC9kaXY+XG48L2E+XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9saW5rLWNhcmQvbGluay1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9saW5rLWNhcmQvbGluay1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7Ozs7QUFVOUMsTUFBTSxPQUFPLGlCQUFpQjtJQVI5QjtRQVVXLFlBQU8sR0FBRyxLQUFLLENBQUE7S0FRekI7SUFOQyxJQUFJLEtBQUs7UUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzNDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1NBQ3REO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUE7SUFDdEQsQ0FBQzs4R0FUVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix5SENiOUIsMjBDQTJDQSx5RERoQ1ksWUFBWSxnT0FBRSxhQUFhOzsyRkFFMUIsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7OEJBRzdCLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBEYXRhc2V0RGlzdHJpYnV0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWxpbmstY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5rLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saW5rLWNhcmQuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIExpbmtDYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbGluazogRGF0YXNldERpc3RyaWJ1dGlvblxuICBASW5wdXQoKSBjb21wYWN0ID0gZmFsc2VcblxuICBnZXQgdGl0bGUoKSB7XG4gICAgaWYgKHRoaXMubGluay5uYW1lICYmIHRoaXMubGluay5kZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIGAke3RoaXMubGluay5uYW1lfSB8ICR7dGhpcy5saW5rLmRlc2NyaXB0aW9ufWBcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGluay5uYW1lIHx8IHRoaXMubGluay5kZXNjcmlwdGlvbiB8fCAnJ1xuICB9XG59XG4iLCI8YVxuICBbaHJlZl09XCJsaW5rLnVybFwiXG4gIHRhcmdldD1cIl9ibGFua1wiXG4gIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gZ3JvdXAgZ3JvdyBweS01IHB4LTUgYmctd2hpdGUgcm91bmRlZCBib3JkZXItZ3JheS0zMDAgZmlsdGVyIGNhcmQtc2hhZG93IG92ZXJmbG93LWhpZGRlblwiXG4gIFtuZ0NsYXNzXT1cInsgJ2gtNDAnOiAhY29tcGFjdCB9XCJcbiAgW3RpdGxlXT1cInRpdGxlXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb21wYWN0OyBlbHNlIGNvbXBhY3RUcGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWF4LWgtMjQgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXNcIj5cbiAgICAgIDxwXG4gICAgICAgIGNsYXNzPVwiZm9udC10aXRsZSBmb250LW1lZGl1bSB0ZXh0LTIxIHRleHQtYmxhY2sgYnJlYWstd29yZHMgbWItMSBsaW5lLWNsYW1wLTJcIlxuICAgICAgPlxuICAgICAgICB7eyBsaW5rLm5hbWUgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1zbSBicmVhay13b3Jkc1wiPlxuICAgICAgICB7eyBsaW5rLmRlc2NyaXB0aW9uIH19XG4gICAgICA8L3A+XG4gICAgICA8cFxuICAgICAgICAqbmdJZj1cIiFsaW5rLm5hbWUgJiYgIWxpbmsuZGVzY3JpcHRpb25cIlxuICAgICAgICBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtc20gYnJlYWstd29yZHMgdHJ1bmNhdGVcIlxuICAgICAgPlxuICAgICAgICB7eyBsaW5rLnVybCB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGNhcmQtaWNvblwiXG4gICAgICAgID5vcGVuX2luX25ldzwvbWF0LWljb25cbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjY29tcGFjdFRwbD5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+XG4gICAgICA8cFxuICAgICAgICBjbGFzcz1cIm92ZXJmbG93LWhpZGRlbiBmb250LXRpdGxlIGZvbnQtbWVkaXVtIHRleHQtMjEgdGV4dC1ibGFjayB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXCJcbiAgICAgID5cbiAgICAgICAge3sgbGluay5uYW1lIHx8IGxpbmsuZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvcD5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY2FyZC1pY29uIGZsZXgtc2hyaW5rLTBcIlxuICAgICAgICA+b3Blbl9pbl9uZXc8L21hdC1pY29uXG4gICAgICA+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2E+XG4iXX0=
@@ -0,0 +1,45 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { MarkdownParserComponent } from '../markdown-parser/markdown-parser.component';
5
+ import { TranslateModule } from '@ngx-translate/core';
6
+ import { ButtonComponent, TextAreaComponent } from '../../../../../../libs/ui/inputs/src';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+ import { MatTooltipModule } from '@angular/material/tooltip';
9
+ import * as i0 from "@angular/core";
10
+ export class MarkdownEditorComponent {
11
+ constructor() {
12
+ this.preview = false;
13
+ this.textContentChanged = new EventEmitter();
14
+ }
15
+ textContentChangedHandler(textContent) {
16
+ this.textContent = textContent;
17
+ this.textContentChanged.emit(this.textContent);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p class=\"flex-none mb-2 font-medium text-sm text-gray-900\">\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'gn-ui-markdown-editor', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
25
+ CommonModule,
26
+ FormsModule,
27
+ MatIconModule,
28
+ MatTooltipModule,
29
+ ButtonComponent,
30
+ TextAreaComponent,
31
+ MarkdownParserComponent,
32
+ TranslateModule,
33
+ ], template: "<div class=\"h-full flex flex-col\">\n <p class=\"flex-none mb-2 font-medium text-sm text-gray-900\">\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n" }]
34
+ }], propDecorators: { preview: [{
35
+ type: Input
36
+ }], helperText: [{
37
+ type: Input
38
+ }], placeholder: [{
39
+ type: Input
40
+ }], textContent: [{
41
+ type: Input
42
+ }], textContentChanged: [{
43
+ type: Output
44
+ }] } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tYXJrZG93bi1lZGl0b3IvbWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tYXJrZG93bi1lZGl0b3IvbWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUE7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7O0FBbUI1RCxNQUFNLE9BQU8sdUJBQXVCO0lBakJwQztRQWtCVyxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBSWQsdUJBQWtCLEdBQzFCLElBQUksWUFBWSxFQUFVLENBQUE7S0FNN0I7SUFKQyx5QkFBeUIsQ0FBQyxXQUFtQjtRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNoRCxDQUFDOzhHQVhVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDBQQ2hDcEMsbWtCQWtCQSx5RERJSSxZQUFZLDhCQUNaLFdBQVcsOEJBQ1gsYUFBYSw4QkFDYixnQkFBZ0IsK0JBRWhCLGlCQUFpQiw4SkFDakIsdUJBQXVCLDBGQUN2QixlQUFlOzsyRkFHTix1QkFBdUI7a0JBakJuQyxTQUFTOytCQUNFLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixlQUFlO3FCQUNoQjs4QkFHUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IE1hcmtkb3duUGFyc2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vbWFya2Rvd24tcGFyc2VyL21hcmtkb3duLXBhcnNlci5jb21wb25lbnQnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50LCBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJ1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLW1hcmtkb3duLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXJrZG93bi1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXJrZG93bi1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIFRleHRBcmVhQ29tcG9uZW50LFxuICAgIE1hcmtkb3duUGFyc2VyQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWFya2Rvd25FZGl0b3JDb21wb25lbnQge1xuICBASW5wdXQoKSBwcmV2aWV3ID0gZmFsc2VcbiAgQElucHV0KCkgaGVscGVyVGV4dD86IHN0cmluZ1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nXG4gIEBJbnB1dCgpIHRleHRDb250ZW50OiBzdHJpbmdcbiAgQE91dHB1dCgpIHRleHRDb250ZW50Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpXG5cbiAgdGV4dENvbnRlbnRDaGFuZ2VkSGFuZGxlcih0ZXh0Q29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHRleHRDb250ZW50XG4gICAgdGhpcy50ZXh0Q29udGVudENoYW5nZWQuZW1pdCh0aGlzLnRleHRDb250ZW50KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaC1mdWxsIGZsZXggZmxleC1jb2xcIj5cbiAgPHAgY2xhc3M9XCJmbGV4LW5vbmUgbWItMiBmb250LW1lZGl1bSB0ZXh0LXNtIHRleHQtZ3JheS05MDBcIj5cbiAgICB7eyBoZWxwZXJUZXh0IH19XG4gIDwvcD5cbiAgPGRpdiBjbGFzcz1cImZsZXgtMVwiIFtoaWRkZW5dPVwicHJldmlld1wiPlxuICAgIDxnbi11aS10ZXh0LWFyZWFcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbdmFsdWVdPVwidGV4dENvbnRlbnRcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cInRleHRDb250ZW50Q2hhbmdlZEhhbmRsZXIoJGV2ZW50KVwiXG4gICAgPjwvZ24tdWktdGV4dC1hcmVhPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmxleC0xIGJvcmRlciBib3JkZXItZ3JheS04MDAgcm91bmRlZCBvdmVyZmxvdy15LXNjcm9sbFwiXG4gICAgW2hpZGRlbl09XCIhcHJldmlld1wiXG4gID5cbiAgICA8Z24tdWktbWFya2Rvd24tcGFyc2VyIFt0ZXh0Q29udGVudF09XCJ0ZXh0Q29udGVudFwiPjwvZ24tdWktbWFya2Rvd24tcGFyc2VyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -8,8 +8,8 @@ import * as i4 from "../../../../layout/src/lib/expandable-panel/expandable-pane
8
8
  import * as i5 from "@ngx-translate/core";
9
9
  import * as i6 from "../../../../inputs/src/lib/copy-text-button/copy-text-button.component";
10
10
  import * as i7 from "../markdown-parser/markdown-parser.component";
11
- import * as i8 from "../content-ghost/content-ghost.component";
12
- import * as i9 from "../thumbnail/thumbnail.component";
11
+ import * as i8 from "../thumbnail/thumbnail.component";
12
+ import * as i9 from "../content-ghost/content-ghost.component";
13
13
  import * as i10 from "./linkify.directive";
14
14
  import * as i11 from "../max-lines/max-lines.component";
15
15
  export class MetadataInfoComponent {
@@ -76,7 +76,7 @@ export class MetadataInfoComponent {
76
76
  this.keyword.emit(keyword);
77
77
  }
78
78
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, 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 ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\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 <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\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.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\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.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\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.languages\">\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.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\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 && metadata.recordUpdated.toLocaleString() }}\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 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 mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: i4.ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: i7.MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: i8.ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: i9.ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "directive", type: i10.GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: i11.MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, 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 ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\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 <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\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.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\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.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\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.languages\">\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.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\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 && metadata.recordUpdated.toLocaleString() }}\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 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 mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: i4.ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: i7.MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: i8.ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i9.ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: i10.GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: i11.MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
80
80
  }
81
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
82
82
  type: Component,
@@ -0,0 +1,34 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MatIconModule } from '@angular/material/icon';
4
+ import { ButtonComponent } from '../../../../../../libs/ui/inputs/src';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/material/icon";
8
+ export class NotificationComponent {
9
+ constructor() {
10
+ this.type = 'info';
11
+ this.notificationClose = new EventEmitter();
12
+ }
13
+ handleClose(event) {
14
+ event?.preventDefault();
15
+ this.notificationClose.emit();
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NotificationComponent, isStandalone: true, selector: "gn-ui-notification", inputs: { type: "type", title: "title", text: "text", closeMessage: "closeMessage" }, outputs: { notificationClose: "notificationClose" }, ngImport: i0, template: "<div\n class=\"p-[16px] flex flex-row gap-[16px] items-start border border-gray-200 shadow-md rounded bg-background\"\n>\n <div\n role=\"alert\"\n class=\"rounded-full text-white p-[6px] w-[32px] h-[32px] flex shrink-0\"\n [ngClass]=\"{\n 'bg-red-500': type === 'error',\n 'bg-yellow-500': type === 'warning',\n 'bg-green-500': type === 'success',\n 'bg-blue-500': type === 'info'\n }\"\n [ngSwitch]=\"type\"\n >\n <mat-icon class=\"material-symbols-outlined !w-[18px] !h-[18px] text-[20px]\">\n <ng-container *ngSwitchCase=\"'success'\">check_circle</ng-container>\n <ng-container *ngSwitchCase=\"'info'\">info</ng-container>\n <ng-container *ngSwitchCase=\"'warning'\">warning</ng-container>\n <ng-container *ngSwitchCase=\"'error'\">error</ng-container>\n </mat-icon>\n </div>\n <div\n class=\"flex flex-col items-start gap-[4px] pt-[3px] grow shrink overflow-hidden\"\n >\n <div class=\"font-bold text-[16px] text-gray-900\">\n {{ title }}\n </div>\n <div class=\"text-[14px] text-gray-800\">\n {{ text }}\n </div>\n <a\n href\n *ngIf=\"closeMessage\"\n class=\"text-[14px] gn-ui-link\"\n (click)=\"handleClose($event)\"\n >\n {{ closeMessage }}\n </a>\n </div>\n <gn-ui-button\n type=\"light\"\n class=\"shrink-0\"\n (buttonClick)=\"handleClose()\"\n [style.--gn-ui-button-padding]=\"0\"\n [style.--gn-ui-button-width]=\"'21px'\"\n [style.--gn-ui-button-height]=\"'21px'\"\n >\n <mat-icon class=\"material-symbols-outlined text-[22px] !w-[21px] !h-[21px]\"\n >close</mat-icon\n >\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'gn-ui-notification', standalone: true, imports: [CommonModule, MatIconModule, ButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"p-[16px] flex flex-row gap-[16px] items-start border border-gray-200 shadow-md rounded bg-background\"\n>\n <div\n role=\"alert\"\n class=\"rounded-full text-white p-[6px] w-[32px] h-[32px] flex shrink-0\"\n [ngClass]=\"{\n 'bg-red-500': type === 'error',\n 'bg-yellow-500': type === 'warning',\n 'bg-green-500': type === 'success',\n 'bg-blue-500': type === 'info'\n }\"\n [ngSwitch]=\"type\"\n >\n <mat-icon class=\"material-symbols-outlined !w-[18px] !h-[18px] text-[20px]\">\n <ng-container *ngSwitchCase=\"'success'\">check_circle</ng-container>\n <ng-container *ngSwitchCase=\"'info'\">info</ng-container>\n <ng-container *ngSwitchCase=\"'warning'\">warning</ng-container>\n <ng-container *ngSwitchCase=\"'error'\">error</ng-container>\n </mat-icon>\n </div>\n <div\n class=\"flex flex-col items-start gap-[4px] pt-[3px] grow shrink overflow-hidden\"\n >\n <div class=\"font-bold text-[16px] text-gray-900\">\n {{ title }}\n </div>\n <div class=\"text-[14px] text-gray-800\">\n {{ text }}\n </div>\n <a\n href\n *ngIf=\"closeMessage\"\n class=\"text-[14px] gn-ui-link\"\n (click)=\"handleClose($event)\"\n >\n {{ closeMessage }}\n </a>\n </div>\n <gn-ui-button\n type=\"light\"\n class=\"shrink-0\"\n (buttonClick)=\"handleClose()\"\n [style.--gn-ui-button-padding]=\"0\"\n [style.--gn-ui-button-width]=\"'21px'\"\n [style.--gn-ui-button-height]=\"'21px'\"\n >\n <mat-icon class=\"material-symbols-outlined text-[22px] !w-[21px] !h-[21px]\"\n >close</mat-icon\n >\n </gn-ui-button>\n</div>\n" }]
23
+ }], propDecorators: { type: [{
24
+ type: Input
25
+ }], title: [{
26
+ type: Input
27
+ }], text: [{
28
+ type: Input
29
+ }], closeMessage: [{
30
+ type: Input
31
+ }], notificationClose: [{
32
+ type: Output
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFBOzs7O0FBVXRFLE1BQU0sT0FBTyxxQkFBcUI7SUFSbEM7UUFTVyxTQUFJLEdBQTZDLE1BQU0sQ0FBQTtRQUl0RCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO0tBTXZEO0lBSkMsV0FBVyxDQUFDLEtBQWE7UUFDdkIsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvQixDQUFDOzhHQVZVLHFCQUFxQjtrR0FBckIscUJBQXFCLHlOQ25CbEMseW9EQW9EQSx5RER0Q1ksWUFBWSw0WkFBRSxhQUFhLG9MQUFFLGVBQWU7OzJGQUszQyxxQkFBcUI7a0JBUmpDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLG1CQUd0Qyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJ1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1ub3RpZmljYXRpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBCdXR0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHR5cGU6ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnc3VjY2VzcycgPSAnaW5mbydcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZ1xuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmdcbiAgQElucHV0KCkgY2xvc2VNZXNzYWdlPzogc3RyaW5nXG4gIEBPdXRwdXQoKSBub3RpZmljYXRpb25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gIGhhbmRsZUNsb3NlKGV2ZW50PzogRXZlbnQpIHtcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKVxuICAgIHRoaXMubm90aWZpY2F0aW9uQ2xvc2UuZW1pdCgpXG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJwLVsxNnB4XSBmbGV4IGZsZXgtcm93IGdhcC1bMTZweF0gaXRlbXMtc3RhcnQgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBzaGFkb3ctbWQgcm91bmRlZCBiZy1iYWNrZ3JvdW5kXCJcbj5cbiAgPGRpdlxuICAgIHJvbGU9XCJhbGVydFwiXG4gICAgY2xhc3M9XCJyb3VuZGVkLWZ1bGwgdGV4dC13aGl0ZSBwLVs2cHhdIHctWzMycHhdIGgtWzMycHhdIGZsZXggc2hyaW5rLTBcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdiZy1yZWQtNTAwJzogdHlwZSA9PT0gJ2Vycm9yJyxcbiAgICAgICdiZy15ZWxsb3ctNTAwJzogdHlwZSA9PT0gJ3dhcm5pbmcnLFxuICAgICAgJ2JnLWdyZWVuLTUwMCc6IHR5cGUgPT09ICdzdWNjZXNzJyxcbiAgICAgICdiZy1ibHVlLTUwMCc6IHR5cGUgPT09ICdpbmZvJ1xuICAgIH1cIlxuICAgIFtuZ1N3aXRjaF09XCJ0eXBlXCJcbiAgPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgIXctWzE4cHhdICFoLVsxOHB4XSB0ZXh0LVsyMHB4XVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N1Y2Nlc3MnXCI+Y2hlY2tfY2lyY2xlPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW5mbydcIj5pbmZvPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInd2FybmluZydcIj53YXJuaW5nPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZXJyb3InXCI+ZXJyb3I8L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1pY29uPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtWzRweF0gcHQtWzNweF0gZ3JvdyBzaHJpbmsgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1bMTZweF0gdGV4dC1ncmF5LTkwMFwiPlxuICAgICAge3sgdGl0bGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1bMTRweF0gdGV4dC1ncmF5LTgwMFwiPlxuICAgICAge3sgdGV4dCB9fVxuICAgIDwvZGl2PlxuICAgIDxhXG4gICAgICBocmVmXG4gICAgICAqbmdJZj1cImNsb3NlTWVzc2FnZVwiXG4gICAgICBjbGFzcz1cInRleHQtWzE0cHhdIGduLXVpLWxpbmtcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsb3NlKCRldmVudClcIlxuICAgID5cbiAgICAgIHt7IGNsb3NlTWVzc2FnZSB9fVxuICAgIDwvYT5cbiAgPC9kaXY+XG4gIDxnbi11aS1idXR0b25cbiAgICB0eXBlPVwibGlnaHRcIlxuICAgIGNsYXNzPVwic2hyaW5rLTBcIlxuICAgIChidXR0b25DbGljayk9XCJoYW5kbGVDbG9zZSgpXCJcbiAgICBbc3R5bGUuLS1nbi11aS1idXR0b24tcGFkZGluZ109XCIwXCJcbiAgICBbc3R5bGUuLS1nbi11aS1idXR0b24td2lkdGhdPVwiJzIxcHgnXCJcbiAgICBbc3R5bGUuLS1nbi11aS1idXR0b24taGVpZ2h0XT1cIicyMXB4J1wiXG4gID5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHRleHQtWzIycHhdICF3LVsyMXB4XSAhaC1bMjFweF1cIlxuICAgICAgPmNsb3NlPC9tYXQtaWNvblxuICAgID5cbiAgPC9nbi11aS1idXR0b24+XG48L2Rpdj5cbiJdfQ==