geonetwork-ui 2.4.0-dev.e4dc8777 → 2.4.0-dev.e689547d

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 (416) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.mjs +1 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +7 -5
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +30 -2
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.mjs +31 -0
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +23 -1
  8. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +10 -3
  9. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +31 -3
  10. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +11 -1
  11. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +11 -1
  12. package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +28 -1
  13. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  14. package/esm2022/libs/common/domain/src/lib/model/user/user.model.mjs +1 -1
  15. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  16. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  17. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +2 -6
  18. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +3 -1
  19. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +8 -3
  20. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +10 -2
  21. package/esm2022/libs/feature/editor/src/lib/+state/editor.models.mjs +1 -1
  22. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +7 -3
  23. package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +16 -6
  24. package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +29 -0
  25. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +78 -0
  26. package/esm2022/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.mjs +96 -0
  27. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +164 -0
  28. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +19 -41
  29. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +10 -8
  30. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +101 -0
  31. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +44 -0
  32. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +28 -0
  33. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +10 -6
  34. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +11 -11
  35. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.mjs +9 -8
  36. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +111 -5
  37. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +49 -52
  38. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +16 -14
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +37 -43
  40. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +1 -2
  41. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +13 -7
  42. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +8 -8
  43. package/esm2022/libs/feature/editor/src/lib/expressions.mjs +1 -1
  44. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +6 -4
  45. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +175 -59
  46. package/esm2022/libs/feature/editor/src/lib/models/editor-config.model.mjs +2 -0
  47. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +2 -1
  48. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +8 -3
  49. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +6 -6
  50. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +6 -5
  51. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +8 -5
  52. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +6 -7
  53. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +8 -7
  54. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +7 -6
  55. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +7 -26
  56. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +29 -13
  57. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +10 -5
  58. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +42 -23
  59. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +13 -5
  60. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +49 -15
  61. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +3 -3
  62. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +48 -8
  63. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +6 -2
  64. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  65. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +27 -0
  66. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +4 -3
  67. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
  68. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  69. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +5 -11
  70. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +3 -3
  71. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +5 -5
  72. package/esm2022/libs/ui/elements/src/lib/sortable-list/sortable-list.component.mjs +6 -10
  73. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +11 -5
  74. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +3 -3
  75. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  76. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +19 -5
  77. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +26 -24
  78. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +17 -14
  79. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +32 -0
  80. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +6 -21
  81. package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +6 -17
  82. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +3 -7
  83. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +43 -0
  84. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +3 -3
  85. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
  86. package/esm2022/libs/ui/map/src/lib/ui-map.module.mjs +3 -3
  87. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +67 -0
  88. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +31 -11
  89. package/esm2022/libs/ui/widgets/src/index.mjs +2 -1
  90. package/esm2022/libs/ui/widgets/src/lib/popover/popover.component.mjs +68 -0
  91. package/esm2022/translations/de.json +112 -34
  92. package/esm2022/translations/en.json +88 -10
  93. package/esm2022/translations/es.json +83 -5
  94. package/esm2022/translations/fr.json +99 -21
  95. package/esm2022/translations/it.json +86 -8
  96. package/esm2022/translations/nl.json +83 -5
  97. package/esm2022/translations/pt.json +83 -5
  98. package/fesm2022/geonetwork-ui.mjs +5155 -3396
  99. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  100. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  101. package/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.d.ts +2 -6
  102. package/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.d.ts.map +1 -1
  103. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +1 -0
  104. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  105. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  106. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +8 -1
  107. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  108. package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts +5 -0
  109. package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts.map +1 -0
  110. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +3 -1
  111. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  112. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +1 -0
  113. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  114. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +7 -1
  115. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  116. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  117. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +1 -0
  118. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  119. package/libs/common/domain/src/lib/model/record/contact.model.d.ts +1 -0
  120. package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
  121. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +3 -1
  122. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  123. package/libs/common/domain/src/lib/model/user/user.model.d.ts +1 -1
  124. package/libs/common/domain/src/lib/model/user/user.model.d.ts.map +1 -1
  125. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -0
  126. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  127. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +17 -0
  128. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  129. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  130. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +6 -0
  131. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  132. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +5 -0
  133. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  134. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +5 -4
  135. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  136. package/libs/feature/editor/src/lib/+state/editor.models.d.ts +8 -0
  137. package/libs/feature/editor/src/lib/+state/editor.models.d.ts.map +1 -1
  138. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +4 -3
  139. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  140. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +4 -8
  141. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  142. package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts +12 -0
  143. package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts.map +1 -0
  144. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts +32 -0
  145. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -0
  146. package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts +27 -0
  147. package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts.map +1 -0
  148. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +44 -0
  149. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -0
  150. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts +8 -19
  151. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  152. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +6 -4
  153. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -1
  154. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +22 -0
  155. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +1 -0
  156. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +15 -0
  157. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts.map +1 -0
  158. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +13 -0
  159. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -0
  160. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +4 -3
  161. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +1 -1
  162. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts +4 -4
  163. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  164. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.d.ts +4 -3
  165. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.d.ts.map +1 -1
  166. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts +23 -0
  167. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  168. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts +15 -15
  169. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
  170. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +5 -5
  171. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -1
  172. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +16 -20
  173. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  174. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +0 -1
  175. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  176. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts +6 -7
  177. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
  178. package/libs/feature/editor/src/lib/expressions.d.ts +1 -1
  179. package/libs/feature/editor/src/lib/expressions.d.ts.map +1 -1
  180. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +2 -1
  181. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  182. package/libs/feature/editor/src/lib/fields.config.d.ts +46 -2
  183. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  184. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts +36 -0
  185. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts.map +1 -0
  186. package/libs/feature/editor/src/lib/models/index.d.ts +1 -0
  187. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  188. package/libs/feature/editor/src/lib/services/editor.service.d.ts +3 -2
  189. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  190. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts +1 -1
  191. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  192. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts +1 -1
  193. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  194. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +1 -1
  195. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  196. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +1 -1
  197. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  198. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +1 -1
  199. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  200. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +1 -1
  201. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  202. package/libs/feature/map/src/lib/feature-map.module.d.ts +16 -21
  203. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  204. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +1 -1
  205. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  206. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  207. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +4 -1
  208. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  209. package/libs/feature/record/src/lib/data-view-share/data-view-share.component.d.ts +4 -1
  210. package/libs/feature/record/src/lib/data-view-share/data-view-share.component.d.ts.map +1 -1
  211. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +4 -1
  212. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  213. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +15 -4
  214. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  215. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
  216. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  217. package/libs/ui/elements/src/index.d.ts +1 -0
  218. package/libs/ui/elements/src/index.d.ts.map +1 -1
  219. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +18 -0
  220. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
  221. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  222. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -3
  223. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  224. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
  225. package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts +5 -10
  226. package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts.map +1 -1
  227. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +8 -6
  228. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  229. package/libs/ui/inputs/src/index.d.ts +1 -0
  230. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  231. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +9 -1
  232. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  233. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +5 -3
  234. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -1
  235. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +3 -4
  236. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -1
  237. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts +17 -0
  238. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts.map +1 -0
  239. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +0 -4
  240. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  241. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +2 -4
  242. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
  243. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +34 -35
  244. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  245. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +18 -0
  246. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -0
  247. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +20 -0
  248. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -0
  249. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +10 -4
  250. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  251. package/libs/ui/widgets/src/index.d.ts +1 -0
  252. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  253. package/libs/ui/widgets/src/lib/popover/popover.component.d.ts +19 -0
  254. package/libs/ui/widgets/src/lib/popover/popover.component.d.ts.map +1 -0
  255. package/package.json +1 -1
  256. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +6 -1
  257. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -1
  258. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +37 -12
  259. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +5 -1
  260. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +1 -0
  261. package/src/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.ts +2 -6
  262. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +1 -0
  263. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +6 -2
  264. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +72 -2
  265. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.ts +39 -0
  266. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +70 -1
  267. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +13 -5
  268. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +42 -2
  269. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +12 -1
  270. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +43 -12
  271. package/src/libs/common/domain/src/lib/model/record/contact.model.ts +28 -0
  272. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
  273. package/src/libs/common/domain/src/lib/model/user/user.model.ts +1 -1
  274. package/src/libs/common/domain/src/lib/platform.service.interface.ts +4 -0
  275. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +22 -0
  276. package/src/libs/common/fixtures/src/index.ts +2 -0
  277. package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +156 -0
  278. package/src/libs/common/fixtures/src/lib/editor/index.ts +1 -0
  279. package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +10 -0
  280. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +1 -5
  281. package/src/libs/data-access/gn4/src/spec.yaml +0 -8
  282. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +7 -0
  283. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +17 -2
  284. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +13 -1
  285. package/src/libs/feature/editor/src/lib/+state/editor.models.ts +11 -0
  286. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +11 -5
  287. package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +22 -8
  288. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.css +0 -0
  289. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +27 -0
  290. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.ts +30 -0
  291. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.css +0 -0
  292. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.html +26 -0
  293. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +89 -0
  294. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +2 -1
  295. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +74 -31
  296. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.css +0 -0
  297. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +76 -0
  298. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +249 -0
  299. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +7 -17
  300. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +18 -51
  301. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +13 -5
  302. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.css +0 -0
  303. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +4 -0
  304. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts +128 -0
  305. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.css +0 -0
  306. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.html +6 -0
  307. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +48 -0
  308. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.css +0 -0
  309. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +5 -0
  310. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +33 -0
  311. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.html +2 -2
  312. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.ts +9 -3
  313. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +2 -2
  314. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +13 -7
  315. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.html +5 -3
  316. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.ts +11 -4
  317. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +15 -1
  318. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +156 -1
  319. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.html +9 -2
  320. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +59 -70
  321. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +17 -15
  322. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +105 -70
  323. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +44 -43
  324. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +0 -1
  325. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +52 -11
  326. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +19 -7
  327. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +1 -1
  328. package/src/libs/feature/editor/src/lib/expressions.ts +1 -1
  329. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +2 -1
  330. package/src/libs/feature/editor/src/lib/fields.config.ts +211 -60
  331. package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +53 -0
  332. package/src/libs/feature/editor/src/lib/models/index.ts +1 -0
  333. package/src/libs/feature/editor/src/lib/services/editor.service.ts +15 -4
  334. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +3 -0
  335. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +5 -1
  336. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +5 -0
  337. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +1 -1
  338. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +10 -7
  339. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +1 -1
  340. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +5 -0
  341. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +1 -1
  342. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +6 -1
  343. package/src/libs/feature/map/src/lib/feature-map.module.ts +2 -15
  344. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +24 -1
  345. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -4
  346. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +36 -19
  347. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +6 -2
  348. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +11 -0
  349. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +59 -12
  350. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
  351. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +4 -1
  352. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +66 -3
  353. package/src/libs/feature/search/src/lib/state/search.facade.ts +6 -0
  354. package/src/libs/ui/elements/src/index.ts +1 -0
  355. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.css +0 -0
  356. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +12 -0
  357. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +37 -0
  358. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +4 -1
  359. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +2 -1
  360. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +12 -8
  361. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +14 -20
  362. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +0 -10
  363. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.html +1 -1
  364. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +2 -2
  365. package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.html +3 -10
  366. package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.ts +7 -7
  367. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +8 -2
  368. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.html +1 -1
  369. package/src/libs/ui/inputs/src/index.ts +1 -0
  370. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +15 -3
  371. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +40 -26
  372. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.css +0 -0
  373. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.html +85 -0
  374. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +91 -0
  375. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +49 -49
  376. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +15 -13
  377. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.css +31 -0
  378. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +15 -0
  379. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +38 -0
  380. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +2 -1
  381. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +2 -27
  382. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +4 -3
  383. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +4 -16
  384. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  385. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.css +9 -0
  386. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.html +37 -0
  387. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +33 -0
  388. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +1 -1
  389. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +1 -0
  390. package/src/libs/ui/map/src/lib/ui-map.module.ts +1 -1
  391. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.css +0 -0
  392. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +26 -0
  393. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +74 -0
  394. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +24 -3
  395. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +27 -16
  396. package/src/libs/ui/widgets/src/index.ts +1 -0
  397. package/src/libs/ui/widgets/src/lib/popover/popover.component.css +0 -0
  398. package/src/libs/ui/widgets/src/lib/popover/popover.component.html +3 -0
  399. package/src/libs/ui/widgets/src/lib/popover/popover.component.ts +85 -0
  400. package/tailwind.base.css +18 -5
  401. package/translations/de.json +112 -34
  402. package/translations/en.json +88 -10
  403. package/translations/es.json +83 -5
  404. package/translations/fr.json +99 -21
  405. package/translations/it.json +86 -8
  406. package/translations/nl.json +83 -5
  407. package/translations/pt.json +83 -5
  408. package/translations/sk.json +84 -6
  409. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.mjs +0 -2
  410. package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +0 -2
  411. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts +0 -26
  412. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts.map +0 -1
  413. package/libs/feature/editor/src/lib/models/fields.model.d.ts +0 -15
  414. package/libs/feature/editor/src/lib/models/fields.model.d.ts.map +0 -1
  415. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.ts +0 -43
  416. package/src/libs/feature/editor/src/lib/models/fields.model.ts +0 -29
