geonetwork-ui 2.4.0-dev.613f7319 → 2.4.0-dev.614b0d9f

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 (778) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +4 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/license.mjs +64 -0
  3. package/esm2022/libs/api/metadata-converter/src/lib/common/url.mjs +14 -0
  4. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +254 -0
  5. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/index.mjs +2 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.mjs +17 -0
  7. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +196 -0
  8. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.mjs +46 -0
  9. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.mjs +74 -0
  10. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.mjs +2 -0
  11. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.mjs +27 -0
  12. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +11 -1
  13. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +10 -3
  14. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.mjs +1 -1
  15. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +6 -6
  16. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +7 -4
  17. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +17 -29
  18. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +12 -17
  19. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +35 -7
  20. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.mjs +31 -0
  21. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +76 -54
  22. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +44 -5
  23. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +96 -40
  24. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +11 -1
  25. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +51 -7
  26. package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +28 -1
  27. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  28. package/esm2022/libs/common/domain/src/lib/model/user/user.model.mjs +1 -1
  29. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  30. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  31. package/esm2022/libs/data-access/gn4/src/fixtures/site.fixtures.mjs +5 -5
  32. package/esm2022/libs/data-access/gn4/src/fixtures/ui.fixtures.mjs +3 -3
  33. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +2 -6
  34. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -4
  35. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
  36. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +1 -1
  37. package/esm2022/libs/feature/dataviz/src/lib/feature-dataviz.module.mjs +10 -7
  38. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +40 -50
  39. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +1 -1
  40. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +1 -1
  41. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  42. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
  43. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +10 -5
  44. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +4 -1
  45. package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +17 -0
  46. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +80 -0
  47. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +95 -0
  48. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +71 -0
  49. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +147 -0
  50. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.mjs +19 -0
  51. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +31 -40
  52. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +11 -9
  53. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +79 -0
  54. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +148 -0
  55. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +44 -0
  56. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +103 -0
  57. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +12 -16
  58. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.mjs +9 -8
  59. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +140 -5
  60. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +41 -68
  61. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +17 -15
  62. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +45 -44
  63. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -2
  64. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +5 -3
  65. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +3 -3
  66. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +8 -8
  67. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +6 -4
  68. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +69 -8
  69. package/esm2022/libs/feature/editor/src/lib/models/editor-config.model.mjs +1 -1
  70. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +9 -5
  71. package/esm2022/libs/feature/map/src/index.mjs +2 -9
  72. package/esm2022/libs/feature/map/src/lib/+state/map.actions.mjs +4 -7
  73. package/esm2022/libs/feature/map/src/lib/+state/map.facade.mjs +9 -15
  74. package/esm2022/libs/feature/map/src/lib/+state/map.reducer.mjs +13 -44
  75. package/esm2022/libs/feature/map/src/lib/+state/map.selectors.mjs +3 -2
  76. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +6 -6
  77. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +20 -19
  78. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +23 -14
  79. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +15 -14
  80. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +18 -13
  81. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +16 -11
  82. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +1 -2
  83. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +9 -68
  84. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +43 -29
  85. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +43 -18
  86. package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +27 -0
  87. package/esm2022/libs/feature/map/src/lib/style/map-style.fixtures.mjs +3 -3
  88. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +12 -171
  89. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
  90. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +21 -17
  91. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +14 -8
  92. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +40 -52
  93. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -2
  94. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +3 -3
  95. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +42 -8
  96. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +6 -2
  97. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +7 -7
  98. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +1 -6
  99. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +3 -3
  100. package/esm2022/libs/ui/elements/src/index.mjs +3 -2
  101. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +27 -0
  102. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +2 -2
  103. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
  104. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +2 -2
  105. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +6 -5
  106. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
  107. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  108. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +5 -11
  109. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +3 -3
  110. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +5 -5
  111. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +11 -5
  112. package/esm2022/libs/ui/inputs/src/index.mjs +6 -1
  113. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +24 -7
  114. package/esm2022/libs/ui/inputs/src/lib/badge/badge.component.mjs +5 -3
  115. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +8 -1
  116. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +11 -4
  117. package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +9 -3
  118. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +26 -24
  119. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +87 -0
  120. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +19 -15
  121. package/esm2022/libs/ui/inputs/src/lib/search-input/search-input.component.mjs +6 -4
  122. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +32 -0
  123. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +7 -21
  124. package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +6 -17
  125. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +4 -13
  126. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +43 -0
  127. package/esm2022/libs/ui/layout/src/index.mjs +3 -1
  128. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +5 -3
  129. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
  130. package/esm2022/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.mjs +29 -0
  131. package/esm2022/libs/ui/layout/src/lib/sortable-list/sortable-list.component.mjs +43 -0
  132. package/esm2022/libs/ui/map/src/index.mjs +4 -3
  133. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +8 -6
  134. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +137 -0
  135. package/esm2022/libs/ui/map/src/lib/components/map-container/map-settings.token.mjs +13 -0
  136. package/esm2022/libs/ui/map/src/lib/map-utils.mjs +37 -0
  137. package/esm2022/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.mjs +7 -7
  138. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +49 -11
  139. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +23 -11
  140. package/esm2022/libs/ui/widgets/src/index.mjs +2 -1
  141. package/esm2022/libs/ui/widgets/src/lib/popover/popover.component.mjs +68 -0
  142. package/esm2022/libs/util/app-config/src/index.mjs +2 -1
  143. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +10 -10
  144. package/esm2022/libs/util/app-config/src/lib/map-layers.mjs +27 -0
  145. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +1 -1
  146. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +1 -1
  147. package/esm2022/libs/util/shared/src/lib/services/theme.service.mjs +2 -1
  148. package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -1
  149. package/esm2022/translations/de.json +84 -19
  150. package/esm2022/translations/en.json +77 -12
  151. package/esm2022/translations/es.json +74 -9
  152. package/esm2022/translations/fr.json +88 -23
  153. package/esm2022/translations/it.json +77 -12
  154. package/esm2022/translations/nl.json +74 -9
  155. package/esm2022/translations/pt.json +74 -9
  156. package/fesm2022/geonetwork-ui.mjs +8200 -6086
  157. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  158. package/libs/api/metadata-converter/src/index.d.ts +3 -1
  159. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  160. package/libs/api/metadata-converter/src/lib/common/license.d.ts +3 -0
  161. package/libs/api/metadata-converter/src/lib/common/license.d.ts.map +1 -0
  162. package/libs/api/metadata-converter/src/lib/common/url.d.ts +7 -0
  163. package/libs/api/metadata-converter/src/lib/common/url.d.ts.map +1 -0
  164. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts +13 -0
  165. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -0
  166. package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts +2 -0
  167. package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts.map +1 -0
  168. package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts +16 -0
  169. package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts.map +1 -0
  170. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts +20 -0
  171. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts.map +1 -0
  172. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts +9 -0
  173. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts.map +1 -0
  174. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts +8 -0
  175. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts.map +1 -0
  176. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts +2 -0
  177. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts.map +1 -0
  178. package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts +6 -0
  179. package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts.map +1 -0
  180. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -1
  181. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +3 -3
  182. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  183. package/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.d.ts +2 -6
  184. package/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.d.ts.map +1 -1
  185. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
  186. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +2 -2
  187. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  188. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +1 -2
  189. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  190. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  191. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +12 -6
  192. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  193. package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts +5 -0
  194. package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts.map +1 -0
  195. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +13 -12
  196. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  197. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +59 -0
  198. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  199. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +18 -8
  200. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  201. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  202. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +22 -2
  203. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  204. package/libs/common/domain/src/lib/model/record/contact.model.d.ts +2 -1
  205. package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
  206. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +9 -7
  207. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  208. package/libs/common/domain/src/lib/model/user/user.model.d.ts +1 -1
  209. package/libs/common/domain/src/lib/model/user/user.model.d.ts.map +1 -1
  210. package/libs/common/domain/src/lib/platform.service.interface.d.ts +16 -0
  211. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  212. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +15 -0
  213. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  214. package/libs/data-access/gn4/src/fixtures/site.fixtures.d.ts +2 -2
  215. package/libs/data-access/gn4/src/fixtures/site.fixtures.d.ts.map +1 -1
  216. package/libs/data-access/gn4/src/fixtures/ui.fixtures.d.ts +1 -1
  217. package/libs/data-access/gn4/src/fixtures/ui.fixtures.d.ts.map +1 -1
  218. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  219. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +2 -1
  220. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  221. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -2
  222. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  223. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts +10 -9
  224. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts.map +1 -1
  225. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +13 -20
  226. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  227. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +6 -6
  228. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  229. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +3 -3
  230. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  231. package/libs/feature/editor/src/index.d.ts +1 -0
  232. package/libs/feature/editor/src/index.d.ts.map +1 -1
  233. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +1 -0
  234. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  235. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +5 -0
  236. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  237. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +1 -0
  238. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  239. package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts +8 -0
  240. package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts.map +1 -0
  241. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts +33 -0
  242. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -0
  243. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts +34 -0
  244. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -0
  245. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts +15 -0
  246. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -0
  247. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +41 -0
  248. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -0
  249. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.d.ts +9 -0
  250. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.d.ts.map +1 -0
  251. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts +11 -19
  252. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  253. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +6 -4
  254. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -1
  255. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +15 -0
  256. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +1 -0
  257. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +35 -0
  258. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -0
  259. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +15 -0
  260. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts.map +1 -0
  261. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +31 -0
  262. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -0
  263. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts +4 -6
  264. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  265. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.d.ts +4 -3
  266. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.d.ts.map +1 -1
  267. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts +28 -0
  268. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  269. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts +10 -16
  270. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
  271. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +5 -5
  272. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -1
  273. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +18 -20
  274. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  275. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -1
  276. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  277. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts +5 -3
  278. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
  279. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +2 -1
  280. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  281. package/libs/feature/editor/src/lib/fields.config.d.ts +16 -0
  282. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  283. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts +6 -0
  284. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts.map +1 -1
  285. package/libs/feature/editor/src/lib/services/editor.service.d.ts +3 -2
  286. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  287. package/libs/feature/map/src/index.d.ts +1 -8
  288. package/libs/feature/map/src/index.d.ts.map +1 -1
  289. package/libs/feature/map/src/lib/+state/map.actions.d.ts +13 -39
  290. package/libs/feature/map/src/lib/+state/map.actions.d.ts.map +1 -1
  291. package/libs/feature/map/src/lib/+state/map.facade.d.ts +9 -10
  292. package/libs/feature/map/src/lib/+state/map.facade.d.ts.map +1 -1
  293. package/libs/feature/map/src/lib/+state/map.reducer.d.ts +4 -2
  294. package/libs/feature/map/src/lib/+state/map.reducer.d.ts.map +1 -1
  295. package/libs/feature/map/src/lib/+state/map.selectors.d.ts +6 -1
  296. package/libs/feature/map/src/lib/+state/map.selectors.d.ts.map +1 -1
  297. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts +1 -1
  298. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  299. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts +8 -10
  300. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  301. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +1 -1
  302. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  303. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +3 -3
  304. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  305. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +2 -2
  306. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  307. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +2 -2
  308. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  309. package/libs/feature/map/src/lib/constant/index.d.ts +0 -1
  310. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  311. package/libs/feature/map/src/lib/feature-map.module.d.ts +12 -23
  312. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  313. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +7 -7
  314. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  315. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +5 -4
  316. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  317. package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts +14 -0
  318. package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts.map +1 -0
  319. package/libs/feature/map/src/lib/style/map-style.fixtures.d.ts +2 -2
  320. package/libs/feature/map/src/lib/style/map-style.fixtures.d.ts.map +1 -1
  321. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +0 -30
  322. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  323. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +3 -3
  324. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  325. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +10 -7
  326. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  327. package/libs/feature/record/src/lib/feature-record.module.d.ts +13 -11
  328. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  329. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +14 -20
  330. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  331. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
  332. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  333. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +12 -3
  334. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  335. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
  336. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  337. package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts +1 -1
  338. package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts.map +1 -1
  339. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +9 -10
  340. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  341. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +2 -2
  342. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +1 -1
  343. package/libs/ui/elements/src/index.d.ts +2 -1
  344. package/libs/ui/elements/src/index.d.ts.map +1 -1
  345. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +18 -0
  346. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
  347. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +2 -2
  348. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  349. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -7
  350. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  351. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +2 -2
  352. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  353. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts +2 -2
  354. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  355. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -3
  356. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  357. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
  358. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +8 -6
  359. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  360. package/libs/ui/inputs/src/index.d.ts +5 -0
  361. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  362. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +9 -1
  363. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  364. package/libs/ui/inputs/src/lib/badge/badge.component.d.ts.map +1 -1
  365. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  366. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  367. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
  368. package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
  369. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +5 -3
  370. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -1
  371. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts +24 -0
  372. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -0
  373. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +4 -5
  374. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -1
  375. package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts +1 -1
  376. package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts.map +1 -1
  377. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts +16 -0
  378. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts.map +1 -0
  379. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +0 -4
  380. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  381. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +2 -4
  382. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
  383. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +33 -35
  384. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  385. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +18 -0
  386. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -0
  387. package/libs/ui/layout/src/index.d.ts +2 -0
  388. package/libs/ui/layout/src/index.d.ts.map +1 -1
  389. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts +2 -2
  390. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts.map +1 -1
  391. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +1 -1
  392. package/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.d.ts +20 -0
  393. package/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.d.ts.map +1 -0
  394. package/libs/ui/layout/src/lib/sortable-list/sortable-list.component.d.ts +14 -0
  395. package/libs/ui/layout/src/lib/sortable-list/sortable-list.component.d.ts.map +1 -0
  396. package/libs/ui/map/src/index.d.ts +3 -2
  397. package/libs/ui/map/src/index.d.ts.map +1 -1
  398. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +3 -4
  399. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  400. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +37 -0
  401. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -0
  402. package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts +18 -0
  403. package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts.map +1 -0
  404. package/libs/ui/map/src/lib/map-utils.d.ts +7 -0
  405. package/libs/ui/map/src/lib/map-utils.d.ts.map +1 -0
  406. package/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.d.ts +3 -3
  407. package/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.d.ts.map +1 -1
  408. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +10 -1
  409. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  410. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +8 -4
  411. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  412. package/libs/ui/widgets/src/index.d.ts +1 -0
  413. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  414. package/libs/ui/widgets/src/lib/popover/popover.component.d.ts +19 -0
  415. package/libs/ui/widgets/src/lib/popover/popover.component.d.ts.map +1 -0
  416. package/libs/util/app-config/src/index.d.ts +1 -0
  417. package/libs/util/app-config/src/index.d.ts.map +1 -1
  418. package/libs/util/app-config/src/lib/fixtures.d.ts +8 -8
  419. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  420. package/libs/util/app-config/src/lib/map-layers.d.ts +4 -0
  421. package/libs/util/app-config/src/lib/map-layers.d.ts.map +1 -0
  422. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  423. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  424. package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -6
  425. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  426. package/libs/util/shared/src/lib/services/theme.service.d.ts.map +1 -1
  427. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -1
  428. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -1
  429. package/package.json +5 -3
  430. package/src/libs/api/metadata-converter/src/index.ts +3 -1
  431. package/src/libs/api/metadata-converter/src/lib/common/license.ts +66 -0
  432. package/src/libs/api/metadata-converter/src/lib/common/url.ts +15 -0
  433. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +378 -0
  434. package/src/libs/api/metadata-converter/src/lib/dcat-ap/index.ts +1 -0
  435. package/src/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.ts +17 -0
  436. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +370 -0
  437. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.ts +95 -0
  438. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/individual-name.ts +20 -0
  439. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/keyword.mapper.ts +16 -0
  440. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/role.mapper.ts +48 -0
  441. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.ts +97 -0
  442. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/status.mapper.ts +19 -0
  443. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/update-frequency.mapper.ts +67 -0
  444. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.ts +1 -0
  445. package/src/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.ts +68 -0
  446. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +13 -0
  447. package/src/libs/api/metadata-converter/src/lib/fixtures/eu.dcat-ap.records.ts +272 -0
  448. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +7 -2
  449. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +6 -2
  450. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +38 -13
  451. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +6 -2
  452. package/src/libs/api/metadata-converter/src/lib/fixtures/opendataswiss.records.ts +110 -0
  453. package/src/libs/api/metadata-converter/src/lib/fixtures/sextant.records.ts +85 -0
  454. package/src/libs/api/metadata-converter/src/lib/fixtures/vlaanderen.dcat-ap.records.ts +73 -0
  455. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +18 -16
  456. package/src/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.ts +2 -6
  457. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +5 -6
  458. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +12 -4
  459. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +21 -43
  460. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +11 -16
  461. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +85 -17
  462. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.ts +39 -0
  463. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +203 -157
  464. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +50 -7
  465. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +156 -72
  466. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +12 -1
  467. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +90 -15
  468. package/src/libs/common/domain/src/lib/model/record/contact.model.ts +29 -1
  469. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +10 -8
  470. package/src/libs/common/domain/src/lib/model/user/user.model.ts +1 -1
  471. package/src/libs/common/domain/src/lib/platform.service.interface.ts +30 -0
  472. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +20 -0
  473. package/src/libs/common/fixtures/src/index.ts +3 -1
  474. package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +37 -37
  475. package/src/libs/common/fixtures/src/lib/elasticsearch/{aggregations-request.ts → aggregations-request.fixtures.ts} +1 -3
  476. package/src/libs/common/fixtures/src/lib/elasticsearch/{aggregations-response.ts → aggregations-response.fixtures.ts} +6 -8
  477. package/src/libs/common/fixtures/src/lib/elasticsearch/{full-response.ts → full-response.fixtures.ts} +1 -3
  478. package/src/libs/common/fixtures/src/lib/elasticsearch/index.ts +5 -5
  479. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +1 -3
  480. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata.fixtures.ts +1739 -1742
  481. package/src/libs/common/fixtures/src/lib/elasticsearch/{search-requests.ts → search-requests.fixtures.ts} +1 -3
  482. package/src/libs/common/fixtures/src/lib/elasticsearch/{search-responses.ts → search-responses.fixtures.ts} +4 -6
  483. package/src/libs/common/fixtures/src/lib/geojson.fixtures.ts +57178 -57195
  484. package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +2 -4
  485. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +233 -164
  486. package/src/libs/common/fixtures/src/lib/map/index.ts +1 -0
  487. package/src/libs/common/fixtures/src/lib/map/map-context.fixtures.ts +53 -0
  488. package/src/libs/common/fixtures/src/lib/ol-feature.fixtures.ts +10 -0
  489. package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +37 -3
  490. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +9 -7
  491. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +9 -9
  492. package/src/libs/common/fixtures/src/lib/repository.fixtures.ts +4 -4
  493. package/src/libs/common/fixtures/src/lib/search/aggregations.ts +2 -3
  494. package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +14 -15
  495. package/src/libs/common/fixtures/src/lib/user.fixtures.ts +32 -15
  496. package/src/libs/data-access/gn4/src/fixtures/site.fixtures.ts +4 -4
  497. package/src/libs/data-access/gn4/src/fixtures/ui.fixtures.ts +2 -2
  498. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +1 -5
  499. package/src/libs/data-access/gn4/src/spec.yaml +0 -8
  500. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +5 -1
  501. package/src/libs/feature/catalog/src/lib/sources/sources.fixture.ts +1 -1
  502. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +3 -3
  503. package/src/libs/feature/dataviz/src/lib/feature-dataviz.module.ts +6 -2
  504. package/src/libs/feature/dataviz/src/lib/figure/figure.fixtures.ts +2 -2
  505. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +5 -2
  506. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +38 -78
  507. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +6 -6
  508. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +4 -4
  509. package/src/libs/feature/editor/src/index.ts +1 -0
  510. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +2 -0
  511. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +26 -4
  512. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +4 -0
  513. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +15 -0
  514. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.ts +18 -0
  515. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.html +26 -0
  516. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +90 -0
  517. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.html +47 -0
  518. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +132 -0
  519. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.html +35 -0
  520. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +79 -0
  521. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.css +4 -0
  522. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +66 -0
  523. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +210 -0
  524. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.html +4 -0
  525. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.ts +21 -0
  526. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +7 -16
  527. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +44 -45
  528. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css +8 -0
  529. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +13 -5
  530. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +1 -0
  531. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts +86 -0
  532. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +34 -0
  533. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +182 -0
  534. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.css +0 -0
  535. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.html +6 -0
  536. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +48 -0
  537. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.css +0 -0
  538. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +11 -0
  539. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +122 -0
  540. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +15 -8
  541. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +11 -14
  542. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.html +5 -3
  543. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.ts +11 -4
  544. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +20 -1
  545. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +212 -1
  546. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.css +4 -0
  547. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.html +31 -4
  548. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +43 -86
  549. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +4 -0
  550. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +16 -14
  551. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +17 -15
  552. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +110 -68
  553. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +51 -44
  554. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -1
  555. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +32 -29
  556. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +9 -3
  557. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +2 -6
  558. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +1 -1
  559. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +2 -1
  560. package/src/libs/feature/editor/src/lib/fields.config.ts +76 -7
  561. package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +12 -0
  562. package/src/libs/feature/editor/src/lib/services/editor.service.ts +14 -3
  563. package/src/libs/feature/map/src/index.ts +1 -8
  564. package/src/libs/feature/map/src/lib/+state/map.actions.ts +10 -25
  565. package/src/libs/feature/map/src/lib/+state/map.facade.ts +11 -15
  566. package/src/libs/feature/map/src/lib/+state/map.reducer.ts +16 -53
  567. package/src/libs/feature/map/src/lib/+state/map.selectors.ts +7 -2
  568. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +3 -0
  569. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +23 -22
  570. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +22 -11
  571. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +1 -1
  572. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +21 -19
  573. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +1 -1
  574. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +17 -10
  575. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +1 -1
  576. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +17 -10
  577. package/src/libs/feature/map/src/lib/constant/index.ts +0 -1
  578. package/src/libs/feature/map/src/lib/feature-map.module.ts +2 -41
  579. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +38 -20
  580. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +2 -2
  581. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +39 -6
  582. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.css +0 -0
  583. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.html +4 -0
  584. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.ts +29 -0
  585. package/src/libs/feature/map/src/lib/style/map-style.fixtures.ts +29 -27
  586. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -232
  587. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +3 -3
  588. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +29 -20
  589. package/src/libs/feature/record/src/lib/feature-record.module.ts +11 -3
  590. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +4 -4
  591. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +45 -72
  592. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +5 -1
  593. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +2 -1
  594. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +3 -1
  595. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +61 -3
  596. package/src/libs/feature/search/src/lib/state/fixtures/search-state.fixtures.ts +2 -2
  597. package/src/libs/feature/search/src/lib/state/search.facade.ts +6 -0
  598. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +8 -1
  599. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +0 -3
  600. package/src/libs/ui/dataviz/src/lib/chart/chart.fixtures.ts +2 -2
  601. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +2 -2
  602. package/src/libs/ui/elements/src/index.ts +2 -1
  603. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.css +0 -0
  604. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +12 -0
  605. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +37 -0
  606. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +4 -4
  607. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +7 -7
  608. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -3
  609. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +13 -17
  610. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -1
  611. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +7 -1
  612. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +12 -8
  613. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +14 -20
  614. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +0 -10
  615. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.html +1 -1
  616. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +2 -2
  617. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +8 -2
  618. package/src/libs/ui/inputs/src/index.ts +5 -0
  619. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.css +25 -18
  620. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +38 -24
  621. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +19 -4
  622. package/src/libs/ui/inputs/src/lib/badge/badge.component.html +12 -3
  623. package/src/libs/ui/inputs/src/lib/badge/badge.component.ts +2 -1
  624. package/src/libs/ui/inputs/src/lib/button/button.component.ts +15 -1
  625. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +7 -2
  626. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +14 -6
  627. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +7 -1
  628. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.css +7 -2
  629. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.html +28 -23
  630. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +7 -1
  631. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +40 -26
  632. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.css +4 -0
  633. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.html +89 -0
  634. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +92 -0
  635. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +4 -0
  636. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +76 -68
  637. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +17 -14
  638. package/src/libs/ui/inputs/src/lib/search-input/search-input.component.ts +5 -1
  639. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.css +4 -3
  640. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +0 -1
  641. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +1 -2
  642. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +3 -2
  643. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +3 -28
  644. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +4 -3
  645. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +4 -16
  646. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -6
  647. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.css +9 -0
  648. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.html +37 -0
  649. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +33 -0
  650. package/src/libs/ui/layout/src/index.ts +2 -0
  651. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +8 -3
  652. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +4 -3
  653. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +1 -0
  654. package/src/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.css +0 -0
  655. package/src/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.html +15 -0
  656. package/src/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.ts +44 -0
  657. package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.html +37 -0
  658. package/src/libs/ui/{elements → layout}/src/lib/sortable-list/sortable-list.component.ts +15 -18
  659. package/src/libs/ui/map/src/index.ts +3 -2
  660. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +1 -1
  661. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +8 -5
  662. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.css +0 -0
  663. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +203 -0
  664. package/src/libs/ui/map/src/lib/components/map-container/map-settings.token.ts +23 -0
  665. package/src/libs/ui/map/src/lib/map-utils.ts +54 -0
  666. package/src/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.ts +7 -6
  667. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +10 -1
  668. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +55 -3
  669. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +16 -4
  670. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +14 -15
  671. package/src/libs/ui/widgets/src/index.ts +1 -0
  672. package/src/libs/ui/widgets/src/lib/popover/popover.component.css +0 -0
  673. package/src/libs/ui/widgets/src/lib/popover/popover.component.html +3 -0
  674. package/src/libs/ui/widgets/src/lib/popover/popover.component.ts +85 -0
  675. package/src/libs/util/app-config/src/index.ts +1 -0
  676. package/src/libs/util/app-config/src/lib/fixtures.ts +9 -9
  677. package/src/libs/util/app-config/src/lib/map-layers.ts +31 -0
  678. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +4 -3
  679. package/src/libs/util/shared/src/lib/links/link-utils.ts +6 -6
  680. package/src/libs/util/shared/src/lib/services/theme.service.ts +1 -0
  681. package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +4 -1
  682. package/tailwind.base.config.js +1 -0
  683. package/tailwind.base.css +51 -7
  684. package/translations/de.json +84 -19
  685. package/translations/en.json +77 -12
  686. package/translations/es.json +74 -9
  687. package/translations/fr.json +88 -23
  688. package/translations/it.json +77 -12
  689. package/translations/nl.json +74 -9
  690. package/translations/pt.json +74 -9
  691. package/translations/sk.json +75 -10
  692. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +0 -15
  693. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.mjs +0 -17
  694. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.mjs +0 -17
  695. package/esm2022/libs/feature/map/src/lib/+state/map.effects.mjs +0 -15
  696. package/esm2022/libs/feature/map/src/lib/+state/map.models.mjs +0 -2
  697. package/esm2022/libs/feature/map/src/lib/constant/map-options.mjs +0 -8
  698. package/esm2022/libs/feature/map/src/lib/constant/style.constant.mjs +0 -17
  699. package/esm2022/libs/feature/map/src/lib/feature-info/feature-info.service.mjs +0 -38
  700. package/esm2022/libs/feature/map/src/lib/manager/map-instance.directive.mjs +0 -19
  701. package/esm2022/libs/feature/map/src/lib/manager/map-manager.service.mjs +0 -19
  702. package/esm2022/libs/feature/map/src/lib/map-container/map-container.component.mjs +0 -27
  703. package/esm2022/libs/feature/map/src/lib/map-context/component/map-context.component.mjs +0 -46
  704. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +0 -10
  705. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +0 -289
  706. package/esm2022/libs/ui/elements/src/lib/sortable-list/sortable-list.component.mjs +0 -43
  707. package/esm2022/libs/ui/map/src/lib/components/map/map.component.mjs +0 -40
  708. package/esm2022/libs/ui/map/src/lib/ui-map.module.mjs +0 -33
  709. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +0 -8
  710. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +0 -1
  711. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.d.ts +0 -8
  712. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.d.ts.map +0 -1
  713. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.d.ts +0 -8
  714. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.d.ts.map +0 -1
  715. package/libs/feature/map/src/lib/+state/map.effects.d.ts +0 -9
  716. package/libs/feature/map/src/lib/+state/map.effects.d.ts.map +0 -1
  717. package/libs/feature/map/src/lib/+state/map.models.d.ts +0 -9
  718. package/libs/feature/map/src/lib/+state/map.models.d.ts.map +0 -1
  719. package/libs/feature/map/src/lib/constant/map-options.d.ts +0 -9
  720. package/libs/feature/map/src/lib/constant/map-options.d.ts.map +0 -1
  721. package/libs/feature/map/src/lib/constant/style.constant.d.ts +0 -4
  722. package/libs/feature/map/src/lib/constant/style.constant.d.ts.map +0 -1
  723. package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts +0 -16
  724. package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts.map +0 -1
  725. package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts +0 -9
  726. package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts.map +0 -1
  727. package/libs/feature/map/src/lib/manager/map-manager.service.d.ts +0 -11
  728. package/libs/feature/map/src/lib/manager/map-manager.service.d.ts.map +0 -1
  729. package/libs/feature/map/src/lib/map-container/map-container.component.d.ts +0 -12
  730. package/libs/feature/map/src/lib/map-container/map-container.component.d.ts.map +0 -1
  731. package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts +0 -26
  732. package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts.map +0 -1
  733. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +0 -77
  734. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +0 -1
  735. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +0 -26
  736. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +0 -1
  737. package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts +0 -22
  738. package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts.map +0 -1
  739. package/libs/ui/map/src/lib/components/map/map.component.d.ts +0 -19
  740. package/libs/ui/map/src/lib/components/map/map.component.d.ts.map +0 -1
  741. package/libs/ui/map/src/lib/ui-map.module.d.ts +0 -13
  742. package/libs/ui/map/src/lib/ui-map.module.d.ts.map +0 -1
  743. package/src/libs/common/fixtures/src/lib/ol-feature.fixture.ts +0 -7
  744. package/src/libs/common/fixtures/src/lib/utils/freeze.ts +0 -10
  745. package/src/libs/common/fixtures/src/lib/utils/index.ts +0 -1
  746. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +0 -8
  747. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +0 -70
  748. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.html +0 -4
  749. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.ts +0 -15
  750. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.html +0 -7
  751. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.ts +0 -16
  752. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.html +0 -13
  753. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.ts +0 -16
  754. package/src/libs/feature/map/src/lib/+state/map.effects.ts +0 -7
  755. package/src/libs/feature/map/src/lib/+state/map.models.ts +0 -9
  756. package/src/libs/feature/map/src/lib/constant/map-options.ts +0 -17
  757. package/src/libs/feature/map/src/lib/feature-info/feature-info.service.ts +0 -42
  758. package/src/libs/feature/map/src/lib/manager/map-instance.directive.ts +0 -10
  759. package/src/libs/feature/map/src/lib/manager/map-manager.service.ts +0 -13
  760. package/src/libs/feature/map/src/lib/map-container/map-container.component.html +0 -1
  761. package/src/libs/feature/map/src/lib/map-container/map-container.component.ts +0 -26
  762. package/src/libs/feature/map/src/lib/map-context/component/map-context.component.html +0 -1
  763. package/src/libs/feature/map/src/lib/map-context/component/map-context.component.ts +0 -57
  764. package/src/libs/feature/map/src/lib/map-context/map-context.fixtures.ts +0 -51
  765. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +0 -95
  766. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +0 -318
  767. package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.html +0 -36
  768. package/src/libs/ui/map/src/lib/components/map/map.component.ts +0 -57
  769. package/src/libs/ui/map/src/lib/ui-map.module.ts +0 -19
  770. /package/src/libs/feature/editor/src/lib/components/{overview-upload/overview-upload.component.css → contact-card/contact-card.component.css} +0 -0
  771. /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css → generic-keywords/generic-keywords.component.css} +0 -0
  772. /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.css → import-record/import-record.component.css} +0 -0
  773. /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.css → online-resource-card/online-resource-card.component.css} +0 -0
  774. /package/src/libs/feature/{map/src/lib/map-container/map-container.component.css → editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.css} +0 -0
  775. /package/src/libs/feature/{map/src/lib/map-context/component/map-context.component.css → editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.css} +0 -0
  776. /package/src/libs/{ui/map/src/lib/components/map/map.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.css} +0 -0
  777. /package/src/libs/ui/{elements → layout}/src/lib/sortable-list/sortable-list.component.css +0 -0
  778. /package/src/libs/ui/map/src/lib/components/{map/map.component.html → map-container/map-container.component.html} +0 -0
