@provoly/dashboard 0.19.1 → 0.19.3

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 (550) hide show
  1. package/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.d.ts +2 -1
  2. package/dataset/style/_o-pry-dataset-card.scss +49 -7
  3. package/dataset/style/_o-pry-dataset.scss +5 -7
  4. package/esm2022/admin/admin-routing.module.mjs +5 -5
  5. package/esm2022/admin/admin.module.mjs +5 -5
  6. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +4 -4
  7. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +4 -4
  8. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +4 -4
  9. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +4 -4
  10. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +4 -4
  11. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +4 -4
  12. package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +4 -4
  13. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +4 -4
  14. package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +4 -4
  15. package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +4 -4
  16. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.effects.mjs +4 -4
  17. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.service.mjs +4 -4
  18. package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +8 -7
  19. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +4 -4
  20. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +4 -4
  21. package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +4 -4
  22. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +4 -4
  23. package/esm2022/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.mjs +4 -4
  24. package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +4 -4
  25. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +4 -4
  26. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +4 -4
  27. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +4 -4
  28. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +4 -4
  29. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +4 -4
  30. package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +4 -4
  31. package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +4 -4
  32. package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +4 -4
  33. package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +4 -4
  34. package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +4 -4
  35. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +4 -4
  36. package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +4 -4
  37. package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +4 -4
  38. package/esm2022/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.mjs +4 -4
  39. package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +4 -4
  40. package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +4 -4
  41. package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +4 -4
  42. package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +4 -4
  43. package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +4 -4
  44. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +4 -4
  45. package/esm2022/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.mjs +4 -4
  46. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +4 -4
  47. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +4 -4
  48. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +4 -4
  49. package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +4 -4
  50. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +4 -4
  51. package/esm2022/admin/components/admin-links/admin-links.component.mjs +4 -4
  52. package/esm2022/admin/components/admin-links/store/links.effects.mjs +4 -4
  53. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +4 -4
  54. package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +4 -4
  55. package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +4 -4
  56. package/esm2022/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.mjs +4 -4
  57. package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +4 -4
  58. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +4 -4
  59. package/esm2022/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.mjs +5 -5
  60. package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +4 -4
  61. package/esm2022/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.mjs +4 -4
  62. package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +4 -4
  63. package/esm2022/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.mjs +4 -4
  64. package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +4 -4
  65. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +4 -4
  66. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +4 -4
  67. package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +4 -4
  68. package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +4 -4
  69. package/esm2022/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.mjs +4 -4
  70. package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +4 -4
  71. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +4 -4
  72. package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +4 -4
  73. package/esm2022/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.mjs +4 -4
  74. package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +4 -4
  75. package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +4 -4
  76. package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +4 -4
  77. package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +4 -4
  78. package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +4 -4
  79. package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +4 -4
  80. package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +4 -4
  81. package/esm2022/admin/components/admin-title/admin-title.component.mjs +4 -4
  82. package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +4 -4
  83. package/esm2022/admin/components/admin-user/admin-user.component.mjs +4 -4
  84. package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +4 -4
  85. package/esm2022/admin/components/admin.component.mjs +4 -4
  86. package/esm2022/admin/components/association/association.component.mjs +4 -4
  87. package/esm2022/admin/store/admin.effects.mjs +4 -4
  88. package/esm2022/admin/store/admin.service.mjs +4 -4
  89. package/esm2022/components/card/card.component.mjs +19 -19
  90. package/esm2022/components/card/card.module.mjs +5 -5
  91. package/esm2022/components/checkbox/checkbox.component.mjs +4 -4
  92. package/esm2022/components/checkbox/checkbox.module.mjs +5 -5
  93. package/esm2022/components/color-picker/color-picker.component.mjs +4 -4
  94. package/esm2022/components/color-picker/color-picker.module.mjs +5 -5
  95. package/esm2022/components/expand-panel/expand-panel.component.mjs +7 -7
  96. package/esm2022/components/expand-panel/expand-panel.module.mjs +5 -5
  97. package/esm2022/components/filter/filter.module.mjs +5 -5
  98. package/esm2022/components/filter/filter.pipe.mjs +4 -4
  99. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +4 -4
  100. package/esm2022/components/metadata-editor/metadata-editor.module.mjs +5 -5
  101. package/esm2022/components/metadata-editor/store/metadata.effects.mjs +4 -4
  102. package/esm2022/components/metadata-editor/store/metadata.service.mjs +4 -4
  103. package/esm2022/components/metadata-editor/style/css.component.mjs +4 -4
  104. package/esm2022/components/scheme-picker/scheme-picker.component.mjs +4 -4
  105. package/esm2022/components/scheme-picker/scheme-picker.module.mjs +5 -5
  106. package/esm2022/components/scheme-picker/scheme.service.mjs +4 -4
  107. package/esm2022/components/sinceDate/sinceDate.module.mjs +5 -5
  108. package/esm2022/components/sinceDate/sinceDate.pipe.mjs +4 -4
  109. package/esm2022/components/stepper/step/step.component.mjs +4 -4
  110. package/esm2022/components/stepper/step-title.directive.mjs +4 -4
  111. package/esm2022/components/stepper/stepper.component.mjs +4 -4
  112. package/esm2022/components/stepper/stepper.module.mjs +5 -5
  113. package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +7 -7
  114. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +14 -6
  115. package/esm2022/dataset/components/dataset.component.mjs +4 -4
  116. package/esm2022/dataset/dataset.module.mjs +5 -5
  117. package/esm2022/dataset/style/css.component.mjs +5 -5
  118. package/esm2022/filters/autocomplete/autocomplete.component.mjs +4 -4
  119. package/esm2022/filters/autocomplete/autocomplete.module.mjs +5 -5
  120. package/esm2022/filters/autocomplete/style/css.component.mjs +4 -4
  121. package/esm2022/filters/date/date-filter.component.mjs +4 -4
  122. package/esm2022/filters/date/date-filter.module.mjs +5 -5
  123. package/esm2022/filters/list/list-filter.component.mjs +4 -4
  124. package/esm2022/filters/list/list-filter.module.mjs +5 -5
  125. package/esm2022/filters/list/style/css.component.mjs +4 -4
  126. package/esm2022/filters/number/number-filter.component.mjs +4 -4
  127. package/esm2022/filters/number/number-filter.module.mjs +5 -5
  128. package/esm2022/filters/text/text-filter.component.mjs +4 -4
  129. package/esm2022/filters/text/text-filter.module.mjs +5 -5
  130. package/esm2022/import/components/import.component.mjs +4 -4
  131. package/esm2022/import/import-routing.module.mjs +5 -5
  132. package/esm2022/import/import.module.mjs +5 -5
  133. package/esm2022/import/store/import.effects.mjs +4 -4
  134. package/esm2022/import/store/import.service.mjs +4 -4
  135. package/esm2022/import/style/css.component.mjs +4 -4
  136. package/esm2022/lib/core/access/access.directive.mjs +4 -4
  137. package/esm2022/lib/core/access/access.guard.mjs +4 -4
  138. package/esm2022/lib/core/access/access.service.mjs +4 -4
  139. package/esm2022/lib/core/auth/geoAuth.service.mjs +4 -4
  140. package/esm2022/lib/core/components/about/about.component.mjs +4 -4
  141. package/esm2022/lib/core/components/about/pry-about.module.mjs +5 -5
  142. package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +4 -4
  143. package/esm2022/lib/core/components/accordion/accordion.component.mjs +4 -4
  144. package/esm2022/lib/core/components/base-layout/base-layout.component.mjs +4 -4
  145. package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +4 -4
  146. package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +4 -4
  147. package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +4 -4
  148. package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +4 -4
  149. package/esm2022/lib/core/components/date-picker/date-picker.module.mjs +5 -5
  150. package/esm2022/lib/core/components/date-picker/date-range-highlight.pipe.mjs +4 -4
  151. package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +4 -4
  152. package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +4 -4
  153. package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +4 -4
  154. package/esm2022/lib/core/components/edit-input/edit-input.module.mjs +5 -5
  155. package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +7 -11
  156. package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.mjs +4 -4
  157. package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.mjs +5 -5
  158. package/esm2022/lib/core/components/icon/icon.component.mjs +4 -4
  159. package/esm2022/lib/core/components/icon/icon.module.mjs +5 -5
  160. package/esm2022/lib/core/components/modal/modal.component.mjs +4 -4
  161. package/esm2022/lib/core/components/modal/pry-modal.module.mjs +5 -5
  162. package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +4 -4
  163. package/esm2022/lib/core/components/modal-status/modal-status.module.mjs +5 -5
  164. package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +4 -4
  165. package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +4 -4
  166. package/esm2022/lib/core/components/overlay/dialog.service.mjs +4 -4
  167. package/esm2022/lib/core/components/overlay/overlay.directive.mjs +4 -4
  168. package/esm2022/lib/core/components/overlay/overlay.module.mjs +5 -5
  169. package/esm2022/lib/core/components/range/range.component.mjs +4 -4
  170. package/esm2022/lib/core/components/range/range.module.mjs +5 -5
  171. package/esm2022/lib/core/components/select/select.component.mjs +4 -4
  172. package/esm2022/lib/core/components/select/select.module.mjs +5 -5
  173. package/esm2022/lib/core/components/select-image/select-image.component.mjs +4 -4
  174. package/esm2022/lib/core/components/share/share.component.mjs +4 -4
  175. package/esm2022/lib/core/components/share/share.module.mjs +5 -5
  176. package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +4 -4
  177. package/esm2022/lib/core/components/snackbar/snackbar.module.mjs +5 -5
  178. package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +4 -4
  179. package/esm2022/lib/core/components/sort/sort-data.pipe.mjs +4 -4
  180. package/esm2022/lib/core/components/sort/sort-header/sort-header.component.mjs +4 -4
  181. package/esm2022/lib/core/components/sort/sort-header.directive.mjs +4 -4
  182. package/esm2022/lib/core/components/sort/sort-table.directive.mjs +4 -4
  183. package/esm2022/lib/core/components/sort/sort.module.mjs +5 -5
  184. package/esm2022/lib/core/components/tabs/tab-group.component.mjs +4 -4
  185. package/esm2022/lib/core/components/tabs/tab.component.mjs +4 -4
  186. package/esm2022/lib/core/components/toggle/toggle.component.mjs +4 -4
  187. package/esm2022/lib/core/components/toggle/toggle.module.mjs +5 -5
  188. package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +4 -4
  189. package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +4 -4
  190. package/esm2022/lib/core/components/upload/upload.component.mjs +4 -4
  191. package/esm2022/lib/core/core.module.mjs +5 -5
  192. package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +4 -4
  193. package/esm2022/lib/core/i18n/i18n.module.mjs +5 -5
  194. package/esm2022/lib/core/i18n/i18n.pipe.mjs +4 -4
  195. package/esm2022/lib/core/i18n/i18n.service.mjs +4 -4
  196. package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
  197. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
  198. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +4 -4
  199. package/esm2022/lib/core/store/aggregation/base-aggregation.service.mjs +4 -4
  200. package/esm2022/lib/core/store/aggregation/frontend-aggregation/frontend-aggregation.service.mjs +4 -4
  201. package/esm2022/lib/core/store/category/category.effects.mjs +4 -4
  202. package/esm2022/lib/core/store/category/category.service.mjs +4 -4
  203. package/esm2022/lib/core/store/class/class.effects.mjs +4 -4
  204. package/esm2022/lib/core/store/class/class.service.mjs +4 -4
  205. package/esm2022/lib/core/store/config/config.actions.mjs +1 -2
  206. package/esm2022/lib/core/store/config/config.effects.mjs +4 -4
  207. package/esm2022/lib/core/store/config/config.reducer.mjs +1 -5
  208. package/esm2022/lib/core/store/config/config.selectors.mjs +1 -3
  209. package/esm2022/lib/core/store/config/config.service.mjs +4 -4
  210. package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +4 -4
  211. package/esm2022/lib/core/store/context-menu/context-menu.effects.mjs +4 -4
  212. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +5 -5
  213. package/esm2022/lib/core/store/data-source/data-source.service.mjs +4 -4
  214. package/esm2022/lib/core/store/field/field.effects.mjs +4 -4
  215. package/esm2022/lib/core/store/field/field.interface.mjs +2 -1
  216. package/esm2022/lib/core/store/field/field.service.mjs +4 -4
  217. package/esm2022/lib/core/store/image/image.effects.mjs +4 -4
  218. package/esm2022/lib/core/store/image/image.service.mjs +4 -4
  219. package/esm2022/lib/core/store/item/item.effects.mjs +4 -4
  220. package/esm2022/lib/core/store/item/item.service.mjs +4 -4
  221. package/esm2022/lib/core/store/raw/raw.service.mjs +4 -4
  222. package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +4 -4
  223. package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +4 -4
  224. package/esm2022/lib/core/store/search/search.actions.mjs +1 -1
  225. package/esm2022/lib/core/store/search/search.effects.mjs +5 -5
  226. package/esm2022/lib/core/store/search/search.service.mjs +8 -13
  227. package/esm2022/lib/core/symbol/symbol.service.mjs +4 -4
  228. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +4 -4
  229. package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +4 -4
  230. package/esm2022/lib/core/ws/websocket.service.mjs +4 -4
  231. package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +4 -4
  232. package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +4 -4
  233. package/esm2022/lib/dashboard/base-widget.module.mjs +5 -5
  234. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +4 -4
  235. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +4 -4
  236. package/esm2022/lib/dashboard/components/dashboard.component.mjs +8 -8
  237. package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +5 -8
  238. package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +4 -4
  239. package/esm2022/lib/dashboard/components/subscriptionner.directive.mjs +4 -4
  240. package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +4 -4
  241. package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +4 -4
  242. package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +4 -4
  243. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +4 -4
  244. package/esm2022/lib/dashboard/components/widgets/header/resultset-size.pipe.mjs +4 -4
  245. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +4 -4
  246. package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +4 -4
  247. package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +4 -4
  248. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +8 -6
  249. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +4 -4
  250. package/esm2022/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.mjs +4 -4
  251. package/esm2022/lib/dashboard/dashboard.module.mjs +12 -10
  252. package/esm2022/lib/dashboard/filter/base-filter.component.mjs +4 -4
  253. package/esm2022/lib/dashboard/filter/base-filter.module.mjs +5 -5
  254. package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +4 -4
  255. package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +4 -4
  256. package/esm2022/lib/dashboard/filter/filter-factory.service.mjs +4 -4
  257. package/esm2022/lib/dashboard/filter/style/css.component.mjs +4 -4
  258. package/esm2022/lib/dashboard/item-utils.mjs +15 -14
  259. package/esm2022/lib/dashboard/public-api.mjs +1 -2
  260. package/esm2022/lib/dashboard/store/dashboard-init.service.mjs +4 -4
  261. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -3
  262. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +51 -26
  263. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -2
  264. package/esm2022/lib/dashboard/store/manifest-utils.class.mjs +10 -7
  265. package/esm2022/lib/dashboard/store/manifest.service.mjs +5 -5
  266. package/esm2022/lib/dashboard/store/proxy.utils.mjs +76 -0
  267. package/esm2022/lib/dashboard/store/refresh.service.mjs +12 -7
  268. package/esm2022/lib/dashboard/store/title.service.mjs +4 -4
  269. package/esm2022/lib/dashboard/store/wms.service.mjs +4 -4
  270. package/esm2022/lib/dashboard/tooltip/base-tooltip.component.mjs +4 -4
  271. package/esm2022/lib/dashboard/tooltip/base-tooltip.module.mjs +5 -5
  272. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +4 -4
  273. package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +4 -4
  274. package/esm2022/notification/components/notification/content/notification-content.component.mjs +4 -4
  275. package/esm2022/notification/components/notification/notification.component.mjs +4 -4
  276. package/esm2022/notification/notification.module.mjs +5 -5
  277. package/esm2022/notification/store/notification.effects.mjs +4 -4
  278. package/esm2022/notification/store/notification.service.mjs +4 -4
  279. package/esm2022/notification/style/css.component.mjs +4 -4
  280. package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +4 -4
  281. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +4 -4
  282. package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +4 -4
  283. package/esm2022/pipeline/components/pipeline-properties-panel.component.mjs +4 -4
  284. package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +4 -4
  285. package/esm2022/pipeline/pipeline.module.mjs +5 -5
  286. package/esm2022/pipeline/store/pipeline.effects.mjs +4 -4
  287. package/esm2022/pipeline/store/pipeline.service.mjs +4 -4
  288. package/esm2022/pipeline/style/css.component.mjs +4 -4
  289. package/esm2022/pipeline-components/filter/component/filter.component.mjs +4 -4
  290. package/esm2022/pipeline-components/filter/filter.module.mjs +5 -5
  291. package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +4 -4
  292. package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +5 -5
  293. package/esm2022/pipeline-components/noop/component/noop.component.mjs +4 -4
  294. package/esm2022/pipeline-components/noop/noop.module.mjs +5 -5
  295. package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +4 -4
  296. package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +5 -5
  297. package/esm2022/pipeline-components/subgraph/component/empty.component.mjs +4 -4
  298. package/esm2022/pipeline-components/subgraph/subgraph.module.mjs +5 -5
  299. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +20 -30
  300. package/esm2022/presentation/components/presentation.component.mjs +40 -43
  301. package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +4 -4
  302. package/esm2022/presentation/i18n/en.translations.mjs +3 -1
  303. package/esm2022/presentation/i18n/fr.translations.mjs +3 -1
  304. package/esm2022/presentation/presentation.module.mjs +5 -5
  305. package/esm2022/presentation/style/css.component.mjs +5 -5
  306. package/esm2022/restitution/components/restitution/restitution.component.mjs +24 -8
  307. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +31 -9
  308. package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +4 -4
  309. package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +4 -4
  310. package/esm2022/restitution/i18n/en.translations.mjs +2 -1
  311. package/esm2022/restitution/i18n/fr.translations.mjs +3 -1
  312. package/esm2022/restitution/restitution.module.mjs +5 -5
  313. package/esm2022/restitution/style/css.component.mjs +5 -5
  314. package/esm2022/search/components/choose-widget/choose-widget.component.mjs +4 -4
  315. package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +9 -5
  316. package/esm2022/search/components/edit-named-query-modal/edit-named-query-modal.component.mjs +4 -4
  317. package/esm2022/search/components/save-query/save-query.component.mjs +4 -4
  318. package/esm2022/search/components/save-query-button/save-query-button.component.mjs +4 -4
  319. package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +4 -4
  320. package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +4 -4
  321. package/esm2022/search/search-fulltext/store/search-fulltext.service.mjs +4 -4
  322. package/esm2022/search/search-home/search-home.component.mjs +5 -5
  323. package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +4 -4
  324. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +4 -4
  325. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +4 -4
  326. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +4 -4
  327. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +4 -4
  328. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +4 -4
  329. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +4 -4
  330. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +4 -4
  331. package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +4 -4
  332. package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +4 -4
  333. package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +4 -4
  334. package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +4 -4
  335. package/esm2022/search/search-tools/search-tools.component.mjs +4 -4
  336. package/esm2022/search/search.module.mjs +5 -5
  337. package/esm2022/search/style/css.component.mjs +4 -4
  338. package/esm2022/supervision/components/supervision-business-data/supervision-business-data.component.mjs +4 -4
  339. package/esm2022/supervision/components/supervision-flow/supervision-flow.component.mjs +4 -4
  340. package/esm2022/supervision/components/supervision-infrastructures/supervision-infrastructures.component.mjs +4 -4
  341. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +4 -4
  342. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +4 -4
  343. package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +4 -4
  344. package/esm2022/supervision/components/supervision-menu/supervision-menu.component.mjs +4 -4
  345. package/esm2022/supervision/components/supervision-title/supervision-title.component.mjs +4 -4
  346. package/esm2022/supervision/components/supervision.component.mjs +4 -4
  347. package/esm2022/supervision/store/supervision.effects.mjs +4 -4
  348. package/esm2022/supervision/store/supervision.service.mjs +4 -4
  349. package/esm2022/supervision/supervision-routing.module.mjs +5 -5
  350. package/esm2022/supervision/supervision.module.mjs +5 -5
  351. package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +7 -5
  352. package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +4 -4
  353. package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +4 -4
  354. package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +4 -4
  355. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +4 -4
  356. package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +4 -4
  357. package/esm2022/toolbox/components/named-query/named-query.component.mjs +4 -4
  358. package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +11 -7
  359. package/esm2022/toolbox/components/save-view/save-view.component.mjs +4 -4
  360. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +4 -4
  361. package/esm2022/toolbox/components/toolbox-action/toolbox-action.component.mjs +4 -4
  362. package/esm2022/toolbox/components/toolbox-action-instanciator/toolbox-action-instanciator.component.mjs +4 -4
  363. package/esm2022/toolbox/components/toolbox.component.mjs +4 -4
  364. package/esm2022/toolbox/style/css.component.mjs +4 -4
  365. package/esm2022/toolbox/toolbox.module.mjs +5 -5
  366. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +4 -4
  367. package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +5 -5
  368. package/esm2022/tooltips/cluster/cluster-tooltip.component.mjs +4 -4
  369. package/esm2022/tooltips/cluster/cluster-tooltip.module.mjs +5 -5
  370. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +23 -11
  371. package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +4 -4
  372. package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +5 -5
  373. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +4 -4
  374. package/esm2022/widgets/widget-chart/style/css.component.mjs +4 -4
  375. package/esm2022/widgets/widget-chart/widget-chart.module.mjs +5 -5
  376. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +4 -4
  377. package/esm2022/widgets/widget-detail/style/css.component.mjs +4 -4
  378. package/esm2022/widgets/widget-detail/widget-detail.module.mjs +5 -5
  379. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +4 -4
  380. package/esm2022/widgets/widget-graph/style/css.component.mjs +4 -4
  381. package/esm2022/widgets/widget-graph/widget-graph.module.mjs +5 -5
  382. package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +4 -4
  383. package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +4 -4
  384. package/esm2022/widgets/widget-iframe/style/css.component.mjs +4 -4
  385. package/esm2022/widgets/widget-iframe/widget-iframe.module.mjs +5 -5
  386. package/esm2022/widgets/widget-image/component/widget-image.component.mjs +4 -4
  387. package/esm2022/widgets/widget-image/style/css.component.mjs +4 -4
  388. package/esm2022/widgets/widget-image/widget-image.module.mjs +5 -5
  389. package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +4 -4
  390. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +160 -18
  391. package/esm2022/widgets/widget-map/i18n/en.translations.mjs +13 -2
  392. package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +13 -2
  393. package/esm2022/widgets/widget-map/interaction/layer-slider.class.mjs +63 -0
  394. package/esm2022/widgets/widget-map/interaction/selection-interaction.class.mjs +21 -16
  395. package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +4 -4
  396. package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +24 -12
  397. package/esm2022/widgets/widget-map/public-api.mjs +2 -1
  398. package/esm2022/widgets/widget-map/style/css.component.mjs +5 -5
  399. package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +2 -2
  400. package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +42 -1
  401. package/esm2022/widgets/widget-map/widget-map.module.mjs +5 -5
  402. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +11 -6
  403. package/esm2022/widgets/widget-table/expand-value/detach-row.directive.mjs +4 -4
  404. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +4 -4
  405. package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +4 -4
  406. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +5 -5
  407. package/esm2022/widgets/widget-table/resizable/resizable.component.mjs +4 -4
  408. package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +4 -4
  409. package/esm2022/widgets/widget-table/style/css.component.mjs +4 -4
  410. package/esm2022/widgets/widget-table/widget-table.module.mjs +5 -5
  411. package/esm2022/widgets/widget-template/component/widget-template.component.mjs +4 -4
  412. package/esm2022/widgets/widget-template/style/css.component.mjs +4 -4
  413. package/esm2022/widgets/widget-template/widget-template.module.mjs +5 -5
  414. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +4 -4
  415. package/esm2022/widgets/widget-tile/style/css.component.mjs +4 -4
  416. package/esm2022/widgets/widget-tile/widget-tile.module.mjs +5 -5
  417. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +4 -4
  418. package/esm2022/widgets/widget-vega/style/css.component.mjs +4 -4
  419. package/esm2022/widgets/widget-vega/widget-vega.module.mjs +5 -5
  420. package/fesm2022/provoly-dashboard-admin.mjs +261 -260
  421. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  422. package/fesm2022/provoly-dashboard-components-card.mjs +22 -22
  423. package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -1
  424. package/fesm2022/provoly-dashboard-components-checkbox.mjs +7 -7
  425. package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
  426. package/fesm2022/provoly-dashboard-components-color-picker.mjs +7 -7
  427. package/fesm2022/provoly-dashboard-components-color-picker.mjs.map +1 -1
  428. package/fesm2022/provoly-dashboard-components-expand-panel.mjs +10 -10
  429. package/fesm2022/provoly-dashboard-components-expand-panel.mjs.map +1 -1
  430. package/fesm2022/provoly-dashboard-components-filter.mjs +7 -7
  431. package/fesm2022/provoly-dashboard-components-filter.mjs.map +1 -1
  432. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +16 -16
  433. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  434. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +10 -10
  435. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
  436. package/fesm2022/provoly-dashboard-components-sinceDate.mjs +7 -7
  437. package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -1
  438. package/fesm2022/provoly-dashboard-components-stepper.mjs +13 -13
  439. package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -1
  440. package/fesm2022/provoly-dashboard-dataset.mjs +28 -20
  441. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  442. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +10 -10
  443. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
  444. package/fesm2022/provoly-dashboard-filters-date.mjs +7 -7
  445. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
  446. package/fesm2022/provoly-dashboard-filters-list.mjs +10 -10
  447. package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
  448. package/fesm2022/provoly-dashboard-filters-number.mjs +7 -7
  449. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
  450. package/fesm2022/provoly-dashboard-filters-text.mjs +7 -7
  451. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
  452. package/fesm2022/provoly-dashboard-import.mjs +20 -20
  453. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  454. package/fesm2022/provoly-dashboard-notification.mjs +19 -19
  455. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  456. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +7 -7
  457. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
  458. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +7 -7
  459. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
  460. package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs +7 -7
  461. package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs.map +1 -1
  462. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +7 -7
  463. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
  464. package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs +7 -7
  465. package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs.map +1 -1
  466. package/fesm2022/provoly-dashboard-pipeline.mjs +28 -28
  467. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  468. package/fesm2022/provoly-dashboard-presentation.mjs +75 -84
  469. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  470. package/fesm2022/provoly-dashboard-restitution.mjs +71 -30
  471. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  472. package/fesm2022/provoly-dashboard-search.mjs +79 -75
  473. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  474. package/fesm2022/provoly-dashboard-supervision.mjs +41 -41
  475. package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -1
  476. package/fesm2022/provoly-dashboard-toolbox.mjs +56 -50
  477. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  478. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +7 -7
  479. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  480. package/fesm2022/provoly-dashboard-tooltips-cluster.mjs +7 -7
  481. package/fesm2022/provoly-dashboard-tooltips-cluster.mjs.map +1 -1
  482. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +29 -17
  483. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  484. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +10 -10
  485. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  486. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +10 -10
  487. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  488. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +10 -10
  489. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  490. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +13 -13
  491. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
  492. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +10 -10
  493. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -1
  494. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +345 -63
  495. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  496. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +36 -31
  497. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  498. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +10 -10
  499. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
  500. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +10 -10
  501. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  502. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +10 -10
  503. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  504. package/fesm2022/provoly-dashboard.mjs +806 -741
  505. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  506. package/lib/core/components/get-secured-image/get-secured-image.pipe.d.ts +1 -5
  507. package/lib/core/model/manifest.interface.d.ts +0 -1
  508. package/lib/core/model/widget-map-manifest.interface.d.ts +2 -0
  509. package/lib/core/store/config/config.actions.d.ts +0 -1
  510. package/lib/core/store/config/config.selectors.d.ts +0 -1
  511. package/lib/core/store/field/field.interface.d.ts +1 -0
  512. package/lib/core/store/search/search.actions.d.ts +4 -0
  513. package/lib/core/store/search/search.service.d.ts +1 -6
  514. package/lib/dashboard/components/manifests/manifests.component.d.ts +0 -1
  515. package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +4 -1
  516. package/lib/dashboard/dashboard.module.d.ts +2 -0
  517. package/lib/dashboard/item-utils.d.ts +2 -3
  518. package/lib/dashboard/public-api.d.ts +0 -1
  519. package/lib/dashboard/store/dashboard.actions.d.ts +7 -7
  520. package/lib/dashboard/store/dashboard.effects.d.ts +15 -2
  521. package/lib/dashboard/store/dashboard.selectors.d.ts +13 -7
  522. package/lib/dashboard/store/manifest-utils.class.d.ts +4 -1
  523. package/lib/dashboard/store/proxy.utils.d.ts +24 -0
  524. package/package.json +7 -7
  525. package/presentation/components/presentation.component.d.ts +6 -6
  526. package/presentation/i18n/en.translations.d.ts +2 -0
  527. package/presentation/i18n/fr.translations.d.ts +2 -0
  528. package/presentation/style/_o-pry-presentation.scss +21 -7
  529. package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +5 -4
  530. package/restitution/i18n/en.translations.d.ts +1 -0
  531. package/restitution/i18n/fr.translations.d.ts +2 -0
  532. package/restitution/style/_o-restitution.scss +14 -0
  533. package/schematics/ng-update/version-0-13/index.spec.js +0 -1
  534. package/schematics/ng-update/version-0-13/index.spec.js.map +1 -1
  535. package/styles/components/_o-widget.scss +57 -2
  536. package/styles-theme/components-theme/_o-widget.theme.scss +1 -1
  537. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +8 -0
  538. package/widgets/widget-map/component/widget-map.component.d.ts +41 -3
  539. package/widgets/widget-map/i18n/en.translations.d.ts +11 -0
  540. package/widgets/widget-map/i18n/fr.translations.d.ts +11 -0
  541. package/widgets/widget-map/interaction/layer-slider.class.d.ts +10 -0
  542. package/widgets/widget-map/interaction/selection-interaction.class.d.ts +2 -3
  543. package/widgets/widget-map/pipe/widget-map-legend-url.pipe.d.ts +1 -0
  544. package/widgets/widget-map/public-api.d.ts +1 -0
  545. package/widgets/widget-map/style/_o-layer-legend.scss +16 -7
  546. package/widgets/widget-map/style/_o-widget-map.scss +83 -1
  547. package/widgets/widget-map/utils/xml-utils.class.d.ts +10 -0
  548. package/assets/svgs/more_vertical.svg +0 -5
  549. package/esm2022/lib/dashboard/guard/default-view.guard.mjs +0 -41
  550. package/lib/dashboard/guard/default-view.guard.d.ts +0 -14