@@ -1,10 +1,11 @@
1
+ import { CommonModule } from '@angular/common';
1
2
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { getBadgeColor, getFileFormat, getFormatPriority, } from '../../../../../../libs/util/shared/src';
3
+ import { MatIconModule } from '@angular/material/icon';
3
4
  import { BadgeComponent, UiInputsModule } from '../../../../../../libs/ui/inputs/src';
4
5
  import { InteractiveTableColumnComponent, InteractiveTableComponent, } from '../../../../../../libs/ui/layout/src';
5
- import { MatIconModule } from '@angular/material/icon';
6
+ import { getBadgeColor, getFileFormat, getFormatPriority, } from '../../../../../../libs/util/shared/src';
6
7
  import { TranslateModule } from '@ngx-translate/core';
7
- import { CommonModule } from '@angular/common';
8
+ import { ActionMenuComponent } from './action-menu/action-menu.component';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/common";
10
11
  import * as i2 from "../../../../inputs/src/lib/checkbox/checkbox.component";
@@ -16,10 +17,15 @@ export class ResultsTableComponent {
16
17
  this.records = [];
17
18
  this.selectedRecordsIdentifiers = [];
18
19
  this.sortOrder = null;
19
- this.recordHasDraft = () => false;
20
+ this.hasDraft = () => false;
21
+ this.canDuplicate = () => true;
22
+ this.isUnsavedDraft = () => true;
23
+ this.canDelete = () => true;
20
24
  // emits the column (field) as well as the order
21
25
  this.sortByChange = new EventEmitter();
22
26
  this.recordClick = new EventEmitter();
27
+ this.duplicateRecord = new EventEmitter();
28
+ this.deleteRecord = new EventEmitter();
23
29
  this.recordsSelectedChange = new EventEmitter();
24
30
  }
25
31
  dateToString(date) {
@@ -30,9 +36,6 @@ export class ResultsTableComponent {
30
36
  timeZone: 'UTC',
31
37
  });
32
38
  }
33
- getStatus(isPublishedToAll) {
34
- return isPublishedToAll ? 'published' : 'not published';
35
- }
36
39
  getRecordFormats(record) {
37
40
  if (record.kind === 'service' || !('distributions' in record)) {
38
41
  return [];
@@ -54,6 +57,12 @@ export class ResultsTableComponent {
54
57
  handleRecordClick(item) {
55
58
  this.recordClick.emit(item);
56
59
  }
60
+ handleDuplicate(item) {
61
+ this.duplicateRecord.emit(item);
62
+ }
63
+ handleDelete(item) {
64
+ this.deleteRecord.emit(item);
65
+ }
57
66
  setSortBy(col, order) {
58
67
  this.sortByChange.emit([col, order]);
59
68
  }
@@ -89,7 +98,7 @@ export class ResultsTableComponent {
89
98
  return !allSelected && someSelected;
90
99
  }
91
100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", recordHasDraft: "recordHasDraft" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", recordsSelectedChange: "recordsSelectedChange" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"recordHasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: i2.CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i3.BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", isUnsavedDraft: "isUnsavedDraft", canDelete: "canDelete" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{\n (isUnsavedDraft(item)\n ? 'record.metadata.status.notPublished'\n : 'record.metadata.status.published'\n ) | translate\n }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex justify-center w-full\">\n {{ isUnsavedDraft(item) ? '-' : dateToString(item.recordUpdated) }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: i2.CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i3.BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete"] }] }); }
93
102
  }