@@ -1,34 +1,59 @@
1
- import { Component, ChangeDetectionStrategy } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
2
  import { MapFacade } from '../+state/map.facade';
3
+ import { firstValueFrom, map } from 'rxjs';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { UiLayoutModule } from '../../../../../../libs/ui/layout/src';
6
+ import { MatTabsModule } from '@angular/material/tabs';
7
+ import { AddLayerFromOgcApiComponent } from '../add-layer-from-ogc-api/add-layer-from-ogc-api.component';
8
+ import { AddLayerFromWfsComponent } from '../add-layer-from-wfs/add-layer-from-wfs.component';
9
+ import { AddLayerFromWmsComponent } from '../add-layer-from-wms/add-layer-from-wms.component';
10
+ import { AddLayerFromCatalogComponent } from '../add-layer-from-catalog/add-layer-from-catalog.component';
11
+ import { AddLayerFromFileComponent } from '../add-layer-from-file/add-layer-from-file.component';
12
+ import { TranslateModule } from '@ngx-translate/core';
13
+ import { CommonModule } from '@angular/common';
3
14
  import * as i0 from "@angular/core";
4
15
  import * as i1 from "../+state/map.facade";
5
- import * as i2 from "@angular/common";
16
+ import * as i2 from "@angular/material/icon";
6
17
  import * as i3 from "../../../../../ui/layout/src/lib/expandable-panel-button/expandable-panel-button.component";
