geonetwork-ui 2.3.0-dev.f736344f → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (593) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/index.mjs +5 -5
  3. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +14 -0
  4. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +15 -0
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +52 -0
  7. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +8 -4
  8. package/esm2022/libs/api/metadata-converter/src/lib/gn4/index.mjs +4 -0
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/index.mjs +2 -0
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +123 -0
  11. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +116 -0
  12. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +138 -0
  13. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/index.mjs +2 -0
  14. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +244 -0
  15. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +76 -65
  16. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.mjs +18 -0
  17. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.mjs +14 -0
  18. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.mjs +48 -0
  19. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.mjs +18 -0
  20. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.mjs +64 -0
  21. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +89 -61
  22. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +76 -14
  23. package/esm2022/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.mjs +1 -1
  24. package/esm2022/libs/api/repository/src/lib/gn4/auth/gravatar.service.mjs +12 -1
  25. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +4 -4
  26. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +36 -3
  27. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +21 -7
  28. package/esm2022/libs/common/domain/src/lib/model/record/index.mjs +2 -1
  29. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  30. package/esm2022/libs/common/domain/src/lib/model/record/user-feedbacks.model.mjs +2 -0
  31. package/esm2022/libs/common/domain/src/lib/model/user/index.mjs +2 -0
  32. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  33. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +35 -7
  34. package/esm2022/libs/data-access/gn4/src/openapi/model/models.mjs +1 -2
  35. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +1 -1
  36. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +48 -3
  37. package/esm2022/libs/feature/editor/src/index.mjs +2 -2
  38. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +6 -2
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-array/form-field-array.component.mjs +11 -0
  40. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-file/form-field-file.component.mjs +28 -0
  41. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +64 -0
  42. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.mjs +11 -0
  43. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +15 -0
  44. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +45 -0
  45. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.mjs +50 -0
  46. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +11 -0
  47. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.mjs +11 -0
  48. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +104 -0
  49. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +126 -0
  50. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.mjs +2 -0
  51. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +10 -0
  52. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +29 -0
  53. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
  54. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +10 -10
  55. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +23 -1
  56. package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +1 -1
  57. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +8 -8
  58. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +6 -2
  59. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +3 -3
  60. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +125 -0
  61. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
  62. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
  63. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +7 -3
  64. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +12 -7
  65. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +2 -1
  66. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +100 -32
  67. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +18 -51
  68. package/esm2022/libs/feature/notifications/src/index.mjs +4 -0
  69. package/esm2022/libs/feature/notifications/src/lib/feature-notifications.module.mjs +18 -0
  70. package/esm2022/libs/feature/notifications/src/lib/notification.model.mjs +2 -0
  71. package/esm2022/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.mjs +49 -0
  72. package/esm2022/libs/feature/notifications/src/lib/notifications.service.mjs +29 -0
  73. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
  74. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +4 -4
  75. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +22 -10
  76. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +22 -4
  77. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +37 -10
  78. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +52 -8
  79. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +50 -17
  80. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +18 -3
  81. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +2 -2
  82. package/esm2022/libs/feature/search/src/index.mjs +2 -1
  83. package/esm2022/libs/feature/search/src/lib/results-layout/results-layout.component.mjs +1 -1
  84. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +4 -4
  85. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +3 -3
  86. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +1 -1
  87. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +1 -1
  88. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +1 -1
  89. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +3 -3
  90. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +1 -1
  91. package/esm2022/libs/ui/elements/src/index.mjs +16 -16
  92. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -2
  93. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +2 -2
  94. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +30 -0
  95. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +5 -5
  96. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +16 -3
  97. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +45 -0
  98. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  99. package/esm2022/libs/ui/elements/src/lib/notification/notification.component.mjs +34 -0
  100. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +98 -36
  101. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +4 -3
  102. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +19 -15
  103. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +59 -0
  104. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +60 -0
  105. package/esm2022/libs/ui/inputs/src/index.mjs +16 -16
  106. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -1
  107. package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +4 -3
  108. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +22 -0
  109. package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +7 -5
  110. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +19 -8
  111. package/esm2022/libs/ui/inputs/src/lib/files-drop/files-drop.directive.mjs +59 -0
  112. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +183 -0
  113. package/esm2022/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +29 -0
  114. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +27 -4
  115. package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +21 -3
  116. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +21 -31
  117. package/esm2022/libs/ui/layout/src/index.mjs +7 -5
  118. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +76 -0
  119. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +42 -18
  120. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +18 -0
  121. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +3 -8
  122. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
  123. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  124. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  125. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -2
  126. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +22 -1
  127. package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -0
  128. package/esm2022/libs/util/shared/src/lib/utils/image-resize.mjs +60 -0
  129. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +8 -6
  130. package/esm2022/translations/de.json +44 -0
  131. package/esm2022/translations/en.json +44 -0
  132. package/esm2022/translations/es.json +44 -0
  133. package/esm2022/translations/fr.json +44 -0
  134. package/esm2022/translations/it.json +44 -0
  135. package/esm2022/translations/nl.json +44 -0
  136. package/esm2022/translations/pt.json +44 -0
  137. package/fesm2022/geonetwork-ui.mjs +6088 -3676
  138. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  139. package/index.d.ts +1 -0
  140. package/index.d.ts.map +1 -1
  141. package/index.ts +1 -0
  142. package/libs/api/metadata-converter/src/index.d.ts +4 -4
  143. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  144. package/libs/api/metadata-converter/src/lib/{metadata-base.mapper.d.ts → base.converter.d.ts} +3 -3
  145. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -0
  146. package/libs/api/metadata-converter/src/lib/find-converter.d.ts +3 -0
  147. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -0
  148. package/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.d.ts → gn4.converter.d.ts} +5 -5
  149. package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +1 -0
  150. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  151. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts +4 -0
  152. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts.map +1 -0
  153. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts +2 -0
  154. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts.map +1 -0
  155. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +9 -0
  156. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -0
  157. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +20 -0
  158. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -0
  159. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +21 -0
  160. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -0
  161. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts +2 -0
  162. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts.map +1 -0
  163. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +11 -0
  164. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -0
  165. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +38 -7
  166. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  167. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts +8 -0
  168. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts.map +1 -0
  169. package/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.d.ts.map +1 -0
  170. package/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.d.ts.map +1 -0
  171. package/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.d.ts.map +1 -0
  172. package/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.d.ts.map +1 -0
  173. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +40 -3
  174. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  175. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +14 -1
  176. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  177. package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts +1 -0
  178. package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts.map +1 -1
  179. package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts +1 -0
  180. package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts.map +1 -1
  181. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -2
  182. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  183. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +6 -2
  184. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  185. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -6
  186. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  187. package/libs/common/domain/src/lib/model/record/index.d.ts +1 -0
  188. package/libs/common/domain/src/lib/model/record/index.d.ts.map +1 -1
  189. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +9 -7
  190. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  191. package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts +15 -0
  192. package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts.map +1 -0
  193. package/libs/common/domain/src/lib/model/user/index.d.ts +2 -0
  194. package/libs/common/domain/src/lib/model/user/index.d.ts.map +1 -0
  195. package/libs/common/domain/src/lib/platform.service.interface.d.ts +3 -0
  196. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  197. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +9 -5
  198. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  199. package/libs/data-access/gn4/src/openapi/model/models.d.ts +0 -1
  200. package/libs/data-access/gn4/src/openapi/model/models.d.ts.map +1 -1
  201. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +4 -1
  202. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  203. package/libs/feature/editor/src/index.d.ts +1 -1
  204. package/libs/feature/editor/src/index.d.ts.map +1 -1
  205. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +8 -5
  206. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  207. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.d.ts +1 -1
  208. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-array/form-field-array.component.d.ts.map +1 -0
  209. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.d.ts +1 -1
  210. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-file/form-field-file.component.d.ts.map +1 -0
  211. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +39 -0
  212. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -0
  213. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.d.ts +1 -1
  214. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.d.ts.map +1 -0
  215. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +8 -0
  216. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +1 -0
  217. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts +16 -0
  218. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -0
  219. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.d.ts +2 -2
  220. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.d.ts.map +1 -0
  221. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts +1 -1
  222. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -0
  223. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts +1 -1
  224. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts.map +1 -0
  225. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +21 -0
  226. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -0
  227. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.component.d.ts +13 -4
  228. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -0
  229. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts.map +1 -0
  230. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -0
  231. package/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.d.ts +3 -3
  232. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -0
  233. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +1 -1
  234. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  235. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  236. package/libs/feature/editor/src/lib/models/fields.model.d.ts +1 -1
  237. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  238. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  239. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +28 -0
  240. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -0
  241. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -1
  242. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  243. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +2 -0
  244. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  245. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +17 -5
  246. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  247. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -1
  248. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  249. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -3
  250. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  251. package/libs/feature/notifications/src/index.d.ts +4 -0
  252. package/libs/feature/notifications/src/index.d.ts.map +1 -0
  253. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts +7 -0
  254. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts.map +1 -0
  255. package/libs/feature/notifications/src/lib/notification.model.d.ts +7 -0
  256. package/libs/feature/notifications/src/lib/notification.model.d.ts.map +1 -0
  257. package/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.d.ts +12 -0
  258. package/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.d.ts.map +1 -0
  259. package/libs/feature/notifications/src/lib/notifications.service.d.ts +15 -0
  260. package/libs/feature/notifications/src/lib/notifications.service.d.ts.map +1 -0
  261. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  262. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +2 -2
  263. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  264. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +40 -6
  265. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  266. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +24 -4
  267. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  268. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +18 -5
  269. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  270. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +8 -5
  271. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  272. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +12 -9
  273. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  274. package/libs/feature/search/src/index.d.ts +1 -0
  275. package/libs/feature/search/src/index.d.ts.map +1 -1
  276. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts +3 -3
  277. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  278. package/libs/ui/elements/src/index.d.ts +15 -15
  279. package/libs/ui/elements/src/index.d.ts.map +1 -1
  280. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  281. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  282. package/libs/ui/elements/src/lib/error/error.component.d.ts +16 -0
  283. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -0
  284. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +3 -1
  285. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  286. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts +13 -0
  287. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -0
  288. package/libs/ui/elements/src/lib/notification/notification.component.d.ts +13 -0
  289. package/libs/ui/elements/src/lib/notification/notification.component.d.ts.map +1 -0
  290. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +24 -4
  291. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  292. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +1 -1
  293. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  294. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +29 -28
  295. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  296. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +11 -0
  297. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +1 -0
  298. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts +21 -0
  299. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts.map +1 -0
  300. package/libs/ui/inputs/src/index.d.ts +15 -15
  301. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  302. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  303. package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts +1 -1
  304. package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts.map +1 -1
  305. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +9 -0
  306. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -0
  307. package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts +1 -1
  308. package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
  309. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +2 -1
  310. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  311. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts +14 -0
  312. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts.map +1 -0
  313. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +44 -0
  314. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -0
  315. package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +12 -0
  316. package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -0
  317. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +7 -1
  318. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  319. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +5 -1
  320. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
  321. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +35 -42
  322. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  323. package/libs/ui/layout/src/index.d.ts +6 -4
  324. package/libs/ui/layout/src/index.d.ts.map +1 -1
  325. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +25 -0
  326. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -0
  327. package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts +13 -6
  328. package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts.map +1 -1
  329. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts +8 -0
  330. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts.map +1 -0
  331. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +4 -5
  332. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  333. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  334. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  335. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  336. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  337. package/libs/util/shared/src/lib/links/link-utils.d.ts +18 -0
  338. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  339. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -0
  340. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -0
  341. package/libs/util/shared/src/lib/utils/image-resize.d.ts +3 -0
  342. package/libs/util/shared/src/lib/utils/image-resize.d.ts.map +1 -0
  343. package/libs/util/shared/src/lib/utils/index.d.ts +7 -5
  344. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  345. package/package.json +2 -2
  346. package/src/libs/api/metadata-converter/src/index.ts +4 -4
  347. package/src/libs/api/metadata-converter/src/lib/{metadata-base.mapper.ts → base.converter.ts} +2 -2
  348. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +16 -0
  349. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +41 -6
  350. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +11 -4
  351. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +33 -7
  352. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +580 -0
  353. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +2 -2
  354. package/src/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.ts → gn4.converter.ts} +2 -2
  355. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +9 -3
  356. package/src/libs/api/metadata-converter/src/lib/gn4/index.ts +3 -0
  357. package/src/libs/api/metadata-converter/src/lib/iso19115-3/index.ts +1 -0
  358. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +176 -0
  359. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +329 -0
  360. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +513 -0
  361. package/src/libs/api/metadata-converter/src/lib/iso19139/index.ts +1 -0
  362. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +331 -0
  363. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +185 -94
  364. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.ts +20 -0
  365. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +246 -111
  366. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +84 -16
  367. package/src/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.ts +1 -0
  368. package/src/libs/api/repository/src/lib/gn4/auth/gravatar.service.ts +12 -1
  369. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
  370. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +51 -1
  371. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +40 -7
  372. package/src/libs/common/domain/src/lib/model/record/index.ts +1 -0
  373. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +12 -7
  374. package/src/libs/common/domain/src/lib/model/record/user-feedbacks.model.ts +15 -0
  375. package/src/libs/common/domain/src/lib/platform.service.interface.ts +3 -0
  376. package/src/libs/common/fixtures/src/index.ts +8 -6
  377. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +8 -0
  378. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +11 -3
  379. package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +83 -0
  380. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +43 -12
  381. package/src/libs/data-access/gn4/src/openapi/model/models.ts +0 -1
  382. package/src/libs/data-access/gn4/src/spec.yaml +1 -1
  383. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +66 -2
  384. package/src/libs/feature/editor/src/index.ts +1 -1
  385. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +8 -1
  386. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +8 -0
  387. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +70 -0
  388. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.ts +1 -0
  389. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.ts +4 -1
  390. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.html +8 -0
  391. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +64 -0
  392. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.ts +1 -0
  393. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.html +4 -0
  394. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.ts +15 -0
  395. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +20 -0
  396. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +44 -0
  397. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.ts +4 -1
  398. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +1 -0
  399. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.css +0 -0
  400. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.ts +1 -0
  401. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +0 -0
  402. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +14 -0
  403. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +143 -0
  404. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.css +0 -0
  405. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +97 -0
  406. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +142 -0
  407. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.css +0 -0
  408. package/src/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.html +1 -0
  409. package/src/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.ts +4 -4
  410. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +9 -9
  411. package/src/libs/feature/editor/src/lib/fields.config.ts +22 -0
  412. package/src/libs/feature/editor/src/lib/models/fields.model.ts +1 -1
  413. package/src/libs/feature/editor/src/lib/services/editor.service.ts +27 -16
  414. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +5 -1
  415. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +1 -1
  416. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +7 -0
  417. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +50 -0
  418. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +135 -0
  419. package/src/libs/feature/map/src/lib/feature-map.module.ts +2 -0
  420. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +8 -0
  421. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +5 -0
  422. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +17 -3
  423. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +108 -40
  424. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +23 -63
  425. package/src/libs/feature/notifications/src/index.ts +3 -0
  426. package/src/libs/feature/notifications/src/lib/feature-notifications.module.ts +10 -0
  427. package/src/libs/feature/notifications/src/lib/notification.model.ts +6 -0
  428. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.css +0 -0
  429. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.html +17 -0
  430. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.ts +44 -0
  431. package/src/libs/feature/notifications/src/lib/notifications.service.ts +27 -0
  432. package/src/libs/feature/record/src/lib/feature-record.module.ts +5 -2
  433. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +22 -10
  434. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +51 -6
  435. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +82 -7
  436. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +86 -9
  437. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +79 -24
  438. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +40 -10
  439. package/src/libs/feature/router/src/lib/default/state/router.effects.ts +2 -2
  440. package/src/libs/feature/search/src/index.ts +1 -0
  441. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +4 -4
  442. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +3 -3
  443. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -2
  444. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +5 -5
  445. package/src/libs/ui/elements/src/index.ts +15 -15
  446. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +2 -1
  447. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +1 -1
  448. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.html → error/error.component.html} +18 -3
  449. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.ts → error/error.component.ts} +5 -4
  450. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  451. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +38 -20
  452. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +12 -0
  453. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +0 -5
  454. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +0 -21
  455. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -14
  456. package/src/libs/ui/elements/src/lib/notification/notification.component.css +0 -0
  457. package/src/libs/ui/elements/src/lib/notification/notification.component.html +52 -0
  458. package/src/libs/ui/elements/src/lib/notification/notification.component.ts +31 -0
  459. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +27 -11
  460. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +125 -30
  461. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +5 -3
  462. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +9 -7
  463. package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +54 -0
  464. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.css +0 -0
  465. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +75 -0
  466. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +62 -0
  467. package/src/libs/ui/inputs/src/index.ts +15 -15
  468. package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -1
  469. package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.ts +3 -0
  470. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +3 -0
  471. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +11 -0
  472. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +16 -0
  473. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +8 -1
  474. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -0
  475. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +14 -0
  476. package/src/libs/ui/inputs/src/lib/files-drop/files-drop.directive.ts +45 -0
  477. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +0 -0
  478. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +146 -0
  479. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +193 -0
  480. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.css +6 -0
  481. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.html +26 -0
  482. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.ts +32 -0
  483. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +2 -1
  484. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +29 -0
  485. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +2 -1
  486. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +17 -1
  487. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +6 -22
  488. package/src/libs/ui/layout/src/index.ts +6 -4
  489. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +23 -0
  490. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +20 -0
  491. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +84 -0
  492. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +8 -4
  493. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +4 -4
  494. package/src/libs/ui/layout/src/lib/carousel/carousel.component.ts +45 -15
  495. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.css +0 -0
  496. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +18 -0
  497. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +16 -0
  498. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -2
  499. package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
  500. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  501. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  502. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +1 -1
  503. package/src/libs/util/shared/src/lib/links/link-utils.ts +21 -0
  504. package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +3 -0
  505. package/src/libs/util/shared/src/lib/utils/image-resize.ts +72 -0
  506. package/src/libs/util/shared/src/lib/utils/index.ts +7 -5
  507. package/tailwind.base.css +36 -0
  508. package/translations/de.json +44 -0
  509. package/translations/en.json +44 -0
  510. package/translations/es.json +44 -0
  511. package/translations/fr.json +44 -0
  512. package/translations/it.json +44 -0
  513. package/translations/nl.json +44 -0
  514. package/translations/pt.json +44 -0
  515. package/translations/sk.json +44 -0
  516. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +0 -52
  517. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +0 -14
  518. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.mjs +0 -48
  519. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.mjs +0 -18
  520. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.mjs +0 -64
  521. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +0 -130
  522. package/esm2022/libs/api/metadata-converter/src/lib/metadata-base.mapper.mjs +0 -14
  523. package/esm2022/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.mjs +0 -13
  524. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +0 -30
  525. package/esm2022/libs/ui/elements/src/lib/search-results-error/search-results-error.component.mjs +0 -29
  526. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-array/form-field-array.component.mjs +0 -11
  527. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-file/form-field-file.component.mjs +0 -27
  528. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.mjs +0 -11
  529. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.mjs +0 -27
  530. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.mjs +0 -49
  531. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +0 -11
  532. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.mjs +0 -11
  533. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.component.mjs +0 -76
  534. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.model.mjs +0 -2
  535. package/esm2022/libs/ui/inputs/src/lib/form-field/index.mjs +0 -10
  536. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +0 -1
  537. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +0 -1
  538. package/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.d.ts.map +0 -1
  539. package/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.d.ts.map +0 -1
  540. package/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.d.ts.map +0 -1
  541. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts +0 -4
  542. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +0 -1
  543. package/libs/api/metadata-converter/src/lib/metadata-base.mapper.d.ts.map +0 -1
  544. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts +0 -18
  545. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts.map +0 -1
  546. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +0 -1
  547. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts +0 -15
  548. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts.map +0 -1
  549. package/libs/ui/inputs/src/lib/form-field/form-field-array/form-field-array.component.d.ts.map +0 -1
  550. package/libs/ui/inputs/src/lib/form-field/form-field-file/form-field-file.component.d.ts.map +0 -1
  551. package/libs/ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.d.ts.map +0 -1
  552. package/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.d.ts +0 -11
  553. package/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.d.ts.map +0 -1
  554. package/libs/ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.d.ts.map +0 -1
  555. package/libs/ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +0 -1
  556. package/libs/ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts.map +0 -1
  557. package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts.map +0 -1
  558. package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts.map +0 -1
  559. package/libs/ui/inputs/src/lib/form-field/index.d.ts.map +0 -1
  560. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +0 -196
  561. package/src/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.ts +0 -18
  562. package/src/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.html +0 -11
  563. package/src/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.ts +0 -15
  564. package/src/libs/ui/inputs/src/lib/form-field/form-field.component.html +0 -68
  565. package/src/libs/ui/inputs/src/lib/form-field/form-field.component.ts +0 -80
  566. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/keyword.mapper.d.ts +0 -0
  567. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.d.ts +0 -0
  568. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.d.ts +0 -0
  569. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.d.ts +0 -0
  570. /package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.model.d.ts +0 -0
  571. /package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/index.d.ts +0 -0
  572. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/keyword.mapper.ts +0 -0
  573. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.ts +0 -0
  574. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.ts +0 -0
  575. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.ts +0 -0
  576. /package/src/libs/feature/editor/src/lib/{record-form/record-form.component.css → components/overview-upload/overview-upload.component.css} +0 -0
  577. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.css +0 -0
  578. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.html +0 -0
  579. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.css +0 -0
  580. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.html +0 -0
  581. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css} +0 -0
  582. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.css} +0 -0
  583. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.html +0 -0
  584. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css} +0 -0
  585. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.css} +0 -0
  586. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.css} +0 -0
  587. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.html +0 -0
  588. /package/src/libs/{ui/inputs/src/lib/form-field/form-field.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.css} +0 -0
  589. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +0 -0
  590. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.html +0 -0
  591. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.model.ts +0 -0
  592. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/index.ts +0 -0
  593. /package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.css → error/error.component.css} +0 -0