94
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, decorators: [{
95
104
  type: Component,
@@ -101,20 +110,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
101
110
  MatIconModule,
102
111
  TranslateModule,
103
112
  BadgeComponent,
104
- ], template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"recordHasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
113
+ ActionMenuComponent,
114
+ ], template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{\n (isUnsavedDraft(item)\n ? 'record.metadata.status.notPublished'\n : 'record.metadata.status.published'\n ) | translate\n }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex justify-center w-full\">\n {{ isUnsavedDraft(item) ? '-' : dateToString(item.recordUpdated) }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
105
115
  }], propDecorators: { records: [{
106
116
  type: Input
107
117
  }], selectedRecordsIdentifiers: [{
108
118
  type: Input
109
119
  }], sortOrder: [{
110
120
  type: Input
111
- }], recordHasDraft: [{
121
+ }], hasDraft: [{
122
+ type: Input
123
+ }], canDuplicate: [{
124
+ type: Input
125
+ }], isUnsavedDraft: [{
126
+ type: Input
127
+ }], canDelete: [{
112
128
  type: Input
113
129
  }], sortByChange: [{
114
130
  type: Output
115
131
  }], recordClick: [{
116
132
  type: Output
133
+ }], duplicateRecord: [{
134
+ type: Output
135
+ }], deleteRecord: [{
136
+ type: Output
117
137
  }], recordsSelectedChange: [{
118
138
  type: Output
119
139
  }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXRFLE9BQU8sRUFFTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGlCQUFpQixHQUNsQixNQUFNLHdDQUF3QyxDQUFBO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDckYsT0FBTyxFQUNMLCtCQUErQixFQUMvQix5QkFBeUIsR0FDMUIsTUFBTSxzQ0FBc0MsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7Ozs7OztBQXFCOUMsTUFBTSxPQUFPLHFCQUFxQjtJQWZsQztRQWdCVyxZQUFPLEdBQW9CLEVBQUUsQ0FBQTtRQUM3QiwrQkFBMEIsR0FBYSxFQUFFLENBQUE7UUFDekMsY0FBUyxHQUFnQixJQUFJLENBQUE7UUFDN0IsbUJBQWMsR0FBdUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFBO1FBRXpFLGdEQUFnRDtRQUN0QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFBO1FBQzNELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVB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QUF5QiwrR0FDekIsK0JBQStCLCtJQUMvQixhQUFhLG1MQUNiLGVBQWU7OzRGQUlOLHFCQUFxQjtrQkFmakMsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCx5QkFBeUI7d0JBQ3pCLCtCQUErQjt3QkFDL0IsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGNBQWM7cUJBQ2Y7OEJBR1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQge1xuICBGaWxlRm9ybWF0LFxuICBnZXRCYWRnZUNvbG9yLFxuICBnZXRGaWxlRm9ybWF0LFxuICBnZXRGb3JtYXRQcmlvcml0eSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgeyBCYWRnZUNvbXBvbmVudCwgVWlJbnB1dHNNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQge1xuICBJbnRlcmFjdGl2ZVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICBJbnRlcmFjdGl2ZVRhYmxlQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMnXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBGaWVsZFNvcnQsXG4gIFNvcnRCeUZpZWxkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXJlc3VsdHMtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jlc3VsdHMtdGFibGUuY29tcG9uZW50LmNzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFVpSW5wdXRzTW9kdWxlLFxuICAgIEludGVyYWN0aXZlVGFibGVDb21wb25lbnQsXG4gICAgSW50ZXJhY3RpdmVUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVzdWx0c1RhYmxlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcmVjb3JkczogQ2F0YWxvZ1JlY29yZFtdID0gW11cbiAgQElucHV0KCkgc2VsZWN0ZWRSZWNvcmRzSWRlbnRpZmllcnM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgc29ydE9yZGVyOiBTb3J0QnlGaWVsZCA9IG51bGxcbiAgQElucHV0KCkgcmVjb3JkSGFzRHJhZnQ6IChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpID0+IGJvb2xlYW4gPSAoKSA9PiBmYWxzZVxuXG4gIC8vIGVtaXRzIHRoZSBjb2x1bW4gKGZpZWxkKSBhcyB3ZWxsIGFzIHRoZSBvcmRlclxuICBAT3V0cHV0KCkgc29ydEJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxbc3RyaW5nLCAnYXNjJyB8ICdkZXNjJ10+KClcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDYXRhbG9nUmVjb3JkPigpXG4gIEBPdXRwdXQoKSByZWNvcmRzU2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIFtDYXRhbG9nUmVjb3JkW10sIGJvb2xlYW5dXG4gID4oKVxuXG4gIGRhdGVUb1N0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgdGltZVpvbmU6ICdVVEMnLFxuICAgIH0pXG4gIH1cblxuICBnZXRTdGF0dXMoaXNQdWJsaXNoZWRUb0FsbDogYm9vbGVhbiB8IHVua25vd24pIHtcbiAgICByZXR1cm4gaXNQdWJsaXNoZWRUb0FsbCA/ICdwdWJsaXNoZWQnIDogJ25vdCBwdWJsaXNoZWQnXG4gIH1cblxuICBnZXRSZWNvcmRGb3JtYXRzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IEZpbGVGb3JtYXRbXSB7XG4gICAgaWYgKHJlY29yZC5raW5kID09PSAnc2VydmljZScgfHwgISgnZGlzdHJpYnV0aW9ucycgaW4gcmVjb3JkKSkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuICAgIGNvbnN0IGZvcm1hdHMgPSBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldChcbiAgICAgICAgcmVjb3JkLmRpc3RyaWJ1dGlvbnMubWFwKChkaXN0cmlidXRpb24pID0+IGdldEZpbGVGb3JtYXQoZGlzdHJpYnV0aW9uKSlcbiAgICAgIClcbiAgICApLmZpbHRlcigoZm9ybWF0KSA9PiAhIWZvcm1hdClcbiAgICBmb3JtYXRzLnNvcnQoKGEsIGIpID0+IGdldEZvcm1hdFByaW9yaXR5KGIpIC0gZ2V0Rm9ybWF0UHJpb3JpdHkoYSkpXG4gICAgcmV0dXJuIGZvcm1hdHNcbiAgfVxuXG4gIGZvcm1hdFVzZXJJbmZvKHVzZXJJbmZvOiBzdHJpbmcgfCB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBpbmZvcyA9ICh0eXBlb2YgdXNlckluZm8gPT09ICdzdHJpbmcnID8gdXNlckluZm8gOiAnJykuc3BsaXQoJ3wnKVxuICAgIGlmIChpbmZvcyAmJiBpbmZvcy5sZW5ndGggPT09IDQpIHtcbiAgICAgIHJldHVybiBgJHtpbmZvc1syXX0gJHtpbmZvc1sxXX1gXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGdldEJhZGdlQ29sb3IoZm9ybWF0OiBGaWxlRm9ybWF0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0QmFkZ2VDb2xvcihmb3JtYXQpXG4gIH1cblxuICBoYW5kbGVSZWNvcmRDbGljayhpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5yZWNvcmRDbGljay5lbWl0KGl0ZW0gYXMgQ2F0YWxvZ1JlY29yZClcbiAgfVxuXG4gIHNldFNvcnRCeShjb2w6IHN0cmluZywgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKSB7XG4gICAgdGhpcy5zb3J0QnlDaGFuZ2UuZW1pdChbY29sLCBvcmRlcl0pXG4gIH1cblxuICBpc1NvcnRlZEJ5KGNvbDogc3RyaW5nKTogJ2Rlc2MnIHwgJ2FzYycgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuc29ydE9yZGVyKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBzb3J0QXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMuc29ydE9yZGVyWzBdKVxuICAgICAgPyAodGhpcy5zb3J0T3JkZXIgYXMgRmllbGRTb3J0W10pXG4gICAgICA6IChbdGhpcy5zb3J0T3JkZXJdIGFzIEZpZWxkU29ydFtdKVxuICAgIGZvciAoY29uc3Qgc29ydCBvZiBzb3J0QXJyYXkpIHtcbiAgICAgIGlmIChzb3J0WzFdID09PSBjb2wpIHtcbiAgICAgICAgcmV0dXJuIHNvcnRbMF1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGlzQ2hlY2tlZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJlY29yZHNJZGVudGlmaWVycy5pbmNsdWRlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgfVxuXG4gIGhhbmRsZVJlY29yZFNlbGVjdGVkQ2hhbmdlKHNlbGVjdGVkOiBib29sZWFuLCByZWNvcmQ6IENhdGFsb2dSZWNvcmQpIHtcbiAgICB0aGlzLnJlY29yZHNTZWxlY3RlZENoYW5nZS5lbWl0KFtbcmVjb3JkXSwgc2VsZWN0ZWRdKVxuICB9XG5cbiAgYXN5bmMgdG9nZ2xlU2VsZWN0QWxsKCkge1xuICAgIHRoaXMucmVjb3Jkc1NlbGVjdGVkQ2hhbmdlLmVtaXQoW3RoaXMucmVjb3JkcywgIXRoaXMuaXNBbGxTZWxlY3RlZCgpXSlcbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVjb3Jkcy5ldmVyeSgocmVjb3JkKSA9PlxuICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZHNJZGVudGlmaWVycy5pbmNsdWRlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgICApXG4gIH1cblxuICBpc1NvbWVTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHRoaXMucmVjb3Jkcy5ldmVyeSgocmVjb3JkKSA9PlxuICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZHNJZGVudGlmaWVycy5pbmNsdWRlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgICApXG4gICAgY29uc3Qgc29tZVNlbGVjdGVkID0gdGhpcy5yZWNvcmRzLnNvbWUoKHJlY29yZCkgPT5cbiAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmRzSWRlbnRpZmllcnMuaW5jbHVkZXMocmVjb3JkLnVuaXF1ZUlkZW50aWZpZXIpXG4gICAgKVxuICAgIHJldHVybiAhYWxsU2VsZWN0ZWQgJiYgc29tZVNlbGVjdGVkXG4gIH1cbn1cbiIsIjxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZVxuICBbaXRlbXNdPVwicmVjb3Jkc1wiXG4gIChpdGVtQ2xpY2spPVwiaGFuZGxlUmVjb3JkQ2xpY2soJGV2ZW50KVwiXG4+XG4gIDwhLS0gU0VMRUNURUQgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPGduLXVpLWNoZWNrYm94XG4gICAgICAgIFtjaGVja2VkXT1cImlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzU29tZVNlbGVjdGVkKClcIlxuICAgICAgICAoY2hhbmdlZCk9XCJ0b2dnbGVTZWxlY3RBbGwoKVwiXG4gICAgICAgIHR5cGU9XCJkZWZhdWx0XCJcbiAgICAgICAgY2xhc3M9XCItbS0yIG1yLTNcIlxuICAgICAgPlxuICAgICAgPC9nbi11aS1jaGVja2JveD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxnbi11aS1jaGVja2JveFxuICAgICAgICBbY2hlY2tlZF09XCJpc0NoZWNrZWQoaXRlbSlcIlxuICAgICAgICAoY2hhbmdlZCk9XCJoYW5kbGVSZWNvcmRTZWxlY3RlZENoYW5nZSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgY2xhc3M9XCItbS0yXCJcbiAgICAgICAgdHlwZT1cImRlZmF1bHRcIlxuICAgICAgPjwvZ24tdWktY2hlY2tib3g+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBUSVRMRSBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgW2FjdGl2ZVNvcnRdPVwiaXNTb3J0ZWRCeSgncmVzb3VyY2VUaXRsZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnKVwiXG4gICAgKHNvcnRDaGFuZ2UpPVwic2V0U29ydEJ5KCdyZXNvdXJjZVRpdGxlT2JqZWN0LmRlZmF1bHQua2V5d29yZCcsICRldmVudClcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLnRpdGxlPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0yIG1heC13LWZ1bGxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpc1wiPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDxnbi11aS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwicmVjb3JkSGFzRHJhZnQoaXRlbSlcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLXBhZGRpbmddPVwiJzAuNGVtIDAuNmVtJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1jb2xvcl09XCInIzNkMjAwNidcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLWJhY2tncm91bmQtY29sb3JdPVwiJyNmZmJjN2InXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1yb3VuZGVkXT1cIic0cHgnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5kYXNoYm9hcmQucmVjb3Jkcy5oYXNEcmFmdDwvc3Bhbj5cbiAgICAgICAgPC9nbi11aS1iYWRnZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gRk9STUFUUyBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLmZvcm1hdHM8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LXN0YXJ0IGl0ZW1zLWNlbnRlciBnYXAtMlwiXG4gICAgICAgICpuZ0lmPVwiZ2V0UmVjb3JkRm9ybWF0cyhpdGVtKSBhcyBmb3JtYXRzXCJcbiAgICAgICAgW3RpdGxlXT1cImZvcm1hdHMuam9pbignLCAnKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJiYWRnZS1idG4gbWluLXctWzQ1cHhdIHRleHQtc20gdGV4dC13aGl0ZSBweC0yIHNocmluay0wXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJnZXRCYWRnZUNvbG9yKGZvcm1hdHNbMF0pXCJcbiAgICAgICAgICAqbmdJZj1cImZvcm1hdHNbMF1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0c1swXSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJiYWRnZS1idG4gbWluLXctWzQ1cHhdIHRleHQtc20gdGV4dC13aGl0ZSBweC0yIHNocmluay0wXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJnZXRCYWRnZUNvbG9yKGZvcm1hdHNbMV0pXCJcbiAgICAgICAgICAqbmdJZj1cImZvcm1hdHNbMV1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0c1sxXSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaHJpbmstMFwiICpuZ0lmPVwiZm9ybWF0cy5zbGljZSgyKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPHNwYW4+K3t7IGZvcm1hdHMuc2xpY2UoMikubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFnZXRSZWNvcmRGb3JtYXRzKGl0ZW0pXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBPV05FUiBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgW2FjdGl2ZVNvcnRdPVwiaXNTb3J0ZWRCeSgncmVjb3JkT3duZXInKVwiXG4gICAgKHNvcnRDaGFuZ2UpPVwic2V0U29ydEJ5KCdyZWNvcmRPd25lcicsICRldmVudClcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLmF1dGhvcjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5wZXJzb248L21hdC1pY29uPlxuICAgICAgPHNwYW4+e3sgZm9ybWF0VXNlckluZm8oaXRlbS5leHRyYXM/Lm93bmVySW5mbykgfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBTVEFUVVMgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5zdGF0dXM8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICB7eyBpdGVtLnN0YXR1cyB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gVVBEQVRFIERBVEUgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ2NoYW5nZURhdGUnKVwiXG4gICAgKHNvcnRDaGFuZ2UpPVwic2V0U29ydEJ5KCdjaGFuZ2VEYXRlJywgJGV2ZW50KVwiXG4gID5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEudXBkYXRlZE9uPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAge3sgZGF0ZVRvU3RyaW5nKGl0ZW0ucmVjb3JkVXBkYXRlZCkgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cbjwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGU+XG4iXX0=
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFNdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNyRixPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLHlCQUF5QixHQUMxQixNQUFNLHNDQUFzQyxDQUFBO0FBQzdDLE9BQU8sRUFFTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGlCQUFpQixHQUNsQixNQUFNLHdDQUF3QyxDQUFBO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTs7Ozs7OztBQWtCekUsTUFBTSxPQUFPLHFCQUFxQjtJQWhCbEM7UUFpQlcsWUFBTyxHQUFvQixFQUFFLENBQUE7UUFDN0IsK0JBQTBCLEdBQWEsRUFBRSxDQUFBO1FBQ3pDLGNBQVMsR0FBZ0IsSUFBSSxDQUFBO1FBQzdCLGFBQVEsR0FBdUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFBO1FBQzFELGlCQUFZLEdBQXVDLEdBQUcsRUFBRSxDQUFDLElB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QywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQ2xFLENBQUE7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ2hELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQ2xFLENBQUE7UUFDRCxPQUFPLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQTtJQUNyQyxDQUFDOytHQTdHVSxxQkFBcUI7bUdBQXJCLHFCQUFxQix3ZUN0Q2xDLG1zSkFnSkEseUREcEhJLFlBQVksa0lBQ1osY0FBYyxnVUFDZCx5QkFBeUIsK0dBQ3pCLCtCQUErQiwrSUFDL0IsYUFBYSxtTEFDYixlQUFlLG1PQUVmLG1CQUFtQjs7NEZBR1YscUJBQXFCO2tCQWhCakMsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCx5QkFBeUI7d0JBQ3pCLCtCQUErQjt3QkFDL0IsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsbUJBQW1CO3FCQUNwQjs4QkFHUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7XG4gIEZpZWxkU29ydCxcbiAgU29ydEJ5RmllbGQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3NlYXJjaCdcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50LCBVaUlucHV0c01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7XG4gIEludGVyYWN0aXZlVGFibGVDb2x1bW5Db21wb25lbnQsXG4gIEludGVyYWN0aXZlVGFibGVDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7XG4gIEZpbGVGb3JtYXQsXG4gIGdldEJhZGdlQ29sb3IsXG4gIGdldEZpbGVGb3JtYXQsXG4gIGdldEZvcm1hdFByaW9yaXR5LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBBY3Rpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXJlc3VsdHMtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jlc3VsdHMtdGFibGUuY29tcG9uZW50LmNzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFVpSW5wdXRzTW9kdWxlLFxuICAgIEludGVyYWN0aXZlVGFibGVDb21wb25lbnQsXG4gICAgSW50ZXJhY3RpdmVUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBBY3Rpb25NZW51Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRzVGFibGVDb21wb25lbnQge1xuICBASW5wdXQoKSByZWNvcmRzOiBDYXRhbG9nUmVjb3JkW10gPSBbXVxuICBASW5wdXQoKSBzZWxlY3RlZFJlY29yZHNJZGVudGlmaWVyczogc3RyaW5nW10gPSBbXVxuICBASW5wdXQoKSBzb3J0T3JkZXI6IFNvcnRCeUZpZWxkID0gbnVsbFxuICBASW5wdXQoKSBoYXNEcmFmdDogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlXG4gIEBJbnB1dCgpIGNhbkR1cGxpY2F0ZTogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcbiAgQElucHV0KCkgaXNVbnNhdmVkRHJhZnQ6IChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlXG4gIEBJbnB1dCgpIGNhbkRlbGV0ZTogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcblxuICAvLyBlbWl0cyB0aGUgY29sdW1uIChmaWVsZCkgYXMgd2VsbCBhcyB0aGUgb3JkZXJcbiAgQE91dHB1dCgpIHNvcnRCeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8W3N0cmluZywgJ2FzYycgfCAnZGVzYyddPigpXG4gIEBPdXRwdXQoKSByZWNvcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q2F0YWxvZ1JlY29yZD4oKVxuICBAT3V0cHV0KCkgZHVwbGljYXRlUmVjb3JkID0gbmV3IEV2ZW50RW1pdHRlcjxDYXRhbG9nUmVjb3JkPigpXG4gIEBPdXRwdXQoKSBkZWxldGVSZWNvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmQ+KClcbiAgQE91dHB1dCgpIHJlY29yZHNTZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgW0NhdGFsb2dSZWNvcmRbXSwgYm9vbGVhbl1cbiAgPigpXG5cbiAgZGF0ZVRvU3RyaW5nKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICB0aW1lWm9uZTogJ1VUQycsXG4gICAgfSlcbiAgfVxuXG4gIGdldFJlY29yZEZvcm1hdHMocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogRmlsZUZvcm1hdFtdIHtcbiAgICBpZiAocmVjb3JkLmtpbmQgPT09ICdzZXJ2aWNlJyB8fCAhKCdkaXN0cmlidXRpb25zJyBpbiByZWNvcmQpKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgY29uc3QgZm9ybWF0cyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFxuICAgICAgICByZWNvcmQuZGlzdHJpYnV0aW9ucy5tYXAoKGRpc3RyaWJ1dGlvbikgPT4gZ2V0RmlsZUZvcm1hdChkaXN0cmlidXRpb24pKVxuICAgICAgKVxuICAgICkuZmlsdGVyKChmb3JtYXQpID0+ICEhZm9ybWF0KVxuICAgIGZvcm1hdHMuc29ydCgoYSwgYikgPT4gZ2V0Rm9ybWF0UHJpb3JpdHkoYikgLSBnZXRGb3JtYXRQcmlvcml0eShhKSlcbiAgICByZXR1cm4gZm9ybWF0c1xuICB9XG5cbiAgZm9ybWF0VXNlckluZm8odXNlckluZm86IHN0cmluZyB8IHVua25vd24pOiBzdHJpbmcge1xuICAgIGNvbnN0IGluZm9zID0gKHR5cGVvZiB1c2VySW5mbyA9PT0gJ3N0cmluZycgPyB1c2VySW5mbyA6ICcnKS5zcGxpdCgnfCcpXG4gICAgaWYgKGluZm9zICYmIGluZm9zLmxlbmd0aCA9PT0gNCkge1xuICAgICAgcmV0dXJuIGAke2luZm9zWzJdfSAke2luZm9zWzFdfWBcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgZ2V0QmFkZ2VDb2xvcihmb3JtYXQ6IEZpbGVGb3JtYXQpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRCYWRnZUNvbG9yKGZvcm1hdClcbiAgfVxuXG4gIGhhbmRsZVJlY29yZENsaWNrKGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLnJlY29yZENsaWNrLmVtaXQoaXRlbSBhcyBDYXRhbG9nUmVjb3JkKVxuICB9XG5cbiAgaGFuZGxlRHVwbGljYXRlKGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmR1cGxpY2F0ZVJlY29yZC5lbWl0KGl0ZW0gYXMgQ2F0YWxvZ1JlY29yZClcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5kZWxldGVSZWNvcmQuZW1pdChpdGVtIGFzIENhdGFsb2dSZWNvcmQpXG4gIH1cblxuICBzZXRTb3J0QnkoY29sOiBzdHJpbmcsIG9yZGVyOiAnYXNjJyB8ICdkZXNjJykge1xuICAgIHRoaXMuc29ydEJ5Q2hhbmdlLmVtaXQoW2NvbCwgb3JkZXJdKVxuICB9XG5cbiAgaXNTb3J0ZWRCeShjb2w6IHN0cmluZyk6ICdkZXNjJyB8ICdhc2MnIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnNvcnRPcmRlcikge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc3Qgc29ydEFycmF5ID0gQXJyYXkuaXNBcnJheSh0aGlzLnNvcnRPcmRlclswXSlcbiAgICAgID8gKHRoaXMuc29ydE9yZGVyIGFzIEZpZWxkU29ydFtdKVxuICAgICAgOiAoW3RoaXMuc29ydE9yZGVyXSBhcyBGaWVsZFNvcnRbXSlcbiAgICBmb3IgKGNvbnN0IHNvcnQgb2Ygc29ydEFycmF5KSB7XG4gICAgICBpZiAoc29ydFsxXSA9PT0gY29sKSB7XG4gICAgICAgIHJldHVybiBzb3J0WzBdXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBpc0NoZWNrZWQocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSZWNvcmRzSWRlbnRpZmllcnMuaW5jbHVkZXMocmVjb3JkLnVuaXF1ZUlkZW50aWZpZXIpXG4gIH1cblxuICBoYW5kbGVSZWNvcmRTZWxlY3RlZENoYW5nZShzZWxlY3RlZDogYm9vbGVhbiwgcmVjb3JkOiBDYXRhbG9nUmVjb3JkKSB7XG4gICAgdGhpcy5yZWNvcmRzU2VsZWN0ZWRDaGFuZ2UuZW1pdChbW3JlY29yZF0sIHNlbGVjdGVkXSlcbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZVNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnJlY29yZHNTZWxlY3RlZENoYW5nZS5lbWl0KFt0aGlzLnJlY29yZHMsICF0aGlzLmlzQWxsU2VsZWN0ZWQoKV0pXG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlY29yZHMuZXZlcnkoKHJlY29yZCkgPT5cbiAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmRzSWRlbnRpZmllcnMuaW5jbHVkZXMocmVjb3JkLnVuaXF1ZUlkZW50aWZpZXIpXG4gICAgKVxuICB9XG5cbiAgaXNTb21lU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSB0aGlzLnJlY29yZHMuZXZlcnkoKHJlY29yZCkgPT5cbiAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmRzSWRlbnRpZmllcnMuaW5jbHVkZXMocmVjb3JkLnVuaXF1ZUlkZW50aWZpZXIpXG4gICAgKVxuICAgIGNvbnN0IHNvbWVTZWxlY3RlZCA9IHRoaXMucmVjb3Jkcy5zb21lKChyZWNvcmQpID0+XG4gICAgICB0aGlzLnNlbGVjdGVkUmVjb3Jkc0lkZW50aWZpZXJzLmluY2x1ZGVzKHJlY29yZC51bmlxdWVJZGVudGlmaWVyKVxuICAgIClcbiAgICByZXR1cm4gIWFsbFNlbGVjdGVkICYmIHNvbWVTZWxlY3RlZFxuICB9XG59XG4iLCI8Z24tdWktaW50ZXJhY3RpdmUtdGFibGVcbiAgW2l0ZW1zXT1cInJlY29yZHNcIlxuICAoaXRlbUNsaWNrKT1cImhhbmRsZVJlY29yZENsaWNrKCRldmVudClcIlxuPlxuICA8IS0tIFNFTEVDVEVEIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgIDxnbi11aS1jaGVja2JveFxuICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpc1NvbWVTZWxlY3RlZCgpXCJcbiAgICAgICAgKGNoYW5nZWQpPVwidG9nZ2xlU2VsZWN0QWxsKClcIlxuICAgICAgICB0eXBlPVwiZGVmYXVsdFwiXG4gICAgICAgIGNsYXNzPVwiLW0tMiBtci0zXCJcbiAgICAgID5cbiAgICAgIDwvZ24tdWktY2hlY2tib3g+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8Z24tdWktY2hlY2tib3hcbiAgICAgICAgW2NoZWNrZWRdPVwiaXNDaGVja2VkKGl0ZW0pXCJcbiAgICAgICAgKGNoYW5nZWQpPVwiaGFuZGxlUmVjb3JkU2VsZWN0ZWRDaGFuZ2UoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgIGNsYXNzPVwiLW0tMlwiXG4gICAgICAgIHR5cGU9XCJkZWZhdWx0XCJcbiAgICAgID48L2duLXVpLWNoZWNrYm94PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gVElUTEUgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ3Jlc291cmNlVGl0bGVPYmplY3QuZGVmYXVsdC5rZXl3b3JkJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgncmVzb3VyY2VUaXRsZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS50aXRsZTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiBtYXgtdy1mdWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXNcIj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8Z24tdWktYmFkZ2VcbiAgICAgICAgICAqbmdJZj1cImhhc0RyYWZ0KGl0ZW0pXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1wYWRkaW5nXT1cIicwLjRlbSAwLjZlbSdcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLXRleHQtY29sb3JdPVwiJyMzZDIwMDYnXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1iYWNrZ3JvdW5kLWNvbG9yXT1cIicjZmZiYzdiJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2Utcm91bmRlZF09XCInNHB4J1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+ZGFzaGJvYXJkLnJlY29yZHMuaGFzRHJhZnQ8L3NwYW4+XG4gICAgICAgIDwvZ24tdWktYmFkZ2U+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIEZPUk1BVFMgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5mb3JtYXRzPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXIgZ2FwLTJcIlxuICAgICAgICAqbmdJZj1cImdldFJlY29yZEZvcm1hdHMoaXRlbSkgYXMgZm9ybWF0c1wiXG4gICAgICAgIFt0aXRsZV09XCJmb3JtYXRzLmpvaW4oJywgJylcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXNtIHRleHQtd2hpdGUgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzBdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMF0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXNtIHRleHQtd2hpdGUgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzFdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzFdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMV0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hyaW5rLTBcIiAqbmdJZj1cImZvcm1hdHMuc2xpY2UoMikubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxzcGFuPit7eyBmb3JtYXRzLnNsaWNlKDIpLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCIhZ2V0UmVjb3JkRm9ybWF0cyhpdGVtKVwiPjwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gT1dORVIgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ3JlY29yZE93bmVyJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgncmVjb3JkT3duZXInLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5hdXRob3I8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+cGVyc29uPC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuPnt7IGZvcm1hdFVzZXJJbmZvKGl0ZW0uZXh0cmFzPy5vd25lckluZm8pIH19PC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gU1RBVFVTIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEuc3RhdHVzPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAge3tcbiAgICAgICAgKGlzVW5zYXZlZERyYWZ0KGl0ZW0pXG4gICAgICAgICAgPyAncmVjb3JkLm1ldGFkYXRhLnN0YXR1cy5ub3RQdWJsaXNoZWQnXG4gICAgICAgICAgOiAncmVjb3JkLm1ldGFkYXRhLnN0YXR1cy5wdWJsaXNoZWQnXG4gICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBVUERBVEUgREFURSBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgW2FjdGl2ZVNvcnRdPVwiaXNTb3J0ZWRCeSgnY2hhbmdlRGF0ZScpXCJcbiAgICAoc29ydENoYW5nZSk9XCJzZXRTb3J0QnkoJ2NoYW5nZURhdGUnLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS51cGRhdGVkT248L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciB3LWZ1bGxcIj5cbiAgICAgICAge3sgaXNVbnNhdmVkRHJhZnQoaXRlbSkgPyAnLScgOiBkYXRlVG9TdHJpbmcoaXRlbS5yZWNvcmRVcGRhdGVkKSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBBQ1RJT04gTUVOVSBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+IDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPGduLXVpLWFjdGlvbi1tZW51XG4gICAgICAgIFtjYW5EdXBsaWNhdGVdPVwiY2FuRHVwbGljYXRlKGl0ZW0pXCJcbiAgICAgICAgW2NhbkRlbGV0ZV09XCJjYW5EZWxldGUoaXRlbSlcIlxuICAgICAgICAoZHVwbGljYXRlKT1cImhhbmRsZUR1cGxpY2F0ZShpdGVtKVwiXG4gICAgICAgIChkZWxldGUpPVwiaGFuZGxlRGVsZXRlKGl0ZW0pXCJcbiAgICAgID5cbiAgICAgIDwvZ24tdWktYWN0aW9uLW1lbnU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG48L2duLXVpLWludGVyYWN0aXZlLXRhYmxlPlxuIl19
@@ -1,8 +1,9 @@
1
1
  export * from './lib/ui-widgets.module';
2
2
  export * from './lib/progress-bar/progress-bar.component';
3
+ export * from './lib/popover/popover.component';
3
4
  export * from './lib/loading-mask/loading-mask.component';
4
5
  export * from './lib/color-scale/color-scale.component';
5
6
  export * from './lib/popup-alert/popup-alert.component';
6
7
  export * from './lib/spinning-loader/spinning-loader.component';
7
8
  export * from './lib/step-bar/step-bar.component';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMseUNBQXlDLENBQUE7QUFDdkQsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLGlEQUFpRCxDQUFBO0FBQy9ELGNBQWMsbUNBQW1DLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi91aS13aWRnZXRzLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9hZGluZy1tYXNrL2xvYWRpbmctbWFzay5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2xvci1zY2FsZS9jb2xvci1zY2FsZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wb3B1cC1hbGVydC9wb3B1cC1hbGVydC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcGlubmluZy1sb2FkZXIvc3Bpbm5pbmctbG9hZGVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYmFyL3N0ZXAtYmFyLmNvbXBvbmVudCdcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLGlDQUFpQyxDQUFBO0FBQy9DLGNBQWMsMkNBQTJDLENBQUE7QUFDekQsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLHlDQUF5QyxDQUFBO0FBQ3ZELGNBQWMsaURBQWlELENBQUE7QUFDL0QsY0FBYyxtQ0FBbUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXdpZGdldHMubW9kdWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZ3Jlc3MtYmFyL3Byb2dyZXNzLWJhci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9hZGluZy1tYXNrL2xvYWRpbmctbWFzay5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2xvci1zY2FsZS9jb2xvci1zY2FsZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wb3B1cC1hbGVydC9wb3B1cC1hbGVydC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcGlubmluZy1sb2FkZXIvc3Bpbm5pbmctbG9hZGVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYmFyL3N0ZXAtYmFyLmNvbXBvbmVudCdcbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, ElementRef, Input, ViewChild, TemplateRef, Renderer2, ViewContainerRef, } from '@angular/core';
3
+ import tippy from 'tippy.js';
4
+ import * as i0 from "@angular/core";
5
+ export class PopoverComponent {
6
+ constructor(viewContainerRef, renderer) {
7
+ this.viewContainerRef = viewContainerRef;
8
+ this.renderer = renderer;
9
+ }
10
+ getContent() {
11
+ if (this.content instanceof TemplateRef) {
12
+ if (this.view) {
13
+ this.view.destroy();
14
+ }
15
+ this.view = this.viewContainerRef.createEmbeddedView(this.content);
16
+ this.view.detectChanges();
17
+ const wrapper = this.renderer.createElement('div'); // Create a wrapper div
18
+ this.view.rootNodes.forEach((node) => {
19
+ this.renderer.appendChild(wrapper, node); // Append each root node to the wrapper
20
+ });
21
+ return wrapper;
22
+ }
23
+ return this.content;
24
+ }
25
+ ngAfterViewInit() {
26
+ this.tippyInstance = tippy(this.popoverContent.nativeElement, {
27
+ content: this.getContent(),
28
+ allowHTML: true,
29
+ theme: this.theme,
30
+ });
31
+ }
32
+ ngOnChanges(changes) {
33
+ if (changes['theme']) {
34
+ this.theme = changes['theme'].currentValue;
35
+ if (this.tippyInstance) {
36
+ this.tippyInstance.setProps({ theme: this.theme });
37
+ }
38
+ }
39
+ if (changes['content']) {
40
+ this.content = changes['content'].currentValue;
41
+ if (this.tippyInstance) {
42
+ this.tippyInstance.setContent(this.getContent());
43
+ }
44
+ }
45
+ }
46
+ ngOnDestroy() {
47
+ if (this.tippyInstance) {
48
+ this.tippyInstance.destroy();
49
+ }
50
+ if (this.view) {
51
+ this.view.destroy();
52
+ }
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PopoverComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PopoverComponent, isStandalone: true, selector: "gn-ui-popover", inputs: { content: "content", theme: "theme" }, viewQueries: [{ propertyName: "popoverContent", first: true, predicate: ["popoverContent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span #popoverContent>\n <ng-content></ng-content>\n</span>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PopoverComponent, decorators: [{
58
+ type: Component,
59
+ args: [{ selector: 'gn-ui-popover', standalone: true, imports: [CommonModule], template: "<span #popoverContent>\n <ng-content></ng-content>\n</span>\n" }]
60
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { popoverContent: [{
61
+ type: ViewChild,
62
+ args: ['popoverContent', { static: false }]
63
+ }], content: [{
64
+ type: Input
65
+ }], theme: [{
66
+ type: Input
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjL2xpYi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS93aWRnZXRzL3NyYy9saWIvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUlULFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEdBRWpCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sS0FBbUIsTUFBTSxVQUFVLENBQUE7O0FBUzFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFRM0IsWUFDVSxnQkFBa0MsRUFDbEMsUUFBbUI7UUFEbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQzFCLENBQUM7SUFFSSxVQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sWUFBWSxXQUFXLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7YUFDcEI7WUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtZQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLHVCQUF1QjtZQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBLENBQUMsdUNBQXVDO1lBQ2xGLENBQUMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxPQUFPLENBQUE7U0FDZjtRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBd0IsRUFBRTtZQUN2RSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMxQixTQUFTLEVBQUUsSUFBSTtZQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQTtZQUMxQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO2FBQ25EO1NBQ0Y7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUE7WUFDOUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTthQUNqRDtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUM3QjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDcEI7SUFDSCxDQUFDOytHQTNEVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixnUUN4QjdCLGdFQUdBLHlERG1CWSxZQUFZOzs0RkFFWCxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsZUFBZSxjQUdiLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzsrSEFHeUIsY0FBYztzQkFBN0QsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3JDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgdGlwcHksIHsgSW5zdGFuY2UgfSBmcm9tICd0aXBweS5qcydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktcG9wb3ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcG9wb3Zlci5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBQb3BvdmVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdwb3BvdmVyQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwb3BvdmVyQ29udGVudDogRWxlbWVudFJlZlxuICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+XG4gIEBJbnB1dCgpIHRoZW1lOiAnbGlnaHQnIHwgJ2xpZ2h0LWJvcmRlcicgfCAndHJhbnNsdWNlbnQnIHwgJ21hdGVyaWFsJyB8ICcnXG5cbiAgcHJpdmF0ZSB0aXBweUluc3RhbmNlOiBJbnN0YW5jZVxuICBwcml2YXRlIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgcHJpdmF0ZSBnZXRDb250ZW50KCk6IHN0cmluZyB8IEhUTUxFbGVtZW50IHtcbiAgICBpZiAodGhpcy5jb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgIGlmICh0aGlzLnZpZXcpIHtcbiAgICAgICAgdGhpcy52aWV3LmRlc3Ryb3koKVxuICAgICAgfVxuICAgICAgdGhpcy52aWV3ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmNvbnRlbnQpXG4gICAgICB0aGlzLnZpZXcuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKSAvLyBDcmVhdGUgYSB3cmFwcGVyIGRpdlxuICAgICAgdGhpcy52aWV3LnJvb3ROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQod3JhcHBlciwgbm9kZSkgLy8gQXBwZW5kIGVhY2ggcm9vdCBub2RlIHRvIHRoZSB3cmFwcGVyXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHdyYXBwZXJcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGlwcHlJbnN0YW5jZSA9IHRpcHB5KHRoaXMucG9wb3ZlckNvbnRlbnQubmF0aXZlRWxlbWVudCBhcyBFbGVtZW50LCB7XG4gICAgICBjb250ZW50OiB0aGlzLmdldENvbnRlbnQoKSxcbiAgICAgIGFsbG93SFRNTDogdHJ1ZSxcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLFxuICAgIH0pXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3RoZW1lJ10pIHtcbiAgICAgIHRoaXMudGhlbWUgPSBjaGFuZ2VzWyd0aGVtZSddLmN1cnJlbnRWYWx1ZVxuICAgICAgaWYgKHRoaXMudGlwcHlJbnN0YW5jZSkge1xuICAgICAgICB0aGlzLnRpcHB5SW5zdGFuY2Uuc2V0UHJvcHMoeyB0aGVtZTogdGhpcy50aGVtZSB9KVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snY29udGVudCddKSB7XG4gICAgICB0aGlzLmNvbnRlbnQgPSBjaGFuZ2VzWydjb250ZW50J10uY3VycmVudFZhbHVlXG4gICAgICBpZiAodGhpcy50aXBweUluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5zZXRDb250ZW50KHRoaXMuZ2V0Q29udGVudCgpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5kZXN0cm95KClcbiAgICB9XG4gICAgaWYgKHRoaXMudmlldykge1xuICAgICAgdGhpcy52aWV3LmRlc3Ryb3koKVxuICAgIH1cbiAgfVxufVxuIiwiPHNwYW4gI3BvcG92ZXJDb250ZW50PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3NwYW4+XG4iXX0=
@@ -147,6 +147,27 @@
147
147
  "dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
148
148
  "dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
149
149
  "dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
150
+ "domain.contact.role.author": "",
151
+ "domain.contact.role.collaborator": "",
152
+ "domain.contact.role.contributor": "",
153
+ "domain.contact.role.custodian": "",
154
+ "domain.contact.role.distributor": "",
155
+ "domain.contact.role.editor": "",
156
+ "domain.contact.role.funder": "",
157
+ "domain.contact.role.mediator": "",
158
+ "domain.contact.role.originator": "",
159
+ "domain.contact.role.other": "",
160
+ "domain.contact.role.owner": "",
161
+ "domain.contact.role.point_of_contact": "",
162
+ "domain.contact.role.principal_investigator": "",
163
+ "domain.contact.role.processor": "",
164
+ "domain.contact.role.publisher": "",
165
+ "domain.contact.role.resource_provider": "",
166
+ "domain.contact.role.rights_holder": "",
167
+ "domain.contact.role.sponsor": "",
168
+ "domain.contact.role.stakeholder": "",
169
+ "domain.contact.role.unspecified": "",
170
+ "domain.contact.role.user": "",
150
171
  "domain.record.status.completed": "Abgeschlossen",
151
172
  "domain.record.status.deprecated": "Veraltet",
152
173
  "domain.record.status.ongoing": "Kontinuierliche Aktualisierung",
@@ -165,38 +186,86 @@
165
186
  "downloads.format.unknown": "unbekannt",
166
187
  "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
167
188
  "dropFile": "Datei ablegen",
168
- "editor.record.form.keywords": "Schlagwörter",
169
- "editor.record.form.license": "Lizenz",
170
- "editor.record.form.license.cc-by": "",
171
- "editor.record.form.license.cc-by-sa": "",
172
- "editor.record.form.license.cc-zero": "",
173
- "editor.record.form.license.etalab": "",
174
- "editor.record.form.license.etalab-v2": "",
175
- "editor.record.form.license.odbl": "",
176
- "editor.record.form.license.odc-by": "",
177
- "editor.record.form.license.pddl": "",
189
+ "editor.form.placeKeywordWithoutExtent": "",
190
+ "editor.record.delete.confirmation.cancelText": "Stornieren",
191
+ "editor.record.delete.confirmation.confirmText": "Löschen",
192
+ "editor.record.delete.confirmation.message": "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
193
+ "editor.record.delete.confirmation.title": "Datensatz löschen?",
194
+ "editor.record.deleteError.body": "Der Datensatz konnte nicht gelöscht werden:",
195
+ "editor.record.deleteError.closeMessage": "Verstanden",
196
+ "editor.record.deleteError.title": "Fehler beim Löschen des Datensatzes",
197
+ "editor.record.deleteSuccess.body": "",
198
+ "editor.record.deleteSuccess.title": "",
199
+ "editor.record.form.bottomButtons.comeBackLater": "",
200
+ "editor.record.form.bottomButtons.next": "",
201
+ "editor.record.form.bottomButtons.previous": "",
202
+ "editor.record.form.classification.opendata": "",
203
+ "editor.record.form.field.abstract": "Kurzbeschreibung",
204
+ "editor.record.form.field.contactsForResource.noContact": "",
205
+ "editor.record.form.field.keywords": "Schlagwörter",
206
+ "editor.record.form.field.license": "Lizenz",
207
+ "editor.record.form.field.overviews": "",
208
+ "editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
209
+ "editor.record.form.field.resourceUpdated": "Letztes Aktualisierungsdatum",
210
+ "editor.record.form.field.spatialExtents": "",
211
+ "editor.record.form.field.temporalExtents": "Zeitlicher Umfang",
212
+ "editor.record.form.field.title": "Metadaten-Titel",
213
+ "editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
214
+ "editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
215
+ "editor.record.form.license.cc-by": "Creative Commons CC-BY",
216
+ "editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
217
+ "editor.record.form.license.cc-zero": "Creative Commons CC-0",
218
+ "editor.record.form.license.etalab": "Offene Lizenz (Etalab)",
219
+ "editor.record.form.license.etalab-v2": "Offene Lizenz v2.0 (Etalab)",
220
+ "editor.record.form.license.odbl": "Open Data Commons ODbL",
221
+ "editor.record.form.license.odc-by": "Open Data Commons ODC-By",
222
+ "editor.record.form.license.pddl": "Open Data Commons PDDL",
178
223
  "editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
179
- "editor.record.form.resourceUpdated": "",
180
- "editor.record.form.temporalExtents": "",
181
- "editor.record.form.temporalExtents.addDate": "",
182
- "editor.record.form.temporalExtents.addRange": "",
183
- "editor.record.form.temporalExtents.date": "",
184
- "editor.record.form.temporalExtents.range": "",
185
- "editor.record.form.updateFrequency": "",
186
- "editor.record.form.updateFrequency.planned": "",
187
- "editor.record.loadError.body": "",
188
- "editor.record.loadError.closeMessage": "",
189
- "editor.record.loadError.title": "",
190
- "editor.record.publish": "",
191
- "editor.record.publishError.body": "",
192
- "editor.record.publishError.closeMessage": "",
193
- "editor.record.publishError.title": "",
194
- "editor.record.publishSuccess.body": "",
195
- "editor.record.publishSuccess.title": "",
196
- "editor.record.saveStatus.asDraftOnly": "",
197
- "editor.record.saveStatus.draftWithChangesPending": "",
198
- "editor.record.saveStatus.recordUpToDate": "",
199
- "editor.record.upToDate": "",
224
+ "editor.record.form.page.accessAndContact": "",
225
+ "editor.record.form.page.description": "",
226
+ "editor.record.form.page.ressources": "",
227
+ "editor.record.form.section.about.description": "",
228
+ "editor.record.form.section.about.label": "",
229
+ "editor.record.form.section.annexes.label": "",
230
+ "editor.record.form.section.associatedResources.description": "",
231
+ "editor.record.form.section.associatedResources.label": "",
232
+ "editor.record.form.section.classification.description": "",
233
+ "editor.record.form.section.classification.label": "",
234
+ "editor.record.form.section.dataManagers.description": "",
235
+ "editor.record.form.section.dataManagers.label": "",
236
+ "editor.record.form.section.dataPointOfContact.description": "",
237
+ "editor.record.form.section.dataPointOfContact.label": "",
238
+ "editor.record.form.section.geographicalCoverage.label": "",
239
+ "editor.record.form.section.useAndAccessConditions.label": "",
240
+ "editor.record.form.temporalExtents.addDate": "Zeitpunkt",
241
+ "editor.record.form.temporalExtents.addRange": "Zeitraum",
242
+ "editor.record.form.temporalExtents.date": "Datum",
243
+ "editor.record.form.temporalExtents.range": "Datumsbereich",
244
+ "editor.record.form.updateFrequency.planned": "Die Daten sollten regelmäßig aktualisiert werden.",
245
+ "editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
246
+ "editor.record.loadError.closeMessage": "Verstanden",
247
+ "editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
248
+ "editor.record.placeKeywordWithoutLabel": "",
249
+ "editor.record.publish": "Diesen Datensatz veröffentlichen",
250
+ "editor.record.publishError.body": "Der Datensatz konnte nicht veröffentlicht werden:",
251
+ "editor.record.publishError.closeMessage": "Verstanden",
252
+ "editor.record.publishError.title": "Fehler beim Veröffentlichen des Datensatzes",
253
+ "editor.record.publishSuccess.body": "Der Datensatz wurde erfolgreich veröffentlicht!",
254
+ "editor.record.publishSuccess.title": "Veröffentlichung erfolgreich",
255
+ "editor.record.resourceError.body": "",
256
+ "editor.record.resourceError.closeMessage": "",
257
+ "editor.record.resourceError.title": "",
258
+ "editor.record.saveStatus.asDraftOnly": "Nur als Entwurf gespeichert - noch nicht veröffentlicht",
259
+ "editor.record.saveStatus.draftWithChangesPending": "Als Entwurf gespeichert - Änderungen stehen aus",
260
+ "editor.record.saveStatus.recordUpToDate": "Datensatz ist auf dem neuesten Stand",
261
+ "editor.record.undo.confirmation.cancelText": "",
262
+ "editor.record.undo.confirmation.confirmText": "",
263
+ "editor.record.undo.confirmation.message": "",
264
+ "editor.record.undo.confirmation.title": "",
265
+ "editor.record.undo.tooltip.disabled": "",
266
+ "editor.record.undo.tooltip.enabled": "",
267
+ "editor.record.upToDate": "Dieser Datensatz ist auf dem neuesten Stand",
268
+ "editor.sidebar.menu.editor": "",
200
269
  "externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
201
270
  "facets.block.title.OrgForResource": "Organisation",
202
271
  "facets.block.title.availableInServices": "Verfügbar für",
@@ -210,6 +279,11 @@
210
279
  "facets.block.title.tag.default": "Stichwort",
211
280
  "facets.block.title.th_regions_tree.default": "Regionen",
212
281
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
282
+ "input.file.dropFileLabel": "",
283
+ "input.file.orInputUrl": "",
284
+ "input.file.selectFileLabel": "",
285
+ "input.file.uploadProgressCancel": "",
286
+ "input.file.uploadProgressLabel": "",
213
287
  "input.image.altTextPlaceholder": "",
214
288
  "input.image.delete": "",
215
289
  "input.image.displayAltTextInput": "",
@@ -273,7 +347,9 @@
273
347
  "pagination.page": "Seite",
274
348
  "pagination.pageOf": "von",
275
349
  "previous": "zurück",
350
+ "record.action.delete": "Löschen",
276
351
  "record.action.download": "Herunterladen",
352
+ "record.action.duplicate": "",
277
353
  "record.action.view": "Anzeigen",
278
354
  "record.externalViewer.open": "In externem Kartenviewer öffnen",
279
355
  "record.metadata.about": "Beschreibung",
@@ -289,7 +365,7 @@
289
365
  "record.metadata.api.form.reset": "Zurücksetzen",
290
366
  "record.metadata.api.form.title": "Benutzerdefinierte URL generieren",
291
367
  "record.metadata.api.form.type": "Ausgabeformat",
292
- "record.metadata.author": "Autor",
368
+ "record.metadata.author": "Bearbeitet von",
293
369
  "record.metadata.catalog": "Katalog",
294
370
  "record.metadata.contact": "Kontakt",
295
371
  "record.metadata.creation": "Erstellungsdatum",
@@ -328,6 +404,8 @@
328
404
  "record.metadata.related": "Ähnliche Datensätze",
329
405
  "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
330
406
  "record.metadata.status": "Status",
407
+ "record.metadata.status.notPublished": "",
408
+ "record.metadata.status.published": "",
331
409
  "record.metadata.technical": "Technische Informationen",
332
410
  "record.metadata.temporalExtent": "Zeitlicher Umfang",
333
411
  "record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
@@ -338,7 +416,7 @@
338
416
  "record.metadata.type": "Geographischer Datensatz",
339
417
  "record.metadata.uniqueId": "Eindeutige Kennung",
340
418
  "record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
341
- "record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
419
+ "record.metadata.updatedOn": "Geändert am",
342
420
  "record.metadata.usage": "Nutzung und Einschränkungen",
343
421
  "record.metadata.userFeedbacks": "",
344
422
  "record.metadata.userFeedbacks.anonymousUser": "",
@@ -404,7 +482,7 @@
404
482
  "search.filters.resourceType": "Ressourcentyp",
405
483
  "search.filters.standard": "Standard",
406
484
  "search.filters.title": "Ergebnisse filtern",
407
- "search.filters.topic": "Thema",
485
+ "search.filters.topic": "Themen",
408
486
  "search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
409
487
  "search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Datensätze im Bereich des Katalogs zuerst angezeigt. Datensätze außerhalb dieses Bereichs werden nicht angezeigt.",
410
488
  "share.tab.permalink": "Teilen",