@geops/rvf-mobility-web-component 0.1.127-beta.1 → 0.1.127-beta.2

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 (624) hide show
  1. package/dist/ExportMenu-HGGM7Z53.js +229 -0
  2. package/dist/chunk-5TBO732O.js +1 -0
  3. package/dist/chunk-7SZT7G2L.js +3 -0
  4. package/dist/chunk-AOWOBR67.js +37 -0
  5. package/dist/chunk-CZ6RUAVW.js +3 -0
  6. package/dist/chunk-FK6H3RFT.js +1 -0
  7. package/dist/chunk-L5TSFF6Q.js +6 -0
  8. package/dist/chunk-W5KNTEOZ.js +1 -0
  9. package/dist/deflate-7Y7TJOU7.js +1 -0
  10. package/dist/html2canvas-HSPYX66M.js +28 -0
  11. package/dist/index.es-LIBYYWEU.js +23 -0
  12. package/dist/indexDoc.js +1 -0
  13. package/dist/jpeg-IRWWL5ZF.js +1 -0
  14. package/dist/lerc-NVL4MKRG.js +6 -0
  15. package/dist/lzw-EHQHNZB6.js +1 -0
  16. package/dist/packbits-PQSBS4GQ.js +1 -0
  17. package/dist/purify.es-4R37HRTQ.js +7 -0
  18. package/dist/raw-OK63VTT6.js +1 -0
  19. package/dist/webimage-DLGKDXZD.js +1 -0
  20. package/dist/zstd-JFJYRN7P.js +1 -0
  21. package/package.json +4 -1
  22. package/.fixpackrc +0 -21
  23. package/.github/CODEOWNERS +0 -37
  24. package/.github/workflows/conventional-pr-title.yml +0 -36
  25. package/.husky/commit-msg +0 -1
  26. package/.husky/post-checkout +0 -1
  27. package/.husky/post-merge +0 -1
  28. package/.husky/post-rebase +0 -1
  29. package/.husky/pre-commit +0 -1
  30. package/.lintstagedrc.js +0 -13
  31. package/.nvmrc +0 -1
  32. package/.prettierrc.js +0 -3
  33. package/Logo.svg +0 -10
  34. package/__mocks__/dataurl.js +0 -11
  35. package/__mocks__/mapbox-gl.js +0 -19
  36. package/commitlint.config.cjs +0 -1
  37. package/doc/.eslintrc.json +0 -3
  38. package/doc/.fixpackrc +0 -21
  39. package/doc/.prettierrc +0 -1
  40. package/doc/README.md +0 -14
  41. package/doc/next.config.mjs +0 -8
  42. package/doc/package.json +0 -44
  43. package/doc/postcss.config.mjs +0 -8
  44. package/doc/public/README.md +0 -1
  45. package/doc/src/app/components/GeopsAPIKeyLink.tsx +0 -6
  46. package/doc/src/app/components/GeopsAPIsLink.tsx +0 -6
  47. package/doc/src/app/components/GeopsMapsAPILink.tsx +0 -8
  48. package/doc/src/app/components/GeopsMobility.tsx +0 -23
  49. package/doc/src/app/components/GeopsMobilityDoc.tsx +0 -39
  50. package/doc/src/app/components/GeopsMobilitySearch.tsx +0 -22
  51. package/doc/src/app/components/GeopsMobilitySearchDoc.tsx +0 -33
  52. package/doc/src/app/components/GeopsRealtimeAPILink.tsx +0 -10
  53. package/doc/src/app/components/GeopsStopsAPILink.tsx +0 -8
  54. package/doc/src/app/components/Link.tsx +0 -9
  55. package/doc/src/app/components/WebComponentDoc.tsx +0 -284
  56. package/doc/src/app/favicon.ico +0 -0
  57. package/doc/src/app/geops-mobility/page.tsx +0 -11
  58. package/doc/src/app/geops-mobility-search/page.tsx +0 -11
  59. package/doc/src/app/globals.css +0 -58
  60. package/doc/src/app/hooks/useAttrFromUrlParams.ts +0 -21
  61. package/doc/src/app/hooks/useIsFullScreen.ts +0 -14
  62. package/doc/src/app/hooks/usePublicKey.ts +0 -19
  63. package/doc/src/app/layout.tsx +0 -53
  64. package/doc/src/app/page.tsx +0 -86
  65. package/doc/src/geops-ui.ts +0 -3
  66. package/doc/tsconfig.json +0 -41
  67. package/docutils.js +0 -417
  68. package/eslint.config.mjs +0 -34
  69. package/favicon.ico +0 -0
  70. package/fonts/source-sans-3/source-sans-3-v15-latin-500.ttf +0 -0
  71. package/fonts/source-sans-3/source-sans-3-v15-latin-500.woff2 +0 -0
  72. package/fonts/source-sans-3/source-sans-3-v15-latin-600.ttf +0 -0
  73. package/fonts/source-sans-3/source-sans-3-v15-latin-600.woff2 +0 -0
  74. package/fonts/source-sans-3/source-sans-3-v15-latin-700.ttf +0 -0
  75. package/fonts/source-sans-3/source-sans-3-v15-latin-700.woff2 +0 -0
  76. package/fonts/source-sans-3/source-sans-3-v15-latin-regular.ttf +0 -0
  77. package/fonts/source-sans-3/source-sans-3-v15-latin-regular.woff2 +0 -0
  78. package/global.d.ts +0 -9
  79. package/iframe.html +0 -233
  80. package/index.html +0 -147
  81. package/index.js +0 -4343
  82. package/index.js.map +0 -7
  83. package/indexDoc.js +0 -37
  84. package/indexDoc.js.map +0 -7
  85. package/input.css +0 -59
  86. package/jest-setup.js +0 -13
  87. package/jest.config.js +0 -17
  88. package/notifications.html +0 -144
  89. package/scripts/build.mjs +0 -17
  90. package/scripts/dev.mjs +0 -30
  91. package/search.html +0 -122
  92. package/src/BaseLayer/BaseLayer.tsx +0 -61
  93. package/src/BaseLayer/index.tsx +0 -1
  94. package/src/Copyright/Copyright.tsx +0 -51
  95. package/src/Copyright/index.tsx +0 -1
  96. package/src/DebugDeparture/DebugDeparture.tsx +0 -120
  97. package/src/DebugDeparture/index.tsx +0 -1
  98. package/src/DebugStop/DebugStop.tsx +0 -47
  99. package/src/DebugStop/index.tsx +0 -1
  100. package/src/Departure/Departure.tsx +0 -57
  101. package/src/Departure/index.tsx +0 -1
  102. package/src/EmbedNavigation/DragPanWarning.ts +0 -133
  103. package/src/EmbedNavigation/EmbedNavigation.tsx +0 -89
  104. package/src/EmbedNavigation/index.js +0 -1
  105. package/src/EmbedNavigation/index.tsx +0 -1
  106. package/src/ExportMenu/ExportMenu.tsx +0 -114
  107. package/src/ExportMenu/index.tsx +0 -1
  108. package/src/ExportMenuButton/ExportMenuButton.tsx +0 -33
  109. package/src/ExportMenuButton/index.tsx +0 -1
  110. package/src/FeatureDetails/FeatureDetails.tsx +0 -62
  111. package/src/FeatureDetails/index.ts +0 -1
  112. package/src/FeaturesInfosListener/FeaturesInfosListener.tsx +0 -142
  113. package/src/FeaturesInfosListener/index.tsx +0 -1
  114. package/src/GeolocationButton/GeolocationButton.tsx +0 -78
  115. package/src/GeolocationButton/index.tsx +0 -1
  116. package/src/I18n/I18n.tsx +0 -38
  117. package/src/I18n/index.tsx +0 -1
  118. package/src/LayerTree/LayerTree.tsx +0 -58
  119. package/src/LayerTree/TreeItem/TreeItem.tsx +0 -153
  120. package/src/LayerTree/TreeItem/index.tsx +0 -1
  121. package/src/LayerTree/index.tsx +0 -1
  122. package/src/LayerTree/layersTreeContext.ts +0 -4
  123. package/src/LayerTree/layersTreeReducer.ts +0 -158
  124. package/src/LayerTreeButton/LayerTreeButton.tsx +0 -33
  125. package/src/LayerTreeButton/index.tsx +0 -1
  126. package/src/LayerTreeMenu/LayerTreeMenu.tsx +0 -147
  127. package/src/LayerTreeMenu/index.tsx +0 -1
  128. package/src/LayoutState/LayoutState.tsx +0 -380
  129. package/src/LayoutState/index.tsx +0 -1
  130. package/src/LinesNetworkPlanDetails/LinesNetworkPlanDetails.tsx +0 -274
  131. package/src/LinesNetworkPlanDetails/index.tsx +0 -1
  132. package/src/LinesNetworkPlanLayer/LinesNetworkPlanLayer.tsx +0 -51
  133. package/src/LinesNetworkPlanLayer/index.tsx +0 -1
  134. package/src/LinesNetworkPlanLayerHighlight/LinesNetworkPlanLayerHighlight.tsx +0 -59
  135. package/src/LinesNetworkPlanLayerHighlight/index.tsx +0 -1
  136. package/src/Map/Map.tsx +0 -166
  137. package/src/Map/index.tsx +0 -1
  138. package/src/MapDispatchEvents/MapDispatchEvents.tsx +0 -87
  139. package/src/MapDispatchEvents/index.tsx +0 -1
  140. package/src/MapLayout/MapLayout.tsx +0 -172
  141. package/src/MapLayout/index.tsx +0 -1
  142. package/src/MapsetLayer/MapsetLayer.tsx +0 -111
  143. package/src/MapsetLayer/index.tsx +0 -1
  144. package/src/MobilityMap/MobilityMap.tsx +0 -338
  145. package/src/MobilityMap/MobilityMapAttributes.test.ts +0 -59
  146. package/src/MobilityMap/MobilityMapAttributes.ts +0 -381
  147. package/src/MobilityMap/MobilityMapEvents.ts +0 -53
  148. package/src/MobilityMap/index.css +0 -0
  149. package/src/MobilityMap/index.tsx +0 -2
  150. package/src/MobilityNotifications/MobilityNotifications.tsx +0 -153
  151. package/src/MobilityNotifications/MobilityNotificationsAttributes.test.ts +0 -35
  152. package/src/MobilityNotifications/MobilityNotificationsAttributes.ts +0 -53
  153. package/src/MobilityNotifications/index.ts +0 -2
  154. package/src/MobilitySearch/MobilitySearch.tsx +0 -35
  155. package/src/MobilitySearch/MobilitySearchAttributes.test.ts +0 -21
  156. package/src/MobilitySearch/MobilitySearchAttributes.ts +0 -87
  157. package/src/MobilitySearch/MobilitySearchEvents.ts +0 -21
  158. package/src/MobilitySearch/index.ts +0 -2
  159. package/src/NotificationDetails/NotificationDetails.tsx +0 -309
  160. package/src/NotificationDetails/index.ts +0 -1
  161. package/src/NotificationsLayer/NotificationsLayer.tsx +0 -118
  162. package/src/NotificationsLayer/index.tsx +0 -1
  163. package/src/Overlay/Overlay.tsx +0 -61
  164. package/src/Overlay/index.tsx +0 -1
  165. package/src/OverlayContent/OverlayContent.tsx +0 -101
  166. package/src/OverlayContent/index.ts +0 -1
  167. package/src/OverlayDetails/OverlayDetails.tsx +0 -93
  168. package/src/OverlayDetails/index.ts +0 -1
  169. package/src/OverlayDetailsFooter/OverlayDetailsFooter.tsx +0 -50
  170. package/src/OverlayDetailsFooter/index.tsx +0 -1
  171. package/src/OverlayDetailsHeader/OverlayDetailsHeader.tsx +0 -30
  172. package/src/OverlayDetailsHeader/index.ts +0 -1
  173. package/src/OverlayFooter/OverlayFooter.tsx +0 -42
  174. package/src/OverlayFooter/index.tsx +0 -1
  175. package/src/OverlayHeader/OverlayHeader.tsx +0 -44
  176. package/src/OverlayHeader/index.tsx +0 -1
  177. package/src/Permalink/Permalink.tsx +0 -89
  178. package/src/Permalink/index.tsx +0 -1
  179. package/src/PermalinkInput/PermalinkInput.tsx +0 -33
  180. package/src/PermalinkInput/index.tsx +0 -1
  181. package/src/RealtimeLayer/RealtimeLayer.tsx +0 -299
  182. package/src/RealtimeLayer/index.tsx +0 -1
  183. package/src/RouteDestination/RouteDestination.test.tsx +0 -13
  184. package/src/RouteDestination/RouteDestination.tsx +0 -15
  185. package/src/RouteDestination/index.tsx +0 -1
  186. package/src/RouteFollowingButton/RouteFollowingButton.tsx +0 -30
  187. package/src/RouteFollowingButton/index.tsx +0 -1
  188. package/src/RouteIcon/RouteIcon.tsx +0 -99
  189. package/src/RouteIcon/index.tsx +0 -1
  190. package/src/RouteIdentifier/RouteIdentifer.tsx +0 -36
  191. package/src/RouteIdentifier/index.tsx +0 -1
  192. package/src/RouteInfos/RouteInfos.tsx +0 -26
  193. package/src/RouteInfos/index.tsx +0 -1
  194. package/src/RouteSchedule/RouteSchedule.tsx +0 -59
  195. package/src/RouteSchedule/firstStation.png +0 -0
  196. package/src/RouteSchedule/index.tsx +0 -1
  197. package/src/RouteSchedule/lastStation.png +0 -0
  198. package/src/RouteSchedule/line.png +0 -0
  199. package/src/RouteSchedule/station.png +0 -0
  200. package/src/RouteScheduleFooter/RouteScheduleFooter.tsx +0 -46
  201. package/src/RouteScheduleFooter/index.tsx +0 -1
  202. package/src/RouteScheduleHeader/RouteScheduleHeader.tsx +0 -23
  203. package/src/RouteScheduleHeader/index.tsx +0 -1
  204. package/src/RouteStop/RouteStop.tsx +0 -108
  205. package/src/RouteStop/index.tsx +0 -1
  206. package/src/RouteStopDelay/RouteStopDelay.tsx +0 -37
  207. package/src/RouteStopDelay/index.tsx +0 -1
  208. package/src/RouteStopName/RouteStopName.tsx +0 -24
  209. package/src/RouteStopName/index.tsx +0 -1
  210. package/src/RouteStopPlatform/RouteStopPlatform.tsx +0 -27
  211. package/src/RouteStopPlatform/index.tsx +0 -1
  212. package/src/RouteStopProgress/RouteStopProgress.tsx +0 -100
  213. package/src/RouteStopProgress/index.tsx +0 -1
  214. package/src/RouteStopServices/RouteStopServices.tsx +0 -26
  215. package/src/RouteStopServices/index.tsx +0 -1
  216. package/src/RouteStopStation/RouteStopStation.tsx +0 -38
  217. package/src/RouteStopStation/index.tsx +0 -1
  218. package/src/RouteStopTime/RouteStopTime.tsx +0 -35
  219. package/src/RouteStopTime/index.tsx +0 -1
  220. package/src/RvfButton/RvfButton.tsx +0 -57
  221. package/src/RvfButton/index.tsx +0 -1
  222. package/src/RvfCheckbox/RvfCheckbox.tsx +0 -31
  223. package/src/RvfCheckbox/index.tsx +0 -1
  224. package/src/RvfCopyright/RvfCopyright.tsx +0 -36
  225. package/src/RvfCopyright/index.tsx +0 -1
  226. package/src/RvfFeatureDetails/RvfFeatureDetails.tsx +0 -46
  227. package/src/RvfFeatureDetails/RvfLineNetworkDetails/RvfLineNetworkDetails.tsx +0 -292
  228. package/src/RvfFeatureDetails/RvfLineNetworkDetails/index.js +0 -1
  229. package/src/RvfFeatureDetails/RvfNotificationDetails/RvfNotificationDetails.tsx +0 -36
  230. package/src/RvfFeatureDetails/RvfNotificationDetails/index.ts +0 -1
  231. package/src/RvfFeatureDetails/RvfSellingPointDetails/RvfSellingPointDetails.tsx +0 -50
  232. package/src/RvfFeatureDetails/RvfSellingPointDetails/index.js +0 -1
  233. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/FloatingVehiclesDetails/FloatingVehiclesDetails.tsx +0 -74
  234. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/FloatingVehiclesDetails/index.tsx +0 -1
  235. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/RvfSharedMobilityDetails.tsx +0 -134
  236. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/StationDetails/StationDetails.tsx +0 -84
  237. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/StationDetails/index.tsx +0 -1
  238. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/index.tsx +0 -1
  239. package/src/RvfFeatureDetails/index.tsx +0 -1
  240. package/src/RvfIconButton/RvfIconButton.tsx +0 -49
  241. package/src/RvfIconButton/index.tsx +0 -1
  242. package/src/RvfInputCopy/RvfInputCopy.tsx +0 -67
  243. package/src/RvfInputCopy/index.tsx +0 -1
  244. package/src/RvfLink/RvfLink.tsx +0 -54
  245. package/src/RvfLink/index.tsx +0 -1
  246. package/src/RvfMainLinkButton/RvfMainLinkButton.tsx +0 -62
  247. package/src/RvfMainLinkButton/index.tsx +0 -1
  248. package/src/RvfMapLayout/RvfMapLayout.tsx +0 -202
  249. package/src/RvfMapLayout/index.tsx +0 -1
  250. package/src/RvfMobilityMap/RvfMobilityMap.tsx +0 -58
  251. package/src/RvfMobilityMap/index.css +0 -13
  252. package/src/RvfMobilityMap/index.tsx +0 -1
  253. package/src/RvfModal/RvfModal.tsx +0 -53
  254. package/src/RvfModal/index.tsx +0 -1
  255. package/src/RvfOpenStrikeNotification/RvfOpenStrikeNotification.tsx +0 -120
  256. package/src/RvfOpenStrikeNotification/index.tsx +0 -1
  257. package/src/RvfOverlayHeader/RvfOverlayHeader.tsx +0 -43
  258. package/src/RvfOverlayHeader/index.tsx +0 -1
  259. package/src/RvfPoisLayer/RvfPoisLayer.tsx +0 -48
  260. package/src/RvfPoisLayer/index.tsx +0 -1
  261. package/src/RvfRadioButton/RvfRadioButton.tsx +0 -16
  262. package/src/RvfRadioButton/index.tsx +0 -1
  263. package/src/RvfRealtimeLayer/RvfRealtimeLayer.tsx +0 -77
  264. package/src/RvfRealtimeLayer/index.tsx +0 -1
  265. package/src/RvfRouteIcon/RvfRouteIcon.tsx +0 -10
  266. package/src/RvfRouteIcon/index.tsx +0 -1
  267. package/src/RvfSearch/RvfSearch.tsx +0 -34
  268. package/src/RvfSearch/index.tsx +0 -1
  269. package/src/RvfSelect/RvfSelect.tsx +0 -24
  270. package/src/RvfSelect/index.tsx +0 -1
  271. package/src/RvfSelectedFeatureHighlightLayer/RvfSelectedFeatureHighlightLayer.tsx +0 -101
  272. package/src/RvfSelectedFeatureHighlightLayer/index.tsx +0 -1
  273. package/src/RvfSellingPointsLayer/RvfSellingPointsLayer.tsx +0 -67
  274. package/src/RvfSellingPointsLayer/index.tsx +0 -1
  275. package/src/RvfSharedMobilityLayerGroup/RvfSharedMobilityLayerGroup.tsx +0 -479
  276. package/src/RvfSharedMobilityLayerGroup/index.tsx +0 -1
  277. package/src/RvfStationsLayer/RvfStationsLayer.tsx +0 -19
  278. package/src/RvfStationsLayer/index.tsx +0 -1
  279. package/src/RvfTarifZonenLayer/RvfTarifZonenLayer.tsx +0 -48
  280. package/src/RvfTarifZonenLayer/index.tsx +0 -1
  281. package/src/ScaleLine/ScaleLine.tsx +0 -52
  282. package/src/ScaleLine/index.css +0 -6
  283. package/src/ScaleLine/index.tsx +0 -1
  284. package/src/ScrollableHandler/ScrollableHandler.tsx +0 -66
  285. package/src/ScrollableHandler/index.tsx +0 -1
  286. package/src/Search/Search.tsx +0 -50
  287. package/src/Search/SearchBase.tsx +0 -187
  288. package/src/Search/SearchHeadless.tsx +0 -79
  289. package/src/Search/index.tsx +0 -3
  290. package/src/SearchButton/SearchButton.tsx +0 -33
  291. package/src/SearchButton/index.tsx +0 -1
  292. package/src/SearchLinesResult/SearchLinesResult.tsx +0 -43
  293. package/src/SearchLinesResult/index.tsx +0 -1
  294. package/src/SearchLinesResults/SearchLinesResults.tsx +0 -106
  295. package/src/SearchLinesResults/index.tsx +0 -1
  296. package/src/SearchLnpStopsResult/SearchLnpStopsResult.tsx +0 -42
  297. package/src/SearchLnpStopsResult/index.tsx +0 -1
  298. package/src/SearchLnpStopsResults/SearchLnpStopsResults.tsx +0 -106
  299. package/src/SearchLnpStopsResults/index.tsx +0 -1
  300. package/src/SearchResult/SearchResult.tsx +0 -25
  301. package/src/SearchResult/index.tsx +0 -1
  302. package/src/SearchResults/SearchResults.tsx +0 -81
  303. package/src/SearchResults/index.tsx +0 -1
  304. package/src/SearchResultsHeader/SearchResultsHeader.tsx +0 -36
  305. package/src/SearchResultsHeader/index.tsx +0 -1
  306. package/src/SearchStopsResult/SearchStopsResult.tsx +0 -43
  307. package/src/SearchStopsResult/index.tsx +0 -1
  308. package/src/SearchStopsResults/SearchStopsResults.tsx +0 -101
  309. package/src/SearchStopsResults/index.tsx +0 -1
  310. package/src/SearchTrainsResult/SearchTrainsResult.tsx +0 -42
  311. package/src/SearchTrainsResult/index.tsx +0 -1
  312. package/src/SearchTrainsResults/SearchTrainsResults.tsx +0 -106
  313. package/src/SearchTrainsResults/index.tsx +0 -1
  314. package/src/ShadowOverflow/ShadowOverflow.tsx +0 -28
  315. package/src/ShadowOverflow/index.tsx +0 -1
  316. package/src/ShareMenu/ShareMenu.tsx +0 -43
  317. package/src/ShareMenu/index.tsx +0 -1
  318. package/src/ShareMenuButton/ShareMenuButton.tsx +0 -34
  319. package/src/ShareMenuButton/index.tsx +0 -1
  320. package/src/SingleClickListener/SingleClickListener.tsx +0 -164
  321. package/src/SingleClickListener/index.tsx +0 -1
  322. package/src/SituationDetails/SituationDetails.tsx +0 -370
  323. package/src/SituationDetails/index.ts +0 -1
  324. package/src/Station/Station.tsx +0 -50
  325. package/src/Station/index.tsx +0 -1
  326. package/src/StationHeader/StationHeader.tsx +0 -32
  327. package/src/StationHeader/index.tsx +0 -1
  328. package/src/StationName/StationName.tsx +0 -21
  329. package/src/StationName/index.tsx +0 -1
  330. package/src/StationServices/StationServices.tsx +0 -80
  331. package/src/StationServices/index.tsx +0 -1
  332. package/src/StationsLayer/StationsLayer.tsx +0 -53
  333. package/src/StationsLayer/index.tsx +0 -1
  334. package/src/StopsSearch/StopsSearch.tsx +0 -344
  335. package/src/StopsSearch/index.tsx +0 -1
  336. package/src/WindowMessageListener/WindowMessageListener.tsx +0 -74
  337. package/src/WindowMessageListener/index.tsx +0 -1
  338. package/src/ZoomButtons/ZoomButtons.tsx +0 -80
  339. package/src/ZoomButtons/index.tsx +0 -1
  340. package/src/icons/Airport/Airport.tsx +0 -17
  341. package/src/icons/Airport/airport-14-svgrepo-com.svg +0 -1
  342. package/src/icons/Airport/index.tsx +0 -1
  343. package/src/icons/ArrowDown/ArrowDown.tsx +0 -22
  344. package/src/icons/ArrowDown/down-open.svg +0 -1
  345. package/src/icons/ArrowDown/index.tsx +0 -1
  346. package/src/icons/ArrowRight/ArrowRight.tsx +0 -19
  347. package/src/icons/ArrowRight/arrow-right.svg +0 -1
  348. package/src/icons/ArrowRight/index.tsx +0 -1
  349. package/src/icons/ArrowUp/ArrowUp.tsx +0 -22
  350. package/src/icons/ArrowUp/index.tsx +0 -1
  351. package/src/icons/ArrowUp/up-open.svg +0 -1
  352. package/src/icons/ArrowUpRight/ArrowUpRight.tsx +0 -35
  353. package/src/icons/ArrowUpRight/index.tsx +0 -1
  354. package/src/icons/ArrowUpRight/up-open.svg +0 -1
  355. package/src/icons/Automat/Automat.tsx +0 -8
  356. package/src/icons/Automat/index.tsx +0 -1
  357. package/src/icons/Automat/rvf_automat.svg +0 -1
  358. package/src/icons/BarAndRestaurants/BarAndRestaurants.tsx +0 -17
  359. package/src/icons/BarAndRestaurants/food-restaurant-svgrepo-com.svg +0 -1
  360. package/src/icons/BarAndRestaurants/index.tsx +0 -1
  361. package/src/icons/Bathroom/Bathroom.tsx +0 -59
  362. package/src/icons/Bathroom/bathroom-restroom-svgrepo-com.svg +0 -1
  363. package/src/icons/Bathroom/index.tsx +0 -1
  364. package/src/icons/Bike/Bike.tsx +0 -8
  365. package/src/icons/Bike/index.tsx +0 -1
  366. package/src/icons/Bike/rvf_shared_bike.svg +0 -1
  367. package/src/icons/BikeStorage/BikeStorage.tsx +0 -17
  368. package/src/icons/BikeStorage/index.tsx +0 -1
  369. package/src/icons/BikeStorage/parking-bicycle-14-svgrepo-com.svg +0 -1
  370. package/src/icons/Cancel/Cancel.tsx +0 -21
  371. package/src/icons/Cancel/cancel.svg +0 -1
  372. package/src/icons/Cancel/index.tsx +0 -1
  373. package/src/icons/Car/Car.tsx +0 -8
  374. package/src/icons/Car/index.tsx +0 -1
  375. package/src/icons/Car/rvf_shared_car.svg +0 -1
  376. package/src/icons/CargoBike/CargoBike.tsx +0 -8
  377. package/src/icons/CargoBike/index.tsx +0 -1
  378. package/src/icons/CargoBike/rvf_shared_cargo_bike.svg +0 -1
  379. package/src/icons/Copy/Copy.tsx +0 -25
  380. package/src/icons/Copy/index.tsx +0 -1
  381. package/src/icons/Doc/Doc.tsx +0 -19
  382. package/src/icons/Doc/doc.svg +0 -1
  383. package/src/icons/Doc/index.tsx +0 -1
  384. package/src/icons/DownOpen/DownOpen.tsx +0 -24
  385. package/src/icons/DownOpen/down-open.svg +0 -1
  386. package/src/icons/DownOpen/index.tsx +0 -1
  387. package/src/icons/Download/Download.tsx +0 -20
  388. package/src/icons/Download/download.svg +0 -1
  389. package/src/icons/Download/index.tsx +0 -1
  390. package/src/icons/Ebike/Ebike.tsx +0 -8
  391. package/src/icons/Ebike/index.tsx +0 -1
  392. package/src/icons/Ebike/rvf_shared_e-bike.svg +0 -1
  393. package/src/icons/Elevator/Elevator.tsx +0 -16
  394. package/src/icons/Elevator/elevator-svgrepo-com.svg +0 -1
  395. package/src/icons/Elevator/index.tsx +0 -1
  396. package/src/icons/Email/Email.tsx +0 -19
  397. package/src/icons/Email/email.svg +0 -1
  398. package/src/icons/Email/index.tsx +0 -1
  399. package/src/icons/FilePdf/FilePdf.tsx +0 -19
  400. package/src/icons/FilePdf/file-pdf.svg +0 -1
  401. package/src/icons/FilePdf/index.tsx +0 -1
  402. package/src/icons/Geolocation/Geolocation.tsx +0 -19
  403. package/src/icons/Geolocation/index.tsx +0 -1
  404. package/src/icons/Geolocation/location.svg +0 -1
  405. package/src/icons/Image/Image.tsx +0 -24
  406. package/src/icons/Image/index.tsx +0 -1
  407. package/src/icons/InPerson/InPerson.tsx +0 -8
  408. package/src/icons/InPerson/index.tsx +0 -1
  409. package/src/icons/InPerson/rvf_persoenlich.svg +0 -1
  410. package/src/icons/Loading/Loading.tsx +0 -24
  411. package/src/icons/Loading/index.ts +0 -1
  412. package/src/icons/Menu/Menu.tsx +0 -32
  413. package/src/icons/Menu/index.tsx +0 -1
  414. package/src/icons/Menu/menu.svg +0 -1
  415. package/src/icons/Minus/Minus.tsx +0 -19
  416. package/src/icons/Minus/index.tsx +0 -1
  417. package/src/icons/Minus/minus-grey.svg +0 -1
  418. package/src/icons/Minus/minus.svg +0 -1
  419. package/src/icons/NoRealtime/NoRealtime.tsx +0 -44
  420. package/src/icons/NoRealtime/index.tsx +0 -1
  421. package/src/icons/NoRealtime/norealtime.svg +0 -1
  422. package/src/icons/Ok/ok-grey.svg +0 -1
  423. package/src/icons/Ok/ok.svg +0 -1
  424. package/src/icons/Plus/Plus.tsx +0 -19
  425. package/src/icons/Plus/index.tsx +0 -1
  426. package/src/icons/Plus/plus.svg +0 -1
  427. package/src/icons/Police/Police.tsx +0 -20
  428. package/src/icons/Police/index.tsx +0 -1
  429. package/src/icons/Police/polizia.png +0 -0
  430. package/src/icons/README.md +0 -52
  431. package/src/icons/Ride/Ride.tsx +0 -8
  432. package/src/icons/Ride/index.tsx +0 -1
  433. package/src/icons/Ride/rvf_shared_ride.svg +0 -1
  434. package/src/icons/Scooter/Scooter.tsx +0 -8
  435. package/src/icons/Scooter/index.tsx +0 -1
  436. package/src/icons/Scooter/rvf_shared_scooter.svg +0 -1
  437. package/src/icons/Search/Search.tsx +0 -38
  438. package/src/icons/Search/index.tsx +0 -1
  439. package/src/icons/Search/search.svg +0 -1
  440. package/src/icons/Share/Share.tsx +0 -24
  441. package/src/icons/Share/index.tsx +0 -1
  442. package/src/icons/Stack/Stack.tsx +0 -24
  443. package/src/icons/Stack/index.tsx +0 -1
  444. package/src/icons/TouchFingers/TouchFingers.tsx +0 -20
  445. package/src/icons/TouchFingers/index.tsx +0 -1
  446. package/src/icons/Tracking/Tracking.tsx +0 -29
  447. package/src/icons/Tracking/airport-14-svgrepo-com.svg +0 -1
  448. package/src/icons/Tracking/index.tsx +0 -1
  449. package/src/icons/Video/Video.tsx +0 -8
  450. package/src/icons/Video/index.tsx +0 -1
  451. package/src/icons/Video/rvf_video.svg +0 -1
  452. package/src/icons/WaitingAreas/WaitingAreas.tsx +0 -16
  453. package/src/icons/WaitingAreas/highway-rest-area-svgrepo-com.svg +0 -1
  454. package/src/icons/WaitingAreas/index.tsx +0 -1
  455. package/src/icons/WaitingAreas/wheelchair-svgrepo-com.svg +0 -1
  456. package/src/icons/Warning/Warning.tsx +0 -56
  457. package/src/icons/Warning/exported_features_20251029101203.kml +0 -20
  458. package/src/icons/Warning/index.tsx +0 -1
  459. package/src/icons/Warning/info-achtung-kreisrot-rot.svg +0 -1
  460. package/src/icons/WheelChair/WheelChair.tsx +0 -16
  461. package/src/icons/WheelChair/disabili.png +0 -0
  462. package/src/icons/WheelChair/index.tsx +0 -1
  463. package/src/icons/WheelChair/wheelchair-svgrepo-com.svg +0 -1
  464. package/src/icons/disruption-type-banner.xcf +0 -0
  465. package/src/icons/rvf_shared_ride_2.svg +0 -1
  466. package/src/icons/sbb_add_stop.png +0 -0
  467. package/src/icons/sbb_add_stop.svg +0 -1
  468. package/src/icons/sbb_alternative.png +0 -0
  469. package/src/icons/sbb_alternative.svg +0 -1
  470. package/src/icons/sbb_cancellation.png +0 -0
  471. package/src/icons/sbb_cancellation.svg +0 -1
  472. package/src/icons/sbb_construction.png +0 -0
  473. package/src/icons/sbb_construction.svg +0 -1
  474. package/src/icons/sbb_construction_banner.png +0 -0
  475. package/src/icons/sbb_delay.png +0 -0
  476. package/src/icons/sbb_delay.svg +0 -1
  477. package/src/icons/sbb_disruption.png +0 -0
  478. package/src/icons/sbb_disruption.svg +0 -1
  479. package/src/icons/sbb_disruption_banner.png +0 -0
  480. package/src/icons/sbb_info.png +0 -0
  481. package/src/icons/sbb_info.svg +0 -1
  482. package/src/icons/sbb_missed_connection.png +0 -0
  483. package/src/icons/sbb_missed_connection.svg +0 -1
  484. package/src/icons/sbb_missed_connection_banner.png +0 -0
  485. package/src/icons/sbb_platform_change.png +0 -0
  486. package/src/icons/sbb_platform_change.svg +0 -1
  487. package/src/icons/sbb_replacementbus.png +0 -0
  488. package/src/icons/sbb_replacementbus.svg +0 -1
  489. package/src/icons/sbb_replacementbus_banner.png +0 -0
  490. package/src/icons/sbb_reroute.png +0 -0
  491. package/src/icons/sbb_reroute.svg +0 -1
  492. package/src/icons/warning-banner.png +0 -0
  493. package/src/icons/warning-banner.xcf +0 -0
  494. package/src/icons/warning.png +0 -0
  495. package/src/index.tsx +0 -44
  496. package/src/indexDoc.ts +0 -35
  497. package/src/logos/00_RegioRad_Stuttgart.svg +0 -1
  498. package/src/logos/01_Call_a_bike.svg +0 -1
  499. package/src/logos/03_KVV_nextbike.svg +0 -1
  500. package/src/logos/05_VrnNextbike.svg +0 -1
  501. package/src/logos/2em_carsharing.svg +0 -1
  502. package/src/logos/CarSharing-Renningen.png +0 -0
  503. package/src/logos/aubonne-basel-pickebike.svg +0 -1
  504. package/src/logos/br_logo.svg +0 -1
  505. package/src/logos/callabike_logo.png +0 -0
  506. package/src/logos/carsharing_stadtmobil_karlsruhe_rhein_neckar.svg +0 -1
  507. package/src/logos/compte-mobilite.png +0 -0
  508. package/src/logos/deer.svg +0 -1
  509. package/src/logos/donkey_republic.png +0 -0
  510. package/src/logos/edrive_carsharing.svg +0 -1
  511. package/src/logos/flinkster_logo.png +0 -0
  512. package/src/logos/gruene-flotte-logo-1.svg +0 -1
  513. package/src/logos/gruene_flotte_logo.png +0 -0
  514. package/src/logos/lasten_velo_freiburg.png +0 -0
  515. package/src/logos/lie_mobil.svg +0 -1
  516. package/src/logos/logo-einfach-mobil-ortenau.png +0 -0
  517. package/src/logos/logo-red.svg +0 -1
  518. package/src/logos/logo_frelo_web_rgb.png +0 -0
  519. package/src/logos/logo_teilauto.png +0 -0
  520. package/src/logos/mein_konrad.svg +0 -1
  521. package/src/logos/mit_fahr_punkt.png +0 -0
  522. package/src/logos/natur_energie_logo.png +0 -0
  523. package/src/logos/natur_energie_logo.xcf +0 -0
  524. package/src/logos/publibike_logo.svg +0 -1
  525. package/src/logos/share-birrer.svg +0 -1
  526. package/src/logos/stadtmobil_suedbaden.svg +0 -1
  527. package/src/logos/stadtwerke_tauberfranken.png +0 -0
  528. package/src/logos/teilauto_biberach.png +0 -0
  529. package/src/logos/velospot_fribourg.png +0 -0
  530. package/src/logos/yoio_logo.png +0 -0
  531. package/src/logos/zeag_carsharing.png +0 -0
  532. package/src/logos/zeo_carsharing.png +0 -0
  533. package/src/logos/zeus_logo.png +0 -0
  534. package/src/logos/zeus_logo.xcf +0 -0
  535. package/src/ui/Button/Button.tsx +0 -64
  536. package/src/ui/Button/index.tsx +0 -1
  537. package/src/ui/Checkbox/Checkbox.tsx +0 -32
  538. package/src/ui/Checkbox/index.tsx +0 -1
  539. package/src/ui/IconButton/IconButton.tsx +0 -64
  540. package/src/ui/IconButton/index.tsx +0 -1
  541. package/src/ui/Input/Input.tsx +0 -24
  542. package/src/ui/Input/index.tsx +0 -1
  543. package/src/ui/InputCopy/InputCopy.tsx +0 -97
  544. package/src/ui/InputCopy/index.tsx +0 -1
  545. package/src/ui/InputSearch/InputSearch.tsx +0 -106
  546. package/src/ui/InputSearch/index.tsx +0 -1
  547. package/src/ui/Link/Link.tsx +0 -49
  548. package/src/ui/Link/index.tsx +0 -1
  549. package/src/ui/Select/Select.tsx +0 -24
  550. package/src/ui/Select/index.tsx +0 -1
  551. package/src/utils/MobilityEvent.ts +0 -22
  552. package/src/utils/applyInitialLayerVisibility.ts +0 -48
  553. package/src/utils/centerOnVehicle.ts +0 -58
  554. package/src/utils/constants.ts +0 -242
  555. package/src/utils/exportPdf.ts +0 -671
  556. package/src/utils/fullTrajectoryStyle.ts +0 -53
  557. package/src/utils/getAllLayers.ts +0 -26
  558. package/src/utils/getBgColor.ts +0 -20
  559. package/src/utils/getDelayColor.test.ts +0 -23
  560. package/src/utils/getDelayColor.ts +0 -23
  561. package/src/utils/getDelayColorForVehicle.test.ts +0 -47
  562. package/src/utils/getDelayColorForVehicle.ts +0 -27
  563. package/src/utils/getDelayString.test.ts +0 -25
  564. package/src/utils/getDelayString.ts +0 -28
  565. package/src/utils/getDelayTextForVehicle.test.ts +0 -32
  566. package/src/utils/getDelayTextForVehicle.ts +0 -25
  567. package/src/utils/getFullTrajectoryAndFit.ts +0 -41
  568. package/src/utils/getHoursAndMinutes.test.ts +0 -15
  569. package/src/utils/getHoursAndMinutes.ts +0 -22
  570. package/src/utils/getLayersAsFlatArray.ts +0 -22
  571. package/src/utils/getLinkByDevice.ts +0 -23
  572. package/src/utils/getMainColorForVehicle.test.ts +0 -25
  573. package/src/utils/getMainColorForVehicle.ts +0 -54
  574. package/src/utils/getPermalinkParameters.ts +0 -35
  575. package/src/utils/getRadius.ts +0 -46
  576. package/src/utils/getStopStatus.test.ts +0 -105
  577. package/src/utils/getStopStatus.ts +0 -171
  578. package/src/utils/getTextColor.ts +0 -10
  579. package/src/utils/getTextColorForVehicle.ts +0 -31
  580. package/src/utils/getTextFontForVehicle.test.ts +0 -7
  581. package/src/utils/getTextFontForVehicle.tsx +0 -17
  582. package/src/utils/getTextForVehicle.test.ts +0 -17
  583. package/src/utils/getTextForVehicle.ts +0 -25
  584. package/src/utils/getUrlFromTemplate.test.ts +0 -23
  585. package/src/utils/getUrlFromTemplate.ts +0 -47
  586. package/src/utils/highlightLinesNetworkPlan.ts +0 -25
  587. package/src/utils/hooks/useDebug.tsx +0 -11
  588. package/src/utils/hooks/useDeparture.tsx +0 -24
  589. package/src/utils/hooks/useFit.tsx +0 -57
  590. package/src/utils/hooks/useFitOnFeatures.tsx +0 -77
  591. package/src/utils/hooks/useI18n.tsx +0 -23
  592. package/src/utils/hooks/useInitialLayersVisiblity.tsx +0 -58
  593. package/src/utils/hooks/useInitialPermalink.tsx +0 -93
  594. package/src/utils/hooks/useLayerConfig.tsx +0 -17
  595. package/src/utils/hooks/useLayersConfig.tsx +0 -49
  596. package/src/utils/hooks/useLnp.tsx +0 -146
  597. package/src/utils/hooks/useMapContext.tsx +0 -166
  598. package/src/utils/hooks/useMocoSituation.tsx +0 -62
  599. package/src/utils/hooks/useParams.ts +0 -5
  600. package/src/utils/hooks/usePermalink.tsx +0 -25
  601. package/src/utils/hooks/useRealtimeDepartures.tsx +0 -45
  602. package/src/utils/hooks/useRealtimeRenderedTrajectory.tsx +0 -42
  603. package/src/utils/hooks/useRealtimeStation.tsx +0 -39
  604. package/src/utils/hooks/useRealtimeStopSequences.tsx +0 -43
  605. package/src/utils/hooks/useRealtimeTrainsByRouteIdentifier.tsx +0 -72
  606. package/src/utils/hooks/useRouteStop.tsx +0 -40
  607. package/src/utils/hooks/useRvfContext.tsx +0 -46
  608. package/src/utils/hooks/useScrollTo.tsx +0 -36
  609. package/src/utils/hooks/useSearchLines.tsx +0 -34
  610. package/src/utils/hooks/useSearchLnpStops.tsx +0 -38
  611. package/src/utils/hooks/useSearchStops.tsx +0 -85
  612. package/src/utils/hooks/useSearchTrains.tsx +0 -83
  613. package/src/utils/hooks/useZoom.tsx +0 -44
  614. package/src/utils/mergePublications.test.ts +0 -91
  615. package/src/utils/mergePublications.ts +0 -52
  616. package/src/utils/realtimeRVFStyle.ts +0 -523
  617. package/src/utils/sharingGraphqlUtils.ts +0 -320
  618. package/src/utils/sharingStylesUtils.ts +0 -222
  619. package/src/utils/sharingWFSUtils.ts +0 -116
  620. package/src/utils/translations.ts +0 -252
  621. package/src/utils/translationsReasons.ts +0 -716
  622. package/tailwind.config.mjs +0 -95
  623. package/testNotification.json +0 -115
  624. package/tsconfig.json +0 -12
