mobility-toolbox-js 2.3.9 → 2.3.10

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 (471) hide show
  1. package/.esdoc.js +18 -0
  2. package/.eslintignore +1 -0
  3. package/.eslintrc.js +25 -0
  4. package/.fixpackrc +20 -0
  5. package/.github/workflows/build.yml +16 -0
  6. package/.github/workflows/conventional-pr-title.yml +16 -0
  7. package/.github/workflows/cypress.yml +101 -0
  8. package/.github/workflows/test.yml +17 -0
  9. package/.husky/commit-msg +4 -0
  10. package/.husky/post-checkout +4 -0
  11. package/.husky/post-merge +4 -0
  12. package/.husky/post-rebase +4 -0
  13. package/.husky/pre-commit +4 -0
  14. package/.lintstagedrc.js +10 -0
  15. package/.nvmrc +1 -0
  16. package/.prettierrc.js +5 -0
  17. package/.stylelintrc.js +4 -0
  18. package/CHANGELOG.md +132 -0
  19. package/LICENSE +21 -0
  20. package/MIGRATION-V2.md +248 -0
  21. package/README.md +42 -0
  22. package/__mocks__/mapbox-gl.js +81 -0
  23. package/__mocks__/maplibre-gl.js +81 -0
  24. package/babel.config.js +9 -0
  25. package/commitlint.config.js +1 -0
  26. package/cypress/e2e/examples/api.cy.js +7 -0
  27. package/cypress/e2e/examples/examples.cy.js +7 -0
  28. package/cypress/e2e/examples/navigation.cy.js +29 -0
  29. package/cypress/fixtures/example.json +5 -0
  30. package/cypress/plugins/index.js +21 -0
  31. package/cypress/support/commands.js +25 -0
  32. package/cypress/support/e2e.js +20 -0
  33. package/cypress.config.ts +15 -0
  34. package/data/fetchRoute.json +292 -0
  35. package/data/fetchTrajectories.json +18 -0
  36. package/data/fetchTrajectoryById.json +3 -0
  37. package/data/fetchTrajectoryStations.json +18 -0
  38. package/data/stopsSearch.json +15 -0
  39. package/dependabot.yml +15 -0
  40. package/doc/.eslintrc.json +1 -0
  41. package/doc/README.md +34 -0
  42. package/doc/next.config.js +16 -0
  43. package/doc/package.json +41 -0
  44. package/doc/pages/404.js +5 -0
  45. package/doc/pages/_app.js +61 -0
  46. package/doc/pages/_document.js +64 -0
  47. package/doc/pages/doc/[...slug].js +23 -0
  48. package/doc/pages/doc.js +23 -0
  49. package/doc/pages/example/[example].js +52 -0
  50. package/doc/pages/examples.js +34 -0
  51. package/doc/pages/index.js +25 -0
  52. package/doc/public/README.md +15 -0
  53. package/doc/public/favicon.ico +0 -0
  54. package/doc/public/static/assets/Lato-Black.ttf +0 -0
  55. package/doc/public/static/assets/Lato-BlackItalic.ttf +0 -0
  56. package/doc/public/static/assets/Lato-Bold.ttf +0 -0
  57. package/doc/public/static/assets/Lato-BoldItalic.ttf +0 -0
  58. package/doc/public/static/assets/Lato-Italic.ttf +0 -0
  59. package/doc/public/static/assets/Lato-Light.ttf +0 -0
  60. package/doc/public/static/assets/Lato-LightItalic.ttf +0 -0
  61. package/doc/public/static/assets/Lato-Regular.ttf +0 -0
  62. package/doc/public/static/assets/Lato-Thin.ttf +0 -0
  63. package/doc/public/static/assets/Lato-ThinItalic.ttf +0 -0
  64. package/doc/public/static/assets/OFL.txt +93 -0
  65. package/doc/public/static/examples/assets/tralis-live-map/index.js +11 -0
  66. package/doc/public/static/examples/assets/tralis-live-map/s1kreis.svg +105 -0
  67. package/doc/public/static/examples/assets/tralis-live-map/s20kreis.svg +101 -0
  68. package/doc/public/static/examples/assets/tralis-live-map/s2kreis.svg +95 -0
  69. package/doc/public/static/examples/assets/tralis-live-map/s3kreis.svg +95 -0
  70. package/doc/public/static/examples/assets/tralis-live-map/s4kreis.svg +95 -0
  71. package/doc/public/static/examples/assets/tralis-live-map/s6kreis.svg +95 -0
  72. package/doc/public/static/examples/assets/tralis-live-map/s7kreis.svg +95 -0
  73. package/doc/public/static/examples/assets/tralis-live-map/s8kreis.svg +93 -0
  74. package/doc/public/static/examples/assets/tralis-live-map/unknown.svg +107 -0
  75. package/doc/public/static/examples/layers.html +11 -0
  76. package/doc/public/static/examples/layers.js +97 -0
  77. package/doc/public/static/examples/mb-copyright.html +26 -0
  78. package/doc/public/static/examples/mb-copyright.js +37 -0
  79. package/doc/public/static/examples/mb-tracker.html +1 -0
  80. package/doc/public/static/examples/mb-tracker.js +40 -0
  81. package/doc/public/static/examples/mb-tracker.md +1 -0
  82. package/doc/public/static/examples/mb-tralis.html +1 -0
  83. package/doc/public/static/examples/mb-tralis.js +34 -0
  84. package/doc/public/static/examples/ol-copyright.html +26 -0
  85. package/doc/public/static/examples/ol-copyright.js +43 -0
  86. package/doc/public/static/examples/ol-mapbox-layer.html +1 -0
  87. package/doc/public/static/examples/ol-mapbox-layer.js +28 -0
  88. package/doc/public/static/examples/ol-mapbox-style-layer.html +12 -0
  89. package/doc/public/static/examples/ol-mapbox-style-layer.js +48 -0
  90. package/doc/public/static/examples/ol-query.html +32 -0
  91. package/doc/public/static/examples/ol-query.js +83 -0
  92. package/doc/public/static/examples/ol-routing.html +26 -0
  93. package/doc/public/static/examples/ol-routing.js +65 -0
  94. package/doc/public/static/examples/ol-routing.md +1 -0
  95. package/doc/public/static/examples/ol-stop-finder.html +15 -0
  96. package/doc/public/static/examples/ol-stop-finder.js +35 -0
  97. package/doc/public/static/examples/ol-stop-finder.md +1 -0
  98. package/doc/public/static/examples/ol-tracker.html +1 -0
  99. package/doc/public/static/examples/ol-tracker.js +41 -0
  100. package/doc/public/static/examples/ol-tracker.md +1 -0
  101. package/doc/public/static/examples/ol-tralis.html +5 -0
  102. package/doc/public/static/examples/ol-tralis.js +62 -0
  103. package/doc/public/static/examples/tralis-live-map.html +1 -0
  104. package/doc/public/static/examples/tralis-live-map.js +67 -0
  105. package/doc/public/static/examples/tralis-live-map.md +3 -0
  106. package/doc/public/static/img/live_tracker_mb.jpg +0 -0
  107. package/doc/public/static/img/live_tracker_munich.jpg +0 -0
  108. package/doc/public/static/img/live_tracker_ol.jpg +0 -0
  109. package/doc/public/static/img/mapbox.jpg +0 -0
  110. package/doc/public/static/img/mapbox_style.jpg +0 -0
  111. package/doc/public/static/img/ol-copyright.png +0 -0
  112. package/doc/public/static/img/query_objects.jpg +0 -0
  113. package/doc/public/static/img/routing.jpg +0 -0
  114. package/doc/public/static/img/simple_map.jpg +0 -0
  115. package/doc/public/static/img/stops.jpg +0 -0
  116. package/doc/public/vercel.svg +4 -0
  117. package/doc/src/components/CodeSandboxButton.js +102 -0
  118. package/doc/src/components/Documentation.js +42 -0
  119. package/doc/src/components/Esdoc/Anchor.js +57 -0
  120. package/doc/src/components/Esdoc/ClassDoc.js +272 -0
  121. package/doc/src/components/Esdoc/DeprecatedHTML.js +16 -0
  122. package/doc/src/components/Esdoc/DetailDocs.js +279 -0
  123. package/doc/src/components/Esdoc/DetailHTML.js +33 -0
  124. package/doc/src/components/Esdoc/DirectSubclassHTML.js +30 -0
  125. package/doc/src/components/Esdoc/DocBuilderUtils.js +697 -0
  126. package/doc/src/components/Esdoc/DocLinkHTML.js +63 -0
  127. package/doc/src/components/Esdoc/DocsLinkHTML.js +38 -0
  128. package/doc/src/components/Esdoc/Esdoc.js +63 -0
  129. package/doc/src/components/Esdoc/EsdocContent.js +56 -0
  130. package/doc/src/components/Esdoc/EsdocNavigation.js +13 -0
  131. package/doc/src/components/Esdoc/EsdocSearch.js +78 -0
  132. package/doc/src/components/Esdoc/ExperimentalHTML.js +17 -0
  133. package/doc/src/components/Esdoc/ExtendsChainHTML.js +32 -0
  134. package/doc/src/components/Esdoc/FileDocLinkHTML.js +62 -0
  135. package/doc/src/components/Esdoc/IdentifiersDoc.js +113 -0
  136. package/doc/src/components/Esdoc/IndirectSubclassHTML.js +30 -0
  137. package/doc/src/components/Esdoc/InheritedSummaryDoc.js +70 -0
  138. package/doc/src/components/Esdoc/InheritedSummaryHTML.js +38 -0
  139. package/doc/src/components/Esdoc/MixinClassesHTML.js +29 -0
  140. package/doc/src/components/Esdoc/NavDoc.js +112 -0
  141. package/doc/src/components/Esdoc/OverrideMethod.js +44 -0
  142. package/doc/src/components/Esdoc/OverrideMethodDescription.js +35 -0
  143. package/doc/src/components/Esdoc/Properties.js +89 -0
  144. package/doc/src/components/Esdoc/README.md +45 -0
  145. package/doc/src/components/Esdoc/SignatureHTML.js +123 -0
  146. package/doc/src/components/Esdoc/SingleDoc.js +31 -0
  147. package/doc/src/components/Esdoc/SummaryDoc.js +160 -0
  148. package/doc/src/components/Esdoc/SummaryHTML.js +96 -0
  149. package/doc/src/components/Esdoc/TypeDocLinkHTML.js +251 -0
  150. package/doc/src/components/Esdoc/index.js +7 -0
  151. package/doc/src/components/Esdoc/taffydb.js +2070 -0
  152. package/doc/src/components/Example.js +200 -0
  153. package/doc/src/components/ExampleCard.js +126 -0
  154. package/doc/src/components/Examples.js +78 -0
  155. package/doc/src/components/Home.js +121 -0
  156. package/doc/src/components/TrackerExample.js +39 -0
  157. package/doc/src/examples.js +117 -0
  158. package/doc/styles/App.scss +53 -0
  159. package/doc/styles/identifiers.css +38 -0
  160. package/doc/styles/search.css +76 -0
  161. package/doc/styles/style.css +603 -0
  162. package/esdoc/README.md +27 -0
  163. package/esdoc/plugins/MyPlugin.js +69 -0
  164. package/esdoc/plugins/dynamic-property-plugin/Plugin.js +50 -0
  165. package/esdoc/plugins/externals-plugin/Plugin.js +45 -0
  166. package/esdoc/plugins/externals-plugin/externals.js +93 -0
  167. package/esdoc/plugins/optional-chaining-plugin/Plugin.js +8 -0
  168. package/global-setup.js +3 -0
  169. package/jest.config.js +24 -0
  170. package/package.json +18 -18
  171. package/pull_request_template.md +17 -0
  172. package/scripts/read-pkg-json.js +22 -0
  173. package/src/api/RealtimeAPI.test.js +144 -0
  174. package/src/api/RealtimeAPI.ts +712 -0
  175. package/src/api/RoutingAPI.test.js +41 -0
  176. package/src/api/RoutingAPI.ts +47 -0
  177. package/src/api/StopsAPI.test.js +34 -0
  178. package/src/api/StopsAPI.ts +45 -0
  179. package/{api → src/api}/typedefs.js +11 -1
  180. package/src/common/api/HttpAPI.test.js +68 -0
  181. package/src/common/api/HttpAPI.ts +77 -0
  182. package/src/common/api/WebSocketAPI.test.js +421 -0
  183. package/src/common/api/WebSocketAPI.ts +515 -0
  184. package/src/common/controls/ControlCommon.test.js +106 -0
  185. package/src/common/controls/ControlCommon.ts +194 -0
  186. package/src/common/controls/CopyrightControlCommon.ts +41 -0
  187. package/src/common/controls/StopFinderControlCommon.ts +192 -0
  188. package/src/common/layers/LayerCommon.test.js +158 -0
  189. package/src/common/layers/LayerCommon.ts +321 -0
  190. package/src/common/mixins/RealtimeLayerMixin.ts +1168 -0
  191. package/src/common/mixins/UserInteractionsLayerMixin.test.js +227 -0
  192. package/src/common/mixins/UserInteractionsLayerMixin.ts +352 -0
  193. package/src/common/styles/realtimeDefaultStyle.ts +436 -0
  194. package/src/common/styles/realtimeDelayStyle.ts +27 -0
  195. package/src/common/styles/realtimeHeadingStyle.ts +138 -0
  196. package/src/common/styles/realtimeSimpleStyle.ts +25 -0
  197. package/{common → src/common}/typedefs.js +1 -1
  198. package/src/common/utils/compareDepartures.ts +46 -0
  199. package/src/common/utils/createCanvas.ts +33 -0
  200. package/src/common/utils/createRealtimeFilters.test.js +100 -0
  201. package/src/common/utils/createRealtimeFilters.ts +96 -0
  202. package/src/common/utils/debounceDeparturesMessages.ts +52 -0
  203. package/src/common/utils/debounceWebsocketMessages.ts +47 -0
  204. package/src/common/utils/getLayersAsFlatArray.ts +17 -0
  205. package/src/common/utils/getMapboxMapCopyrights.test.js +47 -0
  206. package/src/common/utils/getMapboxMapCopyrights.ts +52 -0
  207. package/src/common/utils/getMapboxRender.ts +104 -0
  208. package/src/common/utils/getMaplibreRender.ts +54 -0
  209. package/{common/utils/getRealtimeModeSuffix.d.ts → src/common/utils/getRealtimeModeSuffix.ts} +4 -2
  210. package/src/common/utils/getUrlWithParams.ts +21 -0
  211. package/src/common/utils/getVehiclePosition.ts +92 -0
  212. package/{common → src/common}/utils/index.js +1 -2
  213. package/src/common/utils/realtimeConfig.test.js +57 -0
  214. package/src/common/utils/realtimeConfig.ts +228 -0
  215. package/src/common/utils/removeDuplicate.test.js +22 -0
  216. package/src/common/utils/removeDuplicate.ts +22 -0
  217. package/src/common/utils/renderTrajectories.ts +194 -0
  218. package/src/common/utils/sortAndFilterDepartures.ts +78 -0
  219. package/src/common/utils/sortByDelay.ts +29 -0
  220. package/src/common/utils/timeUtils.test.js +16 -0
  221. package/src/common/utils/timeUtils.ts +45 -0
  222. package/{iife.js → src/iife.js} +3 -1
  223. package/src/index.js +10 -0
  224. package/{mapbox/controls/CopyrightControl.js → src/mapbox/controls/CopyrightControl.ts} +26 -21
  225. package/src/mapbox/layers/Layer.test.js +217 -0
  226. package/src/mapbox/layers/Layer.ts +144 -0
  227. package/src/mapbox/layers/RealtimeLayer.test.js +13 -0
  228. package/src/mapbox/layers/RealtimeLayer.ts +350 -0
  229. package/src/mapbox/utils/getMercatorResolution.ts +21 -0
  230. package/src/mapbox/utils/getSourceCoordinates.ts +34 -0
  231. package/src/ol/README.md +0 -0
  232. package/src/ol/controls/CopyrightControl.test.js +211 -0
  233. package/src/ol/controls/CopyrightControl.ts +82 -0
  234. package/src/ol/controls/RoutingControl.test.js +205 -0
  235. package/src/ol/controls/RoutingControl.ts +869 -0
  236. package/src/ol/controls/StopFinderControl.test.js +59 -0
  237. package/{ol/controls/StopFinderControl.js → src/ol/controls/StopFinderControl.ts} +10 -7
  238. package/src/ol/controls/snapshots/RoutingControlRouteGen10.json +58 -0
  239. package/src/ol/controls/snapshots/RoutingControlRouteGen100.json +292 -0
  240. package/src/ol/controls/snapshots/RoutingControlRouteGen30.json +69 -0
  241. package/src/ol/controls/snapshots/RoutingControlRouteGen5.json +58 -0
  242. package/src/ol/controls/snapshots/RoutingControlRouteOSM.json +759 -0
  243. package/src/ol/controls/snapshots/RoutingControlStation1.json +60 -0
  244. package/src/ol/controls/snapshots/RoutingControlStation2.json +49 -0
  245. package/src/ol/layers/Layer.test.js +212 -0
  246. package/src/ol/layers/Layer.ts +252 -0
  247. package/src/ol/layers/MapGlLayer.ts +294 -0
  248. package/src/ol/layers/MapboxLayer.test.js +190 -0
  249. package/src/ol/layers/MapboxLayer.ts +136 -0
  250. package/src/ol/layers/MapboxStyleLayer.test.js +258 -0
  251. package/src/ol/layers/MapboxStyleLayer.ts +466 -0
  252. package/{ol/layers/MaplibreLayer.d.ts → src/ol/layers/MaplibreLayer.ts} +21 -10
  253. package/src/ol/layers/RealtimeLayer.test.js +84 -0
  254. package/src/ol/layers/RealtimeLayer.ts +465 -0
  255. package/src/ol/layers/RoutingLayer.test.js +48 -0
  256. package/src/ol/layers/RoutingLayer.ts +113 -0
  257. package/src/ol/layers/VectorLayer.test.js +87 -0
  258. package/src/ol/layers/VectorLayer.ts +48 -0
  259. package/src/ol/layers/WMSLayer.test.js +65 -0
  260. package/src/ol/layers/WMSLayer.ts +114 -0
  261. package/src/ol/styles/fullTrajectoryDelayStyle.ts +37 -0
  262. package/src/ol/styles/fullTrajectoryStyle.ts +56 -0
  263. package/{setupTests.js → src/setupTests.js} +12 -7
  264. package/tsconfig.json +23 -0
  265. package/api/RealtimeAPI.d.ts +0 -290
  266. package/api/RealtimeAPI.d.ts.map +0 -1
  267. package/api/RealtimeAPI.js +0 -483
  268. package/api/RoutingAPI.d.ts +0 -37
  269. package/api/RoutingAPI.d.ts.map +0 -1
  270. package/api/RoutingAPI.js +0 -35
  271. package/api/StopsAPI.d.ts +0 -38
  272. package/api/StopsAPI.d.ts.map +0 -1
  273. package/api/StopsAPI.js +0 -36
  274. package/api/index.d.ts +0 -4
  275. package/api/index.d.ts.map +0 -1
  276. package/api/typedefs.d.ts +0 -179
  277. package/api/typedefs.d.ts.map +0 -1
  278. package/common/api/HttpAPI.d.ts +0 -31
  279. package/common/api/HttpAPI.d.ts.map +0 -1
  280. package/common/api/HttpAPI.js +0 -57
  281. package/common/api/WebSocketAPI.d.ts +0 -153
  282. package/common/api/WebSocketAPI.d.ts.map +0 -1
  283. package/common/api/WebSocketAPI.js +0 -341
  284. package/common/controls/ControlCommon.d.ts +0 -76
  285. package/common/controls/ControlCommon.d.ts.map +0 -1
  286. package/common/controls/ControlCommon.js +0 -150
  287. package/common/controls/CopyrightControlCommon.d.ts +0 -13
  288. package/common/controls/CopyrightControlCommon.d.ts.map +0 -1
  289. package/common/controls/CopyrightControlCommon.js +0 -34
  290. package/common/controls/StopFinderControlCommon.d.ts +0 -55
  291. package/common/controls/StopFinderControlCommon.d.ts.map +0 -1
  292. package/common/controls/StopFinderControlCommon.js +0 -144
  293. package/common/index.d.ts +0 -3
  294. package/common/index.d.ts.map +0 -1
  295. package/common/layers/LayerCommon.d.ts +0 -94
  296. package/common/layers/LayerCommon.d.ts.map +0 -1
  297. package/common/layers/LayerCommon.js +0 -244
  298. package/common/mixins/RealtimeLayerMixin.d.ts +0 -288
  299. package/common/mixins/RealtimeLayerMixin.d.ts.map +0 -1
  300. package/common/mixins/RealtimeLayerMixin.js +0 -779
  301. package/common/mixins/UserInteractionsLayerMixin.d.ts +0 -60
  302. package/common/mixins/UserInteractionsLayerMixin.d.ts.map +0 -1
  303. package/common/mixins/UserInteractionsLayerMixin.js +0 -241
  304. package/common/styles/index.d.ts +0 -5
  305. package/common/styles/index.d.ts.map +0 -1
  306. package/common/styles/realtimeDefaultStyle.d.ts +0 -36
  307. package/common/styles/realtimeDefaultStyle.d.ts.map +0 -1
  308. package/common/styles/realtimeDefaultStyle.js +0 -276
  309. package/common/styles/realtimeDelayStyle.d.ts +0 -12
  310. package/common/styles/realtimeDelayStyle.d.ts.map +0 -1
  311. package/common/styles/realtimeDelayStyle.js +0 -13
  312. package/common/styles/realtimeHeadingStyle.d.ts +0 -12
  313. package/common/styles/realtimeHeadingStyle.d.ts.map +0 -1
  314. package/common/styles/realtimeHeadingStyle.js +0 -87
  315. package/common/styles/realtimeSimpleStyle.d.ts +0 -4
  316. package/common/styles/realtimeSimpleStyle.d.ts.map +0 -1
  317. package/common/styles/realtimeSimpleStyle.js +0 -23
  318. package/common/typedefs.d.ts +0 -183
  319. package/common/typedefs.d.ts.map +0 -1
  320. package/common/utils/compareDepartures.d.ts +0 -11
  321. package/common/utils/compareDepartures.d.ts.map +0 -1
  322. package/common/utils/compareDepartures.js +0 -35
  323. package/common/utils/createCanvas.d.ts +0 -11
  324. package/common/utils/createCanvas.d.ts.map +0 -1
  325. package/common/utils/createCanvas.js +0 -28
  326. package/common/utils/createRealtimeFilters.d.ts +0 -13
  327. package/common/utils/createRealtimeFilters.d.ts.map +0 -1
  328. package/common/utils/createRealtimeFilters.js +0 -74
  329. package/common/utils/debounceDeparturesMessages.d.ts +0 -13
  330. package/common/utils/debounceDeparturesMessages.d.ts.map +0 -1
  331. package/common/utils/debounceDeparturesMessages.js +0 -28
  332. package/common/utils/debounceWebsocketMessages.d.ts +0 -12
  333. package/common/utils/debounceWebsocketMessages.d.ts.map +0 -1
  334. package/common/utils/debounceWebsocketMessages.js +0 -30
  335. package/common/utils/getLayersAsFlatArray.d.ts +0 -4
  336. package/common/utils/getLayersAsFlatArray.d.ts.map +0 -1
  337. package/common/utils/getLayersAsFlatArray.js +0 -16
  338. package/common/utils/getMapboxMapCopyrights.d.ts +0 -18
  339. package/common/utils/getMapboxMapCopyrights.d.ts.map +0 -1
  340. package/common/utils/getMapboxMapCopyrights.js +0 -30
  341. package/common/utils/getMapboxRender.d.ts +0 -8
  342. package/common/utils/getMapboxRender.d.ts.map +0 -1
  343. package/common/utils/getMapboxRender.js +0 -88
  344. package/common/utils/getMaplibreRender.d.ts +0 -9
  345. package/common/utils/getMaplibreRender.d.ts.map +0 -1
  346. package/common/utils/getMaplibreRender.js +0 -40
  347. package/common/utils/getRealtimeModeSuffix.d.ts.map +0 -1
  348. package/common/utils/getRealtimeModeSuffix.js +0 -7
  349. package/common/utils/getUrlWithParams.d.ts +0 -9
  350. package/common/utils/getUrlWithParams.d.ts.map +0 -1
  351. package/common/utils/getUrlWithParams.js +0 -18
  352. package/common/utils/getVehiclePosition.d.ts +0 -16
  353. package/common/utils/getVehiclePosition.d.ts.map +0 -1
  354. package/common/utils/getVehiclePosition.js +0 -72
  355. package/common/utils/index.d.ts +0 -18
  356. package/common/utils/index.d.ts.map +0 -1
  357. package/common/utils/realtimeConfig.d.ts +0 -53
  358. package/common/utils/realtimeConfig.d.ts.map +0 -1
  359. package/common/utils/realtimeConfig.js +0 -202
  360. package/common/utils/removeDuplicate.d.ts +0 -10
  361. package/common/utils/removeDuplicate.d.ts.map +0 -1
  362. package/common/utils/removeDuplicate.js +0 -15
  363. package/common/utils/renderTrajectories.d.ts +0 -17
  364. package/common/utils/renderTrajectories.d.ts.map +0 -1
  365. package/common/utils/renderTrajectories.js +0 -110
  366. package/common/utils/sortAndFilterDepartures.d.ts +0 -16
  367. package/common/utils/sortAndFilterDepartures.d.ts.map +0 -1
  368. package/common/utils/sortAndFilterDepartures.js +0 -58
  369. package/common/utils/sortByDelay.d.ts +0 -4
  370. package/common/utils/sortByDelay.d.ts.map +0 -1
  371. package/common/utils/sortByDelay.js +0 -21
  372. package/common/utils/timeUtils.d.ts +0 -24
  373. package/common/utils/timeUtils.d.ts.map +0 -1
  374. package/common/utils/timeUtils.js +0 -39
  375. package/iife.d.ts +0 -3
  376. package/iife.d.ts.map +0 -1
  377. package/index.d.ts +0 -10
  378. package/index.d.ts.map +0 -1
  379. package/index.js +0 -10
  380. package/mapbox/controls/CopyrightControl.d.ts +0 -29
  381. package/mapbox/controls/CopyrightControl.d.ts.map +0 -1
  382. package/mapbox/controls/index.d.ts +0 -2
  383. package/mapbox/controls/index.d.ts.map +0 -1
  384. package/mapbox/index.d.ts +0 -6
  385. package/mapbox/index.d.ts.map +0 -1
  386. package/mapbox/layers/Layer.d.ts +0 -59
  387. package/mapbox/layers/Layer.d.ts.map +0 -1
  388. package/mapbox/layers/Layer.js +0 -101
  389. package/mapbox/layers/RealtimeLayer.d.ts +0 -180
  390. package/mapbox/layers/RealtimeLayer.d.ts.map +0 -1
  391. package/mapbox/layers/RealtimeLayer.js +0 -270
  392. package/mapbox/layers/index.d.ts +0 -3
  393. package/mapbox/layers/index.d.ts.map +0 -1
  394. package/mapbox/utils/getMercatorResolution.d.ts +0 -9
  395. package/mapbox/utils/getMercatorResolution.d.ts.map +0 -1
  396. package/mapbox/utils/getMercatorResolution.js +0 -18
  397. package/mapbox/utils/getSourceCoordinates.d.ts +0 -9
  398. package/mapbox/utils/getSourceCoordinates.d.ts.map +0 -1
  399. package/mapbox/utils/getSourceCoordinates.js +0 -27
  400. package/mapbox/utils/index.d.ts +0 -3
  401. package/mapbox/utils/index.d.ts.map +0 -1
  402. package/mbt.js +0 -64706
  403. package/mbt.js.map +0 -7
  404. package/mbt.min.js +0 -1090
  405. package/mbt.min.js.map +0 -7
  406. package/ol/controls/CopyrightControl.d.ts +0 -31
  407. package/ol/controls/CopyrightControl.d.ts.map +0 -1
  408. package/ol/controls/CopyrightControl.js +0 -68
  409. package/ol/controls/RoutingControl.d.ts +0 -193
  410. package/ol/controls/RoutingControl.d.ts.map +0 -1
  411. package/ol/controls/RoutingControl.js +0 -631
  412. package/ol/controls/StopFinderControl.d.ts +0 -30
  413. package/ol/controls/StopFinderControl.d.ts.map +0 -1
  414. package/ol/controls/index.d.ts +0 -4
  415. package/ol/controls/index.d.ts.map +0 -1
  416. package/ol/index.d.ts +0 -6
  417. package/ol/index.d.ts.map +0 -1
  418. package/ol/layers/Layer.d.ts +0 -86
  419. package/ol/layers/Layer.d.ts.map +0 -1
  420. package/ol/layers/Layer.js +0 -174
  421. package/ol/layers/MapGlLayer.d.ts +0 -67
  422. package/ol/layers/MapGlLayer.d.ts.map +0 -1
  423. package/ol/layers/MapGlLayer.js +0 -218
  424. package/ol/layers/MapboxLayer.d.ts +0 -50
  425. package/ol/layers/MapboxLayer.d.ts.map +0 -1
  426. package/ol/layers/MapboxLayer.js +0 -109
  427. package/ol/layers/MapboxStyleLayer.d.ts +0 -130
  428. package/ol/layers/MapboxStyleLayer.d.ts.map +0 -1
  429. package/ol/layers/MapboxStyleLayer.js +0 -378
  430. package/ol/layers/MaplibreLayer.d.ts.map +0 -1
  431. package/ol/layers/MaplibreLayer.js +0 -34
  432. package/ol/layers/RealtimeLayer.d.ts +0 -202
  433. package/ol/layers/RealtimeLayer.d.ts.map +0 -1
  434. package/ol/layers/RealtimeLayer.js +0 -332
  435. package/ol/layers/RoutingLayer.d.ts +0 -35
  436. package/ol/layers/RoutingLayer.d.ts.map +0 -1
  437. package/ol/layers/RoutingLayer.js +0 -85
  438. package/ol/layers/VectorLayer.d.ts +0 -25
  439. package/ol/layers/VectorLayer.d.ts.map +0 -1
  440. package/ol/layers/VectorLayer.js +0 -38
  441. package/ol/layers/WMSLayer.d.ts +0 -42
  442. package/ol/layers/WMSLayer.d.ts.map +0 -1
  443. package/ol/layers/WMSLayer.js +0 -88
  444. package/ol/layers/index.d.ts +0 -9
  445. package/ol/layers/index.d.ts.map +0 -1
  446. package/ol/styles/fullTrajectoryDelayStyle.d.ts +0 -4
  447. package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +0 -1
  448. package/ol/styles/fullTrajectoryDelayStyle.js +0 -33
  449. package/ol/styles/fullTrajectoryStyle.d.ts +0 -5
  450. package/ol/styles/fullTrajectoryStyle.d.ts.map +0 -1
  451. package/ol/styles/fullTrajectoryStyle.js +0 -44
  452. package/ol/styles/index.d.ts +0 -3
  453. package/ol/styles/index.d.ts.map +0 -1
  454. package/setupTests.d.ts +0 -2
  455. package/setupTests.d.ts.map +0 -1
  456. /package/{api → src/api}/index.js +0 -0
  457. /package/{common → src/common}/index.js +0 -0
  458. /package/{common → src/common}/styles/index.js +0 -0
  459. /package/{mapbox → src/mapbox}/controls/index.js +0 -0
  460. /package/{mapbox → src/mapbox}/index.js +0 -0
  461. /package/{mapbox → src/mapbox}/layers/index.js +0 -0
  462. /package/{mapbox → src/mapbox}/utils/index.js +0 -0
  463. /package/{ol → src/ol}/controls/index.js +0 -0
  464. /package/{ol → src/ol}/index.js +0 -0
  465. /package/{ol → src/ol}/layers/index.js +0 -0
  466. /package/{ol → src/ol}/styles/index.js +0 -0
  467. /package/{types → src/types}/common.d.ts +0 -0
  468. /package/{types → src/types}/index.d.ts +0 -0
  469. /package/{types → src/types}/realtime.d.ts +0 -0
  470. /package/{types → src/types}/routing.d.ts +0 -0
  471. /package/{types → src/types}/stops.d.ts +0 -0