@@ -5,5 +5,6 @@ export var MapContextLayerTypeEnum;
5
5
  MapContextLayerTypeEnum["WMTS"] = "wmts";
6
6
  MapContextLayerTypeEnum["WFS"] = "wfs";
7
7
  MapContextLayerTypeEnum["GEOJSON"] = "geojson";
8
+ MapContextLayerTypeEnum["OGCAPI"] = "ogcapi";
8
9
  })(MapContextLayerTypeEnum || (MapContextLayerTypeEnum = {}));
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvbWFwLWNvbnRleHQvbWFwLWNvbnRleHQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxDQUFOLElBQVksdUJBTVg7QUFORCxXQUFZLHVCQUF1QjtJQUNqQyxzQ0FBVyxDQUFBO0lBQ1gsc0NBQVcsQ0FBQTtJQUNYLHdDQUFhLENBQUE7SUFDYixzQ0FBVyxDQUFBO0lBQ1gsOENBQW1CLENBQUE7QUFDckIsQ0FBQyxFQU5XLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFNbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IENvb3JkaW5hdGUgfSBmcm9tICdvbC9jb29yZGluYXRlJ1xuaW1wb3J0IHR5cGUgeyBFeHRlbnQgfSBmcm9tICdvbC9leHRlbnQnXG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnb2wvc291cmNlL1dNVFMnXG5cbmV4cG9ydCBlbnVtIE1hcENvbnRleHRMYXllclR5cGVFbnVtIHtcbiAgWFlaID0gJ3h5eicsXG4gIFdNUyA9ICd3bXMnLFxuICBXTVRTID0gJ3dtdHMnLFxuICBXRlMgPSAnd2ZzJyxcbiAgR0VPSlNPTiA9ICdnZW9qc29uJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBDb250ZXh0TW9kZWwge1xuICBsYXllcnM6IE1hcENvbnRleHRMYXllck1vZGVsW11cbiAgdmlldz86IE1hcENvbnRleHRWaWV3TW9kZWxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBDb250ZXh0TGF5ZXJXbXNNb2RlbCB7XG4gIHR5cGU6ICd3bXMnXG4gIHVybDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcENvbnRleHRMYXllcldtdHNNb2RlbCB7XG4gIHR5cGU6ICd3bXRzJ1xuICBvcHRpb25zOiBPcHRpb25zXG4gIGV4dGVudD86IEV4dGVudFxufVxuXG5pbnRlcmZhY2UgTWFwQ29udGV4dExheWVyV2ZzTW9kZWwge1xuICB0eXBlOiAnd2ZzJ1xuICB1cmw6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIExheWVyWHl6TW9kZWwge1xuICB0eXBlOiAneHl6J1xuICBuYW1lPzogc3RyaW5nXG59XG5pbnRlcmZhY2UgTGF5ZXJYeXpNb2RlbFdpdGhVcmwgZXh0ZW5kcyBMYXllclh5ek1vZGVsIHtcbiAgdXJsOiBzdHJpbmdcbiAgdXJscz86IG5ldmVyXG59XG5pbnRlcmZhY2UgTGF5ZXJYeXpNb2RlbFdpdGhVcmxzIGV4dGVuZHMgTGF5ZXJYeXpNb2RlbCB7XG4gIHVybHM6IHN0cmluZ1tdXG4gIHVybD86IG5ldmVyXG59XG5leHBvcnQgdHlwZSBNYXBDb250ZXh0TGF5ZXJYeXpNb2RlbCA9XG4gIHwgTGF5ZXJYeXpNb2RlbFdpdGhVcmxcbiAgfCBMYXllclh5ek1vZGVsV2l0aFVybHNcblxuaW50ZXJmYWNlIExheWVyR2VvanNvbiB7XG4gIHR5cGU6ICdnZW9qc29uJ1xufVxuaW50ZXJmYWNlIExheWVyR2VvanNvbldpdGhVcmwgZXh0ZW5kcyBMYXllckdlb2pzb24ge1xuICB1cmw6IHN0cmluZ1xuICBkYXRhPzogbmV2ZXJcbn1cbmludGVyZmFjZSBMYXllckdlb2pzb25XaXRoRGF0YSBleHRlbmRzIExheWVyR2VvanNvbiB7XG4gIGRhdGE6IEZlYXR1cmVDb2xsZWN0aW9uIHwgc3RyaW5nXG4gIHVybD86IG5ldmVyXG59XG5leHBvcnQgdHlwZSBNYXBDb250ZXh0TGF5ZXJHZW9qc29uTW9kZWwgPVxuICB8IExheWVyR2VvanNvbldpdGhVcmxcbiAgfCBMYXllckdlb2pzb25XaXRoRGF0YVxuXG5leHBvcnQgdHlwZSBNYXBDb250ZXh0TGF5ZXJNb2RlbCA9XG4gIHwgTWFwQ29udGV4dExheWVyV21zTW9kZWxcbiAgfCBNYXBDb250ZXh0TGF5ZXJXbXRzTW9kZWxcbiAgfCBNYXBDb250ZXh0TGF5ZXJXZnNNb2RlbFxuICB8IE1hcENvbnRleHRMYXllclh5ek1vZGVsXG4gIHwgTWFwQ29udGV4dExheWVyR2VvanNvbk1vZGVsXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dFZpZXdNb2RlbCB7XG4gIGNlbnRlcj86IENvb3JkaW5hdGUgLy8gZXhwcmVzc2VkIGluIGxvbmcvbGF0IChFUFNHOjQzMjYpXG4gIHpvb20/OiBudW1iZXJcbiAgZXh0ZW50PzogRXh0ZW50IC8vIGV4cHJlc3NlZCBpbiBsb25nL2xhdCAoRVBTRzo0MzI2KVxuICBtYXhab29tPzogbnVtYmVyXG4gIG1heEV4dGVudD86IEV4dGVudCAvLyBleHByZXNzZWQgaW4gbG9uZy9sYXQgKEVQU0c6NDMyNilcbn1cbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvbWFwLWNvbnRleHQvbWFwLWNvbnRleHQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFOLElBQVksdUJBT1g7QUFQRCxXQUFZLHVCQUF1QjtJQUNqQyxzQ0FBVyxDQUFBO0lBQ1gsc0NBQVcsQ0FBQTtJQUNYLHdDQUFhLENBQUE7SUFDYixzQ0FBVyxDQUFBO0lBQ1gsOENBQW1CLENBQUE7SUFDbkIsNENBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVBXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFPbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IENvb3JkaW5hdGUgfSBmcm9tICdvbC9jb29yZGluYXRlJ1xuaW1wb3J0IHR5cGUgeyBFeHRlbnQgfSBmcm9tICdvbC9leHRlbnQnXG5cbmV4cG9ydCBlbnVtIE1hcENvbnRleHRMYXllclR5cGVFbnVtIHtcbiAgWFlaID0gJ3h5eicsXG4gIFdNUyA9ICd3bXMnLFxuICBXTVRTID0gJ3dtdHMnLFxuICBXRlMgPSAnd2ZzJyxcbiAgR0VPSlNPTiA9ICdnZW9qc29uJyxcbiAgT0dDQVBJID0gJ29nY2FwaScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dE1vZGVsIHtcbiAgbGF5ZXJzOiBNYXBDb250ZXh0TGF5ZXJNb2RlbFtdXG4gIHZpZXc/OiBNYXBDb250ZXh0Vmlld01vZGVsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dExheWVyV21zTW9kZWwge1xuICB0eXBlOiAnd21zJ1xuICB1cmw6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgYXR0cmlidXRpb25zPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dExheWVyV210c01vZGVsIHtcbiAgdHlwZTogJ3dtdHMnXG4gIHVybDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBhdHRyaWJ1dGlvbnM/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIE1hcENvbnRleHRMYXllcldmc01vZGVsIHtcbiAgdHlwZTogJ3dmcydcbiAgdXJsOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGF0dHJpYnV0aW9ucz86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcENvbnRleHRMYXllck9nY2FwaU1vZGVsIHtcbiAgdHlwZTogJ29nY2FwaSdcbiAgdXJsOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGxheWVyVHlwZTogJ2ZlYXR1cmUnIHwgJ3ZlY3RvclRpbGVzJyB8ICdtYXBUaWxlcycgfCAncmVjb3JkJ1xuICBhdHRyaWJ1dGlvbnM/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIExheWVyWHl6TW9kZWwge1xuICB0eXBlOiAneHl6J1xuICBuYW1lPzogc3RyaW5nXG4gIGF0dHJpYnV0aW9ucz86IHN0cmluZ1xufVxuaW50ZXJmYWNlIExheWVyWHl6TW9kZWxXaXRoVXJsIGV4dGVuZHMgTGF5ZXJYeXpNb2RlbCB7XG4gIHVybDogc3RyaW5nXG4gIHVybHM/OiBuZXZlclxufVxuaW50ZXJmYWNlIExheWVyWHl6TW9kZWxXaXRoVXJscyBleHRlbmRzIExheWVyWHl6TW9kZWwge1xuICB1cmxzOiBzdHJpbmdbXVxuICB1cmw/OiBuZXZlclxufVxuZXhwb3J0IHR5cGUgTWFwQ29udGV4dExheWVyWHl6TW9kZWwgPVxuICB8IExheWVyWHl6TW9kZWxXaXRoVXJsXG4gIHwgTGF5ZXJYeXpNb2RlbFdpdGhVcmxzXG5cbmludGVyZmFjZSBMYXllckdlb2pzb24ge1xuICB0eXBlOiAnZ2VvanNvbidcbiAgYXR0cmlidXRpb25zPzogc3RyaW5nXG59XG5pbnRlcmZhY2UgTGF5ZXJHZW9qc29uV2l0aFVybCBleHRlbmRzIExheWVyR2VvanNvbiB7XG4gIHVybDogc3RyaW5nXG4gIGRhdGE/OiBuZXZlclxufVxuaW50ZXJmYWNlIExheWVyR2VvanNvbldpdGhEYXRhIGV4dGVuZHMgTGF5ZXJHZW9qc29uIHtcbiAgZGF0YTogRmVhdHVyZUNvbGxlY3Rpb24gfCBzdHJpbmdcbiAgdXJsPzogbmV2ZXJcbn1cbmV4cG9ydCB0eXBlIE1hcENvbnRleHRMYXllckdlb2pzb25Nb2RlbCA9XG4gIHwgTGF5ZXJHZW9qc29uV2l0aFVybFxuICB8IExheWVyR2VvanNvbldpdGhEYXRhXG5cbmV4cG9ydCB0eXBlIE1hcENvbnRleHRMYXllck1vZGVsID1cbiAgfCBNYXBDb250ZXh0TGF5ZXJXbXNNb2RlbFxuICB8IE1hcENvbnRleHRMYXllcldtdHNNb2RlbFxuICB8IE1hcENvbnRleHRMYXllcldmc01vZGVsXG4gIHwgTWFwQ29udGV4dExheWVyWHl6TW9kZWxcbiAgfCBNYXBDb250ZXh0TGF5ZXJHZW9qc29uTW9kZWxcbiAgfCBNYXBDb250ZXh0TGF5ZXJPZ2NhcGlNb2RlbFxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcENvbnRleHRWaWV3TW9kZWwge1xuICBjZW50ZXI/OiBDb29yZGluYXRlIC8vIGV4cHJlc3NlZCBpbiBsb25nL2xhdCAoRVBTRzo0MzI2KVxuICB6b29tPzogbnVtYmVyXG4gIGV4dGVudD86IEV4dGVudCAvLyBleHByZXNzZWQgaW4gbG9uZy9sYXQgKEVQU0c6NDMyNilcbiAgbWF4Wm9vbT86IG51bWJlclxuICBtYXhFeHRlbnQ/OiBFeHRlbnQgLy8gZXhwcmVzc2VkIGluIGxvbmcvbGF0IChFUFNHOjQzMjYpXG59XG4iXX0=
@@ -12,7 +12,13 @@ import { MapUtilsService } from '../utils/map-utils.service';
12
12
  import { bbox as bboxStrategy } from 'ol/loadingstrategy';
13
13
  import { fromLonLat } from 'ol/proj';
14
14
  import WMTS from 'ol/source/WMTS';
