@geotrekce/geotrek-rando-widget 0.24.2 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/dist/cjs/geotrek-rando-widget.cjs.js +1 -1
  2. package/dist/cjs/geotrek-rando-widget.cjs.js.br +0 -0
  3. package/dist/cjs/geotrek-rando-widget.cjs.js.gz +0 -0
  4. package/dist/cjs/grw-app.cjs.entry.js +1 -1
  5. package/dist/cjs/grw-app.cjs.entry.js.br +0 -0
  6. package/dist/cjs/grw-app.cjs.entry.js.gz +0 -0
  7. package/dist/cjs/grw-common-button_23.cjs.entry.js +241 -205
  8. package/dist/cjs/grw-common-button_23.cjs.entry.js.br +0 -0
  9. package/dist/cjs/grw-common-button_23.cjs.entry.js.gz +0 -0
  10. package/dist/cjs/grw-common-button_23.cjs.entry.js.map +1 -1
  11. package/dist/cjs/grw-details-modal_8.cjs.entry.js +1 -1
  12. package/dist/cjs/grw-details-modal_8.cjs.entry.js.br +0 -0
  13. package/dist/cjs/grw-details-modal_8.cjs.entry.js.gz +0 -0
  14. package/dist/cjs/grw-outdoor-courses-provider.cjs.entry.js +1 -1
  15. package/dist/cjs/grw-outdoor-courses-provider.cjs.entry.js.br +0 -0
  16. package/dist/cjs/grw-outdoor-courses-provider.cjs.entry.js.gz +0 -0
  17. package/dist/cjs/grw-poi_3.cjs.entry.js +1 -1
  18. package/dist/cjs/grw-poi_3.cjs.entry.js.br +0 -0
  19. package/dist/cjs/grw-poi_3.cjs.entry.js.gz +0 -0
  20. package/dist/cjs/grw-sensitive-area-detail_2.cjs.entry.js +1 -1
  21. package/dist/cjs/grw-sensitive-area-detail_2.cjs.entry.js.br +0 -0
  22. package/dist/cjs/grw-sensitive-area-detail_2.cjs.entry.js.gz +0 -0
  23. package/dist/cjs/grw-toggle-slot-visibility.cjs.entry.js +1 -1
  24. package/dist/cjs/grw-toggle-slot-visibility.cjs.entry.js.br +0 -0
  25. package/dist/cjs/grw-toggle-slot-visibility.cjs.entry.js.gz +0 -0
  26. package/dist/cjs/{i18n-ceda6815.js → i18n-d757c0bf.js} +61 -1
  27. package/dist/cjs/i18n-d757c0bf.js.br +0 -0
  28. package/dist/cjs/i18n-d757c0bf.js.gz +0 -0
  29. package/dist/cjs/i18n-d757c0bf.js.map +1 -0
  30. package/dist/cjs/loader.cjs.js +1 -1
  31. package/dist/cjs/loader.cjs.js.br +0 -0
  32. package/dist/cjs/loader.cjs.js.gz +0 -0
  33. package/dist/cjs/{treks.service-829e772f.js → treks.service-3e1c0220.js} +2 -2
  34. package/dist/cjs/treks.service-3e1c0220.js.br +0 -0
  35. package/dist/cjs/treks.service-3e1c0220.js.gz +0 -0
  36. package/dist/cjs/{treks.service-829e772f.js.map → treks.service-3e1c0220.js.map} +1 -1
  37. package/dist/collection/components/grw-map/grw-map.css +14 -0
  38. package/dist/collection/components/grw-map/grw-map.css.br +0 -0
  39. package/dist/collection/components/grw-map/grw-map.css.gz +0 -0
  40. package/dist/collection/components/grw-map/grw-map.js +5 -5
  41. package/dist/collection/components/grw-map/grw-map.js.br +0 -0
  42. package/dist/collection/components/grw-map/grw-map.js.gz +0 -0
  43. package/dist/collection/components/grw-map/grw-map.js.map +1 -1
  44. package/dist/collection/components/grw-offline-confirm-modal/grw-offline-confirm-modal.js +36 -7
  45. package/dist/collection/components/grw-offline-confirm-modal/grw-offline-confirm-modal.js.br +0 -0
  46. package/dist/collection/components/grw-offline-confirm-modal/grw-offline-confirm-modal.js.gz +0 -0
  47. package/dist/collection/components/grw-offline-confirm-modal/grw-offline-confirm-modal.js.map +1 -1
  48. package/dist/collection/components/grw-outdoor-site-detail/grw-outdoor-site-detail.js +87 -47
  49. package/dist/collection/components/grw-outdoor-site-detail/grw-outdoor-site-detail.js.br +0 -0
  50. package/dist/collection/components/grw-outdoor-site-detail/grw-outdoor-site-detail.js.gz +0 -0
  51. package/dist/collection/components/grw-outdoor-site-detail/grw-outdoor-site-detail.js.map +1 -1
  52. package/dist/collection/components/grw-trek-detail/grw-trek-detail.js +179 -139
  53. package/dist/collection/components/grw-trek-detail/grw-trek-detail.js.br +0 -0
  54. package/dist/collection/components/grw-trek-detail/grw-trek-detail.js.gz +0 -0
  55. package/dist/collection/components/grw-trek-detail/grw-trek-detail.js.map +1 -1
  56. package/dist/collection/i18n/i18n.js +60 -0
  57. package/dist/collection/i18n/i18n.js.br +0 -0
  58. package/dist/collection/i18n/i18n.js.gz +0 -0
  59. package/dist/collection/i18n/i18n.js.map +1 -1
  60. package/dist/collection/services/treks.service.js +1 -1
  61. package/dist/collection/services/treks.service.js.br +0 -0
  62. package/dist/collection/services/treks.service.js.gz +0 -0
  63. package/dist/collection/services/treks.service.js.map +1 -1
  64. package/dist/collection/store/grw-trek-provider.js +2 -4
  65. package/dist/collection/store/grw-trek-provider.js.br +0 -0
  66. package/dist/collection/store/grw-trek-provider.js.gz +0 -0
  67. package/dist/collection/store/grw-trek-provider.js.map +1 -1
  68. package/dist/esm/geotrek-rando-widget.js +1 -1
  69. package/dist/esm/geotrek-rando-widget.js.br +0 -0
  70. package/dist/esm/geotrek-rando-widget.js.gz +0 -0
  71. package/dist/esm/grw-app.entry.js +1 -1
  72. package/dist/esm/grw-app.entry.js.br +0 -0
  73. package/dist/esm/grw-app.entry.js.gz +0 -0
  74. package/dist/esm/grw-common-button_23.entry.js +241 -205
  75. package/dist/esm/grw-common-button_23.entry.js.br +0 -0
  76. package/dist/esm/grw-common-button_23.entry.js.gz +0 -0
  77. package/dist/esm/grw-common-button_23.entry.js.map +1 -1
  78. package/dist/esm/grw-details-modal_8.entry.js +1 -1
  79. package/dist/esm/grw-details-modal_8.entry.js.br +0 -0
  80. package/dist/esm/grw-details-modal_8.entry.js.gz +0 -0
  81. package/dist/esm/grw-outdoor-courses-provider.entry.js +1 -1
  82. package/dist/esm/grw-outdoor-courses-provider.entry.js.br +0 -0
  83. package/dist/esm/grw-outdoor-courses-provider.entry.js.gz +0 -0
  84. package/dist/esm/grw-poi_3.entry.js +1 -1
  85. package/dist/esm/grw-poi_3.entry.js.br +0 -0
  86. package/dist/esm/grw-poi_3.entry.js.gz +0 -0
  87. package/dist/esm/grw-sensitive-area-detail_2.entry.js +1 -1
  88. package/dist/esm/grw-sensitive-area-detail_2.entry.js.br +0 -0
  89. package/dist/esm/grw-sensitive-area-detail_2.entry.js.gz +0 -0
  90. package/dist/esm/grw-toggle-slot-visibility.entry.js +1 -1
  91. package/dist/esm/grw-toggle-slot-visibility.entry.js.br +0 -0
  92. package/dist/esm/grw-toggle-slot-visibility.entry.js.gz +0 -0
  93. package/dist/esm/{i18n-4ec6fb16.js → i18n-d4785001.js} +61 -1
  94. package/dist/esm/i18n-d4785001.js.br +0 -0
  95. package/dist/esm/i18n-d4785001.js.gz +0 -0
  96. package/dist/esm/i18n-d4785001.js.map +1 -0
  97. package/dist/esm/loader.js +1 -1
  98. package/dist/esm/loader.js.br +0 -0
  99. package/dist/esm/loader.js.gz +0 -0
  100. package/dist/esm/{treks.service-a59a05d5.js → treks.service-53203dbb.js} +2 -2
  101. package/dist/esm/treks.service-53203dbb.js.br +0 -0
  102. package/dist/esm/treks.service-53203dbb.js.gz +0 -0
  103. package/dist/esm/{treks.service-a59a05d5.js.map → treks.service-53203dbb.js.map} +1 -1
  104. package/dist/esm-es5/geotrek-rando-widget.js +1 -1
  105. package/dist/esm-es5/geotrek-rando-widget.js.br +0 -0
  106. package/dist/esm-es5/geotrek-rando-widget.js.gz +0 -0
  107. package/dist/esm-es5/geotrek-rando-widget.js.map +1 -1
  108. package/dist/esm-es5/grw-app.entry.js +1 -1
  109. package/dist/esm-es5/grw-app.entry.js.br +0 -0
  110. package/dist/esm-es5/grw-app.entry.js.gz +0 -0
  111. package/dist/esm-es5/grw-common-button_23.entry.js +2 -2
  112. package/dist/esm-es5/grw-common-button_23.entry.js.br +0 -0
  113. package/dist/esm-es5/grw-common-button_23.entry.js.gz +0 -0
  114. package/dist/esm-es5/grw-common-button_23.entry.js.map +1 -1
  115. package/dist/esm-es5/grw-details-modal_8.entry.js +1 -1
  116. package/dist/esm-es5/grw-details-modal_8.entry.js.br +0 -0
  117. package/dist/esm-es5/grw-details-modal_8.entry.js.gz +0 -0
  118. package/dist/esm-es5/grw-outdoor-courses-provider.entry.js +1 -1
  119. package/dist/esm-es5/grw-outdoor-courses-provider.entry.js.br +0 -0
  120. package/dist/esm-es5/grw-outdoor-courses-provider.entry.js.gz +0 -0
  121. package/dist/esm-es5/grw-poi_3.entry.js +1 -1
  122. package/dist/esm-es5/grw-poi_3.entry.js.br +0 -0
  123. package/dist/esm-es5/grw-poi_3.entry.js.gz +0 -0
  124. package/dist/esm-es5/grw-sensitive-area-detail_2.entry.js +1 -1
  125. package/dist/esm-es5/grw-sensitive-area-detail_2.entry.js.br +0 -0
  126. package/dist/esm-es5/grw-sensitive-area-detail_2.entry.js.gz +0 -0
  127. package/dist/esm-es5/grw-toggle-slot-visibility.entry.js +1 -1
  128. package/dist/esm-es5/grw-toggle-slot-visibility.entry.js.br +0 -0
  129. package/dist/esm-es5/grw-toggle-slot-visibility.entry.js.gz +0 -0
  130. package/dist/esm-es5/i18n-d4785001.js +2 -0
  131. package/dist/esm-es5/i18n-d4785001.js.br +0 -0
  132. package/dist/esm-es5/i18n-d4785001.js.gz +0 -0
  133. package/dist/esm-es5/i18n-d4785001.js.map +1 -0
  134. package/dist/esm-es5/loader.js +1 -1
  135. package/dist/esm-es5/loader.js.br +0 -0
  136. package/dist/esm-es5/loader.js.gz +0 -0
  137. package/dist/esm-es5/loader.js.map +1 -1
  138. package/dist/esm-es5/{treks.service-a59a05d5.js → treks.service-53203dbb.js} +2 -2
  139. package/dist/esm-es5/treks.service-53203dbb.js.br +0 -0
  140. package/dist/esm-es5/treks.service-53203dbb.js.gz +0 -0
  141. package/dist/{geotrek-rando-widget/p-d64a208b.system.js.map → esm-es5/treks.service-53203dbb.js.map} +1 -1
  142. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js +1 -1
  143. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.br +0 -0
  144. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.gz +0 -0
  145. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.map +1 -1
  146. package/dist/geotrek-rando-widget/{p-94f1ea91.system.entry.js → p-1ecac760.system.entry.js} +2 -2
  147. package/dist/geotrek-rando-widget/p-1ecac760.system.entry.js.br +0 -0
  148. package/dist/geotrek-rando-widget/p-1ecac760.system.entry.js.gz +0 -0
  149. package/dist/geotrek-rando-widget/p-1f5afac7.js +2 -0
  150. package/dist/geotrek-rando-widget/p-1f5afac7.js.br +0 -0
  151. package/dist/geotrek-rando-widget/p-1f5afac7.js.gz +0 -0
  152. package/dist/geotrek-rando-widget/p-1f5afac7.js.map +1 -0
  153. package/dist/geotrek-rando-widget/{p-a0027314.system.entry.js → p-24e8475f.system.entry.js} +2 -2
  154. package/dist/geotrek-rando-widget/p-24e8475f.system.entry.js.br +0 -0
  155. package/dist/geotrek-rando-widget/p-24e8475f.system.entry.js.gz +0 -0
  156. package/dist/geotrek-rando-widget/{p-20a73813.entry.js → p-2990b91c.entry.js} +2 -2
  157. package/dist/geotrek-rando-widget/p-2990b91c.entry.js.br +0 -0
  158. package/dist/geotrek-rando-widget/p-2990b91c.entry.js.gz +0 -0
  159. package/dist/geotrek-rando-widget/p-3208ccea.system.js +2 -0
  160. package/dist/geotrek-rando-widget/p-3208ccea.system.js.br +0 -0
  161. package/dist/geotrek-rando-widget/p-3208ccea.system.js.gz +0 -0
  162. package/dist/geotrek-rando-widget/p-3208ccea.system.js.map +1 -0
  163. package/dist/geotrek-rando-widget/{p-033910ba.system.entry.js → p-34a34d74.system.entry.js} +2 -2
  164. package/dist/geotrek-rando-widget/p-34a34d74.system.entry.js.br +0 -0
  165. package/dist/geotrek-rando-widget/p-34a34d74.system.entry.js.gz +0 -0
  166. package/dist/geotrek-rando-widget/{p-a9f81664.system.entry.js → p-3566b43b.system.entry.js} +2 -2
  167. package/dist/geotrek-rando-widget/p-3566b43b.system.entry.js.br +0 -0
  168. package/dist/geotrek-rando-widget/p-3566b43b.system.entry.js.gz +0 -0
  169. package/dist/geotrek-rando-widget/p-3c53fc59.system.js +1 -1
  170. package/dist/geotrek-rando-widget/p-3c53fc59.system.js.br +0 -0
  171. package/dist/geotrek-rando-widget/p-3c53fc59.system.js.gz +0 -0
  172. package/dist/geotrek-rando-widget/p-3c53fc59.system.js.map +1 -1
  173. package/dist/geotrek-rando-widget/{p-805e2ba0.js → p-4cf52b6c.js} +2 -2
  174. package/dist/geotrek-rando-widget/p-4cf52b6c.js.br +0 -0
  175. package/dist/geotrek-rando-widget/p-4cf52b6c.js.gz +0 -0
  176. package/dist/geotrek-rando-widget/{p-805e2ba0.js.map → p-4cf52b6c.js.map} +1 -1
  177. package/dist/geotrek-rando-widget/{p-9844030a.entry.js → p-5a073c3e.entry.js} +2 -2
  178. package/dist/geotrek-rando-widget/p-5a073c3e.entry.js.br +0 -0
  179. package/dist/geotrek-rando-widget/p-5a073c3e.entry.js.gz +0 -0
  180. package/dist/geotrek-rando-widget/{p-d64a208b.system.js → p-7d139984.system.js} +2 -2
  181. package/dist/geotrek-rando-widget/p-7d139984.system.js.br +0 -0
  182. package/dist/geotrek-rando-widget/p-7d139984.system.js.gz +0 -0
  183. package/dist/{esm-es5/treks.service-a59a05d5.js.map → geotrek-rando-widget/p-7d139984.system.js.map} +1 -1
  184. package/dist/geotrek-rando-widget/p-862c76ff.entry.js +4 -0
  185. package/dist/geotrek-rando-widget/p-862c76ff.entry.js.br +0 -0
  186. package/dist/geotrek-rando-widget/p-862c76ff.entry.js.gz +0 -0
  187. package/dist/geotrek-rando-widget/p-862c76ff.entry.js.map +1 -0
  188. package/dist/geotrek-rando-widget/{p-422bb6de.entry.js → p-87558980.entry.js} +2 -2
  189. package/dist/geotrek-rando-widget/p-87558980.entry.js.br +0 -0
  190. package/dist/geotrek-rando-widget/p-87558980.entry.js.gz +0 -0
  191. package/dist/geotrek-rando-widget/{p-45f46d33.entry.js → p-875e71d3.entry.js} +2 -2
  192. package/dist/geotrek-rando-widget/p-875e71d3.entry.js.br +0 -0
  193. package/dist/geotrek-rando-widget/p-875e71d3.entry.js.gz +0 -0
  194. package/dist/geotrek-rando-widget/{p-2a4d46f7.entry.js → p-87eb3dcc.entry.js} +2 -2
  195. package/dist/geotrek-rando-widget/p-87eb3dcc.entry.js.br +0 -0
  196. package/dist/geotrek-rando-widget/p-87eb3dcc.entry.js.gz +0 -0
  197. package/dist/geotrek-rando-widget/p-90ee8d15.system.entry.js +4 -0
  198. package/dist/geotrek-rando-widget/p-90ee8d15.system.entry.js.br +0 -0
  199. package/dist/geotrek-rando-widget/p-90ee8d15.system.entry.js.gz +0 -0
  200. package/dist/geotrek-rando-widget/p-90ee8d15.system.entry.js.map +1 -0
  201. package/dist/geotrek-rando-widget/{p-aa1ff056.system.entry.js → p-9bcb7645.system.entry.js} +2 -2
  202. package/dist/geotrek-rando-widget/p-9bcb7645.system.entry.js.br +0 -0
  203. package/dist/geotrek-rando-widget/p-9bcb7645.system.entry.js.gz +0 -0
  204. package/dist/geotrek-rando-widget/{p-75f7d534.system.entry.js → p-d47a130a.system.entry.js} +2 -2
  205. package/dist/geotrek-rando-widget/p-d47a130a.system.entry.js.br +0 -0
  206. package/dist/geotrek-rando-widget/p-d47a130a.system.entry.js.gz +0 -0
  207. package/dist/geotrek-rando-widget/{p-beba3e06.entry.js → p-d92ca7f1.entry.js} +2 -2
  208. package/dist/geotrek-rando-widget/p-d92ca7f1.entry.js.br +0 -0
  209. package/dist/geotrek-rando-widget/p-d92ca7f1.entry.js.gz +0 -0
  210. package/dist/types/components/grw-offline-confirm-modal/grw-offline-confirm-modal.d.ts +3 -0
  211. package/dist/types/components/grw-outdoor-site-detail/grw-outdoor-site-detail.d.ts +2 -0
  212. package/dist/types/components/grw-trek-detail/grw-trek-detail.d.ts +2 -0
  213. package/dist/types/components.d.ts +8 -0
  214. package/dist/types/i18n/i18n.d.ts +20 -0
  215. package/package.json +1 -1
  216. package/readme.md +75 -29
  217. package/dist/cjs/i18n-ceda6815.js.br +0 -0
  218. package/dist/cjs/i18n-ceda6815.js.gz +0 -0
  219. package/dist/cjs/i18n-ceda6815.js.map +0 -1
  220. package/dist/cjs/treks.service-829e772f.js.br +0 -0
  221. package/dist/cjs/treks.service-829e772f.js.gz +0 -0
  222. package/dist/esm/i18n-4ec6fb16.js.br +0 -0
  223. package/dist/esm/i18n-4ec6fb16.js.gz +0 -0
  224. package/dist/esm/i18n-4ec6fb16.js.map +0 -1
  225. package/dist/esm/treks.service-a59a05d5.js.br +0 -0
  226. package/dist/esm/treks.service-a59a05d5.js.gz +0 -0
  227. package/dist/esm-es5/i18n-4ec6fb16.js +0 -2
  228. package/dist/esm-es5/i18n-4ec6fb16.js.br +0 -0
  229. package/dist/esm-es5/i18n-4ec6fb16.js.gz +0 -0
  230. package/dist/esm-es5/i18n-4ec6fb16.js.map +0 -1
  231. package/dist/esm-es5/treks.service-a59a05d5.js.br +0 -0
  232. package/dist/esm-es5/treks.service-a59a05d5.js.gz +0 -0
  233. package/dist/geotrek-rando-widget/p-033910ba.system.entry.js.br +0 -0
  234. package/dist/geotrek-rando-widget/p-033910ba.system.entry.js.gz +0 -0
  235. package/dist/geotrek-rando-widget/p-046d4502.system.js +0 -2
  236. package/dist/geotrek-rando-widget/p-046d4502.system.js.br +0 -0
  237. package/dist/geotrek-rando-widget/p-046d4502.system.js.gz +0 -0
  238. package/dist/geotrek-rando-widget/p-046d4502.system.js.map +0 -1
  239. package/dist/geotrek-rando-widget/p-0a37c6c9.entry.js +0 -4
  240. package/dist/geotrek-rando-widget/p-0a37c6c9.entry.js.br +0 -0
  241. package/dist/geotrek-rando-widget/p-0a37c6c9.entry.js.gz +0 -0
  242. package/dist/geotrek-rando-widget/p-0a37c6c9.entry.js.map +0 -1
  243. package/dist/geotrek-rando-widget/p-0a3fc934.js +0 -2
  244. package/dist/geotrek-rando-widget/p-0a3fc934.js.br +0 -0
  245. package/dist/geotrek-rando-widget/p-0a3fc934.js.gz +0 -0
  246. package/dist/geotrek-rando-widget/p-0a3fc934.js.map +0 -1
  247. package/dist/geotrek-rando-widget/p-20a73813.entry.js.br +0 -0
  248. package/dist/geotrek-rando-widget/p-20a73813.entry.js.gz +0 -0
  249. package/dist/geotrek-rando-widget/p-2a4d46f7.entry.js.br +0 -0
  250. package/dist/geotrek-rando-widget/p-2a4d46f7.entry.js.gz +0 -0
  251. package/dist/geotrek-rando-widget/p-422bb6de.entry.js.br +0 -0
  252. package/dist/geotrek-rando-widget/p-422bb6de.entry.js.gz +0 -0
  253. package/dist/geotrek-rando-widget/p-45f46d33.entry.js.br +0 -0
  254. package/dist/geotrek-rando-widget/p-45f46d33.entry.js.gz +0 -0
  255. package/dist/geotrek-rando-widget/p-75f7d534.system.entry.js.br +0 -0
  256. package/dist/geotrek-rando-widget/p-75f7d534.system.entry.js.gz +0 -0
  257. package/dist/geotrek-rando-widget/p-805e2ba0.js.br +0 -0
  258. package/dist/geotrek-rando-widget/p-805e2ba0.js.gz +0 -0
  259. package/dist/geotrek-rando-widget/p-89cd66dc.system.entry.js +0 -4
  260. package/dist/geotrek-rando-widget/p-89cd66dc.system.entry.js.br +0 -0
  261. package/dist/geotrek-rando-widget/p-89cd66dc.system.entry.js.gz +0 -0
  262. package/dist/geotrek-rando-widget/p-89cd66dc.system.entry.js.map +0 -1
  263. package/dist/geotrek-rando-widget/p-94f1ea91.system.entry.js.br +0 -0
  264. package/dist/geotrek-rando-widget/p-94f1ea91.system.entry.js.gz +0 -0
  265. package/dist/geotrek-rando-widget/p-9844030a.entry.js.br +0 -0
  266. package/dist/geotrek-rando-widget/p-9844030a.entry.js.gz +0 -0
  267. package/dist/geotrek-rando-widget/p-a0027314.system.entry.js.br +0 -0
  268. package/dist/geotrek-rando-widget/p-a0027314.system.entry.js.gz +0 -0
  269. package/dist/geotrek-rando-widget/p-a9f81664.system.entry.js.br +0 -0
  270. package/dist/geotrek-rando-widget/p-a9f81664.system.entry.js.gz +0 -0
  271. package/dist/geotrek-rando-widget/p-aa1ff056.system.entry.js.br +0 -0
  272. package/dist/geotrek-rando-widget/p-aa1ff056.system.entry.js.gz +0 -0
  273. package/dist/geotrek-rando-widget/p-beba3e06.entry.js.br +0 -0
  274. package/dist/geotrek-rando-widget/p-beba3e06.entry.js.gz +0 -0
  275. package/dist/geotrek-rando-widget/p-d64a208b.system.js.br +0 -0
  276. package/dist/geotrek-rando-widget/p-d64a208b.system.js.gz +0 -0
  277. /package/dist/geotrek-rando-widget/{p-94f1ea91.system.entry.js.map → p-1ecac760.system.entry.js.map} +0 -0
  278. /package/dist/geotrek-rando-widget/{p-a0027314.system.entry.js.map → p-24e8475f.system.entry.js.map} +0 -0
  279. /package/dist/geotrek-rando-widget/{p-20a73813.entry.js.map → p-2990b91c.entry.js.map} +0 -0
  280. /package/dist/geotrek-rando-widget/{p-033910ba.system.entry.js.map → p-34a34d74.system.entry.js.map} +0 -0
  281. /package/dist/geotrek-rando-widget/{p-a9f81664.system.entry.js.map → p-3566b43b.system.entry.js.map} +0 -0
  282. /package/dist/geotrek-rando-widget/{p-9844030a.entry.js.map → p-5a073c3e.entry.js.map} +0 -0
  283. /package/dist/geotrek-rando-widget/{p-422bb6de.entry.js.map → p-87558980.entry.js.map} +0 -0
  284. /package/dist/geotrek-rando-widget/{p-45f46d33.entry.js.map → p-875e71d3.entry.js.map} +0 -0
  285. /package/dist/geotrek-rando-widget/{p-2a4d46f7.entry.js.map → p-87eb3dcc.entry.js.map} +0 -0
  286. /package/dist/geotrek-rando-widget/{p-aa1ff056.system.entry.js.map → p-9bcb7645.system.entry.js.map} +0 -0
  287. /package/dist/geotrek-rando-widget/{p-75f7d534.system.entry.js.map → p-d47a130a.system.entry.js.map} +0 -0
  288. /package/dist/geotrek-rando-widget/{p-beba3e06.entry.js.map → p-d92ca7f1.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"grw-map.js","sourceRoot":"","sources":["../../../src/components/grw-map/grw-map.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Event, EventEmitter, getAssetPath, Build, Listen, Element, forceUpdate } from '@stencil/core';\nimport { Feature, FeatureCollection } from 'geojson';\nimport L, { MarkerClusterGroup, TileLayer } from 'leaflet';\nimport 'leaflet-i18n';\nimport '@raruto/leaflet-elevation/dist/leaflet-elevation.min.js';\nimport 'leaflet.markercluster/dist/leaflet.markercluster.js';\nimport '../../utils/leaflet-simple-locate.min.js';\nimport state, { onChange } from 'store/store';\nimport { translate } from 'i18n/i18n';\nimport { getTrekGeometry } from 'services/treks.service';\nimport { tileLayerOffline } from 'leaflet.offline';\nimport { getDataInStore } from 'services/grw-db.service';\nimport { checkFileInStore, getFileInStore } from 'utils/utils';\nimport { Capacitor } from '@capacitor/core';\nimport { Directory, Filesystem } from '@capacitor/filesystem';\nimport { Trek } from 'components';\nimport pointOnFeature from '@turf/point-on-feature';\nimport bbox from '@turf/bbox';\n\n@Component({\n tag: 'grw-map',\n styleUrl: 'grw-map.scss',\n shadow: true,\n})\nexport class GrwMap {\n @Element() mapElement: HTMLElement;\n mapRef: HTMLElement;\n hostElement: HTMLElement;\n maxZoom = 19;\n\n @Event() trekCardPress: EventEmitter<number>;\n @Event() touristicContentCardPress: EventEmitter<number>;\n @Event() touristicEventCardPress: EventEmitter<number>;\n @Event() outdoorSiteCardPress: EventEmitter<number>;\n @Event() outdoorCourseCardPress: EventEmitter<number>;\n\n @State() mapIsReady = false;\n @Prop() nameLayer: string;\n @Prop() urlLayer: string;\n @Prop() attributionLayer: string;\n\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorPrimaryContainer = '#eaddff';\n @Prop() colorOnPrimaryContainer = '#21005e';\n @Prop() colorBackground = '#fef7ff';\n\n @Prop() colorTrekLine = '#6b0030';\n @Prop() colorSensitiveArea = '#4974a5';\n @Prop() colorMarkers = null;\n @Prop() colorClusters = null;\n @Prop() colorOutdoorArea = '#ffb700';\n\n @Prop() tilesMaxZoomOffline = 16;\n\n @Prop() grwApp = false;\n\n @Prop() mainMarkerSize = 32;\n @Prop() selectedMainMarkerSize = 48;\n @Prop() mainClusterSize = 48;\n @Prop() commonMarkerSize = 48;\n @Prop() departureArrivalMarkerSize = 14;\n @Prop() pointReferenceMarkerSize = 24;\n\n @Prop() elevationHeight = 280;\n @Prop() mobileElevationHeight = 280;\n @Prop() largeViewSize = 1024;\n @Prop() elevationDefaultState = 'visible';\n @Prop() isLargeView = false;\n @Prop() fabBackgroundColor = '#eaddff';\n @Prop() fabColor = '#21005d';\n\n map: L.Map;\n bounds;\n treksLayer: L.GeoJSON<any>;\n toutisticContentsLayer: L.GeoJSON<any>;\n touristicEventsLayer: L.GeoJSON<any>;\n\n treksMarkerClusterGroup: MarkerClusterGroup;\n touristicContentsMarkerClusterGroup: MarkerClusterGroup;\n touristicEventsMarkerClusterGroup: MarkerClusterGroup;\n outdoorSitesMarkerClusterGroup: MarkerClusterGroup;\n outdoorSitesLayer: L.GeoJSON<any>;\n currentTrekLayer: L.GeoJSON<any>;\n currentStepsLayer: L.GeoJSON<any>;\n selectedCurrentTrekLayer: L.GeoJSON<any>;\n selectedCurrentStepLayer: L.GeoJSON<any>;\n selectedTouristicContentLayer: L.GeoJSON<any>;\n selectedTouristicEventLayer: L.GeoJSON<any>;\n selectedOutdoorSiteLayer: L.GeoJSON<any>;\n selectedOutdoorCourseLayer: L.GeoJSON<any>;\n currentReferencePointsLayer: L.GeoJSON<any>;\n currentParkingLayer: L.GeoJSON<any>;\n currentSensitiveAreasLayer: L.GeoJSON<any>;\n currentPoisLayer: L.GeoJSON<any>;\n currentSignagesLayer: L.GeoJSON<any>;\n currentInformationDesksLayer: L.GeoJSON<any>;\n currentToutisticContentsLayer: L.GeoJSON<any>;\n currentTouristicEventsLayer: L.GeoJSON<any>;\n currentToutisticContentLayer: L.GeoJSON<any>;\n currentToutisticEventLayer: L.GeoJSON<any>;\n currentOutdoorSiteLayer: L.GeoJSON<any>;\n currentOutdoorCourseLayer: L.GeoJSON<any>;\n currentRelatedOutdoorSitesLayer: L.GeoJSON<any>;\n currentRelatedOutdoorCoursesLayer: L.GeoJSON<any>;\n elevationControl: L.Control.Layers;\n departureArrivalLayer: L.GeoJSON<any>;\n layersControl: L.Control.Layers;\n userLayersState: {\n [key: number]: boolean;\n } = {};\n tileLayer: { key: string; value: TileLayer }[] = [];\n trekPopupIsOpen: boolean;\n stepPopupIsOpen: boolean;\n touristicContentPopupIsOpen: boolean;\n touristicEventPopupIsOpen: boolean;\n outdoorSitePopupIsOpen: boolean;\n outdoorCoursePopupIsOpen: boolean;\n\n handleTreksWithinBoundsBind: (event: any) => void = this.handleTreksWithinBounds.bind(this);\n handleTouristicContentsWithinBoundsBind: (event: any) => void = this.handleTouristicContentsWithinBounds.bind(this);\n handleTouristicEventsWithinBoundsBind: (event: any) => void = this.handleTouristicEventsWithinBounds.bind(this);\n handleOutdoorSitesWithinBoundsBind: (event: any) => void = this.handleOutdoorSitesWithinBounds.bind(this);\n\n @Listen('centerOnMap', { target: 'window' })\n onCenterOnMap(event: CustomEvent<{ latitude: number; longitude: number }>) {\n this.map.setView(new L.LatLng(event.detail.latitude, event.detail.longitude), 17, { animate: false });\n }\n\n @Listen('stepsIsInViewport', { target: 'window' })\n stepsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentStepsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentStepsLayer);\n }\n }\n\n @Listen('descriptionIsInViewport', { target: 'window' })\n descriptionIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentReferencePointsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentReferencePointsLayer);\n }\n }\n\n @Listen('parkingIsInViewport', { target: 'window' })\n parkingIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentParkingLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentParkingLayer);\n }\n }\n\n @Listen('informationPlacesIsInViewport', { target: 'window' })\n onInformationPlacesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentInformationDesksLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentInformationDesksLayer);\n }\n }\n\n @Listen('sensitiveAreaIsInViewport', { target: 'window' })\n sensitiveAreaIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentSensitiveAreasLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentSensitiveAreasLayer);\n }\n }\n\n @Listen('poiIsInViewport', { target: 'window' })\n poiIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentPoisLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentPoisLayer);\n }\n }\n\n @Listen('touristicContentsIsInViewport', { target: 'window' })\n touristicContentsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentToutisticContentsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentToutisticContentsLayer);\n }\n }\n\n @Listen('touristicEventsIsInViewport', { target: 'window' })\n touristicEventsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentTouristicEventsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentTouristicEventsLayer);\n }\n }\n\n @Listen('sitesIsInViewport', { target: 'window' })\n sitesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentRelatedOutdoorSitesLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentRelatedOutdoorSitesLayer);\n }\n }\n\n @Listen('coursesIsInViewport', { target: 'window' })\n coursesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentRelatedOutdoorCoursesLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentRelatedOutdoorCoursesLayer);\n }\n }\n\n @Listen('cardTrekMouseOver', { target: 'window' })\n onCardTrekMouseOver(event: CustomEvent<number>) {\n if (!state.parentTrek && (!state.selectedTrekId || state.selectedTrekId !== event.detail)) {\n state.selectedTrekId = event.detail;\n this.hideTrekLine();\n this.showTrekLine(event.detail);\n this.addSelectedCurrentTrek(event.detail);\n } else if (state.parentTrek) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.addSelectedCurrentStep(event.detail);\n }\n }\n\n @Listen('cardTrekMouseLeave', { target: 'window' })\n onCardTrekMouseLeave() {\n if (!this.trekPopupIsOpen && state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n } else if (this.selectedCurrentStepLayer) {\n this.removeSelectedCurrentStep();\n }\n }\n\n @Listen('cardTouristicContentMouseOver', { target: 'window' })\n onTouristicContentMouseOver(event: CustomEvent<number>) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.addSelectedTouristicContent(event.detail);\n }\n\n @Listen('cardTouristicContentMouseLeave', { target: 'window' })\n onTouristicContentMouseLeave() {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n\n @Listen('cardTouristicEventMouseOver', { target: 'window' })\n onTouristicEventMouseOver(event: CustomEvent<number>) {\n this.touristicEventPopupIsOpen = false;\n state.selectedTouristicEventId = null;\n this.addSelectedTouristicEvent(event.detail);\n }\n\n @Listen('cardTouristicEventMouseLeave', { target: 'window' })\n onTouristicEventMouseLeave() {\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n\n @Listen('trekDownloadedSuccessConfirm', { target: 'window' })\n onTrekDownloadedSuccessConfirm() {\n this.map.setMaxZoom(this.tilesMaxZoomOffline);\n }\n\n @Listen('trekDeleteSuccessConfirm', { target: 'window' })\n onTrekDeleteSuccessConfirm() {\n this.map.setMaxZoom(this.maxZoom);\n }\n\n @Listen('cardOutdoorSiteMouseOver', { target: 'window' })\n onOutdoorSiteMouseOver(event: CustomEvent<number>) {\n this.outdoorSitePopupIsOpen = false;\n state.selectedOutdoorSiteId = null;\n this.addSelectedOutdoorSite(event.detail);\n }\n\n @Listen('cardOutdoorSiteMouseLeave', { target: 'window' })\n onOutdoorSiteMouseLeave() {\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n\n componentDidLoad() {\n this.map = L.map(this.mapRef, { zoom: 4, center: [47, 2], zoomControl: false });\n\n const nameLayers = this.nameLayer ? this.nameLayer.split(',') : [];\n\n const urlLayers = this.urlLayer.split(',http').map((url, index) => (index === 0 ? url : 'http' + url));\n\n const attributionLayers = this.attributionLayer ? this.attributionLayer.split(',') : [];\n urlLayers.forEach((urlLayer, index) => {\n this.tileLayer.push({\n key: `${nameLayers[index]}`,\n value: tileLayerOffline(urlLayer, {\n maxZoom: this.maxZoom,\n attribution: `${\n attributionLayers[index] && attributionLayers[index] !== '' ? attributionLayers[index].concat(' | ') : ''\n }Powered by <a target=\"_blank\" href=\"https://geotrek.fr/\">Geotrek</a>`,\n crossOrigin: true,\n }),\n });\n });\n\n this.tileLayer[0].value.addTo(this.map);\n\n if (urlLayers.length > 1) {\n this.layersControl = L.control\n .layers(\n this.tileLayer.reduce((tileLayers, tileLayer) => Object.assign(tileLayers, { [tileLayer.key]: tileLayer.value }), {}),\n {},\n { collapsed: true },\n )\n .addTo(this.map);\n }\n\n L.control.zoom({ zoomInTitle: translate[state.language].zoomIn, zoomOutTitle: translate[state.language].zoomOut }).addTo(this.map);\n\n L.control.scale({ metric: true, imperial: false }).addTo(this.map);\n\n (L.Control as any).Contract = L.Control.extend({\n onAdd: () => {\n const contractContainer = L.DomUtil.create('div');\n contractContainer.className = 'leaflet-bar leaflet-control';\n const contract = contractContainer.appendChild(L.DomUtil.create('a'));\n contract.href = '#';\n contract.style.backgroundImage = `var(--contract-image-src)`;\n contractContainer.onclick = e => {\n this.bounds && this.map.fitBounds(this.bounds);\n e.preventDefault();\n };\n contract.title = translate[state.language].contract;\n\n return contractContainer;\n },\n });\n\n (L.control as any).contract = opts => {\n return new (L.Control as any).Contract(opts);\n };\n\n (L.control as any).contract({ position: 'topleft' }).addTo(this.map);\n\n new (L.Control as any).SimpleLocate({\n position: 'topleft',\n className: 'button-locate',\n title: translate[state.language].locate,\n }).addTo(this.map);\n\n if (state.currentTrek) {\n this.addTrek();\n } else if (state.currentTreks) {\n this.addTreks();\n } else if (state.currentTouristicContent) {\n this.addTouristicContent();\n } else if (state.currentTouristicEvent) {\n this.addTouristicEvent();\n } else if (state.currentOutdoorSite) {\n this.addOutdoorSite();\n } else if (state.currentOutdoorCourse) {\n this.addOutdoorCourse();\n } else if (state.touristicContents) {\n this.addTouristicContents();\n } else if (state.touristicEvents) {\n this.addTouristicEvents();\n } else if (state.outdoorSites) {\n this.addOutdoorSites();\n }\n\n onChange('currentTreks', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks(true);\n }\n });\n\n onChange('currentOutdoorSites', () => {\n if (state.currentOutdoorSites) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.addOutdoorSites(true);\n }\n });\n\n onChange('currentTrek', () => {\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks();\n }\n });\n\n onChange('currentOutdoorSite', () => {\n if (state.currentOutdoorSite) {\n this.removeOutdoorCourse();\n this.removeOutdoorSites();\n this.addOutdoorSite();\n } else if (state.currentOutdoorSites) {\n this.removeOutdoorSite();\n this.addOutdoorSites();\n }\n });\n\n onChange('currentOutdoorSite', () => {\n if (state.currentOutdoorCourse) {\n this.removeOutdoorSite();\n this.addOutdoorCourse();\n }\n });\n\n onChange('currentTouristicContent', () => {\n if (this.grwApp) {\n if (state.currentTouristicContent) {\n this.removeTrek();\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.touristicContents) {\n this.removeTouristicContent();\n this.addTouristicContents();\n } else if (state.currentTrek) {\n this.removeTouristicContent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicContent();\n this.addTreks();\n }\n }\n });\n\n onChange('currentTouristicEvent', () => {\n if (this.grwApp) {\n if (state.currentTouristicEvent) {\n this.removeTrek();\n this.removeTouristicEvents();\n this.addTouristicEvent();\n } else if (state.currentTrek) {\n this.removeTouristicEvent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicEvent();\n this.addTreks();\n }\n }\n });\n\n onChange('currentTouristicContents', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTouristicContent) {\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.currentTouristicContents) {\n this.removeTreks();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.removeTouristicContent();\n this.addTouristicContents(true);\n }\n });\n\n onChange('currentTouristicEvents', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTouristicEvent) {\n this.removeTouristicEvents();\n this.addTouristicEvent();\n } else if (state.currentTouristicEvents) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeOutdoorSites();\n this.removeTouristicEvent();\n this.addTouristicEvents(true);\n }\n });\n }\n\n handleLayerVisibility(visible: boolean, layer: L.GeoJSON) {\n if (visible && !this.map.hasLayer(layer)) {\n layer.addTo(this.map);\n } else if (this.map.hasLayer(layer) && !this.userLayersState[(layer as any)._leaflet_id]) {\n this.map.removeLayer(layer);\n }\n this.handleLayersControlEvent();\n }\n\n async addTreks(resetBounds = false) {\n state.treksWithinBounds = state.currentTreks;\n\n const treksCurrentDepartureCoordinates = [];\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n for (const trek of state.currentTreks) {\n treksCurrentDepartureCoordinates.push(trek.departure_geom);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.treksLayer) {\n if ((treksCurrentDepartureCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n\n const treksIcons = await this.getIcons(treksFeatureCollection, 'practice');\n\n this.treksLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: treksIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"trek-marker-container\" class=\"trek-marker-container\"><img part=\"trek-marker-icon\" src=${treksIcons[geoJsonPoint.properties.practice]} /></div>`\n : `<div part=\"trek-marker-container\" class=\"trek-marker-container\"></div>`,\n className: 'trek-marker',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n /* @ts-ignore */\n trekImg.part = 'trek-image-popup';\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.hideTrekLine();\n this.showTrekLine(geoJsonPoint.properties.id);\n this.addSelectedCurrentTrek(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.treksMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"treks-marker-cluster-group-icon\" class=\"treks-marker-cluster-group-icon\">' + cluster.getChildCount() + '</div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n this.map.addLayer(this.treksMarkerClusterGroup);\n } else {\n if (treksCurrentDepartureCoordinates.length > 0) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.treksLayer.clearLayers();\n this.treksLayer.addData(treksFeatureCollection);\n this.treksMarkerClusterGroup.clearLayers();\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n }\n this.bounds && this.bounds._northEast && this.bounds._southWest && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n this.map.on('moveend', this.handleTreksWithinBoundsBind);\n }\n\n removeTreks() {\n if (this.treksLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.treksMarkerClusterGroup);\n this.treksLayer = null;\n this.treksMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTreksWithinBoundsBind);\n }\n }\n\n handleTreksWithinBounds() {\n if (\n (state.currentTreks && !state.currentMapBounds) ||\n (state.currentTreks && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.treksWithinBounds = state.currentTreks.filter(trek => this.map.getBounds().contains(L.latLng(trek.departure_geom[1], trek.departure_geom[0])));\n }\n }\n\n handleTouristicContentsWithinBounds() {\n if (\n (state.currentTouristicContents && !state.currentMapBounds) ||\n (state.currentTouristicContents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicContentsWithinBounds = state.currentTouristicContents.filter(touristicContent =>\n this.map.getBounds().contains(L.latLng(touristicContent.geometry.coordinates[1], touristicContent.geometry.coordinates[0])),\n );\n }\n }\n\n handleTouristicEventsWithinBounds() {\n if (\n (state.currentTouristicEvents && !state.currentMapBounds) ||\n (state.currentTouristicEvents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicEventsWithinBounds = state.currentTouristicEvents.filter(touristicEvent =>\n this.map.getBounds().contains(L.latLng(touristicEvent.geometry.coordinates[1], touristicEvent.geometry.coordinates[0])),\n );\n }\n }\n\n handleOutdoorSitesWithinBounds() {\n if (\n (state.currentOutdoorSites && !state.currentMapBounds) ||\n (state.currentOutdoorSites && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.outdoorSitesWithinBounds = state.currentOutdoorSites.filter(outdoorSite => {\n const coordinates = pointOnFeature(outdoorSite.geometry as any).geometry.coordinates;\n return this.map.getBounds().contains(L.latLng(coordinates[1], coordinates[0]));\n });\n }\n }\n\n async addTrek() {\n const trekInStore: Trek = await getDataInStore('treks', state.currentTrek.id);\n if (trekInStore) {\n this.map.setMaxZoom(this.tilesMaxZoomOffline);\n } else {\n this.map.setMaxZoom(this.maxZoom);\n }\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: state.currentTrek.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: 'transparent',\n }),\n interactive: false,\n }).addTo(this.map);\n\n if (state.currentTrek.parking_location) {\n const parkingImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/parking.svg`);\n const currentParking: Feature = {\n type: 'Feature',\n properties: { name: state.currentTrek.advised_parking },\n geometry: { type: 'Point', coordinates: state.currentTrek.parking_location },\n };\n this.currentParkingLayer = L.geoJSON(currentParking, {\n pointToLayer: (_geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: `<img part=\"parking-marker\" src=${parkingImageSrc} />`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const parkingTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n parkingTooltip.part = 'parking-tooltip';\n parkingTooltip.className = 'parking-tooltip';\n const parkingName = L.DomUtil.create('div');\n parkingName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n parkingTooltip.part = 'parking-name';\n parkingName.className = 'parking-name';\n parkingTooltip.appendChild(parkingName);\n layer.bindTooltip(parkingTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.currentSensitiveAreas && state.currentSensitiveAreas.length > 0) {\n const currentSensitiveAreasFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const sensitiveArea of state.currentSensitiveAreas) {\n currentSensitiveAreasFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: sensitiveArea.name },\n geometry: sensitiveArea.geometry,\n });\n }\n\n this.currentSensitiveAreasLayer = L.geoJSON(currentSensitiveAreasFeatureCollection, {\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const sensitiveAreaTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n sensitiveAreaTooltip.part = 'sensitive-area-tooltip';\n sensitiveAreaTooltip.className = 'sensitive-area-tooltip';\n const sensitiveAreaName = L.DomUtil.create('div');\n sensitiveAreaName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n sensitiveAreaName.part = 'sensitive-area-name';\n sensitiveAreaName.className = 'sensitive-area-name';\n sensitiveAreaTooltip.appendChild(sensitiveAreaName);\n layer.bindTooltip(sensitiveAreaTooltip).openTooltip();\n });\n },\n style: () => ({ color: this.colorSensitiveArea }),\n });\n }\n\n await this.addCurrentInformationDesks(state.currentTrek);\n\n await this.addCurrentPois();\n\n await this.addCurrentSignages();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n if (state.currentTrek.points_reference) {\n const currentReferencePointsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n currentReferencePointsFeatureCollection.features.push({\n type: 'Feature',\n properties: {},\n geometry: state.currentTrek.points_reference,\n });\n\n let index = 0;\n this.currentReferencePointsLayer = L.geoJSON(currentReferencePointsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"point-reference-icon\" class=\"point-reference-icon\">${index}</div>`,\n className: '',\n iconSize: this.pointReferenceMarkerSize,\n } as any),\n autoPanOnFocus: false,\n interactive: false,\n } as any);\n },\n });\n }\n\n if (!this.currentStepsLayer && state.parentTrekId && state.parentTrek && state.currentTrek.id === state.parentTrekId) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n for (const trek of state.currentTrekSteps) {\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n }\n\n let stepIndex = 0;\n this.currentStepsLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n stepIndex += 1;\n return L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div part=\"step-marker\" class=\"step-marker\"><div part=\"step-marker-container\" class=\"step-marker-container\"><div part=\"step-number\" class=\"step-number\">${stepIndex}</div></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedCurrentStep(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n }\n\n let elevationTranslation = {\n 'y: ': '',\n 'x: ': '',\n 'Total Length: ': 'Longueur totale : ',\n 'Min Elevation: ': 'Altitude min : ',\n 'Max Elevation: ': 'Altitude max : ',\n };\n\n /* @ts-ignore */\n L.registerLocale('fr', elevationTranslation);\n /* @ts-ignore */\n L.setLocale('fr');\n\n const elevationOptions = {\n elevationDiv: `#elevation-container`,\n theme: `custom-theme use-theme-color`,\n height: this.mapElement.getBoundingClientRect().width >= this.largeViewSize / 2 ? this.elevationHeight : this.mobileElevationHeight,\n distanceMarkers: { distance: false, direction: true },\n summary: 'inline',\n legend: false,\n downloadLink: false,\n autofitBounds: false,\n ruler: false,\n waypoints: false,\n almostOver: false,\n dragging: false,\n };\n this.elevationControl = (L.control as any).elevation(elevationOptions).addTo(this.map);\n const elevation = JSON.stringify({\n name: `${state.currentTrek.name}`,\n type: 'FeatureCollection',\n features: [{ type: 'Feature', geometry: { type: 'LineString', coordinates: state.currentTrek.geometry.coordinates }, properties: null }],\n });\n (this.elevationControl as any).load(elevation);\n (this.elevationControl as any).eleDiv.style.display = this.elevationDefaultState === 'visible' ? 'block' : 'none';\n forceUpdate(this.hostElement);\n\n const departureArrival: FeatureCollection = {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTrek.geometry.coordinates[0] },\n properties: null,\n },\n {\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTrek.geometry.coordinates[state.currentTrek.geometry.coordinates.length - 1] },\n properties: null,\n },\n ],\n };\n\n let index = 0;\n this.departureArrivalLayer = L.geoJSON(departureArrival, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"${index === 1 ? 'departure-marker' : 'arrival-marker'}\" class=\"${index === 1 ? 'departure-marker' : 'arrival-marker'}\"></div>`,\n className: '',\n iconSize: this.departureArrivalMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n });\n this.map.addLayer(this.departureArrivalLayer);\n\n this.handleLayersControl();\n\n this.bounds = L.latLngBounds(state.currentTrek.geometry.coordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n this.map.on('eledata_loaded', () => {\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n });\n }\n\n async getIcons(featuresCollection, property) {\n const icons = {};\n for (let index = 0; index < featuresCollection.features.length; index++) {\n if (featuresCollection.features[index].properties[property]) {\n icons[featuresCollection.features[index].properties[property]] = await this.getIcon(featuresCollection.features[index].properties[property]);\n }\n }\n return icons;\n }\n\n async getIcon(pictogram) {\n let icon;\n if (!Capacitor.isNativePlatform()) {\n const dataInStore = await checkFileInStore(pictogram);\n icon = dataInStore ? window.URL.createObjectURL((await getFileInStore(pictogram)).data) : pictogram ? pictogram : null;\n } else {\n const image = await Filesystem.getUri({\n path: pictogram,\n directory: Directory.Data,\n });\n if (image) {\n icon = Capacitor.convertFileSrc(image.uri);\n }\n }\n\n return icon;\n }\n\n async addSelectedCurrentTrek(id, customCoordinates?) {\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n const trek = state.currentTreks.find(trek => trek.id === id);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedCurrentTrek();\n state.selectedTrekId = id;\n\n const treksIcons = await this.getIcons(treksFeatureCollection, 'practice');\n this.selectedCurrentTrekLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: treksIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"selected-trek-marker\" class=\"selected-trek-marker\"><div part=\"trek-marker-container\" class=\"trek-marker-container\"><img part=\"trek-marker\" class=\"trek-marker\" src=${\n treksIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"selected-trek-marker\" class=\"selected-trek-marker\"><div part=\"trek-marker-container\" class=\"trek-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = imgSrc;\n /* @ts-ignore */\n trekImg.part = 'trek-image';\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.trekPopupIsOpen) {\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n layer.on('popupopen', () => {\n this.trekPopupIsOpen = Boolean(state.selectedTrekId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentTrek() {\n state.selectedTrekId = null;\n this.selectedCurrentTrekLayer && this.map.removeLayer(this.selectedCurrentTrekLayer);\n this.selectedCurrentTrekLayer = null;\n }\n\n addSelectedCurrentStep(id, customCoordinates?) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n const stepIndex = state.currentTrekSteps.findIndex(trek => trek.id === id);\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : state.currentTrekSteps[stepIndex].departure_geom },\n properties: {\n id: state.currentTrekSteps[stepIndex].id,\n name: state.currentTrekSteps[stepIndex].name,\n practice: state.practices.find(practice => practice.id === state.currentTrekSteps[stepIndex].practice)?.pictogram,\n imgSrc:\n state.currentTrekSteps[stepIndex].attachments && state.currentTrekSteps[stepIndex].attachments.filter(attachment => attachment.type === 'image').length > 0\n ? state.currentTrekSteps[stepIndex].attachments[0].thumbnail !== ''\n ? state.currentTrekSteps[stepIndex].attachments[0].thumbnail\n : state.currentTrekSteps[stepIndex].attachments[0].url\n : null,\n index: stepIndex + 1,\n },\n });\n }\n\n this.removeSelectedCurrentStep();\n state.selectedStepId = id;\n\n this.selectedCurrentStepLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div part=\"selected-step-marker\" class=\"selected-step-marker\" ><div part=\"step-marker-container\" class=\"step-marker-container\"><div part=\"step-number\" class=\"step-number\">${geoJsonPoint.properties.index}</div></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n /* @ts-ignore */\n trekImg.part = 'trek-image';\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-name';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.stepPopupIsOpen) {\n state.selectedTrekId = null;\n this.removeSelectedCurrentStep();\n }\n });\n layer.on('popupopen', () => {\n this.stepPopupIsOpen = Boolean(state.selectedStepId);\n });\n layer.on('popupclose', () => {\n if (state.selectedStepId) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.removeSelectedCurrentStep();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentStep() {\n if (state.selectedStepId) {\n state.selectedStepId = null;\n this.selectedCurrentStepLayer && this.map.removeLayer(this.selectedCurrentStepLayer);\n this.selectedCurrentStepLayer = null;\n }\n }\n\n handleLayersControlEvent() {\n if (this.layersControl) {\n const userLayersState: HTMLInputElement[] = (this.layersControl as any)._layerControlInputs;\n userLayersState.forEach((userLayerState: any) => {\n if ((this.layersControl as any)._layers.find(layer => layer.layer._leaflet_id === userLayerState.layerId).overlay) {\n userLayerState.onchange = event => {\n this.userLayersState[userLayerState.layerId] = (event.target as any).checked;\n };\n }\n });\n }\n }\n\n removeTrek() {\n this.handleLayersOnRemove();\n }\n\n async showTrekLine(id) {\n this.removeSelectedCurrentTrek();\n const trekLine = await getTrekGeometry(id);\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: trekLine.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: this.colorTrekLine,\n }),\n interactive: false,\n }).addTo(this.map);\n }\n\n hideTrekLine() {\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n }\n\n async addTouristicContent() {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContent) {\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicContent.geometry.coordinates },\n properties: {\n id: state.currentTouristicContent.id,\n name: state.currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === state.currentTouristicContent.category).pictogram,\n },\n });\n }\n\n if (!this.currentToutisticContentLayer) {\n const toutisticContentIcons = await this.getIcons(touristicContentsFeatureCollection, 'practice');\n this.currentToutisticContentLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\" ><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" class=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\" ><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticContentLayer);\n }\n\n this.map.setView([state.currentTouristicContent.geometry.coordinates[1], state.currentTouristicContent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicContent() {\n if (this.currentToutisticContentLayer) {\n this.map.removeLayer(this.currentToutisticContentLayer);\n this.currentToutisticContentLayer = null;\n }\n }\n\n async addTouristicContents(resetBounds = false) {\n state.touristicContentsWithinBounds = state.currentTouristicContents;\n\n const touristicContentsCurrentCoordinates = [];\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContents) {\n for (const currentTouristicContent of state.currentTouristicContents) {\n touristicContentsCurrentCoordinates.push(currentTouristicContent.geometry.coordinates);\n\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicContent.geometry.coordinates },\n properties: {\n id: currentTouristicContent.id,\n name: currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === currentTouristicContent.category).pictogram,\n imgSrc:\n currentTouristicContent.attachments && currentTouristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentTouristicContent.attachments[0].thumbnail !== ''\n ? currentTouristicContent.attachments[0].thumbnail\n : currentTouristicContent.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.toutisticContentsLayer) {\n if ((touristicContentsCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const toutisticContentIcons = await this.getIcons(touristicContentsFeatureCollection, 'practice');\n this.toutisticContentsLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" class=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentCoordinatesPopup.part = 'touristic-content-coordinates-popup';\n touristicContentCoordinatesPopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicContentImg.part = 'touristic-content-coordinates-image';\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentCoordinatesPopup.appendChild(touristicContentImg);\n }\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentCoordinatesPopup.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentCoordinatesPopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicContentButton.part = 'touristic-content-button';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentCoordinatesPopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicContent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicContentsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"touristic-content-marker-cluster-group-icon\" class=\"touristic-content-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n this.map.addLayer(this.touristicContentsMarkerClusterGroup);\n } else {\n if (touristicContentsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.toutisticContentsLayer.clearLayers();\n this.toutisticContentsLayer.addData(touristicContentsFeatureCollection);\n this.touristicContentsMarkerClusterGroup.clearLayers();\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n\n removeTouristicContents() {\n if (this.toutisticContentsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicContentsMarkerClusterGroup);\n this.toutisticContentsLayer = null;\n this.touristicContentsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n }\n\n async addTouristicEvent() {\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvent) {\n const touristicEventType = state.touristicEventTypes.find(touristicEventType => touristicEventType.id === state.currentTouristicEvent.type);\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicEvent.geometry.coordinates },\n properties: {\n id: state.currentTouristicEvent.id,\n name: state.currentTouristicEvent.name,\n type: touristicEventType ? touristicEventType.pictogram : null,\n },\n });\n }\n\n if (!this.currentToutisticEventLayer) {\n const toutisticEventsIcons = await this.getIcons(touristicEventsFeatureCollection, 'type');\n this.currentToutisticEventLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticEventsIcons[geoJsonPoint.properties.type]\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n toutisticEventsIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticEventLayer);\n }\n\n this.map.setView([state.currentTouristicEvent.geometry.coordinates[1], state.currentTouristicEvent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicEvent() {\n if (this.currentToutisticEventLayer) {\n this.map.removeLayer(this.currentToutisticEventLayer);\n this.currentToutisticEventLayer = null;\n }\n }\n\n async addSelectedTouristicContent(id, customCoordinates?) {\n const touristicContentFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicContents) {\n const touristicContent = state.touristicContents.find(touristicContent => touristicContent.id === id);\n touristicContentFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicContent.geometry.coordinates },\n properties: {\n id: touristicContent.id,\n name: touristicContent.name,\n category: state.touristicContentCategories.find(practice => practice.id === touristicContent.category)?.pictogram,\n imgSrc:\n touristicContent.attachments && touristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? touristicContent.attachments[0].thumbnail !== ''\n ? touristicContent.attachments[0].thumbnail\n : touristicContent.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedTouristicContent();\n state.selectedTouristicContentId = id;\n\n const toutisticContentIcons = await this.getIcons(touristicContentFeatureCollection, 'category');\n this.selectedTouristicContentLayer = L.geoJSON(touristicContentFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.category]\n ? `<div part=\"selected-touristic-content-marker\" class=\"selected-touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.category]\n } /></div></div>`\n : `<div part=\"selected-touristic-content-marker\" class=\"selected-touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentDeparturePopup.part = 'touristic-content-coordinates-popup';\n touristicContentDeparturePopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicContentImg.part = 'touristic-content-coordinates-image';\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentDeparturePopup.appendChild(touristicContentImg);\n }\n\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentName.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentDeparturePopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicContentButton.part = 'touristic-content-button';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentDeparturePopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicContentPopupIsOpen) {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicContentPopupIsOpen = Boolean(state.selectedTouristicContentId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicContentId) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicContent() {\n state.selectedTouristicContentId = null;\n this.selectedTouristicContentLayer && this.map.removeLayer(this.selectedTouristicContentLayer);\n this.selectedTouristicContentLayer = null;\n }\n\n async addTouristicEvents(resetBounds = false) {\n state.touristicEventsWithinBounds = state.currentTouristicEvents;\n\n const touristicEventsCurrentCoordinates = [];\n\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvents) {\n for (const currentTouristicEvent of state.currentTouristicEvents) {\n touristicEventsCurrentCoordinates.push(currentTouristicEvent.geometry.coordinates);\n\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicEvent.geometry.coordinates },\n properties: {\n id: currentTouristicEvent.id,\n name: currentTouristicEvent.name,\n type: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === currentTouristicEvent.type)?.pictogram,\n imgSrc:\n currentTouristicEvent.attachments && currentTouristicEvent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentTouristicEvent.attachments[0].thumbnail !== ''\n ? currentTouristicEvent.attachments[0].thumbnail\n : currentTouristicEvent.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.touristicEventsLayer) {\n if ((touristicEventsCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(touristicEventsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const touristicEventsIcons = await this.getIcons(touristicEventsFeatureCollection, 'type');\n this.touristicEventsLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: touristicEventsIcons[geoJsonPoint.properties.type]\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n touristicEventsIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicEventCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventCoordinatesPopup.part = 'touristic-event-coordinates-popup';\n touristicEventCoordinatesPopup.className = 'touristic-event-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicEventImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicEventImg.part = 'touristic-event-coordinates-image';\n touristicEventImg.src = geoJsonPoint.properties.imgSrc;\n touristicEventCoordinatesPopup.appendChild(touristicEventImg);\n }\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.className = 'touristic-event-name';\n touristicEventCoordinatesPopup.appendChild(touristicEventName);\n\n const touristicEventButton = L.DomUtil.create('button');\n touristicEventButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicEventButton.part = 'touristic-event-button';\n touristicEventButton.className = 'touristic-event-button';\n touristicEventButton.onclick = () => this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n touristicEventCoordinatesPopup.appendChild(touristicEventButton);\n\n layer.bindPopup(touristicEventCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicEvent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicEventsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"touristic-event-marker-cluster-group-icon\" class=\"touristic-event-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.touristicEventsMarkerClusterGroup.addLayer(this.touristicEventsLayer);\n this.map.addLayer(this.touristicEventsMarkerClusterGroup);\n } else {\n if (touristicEventsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicEventsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.touristicEventsLayer.clearLayers();\n this.touristicEventsLayer.addData(touristicEventsFeatureCollection);\n this.touristicEventsMarkerClusterGroup.clearLayers();\n this.touristicEventsMarkerClusterGroup.addLayer(this.touristicEventsLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicEventsWithinBoundsBind);\n }\n\n removeTouristicEvents() {\n if (this.touristicEventsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicEventsMarkerClusterGroup);\n this.touristicEventsLayer = null;\n this.touristicEventsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicEventsWithinBoundsBind);\n }\n }\n\n async addOutdoorSites(resetBounds = false) {\n state.outdoorSitesWithinBounds = state.currentOutdoorSites;\n\n const outdoorSitesCurrentCoordinates = [];\n\n const outdoorSitesFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSites) {\n for (const currentOutdoorSite of state.currentOutdoorSites) {\n outdoorSitesFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(currentOutdoorSite.geometry as any).geometry.coordinates },\n properties: {\n id: currentOutdoorSite.id,\n name: currentOutdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === currentOutdoorSite.practice)?.pictogram,\n imgSrc:\n currentOutdoorSite.attachments && currentOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentOutdoorSite.attachments[0].thumbnail !== ''\n ? currentOutdoorSite.attachments[0].thumbnail\n : currentOutdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.outdoorSitesLayer) {\n if ((outdoorSitesCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n const outdoorSitesBbox = bbox(outdoorSitesFeatureCollection);\n this.bounds = L.latLngBounds([outdoorSitesBbox[1], outdoorSitesBbox[0]], [outdoorSitesBbox[3], outdoorSitesBbox[2]]);\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const outdoorSitesIcons = await this.getIcons(outdoorSitesFeatureCollection, 'practice');\n this.outdoorSitesLayer = L.geoJSON(outdoorSitesFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorSiteCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorSiteCoordinatesPopup.part = 'outdoor-site-coordinates-popup';\n outdoorSiteCoordinatesPopup.className = 'outdoor-site-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorSiteImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorSiteImg.part = 'outdoor-site-coordinates-image';\n outdoorSiteImg.src = geoJsonPoint.properties.imgSrc;\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteImg);\n }\n const outdoorSiteName = L.DomUtil.create('div');\n outdoorSiteName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorSiteName.part = 'outdoor-site-name';\n outdoorSiteName.className = 'outdoor-site-name';\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteName);\n\n const outdoorSiteButton = L.DomUtil.create('button');\n outdoorSiteButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorSiteButton.part = 'outdoor-site-button';\n outdoorSiteButton.className = 'outdoor-site-button';\n outdoorSiteButton.onclick = () => this.outdoorSiteCardPress.emit(geoJsonPoint.properties.id);\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteButton);\n\n layer.bindPopup(outdoorSiteCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedOutdoorSite(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.outdoorSitesMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"outdoor-site-marker-cluster-group-icon\" class=\"outdoor-site-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.outdoorSitesMarkerClusterGroup.addLayer(this.outdoorSitesLayer);\n this.map.addLayer(this.outdoorSitesMarkerClusterGroup);\n } else {\n if (outdoorSitesCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(outdoorSitesCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.outdoorSitesLayer.clearLayers();\n this.outdoorSitesLayer.addData(outdoorSitesFeatureCollection);\n this.outdoorSitesMarkerClusterGroup.clearLayers();\n this.outdoorSitesMarkerClusterGroup.addLayer(this.outdoorSitesLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleOutdoorSitesWithinBoundsBind);\n }\n\n removeOutdoorSites() {\n if (this.outdoorSitesLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.outdoorSitesMarkerClusterGroup);\n this.outdoorSitesLayer = null;\n this.outdoorSitesMarkerClusterGroup = null;\n this.map.off('moveend', this.handleOutdoorSitesWithinBoundsBind);\n }\n }\n\n async addOutdoorSite() {\n const OutdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSite) {\n const outdoorSitePractice = state.outdoorPractices.find(outdoorPractice => outdoorPractice.id === state.currentOutdoorSite.practice);\n OutdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: state.currentOutdoorSite.geometry,\n properties: {\n id: state.currentOutdoorSite.id,\n name: state.currentOutdoorSite.name,\n practice: outdoorSitePractice ? outdoorSitePractice.pictogram : null,\n },\n });\n }\n\n if (!this.currentOutdoorSiteLayer) {\n const outdoorSitesIcons = await this.getIcons(OutdoorSiteFeatureCollection, 'practice');\n\n this.currentOutdoorSiteLayer = L.geoJSON(OutdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n\n this.map.addLayer(this.currentOutdoorSiteLayer);\n }\n\n await this.addCurrentInformationDesks(state.currentOutdoorSite);\n\n await this.addCurrentPois();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n await this.addCurrentRelatedOutdoorSites();\n\n await this.addCurrentRelatedOutdoorCourses();\n\n this.handleLayersControl();\n\n this.map.invalidateSize();\n this.map.fitBounds(this.currentOutdoorSiteLayer.getBounds(), { maxZoom: this.maxZoom });\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n async addCurrentRelatedOutdoorSites() {\n const currentRelatedOutdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentRelatedOutdoorSites) {\n for (const currentRelatedOutdoorSite of state.currentRelatedOutdoorSites) {\n currentRelatedOutdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: currentRelatedOutdoorSite.geometry,\n properties: {\n id: currentRelatedOutdoorSite.id,\n name: currentRelatedOutdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === currentRelatedOutdoorSite.practice)?.pictogram,\n imgSrc:\n currentRelatedOutdoorSite.attachments && currentRelatedOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentRelatedOutdoorSite.attachments[0].thumbnail !== ''\n ? currentRelatedOutdoorSite.attachments[0].thumbnail\n : currentRelatedOutdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.currentRelatedOutdoorSitesLayer && currentRelatedOutdoorSiteFeatureCollection.features.length > 0) {\n const outdoorSitesIcons = await this.getIcons(currentRelatedOutdoorSiteFeatureCollection, 'practice');\n\n this.currentRelatedOutdoorSitesLayer = L.geoJSON(currentRelatedOutdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n }\n }\n\n async addCurrentRelatedOutdoorCourses() {\n const currentRelatedOutdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentRelatedOutdoorCourses) {\n for (const currentRelatedOutdoorCourse of state.currentRelatedOutdoorCourses) {\n currentRelatedOutdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: currentRelatedOutdoorCourse.geometry,\n properties: {\n id: currentRelatedOutdoorCourse.id,\n name: currentRelatedOutdoorCourse.name,\n type: state.outdoorCourseTypes.find(type => type.id === currentRelatedOutdoorCourse.type)?.pictogram,\n imgSrc:\n currentRelatedOutdoorCourse.attachments && currentRelatedOutdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentRelatedOutdoorCourse.attachments[0].thumbnail !== ''\n ? currentRelatedOutdoorCourse.attachments[0].thumbnail\n : currentRelatedOutdoorCourse.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.currentRelatedOutdoorCoursesLayer && currentRelatedOutdoorCourseFeatureCollection.features.length > 0) {\n const outdoorCoursesIcons = await this.getIcons(currentRelatedOutdoorCourseFeatureCollection, 'type');\n\n this.currentRelatedOutdoorCoursesLayer = L.geoJSON(currentRelatedOutdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-courses-marker\" class=\"outdoor-courses-marker\"><div part=\"outdoor-courses-marker-container\" class=\"outdoor-courses-marker-container\"><img part=\"outdoor-courses-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-courses-marker\" class=\"outdoor-courses-marker\"><div part=\"outdoor-courses-marker-container\" class=\"outdoor-courses-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n }\n }\n\n removeOutdoorSite() {\n this.handleLayersOnRemove();\n }\n\n async addSelectedTouristicEvent(id, customCoordinates?) {\n const touristicEventFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicEvents) {\n const touristicEvent = state.touristicEvents.find(touristicEvent => touristicEvent.id === id);\n\n touristicEventFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicEvent.geometry.coordinates },\n properties: {\n id: touristicEvent.id,\n name: touristicEvent.name,\n category: state.touristicEventTypes.find(type => type.id === touristicEvent.type)?.pictogram,\n imgSrc:\n touristicEvent.attachments && touristicEvent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? touristicEvent.attachments[0].thumbnail !== ''\n ? touristicEvent.attachments[0].thumbnail\n : touristicEvent.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedTouristicEvent();\n state.selectedTouristicEventId = id;\n\n const touristicEventsIcons = await this.getIcons(touristicEventFeatureCollection, 'category');\n this.selectedTouristicEventLayer = L.geoJSON(touristicEventFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: touristicEventsIcons[geoJsonPoint.properties.category]\n ? `<div part=\"selected-touristic-event-marker\" class=\"selected-touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n touristicEventsIcons[geoJsonPoint.properties.category]\n } /></div></div>`\n : `<div part=\"selected-touristic-event-marker\" class=\"selected-touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicEventDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventDeparturePopup.part = 'touristic-event-coordinates-popup';\n touristicEventDeparturePopup.className = 'touristic-event-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicEventImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicEventImg.part = 'touristic-event-coordinates-image';\n touristicEventImg.src = geoJsonPoint.properties.imgSrc;\n touristicEventDeparturePopup.appendChild(touristicEventImg);\n }\n\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.className = 'touristic-event-name';\n touristicEventDeparturePopup.appendChild(touristicEventName);\n\n const touristicEventButton = L.DomUtil.create('button');\n touristicEventButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicEventButton.part = 'touristic-event-button';\n touristicEventButton.className = 'touristic-event-button';\n touristicEventButton.onclick = () => this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n touristicEventDeparturePopup.appendChild(touristicEventButton);\n\n layer.bindPopup(touristicEventDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicEventPopupIsOpen) {\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicEventPopupIsOpen = Boolean(state.selectedTouristicEventId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicEventId) {\n this.touristicEventPopupIsOpen = false;\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicEvent() {\n state.selectedTouristicEventId = null;\n this.selectedTouristicEventLayer && this.map.removeLayer(this.selectedTouristicEventLayer);\n this.selectedTouristicEventLayer = null;\n }\n\n async addOutdoorCourse() {\n const OutdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorCourse) {\n const outdoorCourseType = state.outdoorCourseTypes.find(outdoorCourseType => outdoorCourseType.id === state.currentOutdoorCourse.type);\n OutdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: state.currentOutdoorCourse.geometry,\n properties: {\n id: state.currentOutdoorCourse.id,\n name: state.currentOutdoorCourse.name,\n type: outdoorCourseType ? outdoorCourseType.pictogram : null,\n },\n });\n }\n\n if (!this.currentOutdoorCourseLayer) {\n const outdoorCoursesIcons = await this.getIcons(OutdoorCourseFeatureCollection, 'type');\n this.currentOutdoorCourseLayer = L.geoJSON(OutdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-course-marker\" class=\"outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"><img part=\"outdoor-course-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-course-marker\" class=\"outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n\n this.map.addLayer(this.currentOutdoorCourseLayer);\n }\n\n await this.addCurrentPois();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n this.handleLayersControl();\n\n this.map.fitBounds(this.currentOutdoorCourseLayer.getBounds());\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeOutdoorCourse() {\n this.handleLayersOnRemove();\n }\n\n async addSelectedOutdoorSite(id, _customCoordinates?) {\n const outdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSites) {\n const outdoorSite = state.currentOutdoorSites.find(currentOutdoorSite => currentOutdoorSite.id === id);\n if (outdoorSite && outdoorSite.geometry) {\n outdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(outdoorSite.geometry as any).geometry.coordinates },\n properties: {\n id: outdoorSite.id,\n name: outdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === outdoorSite.practice)?.pictogram,\n imgSrc:\n outdoorSite.attachments && outdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? outdoorSite.attachments[0].thumbnail !== ''\n ? outdoorSite.attachments[0].thumbnail\n : outdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n this.removeSelectedOutdoorSite();\n state.selectedOutdoorSiteId = id;\n\n const outdoorSitesIcons = await this.getIcons(outdoorSiteFeatureCollection, 'practice');\n this.selectedOutdoorSiteLayer = L.geoJSON(outdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"selected-outdoor-site-marker\" class=\"selected-outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"selected-outdoor-site-marker\" class=\"selected-outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorSiteDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorSiteDeparturePopup.part = 'outdoor-site-coordinates-popup';\n outdoorSiteDeparturePopup.className = 'outdoor-site-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorSiteImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorSiteImg.part = 'outdoor-site-coordinates-image';\n outdoorSiteImg.src = geoJsonPoint.properties.imgSrc;\n outdoorSiteDeparturePopup.appendChild(outdoorSiteImg);\n }\n\n const outdoorSiteName = L.DomUtil.create('div');\n outdoorSiteName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorSiteName.part = 'outdoor-site-name';\n outdoorSiteName.className = 'outdoor-site-name';\n outdoorSiteDeparturePopup.appendChild(outdoorSiteName);\n\n const outdoorSiteButton = L.DomUtil.create('button');\n outdoorSiteButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorSiteButton.part = 'outdoor-site-button';\n outdoorSiteButton.className = 'outdoor-site-button';\n outdoorSiteButton.onclick = () => this.outdoorSiteCardPress.emit(geoJsonPoint.properties.id);\n outdoorSiteDeparturePopup.appendChild(outdoorSiteButton);\n\n layer.bindPopup(outdoorSiteDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.outdoorSitePopupIsOpen) {\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n });\n layer.on('popupopen', () => {\n this.outdoorSitePopupIsOpen = Boolean(state.selectedOutdoorSiteId);\n });\n layer.on('popupclose', () => {\n if (state.selectedOutdoorSiteId) {\n this.outdoorSitePopupIsOpen = false;\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n });\n },\n style: { color: this.colorOutdoorArea, interactive: false },\n }).addTo(this.map);\n }\n\n removeSelectedOutdoorSite() {\n state.selectedOutdoorSiteId = null;\n this.selectedOutdoorSiteLayer && this.map.removeLayer(this.selectedOutdoorSiteLayer);\n this.selectedOutdoorSiteLayer = null;\n }\n\n async addSelectedOutdoorCourse(id, _customCoordinates?) {\n const outdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorCourse) {\n const outdoorCourse = state.currentOutdoorCourse;\n outdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(outdoorCourse.geometry as any).geometry.coordinates },\n properties: {\n id: outdoorCourse.id,\n name: outdoorCourse.name,\n type: state.outdoorCourseTypes.find(type => type.id === outdoorCourse.type)?.pictogram,\n imgSrc:\n outdoorCourse.attachments && outdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? outdoorCourse.attachments[0].thumbnail !== ''\n ? outdoorCourse.attachments[0].thumbnail\n : outdoorCourse.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedOutdoorCourse();\n state.selectedOutdoorCourseId = id;\n\n const outdoorCoursesIcons = await this.getIcons(outdoorCourseFeatureCollection, 'type');\n this.selectedOutdoorCourseLayer = L.geoJSON(outdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.type]\n ? `<div part=\"selected-outdoor-course-marker\" class=\"selected-outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"><img part=\"outdoor-course-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"selected-outdoor-course-marker\" class=\"selected-outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorCourseDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorCourseDeparturePopup.part = 'outdoor-course-coordinates-popup';\n outdoorCourseDeparturePopup.className = 'outdoor-course-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorCourseImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorCourseImg.part = 'outdoor-course-coordinates-image';\n outdoorCourseImg.src = geoJsonPoint.properties.imgSrc;\n outdoorCourseDeparturePopup.appendChild(outdoorCourseImg);\n }\n\n const outdoorCourseName = L.DomUtil.create('div');\n outdoorCourseName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorCourseName.part = 'outdoor-course-name';\n outdoorCourseName.className = 'outdoor-course-name';\n outdoorCourseDeparturePopup.appendChild(outdoorCourseName);\n\n const outdoorCourseButton = L.DomUtil.create('button');\n outdoorCourseButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorCourseButton.part = 'outdoor-course-button';\n outdoorCourseButton.className = 'outdoor-course-button';\n outdoorCourseButton.onclick = () => this.outdoorCourseCardPress.emit(geoJsonPoint.properties.id);\n outdoorCourseDeparturePopup.appendChild(outdoorCourseButton);\n\n layer.bindPopup(outdoorCourseDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.outdoorCoursePopupIsOpen) {\n state.selectedOutdoorCourseId = null;\n this.removeSelectedOutdoorCourse();\n }\n });\n layer.on('popupopen', () => {\n this.outdoorCoursePopupIsOpen = Boolean(state.selectedOutdoorCourseId);\n });\n layer.on('popupclose', () => {\n if (state.selectedOutdoorCourseId) {\n this.outdoorCoursePopupIsOpen = false;\n state.selectedOutdoorCourseId = null;\n this.removeSelectedOutdoorCourse();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedOutdoorCourse() {\n state.selectedOutdoorCourseId = null;\n this.selectedOutdoorCourseLayer && this.map.removeLayer(this.selectedOutdoorCourseLayer);\n this.selectedOutdoorCourseLayer = null;\n }\n\n async addCurrentPois() {\n if (state.currentPois && state.currentPois.length > 0) {\n const currentPoisFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentPoi of state.currentPois) {\n currentPoisFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentPoi.name, type_pictogram: state.poiTypes.find(poiType => poiType.id === currentPoi.type)?.pictogram },\n geometry: currentPoi.geometry,\n });\n }\n\n const poiIcons = await this.getIcons(currentPoisFeatureCollection, 'type_pictogram');\n\n this.currentPoisLayer = L.geoJSON(currentPoisFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: poiIcons[geoJsonPoint.properties.type_pictogram]\n ? `<div part=\"poi-marker\" class=\"poi-marker\"><img src=${poiIcons[geoJsonPoint.properties.type_pictogram]} /></div>`\n : `<div part=\"poi-marker\" class=\"poi-marker\"><img /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const poiTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n poiTooltip.part = 'poi-tooltip';\n poiTooltip.className = 'poi-tooltip';\n const poiName = L.DomUtil.create('div');\n poiName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n poiName.part = 'poi-name';\n poiName.className = 'poi-name';\n poiTooltip.appendChild(poiName);\n layer.bindTooltip(poiTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentSignages() {\n if (state.currentSignages && state.currentSignages.length > 0) {\n const signageImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/signage.svg`);\n const currentSignagesFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentSignage of state.currentSignages) {\n currentSignagesFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentSignage.name },\n geometry: currentSignage.geometry,\n });\n }\n\n this.currentSignagesLayer = L.geoJSON(currentSignagesFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"signage-marker\" class=\"signage-marker\"><img src=${signageImageSrc} /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const signageTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n signageTooltip.part = 'signage-tooltip';\n signageTooltip.className = 'signage-tooltip';\n const signageName = L.DomUtil.create('div');\n signageName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n signageName.part = 'signage-name';\n signageName.className = 'signage-name';\n signageTooltip.appendChild(signageName);\n layer.bindTooltip(signageTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentTouristicContents() {\n if (state.trekTouristicContents && state.trekTouristicContents.length > 0) {\n const currentTouristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicContent of state.trekTouristicContents) {\n currentTouristicContentsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n id: touristicContent.id,\n name: touristicContent.name,\n category_pictogram: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === touristicContent.category)?.pictogram,\n },\n geometry: touristicContent.geometry,\n });\n }\n\n const toutisticContentsIcons = await this.getIcons(currentTouristicContentsFeatureCollection, 'category_pictogram');\n\n this.currentToutisticContentsLayer = L.geoJSON(currentTouristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentsIcons[geoJsonPoint.properties.category_pictogram]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><img src=${toutisticContentsIcons[geoJsonPoint.properties.category_pictogram]} /></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><img /></div>`,\n className: this.grwApp ? '' : 'cursor-pointer',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.on('click', () => {\n if (!this.grwApp) {\n this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n }\n });\n layer.on('mouseover', () => {\n const touristicContentTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentTooltip.part = 'touristic-content-tooltip';\n touristicContentTooltip.className = 'touristic-content-tooltip';\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentName.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentTooltip.appendChild(touristicContentName);\n layer.bindTooltip(touristicContentTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentTouristicEvents() {\n if (state.trekTouristicEvents && state.trekTouristicEvents.length > 0) {\n const currentTouristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicEvent of state.trekTouristicEvents) {\n currentTouristicEventsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n id: touristicEvent.id,\n name: touristicEvent.name,\n type_pictogram: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === touristicEvent.type)?.pictogram,\n },\n geometry: touristicEvent.geometry,\n });\n }\n\n const toutisticEventsIcons = await this.getIcons(currentTouristicEventsFeatureCollection, 'type_pictogram');\n this.currentTouristicEventsLayer = L.geoJSON(currentTouristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticEventsIcons[geoJsonPoint.properties.type_pictogram]\n ? `\n <div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><img src=${toutisticEventsIcons[geoJsonPoint.properties.type_pictogram]} /></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><img /></div>`,\n className: this.grwApp ? '' : 'cursor-pointer',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.on('click', () => {\n if (!this.grwApp) {\n this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n }\n });\n layer.once('mouseover', () => {\n const touristicEventTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventTooltip.part = 'touristic-event-tooltip';\n touristicEventTooltip.className = 'touristic-event-tooltip';\n const touristicEventName = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n touristicEventName.className = 'touristic-event-name';\n touristicEventTooltip.appendChild(touristicEventName);\n layer.bindTooltip(touristicEventTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentInformationDesks(currentData) {\n if (state.currentInformationDesks && state.currentInformationDesks.length > 0) {\n const currentInformationDesksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentInformationDesk of state.currentInformationDesks.filter(currentInformationDesks => currentData.information_desks.includes(currentInformationDesks.id))) {\n if (currentInformationDesk.latitude && currentInformationDesk.longitude) {\n currentInformationDesksFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentInformationDesk.name, type_pictogram: currentInformationDesk.type.pictogram },\n geometry: { type: 'Point', coordinates: [Number(currentInformationDesk.longitude), Number(currentInformationDesk.latitude)] },\n });\n }\n }\n\n if (currentInformationDesksFeatureCollection.features.length > 0) {\n const informationDesksIcons = await this.getIcons(currentInformationDesksFeatureCollection, 'type_pictogram');\n this.currentInformationDesksLayer = L.geoJSON(currentInformationDesksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: informationDesksIcons[geoJsonPoint.properties.type_pictogram]\n ? `<div part=\"information-desks-marker\" class=\"information-desks-marker\"><img src=${informationDesksIcons[geoJsonPoint.properties.type_pictogram]} /></div>`\n : `<div part=\"information-desks-marker\" class=\"information-desks-marker\"><img /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const informationDesksTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n informationDesksTooltip.part = 'information-desks-tooltip';\n informationDesksTooltip.className = 'information-desks-tooltip';\n const informationDesksName = L.DomUtil.create('div');\n /* @ts-ignore */\n informationDesksName.part = 'information-desks-name';\n informationDesksName.innerHTML = geoJsonPoint.properties.name;\n informationDesksName.className = 'information-desks-name';\n informationDesksTooltip.appendChild(informationDesksName);\n layer.bindTooltip(informationDesksTooltip).openTooltip();\n });\n },\n });\n }\n }\n }\n\n handleLayersControl() {\n const overlays = {};\n if (this.currentStepsLayer) {\n overlays[translate[state.language].layers.steps] = this.currentStepsLayer;\n }\n if (this.currentReferencePointsLayer) {\n overlays[translate[state.language].layers.referencePoints] = this.currentReferencePointsLayer;\n }\n if (this.currentParkingLayer) {\n overlays[translate[state.language].layers.parking] = this.currentParkingLayer;\n }\n if (this.currentSensitiveAreasLayer) {\n overlays[translate[state.language].layers.sensitiveArea] = this.currentSensitiveAreasLayer;\n }\n if (this.currentInformationDesksLayer) {\n overlays[translate[state.language].layers.informationPlaces] = this.currentInformationDesksLayer;\n }\n if (this.currentPoisLayer) {\n overlays[translate[state.language].layers.pois] = this.currentPoisLayer;\n }\n if (this.currentSignagesLayer) {\n overlays[translate[state.language].layers.signages] = this.currentSignagesLayer;\n this.currentSignagesLayer.addTo(this.map);\n }\n if (this.currentToutisticContentsLayer) {\n overlays[translate[state.language].layers.touristicContents] = this.currentToutisticContentsLayer;\n }\n if (this.currentTouristicEventsLayer) {\n overlays[translate[state.language].layers.touristicEvents] = this.currentTouristicEventsLayer;\n }\n\n if (this.currentRelatedOutdoorSitesLayer) {\n overlays[translate[state.language].layers.sites] = this.currentRelatedOutdoorSitesLayer;\n }\n\n if (this.currentRelatedOutdoorCoursesLayer) {\n overlays[translate[state.language].layers.courses] = this.currentRelatedOutdoorCoursesLayer;\n }\n\n if (this.layersControl) {\n Object.keys(overlays).forEach(key => {\n this.layersControl.addOverlay(overlays[key], key);\n });\n } else if (Object.keys(overlays).length > 0) {\n this.layersControl = L.control.layers({}, overlays, { collapsed: true }).addTo(this.map);\n }\n\n this.handleLayersControlEvent();\n }\n\n handleLayersOnRemove() {\n if (this.layersControl) {\n if (!(this.layersControl as any)._layers.some(layer => !layer.overlay)) {\n this.map.removeControl(this.layersControl);\n this.layersControl = null;\n } else {\n (this.layersControl as any)._layers\n .filter(layer => layer.overlay)\n .forEach(layer => {\n this.layersControl.removeLayer(layer.layer);\n });\n }\n }\n\n if (this.elevationControl) {\n (this.elevationControl as any).clear();\n this.map.removeControl(this.elevationControl);\n this.elevationControl = null;\n }\n\n if (this.departureArrivalLayer) {\n this.map.removeLayer(this.departureArrivalLayer);\n this.departureArrivalLayer = null;\n }\n\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n\n if (this.currentParkingLayer) {\n this.map.removeLayer(this.currentParkingLayer);\n this.currentParkingLayer = null;\n }\n\n if (this.currentSensitiveAreasLayer) {\n this.map.removeLayer(this.currentSensitiveAreasLayer);\n this.currentSensitiveAreasLayer = null;\n }\n\n if (this.currentPoisLayer) {\n this.map.removeLayer(this.currentPoisLayer);\n this.currentPoisLayer = null;\n }\n\n if (this.currentSignagesLayer) {\n this.map.removeLayer(this.currentSignagesLayer);\n this.currentSignagesLayer = null;\n }\n\n if (this.currentInformationDesksLayer) {\n this.map.removeLayer(this.currentInformationDesksLayer);\n this.currentInformationDesksLayer = null;\n }\n\n if (this.currentReferencePointsLayer) {\n this.map.removeLayer(this.currentReferencePointsLayer);\n this.currentReferencePointsLayer = null;\n }\n\n if (this.currentStepsLayer) {\n this.map.removeLayer(this.currentStepsLayer);\n this.currentStepsLayer = null;\n }\n\n if (this.currentToutisticContentsLayer) {\n this.map.removeLayer(this.currentToutisticContentsLayer);\n this.currentToutisticContentsLayer = null;\n }\n if (this.currentTouristicEventsLayer) {\n this.map.removeLayer(this.currentTouristicEventsLayer);\n this.currentTouristicEventsLayer = null;\n }\n if (this.currentOutdoorSiteLayer) {\n this.map.removeLayer(this.currentOutdoorSiteLayer);\n this.currentOutdoorSiteLayer = null;\n }\n if (this.currentOutdoorCourseLayer) {\n this.map.removeLayer(this.currentOutdoorCourseLayer);\n this.currentOutdoorCourseLayer = null;\n }\n if (this.currentRelatedOutdoorSitesLayer) {\n this.map.removeLayer(this.currentRelatedOutdoorSitesLayer);\n this.currentRelatedOutdoorSitesLayer = null;\n }\n if (this.currentRelatedOutdoorCoursesLayer) {\n this.map.removeLayer(this.currentRelatedOutdoorCoursesLayer);\n this.currentRelatedOutdoorCoursesLayer = null;\n }\n }\n\n @Listen('resize', { target: 'window' })\n onWindowResize() {\n this.handleView();\n }\n\n handleView() {\n const elevationHeight = this.mapElement.getBoundingClientRect().width >= this.largeViewSize ? this.elevationHeight : this.mobileElevationHeight;\n if (this.elevationControl) {\n (this.elevationControl.options as any).height = elevationHeight;\n (this.elevationControl as any).redraw();\n }\n if (this.map) {\n this.map.invalidateSize();\n }\n forceUpdate(this.hostElement);\n }\n\n handleElevation() {\n (this.elevationControl as any).eleDiv.style.display = (this.elevationControl as any).eleDiv.style.display === 'block' ? 'none' : 'block';\n (this.elevationControl as any).redraw();\n forceUpdate(this.hostElement);\n }\n\n render() {\n const layersImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/layers.svg`);\n const contractImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/contract.svg`);\n\n return (\n <Host\n ref={el => (this.hostElement = el)}\n style={{\n '--font-family': this.fontFamily,\n '--color-primary-app': this.colorPrimaryApp,\n '--color-on-surface': this.colorOnSurface,\n '--color-primary-container': this.colorPrimaryContainer,\n '--color-on-primary-container': this.colorOnPrimaryContainer,\n '--color-background': this.colorBackground,\n '--color-markers': this.colorMarkers ? this.colorMarkers : this.colorPrimaryApp,\n '--color-clusters': this.colorClusters ? this.colorClusters : this.colorPrimaryApp,\n '--color-trek-line': this.colorTrekLine,\n '--layers-image-src': `url(${layersImageSrc})`,\n '--contract-image-src': `url(${contractImageSrc})`,\n '--elevation-height': (this.mapElement.getBoundingClientRect().width >= this.largeViewSize / 2 ? this.elevationHeight : this.mobileElevationHeight)\n .toString()\n .concat('px'),\n }}\n >\n <div\n id=\"map\"\n part=\"map\"\n class={\n (state.currentTouristicContent || state.currentTouristicEvent || state.currentOutdoorSite || state.currentOutdoorCourse) && this.grwApp\n ? 'common-map'\n : state.currentTrek && this.elevationControl && (this.elevationControl as any).eleDiv.style.display === 'block'\n ? 'trek-map-and-elevation'\n : state.currentTrek\n ? 'trek-map'\n : 'treks-map'\n }\n ref={el => (this.mapRef = el)}\n >\n {state.currentTrek && (\n <div class=\"grw-elevation-visibility-button-container\">\n <grw-fab\n exportparts=\"fab-visibility-button,fab-visibility-button-icon,fab-visibility-button-label\"\n font-family={this.fontFamily}\n action={() => this.handleElevation()}\n icon={() => (this.elevationControl && (this.elevationControl as any).eleDiv.style.display === 'block' ? 'show-elevation' : 'hide-elevation')}\n showTitle={translate[state.language].showElevation}\n hideTitle={translate[state.language].hideElevation}\n fab-background-color={this.fabBackgroundColor}\n fab-color={this.fabColor}\n ></grw-fab>\n </div>\n )}\n </div>\n\n {!this.mapIsReady && (\n <div part=\"map-loader-container\" class=\"map-loader-container\">\n <span part=\"loader\" class=\"loader\"></span>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"grw-map.js","sourceRoot":"","sources":["../../../src/components/grw-map/grw-map.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Event, EventEmitter, getAssetPath, Build, Listen, Element, forceUpdate } from '@stencil/core';\nimport { Feature, FeatureCollection } from 'geojson';\nimport L, { MarkerClusterGroup, TileLayer } from 'leaflet';\nimport 'leaflet-i18n';\nimport '@raruto/leaflet-elevation/dist/leaflet-elevation.min.js';\nimport 'leaflet.markercluster/dist/leaflet.markercluster.js';\nimport '../../utils/leaflet-simple-locate.min.js';\nimport state, { onChange } from 'store/store';\nimport { translate } from 'i18n/i18n';\nimport { getTrekGeometry } from 'services/treks.service';\nimport { tileLayerOffline } from 'leaflet.offline';\nimport { getDataInStore } from 'services/grw-db.service';\nimport { checkFileInStore, getFileInStore } from 'utils/utils';\nimport { Capacitor } from '@capacitor/core';\nimport { Directory, Filesystem } from '@capacitor/filesystem';\nimport { Trek } from 'components';\nimport pointOnFeature from '@turf/point-on-feature';\nimport bbox from '@turf/bbox';\n\n@Component({\n tag: 'grw-map',\n styleUrl: 'grw-map.scss',\n shadow: true,\n})\nexport class GrwMap {\n @Element() mapElement: HTMLElement;\n mapRef: HTMLElement;\n hostElement: HTMLElement;\n maxZoom = 19;\n\n @Event() trekCardPress: EventEmitter<number>;\n @Event() touristicContentCardPress: EventEmitter<number>;\n @Event() touristicEventCardPress: EventEmitter<number>;\n @Event() outdoorSiteCardPress: EventEmitter<number>;\n @Event() outdoorCourseCardPress: EventEmitter<number>;\n\n @State() mapIsReady = false;\n @Prop() nameLayer: string;\n @Prop() urlLayer: string;\n @Prop() attributionLayer: string;\n\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorPrimaryContainer = '#eaddff';\n @Prop() colorOnPrimaryContainer = '#21005e';\n @Prop() colorBackground = '#fef7ff';\n\n @Prop() colorTrekLine = '#6b0030';\n @Prop() colorSensitiveArea = '#4974a5';\n @Prop() colorMarkers = null;\n @Prop() colorClusters = null;\n @Prop() colorOutdoorArea = '#ffb700';\n\n @Prop() tilesMaxZoomOffline = 16;\n\n @Prop() grwApp = false;\n\n @Prop() mainMarkerSize = 32;\n @Prop() selectedMainMarkerSize = 48;\n @Prop() mainClusterSize = 48;\n @Prop() commonMarkerSize = 48;\n @Prop() departureArrivalMarkerSize = 14;\n @Prop() pointReferenceMarkerSize = 24;\n\n @Prop() elevationHeight = 280;\n @Prop() mobileElevationHeight = 280;\n @Prop() largeViewSize = 1024;\n @Prop() elevationDefaultState = 'visible';\n @Prop() isLargeView = false;\n @Prop() fabBackgroundColor = '#eaddff';\n @Prop() fabColor = '#21005d';\n\n map: L.Map;\n bounds;\n treksLayer: L.GeoJSON<any>;\n toutisticContentsLayer: L.GeoJSON<any>;\n touristicEventsLayer: L.GeoJSON<any>;\n\n treksMarkerClusterGroup: MarkerClusterGroup;\n touristicContentsMarkerClusterGroup: MarkerClusterGroup;\n touristicEventsMarkerClusterGroup: MarkerClusterGroup;\n outdoorSitesMarkerClusterGroup: MarkerClusterGroup;\n outdoorSitesLayer: L.GeoJSON<any>;\n currentTrekLayer: L.GeoJSON<any>;\n currentStepsLayer: L.GeoJSON<any>;\n selectedCurrentTrekLayer: L.GeoJSON<any>;\n selectedCurrentStepLayer: L.GeoJSON<any>;\n selectedTouristicContentLayer: L.GeoJSON<any>;\n selectedTouristicEventLayer: L.GeoJSON<any>;\n selectedOutdoorSiteLayer: L.GeoJSON<any>;\n selectedOutdoorCourseLayer: L.GeoJSON<any>;\n currentReferencePointsLayer: L.GeoJSON<any>;\n currentParkingLayer: L.GeoJSON<any>;\n currentSensitiveAreasLayer: L.GeoJSON<any>;\n currentPoisLayer: L.GeoJSON<any>;\n currentSignagesLayer: L.GeoJSON<any>;\n currentInformationDesksLayer: L.GeoJSON<any>;\n currentToutisticContentsLayer: L.GeoJSON<any>;\n currentTouristicEventsLayer: L.GeoJSON<any>;\n currentToutisticContentLayer: L.GeoJSON<any>;\n currentToutisticEventLayer: L.GeoJSON<any>;\n currentOutdoorSiteLayer: L.GeoJSON<any>;\n currentOutdoorCourseLayer: L.GeoJSON<any>;\n currentRelatedOutdoorSitesLayer: L.GeoJSON<any>;\n currentRelatedOutdoorCoursesLayer: L.GeoJSON<any>;\n elevationControl: L.Control.Layers;\n departureArrivalLayer: L.GeoJSON<any>;\n layersControl: L.Control.Layers;\n userLayersState: {\n [key: number]: boolean;\n } = {};\n tileLayer: { key: string; value: TileLayer }[] = [];\n trekPopupIsOpen: boolean;\n stepPopupIsOpen: boolean;\n touristicContentPopupIsOpen: boolean;\n touristicEventPopupIsOpen: boolean;\n outdoorSitePopupIsOpen: boolean;\n outdoorCoursePopupIsOpen: boolean;\n\n handleTreksWithinBoundsBind: (event: any) => void = this.handleTreksWithinBounds.bind(this);\n handleTouristicContentsWithinBoundsBind: (event: any) => void = this.handleTouristicContentsWithinBounds.bind(this);\n handleTouristicEventsWithinBoundsBind: (event: any) => void = this.handleTouristicEventsWithinBounds.bind(this);\n handleOutdoorSitesWithinBoundsBind: (event: any) => void = this.handleOutdoorSitesWithinBounds.bind(this);\n\n @Listen('centerOnMap', { target: 'window' })\n onCenterOnMap(event: CustomEvent<{ latitude: number; longitude: number }>) {\n this.map.setView(new L.LatLng(event.detail.latitude, event.detail.longitude), 17, { animate: false });\n }\n\n @Listen('stepsIsInViewport', { target: 'window' })\n stepsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentStepsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentStepsLayer);\n }\n }\n\n @Listen('descriptionIsInViewport', { target: 'window' })\n descriptionIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentReferencePointsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentReferencePointsLayer);\n }\n }\n\n @Listen('parkingIsInViewport', { target: 'window' })\n parkingIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentParkingLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentParkingLayer);\n }\n }\n\n @Listen('informationPlacesIsInViewport', { target: 'window' })\n onInformationPlacesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentInformationDesksLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentInformationDesksLayer);\n }\n }\n\n @Listen('sensitiveAreaIsInViewport', { target: 'window' })\n sensitiveAreaIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentSensitiveAreasLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentSensitiveAreasLayer);\n }\n }\n\n @Listen('poiIsInViewport', { target: 'window' })\n poiIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentPoisLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentPoisLayer);\n }\n }\n\n @Listen('touristicContentsIsInViewport', { target: 'window' })\n touristicContentsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentToutisticContentsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentToutisticContentsLayer);\n }\n }\n\n @Listen('touristicEventsIsInViewport', { target: 'window' })\n touristicEventsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentTouristicEventsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentTouristicEventsLayer);\n }\n }\n\n @Listen('sitesIsInViewport', { target: 'window' })\n sitesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentRelatedOutdoorSitesLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentRelatedOutdoorSitesLayer);\n }\n }\n\n @Listen('coursesIsInViewport', { target: 'window' })\n coursesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentRelatedOutdoorCoursesLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentRelatedOutdoorCoursesLayer);\n }\n }\n\n @Listen('cardTrekMouseOver', { target: 'window' })\n onCardTrekMouseOver(event: CustomEvent<number>) {\n if (!state.parentTrek && (!state.selectedTrekId || state.selectedTrekId !== event.detail)) {\n state.selectedTrekId = event.detail;\n this.hideTrekLine();\n this.showTrekLine(event.detail);\n this.addSelectedCurrentTrek(event.detail);\n } else if (state.parentTrek) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.addSelectedCurrentStep(event.detail);\n }\n }\n\n @Listen('cardTrekMouseLeave', { target: 'window' })\n onCardTrekMouseLeave() {\n if (!this.trekPopupIsOpen && state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n } else if (this.selectedCurrentStepLayer) {\n this.removeSelectedCurrentStep();\n }\n }\n\n @Listen('cardTouristicContentMouseOver', { target: 'window' })\n onTouristicContentMouseOver(event: CustomEvent<number>) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.addSelectedTouristicContent(event.detail);\n }\n\n @Listen('cardTouristicContentMouseLeave', { target: 'window' })\n onTouristicContentMouseLeave() {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n\n @Listen('cardTouristicEventMouseOver', { target: 'window' })\n onTouristicEventMouseOver(event: CustomEvent<number>) {\n this.touristicEventPopupIsOpen = false;\n state.selectedTouristicEventId = null;\n this.addSelectedTouristicEvent(event.detail);\n }\n\n @Listen('cardTouristicEventMouseLeave', { target: 'window' })\n onTouristicEventMouseLeave() {\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n\n @Listen('trekDownloadedSuccessConfirm', { target: 'window' })\n onTrekDownloadedSuccessConfirm() {\n this.map.setMaxZoom(this.tilesMaxZoomOffline);\n }\n\n @Listen('trekDeleteSuccessConfirm', { target: 'window' })\n onTrekDeleteSuccessConfirm() {\n this.map.setMaxZoom(this.maxZoom);\n }\n\n @Listen('cardOutdoorSiteMouseOver', { target: 'window' })\n onOutdoorSiteMouseOver(event: CustomEvent<number>) {\n this.outdoorSitePopupIsOpen = false;\n state.selectedOutdoorSiteId = null;\n this.addSelectedOutdoorSite(event.detail);\n }\n\n @Listen('cardOutdoorSiteMouseLeave', { target: 'window' })\n onOutdoorSiteMouseLeave() {\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n\n componentDidLoad() {\n this.map = L.map(this.mapRef, { zoom: 4, center: [47, 2], zoomControl: false });\n\n const nameLayers = this.nameLayer ? this.nameLayer.split(',') : [];\n\n const urlLayers = this.urlLayer.split(',http').map((url, index) => (index === 0 ? url : 'http' + url));\n\n const attributionLayers = this.attributionLayer ? this.attributionLayer.split(',') : [];\n urlLayers.forEach((urlLayer, index) => {\n this.tileLayer.push({\n key: `${nameLayers[index]}`,\n value: tileLayerOffline(urlLayer, {\n maxZoom: this.maxZoom,\n attribution: `${\n attributionLayers[index] && attributionLayers[index] !== '' ? attributionLayers[index].concat(' | ') : ''\n }Powered by <a target=\"_blank\" href=\"https://geotrek.fr/\">Geotrek</a>`,\n crossOrigin: true,\n }),\n });\n });\n\n this.tileLayer[0].value.addTo(this.map);\n\n if (urlLayers.length > 1) {\n this.layersControl = L.control\n .layers(\n this.tileLayer.reduce((tileLayers, tileLayer) => Object.assign(tileLayers, { [tileLayer.key]: tileLayer.value }), {}),\n {},\n { collapsed: true },\n )\n .addTo(this.map);\n }\n\n L.control.zoom({ zoomInTitle: translate[state.language].zoomIn, zoomOutTitle: translate[state.language].zoomOut }).addTo(this.map);\n\n L.control.scale({ metric: true, imperial: false }).addTo(this.map);\n\n (L.Control as any).Contract = L.Control.extend({\n onAdd: () => {\n const contractContainer = L.DomUtil.create('div');\n contractContainer.className = 'leaflet-bar leaflet-control';\n const contract = contractContainer.appendChild(L.DomUtil.create('a'));\n contract.href = '#';\n contract.style.backgroundImage = `var(--contract-image-src)`;\n contractContainer.onclick = e => {\n this.bounds && this.map.fitBounds(this.bounds);\n e.preventDefault();\n };\n contract.title = translate[state.language].contract;\n\n return contractContainer;\n },\n });\n\n (L.control as any).contract = opts => {\n return new (L.Control as any).Contract(opts);\n };\n\n (L.control as any).contract({ position: 'topleft' }).addTo(this.map);\n\n new (L.Control as any).SimpleLocate({\n position: 'topleft',\n className: 'button-locate',\n title: translate[state.language].locate,\n }).addTo(this.map);\n\n if (state.currentTrek) {\n this.addTrek();\n } else if (state.currentTreks) {\n this.addTreks();\n } else if (state.currentTouristicContent) {\n this.addTouristicContent();\n } else if (state.currentTouristicEvent) {\n this.addTouristicEvent();\n } else if (state.currentOutdoorSite) {\n this.addOutdoorSite();\n } else if (state.currentOutdoorCourse) {\n this.addOutdoorCourse();\n } else if (state.touristicContents) {\n this.addTouristicContents();\n } else if (state.touristicEvents) {\n this.addTouristicEvents();\n } else if (state.outdoorSites) {\n this.addOutdoorSites();\n }\n\n onChange('currentTreks', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks(true);\n }\n });\n\n onChange('currentOutdoorSites', () => {\n if (state.currentOutdoorSites) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.addOutdoorSites(true);\n }\n });\n\n onChange('currentTrek', () => {\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks();\n }\n });\n\n onChange('currentOutdoorSite', () => {\n if (state.currentOutdoorSite) {\n this.removeOutdoorCourse();\n this.removeOutdoorSites();\n this.addOutdoorSite();\n } else if (state.currentOutdoorSites) {\n this.removeOutdoorSite();\n this.addOutdoorSites();\n }\n });\n\n onChange('currentOutdoorSite', () => {\n if (state.currentOutdoorCourse) {\n this.removeOutdoorSite();\n this.addOutdoorCourse();\n }\n });\n\n onChange('currentTouristicContent', () => {\n if (this.grwApp) {\n if (state.currentTouristicContent) {\n this.removeTrek();\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.touristicContents) {\n this.removeTouristicContent();\n this.addTouristicContents();\n } else if (state.currentTrek) {\n this.removeTouristicContent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicContent();\n this.addTreks();\n }\n }\n });\n\n onChange('currentTouristicEvent', () => {\n if (this.grwApp) {\n if (state.currentTouristicEvent) {\n this.removeTrek();\n this.removeTouristicEvents();\n this.addTouristicEvent();\n } else if (state.currentTrek) {\n this.removeTouristicEvent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicEvent();\n this.addTreks();\n }\n }\n });\n\n onChange('currentTouristicContents', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTouristicContent) {\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.currentTouristicContents) {\n this.removeTreks();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.removeTouristicContent();\n this.addTouristicContents(true);\n }\n });\n\n onChange('currentTouristicEvents', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTouristicEvent) {\n this.removeTouristicEvents();\n this.addTouristicEvent();\n } else if (state.currentTouristicEvents) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeOutdoorSites();\n this.removeTouristicEvent();\n this.addTouristicEvents(true);\n }\n });\n }\n\n handleLayerVisibility(visible: boolean, layer: L.GeoJSON) {\n if (visible && !this.map.hasLayer(layer)) {\n layer.addTo(this.map);\n } else if (this.map.hasLayer(layer) && !this.userLayersState[(layer as any)._leaflet_id]) {\n this.map.removeLayer(layer);\n }\n this.handleLayersControlEvent();\n }\n\n async addTreks(resetBounds = false) {\n state.treksWithinBounds = state.currentTreks;\n\n const treksCurrentDepartureCoordinates = [];\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n for (const trek of state.currentTreks) {\n treksCurrentDepartureCoordinates.push(trek.departure_geom);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.treksLayer) {\n if ((treksCurrentDepartureCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n\n const treksIcons = await this.getIcons(treksFeatureCollection, 'practice');\n\n this.treksLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: treksIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"trek-marker-container\" class=\"trek-marker-container\"><img part=\"trek-marker-icon\" src=${treksIcons[geoJsonPoint.properties.practice]} /></div>`\n : `<div part=\"trek-marker-container\" class=\"trek-marker-container\"></div>`,\n className: 'trek-marker',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n /* @ts-ignore */\n trekImg.part = 'trek-image-popup';\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.hideTrekLine();\n this.showTrekLine(geoJsonPoint.properties.id);\n this.addSelectedCurrentTrek(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.treksMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"treks-marker-cluster-group-icon\" class=\"treks-marker-cluster-group-icon\">' + cluster.getChildCount() + '</div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n this.map.addLayer(this.treksMarkerClusterGroup);\n } else {\n if (treksCurrentDepartureCoordinates.length > 0) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.treksLayer.clearLayers();\n this.treksLayer.addData(treksFeatureCollection);\n this.treksMarkerClusterGroup.clearLayers();\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n }\n this.bounds && this.bounds._northEast && this.bounds._southWest && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n this.map.on('moveend', this.handleTreksWithinBoundsBind);\n }\n\n removeTreks() {\n if (this.treksLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.treksMarkerClusterGroup);\n this.treksLayer = null;\n this.treksMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTreksWithinBoundsBind);\n }\n }\n\n handleTreksWithinBounds() {\n if (\n (state.currentTreks && !state.currentMapBounds) ||\n (state.currentTreks && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.treksWithinBounds = state.currentTreks.filter(trek => this.map.getBounds().contains(L.latLng(trek.departure_geom[1], trek.departure_geom[0])));\n }\n }\n\n handleTouristicContentsWithinBounds() {\n if (\n (state.currentTouristicContents && !state.currentMapBounds) ||\n (state.currentTouristicContents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicContentsWithinBounds = state.currentTouristicContents.filter(touristicContent =>\n this.map.getBounds().contains(L.latLng(touristicContent.geometry.coordinates[1], touristicContent.geometry.coordinates[0])),\n );\n }\n }\n\n handleTouristicEventsWithinBounds() {\n if (\n (state.currentTouristicEvents && !state.currentMapBounds) ||\n (state.currentTouristicEvents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicEventsWithinBounds = state.currentTouristicEvents.filter(touristicEvent =>\n this.map.getBounds().contains(L.latLng(touristicEvent.geometry.coordinates[1], touristicEvent.geometry.coordinates[0])),\n );\n }\n }\n\n handleOutdoorSitesWithinBounds() {\n if (\n (state.currentOutdoorSites && !state.currentMapBounds) ||\n (state.currentOutdoorSites && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.outdoorSitesWithinBounds = state.currentOutdoorSites.filter(outdoorSite => {\n const coordinates = pointOnFeature(outdoorSite.geometry as any).geometry.coordinates;\n return this.map.getBounds().contains(L.latLng(coordinates[1], coordinates[0]));\n });\n }\n }\n\n async addTrek() {\n const trekInStore: Trek = await getDataInStore('treks', state.currentTrek.id);\n if (trekInStore) {\n this.map.setMaxZoom(this.tilesMaxZoomOffline);\n } else {\n this.map.setMaxZoom(this.maxZoom);\n }\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: state.currentTrek.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: 'transparent',\n }),\n interactive: false,\n }).addTo(this.map);\n\n if (state.currentTrek.parking_location) {\n const parkingImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/parking.svg`);\n const currentParking: Feature = {\n type: 'Feature',\n properties: { name: state.currentTrek.advised_parking },\n geometry: { type: 'Point', coordinates: state.currentTrek.parking_location },\n };\n this.currentParkingLayer = L.geoJSON(currentParking, {\n pointToLayer: (_geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: `<img part=\"parking-marker\" src=${parkingImageSrc} />`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const parkingTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n parkingTooltip.part = 'parking-tooltip';\n parkingTooltip.className = 'parking-tooltip';\n const parkingName = L.DomUtil.create('div');\n parkingName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n parkingTooltip.part = 'parking-name';\n parkingName.className = 'parking-name';\n parkingTooltip.appendChild(parkingName);\n layer.bindTooltip(parkingTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.currentSensitiveAreas && state.currentSensitiveAreas.length > 0) {\n const currentSensitiveAreasFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const sensitiveArea of state.currentSensitiveAreas) {\n currentSensitiveAreasFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: sensitiveArea.name },\n geometry: sensitiveArea.geometry,\n });\n }\n\n this.currentSensitiveAreasLayer = L.geoJSON(currentSensitiveAreasFeatureCollection, {\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const sensitiveAreaTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n sensitiveAreaTooltip.part = 'sensitive-area-tooltip';\n sensitiveAreaTooltip.className = 'sensitive-area-tooltip';\n const sensitiveAreaName = L.DomUtil.create('div');\n sensitiveAreaName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n sensitiveAreaName.part = 'sensitive-area-name';\n sensitiveAreaName.className = 'sensitive-area-name';\n sensitiveAreaTooltip.appendChild(sensitiveAreaName);\n layer.bindTooltip(sensitiveAreaTooltip).openTooltip();\n });\n },\n style: () => ({ color: this.colorSensitiveArea }),\n });\n }\n\n await this.addCurrentInformationDesks(state.currentTrek);\n\n await this.addCurrentPois();\n\n await this.addCurrentSignages();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n if (state.currentTrek.points_reference) {\n const currentReferencePointsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n currentReferencePointsFeatureCollection.features.push({\n type: 'Feature',\n properties: {},\n geometry: state.currentTrek.points_reference,\n });\n\n let index = 0;\n this.currentReferencePointsLayer = L.geoJSON(currentReferencePointsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"point-reference-icon\" class=\"point-reference-icon\">${index}</div>`,\n className: '',\n iconSize: this.pointReferenceMarkerSize,\n } as any),\n autoPanOnFocus: false,\n interactive: false,\n } as any);\n },\n });\n }\n\n if (!this.currentStepsLayer && state.parentTrekId && state.parentTrek && state.currentTrek.id === state.parentTrekId) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n for (const trek of state.currentTrekSteps) {\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n }\n\n let stepIndex = 0;\n this.currentStepsLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n stepIndex += 1;\n return L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div part=\"step-marker\" class=\"step-marker\"><div part=\"step-marker-container\" class=\"step-marker-container\"><div part=\"step-number\" class=\"step-number\">${stepIndex}</div></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedCurrentStep(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n }\n\n let elevationTranslation = {\n 'y: ': '',\n 'x: ': '',\n 'Total Length: ': 'Longueur totale : ',\n 'Min Elevation: ': 'Altitude min : ',\n 'Max Elevation: ': 'Altitude max : ',\n };\n\n /* @ts-ignore */\n L.registerLocale('fr', elevationTranslation);\n /* @ts-ignore */\n L.setLocale('fr');\n\n const elevationOptions = {\n elevationDiv: `#elevation-container`,\n theme: `custom-theme use-theme-color`,\n height: this.mapElement.getBoundingClientRect().width >= this.largeViewSize / 2 ? this.elevationHeight : this.mobileElevationHeight,\n distanceMarkers: { distance: false, direction: true },\n summary: 'inline',\n legend: false,\n downloadLink: false,\n autofitBounds: false,\n ruler: false,\n waypoints: false,\n almostOver: false,\n dragging: false,\n };\n this.elevationControl = (L.control as any).elevation(elevationOptions).addTo(this.map);\n const elevation = JSON.stringify({\n name: `${state.currentTrek.name}`,\n type: 'FeatureCollection',\n features: [{ type: 'Feature', geometry: { type: 'LineString', coordinates: state.currentTrek.geometry.coordinates }, properties: null }],\n });\n (this.elevationControl as any).load(elevation);\n (this.elevationControl as any).eleDiv.style.display = this.elevationDefaultState === 'visible' ? 'block' : 'none';\n forceUpdate(this.hostElement);\n\n const departureArrival: FeatureCollection = {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTrek.geometry.coordinates[0] },\n properties: null,\n },\n {\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTrek.geometry.coordinates[state.currentTrek.geometry.coordinates.length - 1] },\n properties: null,\n },\n ],\n };\n\n let index = 0;\n this.departureArrivalLayer = L.geoJSON(departureArrival, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"${index === 1 ? 'departure-marker' : 'arrival-marker'}\" class=\"${index === 1 ? 'departure-marker' : 'arrival-marker'}\"></div>`,\n className: '',\n iconSize: this.departureArrivalMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n });\n this.map.addLayer(this.departureArrivalLayer);\n\n this.handleLayersControl();\n\n this.bounds = L.latLngBounds(state.currentTrek.geometry.coordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n this.map.on('eledata_loaded', () => {\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n });\n }\n\n async getIcons(featuresCollection, property) {\n const icons = {};\n for (let index = 0; index < featuresCollection.features.length; index++) {\n if (featuresCollection.features[index].properties[property]) {\n icons[featuresCollection.features[index].properties[property]] = await this.getIcon(featuresCollection.features[index].properties[property]);\n }\n }\n return icons;\n }\n\n async getIcon(pictogram) {\n let icon;\n if (!Capacitor.isNativePlatform()) {\n const dataInStore = await checkFileInStore(pictogram);\n icon = dataInStore ? window.URL.createObjectURL((await getFileInStore(pictogram)).data) : pictogram ? pictogram : null;\n } else {\n const image = await Filesystem.getUri({\n path: pictogram,\n directory: Directory.Data,\n });\n if (image) {\n icon = Capacitor.convertFileSrc(image.uri);\n }\n }\n\n return icon;\n }\n\n async addSelectedCurrentTrek(id, customCoordinates?) {\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n const trek = state.currentTreks.find(trek => trek.id === id);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedCurrentTrek();\n state.selectedTrekId = id;\n\n const treksIcons = await this.getIcons(treksFeatureCollection, 'practice');\n this.selectedCurrentTrekLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: treksIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"selected-trek-marker\" class=\"selected-trek-marker\"><div part=\"trek-marker-container\" class=\"trek-marker-container\"><img part=\"trek-marker\" class=\"trek-marker\" src=${\n treksIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"selected-trek-marker\" class=\"selected-trek-marker\"><div part=\"trek-marker-container\" class=\"trek-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = imgSrc;\n /* @ts-ignore */\n trekImg.part = 'trek-image';\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.trekPopupIsOpen) {\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n layer.on('popupopen', () => {\n this.trekPopupIsOpen = Boolean(state.selectedTrekId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentTrek() {\n state.selectedTrekId = null;\n this.selectedCurrentTrekLayer && this.map.removeLayer(this.selectedCurrentTrekLayer);\n this.selectedCurrentTrekLayer = null;\n }\n\n addSelectedCurrentStep(id, customCoordinates?) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n const stepIndex = state.currentTrekSteps.findIndex(trek => trek.id === id);\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : state.currentTrekSteps[stepIndex].departure_geom },\n properties: {\n id: state.currentTrekSteps[stepIndex].id,\n name: state.currentTrekSteps[stepIndex].name,\n practice: state.practices.find(practice => practice.id === state.currentTrekSteps[stepIndex].practice)?.pictogram,\n imgSrc:\n state.currentTrekSteps[stepIndex].attachments && state.currentTrekSteps[stepIndex].attachments.filter(attachment => attachment.type === 'image').length > 0\n ? state.currentTrekSteps[stepIndex].attachments[0].thumbnail !== ''\n ? state.currentTrekSteps[stepIndex].attachments[0].thumbnail\n : state.currentTrekSteps[stepIndex].attachments[0].url\n : null,\n index: stepIndex + 1,\n },\n });\n }\n\n this.removeSelectedCurrentStep();\n state.selectedStepId = id;\n\n this.selectedCurrentStepLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div part=\"selected-step-marker\" class=\"selected-step-marker\" ><div part=\"step-marker-container\" class=\"step-marker-container\"><div part=\"step-number\" class=\"step-number\">${geoJsonPoint.properties.index}</div></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n /* @ts-ignore */\n trekImg.part = 'trek-image';\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-name';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.stepPopupIsOpen) {\n state.selectedTrekId = null;\n this.removeSelectedCurrentStep();\n }\n });\n layer.on('popupopen', () => {\n this.stepPopupIsOpen = Boolean(state.selectedStepId);\n });\n layer.on('popupclose', () => {\n if (state.selectedStepId) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.removeSelectedCurrentStep();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentStep() {\n if (state.selectedStepId) {\n state.selectedStepId = null;\n this.selectedCurrentStepLayer && this.map.removeLayer(this.selectedCurrentStepLayer);\n this.selectedCurrentStepLayer = null;\n }\n }\n\n handleLayersControlEvent() {\n if (this.layersControl) {\n const userLayersState: HTMLInputElement[] = (this.layersControl as any)._layerControlInputs;\n userLayersState.forEach((userLayerState: any) => {\n if ((this.layersControl as any)._layers.find(layer => layer.layer._leaflet_id === userLayerState.layerId).overlay) {\n userLayerState.onchange = event => {\n this.userLayersState[userLayerState.layerId] = (event.target as any).checked;\n };\n }\n });\n }\n }\n\n removeTrek() {\n this.handleLayersOnRemove();\n }\n\n async showTrekLine(id) {\n this.removeSelectedCurrentTrek();\n const trekLine = await getTrekGeometry(id);\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: trekLine.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: this.colorTrekLine,\n }),\n interactive: false,\n }).addTo(this.map);\n }\n\n hideTrekLine() {\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n }\n\n async addTouristicContent() {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContent) {\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicContent.geometry.coordinates },\n properties: {\n id: state.currentTouristicContent.id,\n name: state.currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === state.currentTouristicContent.category).pictogram,\n },\n });\n }\n\n if (!this.currentToutisticContentLayer) {\n const toutisticContentIcons = await this.getIcons(touristicContentsFeatureCollection, 'practice');\n this.currentToutisticContentLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\" ><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" class=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\" ><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticContentLayer);\n }\n\n this.map.setView([state.currentTouristicContent.geometry.coordinates[1], state.currentTouristicContent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicContent() {\n if (this.currentToutisticContentLayer) {\n this.map.removeLayer(this.currentToutisticContentLayer);\n this.currentToutisticContentLayer = null;\n }\n }\n\n async addTouristicContents(resetBounds = false) {\n state.touristicContentsWithinBounds = state.currentTouristicContents;\n\n const touristicContentsCurrentCoordinates = [];\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContents) {\n for (const currentTouristicContent of state.currentTouristicContents) {\n touristicContentsCurrentCoordinates.push(currentTouristicContent.geometry.coordinates);\n\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicContent.geometry.coordinates },\n properties: {\n id: currentTouristicContent.id,\n name: currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === currentTouristicContent.category).pictogram,\n imgSrc:\n currentTouristicContent.attachments && currentTouristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentTouristicContent.attachments[0].thumbnail !== ''\n ? currentTouristicContent.attachments[0].thumbnail\n : currentTouristicContent.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.toutisticContentsLayer) {\n if ((touristicContentsCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const toutisticContentIcons = await this.getIcons(touristicContentsFeatureCollection, 'practice');\n this.toutisticContentsLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" class=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentCoordinatesPopup.part = 'touristic-content-coordinates-popup';\n touristicContentCoordinatesPopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicContentImg.part = 'touristic-content-coordinates-image';\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentCoordinatesPopup.appendChild(touristicContentImg);\n }\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentCoordinatesPopup.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentCoordinatesPopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicContentButton.part = 'touristic-content-button';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentCoordinatesPopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicContent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicContentsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"touristic-content-marker-cluster-group-icon\" class=\"touristic-content-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n this.map.addLayer(this.touristicContentsMarkerClusterGroup);\n } else {\n if (touristicContentsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.toutisticContentsLayer.clearLayers();\n this.toutisticContentsLayer.addData(touristicContentsFeatureCollection);\n this.touristicContentsMarkerClusterGroup.clearLayers();\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n\n removeTouristicContents() {\n if (this.toutisticContentsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicContentsMarkerClusterGroup);\n this.toutisticContentsLayer = null;\n this.touristicContentsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n }\n\n async addTouristicEvent() {\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvent) {\n const touristicEventType = state.touristicEventTypes.find(touristicEventType => touristicEventType.id === state.currentTouristicEvent.type);\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicEvent.geometry.coordinates },\n properties: {\n id: state.currentTouristicEvent.id,\n name: state.currentTouristicEvent.name,\n type: touristicEventType ? touristicEventType.pictogram : null,\n },\n });\n }\n\n if (!this.currentToutisticEventLayer) {\n const toutisticEventsIcons = await this.getIcons(touristicEventsFeatureCollection, 'type');\n this.currentToutisticEventLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticEventsIcons[geoJsonPoint.properties.type]\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n toutisticEventsIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticEventLayer);\n }\n\n this.map.setView([state.currentTouristicEvent.geometry.coordinates[1], state.currentTouristicEvent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicEvent() {\n if (this.currentToutisticEventLayer) {\n this.map.removeLayer(this.currentToutisticEventLayer);\n this.currentToutisticEventLayer = null;\n }\n }\n\n async addSelectedTouristicContent(id, customCoordinates?) {\n const touristicContentFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicContents) {\n const touristicContent = state.touristicContents.find(touristicContent => touristicContent.id === id);\n touristicContentFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicContent.geometry.coordinates },\n properties: {\n id: touristicContent.id,\n name: touristicContent.name,\n category: state.touristicContentCategories.find(practice => practice.id === touristicContent.category)?.pictogram,\n imgSrc:\n touristicContent.attachments && touristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? touristicContent.attachments[0].thumbnail !== ''\n ? touristicContent.attachments[0].thumbnail\n : touristicContent.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedTouristicContent();\n state.selectedTouristicContentId = id;\n\n const toutisticContentIcons = await this.getIcons(touristicContentFeatureCollection, 'category');\n this.selectedTouristicContentLayer = L.geoJSON(touristicContentFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.category]\n ? `<div part=\"selected-touristic-content-marker\" class=\"selected-touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.category]\n } /></div></div>`\n : `<div part=\"selected-touristic-content-marker\" class=\"selected-touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentDeparturePopup.part = 'touristic-content-coordinates-popup';\n touristicContentDeparturePopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicContentImg.part = 'touristic-content-coordinates-image';\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentDeparturePopup.appendChild(touristicContentImg);\n }\n\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentName.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentDeparturePopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicContentButton.part = 'touristic-content-button';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentDeparturePopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicContentPopupIsOpen) {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicContentPopupIsOpen = Boolean(state.selectedTouristicContentId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicContentId) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicContent() {\n state.selectedTouristicContentId = null;\n this.selectedTouristicContentLayer && this.map.removeLayer(this.selectedTouristicContentLayer);\n this.selectedTouristicContentLayer = null;\n }\n\n async addTouristicEvents(resetBounds = false) {\n state.touristicEventsWithinBounds = state.currentTouristicEvents;\n\n const touristicEventsCurrentCoordinates = [];\n\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvents) {\n for (const currentTouristicEvent of state.currentTouristicEvents) {\n touristicEventsCurrentCoordinates.push(currentTouristicEvent.geometry.coordinates);\n\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicEvent.geometry.coordinates },\n properties: {\n id: currentTouristicEvent.id,\n name: currentTouristicEvent.name,\n type: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === currentTouristicEvent.type)?.pictogram,\n imgSrc:\n currentTouristicEvent.attachments && currentTouristicEvent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentTouristicEvent.attachments[0].thumbnail !== ''\n ? currentTouristicEvent.attachments[0].thumbnail\n : currentTouristicEvent.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.touristicEventsLayer) {\n if ((touristicEventsCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(touristicEventsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const touristicEventsIcons = await this.getIcons(touristicEventsFeatureCollection, 'type');\n this.touristicEventsLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: touristicEventsIcons[geoJsonPoint.properties.type]\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n touristicEventsIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicEventCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventCoordinatesPopup.part = 'touristic-event-coordinates-popup';\n touristicEventCoordinatesPopup.className = 'touristic-event-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicEventImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicEventImg.part = 'touristic-event-coordinates-image';\n touristicEventImg.src = geoJsonPoint.properties.imgSrc;\n touristicEventCoordinatesPopup.appendChild(touristicEventImg);\n }\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.className = 'touristic-event-name';\n touristicEventCoordinatesPopup.appendChild(touristicEventName);\n\n const touristicEventButton = L.DomUtil.create('button');\n touristicEventButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicEventButton.part = 'touristic-event-button';\n touristicEventButton.className = 'touristic-event-button';\n touristicEventButton.onclick = () => this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n touristicEventCoordinatesPopup.appendChild(touristicEventButton);\n\n layer.bindPopup(touristicEventCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicEvent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicEventsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"touristic-event-marker-cluster-group-icon\" class=\"touristic-event-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.touristicEventsMarkerClusterGroup.addLayer(this.touristicEventsLayer);\n this.map.addLayer(this.touristicEventsMarkerClusterGroup);\n } else {\n if (touristicEventsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicEventsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.touristicEventsLayer.clearLayers();\n this.touristicEventsLayer.addData(touristicEventsFeatureCollection);\n this.touristicEventsMarkerClusterGroup.clearLayers();\n this.touristicEventsMarkerClusterGroup.addLayer(this.touristicEventsLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicEventsWithinBoundsBind);\n }\n\n removeTouristicEvents() {\n if (this.touristicEventsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicEventsMarkerClusterGroup);\n this.touristicEventsLayer = null;\n this.touristicEventsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicEventsWithinBoundsBind);\n }\n }\n\n async addOutdoorSites(resetBounds = false) {\n state.outdoorSitesWithinBounds = state.currentOutdoorSites;\n\n const outdoorSitesCurrentCoordinates = [];\n\n const outdoorSitesFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSites) {\n for (const currentOutdoorSite of state.currentOutdoorSites) {\n outdoorSitesFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(currentOutdoorSite.geometry as any).geometry.coordinates },\n properties: {\n id: currentOutdoorSite.id,\n name: currentOutdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === currentOutdoorSite.practice)?.pictogram,\n imgSrc:\n currentOutdoorSite.attachments && currentOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentOutdoorSite.attachments[0].thumbnail !== ''\n ? currentOutdoorSite.attachments[0].thumbnail\n : currentOutdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.outdoorSitesLayer) {\n if ((outdoorSitesCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n const outdoorSitesBbox = bbox(outdoorSitesFeatureCollection);\n this.bounds = L.latLngBounds([outdoorSitesBbox[1], outdoorSitesBbox[0]], [outdoorSitesBbox[3], outdoorSitesBbox[2]]);\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const outdoorSitesIcons = await this.getIcons(outdoorSitesFeatureCollection, 'practice');\n this.outdoorSitesLayer = L.geoJSON(outdoorSitesFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorSiteCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorSiteCoordinatesPopup.part = 'outdoor-site-coordinates-popup';\n outdoorSiteCoordinatesPopup.className = 'outdoor-site-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorSiteImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorSiteImg.part = 'outdoor-site-coordinates-image';\n outdoorSiteImg.src = geoJsonPoint.properties.imgSrc;\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteImg);\n }\n const outdoorSiteName = L.DomUtil.create('div');\n outdoorSiteName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorSiteName.part = 'outdoor-site-name';\n outdoorSiteName.className = 'outdoor-site-name';\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteName);\n\n const outdoorSiteButton = L.DomUtil.create('button');\n outdoorSiteButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorSiteButton.part = 'outdoor-site-button';\n outdoorSiteButton.className = 'outdoor-site-button';\n outdoorSiteButton.onclick = () => this.outdoorSiteCardPress.emit(geoJsonPoint.properties.id);\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteButton);\n\n layer.bindPopup(outdoorSiteCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedOutdoorSite(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.outdoorSitesMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"outdoor-site-marker-cluster-group-icon\" class=\"outdoor-site-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.outdoorSitesMarkerClusterGroup.addLayer(this.outdoorSitesLayer);\n this.map.addLayer(this.outdoorSitesMarkerClusterGroup);\n } else {\n if (outdoorSitesCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(outdoorSitesCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.outdoorSitesLayer.clearLayers();\n this.outdoorSitesLayer.addData(outdoorSitesFeatureCollection);\n this.outdoorSitesMarkerClusterGroup.clearLayers();\n this.outdoorSitesMarkerClusterGroup.addLayer(this.outdoorSitesLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleOutdoorSitesWithinBoundsBind);\n }\n\n removeOutdoorSites() {\n if (this.outdoorSitesLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.outdoorSitesMarkerClusterGroup);\n this.outdoorSitesLayer = null;\n this.outdoorSitesMarkerClusterGroup = null;\n this.map.off('moveend', this.handleOutdoorSitesWithinBoundsBind);\n }\n }\n\n async addOutdoorSite() {\n const OutdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSite) {\n const outdoorSitePractice = state.outdoorPractices.find(outdoorPractice => outdoorPractice.id === state.currentOutdoorSite.practice);\n OutdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: state.currentOutdoorSite.geometry,\n properties: {\n id: state.currentOutdoorSite.id,\n name: state.currentOutdoorSite.name,\n practice: outdoorSitePractice ? outdoorSitePractice.pictogram : null,\n },\n });\n }\n\n if (!this.currentOutdoorSiteLayer) {\n const outdoorSitesIcons = await this.getIcons(OutdoorSiteFeatureCollection, 'practice');\n\n this.currentOutdoorSiteLayer = L.geoJSON(OutdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n\n this.map.addLayer(this.currentOutdoorSiteLayer);\n }\n\n await this.addCurrentInformationDesks(state.currentOutdoorSite);\n\n await this.addCurrentPois();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n await this.addCurrentRelatedOutdoorSites();\n\n await this.addCurrentRelatedOutdoorCourses();\n\n this.handleLayersControl();\n\n this.map.invalidateSize();\n this.map.fitBounds(this.currentOutdoorSiteLayer.getBounds(), { maxZoom: this.maxZoom });\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n async addCurrentRelatedOutdoorSites() {\n const currentRelatedOutdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentRelatedOutdoorSites) {\n for (const currentRelatedOutdoorSite of state.currentRelatedOutdoorSites) {\n currentRelatedOutdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: currentRelatedOutdoorSite.geometry,\n properties: {\n id: currentRelatedOutdoorSite.id,\n name: currentRelatedOutdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === currentRelatedOutdoorSite.practice)?.pictogram,\n imgSrc:\n currentRelatedOutdoorSite.attachments && currentRelatedOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentRelatedOutdoorSite.attachments[0].thumbnail !== ''\n ? currentRelatedOutdoorSite.attachments[0].thumbnail\n : currentRelatedOutdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.currentRelatedOutdoorSitesLayer && currentRelatedOutdoorSiteFeatureCollection.features.length > 0) {\n const outdoorSitesIcons = await this.getIcons(currentRelatedOutdoorSiteFeatureCollection, 'practice');\n\n this.currentRelatedOutdoorSitesLayer = L.geoJSON(currentRelatedOutdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n }\n }\n\n async addCurrentRelatedOutdoorCourses() {\n const currentRelatedOutdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentRelatedOutdoorCourses) {\n for (const currentRelatedOutdoorCourse of state.currentRelatedOutdoorCourses) {\n currentRelatedOutdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: currentRelatedOutdoorCourse.geometry,\n properties: {\n id: currentRelatedOutdoorCourse.id,\n name: currentRelatedOutdoorCourse.name,\n type: state.outdoorCourseTypes.find(type => type.id === currentRelatedOutdoorCourse.type)?.pictogram,\n imgSrc:\n currentRelatedOutdoorCourse.attachments && currentRelatedOutdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentRelatedOutdoorCourse.attachments[0].thumbnail !== ''\n ? currentRelatedOutdoorCourse.attachments[0].thumbnail\n : currentRelatedOutdoorCourse.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.currentRelatedOutdoorCoursesLayer && currentRelatedOutdoorCourseFeatureCollection.features.length > 0) {\n const outdoorCoursesIcons = await this.getIcons(currentRelatedOutdoorCourseFeatureCollection, 'type');\n\n this.currentRelatedOutdoorCoursesLayer = L.geoJSON(currentRelatedOutdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-courses-marker\" class=\"outdoor-courses-marker\"><div part=\"outdoor-courses-marker-container\" class=\"outdoor-courses-marker-container\"><img part=\"outdoor-courses-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-courses-marker\" class=\"outdoor-courses-marker\"><div part=\"outdoor-courses-marker-container\" class=\"outdoor-courses-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n }\n }\n\n removeOutdoorSite() {\n this.handleLayersOnRemove();\n }\n\n async addSelectedTouristicEvent(id, customCoordinates?) {\n const touristicEventFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicEvents) {\n const touristicEvent = state.touristicEvents.find(touristicEvent => touristicEvent.id === id);\n\n touristicEventFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicEvent.geometry.coordinates },\n properties: {\n id: touristicEvent.id,\n name: touristicEvent.name,\n category: state.touristicEventTypes.find(type => type.id === touristicEvent.type)?.pictogram,\n imgSrc:\n touristicEvent.attachments && touristicEvent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? touristicEvent.attachments[0].thumbnail !== ''\n ? touristicEvent.attachments[0].thumbnail\n : touristicEvent.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedTouristicEvent();\n state.selectedTouristicEventId = id;\n\n const touristicEventsIcons = await this.getIcons(touristicEventFeatureCollection, 'category');\n this.selectedTouristicEventLayer = L.geoJSON(touristicEventFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: touristicEventsIcons[geoJsonPoint.properties.category]\n ? `<div part=\"selected-touristic-event-marker\" class=\"selected-touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n touristicEventsIcons[geoJsonPoint.properties.category]\n } /></div></div>`\n : `<div part=\"selected-touristic-event-marker\" class=\"selected-touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicEventDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventDeparturePopup.part = 'touristic-event-coordinates-popup';\n touristicEventDeparturePopup.className = 'touristic-event-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicEventImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicEventImg.part = 'touristic-event-coordinates-image';\n touristicEventImg.src = geoJsonPoint.properties.imgSrc;\n touristicEventDeparturePopup.appendChild(touristicEventImg);\n }\n\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.className = 'touristic-event-name';\n touristicEventDeparturePopup.appendChild(touristicEventName);\n\n const touristicEventButton = L.DomUtil.create('button');\n touristicEventButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicEventButton.part = 'touristic-event-button';\n touristicEventButton.className = 'touristic-event-button';\n touristicEventButton.onclick = () => this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n touristicEventDeparturePopup.appendChild(touristicEventButton);\n\n layer.bindPopup(touristicEventDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicEventPopupIsOpen) {\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicEventPopupIsOpen = Boolean(state.selectedTouristicEventId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicEventId) {\n this.touristicEventPopupIsOpen = false;\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicEvent() {\n state.selectedTouristicEventId = null;\n this.selectedTouristicEventLayer && this.map.removeLayer(this.selectedTouristicEventLayer);\n this.selectedTouristicEventLayer = null;\n }\n\n async addOutdoorCourse() {\n const OutdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorCourse) {\n const outdoorCourseType = state.outdoorCourseTypes.find(outdoorCourseType => outdoorCourseType.id === state.currentOutdoorCourse.type);\n OutdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: state.currentOutdoorCourse.geometry,\n properties: {\n id: state.currentOutdoorCourse.id,\n name: state.currentOutdoorCourse.name,\n type: outdoorCourseType ? outdoorCourseType.pictogram : null,\n },\n });\n }\n\n if (!this.currentOutdoorCourseLayer) {\n const outdoorCoursesIcons = await this.getIcons(OutdoorCourseFeatureCollection, 'type');\n this.currentOutdoorCourseLayer = L.geoJSON(OutdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-course-marker\" class=\"outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"><img part=\"outdoor-course-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-course-marker\" class=\"outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n\n this.map.addLayer(this.currentOutdoorCourseLayer);\n }\n\n await this.addCurrentPois();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n this.handleLayersControl();\n\n this.map.fitBounds(this.currentOutdoorCourseLayer.getBounds());\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeOutdoorCourse() {\n this.handleLayersOnRemove();\n }\n\n async addSelectedOutdoorSite(id, _customCoordinates?) {\n const outdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSites) {\n const outdoorSite = state.currentOutdoorSites.find(currentOutdoorSite => currentOutdoorSite.id === id);\n if (outdoorSite && outdoorSite.geometry) {\n outdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(outdoorSite.geometry as any).geometry.coordinates },\n properties: {\n id: outdoorSite.id,\n name: outdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === outdoorSite.practice)?.pictogram,\n imgSrc:\n outdoorSite.attachments && outdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? outdoorSite.attachments[0].thumbnail !== ''\n ? outdoorSite.attachments[0].thumbnail\n : outdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n this.removeSelectedOutdoorSite();\n state.selectedOutdoorSiteId = id;\n\n const outdoorSitesIcons = await this.getIcons(outdoorSiteFeatureCollection, 'practice');\n this.selectedOutdoorSiteLayer = L.geoJSON(outdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"selected-outdoor-site-marker\" class=\"selected-outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"selected-outdoor-site-marker\" class=\"selected-outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorSiteDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorSiteDeparturePopup.part = 'outdoor-site-coordinates-popup';\n outdoorSiteDeparturePopup.className = 'outdoor-site-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorSiteImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorSiteImg.part = 'outdoor-site-coordinates-image';\n outdoorSiteImg.src = geoJsonPoint.properties.imgSrc;\n outdoorSiteDeparturePopup.appendChild(outdoorSiteImg);\n }\n\n const outdoorSiteName = L.DomUtil.create('div');\n outdoorSiteName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorSiteName.part = 'outdoor-site-name';\n outdoorSiteName.className = 'outdoor-site-name';\n outdoorSiteDeparturePopup.appendChild(outdoorSiteName);\n\n const outdoorSiteButton = L.DomUtil.create('button');\n outdoorSiteButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorSiteButton.part = 'outdoor-site-button';\n outdoorSiteButton.className = 'outdoor-site-button';\n outdoorSiteButton.onclick = () => this.outdoorSiteCardPress.emit(geoJsonPoint.properties.id);\n outdoorSiteDeparturePopup.appendChild(outdoorSiteButton);\n\n layer.bindPopup(outdoorSiteDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.outdoorSitePopupIsOpen) {\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n });\n layer.on('popupopen', () => {\n this.outdoorSitePopupIsOpen = Boolean(state.selectedOutdoorSiteId);\n });\n layer.on('popupclose', () => {\n if (state.selectedOutdoorSiteId) {\n this.outdoorSitePopupIsOpen = false;\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n });\n },\n style: { color: this.colorOutdoorArea, interactive: false },\n }).addTo(this.map);\n }\n\n removeSelectedOutdoorSite() {\n state.selectedOutdoorSiteId = null;\n this.selectedOutdoorSiteLayer && this.map.removeLayer(this.selectedOutdoorSiteLayer);\n this.selectedOutdoorSiteLayer = null;\n }\n\n async addSelectedOutdoorCourse(id, _customCoordinates?) {\n const outdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorCourse) {\n const outdoorCourse = state.currentOutdoorCourse;\n outdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(outdoorCourse.geometry as any).geometry.coordinates },\n properties: {\n id: outdoorCourse.id,\n name: outdoorCourse.name,\n type: state.outdoorCourseTypes.find(type => type.id === outdoorCourse.type)?.pictogram,\n imgSrc:\n outdoorCourse.attachments && outdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? outdoorCourse.attachments[0].thumbnail !== ''\n ? outdoorCourse.attachments[0].thumbnail\n : outdoorCourse.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedOutdoorCourse();\n state.selectedOutdoorCourseId = id;\n\n const outdoorCoursesIcons = await this.getIcons(outdoorCourseFeatureCollection, 'type');\n this.selectedOutdoorCourseLayer = L.geoJSON(outdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.type]\n ? `<div part=\"selected-outdoor-course-marker\" class=\"selected-outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"><img part=\"outdoor-course-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"selected-outdoor-course-marker\" class=\"selected-outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorCourseDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorCourseDeparturePopup.part = 'outdoor-course-coordinates-popup';\n outdoorCourseDeparturePopup.className = 'outdoor-course-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorCourseImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorCourseImg.part = 'outdoor-course-coordinates-image';\n outdoorCourseImg.src = geoJsonPoint.properties.imgSrc;\n outdoorCourseDeparturePopup.appendChild(outdoorCourseImg);\n }\n\n const outdoorCourseName = L.DomUtil.create('div');\n outdoorCourseName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorCourseName.part = 'outdoor-course-name';\n outdoorCourseName.className = 'outdoor-course-name';\n outdoorCourseDeparturePopup.appendChild(outdoorCourseName);\n\n const outdoorCourseButton = L.DomUtil.create('button');\n outdoorCourseButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorCourseButton.part = 'outdoor-course-button';\n outdoorCourseButton.className = 'outdoor-course-button';\n outdoorCourseButton.onclick = () => this.outdoorCourseCardPress.emit(geoJsonPoint.properties.id);\n outdoorCourseDeparturePopup.appendChild(outdoorCourseButton);\n\n layer.bindPopup(outdoorCourseDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.outdoorCoursePopupIsOpen) {\n state.selectedOutdoorCourseId = null;\n this.removeSelectedOutdoorCourse();\n }\n });\n layer.on('popupopen', () => {\n this.outdoorCoursePopupIsOpen = Boolean(state.selectedOutdoorCourseId);\n });\n layer.on('popupclose', () => {\n if (state.selectedOutdoorCourseId) {\n this.outdoorCoursePopupIsOpen = false;\n state.selectedOutdoorCourseId = null;\n this.removeSelectedOutdoorCourse();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedOutdoorCourse() {\n state.selectedOutdoorCourseId = null;\n this.selectedOutdoorCourseLayer && this.map.removeLayer(this.selectedOutdoorCourseLayer);\n this.selectedOutdoorCourseLayer = null;\n }\n\n async addCurrentPois() {\n if (state.currentPois && state.currentPois.length > 0) {\n const currentPoisFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentPoi of state.currentPois) {\n currentPoisFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentPoi.name, type_pictogram: state.poiTypes.find(poiType => poiType.id === currentPoi.type)?.pictogram },\n geometry: currentPoi.geometry,\n });\n }\n\n const poiIcons = await this.getIcons(currentPoisFeatureCollection, 'type_pictogram');\n\n this.currentPoisLayer = L.geoJSON(currentPoisFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: poiIcons[geoJsonPoint.properties.type_pictogram]\n ? `<div part=\"poi-marker\" class=\"poi-marker\"><img src=${poiIcons[geoJsonPoint.properties.type_pictogram]} /></div>`\n : `<div part=\"poi-marker\" class=\"poi-marker\"><img /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const poiTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n poiTooltip.part = 'poi-tooltip';\n poiTooltip.className = 'poi-tooltip';\n const poiName = L.DomUtil.create('div');\n poiName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n poiName.part = 'poi-name';\n poiName.className = 'poi-name';\n poiTooltip.appendChild(poiName);\n layer.bindTooltip(poiTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentSignages() {\n if (state.currentSignages && state.currentSignages.length > 0) {\n const signageImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/signage.svg`);\n const currentSignagesFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentSignage of state.currentSignages) {\n currentSignagesFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentSignage.name },\n geometry: currentSignage.geometry,\n });\n }\n\n this.currentSignagesLayer = L.geoJSON(currentSignagesFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"signage-marker\" class=\"signage-marker\"><img src=${signageImageSrc} /><div part=\"signage-name\" class=\"signage-name\">${geoJsonPoint.properties.name}</div></div>`,\n className: '',\n iconSize: [this.commonMarkerSize * 1.2, this.commonMarkerSize * 0.8],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const signageTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n signageTooltip.part = 'signage-tooltip';\n signageTooltip.className = 'signage-tooltip';\n const signageName = L.DomUtil.create('div');\n signageName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n signageName.part = 'signage-name';\n signageName.className = 'signage-name';\n signageTooltip.appendChild(signageName);\n layer.bindTooltip(signageTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentTouristicContents() {\n if (state.trekTouristicContents && state.trekTouristicContents.length > 0) {\n const currentTouristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicContent of state.trekTouristicContents) {\n currentTouristicContentsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n id: touristicContent.id,\n name: touristicContent.name,\n category_pictogram: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === touristicContent.category)?.pictogram,\n },\n geometry: touristicContent.geometry,\n });\n }\n\n const toutisticContentsIcons = await this.getIcons(currentTouristicContentsFeatureCollection, 'category_pictogram');\n\n this.currentToutisticContentsLayer = L.geoJSON(currentTouristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentsIcons[geoJsonPoint.properties.category_pictogram]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><img src=${toutisticContentsIcons[geoJsonPoint.properties.category_pictogram]} /></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><img /></div>`,\n className: this.grwApp ? '' : 'cursor-pointer',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.on('click', () => {\n if (!this.grwApp) {\n this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n }\n });\n layer.on('mouseover', () => {\n const touristicContentTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentTooltip.part = 'touristic-content-tooltip';\n touristicContentTooltip.className = 'touristic-content-tooltip';\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentName.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentTooltip.appendChild(touristicContentName);\n layer.bindTooltip(touristicContentTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentTouristicEvents() {\n if (state.trekTouristicEvents && state.trekTouristicEvents.length > 0) {\n const currentTouristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicEvent of state.trekTouristicEvents) {\n currentTouristicEventsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n id: touristicEvent.id,\n name: touristicEvent.name,\n type_pictogram: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === touristicEvent.type)?.pictogram,\n },\n geometry: touristicEvent.geometry,\n });\n }\n\n const toutisticEventsIcons = await this.getIcons(currentTouristicEventsFeatureCollection, 'type_pictogram');\n this.currentTouristicEventsLayer = L.geoJSON(currentTouristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticEventsIcons[geoJsonPoint.properties.type_pictogram]\n ? `\n <div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><img src=${toutisticEventsIcons[geoJsonPoint.properties.type_pictogram]} /></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><img /></div>`,\n className: this.grwApp ? '' : 'cursor-pointer',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.on('click', () => {\n if (!this.grwApp) {\n this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n }\n });\n layer.once('mouseover', () => {\n const touristicEventTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventTooltip.part = 'touristic-event-tooltip';\n touristicEventTooltip.className = 'touristic-event-tooltip';\n const touristicEventName = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n touristicEventName.className = 'touristic-event-name';\n touristicEventTooltip.appendChild(touristicEventName);\n layer.bindTooltip(touristicEventTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentInformationDesks(currentData) {\n if (state.currentInformationDesks && state.currentInformationDesks.length > 0) {\n const currentInformationDesksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentInformationDesk of state.currentInformationDesks.filter(currentInformationDesks => currentData.information_desks.includes(currentInformationDesks.id))) {\n if (currentInformationDesk.latitude && currentInformationDesk.longitude) {\n currentInformationDesksFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentInformationDesk.name, type_pictogram: currentInformationDesk.type.pictogram },\n geometry: { type: 'Point', coordinates: [Number(currentInformationDesk.longitude), Number(currentInformationDesk.latitude)] },\n });\n }\n }\n\n if (currentInformationDesksFeatureCollection.features.length > 0) {\n const informationDesksIcons = await this.getIcons(currentInformationDesksFeatureCollection, 'type_pictogram');\n this.currentInformationDesksLayer = L.geoJSON(currentInformationDesksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: informationDesksIcons[geoJsonPoint.properties.type_pictogram]\n ? `<div part=\"information-desks-marker\" class=\"information-desks-marker\"><img src=${informationDesksIcons[geoJsonPoint.properties.type_pictogram]} /></div>`\n : `<div part=\"information-desks-marker\" class=\"information-desks-marker\"><img /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const informationDesksTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n informationDesksTooltip.part = 'information-desks-tooltip';\n informationDesksTooltip.className = 'information-desks-tooltip';\n const informationDesksName = L.DomUtil.create('div');\n /* @ts-ignore */\n informationDesksName.part = 'information-desks-name';\n informationDesksName.innerHTML = geoJsonPoint.properties.name;\n informationDesksName.className = 'information-desks-name';\n informationDesksTooltip.appendChild(informationDesksName);\n layer.bindTooltip(informationDesksTooltip).openTooltip();\n });\n },\n });\n }\n }\n }\n\n handleLayersControl() {\n const overlays = {};\n if (this.currentStepsLayer) {\n overlays[translate[state.language].layers.steps] = this.currentStepsLayer;\n }\n if (this.currentReferencePointsLayer) {\n overlays[translate[state.language].layers.referencePoints] = this.currentReferencePointsLayer;\n }\n if (this.currentParkingLayer) {\n overlays[translate[state.language].layers.parking] = this.currentParkingLayer;\n }\n if (this.currentSensitiveAreasLayer) {\n overlays[translate[state.language].layers.sensitiveArea] = this.currentSensitiveAreasLayer;\n }\n if (this.currentInformationDesksLayer) {\n overlays[translate[state.language].layers.informationPlaces] = this.currentInformationDesksLayer;\n }\n if (this.currentPoisLayer) {\n overlays[translate[state.language].layers.pois] = this.currentPoisLayer;\n }\n if (this.currentSignagesLayer) {\n overlays[translate[state.language].layers.signages] = this.currentSignagesLayer;\n this.currentSignagesLayer.addTo(this.map);\n }\n if (this.currentToutisticContentsLayer) {\n overlays[translate[state.language].layers.touristicContents] = this.currentToutisticContentsLayer;\n }\n if (this.currentTouristicEventsLayer) {\n overlays[translate[state.language].layers.touristicEvents] = this.currentTouristicEventsLayer;\n }\n\n if (this.currentRelatedOutdoorSitesLayer) {\n overlays[translate[state.language].layers.sites] = this.currentRelatedOutdoorSitesLayer;\n }\n\n if (this.currentRelatedOutdoorCoursesLayer) {\n overlays[translate[state.language].layers.courses] = this.currentRelatedOutdoorCoursesLayer;\n }\n\n if (this.layersControl) {\n Object.keys(overlays).forEach(key => {\n this.layersControl.addOverlay(overlays[key], key);\n });\n } else if (Object.keys(overlays).length > 0) {\n this.layersControl = L.control.layers({}, overlays, { collapsed: true }).addTo(this.map);\n }\n\n this.handleLayersControlEvent();\n }\n\n handleLayersOnRemove() {\n if (this.layersControl) {\n if (!(this.layersControl as any)._layers.some(layer => !layer.overlay)) {\n this.map.removeControl(this.layersControl);\n this.layersControl = null;\n } else {\n (this.layersControl as any)._layers\n .filter(layer => layer.overlay)\n .forEach(layer => {\n this.layersControl.removeLayer(layer.layer);\n });\n }\n }\n\n if (this.elevationControl) {\n (this.elevationControl as any).clear();\n this.map.removeControl(this.elevationControl);\n this.elevationControl = null;\n }\n\n if (this.departureArrivalLayer) {\n this.map.removeLayer(this.departureArrivalLayer);\n this.departureArrivalLayer = null;\n }\n\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n\n if (this.currentParkingLayer) {\n this.map.removeLayer(this.currentParkingLayer);\n this.currentParkingLayer = null;\n }\n\n if (this.currentSensitiveAreasLayer) {\n this.map.removeLayer(this.currentSensitiveAreasLayer);\n this.currentSensitiveAreasLayer = null;\n }\n\n if (this.currentPoisLayer) {\n this.map.removeLayer(this.currentPoisLayer);\n this.currentPoisLayer = null;\n }\n\n if (this.currentSignagesLayer) {\n this.map.removeLayer(this.currentSignagesLayer);\n this.currentSignagesLayer = null;\n }\n\n if (this.currentInformationDesksLayer) {\n this.map.removeLayer(this.currentInformationDesksLayer);\n this.currentInformationDesksLayer = null;\n }\n\n if (this.currentReferencePointsLayer) {\n this.map.removeLayer(this.currentReferencePointsLayer);\n this.currentReferencePointsLayer = null;\n }\n\n if (this.currentStepsLayer) {\n this.map.removeLayer(this.currentStepsLayer);\n this.currentStepsLayer = null;\n }\n\n if (this.currentToutisticContentsLayer) {\n this.map.removeLayer(this.currentToutisticContentsLayer);\n this.currentToutisticContentsLayer = null;\n }\n if (this.currentTouristicEventsLayer) {\n this.map.removeLayer(this.currentTouristicEventsLayer);\n this.currentTouristicEventsLayer = null;\n }\n if (this.currentOutdoorSiteLayer) {\n this.map.removeLayer(this.currentOutdoorSiteLayer);\n this.currentOutdoorSiteLayer = null;\n }\n if (this.currentOutdoorCourseLayer) {\n this.map.removeLayer(this.currentOutdoorCourseLayer);\n this.currentOutdoorCourseLayer = null;\n }\n if (this.currentRelatedOutdoorSitesLayer) {\n this.map.removeLayer(this.currentRelatedOutdoorSitesLayer);\n this.currentRelatedOutdoorSitesLayer = null;\n }\n if (this.currentRelatedOutdoorCoursesLayer) {\n this.map.removeLayer(this.currentRelatedOutdoorCoursesLayer);\n this.currentRelatedOutdoorCoursesLayer = null;\n }\n }\n\n @Listen('resize', { target: 'window' })\n onWindowResize() {\n this.handleView();\n }\n\n handleView() {\n const elevationHeight = this.mapElement.getBoundingClientRect().width >= this.largeViewSize ? this.elevationHeight : this.mobileElevationHeight;\n if (this.elevationControl) {\n (this.elevationControl.options as any).height = elevationHeight;\n (this.elevationControl as any).redraw();\n }\n if (this.map) {\n this.map.invalidateSize();\n }\n forceUpdate(this.hostElement);\n }\n\n handleElevation() {\n (this.elevationControl as any).eleDiv.style.display = (this.elevationControl as any).eleDiv.style.display === 'block' ? 'none' : 'block';\n (this.elevationControl as any).redraw();\n forceUpdate(this.hostElement);\n }\n\n render() {\n const layersImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/layers.svg`);\n const contractImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/contract.svg`);\n\n return (\n <Host\n ref={el => (this.hostElement = el)}\n style={{\n '--font-family': this.fontFamily,\n '--color-primary-app': this.colorPrimaryApp,\n '--color-on-surface': this.colorOnSurface,\n '--color-primary-container': this.colorPrimaryContainer,\n '--color-on-primary-container': this.colorOnPrimaryContainer,\n '--color-background': this.colorBackground,\n '--color-markers': this.colorMarkers ? this.colorMarkers : this.colorPrimaryApp,\n '--color-clusters': this.colorClusters ? this.colorClusters : this.colorPrimaryApp,\n '--color-trek-line': this.colorTrekLine,\n '--layers-image-src': `url(${layersImageSrc})`,\n '--contract-image-src': `url(${contractImageSrc})`,\n '--elevation-height': (this.mapElement.getBoundingClientRect().width >= this.largeViewSize / 2 ? this.elevationHeight : this.mobileElevationHeight)\n .toString()\n .concat('px'),\n }}\n >\n <div\n id=\"map\"\n part=\"map\"\n class={\n (state.currentTouristicContent || state.currentTouristicEvent || state.currentOutdoorSite || state.currentOutdoorCourse) && this.grwApp\n ? 'common-map'\n : state.currentTrek && this.elevationControl && (this.elevationControl as any).eleDiv.style.display === 'block'\n ? 'trek-map-and-elevation'\n : state.currentTrek\n ? 'trek-map'\n : 'treks-map'\n }\n ref={el => (this.mapRef = el)}\n >\n {state.currentTrek && (\n <div class=\"grw-elevation-visibility-button-container\">\n <grw-fab\n exportparts=\"fab-visibility-button,fab-visibility-button-icon,fab-visibility-button-label\"\n font-family={this.fontFamily}\n action={() => this.handleElevation()}\n icon={() => (this.elevationControl && (this.elevationControl as any).eleDiv.style.display === 'block' ? 'show-elevation' : 'hide-elevation')}\n showTitle={translate[state.language].showElevation}\n hideTitle={translate[state.language].hideElevation}\n fab-background-color={this.fabBackgroundColor}\n fab-color={this.fabColor}\n ></grw-fab>\n </div>\n )}\n </div>\n\n {!this.mapIsReady && (\n <div part=\"map-loader-container\" class=\"map-loader-container\">\n <span part=\"loader\" class=\"loader\"></span>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}