@@ -15,10 +15,10 @@ import { getWidth, getTopLeft, createEmpty, boundingExtent } from 'ol/extent';
15
15
  import { Heatmap, Tile } from 'ol/layer';
16
16
  import { toLonLat, get, transform, fromLonLat } from 'ol/proj';
17
17
  import { register } from 'ol/proj/proj4';
18
- import { Vector, TileWMS, WMTS, XYZ, Cluster } from 'ol/source';
18
+ import { Vector, TileWMS, WMTS, XYZ, Cluster, DataTile } from 'ol/source';
19
19
  import proj4 from 'proj4';
20
- import { map, combineLatest, filter, BehaviorSubject, distinctUntilChanged, startWith, debounceTime, delay, mergeMap, of, from, switchMap } from 'rxjs';
21
- import { ScaleLine } from 'ol/control';
20
+ import { BehaviorSubject, map, combineLatest, filter, distinctUntilChanged, startWith, debounceTime, delay, mergeMap, of, from, switchMap } from 'rxjs';
21
+ import { ScaleLine, Attribution, defaults } from 'ol/control';
22
22
  import { Polygon, Circle as Circle$1, LineString } from 'ol/geom';
23
23
  import PointerInteraction from 'ol/interaction/Pointer';
24
24
  import TileLayer from 'ol/layer/Tile';