@@ -0,0 +1,200 @@
1
+ import React, { useState, useEffect, useMemo } from 'react';
2
+ import { Grid, Paper, Typography } from '@mui/material';
3
+ import makeStyles from '@mui/styles/makeStyles';
4
+ import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
5
+ import Markdown from 'react-markdown';
6
+ import CodeSandboxButton from './CodeSandboxButton';
7
+
8
+ const useStyles = makeStyles((theme) => ({
9
+ root: {
10
+ padding: 12,
11
+ },
12
+ htmlContainer: {
13
+ height: 500,
14
+ },
15
+ noPointer: {
16
+ // Remove pointer events for mobile devices on load
17
+ [theme.breakpoints.down('sm')]: {
18
+ pointerEvents: 'none',
19
+ },
20
+ },
21
+ paper: {
22
+ position: 'relative',
23
+ margin: '20px 0',
24
+ },
25
+ fileName: {
26
+ padding: '10px 0 5px 15px',
27
+ },
28
+ editButton: {
29
+ position: 'absolute',
30
+ right: 0,
31
+ top: 0,
32
+ paddingTop: 5,
33
+ paddingRight: 10,
34
+ },
35
+ readme: {
36
+ '& p': {
37
+ fontSize: 18,
38
+ },
39
+ },
40
+ }));
41
+
42
+ function Example({ example }) {
43
+ const classes = useStyles();
44
+ const [html, setHtml] = useState();
45
+ const [js, setJs] = useState();
46
+ const [isNavigable, setIsNavigable] = useState(false);
47
+ const [apiKey, setApiKey] = useState('');
48
+
49
+ const htmlFileName = useMemo(() => {
50
+ const { key, files } = example || {};
51
+ return files?.html || (key && `${key}.html`) || '';
52
+ }, [example]);
53
+
54
+ const jsFileName = useMemo(() => {
55
+ const { key, files } = example || {};
56
+ return files?.js || (key && `${key}.js`) || '';
57
+ }, [example]);
58
+
59
+ useEffect(() => {
60
+ // Get the public api key
61
+ fetch('https://backend.developer.geops.io/publickey')
62
+ .then((response) => response.json())
63
+ .then((data) => {
64
+ if (data && data.success) {
65
+ window.apiKey = data.key;
66
+ setApiKey(data.key);
67
+ }
68
+ });
69
+ }, []);
70
+
71
+ useEffect(() => {
72
+ setHtml();
73
+
74
+ if (!htmlFileName) {
75
+ return () => {};
76
+ }
77
+
78
+ const abortController = new AbortController();
79
+
80
+ fetch(`/static/examples/${htmlFileName}`, {
81
+ signal: abortController.signal,
82
+ })
83
+ .then((res) => res.text())
84
+ .then((htmlAsText) => {
85
+ setHtml(htmlAsText);
86
+ })
87
+ .catch(() => setHtml());
88
+
89
+ return () => {
90
+ abortController.abort();
91
+ };
92
+ }, [htmlFileName]);
93
+
94
+ // Execute the content of the js file
95
+ useEffect(() => {
96
+ if (!jsFileName || !html || !apiKey) {
97
+ return;
98
+ }
99
+ import(`../../public/static/examples/${jsFileName}`).then((module) => {
100
+ module.default();
101
+ });
102
+ }, [html, apiKey, jsFileName]);
103
+
104
+ // Load the content of the js file
105
+ useEffect(() => {
106
+ if (!jsFileName) {
107
+ return () => {};
108
+ }
109
+
110
+ const abortController = new AbortController();
111
+ fetch(`/static/examples/${jsFileName}`, {
112
+ signal: abortController.signal,
113
+ })
114
+ .then((res) => res.text())
115
+ .then((jsCode) => {
116
+ // Replace relative import by library import
117
+ setJs(
118
+ jsCode
119
+ .replace(
120
+ /'\.\.\/\.\.\/\.\.\/\.\.\/src\//gm,
121
+ "'mobility-toolbox-js/",
122
+ )
123
+ .replace('export default () => {\n', '')
124
+ .replace(/^};\n$/gm, '')
125
+ .replace(/^ {2}/gm, ''),
126
+ );
127
+ })
128
+ .catch(() => setJs());
129
+ return () => {
130
+ abortController.abort();
131
+ };
132
+ }, [jsFileName]);
133
+
134
+ if (!example) {
135
+ return null;
136
+ }
137
+
138
+ return (
139
+ <div style={{ margin: 'auto', marginTop: 30 }}>
140
+ <Grid container direction="column" spacing={3}>
141
+ <Grid item xs={12}>
142
+ <Typography variant="h1" className="headline">
143
+ {example.name}
144
+ </Typography>
145
+ <Markdown className={classes.readme}>
146
+ {example.description || ''}
147
+ </Markdown>
148
+ <Markdown className={classes.readme}>{example.readme || ''}</Markdown>
149
+ </Grid>
150
+ <Grid item xs={12}>
151
+ <Paper className={classes.paper} onClick={() => setIsNavigable(true)}>
152
+ <div
153
+ className={`${classes.htmlContainer} ${
154
+ isNavigable ? '' : classes.noPointer
155
+ }`}
156
+ // eslint-disable-next-line react/no-danger
157
+ dangerouslySetInnerHTML={{ __html: html }}
158
+ />
159
+ </Paper>
160
+ </Grid>
161
+ {js && html && (
162
+ <>
163
+ <Grid item xs={12}>
164
+ <Paper className={classes.paper}>
165
+ <Typography className={classes.fileName}>
166
+ {jsFileName}
167
+ </Typography>
168
+ <SyntaxHighlighter language="javascript">
169
+ {js}
170
+ </SyntaxHighlighter>
171
+ <CodeSandboxButton
172
+ className={classes.editButton}
173
+ extraFiles={example.extraFiles || {}}
174
+ html={html}
175
+ js={js}
176
+ />
177
+ </Paper>
178
+ </Grid>
179
+ <Grid item xs={12}>
180
+ <Paper className={classes.paper}>
181
+ <Typography className={classes.fileName}>
182
+ {htmlFileName}
183
+ </Typography>
184
+ <SyntaxHighlighter language="html">{html}</SyntaxHighlighter>
185
+ <CodeSandboxButton
186
+ className={classes.editButton}
187
+ html={html}
188
+ js={js}
189
+ extraFiles={{}}
190
+ />
191
+ </Paper>
192
+ </Grid>
193
+ </>
194
+ )}
195
+ </Grid>
196
+ </div>
197
+ );
198
+ }
199
+
200
+ export default React.memo(Example);
@@ -0,0 +1,126 @@
1
+ import React, { useState } from 'react';
2
+ import Card from '@mui/material/Card';
3
+ import CardMedia from '@mui/material/CardMedia';
4
+ import CardContent from '@mui/material/CardContent';
5
+ import CardActions from '@mui/material/CardActions';
6
+ import CardActionArea from '@mui/material/CardActionArea';
7
+ import Icon from '@mui/material/Icon';
8
+ import Typography from '@mui/material/Typography';
9
+ import makeStyles from '@mui/styles/makeStyles';
10
+ import { CgArrowRight } from 'react-icons/cg';
11
+ import Markdown from 'react-markdown';
12
+ import Link from 'next/link';
13
+ import { useRouter } from 'next/router';
14
+
15
+ const useStyles = makeStyles((theme) => ({
16
+ exampleLink: {
17
+ height: '100%',
18
+ width: '100%',
19
+ color: '#353535',
20
+ },
21
+ cardWrapper: {
22
+ position: 'relative',
23
+ height: '100%',
24
+ width: '100%',
25
+ '& .MuiIcon-root': {
26
+ width: 30,
27
+ height: 30,
28
+ '& svg': {
29
+ height: '100%',
30
+ width: '100%',
31
+ },
32
+ margin: 35,
33
+ transition: 'margin-left 500ms ease, color 800ms ease',
34
+ },
35
+ '&:hover': {
36
+ '& .MuiIcon-root': {
37
+ marginLeft: 60,
38
+ color: theme.colors.primaryGreen,
39
+ },
40
+ },
41
+ },
42
+ cardOverlay: {
43
+ position: 'absolute',
44
+ display: 'flex',
45
+ alignItems: 'center',
46
+ height: '100%',
47
+ width: '100%',
48
+ boxSizing: 'border-box',
49
+ boxShadow:
50
+ 'inset 0px 1px 3px 0px rgba(0, 0, 0, 0.12), inset 0px -1px 1px 0px rgba(0, 0, 0, 0.14)',
51
+ border: '15px solid white',
52
+ transition: 'border 500ms ease',
53
+ '&:hover': {
54
+ border: '5px solid white',
55
+ },
56
+ cursor: 'pointer',
57
+ zIndex: 1,
58
+ },
59
+ cardOverlayHover: {
60
+ border: '5px solid white',
61
+ },
62
+ card: {
63
+ display: 'flex',
64
+ flexDirection: 'column',
65
+ height: '100%',
66
+ width: '100%',
67
+ boxShadow: 'none',
68
+ zIndex: 0,
69
+ },
70
+ }));
71
+
72
+ function ExampleCard({ example }) {
73
+ const classes = useStyles();
74
+ const [raisedExample, setRaisedExample] = useState(null);
75
+ const router = useRouter();
76
+
77
+ return (
78
+ <div className={classes.cardWrapper}>
79
+ {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
80
+ <div
81
+ className={
82
+ classes.cardOverlay +
83
+ (example === raisedExample ? ` ${classes.cardOverlayHover}` : '')
84
+ }
85
+ onClick={() => router.push(`/example/${example.key}`)}
86
+ />
87
+ <Card
88
+ classes={{
89
+ root: classes.card,
90
+ }}
91
+ raised={example === raisedExample}
92
+ onMouseOver={() => setRaisedExample(example)}
93
+ onMouseOut={() => setRaisedExample()}
94
+ onFocus={() => setRaisedExample(example)}
95
+ onBlur={() => setRaisedExample()}
96
+ >
97
+ <CardActionArea onClick={() => router.push(`/example/${example.key}`)}>
98
+ <CardMedia
99
+ image={example.img}
100
+ style={{
101
+ paddingTop: '56.25%',
102
+ }}
103
+ />
104
+ <CardContent className={classes.cardContent}>
105
+ <Link
106
+ href={`/example/${example.key}`}
107
+ className={classes.exampleLink}
108
+ >
109
+ <Typography variant="h3">{example.name}</Typography>
110
+ </Link>
111
+ {/* Use of typography as wrapper breaks hydration of nextjs */}
112
+ <Markdown className="MuiTypography-root MuiTypography-body1">
113
+ {example.description}
114
+ </Markdown>
115
+ </CardContent>
116
+ <CardActions>
117
+ <Icon>
118
+ <CgArrowRight />
119
+ </Icon>
120
+ </CardActions>
121
+ </CardActionArea>
122
+ </Card>
123
+ </div>
124
+ );
125
+ }
126
+ export default React.memo(ExampleCard);
@@ -0,0 +1,78 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import Grid from '@mui/material/Grid';
3
+ import Typography from '@mui/material/Typography';
4
+ import makeStyles from '@mui/styles/makeStyles';
5
+ import TextField from '@mui/material/TextField';
6
+ import ExampleCard from './ExampleCard';
7
+
8
+ const useStyles = makeStyles((theme) => ({
9
+ filterField: {
10
+ width: '100%',
11
+ marginBottom: 40,
12
+ },
13
+ example: {
14
+ '&.MuiGrid-item': {
15
+ padding: '0 !important',
16
+ },
17
+ },
18
+ header: {
19
+ marginBottom: 40,
20
+ },
21
+ }));
22
+
23
+ function Examples({ examples = [] }) {
24
+ const classes = useStyles();
25
+ const [filter, setFilter] = useState('');
26
+ const [filteredExamples, setFilteredExamples] = useState(examples);
27
+
28
+ useEffect(() => {
29
+ if (!filter) {
30
+ return () => {};
31
+ }
32
+ const qry = filter.toLowerCase();
33
+ setFilteredExamples(
34
+ examples.filter(
35
+ (example) =>
36
+ `${example.name}`.toLowerCase().includes(qry) ||
37
+ (example.tags || []).find((tag) => tag.toLowerCase().includes(qry)),
38
+ ),
39
+ );
40
+ return () => {};
41
+ }, [filter, examples]);
42
+
43
+ return (
44
+ <Grid container spacing={2}>
45
+ <Grid item xs={12} className={classes.filterField}>
46
+ <Typography variant="h1" className={classes.header}>
47
+ Examples
48
+ </Typography>
49
+ <TextField
50
+ variant="standard"
51
+ placeholder="Filter..."
52
+ value={filter}
53
+ onChange={(e) => setFilter(e.target.value)}
54
+ />
55
+ </Grid>
56
+ {!filteredExamples.length && (
57
+ <Grid item xs={12}>
58
+ Nothing found.
59
+ </Grid>
60
+ )}
61
+ {filteredExamples.map((example) => (
62
+ <Grid
63
+ item
64
+ xs={12}
65
+ sm={6}
66
+ lg={4}
67
+ container
68
+ className={classes.example}
69
+ key={example.key}
70
+ >
71
+ <ExampleCard example={example} />
72
+ </Grid>
73
+ ))}
74
+ </Grid>
75
+ );
76
+ }
77
+
78
+ export default Examples;
@@ -0,0 +1,121 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import Markdown from 'react-markdown';
3
+ import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
4
+ import Typography from '@mui/material/Typography';
5
+ import Link from 'next/link';
6
+ import TrackerExample from './TrackerExample';
7
+
8
+ const codeHtmlPage = `
9
+ <html>
10
+ <head>
11
+ <title>Realtime map</title>
12
+ </head>
13
+ <body>
14
+ <div id="map" style="height: 300px; width: 100%" />
15
+ </body>
16
+ </html>
17
+ `;
18
+
19
+ const codeMapObject = `
20
+ import { Map } from 'maplibre-gl;
21
+ import { RealtimeLayer } from 'mobility-toolbox-js/mapbox';
22
+
23
+
24
+ const map = new Map({
25
+ container: 'map',
26
+ style: 'https://maps.geops.io/styles/travic_v2/style.json?key=' + window.apiKey,
27
+ center: [7.4707, 46.95],
28
+ zoom: 12,
29
+ });
30
+ `;
31
+
32
+ const codeTracker = `
33
+ const tracker = new RealtimeLayer({
34
+ url: 'wss://api.geops.io/tracker-ws/v1/',
35
+ apiKey: window.apiKey,
36
+ });
37
+
38
+ tracker.attachToMap(map);
39
+ `;
40
+
41
+ function MarkdownHeading({ ...props }) {
42
+ // eslint-disable-next-line react/prop-types
43
+ const { node, children } = props;
44
+ return <Typography variant={node.tagName}>{children}</Typography>;
45
+ }
46
+
47
+ function Home() {
48
+ const [source, setSource] = useState(null);
49
+ const [apiKey, setApiKey] = useState('');
50
+
51
+ useEffect(() => {
52
+ // Get the public api key
53
+ fetch('https://backend.developer.geops.io/publickey')
54
+ .then((response) => response.json())
55
+ .then((data) => {
56
+ if (data && data.success) {
57
+ window.apiKey = data.key;
58
+ setApiKey(data.key);
59
+ }
60
+ });
61
+ }, []);
62
+
63
+ useEffect(() => {
64
+ fetch('/README.md')
65
+ .then((response) => response.text())
66
+ .then((text) => {
67
+ // only show the 'Documentation and examples' section on GitHub
68
+ const noDocText = text.split('## Documentation')[0];
69
+ setSource(noDocText);
70
+ });
71
+ }, []);
72
+
73
+ if (!source || !apiKey) {
74
+ return null;
75
+ }
76
+
77
+ const renderers = {
78
+ h1: MarkdownHeading,
79
+ };
80
+
81
+ return (
82
+ <>
83
+ <Markdown components={renderers}>{source}</Markdown>
84
+ <br />
85
+ <h2>Quick Start</h2>
86
+ <TrackerExample />
87
+ <p>
88
+ This example shows how to draw real time vehicle positions on a{' '}
89
+ <a
90
+ href="https://maplibre.org/maplibre-gl-js-docs/"
91
+ rel="noreferrer"
92
+ target="_blank"
93
+ >
94
+ Maplibre GL JS
95
+ </a>{' '}
96
+ map. Check out the{' '}
97
+ <Link href="/examples/ol-tracker">Live Tracker with OpenLayers</Link>{' '}
98
+ example to see how to use{' '}
99
+ <a href="https://openlayers.org/" target="_blank" rel="noreferrer">
100
+ OpenLayers
101
+ </a>{' '}
102
+ instead.
103
+ </p>
104
+ <p>First, create a HTML page with an empty map container.</p>
105
+ <SyntaxHighlighter language="html" code={codeHtmlPage.trim()} />
106
+ <p>Create a Maplibre map.</p>
107
+ <SyntaxHighlighter language="js" code={codeMapObject.trim()} />
108
+ <p>
109
+ Finally, add the <i>RealtimeLayer</i> for rendering real time vehicle
110
+ positions from our Realtime API. For more information about the backend
111
+ and for obtaining the required API-Key, visit our Developer Portal at{' '}
112
+ <a target="_blank" rel="noreferrer" href="https://geops.io">
113
+ https://geops.io
114
+ </a>
115
+ .
116
+ </p>
117
+ <SyntaxHighlighter language="js" code={codeTracker.trim()} />
118
+ </>
119
+ );
120
+ }
121
+ export default Home;
@@ -0,0 +1,39 @@
1
+ /* eslint-disable import/no-relative-packages */
2
+ import React, { useEffect } from 'react';
3
+ import makeStyles from '@mui/styles/makeStyles';
4
+ import { Map } from 'maplibre-gl';
5
+ import { RealtimeLayer, CopyrightControl } from 'mobility-toolbox-js/mapbox';
6
+
7
+ const useStyles = makeStyles({
8
+ root: {
9
+ width: '100%',
10
+ height: 300,
11
+ pointerEvents: 'none',
12
+ },
13
+ });
14
+
15
+ function TrackerExample() {
16
+ const classes = useStyles();
17
+
18
+ useEffect(() => {
19
+ const map = new Map({
20
+ container: 'map',
21
+ style: `https://maps.geops.io/styles/travic_v2/style.json?key=${window.apiKey}`,
22
+ center: [7.4707, 46.95],
23
+ zoom: 12,
24
+ attributionControl: false,
25
+ });
26
+ const control = new CopyrightControl();
27
+ control.attachToMap(map);
28
+
29
+ const tracker = new RealtimeLayer({
30
+ apiKey: window.apiKey,
31
+ });
32
+
33
+ tracker.attachToMap(map);
34
+ }, []);
35
+
36
+ return <div id="map" className={classes.root} />;
37
+ }
38
+
39
+ export default TrackerExample;
@@ -0,0 +1,117 @@
1
+ // We load statically the readme to have the content when the page use server side rendering.
2
+ import olTrackerReadme from '../public/static/examples/ol-tracker.md';
3
+ import mbTrackerReadme from '../public/static/examples/mb-tracker.md';
4
+ import olRoutingReadme from '../public/static/examples/ol-routing.md';
5
+ import olStopFinderReadme from '../public/static/examples/ol-stop-finder.md';
6
+ import tralisLiveMapReadme from '../public/static/examples/tralis-live-map.md';
7
+
8
+ // import munichAssets from '../public/static/examples/tralis-live-map';
9
+
10
+ // To make redirect works properly on netlify it's important that the key
11
+ // are differents from the name of js and html files.
12
+ export default [
13
+ // {
14
+ // name: 'Layers',
15
+ // key: 'layers',
16
+ // description:
17
+ // 'Use the [geOps Realtime API](https://developer.geops.io/apis/realtime/) to show moving trains in a Mapbox map.',
18
+ // img: '/static/img/live_tracker_ol.jpg',
19
+ // readme: olTrackerReadme,
20
+ // },
21
+ {
22
+ name: 'Live tracker with OpenLayers',
23
+ key: 'ol-tracker',
24
+ description:
25
+ 'Use the [geOps Realtime API](https://developer.geops.io/apis/realtime/) to show moving trains in a Mapbox map.',
26
+ img: '/static/img/live_tracker_ol.jpg',
27
+ readme: olTrackerReadme,
28
+ },
29
+ {
30
+ name: 'Live tracker with Mapbox',
31
+ key: 'mb-tracker',
32
+ description:
33
+ 'Use the [geOps Realtime API](https://developer.geops.io/apis/realtime/) to show moving trains in a Mapbox map.',
34
+ img: '/static/img/live_tracker_mb.jpg',
35
+ readme: mbTrackerReadme,
36
+ },
37
+ {
38
+ name: 'Stop finder',
39
+ key: 'ol-stop-finder',
40
+ description:
41
+ 'Use the [geOps Stops API](https://developer.geops.io/apis/stops/) for finding public transport stops.',
42
+ img: '/static/img/stops.jpg',
43
+ readme: olStopFinderReadme,
44
+ },
45
+ {
46
+ name: 'Routing',
47
+ key: 'routing-control',
48
+ description:
49
+ 'Use the [geOps Routing API](https://developer.geops.io/apis/routing/) to find the shortest route between 2 points.',
50
+ img: '/static/img/routing.jpg',
51
+ readme: olRoutingReadme,
52
+ files: {
53
+ html: 'ol-routing.html',
54
+ js: 'ol-routing.js',
55
+ },
56
+ },
57
+ // {
58
+ // name: 'Live train positions for Munich',
59
+ // key: 'tralis-live-map',
60
+ // description:
61
+ // 'Realtime vehicle positions and prognosis data based on scheduled times, realtime updates and GPS locations.',
62
+ // img: '/static/img/routing.jpg',
63
+ // extraFiles: {
64
+ // 'assets/tralis-live-map/index.js': {
65
+ // content: `export default ${JSON.stringify(munichAssets)};`,
66
+ // },
67
+ // },
68
+ // readme: tralisLiveMapReadme,
69
+ // },
70
+ // These examples are used for the dbug of RealtimeLayer don't remove them pls.
71
+ // {
72
+ // name: 'Tralis tracker with OpenLayers',
73
+ // key: 'ol-tralis',
74
+ // description: 'Show moving tramway in an OpenLayers map.',
75
+ // img: '/static/img/routing.jpg',
76
+ // },
77
+ // {
78
+ // name: 'Tralis tracker with Mapbox',
79
+ // key: 'mapbox-tralis',
80
+ // description: 'Show moving tramway in an Mapbox map.',
81
+ // img: '/static/img/routing.jpg',
82
+ // },
83
+ {
84
+ name: 'Mapbox layer',
85
+ key: 'ol-mapbox-layer',
86
+ description: 'Display a Mapbox style on an OpenLayers map.',
87
+ img: '/static/img/mapbox.jpg',
88
+ },
89
+ {
90
+ name: 'Mapbox Style layer',
91
+ key: 'ol-mapbox-style-layer',
92
+ description:
93
+ 'Display/hide a set of layers of a Mapbox style on an OpenLayers map.',
94
+ img: '/static/img/mapbox_style.jpg',
95
+ },
96
+ {
97
+ name: 'Querying objects',
98
+ key: 'ol-query',
99
+ description:
100
+ 'This example shows how to query objects in different kinds of layers.',
101
+ img: '/static/img/query_objects.jpg',
102
+ },
103
+ {
104
+ name: 'Copyrights with OpenLayers',
105
+ key: 'ol-copyright',
106
+ description:
107
+ 'This example shows how to use the CopyrightControl component.',
108
+ img: '/static/img/ol-copyright.png',
109
+ },
110
+ {
111
+ name: 'Copyrights with Mapbox',
112
+ key: 'mb-copyright',
113
+ description:
114
+ 'This example shows how to use the CopyrightControl component.',
115
+ img: '/static/img/ol-copyright.png',
116
+ },
117
+ ];