@geops/rvf-mobility-web-component 0.1.128 → 0.1.129

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 (621) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/index.js +22 -1
  3. package/package.json +11 -4
  4. package/.fixpackrc +0 -21
  5. package/.github/CODEOWNERS +0 -37
  6. package/.github/workflows/conventional-pr-title.yml +0 -36
  7. package/.husky/commit-msg +0 -1
  8. package/.husky/post-checkout +0 -1
  9. package/.husky/post-merge +0 -1
  10. package/.husky/post-rebase +0 -1
  11. package/.husky/pre-commit +0 -1
  12. package/.lintstagedrc.js +0 -13
  13. package/.nvmrc +0 -1
  14. package/.prettierrc.js +0 -3
  15. package/.vscode/settings.json +0 -2
  16. package/Logo.svg +0 -10
  17. package/__mocks__/dataurl.js +0 -11
  18. package/__mocks__/mapbox-gl.js +0 -19
  19. package/commitlint.config.cjs +0 -1
  20. package/doc/.eslintrc.json +0 -3
  21. package/doc/.fixpackrc +0 -21
  22. package/doc/.prettierrc +0 -1
  23. package/doc/README.md +0 -14
  24. package/doc/next.config.mjs +0 -8
  25. package/doc/package.json +0 -44
  26. package/doc/postcss.config.mjs +0 -8
  27. package/doc/public/ExportMenu-HGGM7Z53.js +0 -229
  28. package/doc/public/README.md +0 -1
  29. package/doc/public/chunk-5TBO732O.js +0 -1
  30. package/doc/public/chunk-7SZT7G2L.js +0 -3
  31. package/doc/public/chunk-AOWOBR67.js +0 -37
  32. package/doc/public/chunk-CZ6RUAVW.js +0 -3
  33. package/doc/public/chunk-FK6H3RFT.js +0 -1
  34. package/doc/public/chunk-L5TSFF6Q.js +0 -6
  35. package/doc/public/chunk-W5KNTEOZ.js +0 -1
  36. package/doc/public/deflate-7Y7TJOU7.js +0 -1
  37. package/doc/public/html2canvas-HSPYX66M.js +0 -28
  38. package/doc/public/index.es-LIBYYWEU.js +0 -23
  39. package/doc/public/jpeg-IRWWL5ZF.js +0 -1
  40. package/doc/public/lerc-NVL4MKRG.js +0 -6
  41. package/doc/public/lzw-EHQHNZB6.js +0 -1
  42. package/doc/public/packbits-PQSBS4GQ.js +0 -1
  43. package/doc/public/purify.es-4R37HRTQ.js +0 -7
  44. package/doc/public/raw-OK63VTT6.js +0 -1
  45. package/doc/public/webimage-DLGKDXZD.js +0 -1
  46. package/doc/public/zstd-JFJYRN7P.js +0 -1
  47. package/doc/src/app/components/GeopsAPIKeyLink.tsx +0 -6
  48. package/doc/src/app/components/GeopsAPIsLink.tsx +0 -6
  49. package/doc/src/app/components/GeopsMapsAPILink.tsx +0 -8
  50. package/doc/src/app/components/GeopsMobility.tsx +0 -23
  51. package/doc/src/app/components/GeopsMobilityDoc.tsx +0 -39
  52. package/doc/src/app/components/GeopsMobilitySearch.tsx +0 -22
  53. package/doc/src/app/components/GeopsMobilitySearchDoc.tsx +0 -33
  54. package/doc/src/app/components/GeopsRealtimeAPILink.tsx +0 -10
  55. package/doc/src/app/components/GeopsStopsAPILink.tsx +0 -8
  56. package/doc/src/app/components/Link.tsx +0 -9
  57. package/doc/src/app/components/WebComponentDoc.tsx +0 -284
  58. package/doc/src/app/favicon.ico +0 -0
  59. package/doc/src/app/geops-mobility/page.tsx +0 -11
  60. package/doc/src/app/geops-mobility-search/page.tsx +0 -11
  61. package/doc/src/app/globals.css +0 -58
  62. package/doc/src/app/hooks/useAttrFromUrlParams.ts +0 -21
  63. package/doc/src/app/hooks/useIsFullScreen.ts +0 -14
  64. package/doc/src/app/hooks/usePublicKey.ts +0 -19
  65. package/doc/src/app/layout.tsx +0 -53
  66. package/doc/src/app/page.tsx +0 -86
  67. package/doc/src/geops-ui.ts +0 -3
  68. package/doc/tsconfig.json +0 -41
  69. package/docutils.js +0 -417
  70. package/eslint.config.mjs +0 -34
  71. package/favicon.ico +0 -0
  72. package/fonts/source-sans-3/source-sans-3-v15-latin-500.ttf +0 -0
  73. package/fonts/source-sans-3/source-sans-3-v15-latin-500.woff2 +0 -0
  74. package/fonts/source-sans-3/source-sans-3-v15-latin-600.ttf +0 -0
  75. package/fonts/source-sans-3/source-sans-3-v15-latin-600.woff2 +0 -0
  76. package/fonts/source-sans-3/source-sans-3-v15-latin-700.ttf +0 -0
  77. package/fonts/source-sans-3/source-sans-3-v15-latin-700.woff2 +0 -0
  78. package/fonts/source-sans-3/source-sans-3-v15-latin-regular.ttf +0 -0
  79. package/fonts/source-sans-3/source-sans-3-v15-latin-regular.woff2 +0 -0
  80. package/global.d.ts +0 -9
  81. package/iframe.html +0 -233
  82. package/index.html +0 -147
  83. package/index.js +0 -4343
  84. package/input.css +0 -59
  85. package/jest-setup.js +0 -13
  86. package/jest.config.js +0 -17
  87. package/notifications.html +0 -144
  88. package/scripts/build.mjs +0 -15
  89. package/scripts/dev.mjs +0 -27
  90. package/search.html +0 -122
  91. package/src/BaseLayer/BaseLayer.tsx +0 -61
  92. package/src/BaseLayer/index.tsx +0 -1
  93. package/src/Copyright/Copyright.tsx +0 -51
  94. package/src/Copyright/index.tsx +0 -1
  95. package/src/DebugDeparture/DebugDeparture.tsx +0 -120
  96. package/src/DebugDeparture/index.tsx +0 -1
  97. package/src/DebugStop/DebugStop.tsx +0 -47
  98. package/src/DebugStop/index.tsx +0 -1
  99. package/src/Departure/Departure.tsx +0 -57
  100. package/src/Departure/index.tsx +0 -1
  101. package/src/EmbedNavigation/DragPanWarning.ts +0 -133
  102. package/src/EmbedNavigation/EmbedNavigation.tsx +0 -89
  103. package/src/EmbedNavigation/index.js +0 -1
  104. package/src/EmbedNavigation/index.tsx +0 -1
  105. package/src/ExportMenu/ExportMenu.tsx +0 -114
  106. package/src/ExportMenu/index.tsx +0 -1
  107. package/src/ExportMenuButton/ExportMenuButton.tsx +0 -33
  108. package/src/ExportMenuButton/index.tsx +0 -1
  109. package/src/FeatureDetails/FeatureDetails.tsx +0 -62
  110. package/src/FeatureDetails/index.ts +0 -1
  111. package/src/FeaturesInfosListener/FeaturesInfosListener.tsx +0 -142
  112. package/src/FeaturesInfosListener/index.tsx +0 -1
  113. package/src/GeolocationButton/GeolocationButton.tsx +0 -78
  114. package/src/GeolocationButton/index.tsx +0 -1
  115. package/src/I18n/I18n.tsx +0 -38
  116. package/src/I18n/index.tsx +0 -1
  117. package/src/LayerTree/LayerTree.tsx +0 -58
  118. package/src/LayerTree/TreeItem/TreeItem.tsx +0 -153
  119. package/src/LayerTree/TreeItem/index.tsx +0 -1
  120. package/src/LayerTree/index.tsx +0 -1
  121. package/src/LayerTree/layersTreeContext.ts +0 -4
  122. package/src/LayerTree/layersTreeReducer.ts +0 -158
  123. package/src/LayerTreeButton/LayerTreeButton.tsx +0 -33
  124. package/src/LayerTreeButton/index.tsx +0 -1
  125. package/src/LayerTreeMenu/LayerTreeMenu.tsx +0 -147
  126. package/src/LayerTreeMenu/index.tsx +0 -1
  127. package/src/LayoutState/LayoutState.tsx +0 -380
  128. package/src/LayoutState/index.tsx +0 -1
  129. package/src/LinesNetworkPlanDetails/LinesNetworkPlanDetails.tsx +0 -274
  130. package/src/LinesNetworkPlanDetails/index.tsx +0 -1
  131. package/src/LinesNetworkPlanLayer/LinesNetworkPlanLayer.tsx +0 -51
  132. package/src/LinesNetworkPlanLayer/index.tsx +0 -1
  133. package/src/LinesNetworkPlanLayerHighlight/LinesNetworkPlanLayerHighlight.tsx +0 -59
  134. package/src/LinesNetworkPlanLayerHighlight/index.tsx +0 -1
  135. package/src/Map/Map.tsx +0 -166
  136. package/src/Map/index.tsx +0 -1
  137. package/src/MapDispatchEvents/MapDispatchEvents.tsx +0 -87
  138. package/src/MapDispatchEvents/index.tsx +0 -1
  139. package/src/MapLayout/MapLayout.tsx +0 -172
  140. package/src/MapLayout/index.tsx +0 -1
  141. package/src/MapsetLayer/MapsetLayer.tsx +0 -111
  142. package/src/MapsetLayer/index.tsx +0 -1
  143. package/src/MobilityMap/MobilityMap.tsx +0 -338
  144. package/src/MobilityMap/MobilityMapAttributes.test.ts +0 -59
  145. package/src/MobilityMap/MobilityMapAttributes.ts +0 -381
  146. package/src/MobilityMap/MobilityMapEvents.ts +0 -53
  147. package/src/MobilityMap/index.css +0 -0
  148. package/src/MobilityMap/index.tsx +0 -2
  149. package/src/MobilityNotifications/MobilityNotifications.tsx +0 -153
  150. package/src/MobilityNotifications/MobilityNotificationsAttributes.test.ts +0 -35
  151. package/src/MobilityNotifications/MobilityNotificationsAttributes.ts +0 -53
  152. package/src/MobilityNotifications/index.ts +0 -2
  153. package/src/MobilitySearch/MobilitySearch.tsx +0 -35
  154. package/src/MobilitySearch/MobilitySearchAttributes.test.ts +0 -21
  155. package/src/MobilitySearch/MobilitySearchAttributes.ts +0 -87
  156. package/src/MobilitySearch/MobilitySearchEvents.ts +0 -21
  157. package/src/MobilitySearch/index.ts +0 -2
  158. package/src/NotificationDetails/NotificationDetails.tsx +0 -309
  159. package/src/NotificationDetails/index.ts +0 -1
  160. package/src/NotificationsLayer/NotificationsLayer.tsx +0 -124
  161. package/src/NotificationsLayer/index.tsx +0 -1
  162. package/src/Overlay/Overlay.tsx +0 -61
  163. package/src/Overlay/index.tsx +0 -1
  164. package/src/OverlayContent/OverlayContent.tsx +0 -88
  165. package/src/OverlayContent/index.ts +0 -1
  166. package/src/OverlayDetails/OverlayDetails.tsx +0 -93
  167. package/src/OverlayDetails/index.ts +0 -1
  168. package/src/OverlayDetailsFooter/OverlayDetailsFooter.tsx +0 -50
  169. package/src/OverlayDetailsFooter/index.tsx +0 -1
  170. package/src/OverlayDetailsHeader/OverlayDetailsHeader.tsx +0 -30
  171. package/src/OverlayDetailsHeader/index.ts +0 -1
  172. package/src/OverlayFooter/OverlayFooter.tsx +0 -42
  173. package/src/OverlayFooter/index.tsx +0 -1
  174. package/src/OverlayHeader/OverlayHeader.tsx +0 -44
  175. package/src/OverlayHeader/index.tsx +0 -1
  176. package/src/Permalink/Permalink.tsx +0 -89
  177. package/src/Permalink/index.tsx +0 -1
  178. package/src/PermalinkInput/PermalinkInput.tsx +0 -33
  179. package/src/PermalinkInput/index.tsx +0 -1
  180. package/src/RealtimeLayer/RealtimeLayer.tsx +0 -299
  181. package/src/RealtimeLayer/index.tsx +0 -1
  182. package/src/RouteDestination/RouteDestination.test.tsx +0 -13
  183. package/src/RouteDestination/RouteDestination.tsx +0 -15
  184. package/src/RouteDestination/index.tsx +0 -1
  185. package/src/RouteFollowingButton/RouteFollowingButton.tsx +0 -30
  186. package/src/RouteFollowingButton/index.tsx +0 -1
  187. package/src/RouteIcon/RouteIcon.tsx +0 -99
  188. package/src/RouteIcon/index.tsx +0 -1
  189. package/src/RouteIdentifier/RouteIdentifer.tsx +0 -36
  190. package/src/RouteIdentifier/index.tsx +0 -1
  191. package/src/RouteInfos/RouteInfos.tsx +0 -26
  192. package/src/RouteInfos/index.tsx +0 -1
  193. package/src/RouteSchedule/RouteSchedule.tsx +0 -59
  194. package/src/RouteSchedule/firstStation.png +0 -0
  195. package/src/RouteSchedule/index.tsx +0 -1
  196. package/src/RouteSchedule/lastStation.png +0 -0
  197. package/src/RouteSchedule/line.png +0 -0
  198. package/src/RouteSchedule/station.png +0 -0
  199. package/src/RouteScheduleFooter/RouteScheduleFooter.tsx +0 -46
  200. package/src/RouteScheduleFooter/index.tsx +0 -1
  201. package/src/RouteScheduleHeader/RouteScheduleHeader.tsx +0 -23
  202. package/src/RouteScheduleHeader/index.tsx +0 -1
  203. package/src/RouteStop/RouteStop.tsx +0 -108
  204. package/src/RouteStop/index.tsx +0 -1
  205. package/src/RouteStopDelay/RouteStopDelay.tsx +0 -37
  206. package/src/RouteStopDelay/index.tsx +0 -1
  207. package/src/RouteStopName/RouteStopName.tsx +0 -24
  208. package/src/RouteStopName/index.tsx +0 -1
  209. package/src/RouteStopPlatform/RouteStopPlatform.tsx +0 -27
  210. package/src/RouteStopPlatform/index.tsx +0 -1
  211. package/src/RouteStopProgress/RouteStopProgress.tsx +0 -100
  212. package/src/RouteStopProgress/index.tsx +0 -1
  213. package/src/RouteStopServices/RouteStopServices.tsx +0 -26
  214. package/src/RouteStopServices/index.tsx +0 -1
  215. package/src/RouteStopStation/RouteStopStation.tsx +0 -38
  216. package/src/RouteStopStation/index.tsx +0 -1
  217. package/src/RouteStopTime/RouteStopTime.tsx +0 -35
  218. package/src/RouteStopTime/index.tsx +0 -1
  219. package/src/RvfButton/RvfButton.tsx +0 -57
  220. package/src/RvfButton/index.tsx +0 -1
  221. package/src/RvfCheckbox/RvfCheckbox.tsx +0 -31
  222. package/src/RvfCheckbox/index.tsx +0 -1
  223. package/src/RvfCopyright/RvfCopyright.tsx +0 -36
  224. package/src/RvfCopyright/index.tsx +0 -1
  225. package/src/RvfFeatureDetails/RvfFeatureDetails.tsx +0 -46
  226. package/src/RvfFeatureDetails/RvfLineNetworkDetails/RvfLineNetworkDetails.tsx +0 -292
  227. package/src/RvfFeatureDetails/RvfLineNetworkDetails/index.js +0 -1
  228. package/src/RvfFeatureDetails/RvfNotificationDetails/RvfNotificationDetails.tsx +0 -36
  229. package/src/RvfFeatureDetails/RvfNotificationDetails/index.ts +0 -1
  230. package/src/RvfFeatureDetails/RvfSellingPointDetails/RvfSellingPointDetails.tsx +0 -50
  231. package/src/RvfFeatureDetails/RvfSellingPointDetails/index.js +0 -1
  232. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/FloatingVehiclesDetails/FloatingVehiclesDetails.tsx +0 -74
  233. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/FloatingVehiclesDetails/index.tsx +0 -1
  234. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/RvfSharedMobilityDetails.tsx +0 -134
  235. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/StationDetails/StationDetails.tsx +0 -84
  236. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/StationDetails/index.tsx +0 -1
  237. package/src/RvfFeatureDetails/RvfSharedMobilityDetail/index.tsx +0 -1
  238. package/src/RvfFeatureDetails/index.tsx +0 -1
  239. package/src/RvfIconButton/RvfIconButton.tsx +0 -49
  240. package/src/RvfIconButton/index.tsx +0 -1
  241. package/src/RvfInputCopy/RvfInputCopy.tsx +0 -67
  242. package/src/RvfInputCopy/index.tsx +0 -1
  243. package/src/RvfLink/RvfLink.tsx +0 -54
  244. package/src/RvfLink/index.tsx +0 -1
  245. package/src/RvfMainLinkButton/RvfMainLinkButton.tsx +0 -62
  246. package/src/RvfMainLinkButton/index.tsx +0 -1
  247. package/src/RvfMapLayout/RvfMapLayout.tsx +0 -202
  248. package/src/RvfMapLayout/index.tsx +0 -1
  249. package/src/RvfMobilityMap/RvfMobilityMap.tsx +0 -58
  250. package/src/RvfMobilityMap/index.css +0 -13
  251. package/src/RvfMobilityMap/index.tsx +0 -1
  252. package/src/RvfModal/RvfModal.tsx +0 -53
  253. package/src/RvfModal/index.tsx +0 -1
  254. package/src/RvfOpenStrikeNotification/RvfOpenStrikeNotification.tsx +0 -120
  255. package/src/RvfOpenStrikeNotification/index.tsx +0 -1
  256. package/src/RvfOverlayHeader/RvfOverlayHeader.tsx +0 -43
  257. package/src/RvfOverlayHeader/index.tsx +0 -1
  258. package/src/RvfPoisLayer/RvfPoisLayer.tsx +0 -48
  259. package/src/RvfPoisLayer/index.tsx +0 -1
  260. package/src/RvfRadioButton/RvfRadioButton.tsx +0 -16
  261. package/src/RvfRadioButton/index.tsx +0 -1
  262. package/src/RvfRealtimeLayer/RvfRealtimeLayer.tsx +0 -77
  263. package/src/RvfRealtimeLayer/index.tsx +0 -1
  264. package/src/RvfRouteIcon/RvfRouteIcon.tsx +0 -10
  265. package/src/RvfRouteIcon/index.tsx +0 -1
  266. package/src/RvfSearch/RvfSearch.tsx +0 -34
  267. package/src/RvfSearch/index.tsx +0 -1
  268. package/src/RvfSelect/RvfSelect.tsx +0 -24
  269. package/src/RvfSelect/index.tsx +0 -1
  270. package/src/RvfSelectedFeatureHighlightLayer/RvfSelectedFeatureHighlightLayer.tsx +0 -101
  271. package/src/RvfSelectedFeatureHighlightLayer/index.tsx +0 -1
  272. package/src/RvfSellingPointsLayer/RvfSellingPointsLayer.tsx +0 -67
  273. package/src/RvfSellingPointsLayer/index.tsx +0 -1
  274. package/src/RvfSharedMobilityLayerGroup/RvfSharedMobilityLayerGroup.tsx +0 -479
  275. package/src/RvfSharedMobilityLayerGroup/index.tsx +0 -1
  276. package/src/RvfStationsLayer/RvfStationsLayer.tsx +0 -19
  277. package/src/RvfStationsLayer/index.tsx +0 -1
  278. package/src/RvfTarifZonenLayer/RvfTarifZonenLayer.tsx +0 -48
  279. package/src/RvfTarifZonenLayer/index.tsx +0 -1
  280. package/src/ScaleLine/ScaleLine.tsx +0 -52
  281. package/src/ScaleLine/index.css +0 -6
  282. package/src/ScaleLine/index.tsx +0 -1
  283. package/src/ScrollableHandler/ScrollableHandler.tsx +0 -66
  284. package/src/ScrollableHandler/index.tsx +0 -1
  285. package/src/Search/Search.tsx +0 -50
  286. package/src/Search/SearchBase.tsx +0 -187
  287. package/src/Search/SearchHeadless.tsx +0 -79
  288. package/src/Search/index.tsx +0 -3
  289. package/src/SearchButton/SearchButton.tsx +0 -33
  290. package/src/SearchButton/index.tsx +0 -1
  291. package/src/SearchLinesResult/SearchLinesResult.tsx +0 -43
  292. package/src/SearchLinesResult/index.tsx +0 -1
  293. package/src/SearchLinesResults/SearchLinesResults.tsx +0 -106
  294. package/src/SearchLinesResults/index.tsx +0 -1
  295. package/src/SearchLnpStopsResult/SearchLnpStopsResult.tsx +0 -42
  296. package/src/SearchLnpStopsResult/index.tsx +0 -1
  297. package/src/SearchLnpStopsResults/SearchLnpStopsResults.tsx +0 -106
  298. package/src/SearchLnpStopsResults/index.tsx +0 -1
  299. package/src/SearchResult/SearchResult.tsx +0 -25
  300. package/src/SearchResult/index.tsx +0 -1
  301. package/src/SearchResults/SearchResults.tsx +0 -81
  302. package/src/SearchResults/index.tsx +0 -1
  303. package/src/SearchResultsHeader/SearchResultsHeader.tsx +0 -36
  304. package/src/SearchResultsHeader/index.tsx +0 -1
  305. package/src/SearchStopsResult/SearchStopsResult.tsx +0 -43
  306. package/src/SearchStopsResult/index.tsx +0 -1
  307. package/src/SearchStopsResults/SearchStopsResults.tsx +0 -101
  308. package/src/SearchStopsResults/index.tsx +0 -1
  309. package/src/SearchTrainsResult/SearchTrainsResult.tsx +0 -42
  310. package/src/SearchTrainsResult/index.tsx +0 -1
  311. package/src/SearchTrainsResults/SearchTrainsResults.tsx +0 -106
  312. package/src/SearchTrainsResults/index.tsx +0 -1
  313. package/src/ShadowOverflow/ShadowOverflow.tsx +0 -28
  314. package/src/ShadowOverflow/index.tsx +0 -1
  315. package/src/ShareMenu/ShareMenu.tsx +0 -43
  316. package/src/ShareMenu/index.tsx +0 -1
  317. package/src/ShareMenuButton/ShareMenuButton.tsx +0 -34
  318. package/src/ShareMenuButton/index.tsx +0 -1
  319. package/src/SingleClickListener/SingleClickListener.tsx +0 -164
  320. package/src/SingleClickListener/index.tsx +0 -1
  321. package/src/SituationDetails/SituationDetails.tsx +0 -370
  322. package/src/SituationDetails/index.ts +0 -1
  323. package/src/Station/Station.tsx +0 -50
  324. package/src/Station/index.tsx +0 -1
  325. package/src/StationHeader/StationHeader.tsx +0 -32
  326. package/src/StationHeader/index.tsx +0 -1
  327. package/src/StationName/StationName.tsx +0 -21
  328. package/src/StationName/index.tsx +0 -1
  329. package/src/StationServices/StationServices.tsx +0 -80
  330. package/src/StationServices/index.tsx +0 -1
  331. package/src/StationsLayer/StationsLayer.tsx +0 -53
  332. package/src/StationsLayer/index.tsx +0 -1
  333. package/src/StopsSearch/StopsSearch.tsx +0 -344
  334. package/src/StopsSearch/index.tsx +0 -1
  335. package/src/WindowMessageListener/WindowMessageListener.tsx +0 -74
  336. package/src/WindowMessageListener/index.tsx +0 -1
  337. package/src/ZoomButtons/ZoomButtons.tsx +0 -80
  338. package/src/ZoomButtons/index.tsx +0 -1
  339. package/src/icons/Airport/Airport.tsx +0 -17
  340. package/src/icons/Airport/airport-14-svgrepo-com.svg +0 -1
  341. package/src/icons/Airport/index.tsx +0 -1
  342. package/src/icons/ArrowDown/ArrowDown.tsx +0 -22
  343. package/src/icons/ArrowDown/down-open.svg +0 -1
  344. package/src/icons/ArrowDown/index.tsx +0 -1
  345. package/src/icons/ArrowRight/ArrowRight.tsx +0 -19
  346. package/src/icons/ArrowRight/arrow-right.svg +0 -1
  347. package/src/icons/ArrowRight/index.tsx +0 -1
  348. package/src/icons/ArrowUp/ArrowUp.tsx +0 -22
  349. package/src/icons/ArrowUp/index.tsx +0 -1
  350. package/src/icons/ArrowUp/up-open.svg +0 -1
  351. package/src/icons/ArrowUpRight/ArrowUpRight.tsx +0 -35
  352. package/src/icons/ArrowUpRight/index.tsx +0 -1
  353. package/src/icons/ArrowUpRight/up-open.svg +0 -1
  354. package/src/icons/Automat/Automat.tsx +0 -8
  355. package/src/icons/Automat/index.tsx +0 -1
  356. package/src/icons/Automat/rvf_automat.svg +0 -1
  357. package/src/icons/BarAndRestaurants/BarAndRestaurants.tsx +0 -17
  358. package/src/icons/BarAndRestaurants/food-restaurant-svgrepo-com.svg +0 -1
  359. package/src/icons/BarAndRestaurants/index.tsx +0 -1
  360. package/src/icons/Bathroom/Bathroom.tsx +0 -59
  361. package/src/icons/Bathroom/bathroom-restroom-svgrepo-com.svg +0 -1
  362. package/src/icons/Bathroom/index.tsx +0 -1
  363. package/src/icons/Bike/Bike.tsx +0 -8
  364. package/src/icons/Bike/index.tsx +0 -1
  365. package/src/icons/Bike/rvf_shared_bike.svg +0 -1
  366. package/src/icons/BikeStorage/BikeStorage.tsx +0 -17
  367. package/src/icons/BikeStorage/index.tsx +0 -1
  368. package/src/icons/BikeStorage/parking-bicycle-14-svgrepo-com.svg +0 -1
  369. package/src/icons/Cancel/Cancel.tsx +0 -21
  370. package/src/icons/Cancel/cancel.svg +0 -1
  371. package/src/icons/Cancel/index.tsx +0 -1
  372. package/src/icons/Car/Car.tsx +0 -8
  373. package/src/icons/Car/index.tsx +0 -1
  374. package/src/icons/Car/rvf_shared_car.svg +0 -1
  375. package/src/icons/CargoBike/CargoBike.tsx +0 -8
  376. package/src/icons/CargoBike/index.tsx +0 -1
  377. package/src/icons/CargoBike/rvf_shared_cargo_bike.svg +0 -1
  378. package/src/icons/Copy/Copy.tsx +0 -25
  379. package/src/icons/Copy/index.tsx +0 -1
  380. package/src/icons/Doc/Doc.tsx +0 -19
  381. package/src/icons/Doc/doc.svg +0 -1
  382. package/src/icons/Doc/index.tsx +0 -1
  383. package/src/icons/DownOpen/DownOpen.tsx +0 -24
  384. package/src/icons/DownOpen/down-open.svg +0 -1
  385. package/src/icons/DownOpen/index.tsx +0 -1
  386. package/src/icons/Download/Download.tsx +0 -20
  387. package/src/icons/Download/download.svg +0 -1
  388. package/src/icons/Download/index.tsx +0 -1
  389. package/src/icons/Ebike/Ebike.tsx +0 -8
  390. package/src/icons/Ebike/index.tsx +0 -1
  391. package/src/icons/Ebike/rvf_shared_e-bike.svg +0 -1
  392. package/src/icons/Elevator/Elevator.tsx +0 -16
  393. package/src/icons/Elevator/elevator-svgrepo-com.svg +0 -1
  394. package/src/icons/Elevator/index.tsx +0 -1
  395. package/src/icons/Email/Email.tsx +0 -19
  396. package/src/icons/Email/email.svg +0 -1
  397. package/src/icons/Email/index.tsx +0 -1
  398. package/src/icons/FilePdf/FilePdf.tsx +0 -19
  399. package/src/icons/FilePdf/file-pdf.svg +0 -1
  400. package/src/icons/FilePdf/index.tsx +0 -1
  401. package/src/icons/Geolocation/Geolocation.tsx +0 -19
  402. package/src/icons/Geolocation/index.tsx +0 -1
  403. package/src/icons/Geolocation/location.svg +0 -1
  404. package/src/icons/Image/Image.tsx +0 -24
  405. package/src/icons/Image/index.tsx +0 -1
  406. package/src/icons/InPerson/InPerson.tsx +0 -8
  407. package/src/icons/InPerson/index.tsx +0 -1
  408. package/src/icons/InPerson/rvf_persoenlich.svg +0 -1
  409. package/src/icons/Menu/Menu.tsx +0 -32
  410. package/src/icons/Menu/index.tsx +0 -1
  411. package/src/icons/Menu/menu.svg +0 -1
  412. package/src/icons/Minus/Minus.tsx +0 -19
  413. package/src/icons/Minus/index.tsx +0 -1
  414. package/src/icons/Minus/minus-grey.svg +0 -1
  415. package/src/icons/Minus/minus.svg +0 -1
  416. package/src/icons/NoRealtime/NoRealtime.tsx +0 -44
  417. package/src/icons/NoRealtime/index.tsx +0 -1
  418. package/src/icons/NoRealtime/norealtime.svg +0 -1
  419. package/src/icons/Ok/ok-grey.svg +0 -1
  420. package/src/icons/Ok/ok.svg +0 -1
  421. package/src/icons/Plus/Plus.tsx +0 -19
  422. package/src/icons/Plus/index.tsx +0 -1
  423. package/src/icons/Plus/plus.svg +0 -1
  424. package/src/icons/Police/Police.tsx +0 -20
  425. package/src/icons/Police/index.tsx +0 -1
  426. package/src/icons/Police/polizia.png +0 -0
  427. package/src/icons/README.md +0 -52
  428. package/src/icons/Ride/Ride.tsx +0 -8
  429. package/src/icons/Ride/index.tsx +0 -1
  430. package/src/icons/Ride/rvf_shared_ride.svg +0 -1
  431. package/src/icons/Scooter/Scooter.tsx +0 -8
  432. package/src/icons/Scooter/index.tsx +0 -1
  433. package/src/icons/Scooter/rvf_shared_scooter.svg +0 -1
  434. package/src/icons/Search/Search.tsx +0 -38
  435. package/src/icons/Search/index.tsx +0 -1
  436. package/src/icons/Search/search.svg +0 -1
  437. package/src/icons/Share/Share.tsx +0 -24
  438. package/src/icons/Share/index.tsx +0 -1
  439. package/src/icons/Stack/Stack.tsx +0 -24
  440. package/src/icons/Stack/index.tsx +0 -1
  441. package/src/icons/TouchFingers/TouchFingers.tsx +0 -20
  442. package/src/icons/TouchFingers/index.tsx +0 -1
  443. package/src/icons/Tracking/Tracking.tsx +0 -29
  444. package/src/icons/Tracking/airport-14-svgrepo-com.svg +0 -1
  445. package/src/icons/Tracking/index.tsx +0 -1
  446. package/src/icons/Video/Video.tsx +0 -8
  447. package/src/icons/Video/index.tsx +0 -1
  448. package/src/icons/Video/rvf_video.svg +0 -1
  449. package/src/icons/WaitingAreas/WaitingAreas.tsx +0 -16
  450. package/src/icons/WaitingAreas/highway-rest-area-svgrepo-com.svg +0 -1
  451. package/src/icons/WaitingAreas/index.tsx +0 -1
  452. package/src/icons/WaitingAreas/wheelchair-svgrepo-com.svg +0 -1
  453. package/src/icons/Warning/Warning.tsx +0 -56
  454. package/src/icons/Warning/exported_features_20251029101203.kml +0 -20
  455. package/src/icons/Warning/index.tsx +0 -1
  456. package/src/icons/Warning/info-achtung-kreisrot-rot.svg +0 -1
  457. package/src/icons/WheelChair/WheelChair.tsx +0 -16
  458. package/src/icons/WheelChair/disabili.png +0 -0
  459. package/src/icons/WheelChair/index.tsx +0 -1
  460. package/src/icons/WheelChair/wheelchair-svgrepo-com.svg +0 -1
  461. package/src/icons/disruption-type-banner.xcf +0 -0
  462. package/src/icons/rvf_shared_ride_2.svg +0 -1
  463. package/src/icons/sbb_add_stop.png +0 -0
  464. package/src/icons/sbb_add_stop.svg +0 -1
  465. package/src/icons/sbb_alternative.png +0 -0
  466. package/src/icons/sbb_alternative.svg +0 -1
  467. package/src/icons/sbb_cancellation.png +0 -0
  468. package/src/icons/sbb_cancellation.svg +0 -1
  469. package/src/icons/sbb_construction.png +0 -0
  470. package/src/icons/sbb_construction.svg +0 -1
  471. package/src/icons/sbb_construction_banner.png +0 -0
  472. package/src/icons/sbb_delay.png +0 -0
  473. package/src/icons/sbb_delay.svg +0 -1
  474. package/src/icons/sbb_disruption.png +0 -0
  475. package/src/icons/sbb_disruption.svg +0 -1
  476. package/src/icons/sbb_disruption_banner.png +0 -0
  477. package/src/icons/sbb_info.png +0 -0
  478. package/src/icons/sbb_info.svg +0 -1
  479. package/src/icons/sbb_missed_connection.png +0 -0
  480. package/src/icons/sbb_missed_connection.svg +0 -1
  481. package/src/icons/sbb_missed_connection_banner.png +0 -0
  482. package/src/icons/sbb_platform_change.png +0 -0
  483. package/src/icons/sbb_platform_change.svg +0 -1
  484. package/src/icons/sbb_replacementbus.png +0 -0
  485. package/src/icons/sbb_replacementbus.svg +0 -1
  486. package/src/icons/sbb_replacementbus_banner.png +0 -0
  487. package/src/icons/sbb_reroute.png +0 -0
  488. package/src/icons/sbb_reroute.svg +0 -1
  489. package/src/icons/warning-banner.png +0 -0
  490. package/src/icons/warning-banner.xcf +0 -0
  491. package/src/icons/warning.png +0 -0
  492. package/src/index.tsx +0 -44
  493. package/src/indexDoc.ts +0 -35
  494. package/src/logos/00_RegioRad_Stuttgart.svg +0 -1
  495. package/src/logos/01_Call_a_bike.svg +0 -1
  496. package/src/logos/03_KVV_nextbike.svg +0 -1
  497. package/src/logos/05_VrnNextbike.svg +0 -1
  498. package/src/logos/2em_carsharing.svg +0 -1
  499. package/src/logos/CarSharing-Renningen.png +0 -0
  500. package/src/logos/aubonne-basel-pickebike.svg +0 -1
  501. package/src/logos/br_logo.svg +0 -1
  502. package/src/logos/callabike_logo.png +0 -0
  503. package/src/logos/carsharing_stadtmobil_karlsruhe_rhein_neckar.svg +0 -1
  504. package/src/logos/compte-mobilite.png +0 -0
  505. package/src/logos/deer.svg +0 -1
  506. package/src/logos/donkey_republic.png +0 -0
  507. package/src/logos/edrive_carsharing.svg +0 -1
  508. package/src/logos/flinkster_logo.png +0 -0
  509. package/src/logos/gruene-flotte-logo-1.svg +0 -1
  510. package/src/logos/gruene_flotte_logo.png +0 -0
  511. package/src/logos/lasten_velo_freiburg.png +0 -0
  512. package/src/logos/lie_mobil.svg +0 -1
  513. package/src/logos/logo-einfach-mobil-ortenau.png +0 -0
  514. package/src/logos/logo-red.svg +0 -1
  515. package/src/logos/logo_frelo_web_rgb.png +0 -0
  516. package/src/logos/logo_teilauto.png +0 -0
  517. package/src/logos/mein_konrad.svg +0 -1
  518. package/src/logos/mit_fahr_punkt.png +0 -0
  519. package/src/logos/natur_energie_logo.png +0 -0
  520. package/src/logos/natur_energie_logo.xcf +0 -0
  521. package/src/logos/publibike_logo.svg +0 -1
  522. package/src/logos/share-birrer.svg +0 -1
  523. package/src/logos/stadtmobil_suedbaden.svg +0 -1
  524. package/src/logos/stadtwerke_tauberfranken.png +0 -0
  525. package/src/logos/teilauto_biberach.png +0 -0
  526. package/src/logos/velospot_fribourg.png +0 -0
  527. package/src/logos/yoio_logo.png +0 -0
  528. package/src/logos/zeag_carsharing.png +0 -0
  529. package/src/logos/zeo_carsharing.png +0 -0
  530. package/src/logos/zeus_logo.png +0 -0
  531. package/src/logos/zeus_logo.xcf +0 -0
  532. package/src/ui/Button/Button.tsx +0 -64
  533. package/src/ui/Button/index.tsx +0 -1
  534. package/src/ui/Checkbox/Checkbox.tsx +0 -32
  535. package/src/ui/Checkbox/index.tsx +0 -1
  536. package/src/ui/IconButton/IconButton.tsx +0 -64
  537. package/src/ui/IconButton/index.tsx +0 -1
  538. package/src/ui/Input/Input.tsx +0 -24
  539. package/src/ui/Input/index.tsx +0 -1
  540. package/src/ui/InputCopy/InputCopy.tsx +0 -97
  541. package/src/ui/InputCopy/index.tsx +0 -1
  542. package/src/ui/InputSearch/InputSearch.tsx +0 -106
  543. package/src/ui/InputSearch/index.tsx +0 -1
  544. package/src/ui/Link/Link.tsx +0 -49
  545. package/src/ui/Link/index.tsx +0 -1
  546. package/src/ui/Select/Select.tsx +0 -24
  547. package/src/ui/Select/index.tsx +0 -1
  548. package/src/utils/MobilityEvent.ts +0 -22
  549. package/src/utils/applyInitialLayerVisibility.ts +0 -48
  550. package/src/utils/centerOnVehicle.ts +0 -58
  551. package/src/utils/constants.ts +0 -242
  552. package/src/utils/exportPdf.ts +0 -671
  553. package/src/utils/fullTrajectoryStyle.ts +0 -53
  554. package/src/utils/getAllLayers.ts +0 -26
  555. package/src/utils/getBgColor.ts +0 -20
  556. package/src/utils/getDelayColor.test.ts +0 -23
  557. package/src/utils/getDelayColor.ts +0 -23
  558. package/src/utils/getDelayColorForVehicle.test.ts +0 -47
  559. package/src/utils/getDelayColorForVehicle.ts +0 -27
  560. package/src/utils/getDelayString.test.ts +0 -25
  561. package/src/utils/getDelayString.ts +0 -28
  562. package/src/utils/getDelayTextForVehicle.test.ts +0 -32
  563. package/src/utils/getDelayTextForVehicle.ts +0 -25
  564. package/src/utils/getFullTrajectoryAndFit.ts +0 -41
  565. package/src/utils/getHoursAndMinutes.test.ts +0 -15
  566. package/src/utils/getHoursAndMinutes.ts +0 -22
  567. package/src/utils/getLayersAsFlatArray.ts +0 -22
  568. package/src/utils/getLinkByDevice.ts +0 -23
  569. package/src/utils/getMainColorForVehicle.test.ts +0 -25
  570. package/src/utils/getMainColorForVehicle.ts +0 -54
  571. package/src/utils/getPermalinkParameters.ts +0 -35
  572. package/src/utils/getRadius.ts +0 -46
  573. package/src/utils/getStopStatus.test.ts +0 -105
  574. package/src/utils/getStopStatus.ts +0 -171
  575. package/src/utils/getTextColor.ts +0 -10
  576. package/src/utils/getTextColorForVehicle.ts +0 -31
  577. package/src/utils/getTextFontForVehicle.test.ts +0 -7
  578. package/src/utils/getTextFontForVehicle.tsx +0 -17
  579. package/src/utils/getTextForVehicle.test.ts +0 -17
  580. package/src/utils/getTextForVehicle.ts +0 -25
  581. package/src/utils/getUrlFromTemplate.test.ts +0 -23
  582. package/src/utils/getUrlFromTemplate.ts +0 -47
  583. package/src/utils/highlightLinesNetworkPlan.ts +0 -25
  584. package/src/utils/hooks/useDebug.tsx +0 -11
  585. package/src/utils/hooks/useDeparture.tsx +0 -24
  586. package/src/utils/hooks/useFit.tsx +0 -57
  587. package/src/utils/hooks/useFitOnFeatures.tsx +0 -77
  588. package/src/utils/hooks/useI18n.tsx +0 -23
  589. package/src/utils/hooks/useInitialLayersVisiblity.tsx +0 -58
  590. package/src/utils/hooks/useInitialPermalink.tsx +0 -93
  591. package/src/utils/hooks/useLayerConfig.tsx +0 -17
  592. package/src/utils/hooks/useLayersConfig.tsx +0 -49
  593. package/src/utils/hooks/useLnp.tsx +0 -146
  594. package/src/utils/hooks/useMapContext.tsx +0 -166
  595. package/src/utils/hooks/useMocoSituation.tsx +0 -62
  596. package/src/utils/hooks/useParams.ts +0 -5
  597. package/src/utils/hooks/usePermalink.tsx +0 -25
  598. package/src/utils/hooks/useRealtimeDepartures.tsx +0 -45
  599. package/src/utils/hooks/useRealtimeRenderedTrajectory.tsx +0 -42
  600. package/src/utils/hooks/useRealtimeStation.tsx +0 -39
  601. package/src/utils/hooks/useRealtimeStopSequences.tsx +0 -43
  602. package/src/utils/hooks/useRealtimeTrainsByRouteIdentifier.tsx +0 -72
  603. package/src/utils/hooks/useRouteStop.tsx +0 -40
  604. package/src/utils/hooks/useRvfContext.tsx +0 -46
  605. package/src/utils/hooks/useScrollTo.tsx +0 -36
  606. package/src/utils/hooks/useSearchLines.tsx +0 -34
  607. package/src/utils/hooks/useSearchLnpStops.tsx +0 -38
  608. package/src/utils/hooks/useSearchStops.tsx +0 -85
  609. package/src/utils/hooks/useSearchTrains.tsx +0 -83
  610. package/src/utils/hooks/useZoom.tsx +0 -44
  611. package/src/utils/mergePublications.test.ts +0 -91
  612. package/src/utils/mergePublications.ts +0 -52
  613. package/src/utils/realtimeRVFStyle.ts +0 -523
  614. package/src/utils/sharingGraphqlUtils.ts +0 -320
  615. package/src/utils/sharingStylesUtils.ts +0 -222
  616. package/src/utils/sharingWFSUtils.ts +0 -116
  617. package/src/utils/translations.ts +0 -252
  618. package/src/utils/translationsReasons.ts +0 -716
  619. package/tailwind.config.mjs +0 -95
  620. package/testNotification.json +0 -115
  621. 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;