15
- import { removeSearchParams } from '../../../../../../libs/util/shared/src';
15
+ import { WfsEndpoint, WmtsEndpoint } from '@camptocamp/ogc-client';
16
+ import OGCVectorTile from 'ol/source/OGCVectorTile.js';
17
+ import { MVT } from 'ol/format';
18
+ import VectorTileLayer from 'ol/layer/VectorTile';
19
+ import OGCMapTile from 'ol/source/OGCMapTile.js';
20
+ import ImageLayer from 'ol/layer/Image';
21
+ import ImageWMS from 'ol/source/ImageWMS';
16
22
  import * as i0 from "@angular/core";
17
23
  import * as i1 from "../utils/map-utils.service";
18
24
  import * as i2 from "../style/map-style.service";
@@ -23,6 +29,7 @@ export const DEFAULT_BASELAYER_CONTEXT = {
23
29
  `https://b.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
24
30
  `https://c.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
25
31
  ],
32
+ attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
26
33
  };
27
34
  export const DEFAULT_VIEW = {
28
35
  center: [0, 15],
@@ -47,56 +54,117 @@ export class MapContextService {
47
54
  }
48
55
  map.setView(this.createView(mapContext.view, map));
49
56
  map.getLayers().clear();
50
- mapContext.layers.forEach((layer) => map.addLayer(this.createLayer(layer)));
57
+ mapContext.layers.forEach((layer) => map.addLayer(this.createLayer(layer, mapConfig)));
51
58
  return map;
52
59
  }