@@ -1,671 +0,0 @@
1
- import jsPDF from "jspdf";
2
- import { CopyrightControl } from "mobility-toolbox-js/ol";
3
- import { Map } from "ol";
4
- import { getBottomRight, getTopLeft } from "ol/extent";
5
- import View from "ol/View";
6
-
7
- import { EXPORT_PREFIX } from "./constants";
8
-
9
- import type { jsPDFOptions } from "jspdf";
10
- import type { Coordinate } from "ol/coordinate";
11
- import type { Extent } from "ol/extent";
12
- import type BaseLayer from "ol/layer/Base";
13
- import type { MapOptions } from "ol/Map";
14
- import type { Size } from "ol/size";
15
- import type { ViewOptions } from "ol/View";
16
-
17
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
18
- const getMargin = (destCanvas) => {
19
- const newMargin = destCanvas.width / 100; // 1% of the canvas width
20
- return newMargin;
21
- };
22
-
23
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
- const getDefaultDownloadImageName = (format) => {
25
- const fileExt = format === "image/jpeg" ? "jpg" : "png";
26
- return `${window.document.title.replace(/ /g, "_").toLowerCase()}.${fileExt}`;
27
- };
28
-
29
- let multilineCopyright = false;
30
- const copyrightY = 0;
31
-
32
- // Ensure the font size fita with the image width.
33
- const decreaseFontSize = (destContext, maxWidth, copyright, scale = 1) => {
34
- const minFontSize = 8;
35
- let sizeMatch;
36
- let fontSize;
37
- do {
38
- sizeMatch = destContext.font.match(/[0-9]+(?:\.[0-9]+)?(px)/i);
39
- fontSize = parseInt(sizeMatch[0].replace(sizeMatch[1], ""), 10);
40
-
41
- destContext.font = destContext.font.replace(fontSize, fontSize - 1);
42
-
43
- multilineCopyright = false;
44
-
45
- if (fontSize - 1 === minFontSize) {
46
- multilineCopyright = true;
47
- }
48
- } while (
49
- fontSize - 1 > minFontSize &&
50
- destContext.measureText(copyright).width * scale > maxWidth
51
- );
52
-
53
- return destContext.font;
54
- };
55
-
56
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
57
- const drawTextBackground = (
58
- destContext,
59
- x,
60
- y,
61
- width,
62
- height,
63
- styleOptions = {},
64
- ) => {
65
- destContext.save();
66
- // Dflt is a white background
67
- destContext.fillStyle = "rgba(255,255,255,.8)";
68
-
69
- // To simplify usability the user could pass a boolean to use only default values.
70
- if (typeof styleOptions === "object") {
71
- Object.entries(styleOptions).forEach(([key, value]) => {
72
- destContext[key] = value;
73
- });
74
- }
75
-
76
- /// draw background rect assuming height of font
77
- destContext.fillRect(x, y, width, height);
78
- destContext.restore();
79
- };
80
-
81
- export interface DrawCopyrightOptions {
82
- background?: boolean;
83
- fillStyle?: string;
84
- font?: string;
85
- margin?: number;
86
- maxWidth?: number;
87
- padding?: number;
88
- placement?: Placement;
89
- scale?: number;
90
- }
91
-
92
- export type Placement =
93
- | "bottom-left"
94
- | "bottom-right"
95
- | "top-left"
96
- | "top-right";
97
-
98
- // Remove all transparent pixels around the drawing
99
- const trimCanvas = (function () {
100
- function rowBlank(imageData, width, y) {
101
- for (let x = 0; x < width; ++x) {
102
- if (imageData.data[y * width * 4 + x * 4 + 3] !== 0) {
103
- return false;
104
- }
105
- }
106
- return true;
107
- }
108
-
109
- function columnBlank(imageData, width, x, top, bottom) {
110
- for (let y = top; y < bottom; ++y) {
111
- if (imageData.data[y * width * 4 + x * 4 + 3] !== 0) {
112
- return false;
113
- }
114
- }
115
- return true;
116
- }
117
-
118
- return function (canvas) {
119
- const ctx = canvas.getContext("2d");
120
- const width = canvas.width;
121
- const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
122
- let bottom = imageData.height,
123
- left = 0,
124
- right = imageData.width,
125
- top = 0;
126
-
127
- while (top < bottom && rowBlank(imageData, width, top)) {
128
- ++top;
129
- }
130
- while (bottom - 1 > top && rowBlank(imageData, width, bottom - 1)) {
131
- --bottom;
132
- }
133
- while (left < right && columnBlank(imageData, width, left, top, bottom)) {
134
- ++left;
135
- }
136
- while (
137
- right - 1 > left &&
138
- columnBlank(imageData, width, right - 1, top, bottom)
139
- ) {
140
- --right;
141
- }
142
-
143
- const trimmed = ctx.getImageData(left, top, right - left, bottom - top);
144
- const copy = canvas.ownerDocument.createElement("canvas");
145
- const copyCtx = copy.getContext("2d");
146
- copy.width = trimmed.width;
147
- copy.height = trimmed.height;
148
- copyCtx.putImageData(trimmed, 0, 0);
149
-
150
- return copy;
151
- };
152
- })();
153
-
154
- const drawText = (
155
- text: string,
156
- width: number,
157
- height: number,
158
- contextProps: {
159
- fillStyle?: string;
160
- font?: string;
161
- textAlign?: CanvasTextAlign;
162
- textBaseline?: CanvasTextBaseline;
163
- },
164
- ) => {
165
- const canvas = document.createElement("canvas");
166
- canvas.width = width;
167
- canvas.height = height;
168
-
169
- const {
170
- fillStyle = "black",
171
- font = "12px Arial",
172
- textAlign = "left",
173
- textBaseline = "top",
174
- } = contextProps;
175
-
176
- const ctx = canvas.getContext("2d");
177
-
178
- ctx.fillStyle = fillStyle;
179
- ctx.font = font;
180
- ctx.font = decreaseFontSize(ctx, canvas.width, text);
181
- ctx.textAlign = textAlign;
182
- ctx.textBaseline = textBaseline;
183
-
184
- // We search if the display on 2 line is necessary
185
- let firstLine = text;
186
- let firstLineMetrics = ctx.measureText(firstLine);
187
-
188
- // If the text is bigger than the max width we split it into 2 lines
189
- if (multilineCopyright) {
190
- const wordNumber = text.split(" ").length;
191
- for (let i = 0; i < wordNumber; i += 1) {
192
- // Stop removing word when fits within one line.
193
- // Wher comes the scale from?
194
- // if (firstLineMetrics.width * (scale ?? 1) < canvas.width) {
195
- if (firstLineMetrics.width * 1 < canvas.width) {
196
- break;
197
- }
198
- firstLine = firstLine.substring(0, firstLine.lastIndexOf(" "));
199
- firstLineMetrics = ctx.measureText(firstLine);
200
- }
201
- }
202
-
203
- // Define second line if necessary
204
- const secondLine = text.replace(firstLine, "").trim();
205
-
206
- // At this point we know the number of lines to display.
207
- let lines = [firstLine, secondLine].filter((l) => {
208
- return !!l;
209
- });
210
-
211
- if (textBaseline === "bottom") {
212
- lines = lines.reverse();
213
- }
214
-
215
- // Draw the elements on the canvas
216
- const lineX = textAlign === "right" ? canvas.width : 0;
217
- let lineY = textBaseline === "bottom" ? canvas.height : 0;
218
-
219
- lines.forEach((line) => {
220
- const { fontBoundingBoxAscent, fontBoundingBoxDescent } =
221
- ctx.measureText(line);
222
- const heightt = fontBoundingBoxAscent + fontBoundingBoxDescent;
223
- ctx.fillText(line, lineX, lineY);
224
-
225
- let delta = heightt;
226
- if (textBaseline === "bottom") {
227
- delta = -heightt;
228
- }
229
-
230
- lineY = lineY + delta;
231
- });
232
-
233
- const canvasTrim = trimCanvas(canvas);
234
- return canvasTrim;
235
- };
236
-
237
- const drawCopyright = (
238
- text: (() => string) | string,
239
- destCanvas: HTMLCanvasElement,
240
- options: DrawCopyrightOptions = {},
241
- ) => {
242
- const { fillStyle, font, margin = 10, placement = "bottom-left" } = options;
243
- const [placementY, placementX] = placement.split("-");
244
- const txt = typeof text === "function" ? text() : text;
245
- const canvas = drawText(txt, destCanvas.width, destCanvas.height, {
246
- fillStyle,
247
- font,
248
- textAlign: placementX as CanvasTextAlign,
249
- textBaseline: placementY as CanvasTextBaseline,
250
- });
251
-
252
- let x = margin;
253
- let y = margin;
254
-
255
- if (placementX === "right") {
256
- x = destCanvas.width - canvas.width - margin;
257
- }
258
- if (placementY === "bottom") {
259
- y = destCanvas.height - canvas.height - margin;
260
- }
261
-
262
- destCanvas.getContext("2d").drawImage(canvas, x, y);
263
- };
264
-
265
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
266
- const drawElement = (
267
- data: {
268
- height?: number;
269
- rotation?: (() => number) | number;
270
- src: string;
271
- width?: number;
272
- },
273
- destCanvas: HTMLCanvasElement,
274
- scale: number,
275
- margin: number,
276
- padding: number,
277
- previousItemSize = [0, 0],
278
- side = "right",
279
- ) => {
280
- const destContext = destCanvas.getContext("2d");
281
- const { height, rotation, src, width } = data;
282
-
283
- return new Promise<number[] | undefined>((resolve) => {
284
- const img = new Image();
285
- img.crossOrigin = "Anonymous";
286
- img.src = src;
287
- img.onload = () => {
288
- destContext.save();
289
- const elementWidth = (width || 80) * scale;
290
- const elementHeight = (height || 80) * scale;
291
- const left =
292
- side === "left"
293
- ? margin + elementWidth / 2
294
- : destCanvas.width - margin - elementWidth / 2;
295
- const top =
296
- (side === "left" && copyrightY
297
- ? copyrightY - padding
298
- : destCanvas.height) -
299
- margin -
300
- elementHeight / 2 -
301
- previousItemSize[1];
302
-
303
- destContext.translate(left, top);
304
-
305
- if (rotation) {
306
- const angle = typeof rotation === "function" ? rotation() : rotation;
307
- destContext.rotate(angle * (Math.PI / 180));
308
- }
309
-
310
- destContext.drawImage(
311
- img,
312
- -elementWidth / 2,
313
- -elementHeight / 2,
314
- elementWidth,
315
- elementHeight,
316
- );
317
- destContext.restore();
318
-
319
- // Return the pixels width of the arrow and the margin right,
320
- // that must not be occupied by the copyright.
321
- resolve([elementWidth + 2 * padding, elementHeight + 2 * padding]);
322
- };
323
-
324
- img.onerror = () => {
325
- resolve(undefined);
326
- };
327
- });
328
- };
329
-
330
- const calculatePixelsToExport = (map: Map, extent: Extent, coordinates) => {
331
- let firstCoordinate;
332
- let oppositeCoordinate;
333
-
334
- if (extent) {
335
- firstCoordinate = getTopLeft(extent);
336
- oppositeCoordinate = getBottomRight(extent);
337
- } else if (coordinates) {
338
- // In case of coordinates coming from DragBox interaction:
339
- // firstCoordinate is the first coordinate drawn by the user.
340
- // oppositeCoordinate is the coordinate of the point dragged by the user.
341
- [firstCoordinate, , oppositeCoordinate] = coordinates;
342
- }
343
-
344
- if (firstCoordinate && oppositeCoordinate) {
345
- const firstPixel = map.getPixelFromCoordinate(firstCoordinate);
346
- const oppositePixel = map.getPixelFromCoordinate(oppositeCoordinate);
347
- const pixelTopLeft = [
348
- firstPixel[0] <= oppositePixel[0] ? firstPixel[0] : oppositePixel[0],
349
- firstPixel[1] <= oppositePixel[1] ? firstPixel[1] : oppositePixel[1],
350
- ];
351
- const pixelBottomRight = [
352
- firstPixel[0] > oppositePixel[0] ? firstPixel[0] : oppositePixel[0],
353
- firstPixel[1] > oppositePixel[1] ? firstPixel[1] : oppositePixel[1],
354
- ];
355
-
356
- return {
357
- h: pixelBottomRight[1] - pixelTopLeft[1],
358
- w: pixelBottomRight[0] - pixelTopLeft[0],
359
- x: pixelTopLeft[0],
360
- y: pixelTopLeft[1],
361
- };
362
- }
363
- return null;
364
- };
365
-
366
- // Create an canvas from a map.
367
- const createCanvasImage = (
368
- map: Map,
369
- extent?: Extent,
370
- coordinates?: Coordinate[],
371
- ): Promise<HTMLCanvasElement> => {
372
- // Find all layer canvases and add it to dest canvas.
373
- const canvases = map.getTargetElement().getElementsByTagName("canvas");
374
-
375
- // Create the canvas to export with the good size.
376
- let destCanvas: HTMLCanvasElement;
377
- let destContext: CanvasRenderingContext2D;
378
-
379
- // canvases is an HTMLCollection, we don't try to transform to array because some compilers like cra doesn't translate it right.
380
- // eslint-disable-next-line @typescript-eslint/prefer-for-of
381
- for (let i = 0; i < canvases.length; i += 1) {
382
- const canvas = canvases[i];
383
- if (!canvas.width || !canvas.height) {
384
- continue;
385
- }
386
- const clip = calculatePixelsToExport(map, extent, coordinates) || {
387
- h: canvas.height,
388
- w: canvas.width,
389
- x: 0,
390
- y: 0,
391
- };
392
-
393
- if (!destCanvas) {
394
- destCanvas = document.createElement("canvas");
395
- destCanvas.width = clip.w;
396
- destCanvas.height = clip.h;
397
- destContext = destCanvas.getContext("2d");
398
- }
399
-
400
- // Draw canvas to the canvas to export.
401
- destContext.drawImage(
402
- canvas,
403
- clip.x,
404
- clip.y,
405
- clip.w,
406
- clip.h,
407
- 0,
408
- 0,
409
- destCanvas.width,
410
- destCanvas.height,
411
- );
412
- }
413
-
414
- return Promise.resolve(destCanvas);
415
- };
416
-
417
- const downloadCanvasImage = (
418
- canvas: HTMLCanvasElement,
419
- format = "image/png",
420
- getDownloadImageName = (formatImage: string) => {
421
- return formatImage.replace("/", ".");
422
- },
423
- ): Promise<boolean> => {
424
- try {
425
- // @ts-expect-error - msToBlob is not standard
426
- if (window.navigator.msSaveBlob) {
427
- // ie 11 and higher
428
- let image;
429
- try {
430
- // @ts-expect-error - msToBlob is not standard
431
- image = canvas.msToBlob();
432
- } catch (error) {
433
- console.error(error);
434
- }
435
- const blob = new Blob([image], {
436
- type: format,
437
- });
438
- // @ts-expect-error - msSaveBlob is not standard
439
- window.navigator.msSaveBlob(blob, getDownloadImageName(format));
440
- } else {
441
- canvas.toBlob((blob) => {
442
- const link = document.createElement("a");
443
- link.download = getDownloadImageName(format);
444
- link.href = URL.createObjectURL(blob);
445
- // append child to document for firefox to be able to download.
446
- document.body.appendChild(link);
447
- link.click();
448
- }, format);
449
- }
450
-
451
- return Promise.resolve(true);
452
- } catch (error) {
453
- console.error(error);
454
- return Promise.resolve(false);
455
- }
456
- };
457
-
458
- // Create a map with the good pixel ratio and the good extent
459
- const createMapToExport = async (
460
- map: Map,
461
- layers: BaseLayer[],
462
- extent?: Extent,
463
- size?: Size,
464
- mapOptions: MapOptions = {},
465
- viewOptions: ViewOptions = {},
466
- ): Promise<Map> => {
467
- const mapSize = size || map.getSize();
468
- const extentToFit = extent;
469
-
470
- // We create a temporary map.
471
- const div = document.createElement("div");
472
- div.style.width = `${mapSize[0]}px`;
473
- div.style.height = `${mapSize[1]}px`;
474
- div.style.margin = `0 0 0 -50000px`; // we move the map to the left to be ensure it is hidden during export
475
- document.body.style.overflow = "hidden";
476
- div.style.position = "absolute";
477
- div.style.top = "400px";
478
- div.style.zIndex = "10000";
479
- document.body.append(div);
480
-
481
- const mapHd = new Map({
482
- pixelRatio: window.devicePixelRatio,
483
- target: div,
484
- view: new View({
485
- center: map.getView().getCenter(),
486
- projection: map.getView().getProjection(),
487
- zoom: map.getView().getZoom(),
488
- ...viewOptions,
489
- // extent: extentToFit,
490
- }),
491
- ...mapOptions,
492
- });
493
-
494
- if (extentToFit) {
495
- mapHd.getView().fit(extentToFit);
496
- }
497
-
498
- mapHd.setLayers(layers);
499
-
500
- // The following is a bit hackish I think it's because the RealtimeLayer is never considered as readyif there is not trajectories
501
- const promise = new Promise<Map>((resolve) => {
502
- // If nothing happens in 10 sec we try to produce a pdf
503
- const timeout = window.setTimeout(() => {
504
- resolve(mapHd);
505
- }, 10000);
506
-
507
- // rendercomplete is triggered when all the layers renderer have the property "ready" to true.
508
- mapHd.once("rendercomplete", () => {
509
- clearTimeout(timeout);
510
- resolve(mapHd);
511
- });
512
- });
513
-
514
- return await promise;
515
- };
516
-
517
- // Sizes in pixel from a jspdf format
518
- export const sizesByFormat72Dpi: Record<string, number[]> = {
519
- // https://www.din-formate.de/reihe-a-din-groessen-mm-pixel-dpi.html
520
- A0: [3370, 2384],
521
- A1: [2384, 1684],
522
- A3: [1191, 842],
523
- A4: [842, 595],
524
- };
525
-
526
- export interface CopyrightExportOptions {
527
- margin?: number;
528
- padding?: number;
529
- placement?: "bottom-left" | "bottom-right" | "top-left" | "top-right";
530
- text?: string;
531
- }
532
-
533
- export interface MapExportOptions {
534
- copyrightOptions?: CopyrightExportOptions;
535
- maxExtent?: number[];
536
- onAfter?: (map: Map, layers: BaseLayer[]) => void;
537
- onBefore?: (map: Map, layers: BaseLayer[]) => void;
538
- pixelRatio?: number;
539
- text?: string;
540
- useCopyright?: boolean;
541
- usePlaceholder?: boolean;
542
- }
543
-
544
- async function exportPdf(
545
- map: Map,
546
- formatOptions: jsPDFOptions = {},
547
- mapExportOptions: MapExportOptions = {},
548
- ): Promise<boolean> {
549
- const {
550
- maxExtent,
551
- onAfter,
552
- onBefore,
553
- pixelRatio = 3,
554
- useCopyright = true,
555
- usePlaceholder = true,
556
- } = mapExportOptions;
557
-
558
- const format = formatOptions?.format || "A4";
559
- const sizePt = sizesByFormat72Dpi[format as string] || (format as number[]);
560
- const size = sizePt.map((n) => {
561
- return (n * 96) / 72;
562
- });
563
- const extent = maxExtent;
564
-
565
- // Save current pixel ratio
566
- const actualPixelRatio = window.devicePixelRatio;
567
-
568
- // Set pixel ratio for maplibre
569
- Object.defineProperty(window, "devicePixelRatio", {
570
- get() {
571
- return pixelRatio;
572
- },
573
- });
574
-
575
- // Create a shadow map during export process to avoid flickering
576
- let placeholderCanvas: HTMLCanvasElement | undefined;
577
- if (usePlaceholder) {
578
- placeholderCanvas = await createCanvasImage(map);
579
- placeholderCanvas.style.zIndex = "0";
580
- placeholderCanvas.style.position = "absolute";
581
- map
582
- .getViewport()
583
- .querySelector(".ol-layers")
584
- .insertAdjacentElement("afterend", placeholderCanvas);
585
- }
586
-
587
- // Save current map state
588
- const layers = [...map.getLayers().getArray()];
589
-
590
- const copyrightText =
591
- mapExportOptions?.copyrightOptions?.text ||
592
- map
593
- .getControls()
594
- .getArray()
595
- .find((control) => {
596
- return control instanceof CopyrightControl;
597
- // @ts-expect-error - element is private
598
- })?.element?.textContent;
599
-
600
- map.getLayers().clear();
601
-
602
- // Hide/show some layer before export
603
- onBefore?.(map, layers);
604
-
605
- // Creates a new map with proper size and extent
606
- const mapToExport = await createMapToExport(map, layers, extent, size, {
607
- pixelRatio: pixelRatio,
608
- });
609
- Object.defineProperty(window, "devicePixelRatio", {
610
- get() {
611
- return actualPixelRatio;
612
- },
613
- });
614
-
615
- // Creates map canvas image
616
- const canvas = await createCanvasImage(mapToExport);
617
-
618
- // Clean up mapHd
619
- mapToExport.getLayers().clear();
620
- mapToExport.getTargetElement().remove();
621
- mapToExport.setTarget(null);
622
- mapToExport.dispose();
623
-
624
- document.body.style.overflow = "auto";
625
-
626
- // Reset map to previous state
627
- map.setLayers(layers);
628
-
629
- // Undo what you have done on onBefore
630
- onAfter?.(map, layers);
631
-
632
- if (placeholderCanvas) {
633
- map.once("rendercomplete", () => {
634
- placeholderCanvas.remove();
635
- });
636
- }
637
-
638
- // Add custom content
639
- if (useCopyright) {
640
- drawCopyright(copyrightText, canvas, {
641
- ...(mapExportOptions?.copyrightOptions || {}),
642
- font: `${(pixelRatio * 12).toString()}px Arial`,
643
- });
644
- }
645
-
646
- // Transform to PDF
647
- if (/^A[0-9]{1,2}/.test(format as string) || format?.length === 2) {
648
- try {
649
- const doc = new jsPDF({
650
- orientation: "landscape",
651
- unit: "pt",
652
- ...formatOptions,
653
- });
654
-
655
- // Add canvas to PDF
656
- doc.addImage(canvas, "JPEG", 0, 0, sizePt[0], sizePt[1]);
657
-
658
- // Download the pdf
659
- doc.save(`${EXPORT_PREFIX}-${new Date().toISOString().slice(0, 10)}.pdf`);
660
- } catch (error) {
661
- console.error(error);
662
- return false;
663
- }
664
- return true;
665
- } else {
666
- // Download the canvas as image
667
- return await downloadCanvasImage(canvas);
668
- }
669
- }
670
-
671
- export default exportPdf;
@@ -1,53 +0,0 @@
1
- import { Circle, Fill, Stroke, Style } from "ol/style";
2
-
3
- import getBgColor from "./getBgColor";
4
-
5
- import type { FeatureLike } from "ol/Feature";
6
-
7
- const borderStyle = new Style({
8
- image: new Circle({
9
- fill: new Fill({
10
- color: "#000000",
11
- }),
12
- radius: 5,
13
- }),
14
- stroke: new Stroke({
15
- color: "#000000",
16
- width: 6,
17
- }),
18
- zIndex: 2,
19
- });
20
-
21
- const fullTrajectoryStyle = (feature: FeatureLike): Style[] => {
22
- let lineColor = "#ffffff"; // white
23
-
24
- const type = feature.get("type");
25
- let stroke = feature.get("stroke");
26
-
27
- if (stroke && stroke[0] !== "#") {
28
- stroke = `#${stroke}`;
29
- }
30
- lineColor = stroke || getBgColor(type, { name: feature.get("line_name") });
31
-
32
- // Don't allow white lines, use red instead.
33
- lineColor = /#ffffff/i.test(lineColor) ? "#ff0000" : lineColor;
34
-
35
- const style = [
36
- borderStyle,
37
- new Style({
38
- image: new Circle({
39
- fill: new Fill({
40
- color: lineColor,
41
- }),
42
- radius: 4,
43
- }),
44
- stroke: new Stroke({
45
- color: lineColor,
46
- width: 4,
47
- }),
48
- zIndex: 3,
49
- }),
50
- ];
51
- return style;
52
- };
53
- export default fullTrajectoryStyle;