7
- import * as i4 from "@angular/material/icon";
8
- import * as i5 from "@angular/material/tabs";
9
- import * as i6 from "@ngx-translate/core";
10
- import * as i7 from "../add-layer-from-ogc-api/add-layer-from-ogc-api.component";
11
- import * as i8 from "../add-layer-from-catalog/add-layer-from-catalog.component";
12
- import * as i9 from "../add-layer-from-wms/add-layer-from-wms.component";
13
- import * as i10 from "../add-layer-from-file/add-layer-from-file.component";
14
- import * as i11 from "../add-layer-from-wfs/add-layer-from-wfs.component";
18
+ import * as i4 from "@angular/material/tabs";
19
+ import * as i5 from "@ngx-translate/core";
20
+ import * as i6 from "@angular/common";
15
21
  export class LayersPanelComponent {
16
22
  constructor(mapFacade) {
17
23
  this.mapFacade = mapFacade;
18
- this.layers$ = this.mapFacade.layers$;
24
+ this.layers$ = this.mapFacade.context$.pipe(map((context) => context.layers));
19
25
  this.ogcUrl = '';
20
26
  }
21
- deleteLayer(index) {
22
- this.mapFacade.removeLayer(index);
27
+ async deleteLayer(index) {
28
+ const context = await firstValueFrom(this.mapFacade.context$);
29
+ this.mapFacade.applyContext({
30
+ ...context,
31
+ layers: context.layers.filter((_, i) => i !== index),
32
+ });
23
33
  }
24
- addLayer(layer) {
25
- this.mapFacade.addLayer(layer);
34
+ async addLayer(layer) {
35
+ const context = await firstValueFrom(this.mapFacade.context$);
36
+ this.mapFacade.applyContext({
37
+ ...context,
38
+ layers: [...context.layers, layer],
39
+ });
26
40
  }
27
41
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, deps: [{ token: i1.MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i7.AddLayerFromOgcApiComponent, selector: "gn-ui-add-layer-from-ogc-api", inputs: ["ogcUrl"], outputs: ["layerAdded"] }, { kind: "component", type: i8.AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: i9.AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: i10.AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: i11.AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayersPanelComponent, isStandalone: true, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.label }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index); $event.preventDefault()\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: UiLayoutModule }, { kind: "component", type: i3.ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: AddLayerFromOgcApiComponent, selector: "gn-ui-add-layer-from-ogc-api", inputs: ["ogcUrl"], outputs: ["layerAdded"] }, { kind: "component", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "component", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
43
  }
30
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, decorators: [{
31
45
  type: Component,
32
- args: [{ selector: 'gn-ui-layers-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n" }]
46
+ args: [{ selector: 'gn-ui-layers-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
47
+ MatIconModule,
48
+ UiLayoutModule,
49
+ MatTabsModule,
50
+ AddLayerFromOgcApiComponent,
51
+ AddLayerFromWfsComponent,
52
+ AddLayerFromWmsComponent,
53
+ AddLayerFromCatalogComponent,
54
+ AddLayerFromFileComponent,
55
+ TranslateModule,
56
+ CommonModule,
57
+ ], template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.label }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index); $event.preventDefault()\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n" }]
33
58
  }], ctorParameters: function () { return [{ type: i1.MapFacade }]; } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9sYXllcnMtcGFuZWwvbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9sYXllcnMtcGFuZWwvbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFBOzs7Ozs7Ozs7Ozs7O0FBUWhELE1BQU0sT0FBTyxvQkFBb0I7SUFHL0IsWUFBb0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUZ4QyxZQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUE7UUFDaEMsV0FBTSxHQUFHLEVBQUUsQ0FBQTtJQUNnQyxDQUFDO0lBRTVDLFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hDLENBQUM7K0dBWFUsb0JBQW9CO21HQUFwQixvQkFBb0IsMERDVGpDLG96RUErREE7OzRGRHREYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hcEZhY2FkZSB9IGZyb20gJy4uLytzdGF0ZS9tYXAuZmFjYWRlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1sYXllcnMtcGFuZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMYXllcnNQYW5lbENvbXBvbmVudCB7XG4gIGxheWVycyQgPSB0aGlzLm1hcEZhY2FkZS5sYXllcnMkXG4gIG9nY1VybCA9ICcnXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFwRmFjYWRlOiBNYXBGYWNhZGUpIHt9XG5cbiAgZGVsZXRlTGF5ZXIoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMubWFwRmFjYWRlLnJlbW92ZUxheWVyKGluZGV4KVxuICB9XG5cbiAgYWRkTGF5ZXIobGF5ZXIpIHtcbiAgICB0aGlzLm1hcEZhY2FkZS5hZGRMYXllcihsYXllcilcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImJnLXdoaXRlIHJvdW5kZWQgc2hhZG93IHNoYWRvdy1sZyByZWxhdGl2ZSBoLWZ1bGwgdy1bNDAwcHhdIG92ZXJmbG93LWhpZGRlblwiXG4+XG4gIDxkaXYgY2xhc3M9XCJwLTMgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtci0yXCI+bGF5ZXJzPC9tYXQtaWNvbj5cbiAgICA8c3BhbiB0cmFuc2xhdGU+bWFwLmxheWVycy5saXN0PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcHgtNCBkaXZpZGUteSBkaXZpZGUteS1ncmF5LTUwXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IGxheWVyIG9mIGxheWVycyQgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHB5LTNcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgLW1sLTIgbXItMiBzaHJpbmstMFwiXG4gICAgICAgID5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvblxuICAgICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtci0yIGdyb3dcIj57eyBsYXllci50aXRsZSB9fTwvc3Bhbj5cbiAgICAgIDxhXG4gICAgICAgIGhyZWZcbiAgICAgICAgY2xhc3M9XCJ1bmRlcmxpbmUgdGV4dC1zbSB0ZXh0LXJlZC03MDAgaG92ZXI6dGV4dC1yZWQtOTAwXCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUxheWVyKGluZGV4KVwiXG4gICAgICA+XG4gICAgICAgIGRlbGV0ZVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGduLXVpLWV4cGFuZGFibGUtcGFuZWwtYnV0dG9uIFt0aXRsZVRlbXBsYXRlXT1cImFkZExheWVyVGl0bGVcIj5cbiAgICA8bWF0LXRhYi1ncm91cCBhbmltYXRpb25EdXJhdGlvbj1cIjIwMG1zXCIgY2xhc3M9XCJoLWZ1bGxcIj5cbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCInbWFwLmFkZC5sYXllci5jYXRhbG9nJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XG4gICAgICAgICAgPGduLXVpLWFkZC1sYXllci1mcm9tLWNhdGFsb2c+PC9nbi11aS1hZGQtbGF5ZXItZnJvbS1jYXRhbG9nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCInbWFwLmFkZC5sYXllci53bXMnIHwgdHJhbnNsYXRlXCIgYm9keUNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgICAgICAgICA8Z24tdWktYWRkLWxheWVyLWZyb20td21zPjwvZ24tdWktYWRkLWxheWVyLWZyb20td21zPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCInbWFwLmFkZC5sYXllci53ZnMnIHwgdHJhbnNsYXRlXCIgYm9keUNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgICAgICAgICA8Z24tdWktYWRkLWxheWVyLWZyb20td2ZzPjwvZ24tdWktYWRkLWxheWVyLWZyb20td2ZzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCInbWFwLmFkZC5sYXllci5vZ2MuYXBpJyB8IHRyYW5zbGF0ZVwiIGJvZHlDbGFzcz1cImgtZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XG4gICAgICAgICAgPGduLXVpLWFkZC1sYXllci1mcm9tLW9nYy1hcGlcbiAgICAgICAgICAgIFtvZ2NVcmxdPVwib2djVXJsXCJcbiAgICAgICAgICAgIChsYXllckFkZGVkKT1cImFkZExheWVyKCRldmVudClcIlxuICAgICAgICAgID48L2duLXVpLWFkZC1sYXllci1mcm9tLW9nYy1hcGk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgW2xhYmVsXT1cIidtYXAuYWRkLmxheWVyLmZpbGUnIHwgdHJhbnNsYXRlXCIgYm9keUNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgICAgICAgICA8Z24tdWktYWRkLWxheWVyLWZyb20tZmlsZT48L2duLXVpLWFkZC1sYXllci1mcm9tLWZpbGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgPC9nbi11aS1leHBhbmRhYmxlLXBhbmVsLWJ1dHRvbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2FkZExheWVyVGl0bGU+XG4gIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbXItNFwiPmFkZF9jaXJjbGU8L21hdC1pY29uPlxuICA8c3BhbiB0cmFuc2xhdGU+bWFwLmFkZC5sYXllcjwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9sYXllcnMtcGFuZWwvbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9sYXllcnMtcGFuZWwvbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3RELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFBO0FBQ3hHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFBO0FBQzdGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFBO0FBQzdGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDREQUE0RCxDQUFBO0FBQ3pHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFBO0FBQ2hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7Ozs7Ozs7O0FBcUI5QyxNQUFNLE9BQU8sb0JBQW9CO0lBRy9CLFlBQW9CLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFGeEMsWUFBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQ3hFLFdBQU0sR0FBRyxFQUFFLENBQUE7SUFDZ0MsQ0FBQztJQUU1QyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQWE7UUFDN0IsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztZQUMxQixHQUFHLE9BQU87WUFDVixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDO1NBQ3JELENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQXNCO1FBQ25DLE1BQU0sT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7WUFDMUIsR0FBRyxPQUFPO1lBQ1YsTUFBTSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztTQUNuQyxDQUFDLENBQUE7SUFDSixDQUFDOytHQW5CVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw4RUNsQ2pDLDYwRUErREEseUREekNJLGFBQWEsbUxBQ2IsY0FBYyxpTEFDZCxhQUFhLHlUQUNiLDJCQUEyQixzSEFDM0Isd0JBQXdCLHFFQUN4Qix3QkFBd0IscUVBQ3hCLDRCQUE0Qix5RUFDNUIseUJBQXlCLHFFQUN6QixlQUFlLGtPQUNmLFlBQVk7OzRGQUdILG9CQUFvQjtrQkFuQmhDLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLDJCQUEyQjt3QkFDM0Isd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLDRCQUE0Qjt3QkFDNUIseUJBQXlCO3dCQUN6QixlQUFlO3dCQUNmLFlBQVk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hcEZhY2FkZSB9IGZyb20gJy4uLytzdGF0ZS9tYXAuZmFjYWRlJ1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIG1hcCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBNYXBDb250ZXh0TGF5ZXIgfSBmcm9tICdAZ2Vvc3BhdGlhbC1zZGsvY29yZSdcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJ1xuaW1wb3J0IHsgVWlMYXlvdXRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMnXG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicydcbmltcG9ydCB7IEFkZExheWVyRnJvbU9nY0FwaUNvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1sYXllci1mcm9tLW9nYy1hcGkvYWRkLWxheWVyLWZyb20tb2djLWFwaS5jb21wb25lbnQnXG5pbXBvcnQgeyBBZGRMYXllckZyb21XZnNDb21wb25lbnQgfSBmcm9tICcuLi9hZGQtbGF5ZXItZnJvbS13ZnMvYWRkLWxheWVyLWZyb20td2ZzLmNvbXBvbmVudCdcbmltcG9ydCB7IEFkZExheWVyRnJvbVdtc0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1sYXllci1mcm9tLXdtcy9hZGQtbGF5ZXItZnJvbS13bXMuY29tcG9uZW50J1xuaW1wb3J0IHsgQWRkTGF5ZXJGcm9tQ2F0YWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1sYXllci1mcm9tLWNhdGFsb2cvYWRkLWxheWVyLWZyb20tY2F0YWxvZy5jb21wb25lbnQnXG5pbXBvcnQgeyBBZGRMYXllckZyb21GaWxlQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkLWxheWVyLWZyb20tZmlsZS9hZGQtbGF5ZXItZnJvbS1maWxlLmNvbXBvbmVudCdcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWxheWVycy1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXllcnMtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sYXllcnMtcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIFVpTGF5b3V0TW9kdWxlLFxuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgQWRkTGF5ZXJGcm9tT2djQXBpQ29tcG9uZW50LFxuICAgIEFkZExheWVyRnJvbVdmc0NvbXBvbmVudCxcbiAgICBBZGRMYXllckZyb21XbXNDb21wb25lbnQsXG4gICAgQWRkTGF5ZXJGcm9tQ2F0YWxvZ0NvbXBvbmVudCxcbiAgICBBZGRMYXllckZyb21GaWxlQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExheWVyc1BhbmVsQ29tcG9uZW50IHtcbiAgbGF5ZXJzJCA9IHRoaXMubWFwRmFjYWRlLmNvbnRleHQkLnBpcGUobWFwKChjb250ZXh0KSA9PiBjb250ZXh0LmxheWVycykpXG4gIG9nY1VybCA9ICcnXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFwRmFjYWRlOiBNYXBGYWNhZGUpIHt9XG5cbiAgYXN5bmMgZGVsZXRlTGF5ZXIoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1hcEZhY2FkZS5jb250ZXh0JClcbiAgICB0aGlzLm1hcEZhY2FkZS5hcHBseUNvbnRleHQoe1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIGxheWVyczogY29udGV4dC5sYXllcnMuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCksXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGFkZExheWVyKGxheWVyOiBNYXBDb250ZXh0TGF5ZXIpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tYXBGYWNhZGUuY29udGV4dCQpXG4gICAgdGhpcy5tYXBGYWNhZGUuYXBwbHlDb250ZXh0KHtcbiAgICAgIC4uLmNvbnRleHQsXG4gICAgICBsYXllcnM6IFsuLi5jb250ZXh0LmxheWVycywgbGF5ZXJdLFxuICAgIH0pXG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJiZy13aGl0ZSByb3VuZGVkIHNoYWRvdyBzaGFkb3ctbGcgcmVsYXRpdmUgaC1mdWxsIHctWzQwMHB4XSBvdmVyZmxvdy1oaWRkZW5cIlxuPlxuICA8ZGl2IGNsYXNzPVwicC0zIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbXItMlwiPmxheWVyczwvbWF0LWljb24+XG4gICAgPHNwYW4gdHJhbnNsYXRlPm1hcC5sYXllcnMubGlzdDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHB4LTQgZGl2aWRlLXkgZGl2aWRlLXktZ3JheS01MFwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBsYXllciBvZiBsYXllcnMkIHwgYXN5bmM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBweS0zXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIC1tbC0yIG1yLTIgc2hyaW5rLTBcIlxuICAgICAgICA+Y2hldnJvbl9yaWdodDwvbWF0LWljb25cbiAgICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwibXItMiBncm93XCI+e3sgbGF5ZXIubGFiZWwgfX08L3NwYW4+XG4gICAgICA8YVxuICAgICAgICBocmVmXG4gICAgICAgIGNsYXNzPVwidW5kZXJsaW5lIHRleHQtc20gdGV4dC1yZWQtNzAwIGhvdmVyOnRleHQtcmVkLTkwMFwiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVMYXllcihpbmRleCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgID5cbiAgICAgICAgZGVsZXRlXG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8Z24tdWktZXhwYW5kYWJsZS1wYW5lbC1idXR0b24gW3RpdGxlVGVtcGxhdGVdPVwiYWRkTGF5ZXJUaXRsZVwiPlxuICAgIDxtYXQtdGFiLWdyb3VwIGFuaW1hdGlvbkR1cmF0aW9uPVwiMjAwbXNcIiBjbGFzcz1cImgtZnVsbFwiPlxuICAgICAgPG1hdC10YWIgW2xhYmVsXT1cIidtYXAuYWRkLmxheWVyLmNhdGFsb2cnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgICAgICAgICA8Z24tdWktYWRkLWxheWVyLWZyb20tY2F0YWxvZz48L2duLXVpLWFkZC1sYXllci1mcm9tLWNhdGFsb2c+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgW2xhYmVsXT1cIidtYXAuYWRkLmxheWVyLndtcycgfCB0cmFuc2xhdGVcIiBib2R5Q2xhc3M9XCJoLWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxuICAgICAgICAgIDxnbi11aS1hZGQtbGF5ZXItZnJvbS13bXM+PC9nbi11aS1hZGQtbGF5ZXItZnJvbS13bXM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgW2xhYmVsXT1cIidtYXAuYWRkLmxheWVyLndmcycgfCB0cmFuc2xhdGVcIiBib2R5Q2xhc3M9XCJoLWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxuICAgICAgICAgIDxnbi11aS1hZGQtbGF5ZXItZnJvbS13ZnM+PC9nbi11aS1hZGQtbGF5ZXItZnJvbS13ZnM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgW2xhYmVsXT1cIidtYXAuYWRkLmxheWVyLm9nYy5hcGknIHwgdHJhbnNsYXRlXCIgYm9keUNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgICAgICAgICA8Z24tdWktYWRkLWxheWVyLWZyb20tb2djLWFwaVxuICAgICAgICAgICAgW29nY1VybF09XCJvZ2NVcmxcIlxuICAgICAgICAgICAgKGxheWVyQWRkZWQpPVwiYWRkTGF5ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZ24tdWktYWRkLWxheWVyLWZyb20tb2djLWFwaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBbbGFiZWxdPVwiJ21hcC5hZGQubGF5ZXIuZmlsZScgfCB0cmFuc2xhdGVcIiBib2R5Q2xhc3M9XCJoLWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxuICAgICAgICAgIDxnbi11aS1hZGQtbGF5ZXItZnJvbS1maWxlPjwvZ24tdWktYWRkLWxheWVyLWZyb20tZmlsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuICA8L2duLXVpLWV4cGFuZGFibGUtcGFuZWwtYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkTGF5ZXJUaXRsZT5cbiAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtci00XCI+YWRkX2NpcmNsZTwvbWF0LWljb24+XG4gIDxzcGFuIHRyYW5zbGF0ZT5tYXAuYWRkLmxheWVyPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { MapFacade } from '../+state/map.facade';
3
+ import { MapContainerComponent } from '../../../../../../libs/ui/map/src';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../+state/map.facade";
7
+ import * as i2 from "@angular/common";
8
+ export class MapStateContainerComponent {
9
+ constructor(mapFacade) {
10
+ this.mapFacade = mapFacade;
11
+ this.context$ = this.mapFacade.context$;
12
+ }
13
+ handleFeaturesClicked(features) {
14
+ if (!features.length) {
15
+ this.mapFacade.clearFeatureSelection();
16
+ return;
17
+ }
18
+ this.mapFacade.selectFeatures(features);
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapStateContainerComponent, deps: [{ token: i1.MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MapStateContainerComponent, isStandalone: true, selector: "gn-ui-map-state-container", ngImport: i0, template: "<gn-ui-map-container\n [context]=\"context$ | async\"\n (featuresClick)=\"handleFeaturesClicked($event)\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapStateContainerComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'gn-ui-map-state-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MapContainerComponent, CommonModule], template: "<gn-ui-map-container\n [context]=\"context$ | async\"\n (featuresClick)=\"handleFeaturesClicked($event)\"\n></gn-ui-map-container>\n" }]
26
+ }], ctorParameters: function () { return [{ type: i1.MapFacade }]; } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXN0YXRlLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvbWFwLXN0YXRlLWNvbnRhaW5lci9tYXAtc3RhdGUtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9tYXAtc3RhdGUtY29udGFpbmVyL21hcC1zdGF0ZS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7O0FBVzlDLE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFBb0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUZ4QyxhQUFRLEdBQTJCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFBO0lBRWYsQ0FBQztJQUU1QyxxQkFBcUIsQ0FBQyxRQUFtQjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUE7WUFDdEMsT0FBTTtTQUNQO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDekMsQ0FBQzsrR0FYVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixxRkNoQnZDLHdJQUlBLDBERFVZLHFCQUFxQiw2SUFBRSxZQUFZOzs0RkFFbEMsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgTWFwRmFjYWRlIH0gZnJvbSAnLi4vK3N0YXRlL21hcC5mYWNhZGUnXG5pbXBvcnQgeyBNYXBDb250ZXh0IH0gZnJvbSAnQGdlb3NwYXRpYWwtc2RrL2NvcmUnXG5pbXBvcnQgeyBNYXBDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL21hcC9zcmMnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnZ2VvanNvbidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktbWFwLXN0YXRlLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtc3RhdGUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFwLXN0YXRlLWNvbnRhaW5lci5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTWFwQ29udGFpbmVyQ29tcG9uZW50LCBDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBTdGF0ZUNvbnRhaW5lckNvbXBvbmVudCB7XG4gIGNvbnRleHQkOiBPYnNlcnZhYmxlPE1hcENvbnRleHQ+ID0gdGhpcy5tYXBGYWNhZGUuY29udGV4dCRcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hcEZhY2FkZTogTWFwRmFjYWRlKSB7fVxuXG4gIGhhbmRsZUZlYXR1cmVzQ2xpY2tlZChmZWF0dXJlczogRmVhdHVyZVtdKSB7XG4gICAgaWYgKCFmZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubWFwRmFjYWRlLmNsZWFyRmVhdHVyZVNlbGVjdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5tYXBGYWNhZGUuc2VsZWN0RmVhdHVyZXMoZmVhdHVyZXMpXG4gIH1cbn1cbiIsIjxnbi11aS1tYXAtY29udGFpbmVyXG4gIFtjb250ZXh0XT1cImNvbnRleHQkIHwgYXN5bmNcIlxuICAoZmVhdHVyZXNDbGljayk9XCJoYW5kbGVGZWF0dXJlc0NsaWNrZWQoJGV2ZW50KVwiXG4+PC9nbi11aS1tYXAtY29udGFpbmVyPlxuIl19
@@ -2,7 +2,7 @@ import { Circle, Fill, Stroke, Style } from 'ol/style';
2
2
  const colorPrimary = 'blue';
3
3
  const colorSecondary = 'red';
4
4
  const colorStroke = 'white';
5
- export const DEFAULT_STYLE_FIXTURE = new Style({
5
+ export const defaultMapStyleFixture = () => new Style({
6
6
  image: new Circle({
7
7
  fill: new Fill({
8
8
  color: colorPrimary,
@@ -21,7 +21,7 @@ export const DEFAULT_STYLE_FIXTURE = new Style({
21
21
  width: 2,
22
22
  }),
23
23
  });
24
- export const DEFAULT_STYLE_HL_FIXTURE = new Style({
24
+ export const defaultMapStyleHlFixture = () => new Style({
25
25
  image: new Circle({
26
26
  fill: new Fill({
27
27
  color: colorSecondary,
@@ -40,4 +40,4 @@ export const DEFAULT_STYLE_HL_FIXTURE = new Style({
40
40
  width: 3,
41
41
  }),
42
42
  });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXN0eWxlLmZpeHR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL21hcC9zcmMvbGliL3N0eWxlL21hcC1zdHlsZS5maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXRELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQTtBQUMzQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUE7QUFDNUIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFBO0FBRTNCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksS0FBSyxDQUFDO0lBQzdDLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQztRQUNoQixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUM7WUFDYixLQUFLLEVBQUUsWUFBWTtTQUNwQixDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUksTUFBTSxDQUFDO1lBQ2pCLEtBQUssRUFBRSxXQUFXO1lBQ2xCLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQztRQUNGLE1BQU0sRUFBRSxDQUFDO0tBQ1YsQ0FBQztJQUNGLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQztRQUNiLEtBQUssRUFBRSxvQkFBb0I7S0FDNUIsQ0FBQztJQUNGLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQztRQUNqQixLQUFLLEVBQUUsV0FBVztRQUNsQixLQUFLLEVBQUUsQ0FBQztLQUNULENBQUM7Q0FDSCxDQUFDLENBQUE7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLEtBQUssQ0FBQztJQUNoRCxLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUM7UUFDaEIsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDO1lBQ2IsS0FBSyxFQUFFLGNBQWM7U0FDdEIsQ0FBQztRQUNGLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQztZQUNqQixLQUFLLEVBQUUsV0FBVztZQUNsQixLQUFLLEVBQUUsQ0FBQztTQUNULENBQUM7UUFDRixNQUFNLEVBQUUsQ0FBQztLQUNWLENBQUM7SUFDRixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDYixLQUFLLEVBQUUsb0JBQW9CO0tBQzVCLENBQUM7SUFDRixNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUM7UUFDakIsS0FBSyxFQUFFLGNBQWM7UUFDckIsS0FBSyxFQUFFLENBQUM7S0FDVCxDQUFDO0NBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2lyY2xlLCBGaWxsLCBTdHJva2UsIFN0eWxlIH0gZnJvbSAnb2wvc3R5bGUnXG5cbmNvbnN0IGNvbG9yUHJpbWFyeSA9ICdibHVlJ1xuY29uc3QgY29sb3JTZWNvbmRhcnkgPSAncmVkJ1xuY29uc3QgY29sb3JTdHJva2UgPSAnd2hpdGUnXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NUWUxFX0ZJWFRVUkUgPSBuZXcgU3R5bGUoe1xuICBpbWFnZTogbmV3IENpcmNsZSh7XG4gICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgY29sb3I6IGNvbG9yUHJpbWFyeSxcbiAgICB9KSxcbiAgICBzdHJva2U6IG5ldyBTdHJva2Uoe1xuICAgICAgY29sb3I6IGNvbG9yU3Ryb2tlLFxuICAgICAgd2lkdGg6IDIsXG4gICAgfSksXG4gICAgcmFkaXVzOiA1LFxuICB9KSxcbiAgZmlsbDogbmV3IEZpbGwoe1xuICAgIGNvbG9yOiAncmdiYSgwLDAsMjU1LDAuMjUpJyxcbiAgfSksXG4gIHN0cm9rZTogbmV3IFN0cm9rZSh7XG4gICAgY29sb3I6IGNvbG9yU3Ryb2tlLFxuICAgIHdpZHRoOiAyLFxuICB9KSxcbn0pXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NUWUxFX0hMX0ZJWFRVUkUgPSBuZXcgU3R5bGUoe1xuICBpbWFnZTogbmV3IENpcmNsZSh7XG4gICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgY29sb3I6IGNvbG9yU2Vjb25kYXJ5LFxuICAgIH0pLFxuICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XG4gICAgICBjb2xvcjogY29sb3JTdHJva2UsXG4gICAgICB3aWR0aDogMyxcbiAgICB9KSxcbiAgICByYWRpdXM6IDYsXG4gIH0pLFxuICBmaWxsOiBuZXcgRmlsbCh7XG4gICAgY29sb3I6ICdyZ2JhKDI1NSwwLDAsMC4yNSknLFxuICB9KSxcbiAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcbiAgICBjb2xvcjogY29sb3JTZWNvbmRhcnksXG4gICAgd2lkdGg6IDMsXG4gIH0pLFxufSlcbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXN0eWxlLmZpeHR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL21hcC9zcmMvbGliL3N0eWxlL21hcC1zdHlsZS5maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXRELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQTtBQUMzQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUE7QUFDNUIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFBO0FBRTNCLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQVUsRUFBRSxDQUNoRCxJQUFJLEtBQUssQ0FBQztJQUNSLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQztRQUNoQixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUM7WUFDYixLQUFLLEVBQUUsWUFBWTtTQUNwQixDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUksTUFBTSxDQUFDO1lBQ2pCLEtBQUssRUFBRSxXQUFXO1lBQ2xCLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQztRQUNGLE1BQU0sRUFBRSxDQUFDO0tBQ1YsQ0FBQztJQUNGLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQztRQUNiLEtBQUssRUFBRSxvQkFBb0I7S0FDNUIsQ0FBQztJQUNGLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQztRQUNqQixLQUFLLEVBQUUsV0FBVztRQUNsQixLQUFLLEVBQUUsQ0FBQztLQUNULENBQUM7Q0FDSCxDQUFDLENBQUE7QUFFSixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFVLEVBQUUsQ0FDbEQsSUFBSSxLQUFLLENBQUM7SUFDUixLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUM7UUFDaEIsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDO1lBQ2IsS0FBSyxFQUFFLGNBQWM7U0FDdEIsQ0FBQztRQUNGLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQztZQUNqQixLQUFLLEVBQUUsV0FBVztZQUNsQixLQUFLLEVBQUUsQ0FBQztTQUNULENBQUM7UUFDRixNQUFNLEVBQUUsQ0FBQztLQUNWLENBQUM7SUFDRixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDYixLQUFLLEVBQUUsb0JBQW9CO0tBQzVCLENBQUM7SUFDRixNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUM7UUFDakIsS0FBSyxFQUFFLGNBQWM7UUFDckIsS0FBSyxFQUFFLENBQUM7S0FDVCxDQUFDO0NBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2lyY2xlLCBGaWxsLCBTdHJva2UsIFN0eWxlIH0gZnJvbSAnb2wvc3R5bGUnXG5cbmNvbnN0IGNvbG9yUHJpbWFyeSA9ICdibHVlJ1xuY29uc3QgY29sb3JTZWNvbmRhcnkgPSAncmVkJ1xuY29uc3QgY29sb3JTdHJva2UgPSAnd2hpdGUnXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0TWFwU3R5bGVGaXh0dXJlID0gKCk6IFN0eWxlID0+XG4gIG5ldyBTdHlsZSh7XG4gICAgaW1hZ2U6IG5ldyBDaXJjbGUoe1xuICAgICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgICBjb2xvcjogY29sb3JQcmltYXJ5LFxuICAgICAgfSksXG4gICAgICBzdHJva2U6IG5ldyBTdHJva2Uoe1xuICAgICAgICBjb2xvcjogY29sb3JTdHJva2UsXG4gICAgICAgIHdpZHRoOiAyLFxuICAgICAgfSksXG4gICAgICByYWRpdXM6IDUsXG4gICAgfSksXG4gICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgY29sb3I6ICdyZ2JhKDAsMCwyNTUsMC4yNSknLFxuICAgIH0pLFxuICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XG4gICAgICBjb2xvcjogY29sb3JTdHJva2UsXG4gICAgICB3aWR0aDogMixcbiAgICB9KSxcbiAgfSlcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRNYXBTdHlsZUhsRml4dHVyZSA9ICgpOiBTdHlsZSA9PlxuICBuZXcgU3R5bGUoe1xuICAgIGltYWdlOiBuZXcgQ2lyY2xlKHtcbiAgICAgIGZpbGw6IG5ldyBGaWxsKHtcbiAgICAgICAgY29sb3I6IGNvbG9yU2Vjb25kYXJ5LFxuICAgICAgfSksXG4gICAgICBzdHJva2U6IG5ldyBTdHJva2Uoe1xuICAgICAgICBjb2xvcjogY29sb3JTdHJva2UsXG4gICAgICAgIHdpZHRoOiAzLFxuICAgICAgfSksXG4gICAgICByYWRpdXM6IDYsXG4gICAgfSksXG4gICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgY29sb3I6ICdyZ2JhKDI1NSwwLDAsMC4yNSknLFxuICAgIH0pLFxuICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XG4gICAgICBjb2xvcjogY29sb3JTZWNvbmRhcnksXG4gICAgICB3aWR0aDogMyxcbiAgICB9KSxcbiAgfSlcbiJdfQ==
@@ -1,172 +1,27 @@
1
- import { HttpClient } from '@angular/common/http';
2
1
  import { Injectable } from '@angular/core';
3
- import { extend, isEmpty } from 'ol/extent';
2
+ import { extend } from 'ol/extent';
4
3
  import GeoJSON from 'ol/format/GeoJSON';
5
- import Map from 'ol/Map';
6
4
  import { transformExtent } from 'ol/proj';
7
- import ImageWMS from 'ol/source/ImageWMS';
8
- import TileWMS from 'ol/source/TileWMS';
9
- import VectorSource from 'ol/source/Vector';
10
- import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
11
- import { mouseOnly, noModifierKeys, platformModifierKeyOnly, primaryAction, } from 'ol/events/condition';
12
- import { map } from 'rxjs/operators';
13
- import { ProxyService } from '../../../../../../libs/util/shared/src';
14
- import { WmsEndpoint, WmtsEndpoint } from '@camptocamp/ogc-client';
15
- import { LONLAT_CRS_CODES } from '../constant/projections';
16
- import { fromEPSGCode, register } from 'ol/proj/proj4';
17
- import proj4 from 'proj4/dist/proj4';
18
- import { defaults as defaultControls } from 'ol/control/defaults';
19
5
  import * as i0 from "@angular/core";
20
- import * as i1 from "@angular/common/http";
21
- import * as i2 from "../../../../../../libs/util/shared/src";
22
- const FEATURE_PROJECTION = 'EPSG:3857';
23
- const DATA_PROJECTION = 'EPSG:4326';
24
6
  const GEOJSON = new GeoJSON();
25
7
  export class MapUtilsService {
26
- constructor(http, proxy) {
27
- this.http = http;
28
- this.proxy = proxy;
29
- this.readFeatureCollection = (featureCollection, featureProjection = FEATURE_PROJECTION, dataProjection = DATA_PROJECTION) => {
30
- return GEOJSON.readFeatures(featureCollection, {
31
- featureProjection,
32
- dataProjection,
33
- });
34
- };
35
- }
36
- createEmptyMap() {
37
- return new Map({
38
- controls: defaultControls({
39
- attribution: true,
40
- attributionOptions: { collapsible: false },
41
- }),
42
- pixelRatio: 1,
43
- });
44
- }
45
- isWMSLayer(layer) {
46
- return (layer.getSource() instanceof TileWMS ||
47
- layer.getSource() instanceof ImageWMS);
48
- }
49
- getGFIUrl(layer, map, coordinate) {
50
- const view = map.getView();
51
- const projection = view.getProjection();
52
- const resolution = view.getResolution();
53
- const source = layer.getSource();
54
- const params = {
55
- ...source.getParams(),
56
- INFO_FORMAT: 'application/json',
57
- };
58
- return source.getFeatureInfoUrl(coordinate, resolution, projection, params);
59
- }
60
- getVectorFeaturesFromClick(olMap, event) {
61
- const features = [];
62
- const hit = olMap.forEachFeatureAtPixel(event.pixel, (feature) => {
63
- return feature;
64
- }, { layerFilter: (layer) => layer.getSource() instanceof VectorSource });
65
- if (hit) {
66
- features.push(hit);
67
- }
68
- return features;
69
- }
70
- getGFIFeaturesObservablesFromClick(olMap, event) {
71
- const wmsLayers = olMap.getLayers().getArray().filter(this.isWMSLayer);
72
- if (wmsLayers.length > 0) {
73
- const { coordinate } = event;
74
- const gfiUrls = wmsLayers.reduce((urls, layer) => [...urls, this.getGFIUrl(layer, olMap, coordinate)], []);
75
- return gfiUrls.map((url) => this.http
76
- .get(url)
77
- .pipe(map((collection) => this.readFeatureCollection(collection))));
78
- }
79
- else {
80
- return [];
81
- }
82
- }
83
- /**
84
- * Will emit `null` if no extent could be computed
85
- */
86
- async getLayerExtent(layer) {
87
- let latLonExtent;
88
- if (layer &&
89
- layer.type === 'geojson' &&
90
- 'data' in layer &&
91
- typeof layer.data === 'object' &&
92
- layer.data.features[0] &&
93
- layer.data.features[0].geometry) {
94
- latLonExtent = new GeoJSON()
95
- .readFeatures(layer.data)
96
- .map((feature) => feature.getGeometry())
97
- .filter((geom) => !!geom)
98
- .reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null);
99
- }
100
- else if (layer && layer.type === 'wms') {
101
- latLonExtent = await this.getWmsLayerExtent(layer);
102
- }
103
- else if (layer && layer.type === 'wmts') {
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
- });
112
- }
113
- else {
114
- return null;
115
- }
116
- if (!latLonExtent || isEmpty(latLonExtent)) {
117
- return null;
118
- }
119
- return transformExtent(latLonExtent, 'EPSG:4326', 'EPSG:3857');
120
- }
121
- async getWmsLayerExtent(layer) {
122
- const endpoint = await new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady();
123
- const { boundingBoxes } = endpoint.getLayerByName(layer.name);
124
- if (!Object.keys(boundingBoxes).length) {
125
- return null;
126
- }
127
- const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
128
- if (lonLatCRS) {
129
- return boundingBoxes[lonLatCRS];
130
- }
131
- else {
132
- const availableEPSGCode = Object.keys(boundingBoxes)[0];
133
- register(proj4);
134
- const proj = await fromEPSGCode(availableEPSGCode);
135
- return transformExtent(boundingBoxes[availableEPSGCode], proj, 'EPSG:4326');
136
- }
137
- }
138
- prioritizePageScroll(interactions) {
139
- interactions.clear();
140
- interactions.extend(defaults({
141
- // remove rotate interactions
142
- altShiftDragRotate: false,
143
- pinchRotate: false,
144
- // replace drag and zoom interactions
145
- dragPan: false,
146
- mouseWheelZoom: false,
147
- })
148
- .extend([
149
- new DragPan({
150
- condition: dragPanCondition,
151
- }),
152
- new MouseWheelZoom({
153
- condition: mouseWheelZoomCondition,
154
- }),
155
- ])
156
- .getArray());
157
- }
158
8
  getRecordExtent(record) {
159
9
  if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
160
10
  return null;
161
11
  }
162
- // transform an array of geojson geometries into a bbox
12
+ // extend all the spatial extents into an including bbox
163
13
  const totalExtent = record.spatialExtents.reduce((prev, curr) => {
164
- const geom = GEOJSON.readGeometry(curr.geometry);
165
- return extend(prev, geom.getExtent());
14
+ if ('bbox' in curr)
15
+ return extend(prev, curr.bbox);
16
+ else if ('geometry' in curr) {
17
+ const geom = GEOJSON.readGeometry(curr.geometry);
18
+ return extend(prev, geom.getExtent());
19
+ }
20
+ return prev;
166
21
  }, [Infinity, Infinity, -Infinity, -Infinity]);
167
22
  return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
168
23
  }
169
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapUtilsService, deps: [{ token: i1.HttpClient }, { token: i2.ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapUtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
170
25
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
171
26
  }
172
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapUtilsService, decorators: [{
@@ -174,19 +29,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
174
29
  args: [{
175
30
  providedIn: 'root',
176
31
  }]
177
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ProxyService }]; } });
178
- export function dragPanCondition(event) {
179
- const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
180
- if (!dragPanCondition) {
181
- this.getMap().dispatchEvent('mapmuted');
182
- }
183
- // combine the condition with the default DragPan conditions
184
- return dragPanCondition && noModifierKeys(event) && primaryAction(event);
185
- }
186
- export function mouseWheelZoomCondition(event) {
187
- if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
188
- this.getMap().dispatchEvent('mapmuted');
189
- }
190
- return platformModifierKeyOnly(event);
191
- }
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXV0aWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvdXRpbHMvbWFwLXV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLE1BQU0sRUFBVSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFbkQsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFHdkMsT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFekMsT0FBTyxRQUFRLE1BQU0sb0JBQW9CLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQWUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0UsT0FBTyxFQUNMLFNBQVMsRUFDVCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGFBQWEsR0FDZCxNQUFNLHFCQUFxQixDQUFBO0FBRTVCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQVFwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN0RCxPQUFPLEtBQUss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QVUsQ0FBQyxDQUFBO0tBQ3hDO0lBQ0QsNERBQTREO0lBQzVELE9BQU8sZ0JBQWdCLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUVyQyxLQUErQjtJQUUvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7UUFDN0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtLQUN4QztJQUNELE9BQU8sdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJ2dlb2pzb24nXG5pbXBvcnQgeyBleHRlbmQsIEV4dGVudCwgaXNFbXB0eSB9IGZyb20gJ29sL2V4dGVudCdcbmltcG9ydCBGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTidcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSdcbmltcG9ydCBMYXllciBmcm9tICdvbC9sYXllci9MYXllcidcbmltcG9ydCBNYXAgZnJvbSAnb2wvTWFwJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRXh0ZW50IH0gZnJvbSAnb2wvcHJvaidcbmltcG9ydCBTb3VyY2UgZnJvbSAnb2wvc291cmNlL1NvdXJjZSdcbmltcG9ydCBJbWFnZVdNUyBmcm9tICdvbC9zb3VyY2UvSW1hZ2VXTVMnXG5pbXBvcnQgVGlsZVdNUyBmcm9tICdvbC9zb3VyY2UvVGlsZVdNUydcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvcidcbmltcG9ydCB7IGRlZmF1bHRzLCBEcmFnUGFuLCBJbnRlcmFjdGlvbiwgTW91c2VXaGVlbFpvb20gfSBmcm9tICdvbC9pbnRlcmFjdGlvbidcbmltcG9ydCB7XG4gIG1vdXNlT25seSxcbiAgbm9Nb2RpZmllcktleXMsXG4gIHBsYXRmb3JtTW9kaWZpZXJLZXlPbmx5LFxuICBwcmltYXJ5QWN0aW9uLFxufSBmcm9tICdvbC9ldmVudHMvY29uZGl0aW9uJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7XG4gIE1hcENvbnRleHRMYXllck1vZGVsLFxuICBNYXBDb250ZXh0TGF5ZXJXbXNNb2RlbCxcbn0gZnJvbSAnLi4vbWFwLWNvbnRleHQvbWFwLWNvbnRleHQubW9kZWwnXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tICdvbC9Db2xsZWN0aW9uJ1xuaW1wb3J0IE1hcEJyb3dzZXJFdmVudCBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgUHJveHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgeyBXbXNFbmRwb2ludCwgV210c0VuZHBvaW50IH0gZnJvbSAnQGNhbXB0b2NhbXAvb2djLWNsaWVudCdcbmltcG9ydCB7IExPTkxBVF9DUlNfQ09ERVMgfSBmcm9tICcuLi9jb25zdGFudC9wcm9qZWN0aW9ucydcbmltcG9ydCB7IGZyb21FUFNHQ29kZSwgcmVnaXN0ZXIgfSBmcm9tICdvbC9wcm9qL3Byb2o0J1xuaW1wb3J0IHByb2o0IGZyb20gJ3Byb2o0L2Rpc3QvcHJvajQnXG5pbXBvcnQgeyBkZWZhdWx0cyBhcyBkZWZhdWx0Q29udHJvbHMgfSBmcm9tICdvbC9jb250cm9sL2RlZmF1bHRzJ1xuXG5jb25zdCBGRUFUVVJFX1BST0pFQ1RJT04gPSAnRVBTRzozODU3J1xuY29uc3QgREFUQV9QUk9KRUNUSU9OID0gJ0VQU0c6NDMyNidcblxuY29uc3QgR0VPSlNPTiA9IG5ldyBHZW9KU09OKClcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcFV0aWxzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBwcm94eTogUHJveHlTZXJ2aWNlKSB7fVxuXG4gIGNyZWF0ZUVtcHR5TWFwKCk6IE1hcCB7XG4gICAgcmV0dXJuIG5ldyBNYXAoe1xuICAgICAgY29udHJvbHM6IGRlZmF1bHRDb250cm9scyh7XG4gICAgICAgIGF0dHJpYnV0aW9uOiB0cnVlLFxuICAgICAgICBhdHRyaWJ1dGlvbk9wdGlvbnM6IHsgY29sbGFwc2libGU6IGZhbHNlIH0sXG4gICAgICB9KSxcbiAgICAgIHBpeGVsUmF0aW86IDEsXG4gICAgfSlcbiAgfVxuXG4gIHJlYWRGZWF0dXJlQ29sbGVjdGlvbiA9IChcbiAgICBmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgZmVhdHVyZVByb2plY3Rpb24gPSBGRUFUVVJFX1BST0pFQ1RJT04sXG4gICAgZGF0YVByb2plY3Rpb24gPSBEQVRBX1BST0pFQ1RJT05cbiAgKTogRmVhdHVyZTxHZW9tZXRyeT5bXSA9PiB7XG4gICAgcmV0dXJuIEdFT0pTT04ucmVhZEZlYXR1cmVzKGZlYXR1cmVDb2xsZWN0aW9uLCB7XG4gICAgICBmZWF0dXJlUHJvamVjdGlvbixcbiAgICAgIGRhdGFQcm9qZWN0aW9uLFxuICAgIH0pIGFzIEZlYXR1cmU8R2VvbWV0cnk+W11cbiAgfVxuXG4gIGlzV01TTGF5ZXIobGF5ZXI6IExheWVyPFNvdXJjZT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgbGF5ZXIuZ2V0U291cmNlKCkgaW5zdGFuY2VvZiBUaWxlV01TIHx8XG4gICAgICBsYXllci5nZXRTb3VyY2UoKSBpbnN0YW5jZW9mIEltYWdlV01TXG4gICAgKVxuICB9XG5cbiAgZ2V0R0ZJVXJsKGxheWVyLCBtYXAsIGNvb3JkaW5hdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZpZXcgPSBtYXAuZ2V0VmlldygpXG4gICAgY29uc3QgcHJvamVjdGlvbiA9IHZpZXcuZ2V0UHJvamVjdGlvbigpXG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IHZpZXcuZ2V0UmVzb2x1dGlvbigpXG4gICAgY29uc3Qgc291cmNlID0gbGF5ZXIuZ2V0U291cmNlKClcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAuLi5zb3VyY2UuZ2V0UGFyYW1zKCksXG4gICAgICBJTkZPX0ZPUk1BVDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH1cbiAgICByZXR1cm4gc291cmNlLmdldEZlYXR1cmVJbmZvVXJsKGNvb3JkaW5hdGUsIHJlc29sdXRpb24sIHByb2plY3Rpb24sIHBhcmFtcylcbiAgfVxuXG4gIGdldFZlY3RvckZlYXR1cmVzRnJvbUNsaWNrKG9sTWFwLCBldmVudCk6IEZlYXR1cmU8R2VvbWV0cnk+W10ge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gW11cbiAgICBjb25zdCBoaXQgPSBvbE1hcC5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwoXG4gICAgICBldmVudC5waXhlbCxcbiAgICAgIChmZWF0dXJlOiBGZWF0dXJlPEdlb21ldHJ5PikgPT4ge1xuICAgICAgICByZXR1cm4gZmVhdHVyZVxuICAgICAgfSxcbiAgICAgIHsgbGF5ZXJGaWx0ZXI6IChsYXllcikgPT4gbGF5ZXIuZ2V0U291cmNlKCkgaW5zdGFuY2VvZiBWZWN0b3JTb3VyY2UgfVxuICAgIClcbiAgICBpZiAoaGl0KSB7XG4gICAgICBmZWF0dXJlcy5wdXNoKGhpdClcbiAgICB9XG4gICAgcmV0dXJuIGZlYXR1cmVzXG4gIH1cblxuICBnZXRHRklGZWF0dXJlc09ic2VydmFibGVzRnJvbUNsaWNrKFxuICAgIG9sTWFwOiBNYXAsXG4gICAgZXZlbnQ6IE1hcEJyb3dzZXJFdmVudDxQb2ludGVyRXZlbnQ+XG4gICk6IE9ic2VydmFibGU8RmVhdHVyZTxHZW9tZXRyeT5bXT5bXSB7XG4gICAgY29uc3Qgd21zTGF5ZXJzID0gb2xNYXAuZ2V0TGF5ZXJzKCkuZ2V0QXJyYXkoKS5maWx0ZXIodGhpcy5pc1dNU0xheWVyKVxuXG4gICAgaWYgKHdtc0xheWVycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IGNvb3JkaW5hdGUgfSA9IGV2ZW50XG4gICAgICBjb25zdCBnZmlVcmxzID0gd21zTGF5ZXJzLnJlZHVjZShcbiAgICAgICAgKHVybHMsIGxheWVyKSA9PiBbLi4udXJscywgdGhpcy5nZXRHRklVcmwobGF5ZXIsIG9sTWFwLCBjb29yZGluYXRlKV0sXG5cbiAgICAgICAgW11cbiAgICAgIClcbiAgICAgIHJldHVybiBnZmlVcmxzLm1hcCgodXJsKSA9PlxuICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAuZ2V0PEZlYXR1cmVDb2xsZWN0aW9uPih1cmwpXG4gICAgICAgICAgLnBpcGUobWFwKChjb2xsZWN0aW9uKSA9PiB0aGlzLnJlYWRGZWF0dXJlQ29sbGVjdGlvbihjb2xsZWN0aW9uKSkpXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIGVtaXQgYG51bGxgIGlmIG5vIGV4dGVudCBjb3VsZCBiZSBjb21wdXRlZFxuICAgKi9cbiAgYXN5bmMgZ2V0TGF5ZXJFeHRlbnQobGF5ZXI6IE1hcENvbnRleHRMYXllck1vZGVsKTogUHJvbWlzZTxFeHRlbnQgfCBudWxsPiB7XG4gICAgbGV0IGxhdExvbkV4dGVudDogRXh0ZW50XG4gICAgaWYgKFxuICAgICAgbGF5ZXIgJiZcbiAgICAgIGxheWVyLnR5cGUgPT09ICdnZW9qc29uJyAmJlxuICAgICAgJ2RhdGEnIGluIGxheWVyICYmXG4gICAgICB0eXBlb2YgbGF5ZXIuZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIGxheWVyLmRhdGEuZmVhdHVyZXNbMF0gJiZcbiAgICAgIGxheWVyLmRhdGEuZmVhdHVyZXNbMF0uZ2VvbWV0cnlcbiAgICApIHtcbiAgICAgIGxhdExvbkV4dGVudCA9IG5ldyBHZW9KU09OKClcbiAgICAgICAgLnJlYWRGZWF0dXJlcyhsYXllci5kYXRhKVxuICAgICAgICAubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLmdldEdlb21ldHJ5KCkpXG4gICAgICAgIC5maWx0ZXIoKGdlb20pID0+ICEhZ2VvbSlcbiAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAocHJldiwgY3VycikgPT5cbiAgICAgICAgICAgIHByZXYgPyBleHRlbmQocHJldiwgY3Vyci5nZXRFeHRlbnQoKSkgOiBjdXJyLmdldEV4dGVudCgpLFxuICAgICAgICAgIG51bGwgYXMgRXh0ZW50XG4gICAgICAgIClcbiAgICB9IGVsc2UgaWYgKGxheWVyICYmIGxheWVyLnR5cGUgPT09ICd3bXMnKSB7XG4gICAgICBsYXRMb25FeHRlbnQgPSBhd2FpdCB0aGlzLmdldFdtc0xheWVyRXh0ZW50KGxheWVyKVxuICAgIH0gZWxzZSBpZiAobGF5ZXIgJiYgbGF5ZXIudHlwZSA9PT0gJ3dtdHMnKSB7XG4gICAgICAvLyBUT0RPOiBpc29sYXRlIHRoaXMgaW4gdXRpbHMgc2VydmljZVxuICAgICAgbGF0TG9uRXh0ZW50ID0gYXdhaXQgbmV3IFdtdHNFbmRwb2ludChsYXllci51cmwpXG4gICAgICAgIC5pc1JlYWR5KClcbiAgICAgICAgLnRoZW4oKGVuZHBvaW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJOYW1lID0gZW5kcG9pbnQuZ2V0U2luZ2xlTGF5ZXJOYW1lKCkgPz8gbGF5ZXIubmFtZVxuICAgICAgICAgIGNvbnN0IHdtdHNMYXllciA9IGVuZHBvaW50LmdldExheWVyQnlOYW1lKGxheWVyTmFtZSlcbiAgICAgICAgICByZXR1cm4gd210c0xheWVyLmxhdExvbkJvdW5kaW5nQm94XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGlmICghbGF0TG9uRXh0ZW50IHx8IGlzRW1wdHkobGF0TG9uRXh0ZW50KSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zZm9ybUV4dGVudChsYXRMb25FeHRlbnQsICdFUFNHOjQzMjYnLCAnRVBTRzozODU3JylcbiAgfVxuXG4gIGFzeW5jIGdldFdtc0xheWVyRXh0ZW50KFxuICAgIGxheWVyOiBNYXBDb250ZXh0TGF5ZXJXbXNNb2RlbFxuICApOiBQcm9taXNlPEV4dGVudCB8IG51bGw+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGF3YWl0IG5ldyBXbXNFbmRwb2ludChcbiAgICAgIHRoaXMucHJveHkuZ2V0UHJveGllZFVybChsYXllci51cmwpXG4gICAgKS5pc1JlYWR5KClcbiAgICBjb25zdCB7IGJvdW5kaW5nQm94ZXMgfSA9IGVuZHBvaW50LmdldExheWVyQnlOYW1lKGxheWVyLm5hbWUpXG4gICAgaWYgKCFPYmplY3Qua2V5cyhib3VuZGluZ0JveGVzKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IGxvbkxhdENSUyA9IE9iamVjdC5rZXlzKGJvdW5kaW5nQm94ZXMpPy5maW5kKChjcnMpID0+XG4gICAgICBMT05MQVRfQ1JTX0NPREVTLmluY2x1ZGVzKGNycylcbiAgICApXG4gICAgaWYgKGxvbkxhdENSUykge1xuICAgICAgcmV0dXJuIGJvdW5kaW5nQm94ZXNbbG9uTGF0Q1JTXVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVFUFNHQ29kZSA9IE9iamVjdC5rZXlzKGJvdW5kaW5nQm94ZXMpWzBdXG4gICAgICByZWdpc3Rlcihwcm9qNClcbiAgICAgIGNvbnN0IHByb2ogPSBhd2FpdCBmcm9tRVBTR0NvZGUoYXZhaWxhYmxlRVBTR0NvZGUpXG4gICAgICByZXR1cm4gdHJhbnNmb3JtRXh0ZW50KFxuICAgICAgICBib3VuZGluZ0JveGVzW2F2YWlsYWJsZUVQU0dDb2RlXSxcbiAgICAgICAgcHJvaixcbiAgICAgICAgJ0VQU0c6NDMyNidcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBwcmlvcml0aXplUGFnZVNjcm9sbChpbnRlcmFjdGlvbnM6IENvbGxlY3Rpb248SW50ZXJhY3Rpb24+KSB7XG4gICAgaW50ZXJhY3Rpb25zLmNsZWFyKClcbiAgICBpbnRlcmFjdGlvbnMuZXh0ZW5kKFxuICAgICAgZGVmYXVsdHMoe1xuICAgICAgICAvLyByZW1vdmUgcm90YXRlIGludGVyYWN0aW9uc1xuICAgICAgICBhbHRTaGlmdERyYWdSb3RhdGU6IGZhbHNlLFxuICAgICAgICBwaW5jaFJvdGF0ZTogZmFsc2UsXG4gICAgICAgIC8vIHJlcGxhY2UgZHJhZyBhbmQgem9vbSBpbnRlcmFjdGlvbnNcbiAgICAgICAgZHJhZ1BhbjogZmFsc2UsXG4gICAgICAgIG1vdXNlV2hlZWxab29tOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgICAgIC5leHRlbmQoW1xuICAgICAgICAgIG5ldyBEcmFnUGFuKHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogZHJhZ1BhbkNvbmRpdGlvbixcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgTW91c2VXaGVlbFpvb20oe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBtb3VzZVdoZWVsWm9vbUNvbmRpdGlvbixcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSlcbiAgICAgICAgLmdldEFycmF5KClcbiAgICApXG4gIH1cblxuICBnZXRSZWNvcmRFeHRlbnQocmVjb3JkOiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+KTogRXh0ZW50IHtcbiAgICBpZiAoISgnc3BhdGlhbEV4dGVudHMnIGluIHJlY29yZCkgfHwgcmVjb3JkLnNwYXRpYWxFeHRlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLy8gdHJhbnNmb3JtIGFuIGFycmF5IG9mIGdlb2pzb24gZ2VvbWV0cmllcyBpbnRvIGEgYmJveFxuICAgIGNvbnN0IHRvdGFsRXh0ZW50ID0gcmVjb3JkLnNwYXRpYWxFeHRlbnRzLnJlZHVjZShcbiAgICAgIChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGdlb20gPSBHRU9KU09OLnJlYWRHZW9tZXRyeShjdXJyLmdlb21ldHJ5KVxuICAgICAgICByZXR1cm4gZXh0ZW5kKHByZXYsIGdlb20uZ2V0RXh0ZW50KCkpXG4gICAgICB9LFxuICAgICAgW0luZmluaXR5LCBJbmZpbml0eSwgLUluZmluaXR5LCAtSW5maW5pdHldXG4gICAgKVxuICAgIHJldHVybiB0cmFuc2Zvcm1FeHRlbnQodG90YWxFeHRlbnQsICdFUFNHOjQzMjYnLCAnRVBTRzozODU3JylcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZHJhZ1BhbkNvbmRpdGlvbihcbiAgdGhpczogRHJhZ1BhbixcbiAgZXZlbnQ6IE1hcEJyb3dzZXJFdmVudDxQb2ludGVyRXZlbnQ+XG4pIHtcbiAgY29uc3QgZHJhZ1BhbkNvbmRpdGlvbiA9IHRoaXMuZ2V0UG9pbnRlckNvdW50KCkgPT09IDIgfHwgbW91c2VPbmx5KGV2ZW50KVxuICBpZiAoIWRyYWdQYW5Db25kaXRpb24pIHtcbiAgICB0aGlzLmdldE1hcCgpLmRpc3BhdGNoRXZlbnQoJ21hcG11dGVkJylcbiAgfVxuICAvLyBjb21iaW5lIHRoZSBjb25kaXRpb24gd2l0aCB0aGUgZGVmYXVsdCBEcmFnUGFuIGNvbmRpdGlvbnNcbiAgcmV0dXJuIGRyYWdQYW5Db25kaXRpb24gJiYgbm9Nb2RpZmllcktleXMoZXZlbnQpICYmIHByaW1hcnlBY3Rpb24oZXZlbnQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3VzZVdoZWVsWm9vbUNvbmRpdGlvbihcbiAgdGhpczogTW91c2VXaGVlbFpvb20sXG4gIGV2ZW50OiBNYXBCcm93c2VyRXZlbnQ8VUlFdmVudD5cbikge1xuICBpZiAoIXBsYXRmb3JtTW9kaWZpZXJLZXlPbmx5KGV2ZW50KSAmJiBldmVudC50eXBlID09PSAnd2hlZWwnKSB7XG4gICAgdGhpcy5nZXRNYXAoKS5kaXNwYXRjaEV2ZW50KCdtYXBtdXRlZCcpXG4gIH1cbiAgcmV0dXJuIHBsYXRmb3JtTW9kaWZpZXJLZXlPbmx5KGV2ZW50KVxufVxuIl19
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXV0aWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvdXRpbHMvbWFwLXV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFVLE1BQU0sV0FBVyxDQUFBO0FBQzFDLE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUE7O0FBR3pDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7QUFLN0IsTUFBTSxPQUFPLGVBQWU7SUFDMUIsZUFBZSxDQUFDLE1BQThCO1FBQzVDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2RSxPQUFPLElBQUksQ0FBQTtTQUNaO1FBQ0Qsd0RBQXdEO1FBQ3hELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUM5QyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNiLElBQUksTUFBTSxJQUFJLElBQUk7Z0JBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtpQkFDN0MsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFO2dCQUMzQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDaEQsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO2FBQ3RDO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLEVBQ0QsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQzNDLENBQUE7UUFDRCxPQUFPLGVBQWUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQy9ELENBQUM7K0dBbEJVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBleHRlbmQsIEV4dGVudCB9IGZyb20gJ29sL2V4dGVudCdcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRXh0ZW50IH0gZnJvbSAnb2wvcHJvaidcbmltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbmNvbnN0IEdFT0pTT04gPSBuZXcgR2VvSlNPTigpXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBVdGlsc1NlcnZpY2Uge1xuICBnZXRSZWNvcmRFeHRlbnQocmVjb3JkOiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+KTogRXh0ZW50IHtcbiAgICBpZiAoISgnc3BhdGlhbEV4dGVudHMnIGluIHJlY29yZCkgfHwgcmVjb3JkLnNwYXRpYWxFeHRlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLy8gZXh0ZW5kIGFsbCB0aGUgc3BhdGlhbCBleHRlbnRzIGludG8gYW4gaW5jbHVkaW5nIGJib3hcbiAgICBjb25zdCB0b3RhbEV4dGVudCA9IHJlY29yZC5zcGF0aWFsRXh0ZW50cy5yZWR1Y2UoXG4gICAgICAocHJldiwgY3VycikgPT4ge1xuICAgICAgICBpZiAoJ2Jib3gnIGluIGN1cnIpIHJldHVybiBleHRlbmQocHJldiwgY3Vyci5iYm94KVxuICAgICAgICBlbHNlIGlmICgnZ2VvbWV0cnknIGluIGN1cnIpIHtcbiAgICAgICAgICBjb25zdCBnZW9tID0gR0VPSlNPTi5yZWFkR2VvbWV0cnkoY3Vyci5nZW9tZXRyeSlcbiAgICAgICAgICByZXR1cm4gZXh0ZW5kKHByZXYsIGdlb20uZ2V0RXh0ZW50KCkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgIH0sXG4gICAgICBbSW5maW5pdHksIEluZmluaXR5LCAtSW5maW5pdHksIC1JbmZpbml0eV1cbiAgICApXG4gICAgcmV0dXJuIHRyYW5zZm9ybUV4dGVudCh0b3RhbEV4dGVudCwgJ0VQU0c6NDMyNicsICdFUFNHOjM4NTcnKVxuICB9XG59XG4iXX0=
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
51
51
  }], chartConfig$: [{
52
52
  type: Output
53
53
  }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9kYXRhLXZpZXcvZGF0YS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9kYXRhLXZpZXcvZGF0YS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7Ozs7Ozs7O0FBVXZDLE1BQU0sT0FBTyxpQkFBaUI7SUE0QjVCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBMUJwQyxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUE0QixJQUFJLENBQUMsQ0FBQTtRQUM3RSx5QkFBb0IsR0FBRyxhQUFhLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYTtTQUNoQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDaEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFBO1lBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDekQsT0FBTyxDQUFDLENBQUE7UUFDVixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0QscUJBQWdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDL0MsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDbEM7UUFDSCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNaLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkIsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQzVCLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQTtRQUNELGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQXNCLElBQUksQ0FBQyxDQUFBO0lBRWIsQ0FBQztJQUVsRCxjQUFjLENBQUMsS0FBZ0M7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxZQUFvQjtRQUM3QixNQUFNLElBQUksR0FBd0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUMxRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixDQUFDOytHQXRDVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw0SENuQjlCLG10QkFxQkE7OzRGREZhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTttR0FHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZ2V0TGlua0xhYmVsLCBnZXRMaW5rUHJpb3JpdHkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTWRWaWV3RmFjYWRlIH0gZnJvbSAnLi4vc3RhdGUnXG5pbXBvcnQgeyBEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvZGF0YXZpei9kYXRhdml6LWNvbmZpZ3VyYXRpb24ubW9kZWwnXG5pbXBvcnQgeyBEYXRhc2V0RGlzdHJpYnV0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1kYXRhLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS12aWV3LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFWaWV3Q29tcG9uZW50IHtcbiAgQElucHV0KCkgbW9kZTogJ3RhYmxlJyB8ICdjaGFydCdcbiAgQE91dHB1dCgpIGNoYXJ0Q29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YXZpekNvbmZpZ3VyYXRpb25Nb2RlbD4obnVsbClcbiAgY29tcGF0aWJsZURhdGFMaW5rcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLm1kVmlld0ZhY2FkZS5kYXRhTGlua3MkLFxuICAgIHRoaXMubWRWaWV3RmFjYWRlLmdlb0RhdGFMaW5rcyQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbZGF0YUxpbmtzLCBnZW9EYXRhTGlua3NdKSA9PiB7XG4gICAgICBjb25zdCBhID0gWy4uLmRhdGFMaW5rcywgLi4uZ2VvRGF0YUxpbmtzXVxuICAgICAgYS5zb3J0KChhLCBiKSA9PiBnZXRMaW5rUHJpb3JpdHkoYikgLSBnZXRMaW5rUHJpb3JpdHkoYSkpXG4gICAgICByZXR1cm4gYVxuICAgIH0pXG4gIClcbiAgZHJvcGRvd25DaG9pY2VzJCA9IHRoaXMuY29tcGF0aWJsZURhdGFMaW5rcyQucGlwZShcbiAgICB0YXAoKGxpbmtzKSA9PiB7XG4gICAgICBpZiAobGlua3MuaW5kZXhPZih0aGlzLnNlbGVjdGVkTGluayQudmFsdWUpID09PSAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGluayQubmV4dChsaW5rc1swXSlcbiAgICAgIH1cbiAgICB9KSxcbiAgICBtYXAoKGxpbmtzKSA9PlxuICAgICAgbGlua3MubWFwKChsaW5rKSA9PiAoe1xuICAgICAgICBsYWJlbDogZ2V0TGlua0xhYmVsKGxpbmspLFxuICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkobGluayksXG4gICAgICB9KSlcbiAgICApXG4gIClcbiAgc2VsZWN0ZWRMaW5rJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YXNldERpc3RyaWJ1dGlvbj4obnVsbClcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1kVmlld0ZhY2FkZTogTWRWaWV3RmFjYWRlKSB7fVxuXG4gIHNldENoYXJ0Q29uZmlnKGV2ZW50OiBEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsKSB7XG4gICAgdGhpcy5tZFZpZXdGYWNhZGUuc2V0Q2hhcnRDb25maWcoZXZlbnQpXG4gIH1cblxuICBzZWxlY3RMaW5rKGxpbmtBc1N0cmluZzogc3RyaW5nKSB7XG4gICAgY29uc3QgbGluazogRGF0YXNldERpc3RyaWJ1dGlvbiA9IEpTT04ucGFyc2UobGlua0FzU3RyaW5nKVxuICAgIGxpbmsudXJsID0gbmV3IFVSTChsaW5rLnVybClcbiAgICB0aGlzLnNlbGVjdGVkTGluayQubmV4dChsaW5rKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIHAtMVwiPlxuICA8Z24tdWktZHJvcGRvd24tc2VsZWN0b3JcbiAgICAqbmdJZj1cImRyb3Bkb3duQ2hvaWNlcyQgfCBhc3luYyBhcyBjaG9pY2VzXCJcbiAgICBbdGl0bGVdPVwiJ3RhYmxlLnNlbGVjdC5kYXRhJyB8IHRyYW5zbGF0ZVwiXG4gICAgY2xhc3M9XCJ0cnVuY2F0ZSBwLTEgLW14LTFcIlxuICAgIGV4dHJhQnRuQ2xhc3M9XCIhdGV4dC1wcmltYXJ5IGZvbnQtc2FucyBmb250LW1lZGl1bVwiXG4gICAgW2Nob2ljZXNdPVwiY2hvaWNlc1wiXG4gICAgKHNlbGVjdFZhbHVlKT1cInNlbGVjdExpbmsoJGV2ZW50KVwiXG4gID48L2duLXVpLWRyb3Bkb3duLXNlbGVjdG9yPlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgaC1bNDIwcHhdXCI+XG4gICAgPGduLXVpLXRhYmxlLXZpZXdcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3RhYmxlJ1wiXG4gICAgICBbbGlua109XCJzZWxlY3RlZExpbmskIHwgYXN5bmNcIlxuICAgID48L2duLXVpLXRhYmxlLXZpZXc+XG4gICAgPGduLXVpLWNoYXJ0LXZpZXdcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ2NoYXJ0J1wiXG4gICAgICAoY2hhcnRDb25maWckKT1cInNldENoYXJ0Q29uZmlnKCRldmVudClcIlxuICAgICAgW2xpbmtdPVwic2VsZWN0ZWRMaW5rJCB8IGFzeW5jXCJcbiAgICA+PC9nbi11aS1jaGFydC12aWV3PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9kYXRhLXZpZXcvZGF0YS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9kYXRhLXZpZXcvZGF0YS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7Ozs7Ozs7O0FBVXZDLE1BQU0sT0FBTyxpQkFBaUI7SUE0QjVCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBMUJwQyxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUE0QixJQUFJLENBQUMsQ0FBQTtRQUM3RSx5QkFBb0IsR0FBRyxhQUFhLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYTtTQUNoQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDaEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFBO1lBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDekQsT0FBTyxDQUFDLENBQUE7UUFDVixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0QscUJBQWdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDL0MsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDbEM7UUFDSCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNaLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkIsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQzVCLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQTtRQUNELGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFBO0lBRWYsQ0FBQztJQUVsRCxjQUFjLENBQUMsS0FBZ0M7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxZQUFvQjtRQUM3QixNQUFNLElBQUksR0FBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixDQUFDOytHQXRDVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw0SENuQjlCLG10QkFxQkE7OzRGREZhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTttR0FHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZ2V0TGlua0xhYmVsLCBnZXRMaW5rUHJpb3JpdHkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTWRWaWV3RmFjYWRlIH0gZnJvbSAnLi4vc3RhdGUnXG5pbXBvcnQgeyBEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvZGF0YXZpei9kYXRhdml6LWNvbmZpZ3VyYXRpb24ubW9kZWwnXG5pbXBvcnQgeyBEYXRhc2V0T25saW5lUmVzb3VyY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWRhdGEtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVZpZXdDb21wb25lbnQge1xuICBASW5wdXQoKSBtb2RlOiAndGFibGUnIHwgJ2NoYXJ0J1xuICBAT3V0cHV0KCkgY2hhcnRDb25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsPihudWxsKVxuICBjb21wYXRpYmxlRGF0YUxpbmtzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubWRWaWV3RmFjYWRlLmRhdGFMaW5rcyQsXG4gICAgdGhpcy5tZFZpZXdGYWNhZGUuZ2VvRGF0YUxpbmtzJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtkYXRhTGlua3MsIGdlb0RhdGFMaW5rc10pID0+IHtcbiAgICAgIGNvbnN0IGEgPSBbLi4uZGF0YUxpbmtzLCAuLi5nZW9EYXRhTGlua3NdXG4gICAgICBhLnNvcnQoKGEsIGIpID0+IGdldExpbmtQcmlvcml0eShiKSAtIGdldExpbmtQcmlvcml0eShhKSlcbiAgICAgIHJldHVybiBhXG4gICAgfSlcbiAgKVxuICBkcm9wZG93bkNob2ljZXMkID0gdGhpcy5jb21wYXRpYmxlRGF0YUxpbmtzJC5waXBlKFxuICAgIHRhcCgobGlua3MpID0+IHtcbiAgICAgIGlmIChsaW5rcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRMaW5rJC52YWx1ZSkgPT09IC0xKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaW5rJC5uZXh0KGxpbmtzWzBdKVxuICAgICAgfVxuICAgIH0pLFxuICAgIG1hcCgobGlua3MpID0+XG4gICAgICBsaW5rcy5tYXAoKGxpbmspID0+ICh7XG4gICAgICAgIGxhYmVsOiBnZXRMaW5rTGFiZWwobGluayksXG4gICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeShsaW5rKSxcbiAgICAgIH0pKVxuICAgIClcbiAgKVxuICBzZWxlY3RlZExpbmskID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhc2V0T25saW5lUmVzb3VyY2U+KG51bGwpXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZFZpZXdGYWNhZGU6IE1kVmlld0ZhY2FkZSkge31cblxuICBzZXRDaGFydENvbmZpZyhldmVudDogRGF0YXZpekNvbmZpZ3VyYXRpb25Nb2RlbCkge1xuICAgIHRoaXMubWRWaWV3RmFjYWRlLnNldENoYXJ0Q29uZmlnKGV2ZW50KVxuICB9XG5cbiAgc2VsZWN0TGluayhsaW5rQXNTdHJpbmc6IHN0cmluZykge1xuICAgIGNvbnN0IGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSA9IEpTT04ucGFyc2UobGlua0FzU3RyaW5nKVxuICAgIGxpbmsudXJsID0gbmV3IFVSTChsaW5rLnVybClcbiAgICB0aGlzLnNlbGVjdGVkTGluayQubmV4dChsaW5rKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIHAtMVwiPlxuICA8Z24tdWktZHJvcGRvd24tc2VsZWN0b3JcbiAgICAqbmdJZj1cImRyb3Bkb3duQ2hvaWNlcyQgfCBhc3luYyBhcyBjaG9pY2VzXCJcbiAgICBbdGl0bGVdPVwiJ3RhYmxlLnNlbGVjdC5kYXRhJyB8IHRyYW5zbGF0ZVwiXG4gICAgY2xhc3M9XCJ0cnVuY2F0ZSBwLTEgLW14LTFcIlxuICAgIGV4dHJhQnRuQ2xhc3M9XCIhdGV4dC1wcmltYXJ5IGZvbnQtc2FucyBmb250LW1lZGl1bVwiXG4gICAgW2Nob2ljZXNdPVwiY2hvaWNlc1wiXG4gICAgKHNlbGVjdFZhbHVlKT1cInNlbGVjdExpbmsoJGV2ZW50KVwiXG4gID48L2duLXVpLWRyb3Bkb3duLXNlbGVjdG9yPlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgaC1bNDIwcHhdXCI+XG4gICAgPGduLXVpLXRhYmxlLXZpZXdcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3RhYmxlJ1wiXG4gICAgICBbbGlua109XCJzZWxlY3RlZExpbmskIHwgYXN5bmNcIlxuICAgID48L2duLXVpLXRhYmxlLXZpZXc+XG4gICAgPGduLXVpLWNoYXJ0LXZpZXdcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ2NoYXJ0J1wiXG4gICAgICAoY2hhcnRDb25maWckKT1cInNldENoYXJ0Q29uZmlnKCRldmVudClcIlxuICAgICAgW2xpbmtdPVwic2VsZWN0ZWRMaW5rJCB8IGFzeW5jXCJcbiAgICA+PC9nbi11aS1jaGFydC12aWV3PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Inject, InjectionToken, Input, Optional, } from '@angular/core';
2
2
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
3
3
  import { TranslateService } from '@ngx-translate/core';
4
4
  import { getFileFormat } from '../../../../../../libs/util/shared/src';
@@ -8,13 +8,11 @@ import * as i2 from "@angular/common";
8
8
  import * as i3 from "../../../../../ui/inputs/src/lib/button/button.component";
9
9
  import * as i4 from "@angular/material/icon";
10
10
  marker('externalviewer.dataset.unnamed');
11
+ export const EXTERNAL_VIEWER_URL_TEMPLATE = new InjectionToken('externalViewerUrlTemplate');
12
+ export const EXTERNAL_VIEWER_OPEN_NEW_TAB = new InjectionToken('externalViewerOpenNewTab', { factory: () => false });
11
13
  export class ExternalViewerButtonComponent {
12
14
  get externalViewer() {
13
- if (this.link && this.mapConfig) {
14
- return (!!this.mapConfig.EXTERNAL_VIEWER_URL_TEMPLATE &&
15
- !!this.supportedLinkLayerType);
16
- }
17
- return false;
15
+ return !!this.urlTemplate && !!this.supportedLinkLayerType;
18
16
  }
19
17
  get supportedLinkLayerType() {
20
18
  if (!this.link)
@@ -33,11 +31,13 @@ export class ExternalViewerButtonComponent {
33
31
  }
34
32
  return null;
35
33
  }
36
- constructor(translateService) {
34
+ constructor(translateService, urlTemplate, openinNewTab) {
37
35
  this.translateService = translateService;
36
+ this.urlTemplate = urlTemplate;
37
+ this.openinNewTab = openinNewTab;
38
38
  }
39
39
  openInExternalViewer() {
40
- const templateUrl = this.mapConfig.EXTERNAL_VIEWER_URL_TEMPLATE;
40
+ const templateUrl = this.urlTemplate;
41
41
  const layerName = this.link.name
42
42
  ? this.link.name
43
43
  : this.translateService.instant('externalviewer.dataset.unnamed');
@@ -45,19 +45,23 @@ export class ExternalViewerButtonComponent {
45
45
  .replace('${layer_name}', `${layerName}`)
46
46
  .replace('${service_url}', `${encodeURIComponent(this.link.url.toString())}`)
47
47
  .replace('${service_type}', `${this.supportedLinkLayerType}`);
48
- window
49
- .open(url, this.mapConfig.EXTERNAL_VIEWER_OPEN_NEW_TAB ? '_blank' : '_self')
50
- .focus();
48
+ window.open(url, this.openinNewTab ? '_blank' : '_self').focus();
51
49
  }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalViewerButtonComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
53
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: { link: "link", mapConfig: "mapConfig" }, ngImport: i0, template: "<gn-ui-button\n *ngIf=\"externalViewer\"\n (buttonClick)=\"openInExternalViewer()\"\n type=\"secondary\"\n [title]=\"'record.externalViewer.open' | translate\"\n extraClass=\"ms-2 !rounded-lg\"\n>\n <mat-icon class=\"material-symbols-outlined\">open_in_new</mat-icon>\n</gn-ui-button>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalViewerButtonComponent, deps: [{ token: i1.TranslateService }, { token: EXTERNAL_VIEWER_URL_TEMPLATE, optional: true }, { token: EXTERNAL_VIEWER_OPEN_NEW_TAB }], target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: { link: "link" }, ngImport: i0, template: "<gn-ui-button\n *ngIf=\"externalViewer\"\n (buttonClick)=\"openInExternalViewer()\"\n type=\"secondary\"\n [title]=\"'record.externalViewer.open' | translate\"\n extraClass=\"ms-2 !rounded-lg\"\n>\n <mat-icon class=\"material-symbols-outlined\">open_in_new</mat-icon>\n</gn-ui-button>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
54
52
  }
55
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalViewerButtonComponent, decorators: [{
56
54
  type: Component,
57
55
  args: [{ selector: 'gn-ui-external-viewer-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n *ngIf=\"externalViewer\"\n (buttonClick)=\"openInExternalViewer()\"\n type=\"secondary\"\n [title]=\"'record.externalViewer.open' | translate\"\n extraClass=\"ms-2 !rounded-lg\"\n>\n <mat-icon class=\"material-symbols-outlined\">open_in_new</mat-icon>\n</gn-ui-button>\n" }]
58
- }], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { link: [{
59
- type: Input
60
- }], mapConfig: [{
56
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: undefined, decorators: [{
57
+ type: Inject,
58
+ args: [EXTERNAL_VIEWER_URL_TEMPLATE]
59
+ }, {
60
+ type: Optional
61
+ }] }, { type: undefined, decorators: [{
62
+ type: Inject,
63
+ args: [EXTERNAL_VIEWER_OPEN_NEW_TAB]
64
+ }] }]; }, propDecorators: { link: [{
61
65
  type: Input
62
66
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtdmlld2VyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvcmVjb3JkL3NyYy9saWIvZXh0ZXJuYWwtdmlld2VyLWJ1dHRvbi9leHRlcm5hbC12aWV3ZXItYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9leHRlcm5hbC12aWV3ZXItYnV0dG9uL2V4dGVybmFsLXZpZXdlci1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTs7Ozs7O0FBRXRFLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBUXhDLE1BQU0sT0FBTyw2QkFBNkI7SUFJeEMsSUFBSSxjQUFjO1FBQ2hCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQy9CLE9BQU8sQ0FDTCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyw0QkFBNEI7Z0JBQzdDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQzlCLENBQUE7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBQzNCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxLQUFLLEVBQUU7Z0JBQzdDLE9BQU8sS0FBSyxDQUFBO2FBQ2I7WUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEtBQUssS0FBSyxFQUFFO2dCQUM3QyxPQUFPLEtBQUssQ0FBQTthQUNiO1NBQ0Y7YUFBTSxJQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVU7WUFDN0IsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQ3RDO1lBQ0EsT0FBTyxTQUFTLENBQUE7U0FDakI7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFMUQsb0JBQW9CO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsNEJBQTRCLENBQUE7UUFDL0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQzlCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtRQUNuRSxNQUFNLEdBQUcsR0FBRyxXQUFXO2FBQ3BCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQzthQUN4QyxPQUFPLENBQ04sZ0JBQWdCLEVBQ2hCLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUNsRDthQUNBLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUE7UUFDL0QsTUFBTTthQUNILElBQUksQ0FDSCxHQUFHLEVBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2pFO2FBQ0EsS0FBSyxFQUFFLENBQUE7SUFDWixDQUFDOytHQXBEVSw2QkFBNkI7bUdBQTdCLDZCQUE2QixzSENmMUMsc1NBU0E7OzRGRE1hLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSw4QkFBOEIsbUJBR3ZCLHVCQUF1QixDQUFDLE1BQU07dUdBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWFwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2FwcC1jb25maWcvc3JjJ1xuaW1wb3J0IHsgRGF0YXNldERpc3RyaWJ1dGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgZ2V0RmlsZUZvcm1hdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuXG5tYXJrZXIoJ2V4dGVybmFsdmlld2VyLmRhdGFzZXQudW5uYW1lZCcpXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWV4dGVybmFsLXZpZXdlci1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZXJuYWwtdmlld2VyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2V4dGVybmFsLXZpZXdlci1idXR0b24uY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxWaWV3ZXJCdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBsaW5rOiBEYXRhc2V0RGlzdHJpYnV0aW9uXG4gIEBJbnB1dCgpIG1hcENvbmZpZzogTWFwQ29uZmlnXG5cbiAgZ2V0IGV4dGVybmFsVmlld2VyKCkge1xuICAgIGlmICh0aGlzLmxpbmsgJiYgdGhpcy5tYXBDb25maWcpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgICEhdGhpcy5tYXBDb25maWcuRVhURVJOQUxfVklFV0VSX1VSTF9URU1QTEFURSAmJlxuICAgICAgICAhIXRoaXMuc3VwcG9ydGVkTGlua0xheWVyVHlwZVxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGdldCBzdXBwb3J0ZWRMaW5rTGF5ZXJUeXBlKCkge1xuICAgIGlmICghdGhpcy5saW5rKSByZXR1cm4gbnVsbFxuICAgIGlmICh0aGlzLmxpbmsudHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgICBpZiAodGhpcy5saW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ3dtcycpIHtcbiAgICAgICAgcmV0dXJuICd3bXMnXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5saW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ3dmcycpIHtcbiAgICAgICAgcmV0dXJuICd3ZnMnXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMubGluay50eXBlID09PSAnZG93bmxvYWQnICYmXG4gICAgICBnZXRGaWxlRm9ybWF0KHRoaXMubGluaykgPT09ICdnZW9qc29uJ1xuICAgICkge1xuICAgICAgcmV0dXJuICdnZW9qc29uJ1xuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gIG9wZW5JbkV4dGVybmFsVmlld2VyKCkge1xuICAgIGNvbnN0IHRlbXBsYXRlVXJsID0gdGhpcy5tYXBDb25maWcuRVhURVJOQUxfVklFV0VSX1VSTF9URU1QTEFURVxuICAgIGNvbnN0IGxheWVyTmFtZSA9IHRoaXMubGluay5uYW1lXG4gICAgICA/IHRoaXMubGluay5uYW1lXG4gICAgICA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdleHRlcm5hbHZpZXdlci5kYXRhc2V0LnVubmFtZWQnKVxuICAgIGNvbnN0IHVybCA9IHRlbXBsYXRlVXJsXG4gICAgICAucmVwbGFjZSgnJHtsYXllcl9uYW1lfScsIGAke2xheWVyTmFtZX1gKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgICcke3NlcnZpY2VfdXJsfScsXG4gICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmxpbmsudXJsLnRvU3RyaW5nKCkpfWBcbiAgICAgIClcbiAgICAgIC5yZXBsYWNlKCcke3NlcnZpY2VfdHlwZX0nLCBgJHt0aGlzLnN1cHBvcnRlZExpbmtMYXllclR5cGV9YClcbiAgICB3aW5kb3dcbiAgICAgIC5vcGVuKFxuICAgICAgICB1cmwsXG4gICAgICAgIHRoaXMubWFwQ29uZmlnLkVYVEVSTkFMX1ZJRVdFUl9PUEVOX05FV19UQUIgPyAnX2JsYW5rJyA6ICdfc2VsZidcbiAgICAgIClcbiAgICAgIC5mb2N1cygpXG4gIH1cbn1cbiIsIjxnbi11aS1idXR0b25cbiAgKm5nSWY9XCJleHRlcm5hbFZpZXdlclwiXG4gIChidXR0b25DbGljayk9XCJvcGVuSW5FeHRlcm5hbFZpZXdlcigpXCJcbiAgdHlwZT1cInNlY29uZGFyeVwiXG4gIFt0aXRsZV09XCIncmVjb3JkLmV4dGVybmFsVmlld2VyLm9wZW4nIHwgdHJhbnNsYXRlXCJcbiAgZXh0cmFDbGFzcz1cIm1zLTIgIXJvdW5kZWQtbGdcIlxuPlxuICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+b3Blbl9pbl9uZXc8L21hdC1pY29uPlxuPC9nbi11aS1idXR0b24+XG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtdmlld2VyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvcmVjb3JkL3NyYy9saWIvZXh0ZXJuYWwtdmlld2VyLWJ1dHRvbi9leHRlcm5hbC12aWV3ZXItYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9leHRlcm5hbC12aWV3ZXItYnV0dG9uL2V4dGVybmFsLXZpZXdlci1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUE7Ozs7OztBQUV0RSxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtBQUV4QyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FDNUQsMkJBQTJCLENBQzVCLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FDNUQsMEJBQTBCLEVBQzFCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUN6QixDQUFBO0FBUUQsTUFBTSxPQUFPLDZCQUE2QjtJQUd4QyxJQUFJLGNBQWM7UUFDaEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFBO0lBQzVELENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQTtRQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEtBQUssS0FBSyxFQUFFO2dCQUM3QyxPQUFPLEtBQUssQ0FBQTthQUNiO1lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixLQUFLLEtBQUssRUFBRTtnQkFDN0MsT0FBTyxLQUFLLENBQUE7YUFDYjtTQUNGO2FBQU0sSUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVO1lBQzdCLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUN0QztZQUNBLE9BQU8sU0FBUyxDQUFBO1NBQ2pCO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsWUFDVSxnQkFBa0MsRUFHbEMsV0FBbUIsRUFFbkIsWUFBcUI7UUFMckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUdsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUVuQixpQkFBWSxHQUFaLFlBQVksQ0FBUztJQUM1QixDQUFDO0lBRUosb0JBQW9CO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUE7UUFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQzlCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtRQUNuRSxNQUFNLEdBQUcsR0FBRyxXQUFXO2FBQ3BCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQzthQUN4QyxPQUFPLENBQ04sZ0JBQWdCLEVBQ2hCLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUNsRDthQUNBLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUE7UUFDL0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNsRSxDQUFDOytHQS9DVSw2QkFBNkIsa0RBMkI5Qiw0QkFBNEIsNkJBRzVCLDRCQUE0QjttR0E5QjNCLDZCQUE2Qiw4RkM3QjFDLHNTQVNBOzs0RkRvQmEsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLDhCQUE4QixtQkFHdkIsdUJBQXVCLENBQUMsTUFBTTs7MEJBNkI1QyxNQUFNOzJCQUFDLDRCQUE0Qjs7MEJBQ25DLFFBQVE7OzBCQUVSLE1BQU07MkJBQUMsNEJBQTRCOzRDQTdCN0IsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRGF0YXNldE9ubGluZVJlc291cmNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBnZXRGaWxlRm9ybWF0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5cbm1hcmtlcignZXh0ZXJuYWx2aWV3ZXIuZGF0YXNldC51bm5hbWVkJylcblxuZXhwb3J0IGNvbnN0IEVYVEVSTkFMX1ZJRVdFUl9VUkxfVEVNUExBVEUgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcbiAgJ2V4dGVybmFsVmlld2VyVXJsVGVtcGxhdGUnXG4pXG5leHBvcnQgY29uc3QgRVhURVJOQUxfVklFV0VSX09QRU5fTkVXX1RBQiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPihcbiAgJ2V4dGVybmFsVmlld2VyT3Blbk5ld1RhYicsXG4gIHsgZmFjdG9yeTogKCkgPT4gZmFsc2UgfVxuKVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1leHRlcm5hbC12aWV3ZXItYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2V4dGVybmFsLXZpZXdlci1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9leHRlcm5hbC12aWV3ZXItYnV0dG9uLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEV4dGVybmFsVmlld2VyQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbGluazogRGF0YXNldE9ubGluZVJlc291cmNlXG5cbiAgZ2V0IGV4dGVybmFsVmlld2VyKCkge1xuICAgIHJldHVybiAhIXRoaXMudXJsVGVtcGxhdGUgJiYgISF0aGlzLnN1cHBvcnRlZExpbmtMYXllclR5cGVcbiAgfVxuXG4gIGdldCBzdXBwb3J0ZWRMaW5rTGF5ZXJUeXBlKCkge1xuICAgIGlmICghdGhpcy5saW5rKSByZXR1cm4gbnVsbFxuICAgIGlmICh0aGlzLmxpbmsudHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgICBpZiAodGhpcy5saW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ3dtcycpIHtcbiAgICAgICAgcmV0dXJuICd3bXMnXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5saW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ3dmcycpIHtcbiAgICAgICAgcmV0dXJuICd3ZnMnXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMubGluay50eXBlID09PSAnZG93bmxvYWQnICYmXG4gICAgICBnZXRGaWxlRm9ybWF0KHRoaXMubGluaykgPT09ICdnZW9qc29uJ1xuICAgICkge1xuICAgICAgcmV0dXJuICdnZW9qc29uJ1xuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBJbmplY3QoRVhURVJOQUxfVklFV0VSX1VSTF9URU1QTEFURSlcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgdXJsVGVtcGxhdGU6IHN0cmluZyxcbiAgICBASW5qZWN0KEVYVEVSTkFMX1ZJRVdFUl9PUEVOX05FV19UQUIpXG4gICAgcHJpdmF0ZSBvcGVuaW5OZXdUYWI6IGJvb2xlYW5cbiAgKSB7fVxuXG4gIG9wZW5JbkV4dGVybmFsVmlld2VyKCkge1xuICAgIGNvbnN0IHRlbXBsYXRlVXJsID0gdGhpcy51cmxUZW1wbGF0ZVxuICAgIGNvbnN0IGxheWVyTmFtZSA9IHRoaXMubGluay5uYW1lXG4gICAgICA/IHRoaXMubGluay5uYW1lXG4gICAgICA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdleHRlcm5hbHZpZXdlci5kYXRhc2V0LnVubmFtZWQnKVxuICAgIGNvbnN0IHVybCA9IHRlbXBsYXRlVXJsXG4gICAgICAucmVwbGFjZSgnJHtsYXllcl9uYW1lfScsIGAke2xheWVyTmFtZX1gKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgICcke3NlcnZpY2VfdXJsfScsXG4gICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmxpbmsudXJsLnRvU3RyaW5nKCkpfWBcbiAgICAgIClcbiAgICAgIC5yZXBsYWNlKCcke3NlcnZpY2VfdHlwZX0nLCBgJHt0aGlzLnN1cHBvcnRlZExpbmtMYXllclR5cGV9YClcbiAgICB3aW5kb3cub3Blbih1cmwsIHRoaXMub3BlbmluTmV3VGFiID8gJ19ibGFuaycgOiAnX3NlbGYnKS5mb2N1cygpXG4gIH1cbn1cbiIsIjxnbi11aS1idXR0b25cbiAgKm5nSWY9XCJleHRlcm5hbFZpZXdlclwiXG4gIChidXR0b25DbGljayk9XCJvcGVuSW5FeHRlcm5hbFZpZXdlcigpXCJcbiAgdHlwZT1cInNlY29uZGFyeVwiXG4gIFt0aXRsZV09XCIncmVjb3JkLmV4dGVybmFsVmlld2VyLm9wZW4nIHwgdHJhbnNsYXRlXCJcbiAgZXh0cmFDbGFzcz1cIm1zLTIgIXJvdW5kZWQtbGdcIlxuPlxuICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+b3Blbl9pbl9uZXc8L21hdC1pY29uPlxuPC9nbi11aS1idXR0b24+XG4iXX0=