53
- createLayer(layerModel) {
60
+ createLayer(layerModel, mapConfig) {
54
61
  const { type } = layerModel;
55
62
  const style = this.styleService.styles.default;
56
63
  switch (type) {
64
+ case MapContextLayerTypeEnum.OGCAPI:
65
+ if (layerModel.layerType === 'vectorTiles') {
66
+ return new VectorTileLayer({
67
+ source: new OGCVectorTile({
68
+ url: layerModel.url,
69
+ format: new MVT(),
70
+ attributions: layerModel.attributions,
71
+ }),
72
+ });
73
+ }
74
+ else if (layerModel.layerType === 'mapTiles') {
75
+ return new TileLayer({
76
+ source: new OGCMapTile({
77
+ url: layerModel.url,
78
+ attributions: layerModel.attributions,
79
+ }),
80
+ });
81
+ }
82
+ else {
83
+ return new VectorLayer({
84
+ source: new VectorSource({
85
+ format: new GeoJSON(),
86
+ url: layerModel.url,
87
+ attributions: layerModel.attributions,
88
+ }),
89
+ style,
90
+ });
91
+ }
57
92
  case MapContextLayerTypeEnum.XYZ:
58
93
  return new TileLayer({
59
94
  source: new XYZ({
60
95
  url: 'url' in layerModel ? layerModel.url : undefined,
61
96
  urls: 'urls' in layerModel ? layerModel.urls : undefined,
97
+ attributions: layerModel.attributions,
62
98
  }),
63
99
  });
64
100
  case MapContextLayerTypeEnum.WMS:
65
- return new TileLayer({
66
- source: new TileWMS({
67
- url: removeSearchParams(layerModel.url, ['request', 'service']),
68
- params: { LAYERS: layerModel.name },
69
- gutter: 20,
70
- }),
101
+ if (mapConfig?.DO_NOT_TILE_WMS) {
102
+ return new ImageLayer({
103
+ source: new ImageWMS({
104
+ url: layerModel.url,
105
+ params: { LAYERS: layerModel.name },
106
+ attributions: layerModel.attributions,
107
+ }),
108
+ });
109
+ }
110
+ else {
111
+ return new TileLayer({
112
+ source: new TileWMS({
113
+ url: layerModel.url,
114
+ params: { LAYERS: layerModel.name, TILED: true },
115
+ attributions: layerModel.attributions,
116
+ }),
117
+ });
118
+ }
119
+ case MapContextLayerTypeEnum.WMTS: {
120
+ // TODO: isolate this in utils service
121
+ const olLayer = new TileLayer({});
122
+ const endpoint = new WmtsEndpoint(layerModel.url);
123
+ endpoint.isReady().then(async (endpoint) => {
124
+ const layerName = endpoint.getSingleLayerName() ?? layerModel.name;
125
+ const layer = endpoint.getLayerByName(layerName);
126
+ const matrixSet = layer.matrixSets[0];
127
+ const tileGrid = await endpoint.getOpenLayersTileGrid(layer.name);
128
+ const resourceUrl = layer.resourceLinks[0];
129
+ const dimensions = endpoint.getDefaultDimensions(layer.name);
130
+ olLayer.setSource(new WMTS({
131
+ layer: layer.name,
132
+ style: layer.defaultStyle,
133
+ matrixSet: matrixSet.identifier,
134
+ format: resourceUrl.format,
135
+ url: resourceUrl.url,
136
+ requestEncoding: resourceUrl.encoding,
137
+ tileGrid,
138
+ projection: matrixSet.crs,
139
+ dimensions,
140
+ attributions: layerModel.attributions,
141
+ }));
71
142
  });
72
- case MapContextLayerTypeEnum.WMTS:
73
- return new TileLayer({
74
- source: new WMTS(layerModel.options),
143
+ return olLayer;
144
+ }
145
+ case MapContextLayerTypeEnum.WFS: {
146
+ const olLayer = new VectorLayer({
147
+ style,
75
148
  });
76
- case MapContextLayerTypeEnum.WFS:
77
- return new VectorLayer({
78
- source: new VectorSource({
149
+ new WfsEndpoint(layerModel.url).isReady().then((endpoint) => {
150
+ const featureType = endpoint.getSingleFeatureTypeName() ?? layerModel.name;
151
+ olLayer.setSource(new VectorSource({
79
152
  format: new GeoJSON(),
80
153
  url: function (extent) {
81
- const urlObj = new URL(removeSearchParams(layerModel.url, [
82
- 'service',
83
- 'version',
84
- 'request',
85
- ]));
86
- urlObj.searchParams.set('service', 'WFS');
87
- urlObj.searchParams.set('version', '1.1.0');
88
- urlObj.searchParams.set('request', 'GetFeature');
89
- urlObj.searchParams.set('outputFormat', 'application/json');
90
- urlObj.searchParams.set('typename', layerModel.name);
91
- urlObj.searchParams.set('srsname', 'EPSG:3857');
92
- urlObj.searchParams.set('bbox', `${extent.join(',')},EPSG:3857`);
93
- urlObj.searchParams.set('maxFeatures', WFS_MAX_FEATURES.toString());
94
- return urlObj.toString();
154
+ return endpoint.getFeatureUrl(featureType, {
155
+ maxFeatures: WFS_MAX_FEATURES,
156
+ asJson: true,
157
+ outputCrs: 'EPSG:3857',
158
+ extent,
159
+ extentCrs: 'EPSG:3857',
160
+ });
95
161
  },
96
162
  strategy: bboxStrategy,
97
- }),
98
- style,
163
+ attributions: layerModel.attributions,
164
+ }));
99
165
  });
166
+ return olLayer;
167
+ }
100
168
  case MapContextLayerTypeEnum.GEOJSON: {
101
169
  if ('url' in layerModel) {
102
170
  return new VectorLayer({
@@ -218,4 +286,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
218
286
  providedIn: 'root',
219
287
  }]
220
288
  }], ctorParameters: function () { return [{ type: i1.MapUtilsService }, { type: i2.MapStyleService }]; } });
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzVELE9BQU8sRUFFTCx1QkFBdUIsR0FJeEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUU1QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFFMUIsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFBO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQTtBQUMvQixPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQTtBQUMzQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDNUQsT0FBTyxFQUFFLElBQUksSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBQ2pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFBOzs7O0FBSTNFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUE0QjtJQUNoRSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsR0FBRztJQUNqQyxJQUFJLEVBQUU7UUFDSixxRUFBcUU7UUFDckUscUVBQXFFO1FBQ3JFLHFFQUFxRTtLQUN0RTtDQUNGLENBQUE7QUFFRCxNQUFN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LEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUMvRCxDQUFBO1NBQ0o7SUFDSCxDQUFDOzhHQXpNVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBNYXBTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi9zdHlsZS9tYXAtc3R5bGUuc2VydmljZSdcbmltcG9ydCB7XG4gIE1hcENvbnRleHRMYXllck1vZGVsLFxuICBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bSxcbiAgTWFwQ29udGV4dExheWVyWHl6TW9kZWwsXG4gIE1hcENvbnRleHRNb2RlbCxcbiAgTWFwQ29udGV4dFZpZXdNb2RlbCxcbn0gZnJvbSAnLi9tYXAtY29udGV4dC5tb2RlbCdcbmltcG9ydCBNYXAgZnJvbSAnb2wvTWFwJ1xuaW1wb3J0IFZpZXcgZnJvbSAnb2wvVmlldydcbmltcG9ydCBMYXllciBmcm9tICdvbC9sYXllci9CYXNlJ1xuaW1wb3J0IFZlY3RvckxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3RvcidcbmltcG9ydCBUaWxlV01TIGZyb20gJ29sL3NvdXJjZS9UaWxlV01TJ1xuaW1wb3J0IFRpbGVMYXllciBmcm9tICdvbC9sYXllci9UaWxlJ1xuaW1wb3J0IFhZWiBmcm9tICdvbC9zb3VyY2UvWFlaJ1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJ1xuaW1wb3J0IEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nXG5pbXBvcnQgeyBNYXBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi91dGlscy9tYXAtdXRpbHMuc2VydmljZSdcbmltcG9ydCB7IGJib3ggYXMgYmJveFN0cmF0ZWd5IH0gZnJvbSAnb2wvbG9hZGluZ3N0cmF0ZWd5J1xuaW1wb3J0IHsgTGF5ZXJDb25maWcsIE1hcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9hcHAtY29uZmlnL3NyYydcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGZyb21Mb25MYXQgfSBmcm9tICdvbC9wcm9qJ1xuaW1wb3J0IFdNVFMgZnJvbSAnb2wvc291cmNlL1dNVFMnXG5pbXBvcnQgeyByZW1vdmVTZWFyY2hQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSdcbmltcG9ydCBGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBU0VMQVlFUl9DT05URVhUOiBNYXBDb250ZXh0TGF5ZXJYeXpNb2RlbCA9IHtcbiAgdHlwZTogTWFwQ29udGV4dExheWVyVHlwZUVudW0uWFlaLFxuICB1cmxzOiBbXG4gICAgYGh0dHBzOi8vYS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fS5wbmdgLFxuICAgIGBodHRwczovL2IuYmFzZW1hcHMuY2FydG9jZG4uY29tL3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9L3t4fS97eX0ucG5nYCxcbiAgICBgaHR0cHM6Ly9jLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9yYXN0ZXJ0aWxlcy92b3lhZ2VyL3t6fS97eH0ve3l9LnBuZ2AsXG4gIF0sXG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZJRVc6IE1hcENvbnRleHRWaWV3TW9kZWwgPSB7XG4gIGNlbnRlcjogWzAsIDE1XSxcbiAgem9vbTogMixcbn1cblxuZXhwb3J0IGNvbnN0IFdGU19NQVhfRkVBVFVSRVMgPSAxMDAwMFxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwQ29udGV4dFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hcFV0aWxzOiBNYXBVdGlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdHlsZVNlcnZpY2U6IE1hcFN0eWxlU2VydmljZVxuICApIHt9XG5cbiAgcmVzZXRNYXBGcm9tQ29udGV4dChcbiAgICBtYXA6IE1hcCxcbiAgICBtYXBDb250ZXh0OiBNYXBDb250ZXh0TW9kZWwsXG4gICAgbWFwQ29uZmlnPzogTWFwQ29uZmlnXG4gICk6IE1hcCB7XG4gICAgaWYgKG1hcENvbmZpZykge1xuICAgICAgbWFwQ29udGV4dCA9IHRoaXMubWVyZ2VNYXBDb25maWdXaXRoQ29udGV4dChtYXBDb250ZXh0LCBtYXBDb25maWcpXG4gICAgfSBlbHNlIHtcbiAgICAgIG1hcENvbnRleHQubGF5ZXJzID0gdGhpcy5hZGREZWZhdWx0QmFzZWxheWVyQ29udGV4dChtYXBDb250ZXh0LmxheWVycylcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIW1hcENvbnRleHQudmlldz8uZXh0ZW50ICYmXG4gICAgICAoIW1hcENvbnRleHQudmlldz8uY2VudGVyIHx8ICFtYXBDb250ZXh0LnZpZXc/Lnpvb20pXG4gICAgKSB7XG4gICAgICBtYXBDb250ZXh0LnZpZXcgPSB0aGlzLmdldEZhbGxiYWNrVmlldyhtYXBDb25maWcpXG4gICAgfVxuICAgIG1hcC5zZXRWaWV3KHRoaXMuY3JlYXRlVmlldyhtYXBDb250ZXh0LnZpZXcsIG1hcCkpXG4gICAgbWFwLmdldExheWVycygpLmNsZWFyKClcbiAgICBtYXBDb250ZXh0LmxheWVycy5mb3JFYWNoKChsYXllcikgPT4gbWFwLmFkZExheWVyKHRoaXMuY3JlYXRlTGF5ZXIobGF5ZXIpKSlcbiAgICByZXR1cm4gbWFwXG4gIH1cblxuICBjcmVhdGVMYXllcihsYXllck1vZGVsOiBNYXBDb250ZXh0TGF5ZXJNb2RlbCk6IExheWVyIHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IGxheWVyTW9kZWxcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMuc3R5bGVTZXJ2aWNlLnN0eWxlcy5kZWZhdWx0XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLlhZWjpcbiAgICAgICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFhZWih7XG4gICAgICAgICAgICB1cmw6ICd1cmwnIGluIGxheWVyTW9kZWwgPyBsYXllck1vZGVsLnVybCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVybHM6ICd1cmxzJyBpbiBsYXllck1vZGVsID8gbGF5ZXJNb2RlbC51cmxzIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5XTVM6XG4gICAgICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgICAgICBzb3VyY2U6IG5ldyBUaWxlV01TKHtcbiAgICAgICAgICAgIHVybDogcmVtb3ZlU2VhcmNoUGFyYW1zKGxheWVyTW9kZWwudXJsLCBbJ3JlcXVlc3QnLCAnc2VydmljZSddKSxcbiAgICAgICAgICAgIHBhcmFtczogeyBMQVlFUlM6IGxheWVyTW9kZWwubmFtZSB9LFxuICAgICAgICAgICAgZ3V0dGVyOiAyMCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSlcbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uV01UUzpcbiAgICAgICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFdNVFMobGF5ZXJNb2RlbC5vcHRpb25zKSxcbiAgICAgICAgfSlcbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uV0ZTOlxuICAgICAgICByZXR1cm4gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgZm9ybWF0OiBuZXcgR2VvSlNPTigpLFxuICAgICAgICAgICAgdXJsOiBmdW5jdGlvbiAoZXh0ZW50KSB7XG4gICAgICAgICAgICAgIGNvbnN0IHVybE9iaiA9IG5ldyBVUkwoXG4gICAgICAgICAgICAgICAgcmVtb3ZlU2VhcmNoUGFyYW1zKGxheWVyTW9kZWwudXJsLCBbXG4gICAgICAgICAgICAgICAgICAnc2VydmljZScsXG4gICAgICAgICAgICAgICAgICAndmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICAncmVxdWVzdCcsXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgnc2VydmljZScsICdXRlMnKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsICcxLjEuMCcpXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KCdyZXF1ZXN0JywgJ0dldEZlYXR1cmUnKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgnb3V0cHV0Rm9ybWF0JywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgndHlwZW5hbWUnLCBsYXllck1vZGVsLm5hbWUpXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KCdzcnNuYW1lJywgJ0VQU0c6Mzg1NycpXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KCdiYm94JywgYCR7ZXh0ZW50LmpvaW4oJywnKX0sRVBTRzozODU3YClcbiAgICAgICAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5zZXQoXG4gICAgICAgICAgICAgICAgJ21heEZlYXR1cmVzJyxcbiAgICAgICAgICAgICAgICBXRlNfTUFYX0ZFQVRVUkVTLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICByZXR1cm4gdXJsT2JqLnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHJhdGVneTogYmJveFN0cmF0ZWd5LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN0eWxlLFxuICAgICAgICB9KVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5HRU9KU09OOiB7XG4gICAgICAgIGlmICgndXJsJyBpbiBsYXllck1vZGVsKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgICAgIHVybDogbGF5ZXJNb2RlbC51cmwsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGdlb2pzb24gPSBsYXllck1vZGVsLmRhdGFcbiAgICAgICAgICBpZiAodHlwZW9mIGdlb2pzb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBnZW9qc29uID0gSlNPTi5wYXJzZShnZW9qc29uKVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0EgbGF5ZXIgY291bGQgbm90IGJlIGNyZWF0ZWQnLCBsYXllck1vZGVsLCBlKVxuICAgICAgICAgICAgICBnZW9qc29uID0geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMubWFwVXRpbHMucmVhZEZlYXR1cmVDb2xsZWN0aW9uKFxuICAgICAgICAgICAgZ2VvanNvbiBhcyBGZWF0dXJlQ29sbGVjdGlvblxuICAgICAgICAgICkgYXMgRmVhdHVyZTxHZW9tZXRyeT5bXVxuICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHtcbiAgICAgICAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxheWVyIHR5cGU6ICR7bGF5ZXJNb2RlbC50eXBlfWApXG4gICAgfVxuICB9XG5cbiAgY3JlYXRlVmlldyh2aWV3TW9kZWw6IE1hcENvbnRleHRWaWV3TW9kZWwsIG1hcD86IE1hcCk6IFZpZXcge1xuICAgIGNvbnN0IHsgY2VudGVyOiBjZW50ZXJJblZpZXdQcm9qLCB6b29tLCBtYXhab29tLCBtYXhFeHRlbnQgfSA9IHZpZXdNb2RlbFxuICAgIGNvbnN0IGNlbnRlciA9IGNlbnRlckluVmlld1Byb2pcbiAgICAgID8gZnJvbUxvbkxhdChjZW50ZXJJblZpZXdQcm9qLCAnRVBTRzozODU3JylcbiAgICAgIDogWzAsIDBdXG4gICAgY29uc3QgdmlldyA9IG5ldyBWaWV3KHtcbiAgICAgIGNlbnRlcixcbiAgICAgIHpvb20sXG4gICAgICBtYXhab29tLFxuICAgICAgZXh0ZW50OiBtYXhFeHRlbnQsXG4gICAgICBtdWx0aVdvcmxkOiBmYWxzZSxcbiAgICAgIGNvbnN0cmFpblJlc29sdXRpb246IHRydWUsXG4gICAgfSlcbiAgICBpZiAodmlld01vZGVsLmV4dGVudCAmJiBtYXApIHtcbiAgICAgIHZpZXcuZml0KHZpZXdNb2RlbC5leHRlbnQsIHtcbiAgICAgICAgc2l6ZTogbWFwLmdldFNpemUoKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB2aWV3XG4gIH1cblxuICBhZGREZWZhdWx0QmFzZWxheWVyQ29udGV4dChcbiAgICBsYXllcnM6IE1hcENvbnRleHRMYXllck1vZGVsW11cbiAgKTogTWFwQ29udGV4dExheWVyTW9kZWxbXSB7XG4gICAgcmV0dXJuIGxheWVycy5pbmNsdWRlcyhERUZBVUxUX0JBU0VMQVlFUl9DT05URVhUKVxuICAgICAgPyBsYXllcnNcbiAgICAgIDogW0RFRkFVTFRfQkFTRUxBWUVSX0NPTlRFWFQsIC4uLmxheWVyc11cbiAgfVxuXG4gIG1lcmdlTWFwQ29uZmlnV2l0aENvbnRleHQoXG4gICAgbWFwQ29udGV4dDogTWFwQ29udGV4dE1vZGVsLFxuICAgIG1hcENvbmZpZzogTWFwQ29uZmlnXG4gICk6IE1hcENvbnRleHRNb2RlbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1hcENvbnRleHQsXG4gICAgICB2aWV3OiB7XG4gICAgICAgIC4uLm1hcENvbnRleHQudmlldyxcbiAgICAgICAgLi4uKG1hcENvbmZpZy5NQVhfWk9PTSAmJiB7XG4gICAgICAgICAgbWF4Wm9vbTogbWFwQ29uZmlnLk1BWF9aT09NLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKG1hcENvbmZpZy5NQVhfRVhURU5UICYmIHtcbiAgICAgICAgICBtYXhFeHRlbnQ6IG1hcENvbmZpZy5NQVhfRVhURU5ULFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICBsYXllcnM6IFtcbiAgICAgICAgLi4uKG1hcENvbmZpZy5ET19OT1RfVVNFX0RFRkFVTFRfQkFTRU1BUFxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IFtERUZBVUxUX0JBU0VMQVlFUl9DT05URVhUXSksXG4gICAgICAgIC4uLm1hcENvbmZpZy5NQVBfTEFZRVJTLm1hcCh0aGlzLmdldENvbnRleHRMYXllckZyb21Db25maWcpLFxuICAgICAgICAuLi5tYXBDb250ZXh0LmxheWVycyxcbiAgICAgIF0sXG4gICAgfVxuICB9XG5cbiAgZ2V0RmFsbGJhY2tWaWV3KG1hcENvbmZpZzogTWFwQ29uZmlnKTogTWFwQ29udGV4dFZpZXdNb2RlbCB7XG4gICAgcmV0dXJuIG1hcENvbmZpZz8uTUFYX0VYVEVOVFxuICAgICAgPyB7IGV4dGVudDogbWFwQ29uZmlnLk1BWF9FWFRFTlQgfVxuICAgICAgOiBERUZBVUxUX1ZJRVdcbiAgfVxuXG4gIGdldENvbnRleHRMYXllckZyb21Db25maWcoY29uZmlnOiBMYXllckNvbmZpZyk6IE1hcENvbnRleHRMYXllck1vZGVsIHtcbiAgICBzd2l0Y2ggKGNvbmZpZy5UWVBFKSB7XG4gICAgICBjYXNlICd3bXMnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICd3bXMnLFxuICAgICAgICAgIHVybDogY29uZmlnLlVSTCxcbiAgICAgICAgICBuYW1lOiBjb25maWcuTkFNRSxcbiAgICAgICAgfVxuICAgICAgY2FzZSAnd2ZzJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAnd2ZzJyxcbiAgICAgICAgICB1cmw6IGNvbmZpZy5VUkwsXG4gICAgICAgICAgbmFtZTogY29uZmlnLk5BTUUsXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ3h5eic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogY29uZmlnLlRZUEUsXG4gICAgICAgICAgdXJsOiBjb25maWcuVVJMLFxuICAgICAgICAgIG5hbWU6IGNvbmZpZy5OQU1FLFxuICAgICAgICB9XG4gICAgICBjYXNlICdnZW9qc29uJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBjb25maWcuVFlQRSxcbiAgICAgICAgICAuLi4oY29uZmlnLkRBVEEgPyB7IGRhdGE6IGNvbmZpZy5EQVRBIH0gOiB7IHVybDogY29uZmlnLlVSTCB9KSxcbiAgICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzVELE9BQU8sRUFFTCx1QkFBdUIsR0FJeEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUU1QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFFMUIsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFBO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQTtBQUMvQixPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQTtBQUMzQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDNUQsT0FBTyxFQUFFLElBQUksSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBR2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDbEUsT0FBTyxhQUFhLE1BQU0sNEJBQTRCLENBQUE7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMvQixPQUFPLGVBQWUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNqRCxPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQTtB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TUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7aUJBQy9ELENBQUE7U0FDSjtJQUNILENBQUM7OEdBdFFVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hcFN0eWxlU2VydmljZSB9IGZyb20gJy4uL3N0eWxlL21hcC1zdHlsZS5zZXJ2aWNlJ1xuaW1wb3J0IHtcbiAgTWFwQ29udGV4dExheWVyTW9kZWwsXG4gIE1hcENvbnRleHRMYXllclR5cGVFbnVtLFxuICBNYXBDb250ZXh0TGF5ZXJYeXpNb2RlbCxcbiAgTWFwQ29udGV4dE1vZGVsLFxuICBNYXBDb250ZXh0Vmlld01vZGVsLFxufSBmcm9tICcuL21hcC1jb250ZXh0Lm1vZGVsJ1xuaW1wb3J0IE1hcCBmcm9tICdvbC9NYXAnXG5pbXBvcnQgVmlldyBmcm9tICdvbC9WaWV3J1xuaW1wb3J0IExheWVyIGZyb20gJ29sL2xheWVyL0Jhc2UnXG5pbXBvcnQgVmVjdG9yTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJ1xuaW1wb3J0IFRpbGVXTVMgZnJvbSAnb2wvc291cmNlL1RpbGVXTVMnXG5pbXBvcnQgVGlsZUxheWVyIGZyb20gJ29sL2xheWVyL1RpbGUnXG5pbXBvcnQgWFlaIGZyb20gJ29sL3NvdXJjZS9YWVonXG5pbXBvcnQgVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTidcbmltcG9ydCB7IE1hcFV0aWxzU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL21hcC11dGlscy5zZXJ2aWNlJ1xuaW1wb3J0IHsgYmJveCBhcyBiYm94U3RyYXRlZ3kgfSBmcm9tICdvbC9sb2FkaW5nc3RyYXRlZ3knXG5pbXBvcnQgeyBMYXllckNvbmZpZywgTWFwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2FwcC1jb25maWcvc3JjJ1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICdnZW9qc29uJ1xuaW1wb3J0IHsgZnJvbUxvbkxhdCB9IGZyb20gJ29sL3Byb2onXG5pbXBvcnQgV01UUyBmcm9tICdvbC9zb3VyY2UvV01UUydcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSdcbmltcG9ydCBGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnXG5pbXBvcnQgeyBXZnNFbmRwb2ludCwgV210c0VuZHBvaW50IH0gZnJvbSAnQGNhbXB0b2NhbXAvb2djLWNsaWVudCdcbmltcG9ydCBPR0NWZWN0b3JUaWxlIGZyb20gJ29sL3NvdXJjZS9PR0NWZWN0b3JUaWxlLmpzJ1xuaW1wb3J0IHsgTVZUIH0gZnJvbSAnb2wvZm9ybWF0J1xuaW1wb3J0IFZlY3RvclRpbGVMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3JUaWxlJ1xuaW1wb3J0IE9HQ01hcFRpbGUgZnJvbSAnb2wvc291cmNlL09HQ01hcFRpbGUuanMnXG5pbXBvcnQgSW1hZ2VMYXllciBmcm9tICdvbC9sYXllci9JbWFnZSdcbmltcG9ydCBJbWFnZVdNUyBmcm9tICdvbC9zb3VyY2UvSW1hZ2VXTVMnXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBU0VMQVlFUl9DT05URVhUOiBNYXBDb250ZXh0TGF5ZXJYeXpNb2RlbCA9IHtcbiAgdHlwZTogTWFwQ29udGV4dExheWVyVHlwZUVudW0uWFlaLFxuICB1cmxzOiBbXG4gICAgYGh0dHBzOi8vYS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fS5wbmdgLFxuICAgIGBodHRwczovL2IuYmFzZW1hcHMuY2FydG9jZG4uY29tL3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9L3t4fS97eX0ucG5nYCxcbiAgICBgaHR0cHM6Ly9jLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9yYXN0ZXJ0aWxlcy92b3lhZ2VyL3t6fS97eH0ve3l9LnBuZ2AsXG4gIF0sXG4gIGF0dHJpYnV0aW9uczogYDxzcGFuPsKpIDxhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiPk9wZW5TdHJlZXRNYXA8L2E+IGNvbnRyaWJ1dG9ycywgwqkgPGEgaHJlZj1cImh0dHBzOi8vY2FydG8uY29tL1wiPkNhcnRvPC9hPjwvc3Bhbj5gLFxufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9WSUVXOiBNYXBDb250ZXh0Vmlld01vZGVsID0ge1xuICBjZW50ZXI6IFswLCAxNV0sXG4gIHpvb206IDIsXG59XG5cbmV4cG9ydCBjb25zdCBXRlNfTUFYX0ZFQVRVUkVTID0gMTAwMDBcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcENvbnRleHRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXBVdGlsczogTWFwVXRpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3R5bGVTZXJ2aWNlOiBNYXBTdHlsZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHJlc2V0TWFwRnJvbUNvbnRleHQoXG4gICAgbWFwOiBNYXAsXG4gICAgbWFwQ29udGV4dDogTWFwQ29udGV4dE1vZGVsLFxuICAgIG1hcENvbmZpZz86IE1hcENvbmZpZ1xuICApOiBNYXAge1xuICAgIGlmIChtYXBDb25maWcpIHtcbiAgICAgIG1hcENvbnRleHQgPSB0aGlzLm1lcmdlTWFwQ29uZmlnV2l0aENvbnRleHQobWFwQ29udGV4dCwgbWFwQ29uZmlnKVxuICAgIH0gZWxzZSB7XG4gICAgICBtYXBDb250ZXh0LmxheWVycyA9IHRoaXMuYWRkRGVmYXVsdEJhc2VsYXllckNvbnRleHQobWFwQ29udGV4dC5sYXllcnMpXG4gICAgfVxuICAgIGlmIChcbiAgICAgICFtYXBDb250ZXh0LnZpZXc/LmV4dGVudCAmJlxuICAgICAgKCFtYXBDb250ZXh0LnZpZXc/LmNlbnRlciB8fCAhbWFwQ29udGV4dC52aWV3Py56b29tKVxuICAgICkge1xuICAgICAgbWFwQ29udGV4dC52aWV3ID0gdGhpcy5nZXRGYWxsYmFja1ZpZXcobWFwQ29uZmlnKVxuICAgIH1cbiAgICBtYXAuc2V0Vmlldyh0aGlzLmNyZWF0ZVZpZXcobWFwQ29udGV4dC52aWV3LCBtYXApKVxuICAgIG1hcC5nZXRMYXllcnMoKS5jbGVhcigpXG4gICAgbWFwQ29udGV4dC5sYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+XG4gICAgICBtYXAuYWRkTGF5ZXIodGhpcy5jcmVhdGVMYXllcihsYXllciwgbWFwQ29uZmlnKSlcbiAgICApXG4gICAgcmV0dXJuIG1hcFxuICB9XG5cbiAgY3JlYXRlTGF5ZXIobGF5ZXJNb2RlbDogTWFwQ29udGV4dExheWVyTW9kZWwsIG1hcENvbmZpZz86IE1hcENvbmZpZyk6IExheWVyIHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IGxheWVyTW9kZWxcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMuc3R5bGVTZXJ2aWNlLnN0eWxlcy5kZWZhdWx0XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLk9HQ0FQSTpcbiAgICAgICAgaWYgKGxheWVyTW9kZWwubGF5ZXJUeXBlID09PSAndmVjdG9yVGlsZXMnKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JUaWxlTGF5ZXIoe1xuICAgICAgICAgICAgc291cmNlOiBuZXcgT0dDVmVjdG9yVGlsZSh7XG4gICAgICAgICAgICAgIHVybDogbGF5ZXJNb2RlbC51cmwsXG4gICAgICAgICAgICAgIGZvcm1hdDogbmV3IE1WVCgpLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGlvbnM6IGxheWVyTW9kZWwuYXR0cmlidXRpb25zLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIGlmIChsYXllck1vZGVsLmxheWVyVHlwZSA9PT0gJ21hcFRpbGVzJykge1xuICAgICAgICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgICAgICAgIHNvdXJjZTogbmV3IE9HQ01hcFRpbGUoe1xuICAgICAgICAgICAgICB1cmw6IGxheWVyTW9kZWwudXJsLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGlvbnM6IGxheWVyTW9kZWwuYXR0cmlidXRpb25zLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgICAgICAgIGZvcm1hdDogbmV3IEdlb0pTT04oKSxcbiAgICAgICAgICAgICAgdXJsOiBsYXllck1vZGVsLnVybCxcbiAgICAgICAgICAgICAgYXR0cmlidXRpb25zOiBsYXllck1vZGVsLmF0dHJpYnV0aW9ucyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5YWVo6XG4gICAgICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgICAgICBzb3VyY2U6IG5ldyBYWVooe1xuICAgICAgICAgICAgdXJsOiAndXJsJyBpbiBsYXllck1vZGVsID8gbGF5ZXJNb2RlbC51cmwgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB1cmxzOiAndXJscycgaW4gbGF5ZXJNb2RlbCA/IGxheWVyTW9kZWwudXJscyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGF0dHJpYnV0aW9uczogbGF5ZXJNb2RlbC5hdHRyaWJ1dGlvbnMsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLldNUzpcbiAgICAgICAgaWYgKG1hcENvbmZpZz8uRE9fTk9UX1RJTEVfV01TKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBJbWFnZUxheWVyKHtcbiAgICAgICAgICAgIHNvdXJjZTogbmV3IEltYWdlV01TKHtcbiAgICAgICAgICAgICAgdXJsOiBsYXllck1vZGVsLnVybCxcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IExBWUVSUzogbGF5ZXJNb2RlbC5uYW1lIH0sXG4gICAgICAgICAgICAgIGF0dHJpYnV0aW9uczogbGF5ZXJNb2RlbC5hdHRyaWJ1dGlvbnMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgICAgICAgIHNvdXJjZTogbmV3IFRpbGVXTVMoe1xuICAgICAgICAgICAgICB1cmw6IGxheWVyTW9kZWwudXJsLFxuICAgICAgICAgICAgICBwYXJhbXM6IHsgTEFZRVJTOiBsYXllck1vZGVsLm5hbWUsIFRJTEVEOiB0cnVlIH0sXG4gICAgICAgICAgICAgIGF0dHJpYnV0aW9uczogbGF5ZXJNb2RlbC5hdHRyaWJ1dGlvbnMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uV01UUzoge1xuICAgICAgICAvLyBUT0RPOiBpc29sYXRlIHRoaXMgaW4gdXRpbHMgc2VydmljZVxuICAgICAgICBjb25zdCBvbExheWVyID0gbmV3IFRpbGVMYXllcih7fSlcbiAgICAgICAgY29uc3QgZW5kcG9pbnQgPSBuZXcgV210c0VuZHBvaW50KGxheWVyTW9kZWwudXJsKVxuICAgICAgICBlbmRwb2ludC5pc1JlYWR5KCkudGhlbihhc3luYyAoZW5kcG9pbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBsYXllck5hbWUgPSBlbmRwb2ludC5nZXRTaW5nbGVMYXllck5hbWUoKSA/PyBsYXllck1vZGVsLm5hbWVcbiAgICAgICAgICBjb25zdCBsYXllciA9IGVuZHBvaW50LmdldExheWVyQnlOYW1lKGxheWVyTmFtZSlcbiAgICAgICAgICBjb25zdCBtYXRyaXhTZXQgPSBsYXllci5tYXRyaXhTZXRzWzBdXG4gICAgICAgICAgY29uc3QgdGlsZUdyaWQgPSBhd2FpdCBlbmRwb2ludC5nZXRPcGVuTGF5ZXJzVGlsZUdyaWQobGF5ZXIubmFtZSlcbiAgICAgICAgICBjb25zdCByZXNvdXJjZVVybCA9IGxheWVyLnJlc291cmNlTGlua3NbMF1cbiAgICAgICAgICBjb25zdCBkaW1lbnNpb25zID0gZW5kcG9pbnQuZ2V0RGVmYXVsdERpbWVuc2lvbnMobGF5ZXIubmFtZSlcbiAgICAgICAgICBvbExheWVyLnNldFNvdXJjZShcbiAgICAgICAgICAgIG5ldyBXTVRTKHtcbiAgICAgICAgICAgICAgbGF5ZXI6IGxheWVyLm5hbWUsXG4gICAgICAgICAgICAgIHN0eWxlOiBsYXllci5kZWZhdWx0U3R5bGUsXG4gICAgICAgICAgICAgIG1hdHJpeFNldDogbWF0cml4U2V0LmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgIGZvcm1hdDogcmVzb3VyY2VVcmwuZm9ybWF0LFxuICAgICAgICAgICAgICB1cmw6IHJlc291cmNlVXJsLnVybCxcbiAgICAgICAgICAgICAgcmVxdWVzdEVuY29kaW5nOiByZXNvdXJjZVVybC5lbmNvZGluZyxcbiAgICAgICAgICAgICAgdGlsZUdyaWQsXG4gICAgICAgICAgICAgIHByb2plY3Rpb246IG1hdHJpeFNldC5jcnMsXG4gICAgICAgICAgICAgIGRpbWVuc2lvbnMsXG4gICAgICAgICAgICAgIGF0dHJpYnV0aW9uczogbGF5ZXJNb2RlbC5hdHRyaWJ1dGlvbnMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG9sTGF5ZXJcbiAgICAgIH1cbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uV0ZTOiB7XG4gICAgICAgIGNvbnN0IG9sTGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgIHN0eWxlLFxuICAgICAgICB9KVxuICAgICAgICBuZXcgV2ZzRW5kcG9pbnQobGF5ZXJNb2RlbC51cmwpLmlzUmVhZHkoKS50aGVuKChlbmRwb2ludCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZlYXR1cmVUeXBlID1cbiAgICAgICAgICAgIGVuZHBvaW50LmdldFNpbmdsZUZlYXR1cmVUeXBlTmFtZSgpID8/IGxheWVyTW9kZWwubmFtZVxuICAgICAgICAgIG9sTGF5ZXIuc2V0U291cmNlKFxuICAgICAgICAgICAgbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgICAgICAgIGZvcm1hdDogbmV3IEdlb0pTT04oKSxcbiAgICAgICAgICAgICAgdXJsOiBmdW5jdGlvbiAoZXh0ZW50OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbmRwb2ludC5nZXRGZWF0dXJlVXJsKGZlYXR1cmVUeXBlLCB7XG4gICAgICAgICAgICAgICAgICBtYXhGZWF0dXJlczogV0ZTX01BWF9GRUFUVVJFUyxcbiAgICAgICAgICAgICAgICAgIGFzSnNvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIG91dHB1dENyczogJ0VQU0c6Mzg1NycsXG4gICAgICAgICAgICAgICAgICBleHRlbnQsXG4gICAgICAgICAgICAgICAgICBleHRlbnRDcnM6ICdFUFNHOjM4NTcnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHN0cmF0ZWd5OiBiYm94U3RyYXRlZ3ksXG4gICAgICAgICAgICAgIGF0dHJpYnV0aW9uczogbGF5ZXJNb2RlbC5hdHRyaWJ1dGlvbnMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG9sTGF5ZXJcbiAgICAgIH1cbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uR0VPSlNPTjoge1xuICAgICAgICBpZiAoJ3VybCcgaW4gbGF5ZXJNb2RlbCkge1xuICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHtcbiAgICAgICAgICAgICAgZm9ybWF0OiBuZXcgR2VvSlNPTigpLFxuICAgICAgICAgICAgICB1cmw6IGxheWVyTW9kZWwudXJsLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBnZW9qc29uID0gbGF5ZXJNb2RlbC5kYXRhXG4gICAgICAgICAgaWYgKHR5cGVvZiBnZW9qc29uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgZ2VvanNvbiA9IEpTT04ucGFyc2UoZ2VvanNvbilcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdBIGxheWVyIGNvdWxkIG5vdCBiZSBjcmVhdGVkJywgbGF5ZXJNb2RlbCwgZSlcbiAgICAgICAgICAgICAgZ2VvanNvbiA9IHsgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJywgZmVhdHVyZXM6IFtdIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLm1hcFV0aWxzLnJlYWRGZWF0dXJlQ29sbGVjdGlvbihcbiAgICAgICAgICAgIGdlb2pzb24gYXMgRmVhdHVyZUNvbGxlY3Rpb25cbiAgICAgICAgICApIGFzIEZlYXR1cmU8R2VvbWV0cnk+W11cbiAgICAgICAgICByZXR1cm4gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgICAgICAgIGZlYXR1cmVzLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsYXllciB0eXBlOiAke2xheWVyTW9kZWwudHlwZX1gKVxuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZVZpZXcodmlld01vZGVsOiBNYXBDb250ZXh0Vmlld01vZGVsLCBtYXA/OiBNYXApOiBWaWV3IHtcbiAgICBjb25zdCB7IGNlbnRlcjogY2VudGVySW5WaWV3UHJvaiwgem9vbSwgbWF4Wm9vbSwgbWF4RXh0ZW50IH0gPSB2aWV3TW9kZWxcbiAgICBjb25zdCBjZW50ZXIgPSBjZW50ZXJJblZpZXdQcm9qXG4gICAgICA/IGZyb21Mb25MYXQoY2VudGVySW5WaWV3UHJvaiwgJ0VQU0c6Mzg1NycpXG4gICAgICA6IFswLCAwXVxuICAgIGNvbnN0IHZpZXcgPSBuZXcgVmlldyh7XG4gICAgICBjZW50ZXIsXG4gICAgICB6b29tLFxuICAgICAgbWF4Wm9vbSxcbiAgICAgIGV4dGVudDogbWF4RXh0ZW50LFxuICAgICAgbXVsdGlXb3JsZDogZmFsc2UsXG4gICAgICBjb25zdHJhaW5SZXNvbHV0aW9uOiB0cnVlLFxuICAgIH0pXG4gICAgaWYgKHZpZXdNb2RlbC5leHRlbnQgJiYgbWFwKSB7XG4gICAgICB2aWV3LmZpdCh2aWV3TW9kZWwuZXh0ZW50LCB7XG4gICAgICAgIHNpemU6IG1hcC5nZXRTaXplKCksXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gdmlld1xuICB9XG5cbiAgYWRkRGVmYXVsdEJhc2VsYXllckNvbnRleHQoXG4gICAgbGF5ZXJzOiBNYXBDb250ZXh0TGF5ZXJNb2RlbFtdXG4gICk6IE1hcENvbnRleHRMYXllck1vZGVsW10ge1xuICAgIHJldHVybiBsYXllcnMuaW5jbHVkZXMoREVGQVVMVF9CQVNFTEFZRVJfQ09OVEVYVClcbiAgICAgID8gbGF5ZXJzXG4gICAgICA6IFtERUZBVUxUX0JBU0VMQVlFUl9DT05URVhULCAuLi5sYXllcnNdXG4gIH1cblxuICBtZXJnZU1hcENvbmZpZ1dpdGhDb250ZXh0KFxuICAgIG1hcENvbnRleHQ6IE1hcENvbnRleHRNb2RlbCxcbiAgICBtYXBDb25maWc6IE1hcENvbmZpZ1xuICApOiBNYXBDb250ZXh0TW9kZWwge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXBDb250ZXh0LFxuICAgICAgdmlldzoge1xuICAgICAgICAuLi5tYXBDb250ZXh0LnZpZXcsXG4gICAgICAgIC4uLihtYXBDb25maWcuTUFYX1pPT00gJiYge1xuICAgICAgICAgIG1heFpvb206IG1hcENvbmZpZy5NQVhfWk9PTSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihtYXBDb25maWcuTUFYX0VYVEVOVCAmJiB7XG4gICAgICAgICAgbWF4RXh0ZW50OiBtYXBDb25maWcuTUFYX0VYVEVOVCxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgbGF5ZXJzOiBbXG4gICAgICAgIC4uLihtYXBDb25maWcuRE9fTk9UX1VTRV9ERUZBVUxUX0JBU0VNQVBcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiBbREVGQVVMVF9CQVNFTEFZRVJfQ09OVEVYVF0pLFxuICAgICAgICAuLi5tYXBDb25maWcuTUFQX0xBWUVSUy5tYXAodGhpcy5nZXRDb250ZXh0TGF5ZXJGcm9tQ29uZmlnKSxcbiAgICAgICAgLi4ubWFwQ29udGV4dC5sYXllcnMsXG4gICAgICBdLFxuICAgIH1cbiAgfVxuXG4gIGdldEZhbGxiYWNrVmlldyhtYXBDb25maWc6IE1hcENvbmZpZyk6IE1hcENvbnRleHRWaWV3TW9kZWwge1xuICAgIHJldHVybiBtYXBDb25maWc/Lk1BWF9FWFRFTlRcbiAgICAgID8geyBleHRlbnQ6IG1hcENvbmZpZy5NQVhfRVhURU5UIH1cbiAgICAgIDogREVGQVVMVF9WSUVXXG4gIH1cblxuICBnZXRDb250ZXh0TGF5ZXJGcm9tQ29uZmlnKGNvbmZpZzogTGF5ZXJDb25maWcpOiBNYXBDb250ZXh0TGF5ZXJNb2RlbCB7XG4gICAgc3dpdGNoIChjb25maWcuVFlQRSkge1xuICAgICAgY2FzZSAnd21zJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAnd21zJyxcbiAgICAgICAgICB1cmw6IGNvbmZpZy5VUkwsXG4gICAgICAgICAgbmFtZTogY29uZmlnLk5BTUUsXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ3dmcyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3dmcycsXG4gICAgICAgICAgdXJsOiBjb25maWcuVVJMLFxuICAgICAgICAgIG5hbWU6IGNvbmZpZy5OQU1FLFxuICAgICAgICB9XG4gICAgICBjYXNlICd4eXonOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IGNvbmZpZy5UWVBFLFxuICAgICAgICAgIHVybDogY29uZmlnLlVSTCxcbiAgICAgICAgICBuYW1lOiBjb25maWcuTkFNRSxcbiAgICAgICAgfVxuICAgICAgY2FzZSAnZ2VvanNvbic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogY29uZmlnLlRZUEUsXG4gICAgICAgICAgLi4uKGNvbmZpZy5EQVRBID8geyBkYXRhOiBjb25maWcuREFUQSB9IDogeyB1cmw6IGNvbmZpZy5VUkwgfSksXG4gICAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -7,18 +7,15 @@ import { transformExtent } from 'ol/proj';
7
7
  import ImageWMS from 'ol/source/ImageWMS';
8
8
  import TileWMS from 'ol/source/TileWMS';
9
9
  import VectorSource from 'ol/source/Vector';
10
- import { optionsFromCapabilities } from 'ol/source/WMTS';
11
10
  import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
12
11
  import { mouseOnly, noModifierKeys, platformModifierKeyOnly, primaryAction, } from 'ol/events/condition';
13
- import WMTSCapabilities from 'ol/format/WMTSCapabilities';
14
- import { from } from 'rxjs';
15
12
  import { map } from 'rxjs/operators';
16
- import { MapContextLayerTypeEnum, } from '../map-context/map-context.model';
17
13
  import { ProxyService } from '../../../../../../libs/util/shared/src';
18
- import { WmsEndpoint } from '@camptocamp/ogc-client';
14
+ import { WmsEndpoint, WmtsEndpoint } from '@camptocamp/ogc-client';
19
15
  import { LONLAT_CRS_CODES } from '../constant/projections';
20
16
  import { fromEPSGCode, register } from 'ol/proj/proj4';
21
17
  import proj4 from 'proj4/dist/proj4';
18
+ import { defaults as defaultControls } from 'ol/control/defaults';
22
19
  import * as i0 from "@angular/core";
23
20
  import * as i1 from "@angular/common/http";
24
21
  import * as i2 from "../../../../../../libs/util/shared/src";
@@ -38,7 +35,10 @@ export class MapUtilsService {
38
35
  }
39
36
  createEmptyMap() {
40
37
  return new Map({
41
- controls: [],
38
+ controls: defaultControls({
39
+ attribution: true,
40
+ attributionOptions: { collapsible: false },
41
+ }),
42
42
  pixelRatio: 1,
43
43
  });
44
44
  }
@@ -101,12 +101,14 @@ export class MapUtilsService {
101
101
  latLonExtent = await this.getWmsLayerExtent(layer);
102
102
  }
103
103
  else if (layer && layer.type === 'wmts') {
104
- if (layer.extent) {
105
- latLonExtent = layer.extent;
106
- }
107
- else {
108
- return layer.options.tileGrid.getExtent();
109
- }
104
+ // TODO: isolate this in utils service
105
+ latLonExtent = await new WmtsEndpoint(layer.url)
106
+ .isReady()
107
+ .then((endpoint) => {
108
+ const layerName = endpoint.getSingleLayerName() ?? layer.name;
109
+ const wmtsLayer = endpoint.getLayerByName(layerName);
110
+ return wmtsLayer.latLonBoundingBox;
111
+ });
110
112
  }
111
113
  else {
112
114
  return null;
@@ -124,50 +126,15 @@ export class MapUtilsService {
124
126
  }
125
127
  const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
126
128
  if (lonLatCRS) {
127
- return boundingBoxes[lonLatCRS].map(parseFloat);
129
+ return boundingBoxes[lonLatCRS];
128
130
  }
129
131
  else {
130
132
  const availableEPSGCode = Object.keys(boundingBoxes)[0];
131
133
  register(proj4);
132
134
  const proj = await fromEPSGCode(availableEPSGCode);
133
- const bboxWithFiniteNumbers = boundingBoxes[availableEPSGCode].map(parseFloat);
134
- return transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
135
+ return transformExtent(boundingBoxes[availableEPSGCode], proj, 'EPSG:4326');
135
136
  }
136
137
  }
137
- getWmtsLayerFromCapabilities(link) {
138
- const getCapabilitiesUrl = new URL(link.url, window.location.toString());
139
- getCapabilitiesUrl.searchParams.set('SERVICE', 'WMTS');
140
- getCapabilitiesUrl.searchParams.set('REQUEST', 'GetCapabilities');
141
- return from(fetch(getCapabilitiesUrl.toString())
142
- .then(async function (response) {
143
- if (!response.ok) {
144
- throw new Error(`WMTS GetCapabilities HTTP request failed with code ${response.status} and body:
145
- ${await response.text()}`);
146
- }
147
- return response.text();
148
- })
149
- .then(function (text) {
150
- try {
151
- const result = new WMTSCapabilities().read(text);
152
- const options = optionsFromCapabilities(result, {
153
- layer: link.name,
154
- matrixSet: 'EPSG:3857',
155
- });
156
- const layerCap = result?.Contents?.Layer.find((layer) => layer.Identifier === link.name);
157
- return {
158
- options,
159
- type: MapContextLayerTypeEnum.WMTS,
160
- ...(layerCap?.WGS84BoundingBox
161
- ? { extent: layerCap.WGS84BoundingBox }
162
- : {}),
163
- };
164
- }
165
- catch (e) {
166
- throw new Error(`WMTS GetCapabilities parsing failed:
167
- ${e.stack || e.message || e}`);
168
- }
169
- }));
170
- }
171
138
  prioritizePageScroll(interactions) {
172
139
  interactions.clear();
173
140
  interactions.extend(defaults({
@@ -189,7 +156,7 @@ ${e.stack || e.message || e}`);
189
156
  .getArray());
190
157
  }
191
158
  getRecordExtent(record) {
192
- if (!('spatialExtents' in record)) {
159
+ if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
193
160
  return null;
194
161
  }
195
162
  // transform an array of geojson geometries into a bbox
@@ -222,4 +189,4 @@ export function mouseWheelZoomCondition(event) {
222
189
  }
223
190
  return platformModifierKeyOnly(event);
224
191
  }
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXV0aWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvdXRpbHMvbWFwLXV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLE1BQU0sRUFBVSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFbkQsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFHdkMsT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFekMsT0FBTyxRQUFRLE1BQU0sb0JBQW9CLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUE7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQWUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0UsT0FBTyxFQUNMLFNBQVMsRUFDVCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGFBQWEsR0FDZCxNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sZ0JBQWdCLE1BQU0sNEJBQTRCLENBQUE7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEMsT0FBTyxFQUVMLHVCQUF1QixHQUd4QixNQUFNLGtDQUFrQyxDQUFBO0FBT3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FB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QUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQWdPRCxNQUFNLFVBQVUsZ0JBQWdCLENBRTlCLEtBQW9DO0lBRXBDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekUsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUE7S0FDeEM7SUFDRCw0REFBNEQ7SUFDNUQsT0FBTyxnQkFBZ0IsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzFFLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBRXJDLEtBQStCO0lBRS9CLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtRQUM3RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0tBQ3hDO0lBQ0QsT0FBTyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGV4dGVuZCwgRXh0ZW50LCBpc0VtcHR5IH0gZnJvbSAnb2wvZXh0ZW50J1xuaW1wb3J0IEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSdcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJ1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tJ1xuaW1wb3J0IExheWVyIGZyb20gJ29sL2xheWVyL0xheWVyJ1xuaW1wb3J0IE1hcCBmcm9tICdvbC9NYXAnXG5pbXBvcnQgeyB0cmFuc2Zvcm1FeHRlbnQgfSBmcm9tICdvbC9wcm9qJ1xuaW1wb3J0IFNvdXJjZSBmcm9tICdvbC9zb3VyY2UvU291cmNlJ1xuaW1wb3J0IEltYWdlV01TIGZyb20gJ29sL3NvdXJjZS9JbWFnZVdNUydcbmltcG9ydCBUaWxlV01TIGZyb20gJ29sL3NvdXJjZS9UaWxlV01TJ1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJ1xuaW1wb3J0IHsgb3B0aW9uc0Zyb21DYXBhYmlsaXRpZXMgfSBmcm9tICdvbC9zb3VyY2UvV01UUydcbmltcG9ydCB7IGRlZmF1bHRzLCBEcmFnUGFuLCBJbnRlcmFjdGlvbiwgTW91c2VXaGVlbFpvb20gfSBmcm9tICdvbC9pbnRlcmFjdGlvbidcbmltcG9ydCB7XG4gIG1vdXNlT25seSxcbiAgbm9Nb2RpZmllcktleXMsXG4gIHBsYXRmb3JtTW9kaWZpZXJLZXlPbmx5LFxuICBwcmltYXJ5QWN0aW9uLFxufSBmcm9tICdvbC9ldmVudHMvY29uZGl0aW9uJ1xuaW1wb3J0IFdNVFNDYXBhYmlsaXRpZXMgZnJvbSAnb2wvZm9ybWF0L1dNVFNDYXBhYmlsaXRpZXMnXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgTWFwQ29udGV4dExheWVyTW9kZWwsXG4gIE1hcENvbnRleHRMYXllclR5cGVFbnVtLFxuICBNYXBDb250ZXh0TGF5ZXJXbXNNb2RlbCxcbiAgTWFwQ29udGV4dExheWVyV210c01vZGVsLFxufSBmcm9tICcuLi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5tb2RlbCdcbmltcG9ydCBDb2xsZWN0aW9uIGZyb20gJ29sL0NvbGxlY3Rpb24nXG5pbXBvcnQgTWFwQnJvd3NlckV2ZW50IGZyb20gJ29sL01hcEJyb3dzZXJFdmVudCdcbmltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIERhdGFzZXREaXN0cmlidXRpb24sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFByb3h5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHsgV21zRW5kcG9pbnQgfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHsgTE9OTEFUX0NSU19DT0RFUyB9IGZyb20gJy4uL2NvbnN0YW50L3Byb2plY3Rpb25zJ1xuaW1wb3J0IHsgZnJvbUVQU0dDb2RlLCByZWdpc3RlciB9IGZyb20gJ29sL3Byb2ovcHJvajQnXG5pbXBvcnQgcHJvajQgZnJvbSAncHJvajQvZGlzdC9wcm9qNCdcblxuY29uc3QgRkVBVFVSRV9QUk9KRUNUSU9OID0gJ0VQU0c6Mzg1NydcbmNvbnN0IERBVEFfUFJPSkVDVElPTiA9ICdFUFNHOjQzMjYnXG5cbmNvbnN0IEdFT0pTT04gPSBuZXcgR2VvSlNPTigpXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBVdGlsc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgcHJveHk6IFByb3h5U2VydmljZSkge31cblxuICBjcmVhdGVFbXB0eU1hcCgpOiBNYXAge1xuICAgIHJldHVybiBuZXcgTWFwKHtcbiAgICAgIGNvbnRyb2xzOiBbXSxcbiAgICAgIHBpeGVsUmF0aW86IDEsXG4gICAgfSlcbiAgfVxuXG4gIHJlYWRGZWF0dXJlQ29sbGVjdGlvbiA9IChcbiAgICBmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgZmVhdHVyZVByb2plY3Rpb24gPSBGRUFUVVJFX1BST0pFQ1RJT04sXG4gICAgZGF0YVByb2plY3Rpb24gPSBEQVRBX1BST0pFQ1RJT05cbiAgKTogRmVhdHVyZTxHZW9tZXRyeT5bXSA9PiB7XG4gICAgcmV0dXJuIEdFT0pTT04ucmVhZEZlYXR1cmVzKGZlYXR1cmVDb2xsZWN0aW9uLCB7XG4gICAgICBmZWF0dXJlUHJvamVjdGlvbixcbiAgICAgIGRhdGFQcm9qZWN0aW9uLFxuICAgIH0pIGFzIEZlYXR1cmU8R2VvbWV0cnk+W11cbiAgfVxuXG4gIGlzV01TTGF5ZXIobGF5ZXI6IExheWVyPFNvdXJjZT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgbGF5ZXIuZ2V0U291cmNlKCkgaW5zdGFuY2VvZiBUaWxlV01TIHx8XG4gICAgICBsYXllci5nZXRTb3VyY2UoKSBpbnN0YW5jZW9mIEltYWdlV01TXG4gICAgKVxuICB9XG5cbiAgZ2V0R0ZJVXJsKGxheWVyLCBtYXAsIGNvb3JkaW5hdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZpZXcgPSBtYXAuZ2V0VmlldygpXG4gICAgY29uc3QgcHJvamVjdGlvbiA9IHZpZXcuZ2V0UHJvamVjdGlvbigpXG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IHZpZXcuZ2V0UmVzb2x1dGlvbigpXG4gICAgY29uc3Qgc291cmNlID0gbGF5ZXIuZ2V0U291cmNlKClcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAuLi5zb3VyY2UuZ2V0UGFyYW1zKCksXG4gICAgICBJTkZPX0ZPUk1BVDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH1cbiAgICByZXR1cm4gc291cmNlLmdldEZlYXR1cmVJbmZvVXJsKGNvb3JkaW5hdGUsIHJlc29sdXRpb24sIHByb2plY3Rpb24sIHBhcmFtcylcbiAgfVxuXG4gIGdldFZlY3RvckZlYXR1cmVzRnJvbUNsaWNrKG9sTWFwLCBldmVudCk6IEZlYXR1cmU8R2VvbWV0cnk+W10ge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gW11cbiAgICBjb25zdCBoaXQgPSBvbE1hcC5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwoXG4gICAgICBldmVudC5waXhlbCxcbiAgICAgIChmZWF0dXJlOiBGZWF0dXJlPEdlb21ldHJ5PikgPT4ge1xuICAgICAgICByZXR1cm4gZmVhdHVyZVxuICAgICAgfSxcbiAgICAgIHsgbGF5ZXJGaWx0ZXI6IChsYXllcikgPT4gbGF5ZXIuZ2V0U291cmNlKCkgaW5zdGFuY2VvZiBWZWN0b3JTb3VyY2UgfVxuICAgIClcbiAgICBpZiAoaGl0KSB7XG4gICAgICBmZWF0dXJlcy5wdXNoKGhpdClcbiAgICB9XG4gICAgcmV0dXJuIGZlYXR1cmVzXG4gIH1cblxuICBnZXRHRklGZWF0dXJlc09ic2VydmFibGVzRnJvbUNsaWNrKFxuICAgIG9sTWFwOiBNYXAsXG4gICAgZXZlbnQ6IE1hcEJyb3dzZXJFdmVudDxQb2ludGVyRXZlbnQ+XG4gICk6IE9ic2VydmFibGU8RmVhdHVyZTxHZW9tZXRyeT5bXT5bXSB7XG4gICAgY29uc3Qgd21zTGF5ZXJzID0gb2xNYXAuZ2V0TGF5ZXJzKCkuZ2V0QXJyYXkoKS5maWx0ZXIodGhpcy5pc1dNU0xheWVyKVxuXG4gICAgaWYgKHdtc0xheWVycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IGNvb3JkaW5hdGUgfSA9IGV2ZW50XG4gICAgICBjb25zdCBnZmlVcmxzID0gd21zTGF5ZXJzLnJlZHVjZShcbiAgICAgICAgKHVybHMsIGxheWVyKSA9PiBbLi4udXJscywgdGhpcy5nZXRHRklVcmwobGF5ZXIsIG9sTWFwLCBjb29yZGluYXRlKV0sXG5cbiAgICAgICAgW11cbiAgICAgIClcbiAgICAgIHJldHVybiBnZmlVcmxzLm1hcCgodXJsKSA9PlxuICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAuZ2V0PEZlYXR1cmVDb2xsZWN0aW9uPih1cmwpXG4gICAgICAgICAgLnBpcGUobWFwKChjb2xsZWN0aW9uKSA9PiB0aGlzLnJlYWRGZWF0dXJlQ29sbGVjdGlvbihjb2xsZWN0aW9uKSkpXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIGVtaXQgYG51bGxgIGlmIG5vIGV4dGVudCBjb3VsZCBiZSBjb21wdXRlZFxuICAgKi9cbiAgYXN5bmMgZ2V0TGF5ZXJFeHRlbnQobGF5ZXI6IE1hcENvbnRleHRMYXllck1vZGVsKTogUHJvbWlzZTxFeHRlbnQgfCBudWxsPiB7XG4gICAgbGV0IGxhdExvbkV4dGVudDogRXh0ZW50XG4gICAgaWYgKFxuICAgICAgbGF5ZXIgJiZcbiAgICAgIGxheWVyLnR5cGUgPT09ICdnZW9qc29uJyAmJlxuICAgICAgJ2RhdGEnIGluIGxheWVyICYmXG4gICAgICB0eXBlb2YgbGF5ZXIuZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIGxheWVyLmRhdGEuZmVhdHVyZXNbMF0gJiZcbiAgICAgIGxheWVyLmRhdGEuZmVhdHVyZXNbMF0uZ2VvbWV0cnlcbiAgICApIHtcbiAgICAgIGxhdExvbkV4dGVudCA9IG5ldyBHZW9KU09OKClcbiAgICAgICAgLnJlYWRGZWF0dXJlcyhsYXllci5kYXRhKVxuICAgICAgICAubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLmdldEdlb21ldHJ5KCkpXG4gICAgICAgIC5maWx0ZXIoKGdlb20pID0+ICEhZ2VvbSlcbiAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAocHJldiwgY3VycikgPT5cbiAgICAgICAgICAgIHByZXYgPyBleHRlbmQocHJldiwgY3Vyci5nZXRFeHRlbnQoKSkgOiBjdXJyLmdldEV4dGVudCgpLFxuICAgICAgICAgIG51bGwgYXMgRXh0ZW50XG4gICAgICAgIClcbiAgICB9IGVsc2UgaWYgKGxheWVyICYmIGxheWVyLnR5cGUgPT09ICd3bXMnKSB7XG4gICAgICBsYXRMb25FeHRlbnQgPSBhd2FpdCB0aGlzLmdldFdtc0xheWVyRXh0ZW50KGxheWVyKVxuICAgIH0gZWxzZSBpZiAobGF5ZXIgJiYgbGF5ZXIudHlwZSA9PT0gJ3dtdHMnKSB7XG4gICAgICBpZiAobGF5ZXIuZXh0ZW50KSB7XG4gICAgICAgIGxhdExvbkV4dGVudCA9IGxheWVyLmV4dGVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGxheWVyLm9wdGlvbnMudGlsZUdyaWQuZ2V0RXh0ZW50KClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgaWYgKCFsYXRMb25FeHRlbnQgfHwgaXNFbXB0eShsYXRMb25FeHRlbnQpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gdHJhbnNmb3JtRXh0ZW50KGxhdExvbkV4dGVudCwgJ0VQU0c6NDMyNicsICdFUFNHOjM4NTcnKVxuICB9XG5cbiAgYXN5bmMgZ2V0V21zTGF5ZXJFeHRlbnQoXG4gICAgbGF5ZXI6IE1hcENvbnRleHRMYXllcldtc01vZGVsXG4gICk6IFByb21pc2U8RXh0ZW50IHwgbnVsbD4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYXdhaXQgbmV3IFdtc0VuZHBvaW50KFxuICAgICAgdGhpcy5wcm94eS5nZXRQcm94aWVkVXJsKGxheWVyLnVybClcbiAgICApLmlzUmVhZHkoKVxuICAgIGNvbnN0IHsgYm91bmRpbmdCb3hlcyB9ID0gZW5kcG9pbnQuZ2V0TGF5ZXJCeU5hbWUobGF5ZXIubmFtZSlcbiAgICBpZiAoIU9iamVjdC5rZXlzKGJvdW5kaW5nQm94ZXMpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc3QgbG9uTGF0Q1JTID0gT2JqZWN0LmtleXMoYm91bmRpbmdCb3hlcyk/LmZpbmQoKGNycykgPT5cbiAgICAgIExPTkxBVF9DUlNfQ09ERVMuaW5jbHVkZXMoY3JzKVxuICAgIClcbiAgICBpZiAobG9uTGF0Q1JTKSB7XG4gICAgICByZXR1cm4gYm91bmRpbmdCb3hlc1tsb25MYXRDUlNdLm1hcChwYXJzZUZsb2F0KVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVFUFNHQ29kZSA9IE9iamVjdC5rZXlzKGJvdW5kaW5nQm94ZXMpWzBdXG4gICAgICByZWdpc3Rlcihwcm9qNClcbiAgICAgIGNvbnN0IHByb2ogPSBhd2FpdCBmcm9tRVBTR0NvZGUoYXZhaWxhYmxlRVBTR0NvZGUpXG4gICAgICBjb25zdCBiYm94V2l0aEZpbml0ZU51bWJlcnMgPVxuICAgICAgICBib3VuZGluZ0JveGVzW2F2YWlsYWJsZUVQU0dDb2RlXS5tYXAocGFyc2VGbG9hdClcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1FeHRlbnQoYmJveFdpdGhGaW5pdGVOdW1iZXJzLCBwcm9qLCAnRVBTRzo0MzI2JylcbiAgICB9XG4gIH1cblxuICBnZXRXbXRzTGF5ZXJGcm9tQ2FwYWJpbGl0aWVzKFxuICAgIGxpbms6IERhdGFzZXREaXN0cmlidXRpb25cbiAgKTogT2JzZXJ2YWJsZTxNYXBDb250ZXh0TGF5ZXJXbXRzTW9kZWw+IHtcbiAgICBjb25zdCBnZXRDYXBhYmlsaXRpZXNVcmwgPSBuZXcgVVJMKGxpbmsudXJsLCB3aW5kb3cubG9jYXRpb24udG9TdHJpbmcoKSlcbiAgICBnZXRDYXBhYmlsaXRpZXNVcmwuc2VhcmNoUGFyYW1zLnNldCgnU0VSVklDRScsICdXTVRTJylcbiAgICBnZXRDYXBhYmlsaXRpZXNVcmwuc2VhcmNoUGFyYW1zLnNldCgnUkVRVUVTVCcsICdHZXRDYXBhYmlsaXRpZXMnKVxuICAgIHJldHVybiBmcm9tKFxuICAgICAgZmV0Y2goZ2V0Q2FwYWJpbGl0aWVzVXJsLnRvU3RyaW5nKCkpXG4gICAgICAgIC50aGVuKGFzeW5jIGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgV01UUyBHZXRDYXBhYmlsaXRpZXMgSFRUUCByZXF1ZXN0IGZhaWxlZCB3aXRoIGNvZGUgJHtcbiAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICB9IGFuZCBib2R5OlxuJHthd2FpdCByZXNwb25zZS50ZXh0KCl9YClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKVxuICAgICAgICB9KVxuICAgICAgICAudGhlbihmdW5jdGlvbiAodGV4dCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgV01UU0NhcGFiaWxpdGllcygpLnJlYWQodGV4dClcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBvcHRpb25zRnJvbUNhcGFiaWxpdGllcyhyZXN1bHQsIHtcbiAgICAgICAgICAgICAgbGF5ZXI6IGxpbmsubmFtZSxcbiAgICAgICAgICAgICAgbWF0cml4U2V0OiAnRVBTRzozODU3JyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBjb25zdCBsYXllckNhcCA9IHJlc3VsdD8uQ29udGVudHM/LkxheWVyLmZpbmQoXG4gICAgICAgICAgICAgIChsYXllcikgPT4gbGF5ZXIuSWRlbnRpZmllciA9PT0gbGluay5uYW1lXG4gICAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICB0eXBlOiBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5XTVRTIGFzICd3bXRzJyxcbiAgICAgICAgICAgICAgLi4uKGxheWVyQ2FwPy5XR1M4NEJvdW5kaW5nQm94XG4gICAgICAgICAgICAgICAgPyB7IGV4dGVudDogbGF5ZXJDYXAuV0dTODRCb3VuZGluZ0JveCB9XG4gICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdNVFMgR2V0Q2FwYWJpbGl0aWVzIHBhcnNpbmcgZmFpbGVkOlxuJHtlLnN0YWNrIHx8IGUubWVzc2FnZSB8fCBlfWApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByaW9yaXRpemVQYWdlU2Nyb2xsKGludGVyYWN0aW9uczogQ29sbGVjdGlvbjxJbnRlcmFjdGlvbj4pIHtcbiAgICBpbnRlcmFjdGlvbnMuY2xlYXIoKVxuICAgIGludGVyYWN0aW9ucy5leHRlbmQoXG4gICAgICBkZWZhdWx0cyh7XG4gICAgICAgIC8vIHJlbW92ZSByb3RhdGUgaW50ZXJhY3Rpb25zXG4gICAgICAgIGFsdFNoaWZ0RHJhZ1JvdGF0ZTogZmFsc2UsXG4gICAgICAgIHBpbmNoUm90YXRlOiBmYWxzZSxcbiAgICAgICAgLy8gcmVwbGFjZSBkcmFnIGFuZCB6b29tIGludGVyYWN0aW9uc1xuICAgICAgICBkcmFnUGFuOiBmYWxzZSxcbiAgICAgICAgbW91c2VXaGVlbFpvb206IGZhbHNlLFxuICAgICAgfSlcbiAgICAgICAgLmV4dGVuZChbXG4gICAgICAgICAgbmV3IERyYWdQYW4oe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBkcmFnUGFuQ29uZGl0aW9uLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBNb3VzZVdoZWVsWm9vbSh7XG4gICAgICAgICAgICBjb25kaXRpb246IG1vdXNlV2hlZWxab29tQ29uZGl0aW9uLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdKVxuICAgICAgICAuZ2V0QXJyYXkoKVxuICAgIClcbiAgfVxuXG4gIGdldFJlY29yZEV4dGVudChyZWNvcmQ6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD4pOiBFeHRlbnQge1xuICAgIGlmICghKCdzcGF0aWFsRXh0ZW50cycgaW4gcmVjb3JkKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLy8gdHJhbnNmb3JtIGFuIGFycmF5IG9mIGdlb2pzb24gZ2VvbWV0cmllcyBpbnRvIGEgYmJveFxuICAgIGNvbnN0IHRvdGFsRXh0ZW50ID0gcmVjb3JkLnNwYXRpYWxFeHRlbnRzLnJlZHVjZShcbiAgICAgIChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGdlb20gPSBHRU9KU09OLnJlYWRHZW9tZXRyeShjdXJyLmdlb21ldHJ5KVxuICAgICAgICByZXR1cm4gZXh0ZW5kKHByZXYsIGdlb20uZ2V0RXh0ZW50KCkpXG4gICAgICB9LFxuICAgICAgW0luZmluaXR5LCBJbmZpbml0eSwgLUluZmluaXR5LCAtSW5maW5pdHldXG4gICAgKVxuICAgIHJldHVybiB0cmFuc2Zvcm1FeHRlbnQodG90YWxFeHRlbnQsICdFUFNHOjQzMjYnLCAnRVBTRzozODU3JylcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZHJhZ1BhbkNvbmRpdGlvbihcbiAgdGhpczogRHJhZ1BhbixcbiAgZXZlbnQ6IE1hcEJyb3dzZXJFdmVudDxQb2ludGVyRXZlbnQ+XG4pIHtcbiAgY29uc3QgZHJhZ1BhbkNvbmRpdGlvbiA9IHRoaXMuZ2V0UG9pbnRlckNvdW50KCkgPT09IDIgfHwgbW91c2VPbmx5KGV2ZW50KVxuICBpZiAoIWRyYWdQYW5Db25kaXRpb24pIHtcbiAgICB0aGlzLmdldE1hcCgpLmRpc3BhdGNoRXZlbnQoJ21hcG11dGVkJylcbiAgfVxuICAvLyBjb21iaW5lIHRoZSBjb25kaXRpb24gd2l0aCB0aGUgZGVmYXVsdCBEcmFnUGFuIGNvbmRpdGlvbnNcbiAgcmV0dXJuIGRyYWdQYW5Db25kaXRpb24gJiYgbm9Nb2RpZmllcktleXMoZXZlbnQpICYmIHByaW1hcnlBY3Rpb24oZXZlbnQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3VzZVdoZWVsWm9vbUNvbmRpdGlvbihcbiAgdGhpczogTW91c2VXaGVlbFpvb20sXG4gIGV2ZW50OiBNYXBCcm93c2VyRXZlbnQ8VUlFdmVudD5cbikge1xuICBpZiAoIXBsYXRmb3JtTW9kaWZpZXJLZXlPbmx5KGV2ZW50KSAmJiBldmVudC50eXBlID09PSAnd2hlZWwnKSB7XG4gICAgdGhpcy5nZXRNYXAoKS5kaXNwYXRjaEV2ZW50KCdtYXBtdXRlZCcpXG4gIH1cbiAgcmV0dXJuIHBsYXRmb3JtTW9kaWZpZXJLZXlPbmx5KGV2ZW50KVxufVxuIl19
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXV0aWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvdXRpbHMvbWFwLXV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLE1BQU0sRUFBVSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFbkQsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFHdkMsT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFekMsT0FBTyxRQUFRLE1BQU0sb0JBQW9CLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQWUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0UsT0FBTyxFQUNMLFNBQVMsRUFDVCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGFBQWEsR0FDZCxNQUFNLHFCQUFxQixDQUFBO0FBRTVCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQVFwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN0RCxPQUFPLEtBQUss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QVUsQ0FBQyxDQUFBO0tBQ3hDO0lBQ0QsNERBQTREO0lBQzVELE9BQU8sZ0JBQWdCLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUVyQyxLQUErQjtJQUUvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7UUFDN0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtLQUN4QztJQUNELE9BQU8sdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJ2dlb2pzb24nXG5pbXBvcnQgeyBleHRlbmQsIEV4dGVudCwgaXNFbXB0eSB9IGZyb20gJ29sL2V4dGVudCdcbmltcG9ydCBGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTidcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSdcbmltcG9ydCBMYXllciBmcm9tICdvbC9sYXllci9MYXllcidcbmltcG9ydCBNYXAgZnJvbSAnb2wvTWFwJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRXh0ZW50IH0gZnJvbSAnb2wvcHJvaidcbmltcG9ydCBTb3VyY2UgZnJvbSAnb2wvc291cmNlL1NvdXJjZSdcbmltcG9ydCBJbWFnZVdNUyBmcm9tICdvbC9zb3VyY2UvSW1hZ2VXTVMnXG5pbXBvcnQgVGlsZVdNUyBmcm9tICdvbC9zb3VyY2UvVGlsZVdNUydcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvcidcbmltcG9ydCB7IGRlZmF1bHRzLCBEcmFnUGFuLCBJbnRlcmFjdGlvbiwgTW91c2VXaGVlbFpvb20gfSBmcm9tICdvbC9pbnRlcmFjdGlvbidcbmltcG9ydCB7XG4gIG1vdXNlT25seSxcbiAgbm9Nb2RpZmllcktleXMsXG4gIHBsYXRmb3JtTW9kaWZpZXJLZXlPbmx5LFxuICBwcmltYXJ5QWN0aW9uLFxufSBmcm9tICdvbC9ldmVudHMvY29uZGl0aW9uJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7XG4gIE1hcENvbnRleHRMYXllck1vZGVsLFxuICBNYXBDb250ZXh0TGF5ZXJXbXNNb2RlbCxcbn0gZnJvbSAnLi4vbWFwLWNvbnRleHQvbWFwLWNvbnRleHQubW9kZWwnXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tICdvbC9Db2xsZWN0aW9uJ1xuaW1wb3J0IE1hcEJyb3dzZXJFdmVudCBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgUHJveHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgeyBXbXNFbmRwb2ludCwgV210c0VuZHBvaW50IH0gZnJvbSAnQGNhbXB0b2NhbXAvb2djLWNsaWVudCdcbmltcG9ydCB7IExPTkxBVF9DUlNfQ09ERVMgfSBmcm9tICcuLi9jb25zdGFudC9wcm9qZWN0aW9ucydcbmltcG9ydCB7IGZyb21FUFNHQ29kZSwgcmVnaXN0ZXIgfSBmcm9tICdvbC9wcm9qL3Byb2o0J1xuaW1wb3J0IHByb2o0IGZyb20gJ3Byb2o0L2Rpc3QvcHJvajQnXG5pbXBvcnQgeyBkZWZhdWx0cyBhcyBkZWZhdWx0Q29udHJvbHMgfSBmcm9tICdvbC9jb250cm9sL2RlZmF1bHRzJ1xuXG5jb25zdCBGRUFUVVJFX1BST0pFQ1RJT04gPSAnRVBTRzozODU3J1xuY29uc3QgREFUQV9QUk9KRUNUSU9OID0gJ0VQU0c6NDMyNidcblxuY29uc3QgR0VPSlNPTiA9IG5ldyBHZW9KU09OKClcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcFV0aWxzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBwcm94eTogUHJveHlTZXJ2aWNlKSB7fVxuXG4gIGNyZWF0ZUVtcHR5TWFwKCk6IE1hcCB7XG4gICAgcmV0dXJuIG5ldyBNYXAoe1xuICAgICAgY29udHJvbHM6IGRlZmF1bHRDb250cm9scyh7XG4gICAgICAgIGF0dHJpYnV0aW9uOiB0cnVlLFxuICAgICAgICBhdHRyaWJ1dGlvbk9wdGlvbnM6IHsgY29sbGFwc2libGU6IGZhbHNlIH0sXG4gICAgICB9KSxcbiAgICAgIHBpeGVsUmF0aW86IDEsXG4gICAgfSlcbiAgfVxuXG4gIHJlYWRGZWF0dXJlQ29sbGVjdGlvbiA9IChcbiAgICBmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgZmVhdHVyZVByb2plY3Rpb24gPSBGRUFUVVJFX1BST0pFQ1RJT04sXG4gICAgZGF0YVByb2plY3Rpb24gPSBEQVRBX1BST0pFQ1RJT05cbiAgKTogRmVhdHVyZTxHZW9tZXRyeT5bXSA9PiB7XG4gICAgcmV0dXJuIEdFT0pTT04ucmVhZEZlYXR1cmVzKGZlYXR1cmVDb2xsZWN0aW9uLCB7XG4gICAgICBmZWF0dXJlUHJvamVjdGlvbixcbiAgICAgIGRhdGFQcm9qZWN0aW9uLFxuICAgIH0pIGFzIEZlYXR1cmU8R2VvbWV0cnk+W11cbiAgfVxuXG4gIGlzV01TTGF5ZXIobGF5ZXI6IExheWVyPFNvdXJjZT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgbGF5ZXIuZ2V0U291cmNlKCkgaW5zdGFuY2VvZiBUaWxlV01TIHx8XG4gICAgICBsYXllci5nZXRTb3VyY2UoKSBpbnN0YW5jZW9mIEltYWdlV01TXG4gICAgKVxuICB9XG5cbiAgZ2V0R0ZJVXJsKGxheWVyLCBtYXAsIGNvb3JkaW5hdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZpZXcgPSBtYXAuZ2V0VmlldygpXG4gICAgY29uc3QgcHJvamVjdGlvbiA9IHZpZXcuZ2V0UHJvamVjdGlvbigpXG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IHZpZXcuZ2V0UmVzb2x1dGlvbigpXG4gICAgY29uc3Qgc291cmNlID0gbGF5ZXIuZ2V0U291cmNlKClcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAuLi5zb3VyY2UuZ2V0UGFyYW1zKCksXG4gICAgICBJTkZPX0ZPUk1BVDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH1cbiAgICByZXR1cm4gc291cmNlLmdldEZlYXR1cmVJbmZvVXJsKGNvb3JkaW5hdGUsIHJlc29sdXRpb24sIHByb2plY3Rpb24sIHBhcmFtcylcbiAgfVxuXG4gIGdldFZlY3RvckZlYXR1cmVzRnJvbUNsaWNrKG9sTWFwLCBldmVudCk6IEZlYXR1cmU8R2VvbWV0cnk+W10ge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gW11cbiAgICBjb25zdCBoaXQgPSBvbE1hcC5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwoXG4gICAgICBldmVudC5waXhlbCxcbiAgICAgIChmZWF0dXJlOiBGZWF0dXJlPEdlb21ldHJ5PikgPT4ge1xuICAgICAgICByZXR1cm4gZmVhdHVyZVxuICAgICAgfSxcbiAgICAgIHsgbGF5ZXJGaWx0ZXI6IChsYXllcikgPT4gbGF5ZXIuZ2V0U291cmNlKCkgaW5zdGFuY2VvZiBWZWN0b3JTb3VyY2UgfVxuICAgIClcbiAgICBpZiAoaGl0KSB7XG4gICAgICBmZWF0dXJlcy5wdXNoKGhpdClcbiAgICB9XG4gICAgcmV0dXJuIGZlYXR1cmVzXG4gIH1cblxuICBnZXRHRklGZWF0dXJlc09ic2VydmFibGVzRnJvbUNsaWNrKFxuICAgIG9sTWFwOiBNYXAsXG4gICAgZXZlbnQ6IE1hcEJyb3dzZXJFdmVudDxQb2ludGVyRXZlbnQ+XG4gICk6IE9ic2VydmFibGU8RmVhdHVyZTxHZW9tZXRyeT5bXT5bXSB7XG4gICAgY29uc3Qgd21zTGF5ZXJzID0gb2xNYXAuZ2V0TGF5ZXJzKCkuZ2V0QXJyYXkoKS5maWx0ZXIodGhpcy5pc1dNU0xheWVyKVxuXG4gICAgaWYgKHdtc0xheWVycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IGNvb3JkaW5hdGUgfSA9IGV2ZW50XG4gICAgICBjb25zdCBnZmlVcmxzID0gd21zTGF5ZXJzLnJlZHVjZShcbiAgICAgICAgKHVybHMsIGxheWVyKSA9PiBbLi4udXJscywgdGhpcy5nZXRHRklVcmwobGF5ZXIsIG9sTWFwLCBjb29yZGluYXRlKV0sXG5cbiAgICAgICAgW11cbiAgICAgIClcbiAgICAgIHJldHVybiBnZmlVcmxzLm1hcCgodXJsKSA9PlxuICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAuZ2V0PEZlYXR1cmVDb2xsZWN0aW9uPih1cmwpXG4gICAgICAgICAgLnBpcGUobWFwKChjb2xsZWN0aW9uKSA9PiB0aGlzLnJlYWRGZWF0dXJlQ29sbGVjdGlvbihjb2xsZWN0aW9uKSkpXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIGVtaXQgYG51bGxgIGlmIG5vIGV4dGVudCBjb3VsZCBiZSBjb21wdXRlZFxuICAgKi9cbiAgYXN5bmMgZ2V0TGF5ZXJFeHRlbnQobGF5ZXI6IE1hcENvbnRleHRMYXllck1vZGVsKTogUHJvbWlzZTxFeHRlbnQgfCBudWxsPiB7XG4gICAgbGV0IGxhdExvbkV4dGVudDogRXh0ZW50XG4gICAgaWYgKFxuICAgICAgbGF5ZXIgJiZcbiAgICAgIGxheWVyLnR5cGUgPT09ICdnZW9qc29uJyAmJlxuICAgICAgJ2RhdGEnIGluIGxheWVyICYmXG4gICAgICB0eXBlb2YgbGF5ZXIuZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIGxheWVyLmRhdGEuZmVhdHVyZXNbMF0gJiZcbiAgICAgIGxheWVyLmRhdGEuZmVhdHVyZXNbMF0uZ2VvbWV0cnlcbiAgICApIHtcbiAgICAgIGxhdExvbkV4dGVudCA9IG5ldyBHZW9KU09OKClcbiAgICAgICAgLnJlYWRGZWF0dXJlcyhsYXllci5kYXRhKVxuICAgICAgICAubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLmdldEdlb21ldHJ5KCkpXG4gICAgICAgIC5maWx0ZXIoKGdlb20pID0+ICEhZ2VvbSlcbiAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAocHJldiwgY3VycikgPT5cbiAgICAgICAgICAgIHByZXYgPyBleHRlbmQocHJldiwgY3Vyci5nZXRFeHRlbnQoKSkgOiBjdXJyLmdldEV4dGVudCgpLFxuICAgICAgICAgIG51bGwgYXMgRXh0ZW50XG4gICAgICAgIClcbiAgICB9IGVsc2UgaWYgKGxheWVyICYmIGxheWVyLnR5cGUgPT09ICd3bXMnKSB7XG4gICAgICBsYXRMb25FeHRlbnQgPSBhd2FpdCB0aGlzLmdldFdtc0xheWVyRXh0ZW50KGxheWVyKVxuICAgIH0gZWxzZSBpZiAobGF5ZXIgJiYgbGF5ZXIudHlwZSA9PT0gJ3dtdHMnKSB7XG4gICAgICAvLyBUT0RPOiBpc29sYXRlIHRoaXMgaW4gdXRpbHMgc2VydmljZVxuICAgICAgbGF0TG9uRXh0ZW50ID0gYXdhaXQgbmV3IFdtdHNFbmRwb2ludChsYXllci51cmwpXG4gICAgICAgIC5pc1JlYWR5KClcbiAgICAgICAgLnRoZW4oKGVuZHBvaW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJOYW1lID0gZW5kcG9pbnQuZ2V0U2luZ2xlTGF5ZXJOYW1lKCkgPz8gbGF5ZXIubmFtZVxuICAgICAgICAgIGNvbnN0IHdtdHNMYXllciA9IGVuZHBvaW50LmdldExheWVyQnlOYW1lKGxheWVyTmFtZSlcbiAgICAgICAgICByZXR1cm4gd210c0xheWVyLmxhdExvbkJvdW5kaW5nQm94XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGlmICghbGF0TG9uRXh0ZW50IHx8IGlzRW1wdHkobGF0TG9uRXh0ZW50KSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zZm9ybUV4dGVudChsYXRMb25FeHRlbnQsICdFUFNHOjQzMjYnLCAnRVBTRzozODU3JylcbiAgfVxuXG4gIGFzeW5jIGdldFdtc0xheWVyRXh0ZW50KFxuICAgIGxheWVyOiBNYXBDb250ZXh0TGF5ZXJXbXNNb2RlbFxuICApOiBQcm9taXNlPEV4dGVudCB8IG51bGw+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGF3YWl0IG5ldyBXbXNFbmRwb2ludChcbiAgICAgIHRoaXMucHJveHkuZ2V0UHJveGllZFVybChsYXllci51cmwpXG4gICAgKS5pc1JlYWR5KClcbiAgICBjb25zdCB7IGJvdW5kaW5nQm94ZXMgfSA9IGVuZHBvaW50LmdldExheWVyQnlOYW1lKGxheWVyLm5hbWUpXG4gICAgaWYgKCFPYmplY3Qua2V5cyhib3VuZGluZ0JveGVzKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IGxvbkxhdENSUyA9IE9iamVjdC5rZXlzKGJvdW5kaW5nQm94ZXMpPy5maW5kKChjcnMpID0+XG4gICAgICBMT05MQVRfQ1JTX0NPREVTLmluY2x1ZGVzKGNycylcbiAgICApXG4gICAgaWYgKGxvbkxhdENSUykge1xuICAgICAgcmV0dXJuIGJvdW5kaW5nQm94ZXNbbG9uTGF0Q1JTXVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVFUFNHQ29kZSA9IE9iamVjdC5rZXlzKGJvdW5kaW5nQm94ZXMpWzBdXG4gICAgICByZWdpc3Rlcihwcm9qNClcbiAgICAgIGNvbnN0IHByb2ogPSBhd2FpdCBmcm9tRVBTR0NvZGUoYXZhaWxhYmxlRVBTR0NvZGUpXG4gICAgICByZXR1cm4gdHJhbnNmb3JtRXh0ZW50KFxuICAgICAgICBib3VuZGluZ0JveGVzW2F2YWlsYWJsZUVQU0dDb2RlXSxcbiAgICAgICAgcHJvaixcbiAgICAgICAgJ0VQU0c6NDMyNidcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBwcmlvcml0aXplUGFnZVNjcm9sbChpbnRlcmFjdGlvbnM6IENvbGxlY3Rpb248SW50ZXJhY3Rpb24+KSB7XG4gICAgaW50ZXJhY3Rpb25zLmNsZWFyKClcbiAgICBpbnRlcmFjdGlvbnMuZXh0ZW5kKFxuICAgICAgZGVmYXVsdHMoe1xuICAgICAgICAvLyByZW1vdmUgcm90YXRlIGludGVyYWN0aW9uc1xuICAgICAgICBhbHRTaGlmdERyYWdSb3RhdGU6IGZhbHNlLFxuICAgICAgICBwaW5jaFJvdGF0ZTogZmFsc2UsXG4gICAgICAgIC8vIHJlcGxhY2UgZHJhZyBhbmQgem9vbSBpbnRlcmFjdGlvbnNcbiAgICAgICAgZHJhZ1BhbjogZmFsc2UsXG4gICAgICAgIG1vdXNlV2hlZWxab29tOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgICAgIC5leHRlbmQoW1xuICAgICAgICAgIG5ldyBEcmFnUGFuKHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogZHJhZ1BhbkNvbmRpdGlvbixcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgTW91c2VXaGVlbFpvb20oe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBtb3VzZVdoZWVsWm9vbUNvbmRpdGlvbixcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSlcbiAgICAgICAgLmdldEFycmF5KClcbiAgICApXG4gIH1cblxuICBnZXRSZWNvcmRFeHRlbnQocmVjb3JkOiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+KTogRXh0ZW50IHtcbiAgICBpZiAoISgnc3BhdGlhbEV4dGVudHMnIGluIHJlY29yZCkgfHwgcmVjb3JkLnNwYXRpYWxFeHRlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLy8gdHJhbnNmb3JtIGFuIGFycmF5IG9mIGdlb2pzb24gZ2VvbWV0cmllcyBpbnRvIGEgYmJveFxuICAgIGNvbnN0IHRvdGFsRXh0ZW50ID0gcmVjb3JkLnNwYXRpYWxFeHRlbnRzLnJlZHVjZShcbiAgICAgIChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGdlb20gPSBHRU9KU09OLnJlYWRHZW9tZXRyeShjdXJyLmdlb21ldHJ5KVxuICAgICAgICByZXR1cm4gZXh0ZW5kKHByZXYsIGdlb20uZ2V0RXh0ZW50KCkpXG4gICAgICB9LFxuICAgICAgW0luZmluaXR5LCBJbmZpbml0eSwgLUluZmluaXR5LCAtSW5maW5pdHldXG4gICAgKVxuICAgIHJldHVybiB0cmFuc2Zvcm1FeHRlbnQodG90YWxFeHRlbnQsICdFUFNHOjQzMjYnLCAnRVBTRzozODU3JylcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZHJhZ1BhbkNvbmRpdGlvbihcbiAgdGhpczogRHJhZ1BhbixcbiAgZXZlbnQ6IE1hcEJyb3dzZXJFdmVudDxQb2ludGVyRXZlbnQ+XG4pIHtcbiAgY29uc3QgZHJhZ1BhbkNvbmRpdGlvbiA9IHRoaXMuZ2V0UG9pbnRlckNvdW50KCkgPT09IDIgfHwgbW91c2VPbmx5KGV2ZW50KVxuICBpZiAoIWRyYWdQYW5Db25kaXRpb24pIHtcbiAgICB0aGlzLmdldE1hcCgpLmRpc3BhdGNoRXZlbnQoJ21hcG11dGVkJylcbiAgfVxuICAvLyBjb21iaW5lIHRoZSBjb25kaXRpb24gd2l0aCB0aGUgZGVmYXVsdCBEcmFnUGFuIGNvbmRpdGlvbnNcbiAgcmV0dXJuIGRyYWdQYW5Db25kaXRpb24gJiYgbm9Nb2RpZmllcktleXMoZXZlbnQpICYmIHByaW1hcnlBY3Rpb24oZXZlbnQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3VzZVdoZWVsWm9vbUNvbmRpdGlvbihcbiAgdGhpczogTW91c2VXaGVlbFpvb20sXG4gIGV2ZW50OiBNYXBCcm93c2VyRXZlbnQ8VUlFdmVudD5cbikge1xuICBpZiAoIXBsYXRmb3JtTW9kaWZpZXJLZXlPbmx5KGV2ZW50KSAmJiBldmVudC50eXBlID09PSAnd2hlZWwnKSB7XG4gICAgdGhpcy5nZXRNYXAoKS5kaXNwYXRjaEV2ZW50KCdtYXBtdXRlZCcpXG4gIH1cbiAgcmV0dXJuIHBsYXRmb3JtTW9kaWZpZXJLZXlPbmx5KGV2ZW50KVxufVxuIl19
@@ -0,0 +1,4 @@
1
+ export * from './lib/feature-notifications.module';
2
+ export * from './lib/notifications.service';
3
+ export * from './lib/notifications-container/notifications-container.component';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbm90aWZpY2F0aW9ucy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQ0FBb0MsQ0FBQTtBQUNsRCxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsaUVBQWlFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9mZWF0dXJlLW5vdGlmaWNhdGlvbnMubW9kdWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbm90aWZpY2F0aW9ucy5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbm90aWZpY2F0aW9ucy1jb250YWluZXIvbm90aWZpY2F0aW9ucy1jb250YWluZXIuY29tcG9uZW50J1xuIl19
@@ -0,0 +1,18 @@
1
+ import { NotificationsService } from './notifications.service';
2
+ import { NgModule } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class FeatureNotificationsModule {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureNotificationsModule }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureNotificationsModule, providers: [NotificationsService] }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureNotificationsModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [],
13
+ exports: [],
14
+ imports: [],
15
+ providers: [NotificationsService],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1ub3RpZmljYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9ub3RpZmljYXRpb25zL3NyYy9saWIvZmVhdHVyZS1ub3RpZmljYXRpb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBOztBQVF4QyxNQUFNLE9BQU8sMEJBQTBCOzhHQUExQiwwQkFBMEI7K0dBQTFCLDBCQUEwQjsrR0FBMUIsMEJBQTBCLGFBRjFCLENBQUMsb0JBQW9CLENBQUM7OzJGQUV0QiwwQkFBMEI7a0JBTnRDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLnNlcnZpY2UnXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IFtdLFxuICBpbXBvcnRzOiBbXSxcbiAgcHJvdmlkZXJzOiBbTm90aWZpY2F0aW9uc1NlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlTm90aWZpY2F0aW9uc01vZHVsZSB7fVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL25vdGlmaWNhdGlvbnMvc3JjL2xpYi9ub3RpZmljYXRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uQ29udGVudCB7XG4gIHR5cGU6ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnc3VjY2VzcydcbiAgdGl0bGU6IHN0cmluZ1xuICB0ZXh0OiBzdHJpbmdcbiAgY2xvc2VNZXNzYWdlPzogc3RyaW5nXG59XG4iXX0=
@@ -0,0 +1,49 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NotificationsService } from '../notifications.service';
4
+ import { NotificationComponent } from '../../../../../../libs/ui/elements/src';
5
+ import { animate, keyframes, style, transition, trigger, } from '@angular/animations';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../notifications.service";
8
+ import * as i2 from "@angular/common";
9
+ export class NotificationsContainerComponent {
10
+ constructor(notificationsService) {
11
+ this.notificationsService = notificationsService;
12
+ }
13
+ trackById(index, notification) {
14
+ return notification.id;
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationsContainerComponent, deps: [{ token: i1.NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NotificationsContainerComponent, isStandalone: true, selector: "gn-ui-notifications-container", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "component", type: NotificationComponent, selector: "gn-ui-notification", inputs: ["type", "title", "text", "closeMessage"], outputs: ["notificationClose"] }], animations: [
18
+ trigger('enterExit', [
19
+ transition(':enter', [
20
+ animate('150ms', keyframes([
21
+ style({ transform: 'scale(1)', opacity: 0 }),
22
+ style({ transform: 'scale(1.03)', opacity: 0.5 }),
23
+ style({ transform: 'scale(1)', opacity: 1 }),
24
+ ])),
25
+ ]),
26
+ transition(':leave', [
27
+ animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
28
+ ]),
29
+ ]),
30
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationsContainerComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'gn-ui-notifications-container', standalone: true, imports: [CommonModule, NotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
35
+ trigger('enterExit', [
36
+ transition(':enter', [
37
+ animate('150ms', keyframes([
38
+ style({ transform: 'scale(1)', opacity: 0 }),
39
+ style({ transform: 'scale(1.03)', opacity: 0.5 }),
40
+ style({ transform: 'scale(1)', opacity: 1 }),
41
+ ])),
42
+ ]),
43
+ transition(':leave', [
44
+ animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
45
+ ]),
46
+ ]),
47
+ ], template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n" }]
48
+ }], ctorParameters: function () { return [{ type: i1.NotificationsService }]; } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL25vdGlmaWNhdGlvbnMvc3JjL2xpYi9ub3RpZmljYXRpb25zLWNvbnRhaW5lci9ub3RpZmljYXRpb25zLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbm90aWZpY2F0aW9ucy9zcmMvbGliL25vdGlmaWNhdGlvbnMtY29udGFpbmVyL25vdGlmaWNhdGlvbnMtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQzlFLE9BQU8sRUFDTCxPQUFPLEVBQ1AsU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUE7Ozs7QUEyQjVCLE1BQU0sT0FBTywrQkFBK0I7SUFDMUMsWUFBc0Isb0JBQTBDO1FBQTFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7SUFBRyxDQUFDO0lBRXBFLFNBQVMsQ0FBQyxLQUFhLEVBQUUsWUFBNEI7UUFDbkQsT0FBTyxZQUFZLENBQUMsRUFBRSxDQUFBO0lBQ3hCLENBQUM7OEdBTFUsK0JBQStCO2tHQUEvQiwrQkFBK0IseUZDckM1QywrakJBaUJBLHlEREZZLFlBQVksaU5BQUUscUJBQXFCLG9JQUlqQztZQUNWLE9BQU8sQ0FBQyxXQUFXLEVBQUU7Z0JBQ25CLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLE9BQU8sQ0FDTCxPQUFPLEVBQ1AsU0FBUyxDQUFDO3dCQUNSLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUM1QyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQzt3QkFDakQsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7cUJBQzdDLENBQUMsQ0FDSDtpQkFDRixDQUFDO2dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN2RSxDQUFDO2FBQ0gsQ0FBQztTQUNIOzsyRkFFVSwrQkFBK0I7a0JBekIzQyxTQUFTOytCQUNFLCtCQUErQixjQUM3QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUMsbUJBRzdCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkM7d0JBQ1YsT0FBTyxDQUFDLFdBQVcsRUFBRTs0QkFDbkIsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDbkIsT0FBTyxDQUNMLE9BQU8sRUFDUCxTQUFTLENBQUM7b0NBQ1IsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0NBQzVDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO29DQUNqRCxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztpQ0FDN0MsQ0FBQyxDQUNIOzZCQUNGLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDbkIsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ3ZFLENBQUM7eUJBQ0gsQ0FBQztxQkFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9ub3RpZmljYXRpb25zLnNlcnZpY2UnXG5pbXBvcnQgeyBOb3RpZmljYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYydcbmltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIGtleWZyYW1lcyxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLW5vdGlmaWNhdGlvbnMtY29udGFpbmVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTm90aWZpY2F0aW9uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbnMtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9ucy1jb250YWluZXIuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2VudGVyRXhpdCcsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAnMTUwbXMnLFxuICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDEpJywgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAnc2NhbGUoMS4wMyknLCBvcGFjaXR5OiAwLjUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDEpJywgb3BhY2l0eTogMSB9KSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIGFuaW1hdGUoJzIwMG1zJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDUwcHgpJywgb3BhY2l0eTogMCB9KSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uc0NvbnRhaW5lckNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBub3RpZmljYXRpb25zU2VydmljZTogTm90aWZpY2F0aW9uc1NlcnZpY2UpIHt9XG5cbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIG5vdGlmaWNhdGlvbjogeyBpZDogbnVtYmVyIH0pIHtcbiAgICByZXR1cm4gbm90aWZpY2F0aW9uLmlkXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC02IHAtNiBpdGVtcy1zdGFydCBwb2ludGVyLWV2ZW50cy1ub25lXCI+XG4gIDxnbi11aS1ub3RpZmljYXRpb25cbiAgICAqbmdGb3I9XCJcbiAgICAgIGxldCBub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9uc1NlcnZpY2Uubm90aWZpY2F0aW9ucyQgfCBhc3luYztcbiAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgIFwiXG4gICAgY2xhc3M9XCJtYXgtdy1mdWxsIHBvaW50ZXItZXZlbnRzLWF1dG9cIlxuICAgIFt0ZXh0XT1cIm5vdGlmaWNhdGlvbi50ZXh0XCJcbiAgICBbdHlwZV09XCJub3RpZmljYXRpb24udHlwZVwiXG4gICAgW3RpdGxlXT1cIm5vdGlmaWNhdGlvbi50aXRsZVwiXG4gICAgW2Nsb3NlTWVzc2FnZV09XCJub3RpZmljYXRpb24uY2xvc2VNZXNzYWdlXCJcbiAgICAobm90aWZpY2F0aW9uQ2xvc2UpPVwiXG4gICAgICBub3RpZmljYXRpb25zU2VydmljZS5yZW1vdmVOb3RpZmljYXRpb25CeUlkKG5vdGlmaWNhdGlvbi5pZClcbiAgICBcIlxuICAgIFtAZW50ZXJFeGl0XVxuICA+PC9nbi11aS1ub3RpZmljYXRpb24+XG48L2Rpdj5cbiJdfQ==