@@ -32,11 +32,14 @@ import { GeoJSON, MVT } from 'ol/format';
32
32
  import VectorTile from 'ol/source/VectorTile';
33
33
  import CircleStyle from 'ol/style/Circle';
34
34
  import WMTSTileGrid from 'ol/tilegrid/WMTS';
35
+ import { getRenderPixel } from 'ol/render';
36
+ import WebGLTileLayer from 'ol/layer/WebGLTile';
35
37
  import * as i1 from '@ngrx/store';
36
38
 
37
39
  class SelectionInteraction extends PointerInteraction {
38
40
  constructor() {
39
41
  super({});
42
+ this.selectionType$ = new BehaviorSubject('move');
40
43
  this.currentRectangle = new RenderBox('ol-rectangle-selection');
41
44
  this.lassoCoordinates = [];
42
45
  this.currentLassoFeature = null;
@@ -47,13 +50,11 @@ class SelectionInteraction extends PointerInteraction {
47
50
  })
48
51
  });
49
52
  this.coordinates = null;
50
- this.cursor = 'pointer';
51
53
  this.features = [];
52
- this.previousCursor = undefined;
53
54
  widgetMapConfig.actions$.subscribe((actions) => {
54
55
  // @ts-ignore
55
56
  this.actions = actions.filter((action) => action !== 'export' && action !== 'upload');
56
- this.selectionType = this.actions[0];
57
+ this.selectionType$.next(this.actions[0]);
57
58
  });
58
59
  this.overlayForLasso = new VectorLayer({
59
60
  source: new VectorSource({
@@ -71,10 +72,10 @@ class SelectionInteraction extends PointerInteraction {
71
72
  }
72
73
  handleDownEvent(evt) {
73
74
  const map = evt.map;
74
- if (this.selectionType === 'move') {
75
+ if (this.selectionType$.getValue() === 'move') {
75
76
  return false;
76
77
  }
77
- if (this.selectionType === 'click') {
78
+ if (this.selectionType$.getValue() === 'click') {
78
79
  this.features = [
79
80
  ...new Set(map
80
81
  .getFeaturesAtPixel(evt.pixel)
@@ -84,12 +85,12 @@ class SelectionInteraction extends PointerInteraction {
84
85
  // Click and move are collisionning. Need to make another button if needed right now click is aborted
85
86
  return true;
86
87
  }
87
- if (['rectangle', 'zoom'].includes(this.selectionType)) {
88
+ if (['rectangle', 'zoom'].includes(this.selectionType$.getValue())) {
88
89
  this.coordinates = evt.pixel;
89
90
  this.currentRectangle.setMap(evt.map);
90
91
  this.currentRectangle.setPixels(this.coordinates, this.coordinates);
91
92
  }
92
- if (this.selectionType === 'lasso') {
93
+ if (this.selectionType$.getValue() === 'lasso') {
93
94
  this.getMap()?.addLayer(this.overlayForLasso);
94
95
  this.lassoCoordinates = [evt.coordinate];
95
96
  if (!this.currentLassoFeature) {
@@ -103,11 +104,11 @@ class SelectionInteraction extends PointerInteraction {
103
104
  return [coordinates.concat(coordinates[0])];
104
105
  }
105
106
  handleDragEvent(evt) {
106
- if (['rectangle', 'zoom'].includes(this.selectionType)) {
107
+ if (['rectangle', 'zoom'].includes(this.selectionType$.getValue())) {
107
108
  this.currentRectangle.setPixels(this.coordinates ?? [0, 0], evt.pixel);
108
109
  return true;
109
110
  }
110
- if (this.selectionType === 'lasso') {
111
+ if (this.selectionType$.getValue() === 'lasso') {
111
112
  this.lassoCoordinates.push(evt.coordinate);
112
113
  this.currentLassoFeature?.getGeometry()?.setCoordinates(this.getPolygonCoordinates(this.lassoCoordinates));
113
114
  return true;
@@ -115,10 +116,10 @@ class SelectionInteraction extends PointerInteraction {
115
116
  return false;
116
117
  }
117
118
  handleUpEvent() {
118
- if (this.selectionType === 'click' && this.features.length > 0) {
119
+ if (this.selectionType$.getValue() === 'click' && this.features.length > 0) {
119
120
  this.store?.dispatch(DashboardActions.selectMany({ ids: this.features }));
120
121
  }
121
- if (this.selectionType === 'lasso') {
122
+ if (this.selectionType$.getValue() === 'lasso') {
122
123
  const geometry = this.currentLassoFeature?.getGeometry();
123
124
  const boxFeatures = this.getMap()
124
125
  ?.getAllLayers()
@@ -134,6 +135,11 @@ class SelectionInteraction extends PointerInteraction {
134
135
  case 'marker':
135
136
  return geometry?.intersectsCoordinate(feature.getGeometry().getCoordinates());
136
137
  case 'bubble':
138
+ return feature
139
+ .getGeometry()
140
+ .getCenter()
141
+ .map((coords) => geometry?.intersectsCoordinate(coords))
142
+ .reduce((a, b) => a || b, false);
137
143
  case 'line':
138
144
  return feature
139
145
  .getGeometry()
@@ -158,7 +164,7 @@ class SelectionInteraction extends PointerInteraction {
158
164
  this.getMap()?.removeLayer(this.overlayForLasso);
159
165
  this.lassoCoordinates = [];
160
166
  }
161
- if (this.selectionType === 'rectangle') {
167
+ if (this.selectionType$.getValue() === 'rectangle') {
162
168
  this.currentRectangle.setMap(null);
163
169
  const extent = this.currentRectangle.getGeometry().getExtent();
164
170
  const boxFeatures = this.getMap()
@@ -174,14 +180,14 @@ class SelectionInteraction extends PointerInteraction {
174
180
  ];
175
181
  this.store?.dispatch(DashboardActions.selectMany({ ids }));
176
182
  }
177
- if (this.selectionType === 'zoom') {
183
+ if (this.selectionType$.getValue() === 'zoom') {
178
184
  this.currentRectangle.setMap(null);
179
185
  const extent = this.currentRectangle.getGeometry().getExtent();
180
186
  this.getMap()
181
187
  ?.getView()
182
188
  .fit(extent, { padding: [20, 20, 70, 70], duration: 200 });
183
189
  }
184
- if (this.selectionType === 'lasso') {
190
+ if (this.selectionType$.getValue() === 'lasso') {
185
191
  this.getMap()?.removeLayer(this.overlayForLasso);
186
192
  }
187
193
  this.changeSelection(this.actions[0]);
@@ -190,7 +196,7 @@ class SelectionInteraction extends PointerInteraction {
190
196
  return false;
191
197
  }
192
198
  changeSelection(type) {
193
- this.selectionType = type;
199
+ this.selectionType$.next(type);
194
200
  }
195
201
  }
196
202
 
@@ -399,6 +405,27 @@ class XMLUtils {
399
405
  }
400
406
  return null;
401
407
  }
408
+ static allLayers(doc) {
409
+ const result = [];
410
+ if (doc) {
411
+ const WMSCapability = XMLUtils.find(doc.childNodes, 'WMS_Capabilities');
412
+ if (WMSCapability) {
413
+ const Capabilities = XMLUtils.find(WMSCapability.childNodes, 'Capability');
414
+ if (Capabilities) {
415
+ const layerBloc = XMLUtils.find(Capabilities.childNodes, 'Layer');
416
+ if (layerBloc && layerBloc.childNodes) {
417
+ for (let i = 0; i < layerBloc.childNodes.length; i++) {
418
+ const node = layerBloc.childNodes[i];
419
+ if (node.nodeName === 'Layer') {
420
+ result.push(node);
421
+ }
422
+ }
423
+ }
424
+ }
425
+ }
426
+ }
427
+ return result;
428
+ }
402
429
  static getLayerExtent(paramLayer, map, doc) {
403
430
  if (!doc) {
404
431
  return null;
@@ -420,6 +447,26 @@ class XMLUtils {
420
447
  }
421
448
  return null;
422
449
  }
450
+ static getPossibleLayerStyles(doc) {
451
+ if (!doc) {
452
+ return {};
453
+ }
454
+ const layers = XMLUtils.allLayers(doc);
455
+ return layers.map((layer) => {
456
+ const layerName = XMLUtils.find(layer.childNodes, 'Name')?.textContent ?? '';
457
+ const styles = XMLUtils.findAll(layer.childNodes, 'Style');
458
+ const stylesArray = styles.map((style) => ({
459
+ id: XMLUtils.find(style.childNodes, 'Name')?.textContent,
460
+ label: XMLUtils.find(style.childNodes, 'Title')?.textContent ??
461
+ XMLUtils.find(style.childNodes, 'Name')?.textContent
462
+ }));
463
+ const uniquesStyles = [...new Set(stylesArray.map((style) => style.id))].map((styleId) => stylesArray.find((styleInArray) => styleInArray.id === styleId));
464
+ return {
465
+ param: layerName,
466
+ styles: uniquesStyles
467
+ };
468
+ }).reduce((p, c) => ({ ...p, [c.param]: c }), {});
469
+ }
423
470
  }
424
471
 
425
472
  class WidgetMapLayerService {
@@ -753,10 +800,10 @@ class WidgetMapLayerService {
753
800
  return 'marker';
754
801
  }
755
802
  }
756
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapLayerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
757
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapLayerService, providedIn: 'root' }); }
803
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLayerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
804
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLayerService, providedIn: 'root' }); }
758
805
  }
759
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapLayerService, decorators: [{
806
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLayerService, decorators: [{
760
807
  type: Injectable,
761
808
  args: [{
762
809
  providedIn: 'root'
@@ -989,7 +1036,7 @@ class WidgetMapUtils {
989
1036
  return layers.sort((l1, l2) => (l1.order ?? 1) - (l2.order ?? 1));
990
1037
  }
991
1038
  static readGeometry(projection, item, type, attribute) {
992
- if (!attribute || !item.attributes[attribute.name]) {
1039
+ if (!attribute) {
993
1040
  // @ts-ignore
994
1041
  return null;
995
1042
  }
@@ -1071,13 +1118,75 @@ class WidgetMapUtils {
1071
1118
  static { this.BACKGROUND_ORDER = 9999; }
1072
1119
  }
1073
1120
 
1121
+ class LayerSlider {
1122
+ init(map, slider) {
1123
+ this.map = map;
1124
+ this.slider = slider;
1125
+ return this;
1126
+ }
1127
+ applySlide(type, layer) {
1128
+ layer.on('prerender', (event) => {
1129
+ const mapSize = this.map.getSize();
1130
+ if (mapSize) {
1131
+ if (event.context instanceof CanvasRenderingContext2D) {
1132
+ const width = mapSize[0] * (parseFloat(this.slider.value) / 100);
1133
+ let tl = getRenderPixel(event, [0, 0]);
1134
+ let tr = getRenderPixel(event, [width, 0]);
1135
+ let bl = getRenderPixel(event, [0, mapSize[1]]);
1136
+ let br = getRenderPixel(event, [width, mapSize[1]]);
1137
+ if (type === 'right') {
1138
+ tl = getRenderPixel(event, [width, 0]);
1139
+ tr = getRenderPixel(event, [mapSize[0], 0]);
1140
+ bl = getRenderPixel(event, [width, mapSize[1]]);
1141
+ br = getRenderPixel(event, mapSize);
1142
+ }
1143
+ const ctx = event.context;
1144
+ ctx.save();
1145
+ ctx.beginPath();
1146
+ ctx.moveTo(tl[0], tl[1]);
1147
+ ctx.lineTo(bl[0], bl[1]);
1148
+ ctx.lineTo(br[0], br[1]);
1149
+ ctx.lineTo(tr[0], tr[1]);
1150
+ ctx.closePath();
1151
+ ctx.clip();
1152
+ }
1153
+ else {
1154
+ const gl = event.context;
1155
+ const bottomLeft = getRenderPixel(event, [0, mapSize[1]]);
1156
+ const topRight = getRenderPixel(event, [mapSize[0], 0]);
1157
+ const leftWidth = (topRight[0] - bottomLeft[0]) * (parseFloat(this.slider.value) / 100);
1158
+ const rightWidth = (topRight[0] - bottomLeft[0]) * (1 - parseFloat(this.slider.value) / 100);
1159
+ const height = topRight[1] - bottomLeft[1];
1160
+ gl.enable(gl.SCISSOR_TEST);
1161
+ if (type === 'right') {
1162
+ gl.scissor(bottomLeft[0] + leftWidth, bottomLeft[1], rightWidth, height);
1163
+ }
1164
+ else {
1165
+ gl.scissor(bottomLeft[0], bottomLeft[1], leftWidth, height);
1166
+ }
1167
+ }
1168
+ }
1169
+ });
1170
+ layer.on('postrender', (event) => {
1171
+ if (event.context instanceof CanvasRenderingContext2D) {
1172
+ const ctx = event.context;
1173
+ ctx.restore();
1174
+ }
1175
+ else {
1176
+ const gl = event.context;
1177
+ gl.disable(gl.SCISSOR_TEST);
1178
+ }
1179
+ });
1180
+ }
1181
+ }
1182
+
1074
1183
  class PryWidgetMapCssComponent {
1075
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryWidgetMapCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1076
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryWidgetMapCssComponent, selector: "pry-widget-map-css", ngImport: i0, template: '', isInline: true, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:grabbing}.ol-grab{cursor:move;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.4375rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution{top:.3125rem;bottom:unset}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}\n", ".m-layer-legend{z-index:2;left:.5rem;overflow:hidden}.m-layer-legend.ol-control{border:1px solid #bccad8}.m-layer-legend button{background-color:#fafafa!important;color:#000}.m-layer-legend .-hidden{display:none}.m-layer-legend__toggle{width:1.875rem;height:1.875rem}.m-layer-legend__title{display:flex;flex-direction:row;align-items:center;background-color:#fff;justify-content:space-between}.m-layer-legend__image{background:white;overflow:scroll}.m-layer-legend__error{font-style:italic;color:#c74646}.m-layer-switcher{z-index:2;left:.5rem;overflow:hidden}.m-layer-switcher.ol-control{border:1px solid #bccad8}.m-layer-switcher button{background-color:#fafafa!important;color:#000}.m-layer-switcher .-hidden{display:none}.m-layer-switcher__toggle{width:1.875rem;height:1.875rem}.m-layer-switcher__title{display:flex;flex-direction:row;background-color:#fff;justify-content:space-between;gap:.625rem;margin-left:2.1875rem;padding:5px}.m-layer-switcher__image{background:white;overflow:scroll}.m-layer-switcher__error{font-style:italic;color:#c74646}\n"], encapsulation: i0.ViewEncapsulation.None }); }
1184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryWidgetMapCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1185
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryWidgetMapCssComponent, selector: "pry-widget-map-css", ngImport: i0, template: '', isInline: true, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:grabbing}.ol-grab{cursor:move;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.4375rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution,.ol-zoom{top:.3125rem;bottom:unset;border-radius:.375rem;padding:0;border:none;background:white}.ol-attribution>button,.ol-zoom>button{padding:0;border:none;background:white}.ol-zoom{top:.3125rem;right:.5rem;left:unset;bottom:unset;border-radius:.375rem;padding:0;border:none;background:white}.ol-zoom>button{padding:0;border:none;background:white}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}.a-tooltip[data-tooltip].--absolute{position:absolute}.a-tooltip[data-tooltip].--nopos{position:unset}.o-map-slider{position:absolute;width:100%;margin-top:-.625rem;z-index:1;-webkit-appearance:none;appearance:none;background:transparent;cursor:grab}.o-map-slider.-hidden{visibility:hidden;pointer-events:none}.o-map-slider::-webkit-slider-runnable-track{background:none}.o-map-slider::-moz-range-track{background:none}.o-map-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}.o-map-slider::-moz-range-thumb{border:none;border-radius:0;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}\n", ".m-layer-legend{z-index:2;right:.5rem}.m-layer-legend.ol-control{display:flex;flex-direction:column;align-items:flex-start;border:none;background:white}.m-layer-legend button{background-color:#fafafa!important;color:#000}.m-layer-legend .-hidden{display:none}.m-layer-legend__toggle{align-self:flex-end;width:1.875rem;height:1.875rem}.m-layer-legend__title{display:flex;flex-direction:row;align-items:center;background-color:#fff;justify-content:space-between}.m-layer-legend__image{background:white;overflow:scroll}.m-layer-legend__error{font-style:italic;color:#c74646}.m-layer-switcher{z-index:2;right:.5rem;display:flex;flex-direction:column;align-items:normal}.m-layer-switcher.ol-control{border:none;background:white;align-self:flex-end}.m-layer-switcher button{background-color:#fafafa!important;color:#000}.m-layer-switcher .-hidden{display:none}.m-layer-switcher__toggle{width:1.875rem;height:1.875rem;align-self:flex-end}.m-layer-switcher__title{display:flex;flex-direction:row;background-color:#fff;justify-content:space-between;gap:.625rem;padding:5px}.m-layer-switcher__image{background:white;overflow:scroll}.m-layer-switcher__error{font-style:italic;color:#c74646}\n"], encapsulation: i0.ViewEncapsulation.None }); }
1077
1186
  }
1078
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryWidgetMapCssComponent, decorators: [{
1187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryWidgetMapCssComponent, decorators: [{
1079
1188
  type: Component,
1080
- args: [{ selector: 'pry-widget-map-css', template: '', encapsulation: ViewEncapsulation.None, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:grabbing}.ol-grab{cursor:move;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.4375rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution{top:.3125rem;bottom:unset}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}\n", ".m-layer-legend{z-index:2;left:.5rem;overflow:hidden}.m-layer-legend.ol-control{border:1px solid #bccad8}.m-layer-legend button{background-color:#fafafa!important;color:#000}.m-layer-legend .-hidden{display:none}.m-layer-legend__toggle{width:1.875rem;height:1.875rem}.m-layer-legend__title{display:flex;flex-direction:row;align-items:center;background-color:#fff;justify-content:space-between}.m-layer-legend__image{background:white;overflow:scroll}.m-layer-legend__error{font-style:italic;color:#c74646}.m-layer-switcher{z-index:2;left:.5rem;overflow:hidden}.m-layer-switcher.ol-control{border:1px solid #bccad8}.m-layer-switcher button{background-color:#fafafa!important;color:#000}.m-layer-switcher .-hidden{display:none}.m-layer-switcher__toggle{width:1.875rem;height:1.875rem}.m-layer-switcher__title{display:flex;flex-direction:row;background-color:#fff;justify-content:space-between;gap:.625rem;margin-left:2.1875rem;padding:5px}.m-layer-switcher__image{background:white;overflow:scroll}.m-layer-switcher__error{font-style:italic;color:#c74646}\n"] }]
1189
+ args: [{ selector: 'pry-widget-map-css', template: '', encapsulation: ViewEncapsulation.None, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:grabbing}.ol-grab{cursor:move;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.4375rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution,.ol-zoom{top:.3125rem;bottom:unset;border-radius:.375rem;padding:0;border:none;background:white}.ol-attribution>button,.ol-zoom>button{padding:0;border:none;background:white}.ol-zoom{top:.3125rem;right:.5rem;left:unset;bottom:unset;border-radius:.375rem;padding:0;border:none;background:white}.ol-zoom>button{padding:0;border:none;background:white}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}.a-tooltip[data-tooltip].--absolute{position:absolute}.a-tooltip[data-tooltip].--nopos{position:unset}.o-map-slider{position:absolute;width:100%;margin-top:-.625rem;z-index:1;-webkit-appearance:none;appearance:none;background:transparent;cursor:grab}.o-map-slider.-hidden{visibility:hidden;pointer-events:none}.o-map-slider::-webkit-slider-runnable-track{background:none}.o-map-slider::-moz-range-track{background:none}.o-map-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}.o-map-slider::-moz-range-thumb{border:none;border-radius:0;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}\n", ".m-layer-legend{z-index:2;right:.5rem}.m-layer-legend.ol-control{display:flex;flex-direction:column;align-items:flex-start;border:none;background:white}.m-layer-legend button{background-color:#fafafa!important;color:#000}.m-layer-legend .-hidden{display:none}.m-layer-legend__toggle{align-self:flex-end;width:1.875rem;height:1.875rem}.m-layer-legend__title{display:flex;flex-direction:row;align-items:center;background-color:#fff;justify-content:space-between}.m-layer-legend__image{background:white;overflow:scroll}.m-layer-legend__error{font-style:italic;color:#c74646}.m-layer-switcher{z-index:2;right:.5rem;display:flex;flex-direction:column;align-items:normal}.m-layer-switcher.ol-control{border:none;background:white;align-self:flex-end}.m-layer-switcher button{background-color:#fafafa!important;color:#000}.m-layer-switcher .-hidden{display:none}.m-layer-switcher__toggle{width:1.875rem;height:1.875rem;align-self:flex-end}.m-layer-switcher__title{display:flex;flex-direction:row;background-color:#fff;justify-content:space-between;gap:.625rem;padding:5px}.m-layer-switcher__image{background:white;overflow:scroll}.m-layer-switcher__error{font-style:italic;color:#c74646}\n"] }]
1081
1190
  }] });
1082
1191
 
1083
1192
  class GeometryFieldsForPipe {
@@ -1116,10 +1225,10 @@ class GeometryFieldsForPipe {
1116
1225
  return resArr;
1117
1226
  }));
1118
1227
  }
1119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: GeometryFieldsForPipe, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Pipe }); }
1120
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: GeometryFieldsForPipe, name: "geometryFieldsFor" }); }
1228
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GeometryFieldsForPipe, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Pipe }); }
1229
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GeometryFieldsForPipe, name: "geometryFieldsFor" }); }
1121
1230
  }
1122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: GeometryFieldsForPipe, decorators: [{
1231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GeometryFieldsForPipe, decorators: [{
1123
1232
  type: Pipe,
1124
1233
  args: [{
1125
1234
  name: 'geometryFieldsFor'
@@ -1135,25 +1244,37 @@ class WidgetMapLegendUrlPipe {
1135
1244
  if (capability) {
1136
1245
  const matchingLayer = XMLUtils.getMatchingLayer(geoLayer.paramLayer, capability.doc);
1137
1246
  if (matchingLayer) {
1138
- const matchingStyle = XMLUtils.find(matchingLayer.childNodes, 'Style');
1139
- if (matchingStyle) {
1140
- const legendUrl = XMLUtils.find(matchingStyle.childNodes, 'LegendURL');
1141
- if (legendUrl) {
1142
- const resource = XMLUtils.find(legendUrl.childNodes, 'OnlineResource');
1143
- if (resource) {
1144
- // @ts-ignore
1145
- return resource.getAttribute('xlink:href');
1247
+ const styles = XMLUtils.findAll(matchingLayer.childNodes, 'Style');
1248
+ if (geoLayer.additionalParameters && geoLayer.additionalParameters['STYLES'] !== undefined) {
1249
+ for (let i = 0; i < styles.length; i++) {
1250
+ const style = styles[i];
1251
+ const styleName = XMLUtils.find(style.childNodes, 'Name')?.textContent ?? '--';
1252
+ if (styleName === geoLayer.additionalParameters['STYLES']) {
1253
+ return this.returnStyleForLayer(style);
1146
1254
  }
1147
1255
  }
1148
1256
  }
1257
+ else {
1258
+ return this.returnStyleForLayer(styles[0]);
1259
+ }
1149
1260
  }
1150
1261
  }
1151
1262
  return '';
1152
1263
  }
1153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapLegendUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1154
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapLegendUrlPipe, name: "legendUrl" }); }
1264
+ returnStyleForLayer(style) {
1265
+ const legendUrl = XMLUtils.find(style.childNodes, 'LegendURL');
1266
+ if (legendUrl) {
1267
+ const resource = XMLUtils.find(legendUrl.childNodes, 'OnlineResource');
1268
+ if (resource) {
1269
+ // @ts-ignore
1270
+ return resource.getAttribute('xlink:href');
1271
+ }
1272
+ }
1273
+ }
1274
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLegendUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1275
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLegendUrlPipe, name: "legendUrl" }); }
1155
1276
  }
1156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapLegendUrlPipe, decorators: [{
1277
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLegendUrlPipe, decorators: [{
1157
1278
  type: Pipe,
1158
1279
  args: [{
1159
1280
  name: 'legendUrl'
@@ -1196,9 +1317,27 @@ class WidgetMapComponent extends DataWidgetComponent {
1196
1317
  this.tooltipNumber = 0;
1197
1318
  this.STYLE_FROM_URL = '_url';
1198
1319
  this.NO_STYLE = 'none';
1199
- this.NON_MANDATORY_FIT_LAYER_TYPES = NON_MANDATORY_FIT_LAYER_TYPES;
1320
+ this.layerSlider = new LayerSlider();
1321
+ this.possibleStyles = {};
1322
+ this.attributions = new Attribution();
1323
+ this.actionMenuOpen$ = new BehaviorSubject(false);
1324
+ this.olZoomElement$ = new BehaviorSubject(null);
1325
+ this.getOlZoomElement();
1326
+ this.slides = [
1327
+ { id: 'all', label: this.translateService.instant('@pry.widget.map.slide.all') },
1328
+ { id: 'left', label: this.translateService.instant('@pry.widget.map.slide.left') },
1329
+ { id: 'right', label: this.translateService.instant('@pry.widget.map.slide.right') }
1330
+ ];
1200
1331
  this.widgetMapLayerService.withGeoAuth(this.geoAuthService);
1201
- this.basicActions$ = this.actions$.pipe(map((actions) => actions.filter((action) => action !== 'export' && action !== 'upload')));
1332
+ this.basicActions$ = combineLatest([
1333
+ this.actions$,
1334
+ this.actionMenuOpen$,
1335
+ this.interactionManager.selectionInteraction.selectionType$
1336
+ ]).pipe(map(([actions, menuOpen, selectionType]) => menuOpen
1337
+ ? actions.filter((action) => action !== 'export' && action !== 'upload')
1338
+ : actions
1339
+ .filter((action) => action !== 'export' && action !== 'upload')
1340
+ .filter((action) => selectionType === action)));
1202
1341
  this.classes$ = this.store
1203
1342
  .select(ClassSelectors.classes)
1204
1343
  .pipe(map((classes) => classes.sort((a, b) => a.name.localeCompare(b.name))));
@@ -1402,18 +1541,27 @@ class WidgetMapComponent extends DataWidgetComponent {
1402
1541
  }
1403
1542
  }));
1404
1543
  this.height$ = combineLatest([this.widgetSize$.pipe(debounceTime(100)), this.displayHeader$]).pipe(map(([size, display]) => (size.height ?? 100) - (display ? WIDGET_HEADER_HEIGHT : 0)), delay(10));
1405
- this.layersTop$ = this.displayHeader$.pipe(map((display) => 140 - (display ? 0 : WIDGET_HEADER_HEIGHT)));
1406
- this.legendTop$ = this.displayHeader$.pipe(map((display) => 180 - (display ? 0 : WIDGET_HEADER_HEIGHT)));
1544
+ this.attributions$ = this.options$.pipe(map((options) => !!options.attributions));
1545
+ this.legendTop$ = combineLatest([this.displayHeader$, this.attributions$]).pipe(map(([header, attr]) => 5 + (header ? 0 : WIDGET_HEADER_HEIGHT) + (attr ? 41 : 0) + 30));
1407
1546
  this.legendHeight$ = combineLatest([this.widgetSize$.pipe(debounceTime(100)), this.legendTop$]).pipe(map(([size, top]) => {
1408
1547
  return (size.height ?? 100) - WIDGET_HEADER_HEIGHT - top - 56; // 56px is the tooltip height + margin
1409
1548
  }), delay(10));
1549
+ this.subscriptions.add(this.wmsCapabilities$
1550
+ .pipe(map((wmsCapabilities) => wmsCapabilities
1551
+ ? Object.keys(wmsCapabilities)
1552
+ .map((url) => ({ url, layers: XMLUtils.getPossibleLayerStyles(wmsCapabilities[url]?.doc) }))
1553
+ .reduce((p, c) => ({ ...p, [c.url]: c }), {})
1554
+ : {}), startWith({}))
1555
+ .subscribe((possibleStyles) => (this.possibleStyles = possibleStyles)));
1556
+ this.hasSlideLayer$ = this.options$.pipe(map((options) => (options.layers ?? []).map((layer) => !!layer.slide).reduce((a, b) => a || b, false)));
1410
1557
  }
1411
1558
  initInteractionManager() {
1412
1559
  return this.interactionManager.init(this);
1413
1560
  }
1414
1561
  ngAfterViewInit() {
1415
- this.map = new Map({ target: this.mapRef.nativeElement });
1562
+ this.map = new Map({ target: this.mapRef.nativeElement, controls: defaults({ attribution: false }) });
1416
1563
  this.interactionManager = this.initInteractionManager();
1564
+ this.layerSlider.init(this.map, this.sliderElement.nativeElement);
1417
1565
  this.mapStyleUrl$ = combineLatest([this.options$, this.mapUrl$]).pipe(map(([options, url]) => {
1418
1566
  switch (options.style) {
1419
1567
  case this.NO_STYLE:
@@ -1443,6 +1591,16 @@ class WidgetMapComponent extends DataWidgetComponent {
1443
1591
  zoom: options.zoom?.start ?? WidgetMapUtils.DEFAULT_ZOOM_START
1444
1592
  })), distinctUntilChanged())
1445
1593
  .subscribe((view) => this.map.setView(new View(view)));
1594
+ this.options$
1595
+ .pipe(map((options) => options.attributions), distinctUntilChanged())
1596
+ .subscribe((attributions) => {
1597
+ if (!attributions) {
1598
+ this.map.removeControl(this.attributions);
1599
+ }
1600
+ else {
1601
+ this.map.addControl(this.attributions);
1602
+ }
1603
+ });
1446
1604
  this.layers$ = combineLatest([
1447
1605
  this.resultSet$,
1448
1606
  this.options$,
@@ -1489,6 +1647,9 @@ class WidgetMapComponent extends DataWidgetComponent {
1489
1647
  if (!!impl) {
1490
1648
  const resultLayer = impl(layer, attributesForClass, layerClassesId, resultSet, range, itemStyles, this.map);
1491
1649
  resultLayer.set('fit', layer.fit);
1650
+ resultLayer.set('type', layer.type);
1651
+ resultLayer.set('slide', layer.slide);
1652
+ resultLayer.set('order', layer.order);
1492
1653
  if (layer.type === 'relation') {
1493
1654
  hasRelationLayer = resultLayer;
1494
1655
  }
@@ -1500,6 +1661,9 @@ class WidgetMapComponent extends DataWidgetComponent {
1500
1661
  resultLayer.getSource().updateParams({ cql_filter });
1501
1662
  }
1502
1663
  }
1664
+ if (layer.slide && layer.slide !== 'all') {
1665
+ this.layerSlider.applySlide(layer.slide, resultLayer);
1666
+ }
1503
1667
  return resultLayer;
1504
1668
  }
1505
1669
  else {
@@ -1526,13 +1690,15 @@ class WidgetMapComponent extends DataWidgetComponent {
1526
1690
  });
1527
1691
  }
1528
1692
  layers.push(...additionalLayers);
1529
- layers.forEach((layer, index, arr) => layer.set('zIndex', arr.length - index));
1530
1693
  if (options.singleLayer) {
1531
1694
  layers.forEach((layer, idx) => {
1532
1695
  layer.setVisible(idx === 0);
1533
1696
  });
1534
1697
  }
1535
- return layers;
1698
+ /* Resolve bug drawing webgllayer without nothing underneath: add empty layer below */
1699
+ const _layers = this.addEmptyWebGlLayerBelowSlideHeatmaps(layers);
1700
+ _layers.forEach((layer, index, arr) => layer.set('zIndex', arr.length - index));
1701
+ return _layers;
1536
1702
  }));
1537
1703
  this.fitExtents$ = combineLatest([
1538
1704
  this.options$,
@@ -1565,6 +1731,12 @@ class WidgetMapComponent extends DataWidgetComponent {
1565
1731
  ])
1566
1732
  : of([])), startWith([]));
1567
1733
  this.legendLayers$ = this.options$.pipe(map((options) => (options.layers ?? []).filter((layer) => ['geoserver', 'wms'].includes(layer.type))), delay(10));
1734
+ this.layersTop$ = combineLatest([this.legendTop$, this.legendLayers$]).pipe(map(([legendTop, layers]) => legendTop + ((layers.length ?? 0) > 0 ? 38 : 0)));
1735
+ this.subscriptions.add(combineLatest([this.layersTop$, this.olZoomElement$]).subscribe(([layersTop, zoomElement]) => {
1736
+ if (zoomElement) {
1737
+ zoomElement.style.top = `${layersTop + 5}px`;
1738
+ }
1739
+ }));
1568
1740
  this.subscriptions.add(combineLatest([
1569
1741
  this.mapStyleLayer$,
1570
1742
  this.layers$,
@@ -1639,6 +1811,27 @@ class WidgetMapComponent extends DataWidgetComponent {
1639
1811
  }
1640
1812
  }));
1641
1813
  }
1814
+ addEmptyWebGlLayerBelowSlideHeatmaps(layers) {
1815
+ const _layers = [];
1816
+ for (let i = 0; i < layers.length; i++) {
1817
+ const layer = layers[i];
1818
+ _layers.push(layer);
1819
+ if (layer.get('type') === 'heatmap' && layer.get('slide')) {
1820
+ const emptyData = new Uint8Array(256 * 256 * 4);
1821
+ const emptyLayer = new WebGLTileLayer({
1822
+ source: new DataTile({
1823
+ loader() {
1824
+ return emptyData;
1825
+ },
1826
+ maxZoom: 0,
1827
+ wrapX: true
1828
+ })
1829
+ });
1830
+ _layers.push(emptyLayer);
1831
+ }
1832
+ }
1833
+ return _layers;
1834
+ }
1642
1835
  initResultSet$() {
1643
1836
  return combineLatest([
1644
1837
  this.store.select(DashboardSelectors.resultSets),
@@ -1773,6 +1966,9 @@ class WidgetMapComponent extends DataWidgetComponent {
1773
1966
  changeFit($event, layer) {
1774
1967
  layer.fit = $event;
1775
1968
  }
1969
+ changeSlide($event, layer) {
1970
+ layer.slide = $event;
1971
+ }
1776
1972
  changeAttributions($event) {
1777
1973
  this.optionsCopy.attributions = $event;
1778
1974
  if (this.optionsCopy.attributions) {
@@ -1892,9 +2088,6 @@ class WidgetMapComponent extends DataWidgetComponent {
1892
2088
  // @ts-ignore
1893
2089
  layer.clusterDistance = $event.currentTarget?.value;
1894
2090
  }
1895
- hideAddress() {
1896
- this.address.nativeElement.style.display = 'none';
1897
- }
1898
2091
  changeOpacity(layer, $event) {
1899
2092
  // @ts-ignore
1900
2093
  layer.opacity = parseInt($event, 10);
@@ -1999,12 +2192,79 @@ class WidgetMapComponent extends DataWidgetComponent {
1999
2192
  super.ngOnDestroy();
2000
2193
  this.store.dispatch(DashboardActions.resetWmsFeatures());
2001
2194
  }
2002
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapComponent, deps: [{ token: i1.Store }, { token: i2.PryI18nService }, { token: i2.TooltipFactoryService }, { token: i2.SymbolService }, { token: i0.Injector }, { token: WidgetMapLayerService }, { token: i2.PryAggregationService }, { token: i0.ElementRef }, { token: PRY_GEOAUTH_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
2003
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: WidgetMapComponent, selector: "pry-widget-map", viewQueries: [{ propertyName: "mapRef", first: true, predicate: ["mapRef"], descendants: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true }, { propertyName: "popupContent", first: true, predicate: ["popupContent"], descendants: true, read: ViewContainerRef }, { propertyName: "exportTypeTemplate", first: true, predicate: ["exportTypeTemplate"], descendants: true, read: TemplateRef }, { propertyName: "address", first: true, predicate: ["address"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_style\">{{ '@pry.widget.map.style' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeStyle($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.style === STYLE_FROM_URL\">\n <label class=\"a-label\" for=\"style_URL\">{{ '@pry.widget.map.styleUrl' | i18n }}</label>\n <input\n id=\"style_URL\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeStyleURL($event)\"\n [value]=\"optionsCopy.styleURL ?? ''\"\n />\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeSingleLayer($event)\" [ngModel]=\"optionsCopy.singleLayer ?? false\">\n {{ '@pry.widget.map.singleLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAutoLayer($event)\" [ngModel]=\"optionsCopy.automaticLayers ?? false\">\n {{ '@pry.widget.map.autoLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n\n <div class=\"o-settings__popup__content__actions -has-separator\">\n <button type=\"button\" (click)=\"addLayer()\" class=\"a-btn a-btn--icon-text -link-like\">\n <pry-icon iconSvg=\"library_add\"></pry-icon>\n {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let layer of optionsCopy?.layers; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <h3 class=\"a-h3 settings-layer-title__title\">{{ '@pry.widget.map.layer' | i18n : { index: i + 1 } }}</h3>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.layers?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <pry-range\n [ngModel]=\"(layer?.opacity ?? 100) + ''\"\n (ngModelChange)=\"changeOpacity(layer, $event)\"\n labelTranslate=\"@pry.widget.map.opacity\"\n min=\"0\"\n max=\"100\"\n ></pry-range>\n\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.layerOptions' | i18n : { index: i + 1 } }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerTitle\">{{ '@pry.widget.map.layerTitle' | i18n }}</label>\n <input\n id=\"map_layerTitle\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeTitle($event, layer)\"\n [value]=\"layer.title ?? ''\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"!['geoserver', 'auto'].includes(layer.type)\">\n <label class=\"a-label\" for=\"map_layerType\">{{ '@pry.widget.map.layerType.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [bindData]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"layerTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"layer.type\"\n baseTranslate=\"@pry.widget.map.layerType.\"\n class=\"a-pry-select\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeFit($event, layer)\" [ngModel]=\"layer.fit\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n\n <div\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile' &&\n layer.type !== 'auto'\n \"\n class=\"m-form-label-field\"\n >\n <label class=\"a-label\" for=\"map_classes\">{{ '@pry.widget.map.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"usedClasses$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n </fieldset>\n </div>\n\n <fieldset\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n <ng-container\n *ngIf=\"\n layer\n | geometryFieldsFor : { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async as fields\n \"\n >\n <div\n *ngIf=\"\n ['heatmap', 'bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].indexOf(\n layer.type\n ) >= 0\n \"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_locationAttribute_both\">{{\n '@pry.widget.map.locationAttribute.both' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLocationAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n\n <div *ngIf=\"['heatmap', 'bubble'].indexOf(layer.type) >= 0\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_intensityAttribute\">{{\n '@pry.widget.map.intensityAttribute' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeIntensityAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n </fieldset>\n\n <fieldset\n *ngIf=\"\n layer.type === 'wms' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_url\">{{ '@pry.widget.map.wms.url' | i18n }}</label>\n <input\n id=\"map_wms_url\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeUrl($event, layer)\"\n [value]=\"layer.url\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms' || layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{ '@pry.widget.map.wms.paramLayer' | i18n }}</label>\n <input\n id=\"map_wms_paramLayer\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamLayer($event, layer)\"\n [value]=\"layer.paramLayer\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{ '@pry.widget.map.wms.matrixSet' | i18n }}</label>\n <input\n id=\"map_wms_matrixSet\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeMatrixSet($event, layer)\"\n [value]=\"layer.matrixSet\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_style\">{{ '@pry.widget.map.wms.style' | i18n }}</label>\n <input\n id=\"map_wms_style\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamStyle($event, layer)\"\n [value]=\"layer.style\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms'\">\n <pry-checkbox (ngModelChange)=\"changeParamTiled($event, layer)\" [ngModel]=\"layer?.paramTiled ?? false\">\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n </fieldset>\n\n <fieldset *ngIf=\"layer.type === 'marker'\">\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.clustering' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeClustered(layer, $event)\" [ngModel]=\"layer.clustered\">\n {{ '@pry.widget.map.clustered' | i18n }}\n </pry-checkbox>\n </div>\n <div *ngIf=\"layer.clustered\">\n <pry-range\n [ngModel]=\"layer.clustered\"\n (ngModelChange)=\"changeClusterDistance(layer, $event)\"\n labelTranslate=\"@pry.widget.map.clusterDistance\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </div>\n </fieldset>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.attributions\">\n <label class=\"a-label\" for=\"attribution\">{{ '@pry.widget.map.attribution' | i18n }}</label>\n <input\n id=\"attribution\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeAttribution($event, layer)\"\n [value]=\"layer.attribution ? layer.attribution : ''\"\n />\n </div>\n\n <button\n type=\"button\"\n (click)=\"deleteLayer(i, layer)\"\n class=\"a-btn a-btn--icon-text -link-like\"\n *ngIf=\"layer.type !== 'geoserver'\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.map.deleteLayer' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"m-btn-group -selection-choice\" [style.transform]=\"bottomLeft$ | async\">\n <ng-container *ngFor=\"let action of basicActions$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--{{ action }}\"\n (click)=\"interactionManager.selectionInteraction.changeSelection(action)\"\n [class.-selected]=\"interactionManager.selectionInteraction.selectionType === action\"\n [attr.data-tooltip]=\"'@pry.widget.map.' + action | i18n\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [attr.data-tooltip]=\"'@pry.widget.map.export' | i18n\"\n *ngIf=\"(actions$ | async)?.includes('export')\"\n >\n <pry-icon iconSvg=\"file_download\" (click)=\"export()\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n <div\n class=\"ol-control m-layer-switcher\"\n *ngIf=\"((layers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"layersTop$ | async\"\n >\n <button\n class=\"m-layer-switcher__toggle\"\n (click)=\"toggleLayersWindow()\"\n [title]=\"'@pry.widget.map.selectLayers' | i18n\"\n >\n <pry-icon iconSvg=\"layers\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let layer of mapLayers; let index = index\">\n <div class=\"m-layer-switcher__title\" [class.-hidden]=\"!layersTabOpen\">\n {{ layer.get('title') }}\n <ng-container *ngIf=\"!(options$ | async)?.singleLayer; else singleLayer\">\n <pry-checkbox [ngModel]=\"layer.getVisible()\" (change)=\"changeVisibility(layer)\"></pry-checkbox>\n </ng-container>\n <ng-template #singleLayer>\n <input\n type=\"radio\"\n name=\"layer\"\n [id]=\"'radio-layer-' + layer.get('title').split(' ')[0]\"\n [ngModel]=\"layerVisibleIdx\"\n [value]=\"index\"\n (change)=\"changeVisibility(layer)\"\n />\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <div\n class=\"ol-control m-layer-legend\"\n *ngIf=\"((legendLayers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"legendTop$ | async\"\n >\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegendWindow()\" [title]=\"'@pry.widget.map.legends' | i18n\">\n <pry-icon iconSvg=\"legend\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let geoLayer of legendLayers$ | async; let index = index\">\n <div class=\"m-layer-legend__title\" [class.-hidden]=\"!legendTabOpen\">\n {{ geoLayer.title }}\n <ng-container *ngIf=\"isLayerRendered(geoLayer)\">\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegend(index)\">\n <pry-icon\n [iconSvg]=\"legendTab === index ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!isLayerRendered(geoLayer)\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </ng-container>\n </div>\n <div\n class=\"m-layer-legend__image\"\n [class.-hidden]=\"!legendTabOpen || legendTab !== index || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n <ng-container *ngIf=\"geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) } as url\">\n <img\n [src]=\"url\"\n [alt]=\"'@pry.widget.map.legend' | i18n : { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n </ng-container>\n <ng-container *ngIf=\"!(geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) })\">\n <p class=\"m-layer-legend__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #mapRef id=\"map\"></div>\n </div>\n </div>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div class=\"m-tooltip--popup__header\">\n <p>{{ this.tooltipIndex + 1 }} / {{ this.tooltipNumber }}</p>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(-1)\" [disabled]=\"!tooltipCanMove(-1)\">\n <pry-icon iconSvg=\"arrow_back\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(1)\" [disabled]=\"!tooltipCanMove(1)\">\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n <div class=\"m-tooltip--popup__container\">\n <ng-container #popupContent></ng-container>\n </div>\n </div>\n <div\n #address\n class=\"m-tooltip m-tooltip--address tooltip-address\"\n [style.display]=\"'none'\"\n (click)=\"hideAddress()\"\n ></div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: PryWidgetMapCssComponent, selector: "pry-widget-map-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: GeometryFieldsForPipe, name: "geometryFieldsFor" }, { kind: "pipe", type: WidgetMapLegendUrlPipe, name: "legendUrl" }] }); }
2195
+ getStyle(_layer) {
2196
+ const layer = _layer;
2197
+ if (layer.additionalParameters?.STYLES) {
2198
+ return layer.additionalParameters?.STYLES;
2199
+ }
2200
+ /* Not manifest-defined style: use first in line because it's the default one sent by geoserver */
2201
+ const possibleStylesForUrl = this.possibleStyles[layer.url] ?? { layers: {} };
2202
+ let possiblesStylesForLayer = possibleStylesForUrl.layers[layer.paramLayer];
2203
+ if (!possiblesStylesForLayer) {
2204
+ possiblesStylesForLayer = possibleStylesForUrl.layers[(layer.paramLayer ?? ':').split(':')[1]] ?? { styles: [] };
2205
+ }
2206
+ return possiblesStylesForLayer.styles[0]?.id;
2207
+ }
2208
+ changeLayerStyle($event, _layer) {
2209
+ const layer = _layer;
2210
+ if (!layer.additionalParameters) {
2211
+ layer.additionalParameters = {};
2212
+ }
2213
+ layer.additionalParameters.STYLES = $event;
2214
+ }
2215
+ getAsWmsType(_layer) {
2216
+ return _layer;
2217
+ }
2218
+ layerStyleOptions(_layer) {
2219
+ const layer = _layer;
2220
+ const possibleStylesForUrl = this.possibleStyles[layer.url] ?? { layers: {} };
2221
+ let possiblesStylesForLayer = possibleStylesForUrl.layers[layer.paramLayer];
2222
+ if (!possiblesStylesForLayer) {
2223
+ possiblesStylesForLayer = possibleStylesForUrl.layers[(layer.paramLayer ?? ':').split(':')[1]] ?? { styles: [] };
2224
+ }
2225
+ return possiblesStylesForLayer.styles;
2226
+ }
2227
+ triggerLayerRender() {
2228
+ this.map.render();
2229
+ }
2230
+ changeSlideOption($event) {
2231
+ this.optionsCopy.slide = $event;
2232
+ }
2233
+ toggleMenu() {
2234
+ this.actionMenuOpen$.next(!this.actionMenuOpen$.getValue());
2235
+ }
2236
+ getOlZoomElement() {
2237
+ this.olZoomElement$.next(document.querySelector('.ol-zoom'));
2238
+ if (!this.olZoomElement$.getValue()) {
2239
+ setTimeout(() => this.getOlZoomElement(), 50);
2240
+ }
2241
+ else {
2242
+ const zoomIn = document.querySelector('.ol-zoom-in');
2243
+ if (zoomIn) {
2244
+ zoomIn.setAttribute('data-tooltip', this.translateService.instant('@pry.widget.map.zoomIn'));
2245
+ zoomIn.setAttribute('data-tooltip-position', 'left');
2246
+ zoomIn.classList.add('a-tooltip', '--nopos');
2247
+ zoomIn.removeAttribute('title');
2248
+ }
2249
+ const zoomOut = document.querySelector('.ol-zoom-out');
2250
+ if (zoomOut) {
2251
+ zoomOut.setAttribute('data-tooltip', this.translateService.instant('@pry.widget.map.zoomOut'));
2252
+ zoomOut.setAttribute('data-tooltip-position', 'left');
2253
+ zoomOut.classList.add('a-tooltip', '--nopos');
2254
+ zoomOut.removeAttribute('title');
2255
+ }
2256
+ }
2257
+ }
2258
+ changeSelection(action) {
2259
+ this.interactionManager.selectionInteraction.changeSelection(action);
2260
+ this.toggleMenu();
2261
+ }
2262
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapComponent, deps: [{ token: i1.Store }, { token: i2.PryI18nService }, { token: i2.TooltipFactoryService }, { token: i2.SymbolService }, { token: i0.Injector }, { token: WidgetMapLayerService }, { token: i2.PryAggregationService }, { token: i0.ElementRef }, { token: PRY_GEOAUTH_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
2263
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WidgetMapComponent, selector: "pry-widget-map", viewQueries: [{ propertyName: "mapRef", first: true, predicate: ["mapRef"], descendants: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true }, { propertyName: "popupContent", first: true, predicate: ["popupContent"], descendants: true, read: ViewContainerRef }, { propertyName: "exportTypeTemplate", first: true, predicate: ["exportTypeTemplate"], descendants: true, read: TemplateRef }, { propertyName: "sliderElement", first: true, predicate: ["sliderElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_style\">{{ '@pry.widget.map.style' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeStyle($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.style === STYLE_FROM_URL\">\n <label class=\"a-label\" for=\"style_URL\">{{ '@pry.widget.map.styleUrl' | i18n }}</label>\n <input\n id=\"style_URL\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeStyleURL($event)\"\n [value]=\"optionsCopy.styleURL ?? ''\"\n />\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeSingleLayer($event)\" [ngModel]=\"optionsCopy.singleLayer ?? false\">\n {{ '@pry.widget.map.singleLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAutoLayer($event)\" [ngModel]=\"optionsCopy.automaticLayers ?? false\">\n {{ '@pry.widget.map.autoLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeSlideOption($event)\" [ngModel]=\"optionsCopy.slide ?? false\">\n {{ '@pry.widget.map.slide.global' | i18n }}\n </pry-checkbox>\n\n <div class=\"o-settings__popup__content__actions -has-separator\">\n <button type=\"button\" (click)=\"addLayer()\" class=\"a-btn a-btn--icon-text -link-like\">\n <pry-icon iconSvg=\"library_add\"></pry-icon>\n {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let layer of optionsCopy?.layers; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <h3 class=\"a-h3 settings-layer-title__title\">{{ '@pry.widget.map.layer' | i18n : { index: i + 1 } }}</h3>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.layers?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <pry-range\n [ngModel]=\"(layer?.opacity ?? 100) + ''\"\n (ngModelChange)=\"changeOpacity(layer, $event)\"\n labelTranslate=\"@pry.widget.map.opacity\"\n min=\"0\"\n max=\"100\"\n ></pry-range>\n\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.layerOptions' | i18n : { index: i + 1 } }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerTitle\">{{ '@pry.widget.map.layerTitle' | i18n }}</label>\n <input\n id=\"map_layerTitle\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeTitle($event, layer)\"\n [value]=\"layer.title ?? ''\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"!['geoserver', 'auto'].includes(layer.type)\">\n <label class=\"a-label\" for=\"map_layerType\">{{ '@pry.widget.map.layerType.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [bindData]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"layerTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"layer.type\"\n baseTranslate=\"@pry.widget.map.layerType.\"\n class=\"a-pry-select\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"['geoserver', 'wms'].includes(layer.type)\">\n <ng-container *ngIf=\"getAsWmsType(layer) as wmslayer\">\n <label class=\"a-label\" for=\"map_layerStyle\">{{ '@pry.widget.map.layerStyle' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerStyle($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"layerStyleOptions(layer)\"\n [ngModel]=\"getStyle(layer)\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_layerStyle\"\n ></pry-select>\n </ng-container>\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeFit($event, layer)\" [ngModel]=\"layer.fit\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n\n <div\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile' &&\n layer.type !== 'auto'\n \"\n class=\"m-form-label-field\"\n >\n <label class=\"a-label\" for=\"map_classes\">{{ '@pry.widget.map.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"usedClasses$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n </fieldset>\n </div>\n\n <fieldset\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n <ng-container\n *ngIf=\"\n layer\n | geometryFieldsFor : { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async as fields\n \"\n >\n <div\n *ngIf=\"\n ['heatmap', 'bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].indexOf(\n layer.type\n ) >= 0\n \"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_locationAttribute_both\">{{\n '@pry.widget.map.locationAttribute.both' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLocationAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n\n <div *ngIf=\"['heatmap', 'bubble'].indexOf(layer.type) >= 0\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_intensityAttribute\">{{\n '@pry.widget.map.intensityAttribute' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeIntensityAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n </fieldset>\n\n <fieldset\n *ngIf=\"\n layer.type === 'wms' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_url\">{{ '@pry.widget.map.wms.url' | i18n }}</label>\n <input\n id=\"map_wms_url\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeUrl($event, layer)\"\n [value]=\"layer.url\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms' || layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{ '@pry.widget.map.wms.paramLayer' | i18n }}</label>\n <input\n id=\"map_wms_paramLayer\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamLayer($event, layer)\"\n [value]=\"layer.paramLayer\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{ '@pry.widget.map.wms.matrixSet' | i18n }}</label>\n <input\n id=\"map_wms_matrixSet\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeMatrixSet($event, layer)\"\n [value]=\"layer.matrixSet\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_style\">{{ '@pry.widget.map.wms.style' | i18n }}</label>\n <input\n id=\"map_wms_style\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamStyle($event, layer)\"\n [value]=\"layer.style\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms'\">\n <pry-checkbox (ngModelChange)=\"changeParamTiled($event, layer)\" [ngModel]=\"layer?.paramTiled ?? false\">\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n </fieldset>\n\n <fieldset *ngIf=\"layer.type === 'marker'\">\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.clustering' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeClustered(layer, $event)\" [ngModel]=\"layer.clustered\">\n {{ '@pry.widget.map.clustered' | i18n }}\n </pry-checkbox>\n </div>\n <div *ngIf=\"layer.clustered\">\n <pry-range\n [ngModel]=\"layer.clustered\"\n (ngModelChange)=\"changeClusterDistance(layer, $event)\"\n labelTranslate=\"@pry.widget.map.clusterDistance\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </div>\n </fieldset>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.slide ?? false\">\n <label class=\"a-label\" for=\"slide_select\">{{ '@pry.widget.map.slide.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSlide($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"slides\"\n [ngModel]=\"layer.slide ?? 'all'\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"slide_select\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.attributions\">\n <label class=\"a-label\" for=\"attribution\">{{ '@pry.widget.map.attribution' | i18n }}</label>\n <input\n id=\"attribution\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeAttribution($event, layer)\"\n [value]=\"layer.attribution ? layer.attribution : ''\"\n />\n </div>\n\n <button\n type=\"button\"\n (click)=\"deleteLayer(i, layer)\"\n class=\"a-btn a-btn--icon-text -link-like\"\n *ngIf=\"layer.type !== 'geoserver'\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.map.deleteLayer' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div\n class=\"m-btn-group -map-selection-choice -vertical\"\n [class.-with-header]=\"displayHeader$ | async\"\n [class.-closed]=\"!(actionMenuOpen$ | async)\"\n >\n <div class=\"-vertical\">\n <ng-container *ngFor=\"let action of basicActions$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--{{ action }}\"\n (click)=\"changeSelection(action)\"\n [class.-selected]=\"(interactionManager.selectionInteraction.selectionType$ | async) === action\"\n [attr.data-tooltip]=\"'@pry.widget.map.' + action | i18n\"\n data-tooltip-position=\"right\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n </ng-container>\n </div>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip -map-toggle\"\n id=\"open_menu\"\n [attr.aria-expanded]=\"actionMenuOpen$ | async\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n (click)=\"toggleMenu()\"\n >\n <pry-icon\n [iconSvg]=\"(actionMenuOpen$ | async) ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"12\"\n [height]=\"24\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.open' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"m-btn-group -map-selection-choice -map-export\" [class.-with-header]=\"displayHeader$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [attr.data-tooltip]=\"'@pry.widget.map.export' | i18n\"\n data-tooltip-position=\"right\"\n (click)=\"export()\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n <div\n class=\"ol-control m-layer-switcher\"\n *ngIf=\"((layers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"layersTop$ | async\"\n >\n <button\n class=\"m-layer-switcher__toggle a-tooltip\"\n (click)=\"toggleLayersWindow()\"\n [attr.data-tooltip]=\"'@pry.widget.map.selectLayers' | i18n\"\n data-tooltip-position=\"left\"\n >\n <pry-icon iconSvg=\"layers\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let layer of mapLayers; let index = index\">\n <div class=\"m-layer-switcher__title\" [class.-hidden]=\"!layersTabOpen\">\n {{ layer.get('title') }}\n <ng-container *ngIf=\"!(options$ | async)?.singleLayer; else singleLayer\">\n <pry-checkbox [ngModel]=\"layer.getVisible()\" (change)=\"changeVisibility(layer)\"></pry-checkbox>\n </ng-container>\n <ng-template #singleLayer>\n <input\n type=\"radio\"\n name=\"layer\"\n [id]=\"'radio-layer-' + layer.get('title').split(' ')[0]\"\n [ngModel]=\"layerVisibleIdx\"\n [value]=\"index\"\n (change)=\"changeVisibility(layer)\"\n />\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <div\n class=\"ol-control m-layer-legend\"\n *ngIf=\"((legendLayers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"legendTop$ | async\"\n >\n <button\n class=\"m-layer-legend__toggle a-tooltip\"\n (click)=\"toggleLegendWindow()\"\n [attr.data-tooltip]=\"'@pry.widget.map.legends' | i18n\"\n data-tooltip-position=\"left\"\n >\n <pry-icon iconSvg=\"legend\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let geoLayer of legendLayers$ | async; let index = index\">\n <div class=\"m-layer-legend__title\" [class.-hidden]=\"!legendTabOpen\">\n {{ geoLayer.title }}\n <ng-container *ngIf=\"isLayerRendered(geoLayer)\">\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegend(index)\">\n <pry-icon\n [iconSvg]=\"legendTab === index ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!isLayerRendered(geoLayer)\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </ng-container>\n </div>\n <div\n class=\"m-layer-legend__image\"\n [class.-hidden]=\"!legendTabOpen || legendTab !== index || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n <ng-container *ngIf=\"geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) } as url\">\n <img\n [src]=\"url | getSecuredImage | async\"\n [alt]=\"'@pry.widget.map.legend' | i18n : { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n </ng-container>\n <ng-container *ngIf=\"!(geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) })\">\n <p class=\"m-layer-legend__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #mapRef id=\"map\"></div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"0.01\"\n value=\"50\"\n #sliderElement\n class=\"o-map-slider\"\n [class.-hidden]=\"!(hasSlideLayer$ | async)\"\n (input)=\"triggerLayerRender()\"\n />\n </div>\n </div>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div class=\"m-tooltip--popup__header\">\n <p>{{ this.tooltipIndex + 1 }} / {{ this.tooltipNumber }}</p>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(-1)\" [disabled]=\"!tooltipCanMove(-1)\">\n <pry-icon iconSvg=\"arrow_back\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(1)\" [disabled]=\"!tooltipCanMove(1)\">\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n <div class=\"m-tooltip--popup__container\">\n <ng-container #popupContent></ng-container>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: PryWidgetMapCssComponent, selector: "pry-widget-map-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: GeometryFieldsForPipe, name: "geometryFieldsFor" }, { kind: "pipe", type: WidgetMapLegendUrlPipe, name: "legendUrl" }] }); }
2004
2264
  }
2005
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapComponent, decorators: [{
2265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapComponent, decorators: [{
2006
2266
  type: Component,
2007
- args: [{ selector: 'pry-widget-map', template: "<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_style\">{{ '@pry.widget.map.style' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeStyle($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.style === STYLE_FROM_URL\">\n <label class=\"a-label\" for=\"style_URL\">{{ '@pry.widget.map.styleUrl' | i18n }}</label>\n <input\n id=\"style_URL\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeStyleURL($event)\"\n [value]=\"optionsCopy.styleURL ?? ''\"\n />\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeSingleLayer($event)\" [ngModel]=\"optionsCopy.singleLayer ?? false\">\n {{ '@pry.widget.map.singleLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAutoLayer($event)\" [ngModel]=\"optionsCopy.automaticLayers ?? false\">\n {{ '@pry.widget.map.autoLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n\n <div class=\"o-settings__popup__content__actions -has-separator\">\n <button type=\"button\" (click)=\"addLayer()\" class=\"a-btn a-btn--icon-text -link-like\">\n <pry-icon iconSvg=\"library_add\"></pry-icon>\n {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let layer of optionsCopy?.layers; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <h3 class=\"a-h3 settings-layer-title__title\">{{ '@pry.widget.map.layer' | i18n : { index: i + 1 } }}</h3>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.layers?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <pry-range\n [ngModel]=\"(layer?.opacity ?? 100) + ''\"\n (ngModelChange)=\"changeOpacity(layer, $event)\"\n labelTranslate=\"@pry.widget.map.opacity\"\n min=\"0\"\n max=\"100\"\n ></pry-range>\n\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.layerOptions' | i18n : { index: i + 1 } }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerTitle\">{{ '@pry.widget.map.layerTitle' | i18n }}</label>\n <input\n id=\"map_layerTitle\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeTitle($event, layer)\"\n [value]=\"layer.title ?? ''\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"!['geoserver', 'auto'].includes(layer.type)\">\n <label class=\"a-label\" for=\"map_layerType\">{{ '@pry.widget.map.layerType.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [bindData]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"layerTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"layer.type\"\n baseTranslate=\"@pry.widget.map.layerType.\"\n class=\"a-pry-select\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeFit($event, layer)\" [ngModel]=\"layer.fit\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n\n <div\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile' &&\n layer.type !== 'auto'\n \"\n class=\"m-form-label-field\"\n >\n <label class=\"a-label\" for=\"map_classes\">{{ '@pry.widget.map.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"usedClasses$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n </fieldset>\n </div>\n\n <fieldset\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n <ng-container\n *ngIf=\"\n layer\n | geometryFieldsFor : { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async as fields\n \"\n >\n <div\n *ngIf=\"\n ['heatmap', 'bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].indexOf(\n layer.type\n ) >= 0\n \"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_locationAttribute_both\">{{\n '@pry.widget.map.locationAttribute.both' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLocationAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n\n <div *ngIf=\"['heatmap', 'bubble'].indexOf(layer.type) >= 0\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_intensityAttribute\">{{\n '@pry.widget.map.intensityAttribute' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeIntensityAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n </fieldset>\n\n <fieldset\n *ngIf=\"\n layer.type === 'wms' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_url\">{{ '@pry.widget.map.wms.url' | i18n }}</label>\n <input\n id=\"map_wms_url\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeUrl($event, layer)\"\n [value]=\"layer.url\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms' || layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{ '@pry.widget.map.wms.paramLayer' | i18n }}</label>\n <input\n id=\"map_wms_paramLayer\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamLayer($event, layer)\"\n [value]=\"layer.paramLayer\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{ '@pry.widget.map.wms.matrixSet' | i18n }}</label>\n <input\n id=\"map_wms_matrixSet\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeMatrixSet($event, layer)\"\n [value]=\"layer.matrixSet\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_style\">{{ '@pry.widget.map.wms.style' | i18n }}</label>\n <input\n id=\"map_wms_style\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamStyle($event, layer)\"\n [value]=\"layer.style\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms'\">\n <pry-checkbox (ngModelChange)=\"changeParamTiled($event, layer)\" [ngModel]=\"layer?.paramTiled ?? false\">\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n </fieldset>\n\n <fieldset *ngIf=\"layer.type === 'marker'\">\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.clustering' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeClustered(layer, $event)\" [ngModel]=\"layer.clustered\">\n {{ '@pry.widget.map.clustered' | i18n }}\n </pry-checkbox>\n </div>\n <div *ngIf=\"layer.clustered\">\n <pry-range\n [ngModel]=\"layer.clustered\"\n (ngModelChange)=\"changeClusterDistance(layer, $event)\"\n labelTranslate=\"@pry.widget.map.clusterDistance\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </div>\n </fieldset>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.attributions\">\n <label class=\"a-label\" for=\"attribution\">{{ '@pry.widget.map.attribution' | i18n }}</label>\n <input\n id=\"attribution\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeAttribution($event, layer)\"\n [value]=\"layer.attribution ? layer.attribution : ''\"\n />\n </div>\n\n <button\n type=\"button\"\n (click)=\"deleteLayer(i, layer)\"\n class=\"a-btn a-btn--icon-text -link-like\"\n *ngIf=\"layer.type !== 'geoserver'\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.map.deleteLayer' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"m-btn-group -selection-choice\" [style.transform]=\"bottomLeft$ | async\">\n <ng-container *ngFor=\"let action of basicActions$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--{{ action }}\"\n (click)=\"interactionManager.selectionInteraction.changeSelection(action)\"\n [class.-selected]=\"interactionManager.selectionInteraction.selectionType === action\"\n [attr.data-tooltip]=\"'@pry.widget.map.' + action | i18n\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [attr.data-tooltip]=\"'@pry.widget.map.export' | i18n\"\n *ngIf=\"(actions$ | async)?.includes('export')\"\n >\n <pry-icon iconSvg=\"file_download\" (click)=\"export()\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n <div\n class=\"ol-control m-layer-switcher\"\n *ngIf=\"((layers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"layersTop$ | async\"\n >\n <button\n class=\"m-layer-switcher__toggle\"\n (click)=\"toggleLayersWindow()\"\n [title]=\"'@pry.widget.map.selectLayers' | i18n\"\n >\n <pry-icon iconSvg=\"layers\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let layer of mapLayers; let index = index\">\n <div class=\"m-layer-switcher__title\" [class.-hidden]=\"!layersTabOpen\">\n {{ layer.get('title') }}\n <ng-container *ngIf=\"!(options$ | async)?.singleLayer; else singleLayer\">\n <pry-checkbox [ngModel]=\"layer.getVisible()\" (change)=\"changeVisibility(layer)\"></pry-checkbox>\n </ng-container>\n <ng-template #singleLayer>\n <input\n type=\"radio\"\n name=\"layer\"\n [id]=\"'radio-layer-' + layer.get('title').split(' ')[0]\"\n [ngModel]=\"layerVisibleIdx\"\n [value]=\"index\"\n (change)=\"changeVisibility(layer)\"\n />\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <div\n class=\"ol-control m-layer-legend\"\n *ngIf=\"((legendLayers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"legendTop$ | async\"\n >\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegendWindow()\" [title]=\"'@pry.widget.map.legends' | i18n\">\n <pry-icon iconSvg=\"legend\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let geoLayer of legendLayers$ | async; let index = index\">\n <div class=\"m-layer-legend__title\" [class.-hidden]=\"!legendTabOpen\">\n {{ geoLayer.title }}\n <ng-container *ngIf=\"isLayerRendered(geoLayer)\">\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegend(index)\">\n <pry-icon\n [iconSvg]=\"legendTab === index ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!isLayerRendered(geoLayer)\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </ng-container>\n </div>\n <div\n class=\"m-layer-legend__image\"\n [class.-hidden]=\"!legendTabOpen || legendTab !== index || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n <ng-container *ngIf=\"geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) } as url\">\n <img\n [src]=\"url\"\n [alt]=\"'@pry.widget.map.legend' | i18n : { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n </ng-container>\n <ng-container *ngIf=\"!(geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) })\">\n <p class=\"m-layer-legend__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #mapRef id=\"map\"></div>\n </div>\n </div>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div class=\"m-tooltip--popup__header\">\n <p>{{ this.tooltipIndex + 1 }} / {{ this.tooltipNumber }}</p>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(-1)\" [disabled]=\"!tooltipCanMove(-1)\">\n <pry-icon iconSvg=\"arrow_back\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(1)\" [disabled]=\"!tooltipCanMove(1)\">\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n <div class=\"m-tooltip--popup__container\">\n <ng-container #popupContent></ng-container>\n </div>\n </div>\n <div\n #address\n class=\"m-tooltip m-tooltip--address tooltip-address\"\n [style.display]=\"'none'\"\n (click)=\"hideAddress()\"\n ></div>\n</div>\n" }]
2267
+ args: [{ selector: 'pry-widget-map', template: "<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_style\">{{ '@pry.widget.map.style' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeStyle($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.style === STYLE_FROM_URL\">\n <label class=\"a-label\" for=\"style_URL\">{{ '@pry.widget.map.styleUrl' | i18n }}</label>\n <input\n id=\"style_URL\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeStyleURL($event)\"\n [value]=\"optionsCopy.styleURL ?? ''\"\n />\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeSingleLayer($event)\" [ngModel]=\"optionsCopy.singleLayer ?? false\">\n {{ '@pry.widget.map.singleLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAutoLayer($event)\" [ngModel]=\"optionsCopy.automaticLayers ?? false\">\n {{ '@pry.widget.map.autoLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeSlideOption($event)\" [ngModel]=\"optionsCopy.slide ?? false\">\n {{ '@pry.widget.map.slide.global' | i18n }}\n </pry-checkbox>\n\n <div class=\"o-settings__popup__content__actions -has-separator\">\n <button type=\"button\" (click)=\"addLayer()\" class=\"a-btn a-btn--icon-text -link-like\">\n <pry-icon iconSvg=\"library_add\"></pry-icon>\n {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let layer of optionsCopy?.layers; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <h3 class=\"a-h3 settings-layer-title__title\">{{ '@pry.widget.map.layer' | i18n : { index: i + 1 } }}</h3>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.layers?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <pry-range\n [ngModel]=\"(layer?.opacity ?? 100) + ''\"\n (ngModelChange)=\"changeOpacity(layer, $event)\"\n labelTranslate=\"@pry.widget.map.opacity\"\n min=\"0\"\n max=\"100\"\n ></pry-range>\n\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.layerOptions' | i18n : { index: i + 1 } }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerTitle\">{{ '@pry.widget.map.layerTitle' | i18n }}</label>\n <input\n id=\"map_layerTitle\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeTitle($event, layer)\"\n [value]=\"layer.title ?? ''\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"!['geoserver', 'auto'].includes(layer.type)\">\n <label class=\"a-label\" for=\"map_layerType\">{{ '@pry.widget.map.layerType.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [bindData]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"layerTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"layer.type\"\n baseTranslate=\"@pry.widget.map.layerType.\"\n class=\"a-pry-select\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"['geoserver', 'wms'].includes(layer.type)\">\n <ng-container *ngIf=\"getAsWmsType(layer) as wmslayer\">\n <label class=\"a-label\" for=\"map_layerStyle\">{{ '@pry.widget.map.layerStyle' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerStyle($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"layerStyleOptions(layer)\"\n [ngModel]=\"getStyle(layer)\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_layerStyle\"\n ></pry-select>\n </ng-container>\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeFit($event, layer)\" [ngModel]=\"layer.fit\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n\n <div\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile' &&\n layer.type !== 'auto'\n \"\n class=\"m-form-label-field\"\n >\n <label class=\"a-label\" for=\"map_classes\">{{ '@pry.widget.map.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"usedClasses$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n </fieldset>\n </div>\n\n <fieldset\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n <ng-container\n *ngIf=\"\n layer\n | geometryFieldsFor : { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async as fields\n \"\n >\n <div\n *ngIf=\"\n ['heatmap', 'bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].indexOf(\n layer.type\n ) >= 0\n \"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_locationAttribute_both\">{{\n '@pry.widget.map.locationAttribute.both' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLocationAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n\n <div *ngIf=\"['heatmap', 'bubble'].indexOf(layer.type) >= 0\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_intensityAttribute\">{{\n '@pry.widget.map.intensityAttribute' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeIntensityAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n </fieldset>\n\n <fieldset\n *ngIf=\"\n layer.type === 'wms' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_url\">{{ '@pry.widget.map.wms.url' | i18n }}</label>\n <input\n id=\"map_wms_url\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeUrl($event, layer)\"\n [value]=\"layer.url\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms' || layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{ '@pry.widget.map.wms.paramLayer' | i18n }}</label>\n <input\n id=\"map_wms_paramLayer\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamLayer($event, layer)\"\n [value]=\"layer.paramLayer\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{ '@pry.widget.map.wms.matrixSet' | i18n }}</label>\n <input\n id=\"map_wms_matrixSet\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeMatrixSet($event, layer)\"\n [value]=\"layer.matrixSet\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_style\">{{ '@pry.widget.map.wms.style' | i18n }}</label>\n <input\n id=\"map_wms_style\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamStyle($event, layer)\"\n [value]=\"layer.style\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms'\">\n <pry-checkbox (ngModelChange)=\"changeParamTiled($event, layer)\" [ngModel]=\"layer?.paramTiled ?? false\">\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n </fieldset>\n\n <fieldset *ngIf=\"layer.type === 'marker'\">\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.clustering' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeClustered(layer, $event)\" [ngModel]=\"layer.clustered\">\n {{ '@pry.widget.map.clustered' | i18n }}\n </pry-checkbox>\n </div>\n <div *ngIf=\"layer.clustered\">\n <pry-range\n [ngModel]=\"layer.clustered\"\n (ngModelChange)=\"changeClusterDistance(layer, $event)\"\n labelTranslate=\"@pry.widget.map.clusterDistance\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </div>\n </fieldset>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.slide ?? false\">\n <label class=\"a-label\" for=\"slide_select\">{{ '@pry.widget.map.slide.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSlide($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"slides\"\n [ngModel]=\"layer.slide ?? 'all'\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"slide_select\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.attributions\">\n <label class=\"a-label\" for=\"attribution\">{{ '@pry.widget.map.attribution' | i18n }}</label>\n <input\n id=\"attribution\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeAttribution($event, layer)\"\n [value]=\"layer.attribution ? layer.attribution : ''\"\n />\n </div>\n\n <button\n type=\"button\"\n (click)=\"deleteLayer(i, layer)\"\n class=\"a-btn a-btn--icon-text -link-like\"\n *ngIf=\"layer.type !== 'geoserver'\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.map.deleteLayer' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div\n class=\"m-btn-group -map-selection-choice -vertical\"\n [class.-with-header]=\"displayHeader$ | async\"\n [class.-closed]=\"!(actionMenuOpen$ | async)\"\n >\n <div class=\"-vertical\">\n <ng-container *ngFor=\"let action of basicActions$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--{{ action }}\"\n (click)=\"changeSelection(action)\"\n [class.-selected]=\"(interactionManager.selectionInteraction.selectionType$ | async) === action\"\n [attr.data-tooltip]=\"'@pry.widget.map.' + action | i18n\"\n data-tooltip-position=\"right\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n </ng-container>\n </div>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip -map-toggle\"\n id=\"open_menu\"\n [attr.aria-expanded]=\"actionMenuOpen$ | async\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n (click)=\"toggleMenu()\"\n >\n <pry-icon\n [iconSvg]=\"(actionMenuOpen$ | async) ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"12\"\n [height]=\"24\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.open' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"m-btn-group -map-selection-choice -map-export\" [class.-with-header]=\"displayHeader$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [attr.data-tooltip]=\"'@pry.widget.map.export' | i18n\"\n data-tooltip-position=\"right\"\n (click)=\"export()\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n <div\n class=\"ol-control m-layer-switcher\"\n *ngIf=\"((layers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"layersTop$ | async\"\n >\n <button\n class=\"m-layer-switcher__toggle a-tooltip\"\n (click)=\"toggleLayersWindow()\"\n [attr.data-tooltip]=\"'@pry.widget.map.selectLayers' | i18n\"\n data-tooltip-position=\"left\"\n >\n <pry-icon iconSvg=\"layers\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let layer of mapLayers; let index = index\">\n <div class=\"m-layer-switcher__title\" [class.-hidden]=\"!layersTabOpen\">\n {{ layer.get('title') }}\n <ng-container *ngIf=\"!(options$ | async)?.singleLayer; else singleLayer\">\n <pry-checkbox [ngModel]=\"layer.getVisible()\" (change)=\"changeVisibility(layer)\"></pry-checkbox>\n </ng-container>\n <ng-template #singleLayer>\n <input\n type=\"radio\"\n name=\"layer\"\n [id]=\"'radio-layer-' + layer.get('title').split(' ')[0]\"\n [ngModel]=\"layerVisibleIdx\"\n [value]=\"index\"\n (change)=\"changeVisibility(layer)\"\n />\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <div\n class=\"ol-control m-layer-legend\"\n *ngIf=\"((legendLayers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"legendTop$ | async\"\n >\n <button\n class=\"m-layer-legend__toggle a-tooltip\"\n (click)=\"toggleLegendWindow()\"\n [attr.data-tooltip]=\"'@pry.widget.map.legends' | i18n\"\n data-tooltip-position=\"left\"\n >\n <pry-icon iconSvg=\"legend\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let geoLayer of legendLayers$ | async; let index = index\">\n <div class=\"m-layer-legend__title\" [class.-hidden]=\"!legendTabOpen\">\n {{ geoLayer.title }}\n <ng-container *ngIf=\"isLayerRendered(geoLayer)\">\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegend(index)\">\n <pry-icon\n [iconSvg]=\"legendTab === index ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!isLayerRendered(geoLayer)\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </ng-container>\n </div>\n <div\n class=\"m-layer-legend__image\"\n [class.-hidden]=\"!legendTabOpen || legendTab !== index || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n <ng-container *ngIf=\"geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) } as url\">\n <img\n [src]=\"url | getSecuredImage | async\"\n [alt]=\"'@pry.widget.map.legend' | i18n : { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n </ng-container>\n <ng-container *ngIf=\"!(geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) })\">\n <p class=\"m-layer-legend__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #mapRef id=\"map\"></div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"0.01\"\n value=\"50\"\n #sliderElement\n class=\"o-map-slider\"\n [class.-hidden]=\"!(hasSlideLayer$ | async)\"\n (input)=\"triggerLayerRender()\"\n />\n </div>\n </div>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div class=\"m-tooltip--popup__header\">\n <p>{{ this.tooltipIndex + 1 }} / {{ this.tooltipNumber }}</p>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(-1)\" [disabled]=\"!tooltipCanMove(-1)\">\n <pry-icon iconSvg=\"arrow_back\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(1)\" [disabled]=\"!tooltipCanMove(1)\">\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n <div class=\"m-tooltip--popup__container\">\n <ng-container #popupContent></ng-container>\n </div>\n </div>\n</div>\n" }]
2008
2268
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.PryI18nService }, { type: i2.TooltipFactoryService }, { type: i2.SymbolService }, { type: i0.Injector }, { type: WidgetMapLayerService }, { type: i2.PryAggregationService }, { type: i0.ElementRef }, { type: i2.PryGeoAuthService, decorators: [{
2009
2269
  type: Optional
2010
2270
  }, {
@@ -2022,9 +2282,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
2022
2282
  }], exportTypeTemplate: [{
2023
2283
  type: ViewChild,
2024
2284
  args: ['exportTypeTemplate', { read: TemplateRef }]
2025
- }], address: [{
2285
+ }], sliderElement: [{
2026
2286
  type: ViewChild,
2027
- args: ['address']
2287
+ args: ['sliderElement']
2028
2288
  }] } });
2029
2289
 
2030
2290
  const enTranslations = {
@@ -2082,6 +2342,7 @@ const enTranslations = {
2082
2342
  lat: 'Latitude property',
2083
2343
  lng: 'Longitude property'
2084
2344
  },
2345
+ layerStyle: 'Layer style',
2085
2346
  intensityAttribute: 'Intensity property',
2086
2347
  classes: 'Classes displayed in layer',
2087
2348
  relations: 'Display links',
@@ -2103,7 +2364,17 @@ const enTranslations = {
2103
2364
  selectLayers: 'Select layers',
2104
2365
  legends: 'Display legend',
2105
2366
  singleLayer: 'Single layer mode',
2106
- autoLayer: 'Automatic datasource layers configuration'
2367
+ autoLayer: 'Automatic datasource layers configuration',
2368
+ slide: {
2369
+ global: 'Use a slider',
2370
+ title: 'Display on slider',
2371
+ all: 'Everywhere',
2372
+ left: 'To the left',
2373
+ right: 'To the right'
2374
+ },
2375
+ open: 'Open/Close menu',
2376
+ zoomIn: 'Zoom In',
2377
+ zoomOut: 'Zoom Out'
2107
2378
  }
2108
2379
  }
2109
2380
  }
@@ -2164,6 +2435,7 @@ const frTranslations = {
2164
2435
  lat: 'Propriété de la latitude',
2165
2436
  lng: 'Propriété de la longitude'
2166
2437
  },
2438
+ layerStyle: 'Style de la couche',
2167
2439
  intensityAttribute: "Propriété de l'intensité",
2168
2440
  classes: 'Classes affichées dans cette couche',
2169
2441
  relations: 'Afficher les relations',
@@ -2185,7 +2457,17 @@ const frTranslations = {
2185
2457
  selectLayers: 'Sélectionner les couches',
2186
2458
  legends: 'Afficher la légende',
2187
2459
  singleLayer: 'Mode mono-couche',
2188
- autoLayer: 'Configuration automatique des sources de données'
2460
+ autoLayer: 'Configuration automatique des sources de données',
2461
+ slide: {
2462
+ global: 'Utiliser un curseur',
2463
+ title: 'Afficher selon un curseur',
2464
+ all: 'Partout',
2465
+ left: 'Uniquement à gauche',
2466
+ right: 'Uniquement à droite'
2467
+ },
2468
+ open: 'Ouverture/Fermeture menu',
2469
+ zoomIn: 'Zoomer',
2470
+ zoomOut: 'Dézoomer'
2189
2471
  }
2190
2472
  }
2191
2473
  }
@@ -2202,8 +2484,8 @@ class WidgetMapModule extends BaseWidgetModule {
2202
2484
  getComponent() {
2203
2485
  return WidgetMapComponent;
2204
2486
  }
2205
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapModule, deps: [{ token: i2.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
2206
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapModule, declarations: [WidgetMapComponent, GeometryFieldsForPipe, PryWidgetMapCssComponent, WidgetMapLegendUrlPipe], imports: [CommonModule,
2487
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapModule, deps: [{ token: i2.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
2488
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapModule, declarations: [WidgetMapComponent, GeometryFieldsForPipe, PryWidgetMapCssComponent, WidgetMapLegendUrlPipe], imports: [CommonModule,
2207
2489
  FormsModule,
2208
2490
  OverlayModule,
2209
2491
  PryCoreModule,
@@ -2215,7 +2497,7 @@ class WidgetMapModule extends BaseWidgetModule {
2215
2497
  PryOverlayModule,
2216
2498
  PryI18nModule,
2217
2499
  PryRangeModule], exports: [WidgetMapComponent, GeometryFieldsForPipe, PryWidgetMapCssComponent, WidgetMapLegendUrlPipe] }); }
2218
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapModule, imports: [CommonModule,
2500
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapModule, imports: [CommonModule,
2219
2501
  FormsModule,
2220
2502
  OverlayModule,
2221
2503
  PryCoreModule,
@@ -2228,7 +2510,7 @@ class WidgetMapModule extends BaseWidgetModule {
2228
2510
  PryI18nModule,
2229
2511
  PryRangeModule] }); }
2230
2512
  }
2231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetMapModule, decorators: [{
2513
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapModule, decorators: [{
2232
2514
  type: NgModule,
2233
2515
  args: [{
2234
2516
  declarations: [...components],
@@ -2254,5 +2536,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
2254
2536
  * Generated bundle index. Do not edit.
2255
2537
  */
2256
2538
 
2257
- export { CqlUtils, GeometryFieldsForPipe, InteractionManager, NON_MANDATORY_FIT_LAYER_TYPES, PryWidgetMapCssComponent, SelectionInteraction, TOOLTIP_PADDING, WidgetMapComponent, WidgetMapLayerService, WidgetMapLegendUrlPipe, WidgetMapModule, WidgetMapUtils, XMLUtils };
2539
+ export { CqlUtils, GeometryFieldsForPipe, InteractionManager, LayerSlider, NON_MANDATORY_FIT_LAYER_TYPES, PryWidgetMapCssComponent, SelectionInteraction, TOOLTIP_PADDING, WidgetMapComponent, WidgetMapLayerService, WidgetMapLegendUrlPipe, WidgetMapModule, WidgetMapUtils, XMLUtils };
2258
2540
  //# sourceMappingURL=provoly-dashboard-widgets-widget-map.mjs.map