mobility-toolbox-js 2.0.0-beta.8 → 2.0.0-beta.81

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 (447) hide show
  1. package/api/RealtimeAPI.d.ts +279 -0
  2. package/api/RealtimeAPI.d.ts.map +1 -0
  3. package/api/RealtimeAPI.js +466 -0
  4. package/api/RoutingAPI.d.ts +37 -0
  5. package/api/RoutingAPI.d.ts.map +1 -0
  6. package/api/RoutingAPI.js +35 -0
  7. package/api/StopsAPI.d.ts +38 -0
  8. package/api/StopsAPI.d.ts.map +1 -0
  9. package/api/StopsAPI.js +36 -0
  10. package/api/index.d.ts +4 -0
  11. package/api/index.d.ts.map +1 -0
  12. package/api/index.js +3 -0
  13. package/api/typedefs.d.ts +179 -0
  14. package/api/typedefs.d.ts.map +1 -0
  15. package/{src/api/tralis → api}/typedefs.js +4 -10
  16. package/common/api/HttpAPI.d.ts +31 -0
  17. package/common/api/HttpAPI.d.ts.map +1 -0
  18. package/common/api/HttpAPI.js +57 -0
  19. package/common/api/WebSocketAPI.d.ts +153 -0
  20. package/common/api/WebSocketAPI.d.ts.map +1 -0
  21. package/common/api/WebSocketAPI.js +341 -0
  22. package/common/controls/ControlCommon.d.ts +76 -0
  23. package/common/controls/ControlCommon.d.ts.map +1 -0
  24. package/common/controls/ControlCommon.js +150 -0
  25. package/common/controls/CopyrightControlCommon.d.ts +13 -0
  26. package/common/controls/CopyrightControlCommon.d.ts.map +1 -0
  27. package/common/controls/CopyrightControlCommon.js +34 -0
  28. package/common/controls/StopFinderControlCommon.d.ts +55 -0
  29. package/common/controls/StopFinderControlCommon.d.ts.map +1 -0
  30. package/common/controls/StopFinderControlCommon.js +144 -0
  31. package/common/index.d.ts +3 -0
  32. package/common/index.d.ts.map +1 -0
  33. package/common/index.js +2 -0
  34. package/common/layers/LayerCommon.d.ts +94 -0
  35. package/common/layers/LayerCommon.d.ts.map +1 -0
  36. package/common/layers/LayerCommon.js +244 -0
  37. package/common/mixins/RealtimeLayerMixin.d.ts +286 -0
  38. package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -0
  39. package/common/mixins/RealtimeLayerMixin.js +779 -0
  40. package/common/mixins/UserInteractionsLayerMixin.d.ts +60 -0
  41. package/common/mixins/UserInteractionsLayerMixin.d.ts.map +1 -0
  42. package/common/mixins/UserInteractionsLayerMixin.js +241 -0
  43. package/common/styles/index.d.ts +5 -0
  44. package/common/styles/index.d.ts.map +1 -0
  45. package/common/styles/index.js +4 -0
  46. package/common/styles/realtimeDefaultStyle.d.ts +36 -0
  47. package/common/styles/realtimeDefaultStyle.d.ts.map +1 -0
  48. package/common/styles/realtimeDefaultStyle.js +275 -0
  49. package/{src/common/styles/trackerDelayStyle.js → common/styles/realtimeDelayStyle.d.ts} +4 -9
  50. package/common/styles/realtimeDelayStyle.d.ts.map +1 -0
  51. package/common/styles/realtimeDelayStyle.js +13 -0
  52. package/common/styles/realtimeHeadingStyle.d.ts +12 -0
  53. package/common/styles/realtimeHeadingStyle.d.ts.map +1 -0
  54. package/common/styles/realtimeHeadingStyle.js +85 -0
  55. package/common/styles/realtimeSimpleStyle.d.ts +4 -0
  56. package/common/styles/realtimeSimpleStyle.d.ts.map +1 -0
  57. package/common/styles/realtimeSimpleStyle.js +23 -0
  58. package/common/typedefs.d.ts +111 -0
  59. package/common/typedefs.d.ts.map +1 -0
  60. package/common/typedefs.js +52 -0
  61. package/common/utils/compareDepartures.d.ts +11 -0
  62. package/common/utils/compareDepartures.d.ts.map +1 -0
  63. package/common/utils/compareDepartures.js +35 -0
  64. package/common/utils/createCanvas.d.ts +10 -0
  65. package/common/utils/createCanvas.d.ts.map +1 -0
  66. package/common/utils/createCanvas.js +27 -0
  67. package/common/utils/createRealtimeFilters.d.ts +13 -0
  68. package/common/utils/createRealtimeFilters.d.ts.map +1 -0
  69. package/common/utils/createRealtimeFilters.js +74 -0
  70. package/common/utils/debounceDeparturesMessages.d.ts +12 -0
  71. package/common/utils/debounceDeparturesMessages.d.ts.map +1 -0
  72. package/common/utils/debounceDeparturesMessages.js +24 -0
  73. package/common/utils/debounceWebsocketMessages.d.ts +11 -0
  74. package/common/utils/debounceWebsocketMessages.d.ts.map +1 -0
  75. package/common/utils/debounceWebsocketMessages.js +29 -0
  76. package/common/utils/getLayersAsFlatArray.d.ts +3 -0
  77. package/common/utils/getLayersAsFlatArray.d.ts.map +1 -0
  78. package/common/utils/getLayersAsFlatArray.js +15 -0
  79. package/common/utils/getMapboxMapCopyrights.d.ts +18 -0
  80. package/common/utils/getMapboxMapCopyrights.d.ts.map +1 -0
  81. package/common/utils/getMapboxMapCopyrights.js +30 -0
  82. package/common/utils/getMapboxRender.d.ts +7 -0
  83. package/common/utils/getMapboxRender.d.ts.map +1 -0
  84. package/common/utils/getMapboxRender.js +87 -0
  85. package/common/utils/getMaplibreRender.d.ts +7 -0
  86. package/common/utils/getMaplibreRender.d.ts.map +1 -0
  87. package/common/utils/getMaplibreRender.js +38 -0
  88. package/common/utils/getRealtimeModeSuffix.d.ts +10 -0
  89. package/common/utils/getRealtimeModeSuffix.d.ts.map +1 -0
  90. package/common/utils/getRealtimeModeSuffix.js +7 -0
  91. package/common/utils/getUrlWithParams.d.ts +9 -0
  92. package/common/utils/getUrlWithParams.d.ts.map +1 -0
  93. package/common/utils/getUrlWithParams.js +18 -0
  94. package/common/utils/getVehiclePosition.d.ts +16 -0
  95. package/common/utils/getVehiclePosition.d.ts.map +1 -0
  96. package/common/utils/getVehiclePosition.js +72 -0
  97. package/common/utils/index.d.ts +17 -0
  98. package/common/utils/index.d.ts.map +1 -0
  99. package/common/utils/index.js +17 -0
  100. package/common/utils/realtimeConfig.d.ts +49 -0
  101. package/common/utils/realtimeConfig.d.ts.map +1 -0
  102. package/common/utils/realtimeConfig.js +173 -0
  103. package/common/utils/removeDuplicate.d.ts +10 -0
  104. package/common/utils/removeDuplicate.d.ts.map +1 -0
  105. package/common/utils/removeDuplicate.js +15 -0
  106. package/common/utils/renderTrajectories.d.ts +17 -0
  107. package/common/utils/renderTrajectories.d.ts.map +1 -0
  108. package/common/utils/renderTrajectories.js +110 -0
  109. package/common/utils/sortAndFilterDepartures.d.ts +16 -0
  110. package/common/utils/sortAndFilterDepartures.d.ts.map +1 -0
  111. package/common/utils/sortAndFilterDepartures.js +58 -0
  112. package/common/utils/sortByDelay.d.ts +3 -0
  113. package/common/utils/sortByDelay.d.ts.map +1 -0
  114. package/common/utils/sortByDelay.js +20 -0
  115. package/common/utils/timeUtils.d.ts +24 -0
  116. package/common/utils/timeUtils.d.ts.map +1 -0
  117. package/{src/common → common}/utils/timeUtils.js +13 -18
  118. package/iife.d.ts +3 -0
  119. package/iife.d.ts.map +1 -0
  120. package/{src/iife.js → iife.js} +1 -3
  121. package/index.d.ts +10 -0
  122. package/index.d.ts.map +1 -0
  123. package/index.js +10 -0
  124. package/mapbox/controls/CopyrightControl.d.ts +29 -0
  125. package/mapbox/controls/CopyrightControl.d.ts.map +1 -0
  126. package/mapbox/controls/CopyrightControl.js +48 -0
  127. package/mapbox/controls/index.d.ts +2 -0
  128. package/mapbox/controls/index.d.ts.map +1 -0
  129. package/mapbox/index.d.ts +6 -0
  130. package/mapbox/index.d.ts.map +1 -0
  131. package/{src/mapbox → mapbox}/index.js +1 -0
  132. package/mapbox/layers/Layer.d.ts +59 -0
  133. package/mapbox/layers/Layer.d.ts.map +1 -0
  134. package/mapbox/layers/Layer.js +101 -0
  135. package/mapbox/layers/RealtimeLayer.d.ts +181 -0
  136. package/mapbox/layers/RealtimeLayer.d.ts.map +1 -0
  137. package/mapbox/layers/RealtimeLayer.js +276 -0
  138. package/mapbox/layers/index.d.ts +3 -0
  139. package/mapbox/layers/index.d.ts.map +1 -0
  140. package/mapbox/layers/index.js +2 -0
  141. package/mapbox/utils/getMercatorResolution.d.ts +9 -0
  142. package/mapbox/utils/getMercatorResolution.d.ts.map +1 -0
  143. package/mapbox/utils/getMercatorResolution.js +18 -0
  144. package/mapbox/utils/getSourceCoordinates.d.ts +9 -0
  145. package/mapbox/utils/getSourceCoordinates.d.ts.map +1 -0
  146. package/mapbox/utils/getSourceCoordinates.js +27 -0
  147. package/mapbox/utils/index.d.ts +3 -0
  148. package/mapbox/utils/index.d.ts.map +1 -0
  149. package/mapbox/utils/index.js +2 -0
  150. package/mbt.js +59983 -0
  151. package/mbt.js.map +7 -0
  152. package/mbt.min.js +1084 -0
  153. package/mbt.min.js.map +7 -0
  154. package/ol/controls/CopyrightControl.d.ts +31 -0
  155. package/ol/controls/CopyrightControl.d.ts.map +1 -0
  156. package/ol/controls/CopyrightControl.js +68 -0
  157. package/ol/controls/RoutingControl.d.ts +193 -0
  158. package/ol/controls/RoutingControl.d.ts.map +1 -0
  159. package/ol/controls/RoutingControl.js +631 -0
  160. package/ol/controls/StopFinderControl.d.ts +30 -0
  161. package/ol/controls/StopFinderControl.d.ts.map +1 -0
  162. package/{src/ol → ol}/controls/StopFinderControl.js +10 -16
  163. package/ol/controls/index.d.ts +4 -0
  164. package/ol/controls/index.d.ts.map +1 -0
  165. package/ol/index.d.ts +6 -0
  166. package/ol/index.d.ts.map +1 -0
  167. package/ol/layers/Layer.d.ts +86 -0
  168. package/ol/layers/Layer.d.ts.map +1 -0
  169. package/ol/layers/Layer.js +160 -0
  170. package/ol/layers/MapGlLayer.d.ts +67 -0
  171. package/ol/layers/MapGlLayer.d.ts.map +1 -0
  172. package/ol/layers/MapGlLayer.js +218 -0
  173. package/ol/layers/MapboxLayer.d.ts +50 -0
  174. package/ol/layers/MapboxLayer.d.ts.map +1 -0
  175. package/ol/layers/MapboxLayer.js +109 -0
  176. package/ol/layers/MapboxStyleLayer.d.ts +129 -0
  177. package/ol/layers/MapboxStyleLayer.d.ts.map +1 -0
  178. package/ol/layers/MapboxStyleLayer.js +374 -0
  179. package/ol/layers/MaplibreLayer.d.ts +28 -0
  180. package/ol/layers/MaplibreLayer.d.ts.map +1 -0
  181. package/ol/layers/MaplibreLayer.js +34 -0
  182. package/ol/layers/RealtimeLayer.d.ts +202 -0
  183. package/ol/layers/RealtimeLayer.d.ts.map +1 -0
  184. package/ol/layers/RealtimeLayer.js +340 -0
  185. package/ol/layers/RoutingLayer.d.ts +34 -0
  186. package/ol/layers/RoutingLayer.d.ts.map +1 -0
  187. package/ol/layers/RoutingLayer.js +85 -0
  188. package/ol/layers/VectorLayer.d.ts +25 -0
  189. package/ol/layers/VectorLayer.d.ts.map +1 -0
  190. package/ol/layers/VectorLayer.js +38 -0
  191. package/ol/layers/WMSLayer.d.ts +42 -0
  192. package/ol/layers/WMSLayer.d.ts.map +1 -0
  193. package/ol/layers/WMSLayer.js +88 -0
  194. package/ol/layers/index.d.ts +9 -0
  195. package/ol/layers/index.d.ts.map +1 -0
  196. package/{src/ol → ol}/layers/index.js +1 -1
  197. package/ol/styles/fullTrajectoryDelayStyle.d.ts +4 -0
  198. package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +1 -0
  199. package/ol/styles/fullTrajectoryDelayStyle.js +33 -0
  200. package/ol/styles/fullTrajectoryStyle.d.ts +5 -0
  201. package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -0
  202. package/ol/styles/fullTrajectoryStyle.js +44 -0
  203. package/ol/styles/index.d.ts +3 -0
  204. package/ol/styles/index.d.ts.map +1 -0
  205. package/package.json +96 -189
  206. package/setupTests.d.ts +2 -0
  207. package/setupTests.d.ts.map +1 -0
  208. package/{src/setupTests.js → setupTests.js} +13 -2
  209. package/types/common.d.ts +122 -0
  210. package/types/index.d.ts +11 -0
  211. package/types/realtime.d.ts +320 -0
  212. package/types/routing.d.ts +206 -0
  213. package/types/stops.d.ts +143 -0
  214. package/.babelrc +0 -6
  215. package/.esdoc.json +0 -17
  216. package/.eslintignore +0 -1
  217. package/.github/workflows/conventional-pr-title.yml +0 -21
  218. package/.github/workflows/cypress.yml +0 -29
  219. package/.github/workflows/nodejs.yml +0 -28
  220. package/.husky/commit-msg +0 -4
  221. package/.husky/post-checkout +0 -4
  222. package/.husky/post-merge +0 -4
  223. package/.husky/post-rebase +0 -4
  224. package/.husky/pre-commit +0 -4
  225. package/.neutrinorc.js +0 -176
  226. package/.nvmrc +0 -1
  227. package/CHANGELOG.md +0 -10
  228. package/LICENSE +0 -21
  229. package/README.md +0 -23
  230. package/__mocks__/mapbox-gl.js +0 -81
  231. package/__mocks__/maplibre-gl.js +0 -81
  232. package/commitlint.config.js +0 -1
  233. package/cypress/fixtures/example.json +0 -5
  234. package/cypress/integration/examples/api.spec.js +0 -7
  235. package/cypress/integration/examples/examples.spec.js +0 -7
  236. package/cypress/integration/examples/navigation.spec.js +0 -29
  237. package/cypress/plugins/index.js +0 -21
  238. package/cypress/support/commands.js +0 -25
  239. package/cypress/support/index.js +0 -20
  240. package/cypress.json +0 -4
  241. package/data/fetchRoute.json +0 -292
  242. package/data/fetchTrajectories.json +0 -18
  243. package/data/fetchTrajectoryById.json +0 -3
  244. package/data/fetchTrajectoryStations.json +0 -18
  245. package/data/stopsSearch.json +0 -15
  246. package/documentation.yml +0 -4
  247. package/esdoc/README.md +0 -27
  248. package/esdoc/plugins/MyPlugin.js +0 -69
  249. package/esdoc/plugins/dynamic-property-plugin/Plugin.js +0 -50
  250. package/esdoc/plugins/externals-plugin/Plugin.js +0 -45
  251. package/esdoc/plugins/externals-plugin/externals.js +0 -96
  252. package/global-setup.js +0 -3
  253. package/index.html +0 -0
  254. package/indexweb.html +0 -49
  255. package/jest.config.js +0 -5
  256. package/pull_request_template.md +0 -17
  257. package/renovate.json +0 -4
  258. package/scripts/read-pkg-json.js +0 -22
  259. package/src/api/index.js +0 -3
  260. package/src/api/routing/RoutingAPI.js +0 -44
  261. package/src/api/routing/RoutingAPI.test.js +0 -41
  262. package/src/api/stops/StopsAPI.js +0 -41
  263. package/src/api/stops/StopsAPI.test.js +0 -34
  264. package/src/api/tralis/TralisAPI.js +0 -731
  265. package/src/api/tralis/TralisAPI.test.js +0 -75
  266. package/src/api/tralis/TralisAPIUtils.js +0 -73
  267. package/src/api/tralis/WebSocketConnector.js +0 -338
  268. package/src/api/tralis/WebSocketConnector.test.js +0 -356
  269. package/src/assets/Lato-Black.ttf +0 -0
  270. package/src/assets/Lato-BlackItalic.ttf +0 -0
  271. package/src/assets/Lato-Bold.ttf +0 -0
  272. package/src/assets/Lato-BoldItalic.ttf +0 -0
  273. package/src/assets/Lato-Italic.ttf +0 -0
  274. package/src/assets/Lato-Light.ttf +0 -0
  275. package/src/assets/Lato-LightItalic.ttf +0 -0
  276. package/src/assets/Lato-Regular.ttf +0 -0
  277. package/src/assets/Lato-Thin.ttf +0 -0
  278. package/src/assets/Lato-ThinItalic.ttf +0 -0
  279. package/src/assets/OFL.txt +0 -93
  280. package/src/common/Tracker.js +0 -197
  281. package/src/common/api/api.js +0 -64
  282. package/src/common/api/api.test.js +0 -68
  283. package/src/common/controls/Control.js +0 -146
  284. package/src/common/controls/Control.test.js +0 -98
  285. package/src/common/index.js +0 -5
  286. package/src/common/layers/Layer.js +0 -404
  287. package/src/common/layers/Layer.test.js +0 -585
  288. package/src/common/mixins/CopyrightMixin.js +0 -48
  289. package/src/common/mixins/SearchMixin.js +0 -176
  290. package/src/common/mixins/TralisLayerMixin.js +0 -930
  291. package/src/common/styles/index.js +0 -4
  292. package/src/common/styles/trackerDefaultStyle.js +0 -333
  293. package/src/common/styles/trackerSimpleStyle.js +0 -22
  294. package/src/common/trackerConfig.js +0 -190
  295. package/src/common/trackerConfig.test.js +0 -25
  296. package/src/common/typedefs.js +0 -23
  297. package/src/common/utils/createTrackerFilters.js +0 -87
  298. package/src/common/utils/createTrackerFilters.test.js +0 -95
  299. package/src/common/utils/getMapboxMapCopyrights.js +0 -32
  300. package/src/common/utils/getMapboxMapCopyrights.test.js +0 -47
  301. package/src/common/utils/getMapboxStyleUrl.js +0 -32
  302. package/src/common/utils/getVehiclePosition.js +0 -72
  303. package/src/common/utils/index.js +0 -5
  304. package/src/common/utils/removeDuplicate.js +0 -22
  305. package/src/common/utils/removeDuplicate.test.js +0 -22
  306. package/src/common/utils/sortByDelay.js +0 -23
  307. package/src/common/utils/timeUtils.test.js +0 -16
  308. package/src/doc/App.js +0 -116
  309. package/src/doc/App.scss +0 -51
  310. package/src/doc/_redirects +0 -2
  311. package/src/doc/components/CodeSandboxButton.js +0 -103
  312. package/src/doc/components/Documentation.js +0 -40
  313. package/src/doc/components/Esdoc/Anchor.js +0 -57
  314. package/src/doc/components/Esdoc/ClassDoc.js +0 -272
  315. package/src/doc/components/Esdoc/DeprecatedHTML.js +0 -16
  316. package/src/doc/components/Esdoc/DetailDocs.js +0 -281
  317. package/src/doc/components/Esdoc/DetailHTML.js +0 -33
  318. package/src/doc/components/Esdoc/DirectSubclassHTML.js +0 -30
  319. package/src/doc/components/Esdoc/DocBuilderUtils.js +0 -694
  320. package/src/doc/components/Esdoc/DocLinkHTML.js +0 -62
  321. package/src/doc/components/Esdoc/DocsLinkHTML.js +0 -38
  322. package/src/doc/components/Esdoc/Esdoc.js +0 -63
  323. package/src/doc/components/Esdoc/EsdocContent.js +0 -51
  324. package/src/doc/components/Esdoc/EsdocNavigation.js +0 -13
  325. package/src/doc/components/Esdoc/EsdocSearch.js +0 -81
  326. package/src/doc/components/Esdoc/ExperimentalHTML.js +0 -17
  327. package/src/doc/components/Esdoc/ExtendsChainHTML.js +0 -32
  328. package/src/doc/components/Esdoc/FileDocLinkHTML.js +0 -60
  329. package/src/doc/components/Esdoc/IdentifiersDoc.js +0 -113
  330. package/src/doc/components/Esdoc/IndirectSubclassHTML.js +0 -30
  331. package/src/doc/components/Esdoc/InheritedSummaryDoc.js +0 -70
  332. package/src/doc/components/Esdoc/InheritedSummaryHTML.js +0 -38
  333. package/src/doc/components/Esdoc/MixinClassesHTML.js +0 -29
  334. package/src/doc/components/Esdoc/NavDoc.js +0 -112
  335. package/src/doc/components/Esdoc/OverrideMethod.js +0 -44
  336. package/src/doc/components/Esdoc/OverrideMethodDescription.js +0 -35
  337. package/src/doc/components/Esdoc/Properties.js +0 -89
  338. package/src/doc/components/Esdoc/README.md +0 -45
  339. package/src/doc/components/Esdoc/SignatureHTML.js +0 -123
  340. package/src/doc/components/Esdoc/SingleDoc.js +0 -31
  341. package/src/doc/components/Esdoc/SummaryDoc.js +0 -160
  342. package/src/doc/components/Esdoc/SummaryHTML.js +0 -96
  343. package/src/doc/components/Esdoc/TypeDocLinkHTML.js +0 -249
  344. package/src/doc/components/Esdoc/css/identifiers.css +0 -38
  345. package/src/doc/components/Esdoc/css/search.css +0 -76
  346. package/src/doc/components/Esdoc/css/style.css +0 -603
  347. package/src/doc/components/Esdoc/index.js +0 -7
  348. package/src/doc/components/Example.js +0 -153
  349. package/src/doc/components/Examples.js +0 -183
  350. package/src/doc/components/Home.js +0 -106
  351. package/src/doc/components/TrackerExample.js +0 -38
  352. package/src/doc/examples/assets/tralis-live-map/index.js +0 -11
  353. package/src/doc/examples/assets/tralis-live-map/s1kreis.svg +0 -105
  354. package/src/doc/examples/assets/tralis-live-map/s20kreis.svg +0 -101
  355. package/src/doc/examples/assets/tralis-live-map/s2kreis.svg +0 -95
  356. package/src/doc/examples/assets/tralis-live-map/s3kreis.svg +0 -95
  357. package/src/doc/examples/assets/tralis-live-map/s4kreis.svg +0 -95
  358. package/src/doc/examples/assets/tralis-live-map/s6kreis.svg +0 -95
  359. package/src/doc/examples/assets/tralis-live-map/s7kreis.svg +0 -95
  360. package/src/doc/examples/assets/tralis-live-map/s8kreis.svg +0 -93
  361. package/src/doc/examples/assets/tralis-live-map/unknown.svg +0 -107
  362. package/src/doc/examples/mb-copyright.html +0 -26
  363. package/src/doc/examples/mb-copyright.js +0 -37
  364. package/src/doc/examples/mb-tracker.html +0 -1
  365. package/src/doc/examples/mb-tracker.js +0 -39
  366. package/src/doc/examples/mb-tracker.md +0 -1
  367. package/src/doc/examples/mb-tralis.html +0 -1
  368. package/src/doc/examples/mb-tralis.js +0 -34
  369. package/src/doc/examples/ol-copyright.html +0 -26
  370. package/src/doc/examples/ol-copyright.js +0 -43
  371. package/src/doc/examples/ol-mapbox-layer.html +0 -1
  372. package/src/doc/examples/ol-mapbox-layer.js +0 -28
  373. package/src/doc/examples/ol-mapbox-layer.md +0 -0
  374. package/src/doc/examples/ol-mapbox-style-layer.html +0 -12
  375. package/src/doc/examples/ol-mapbox-style-layer.js +0 -44
  376. package/src/doc/examples/ol-query.html +0 -32
  377. package/src/doc/examples/ol-query.js +0 -83
  378. package/src/doc/examples/ol-routing.html +0 -26
  379. package/src/doc/examples/ol-routing.js +0 -59
  380. package/src/doc/examples/ol-routing.md +0 -1
  381. package/src/doc/examples/ol-stop-finder.html +0 -15
  382. package/src/doc/examples/ol-stop-finder.js +0 -31
  383. package/src/doc/examples/ol-stop-finder.md +0 -1
  384. package/src/doc/examples/ol-tracker.html +0 -1
  385. package/src/doc/examples/ol-tracker.js +0 -44
  386. package/src/doc/examples/ol-tracker.md +0 -1
  387. package/src/doc/examples/ol-tralis.html +0 -5
  388. package/src/doc/examples/ol-tralis.js +0 -57
  389. package/src/doc/examples/tralis-live-map.html +0 -1
  390. package/src/doc/examples/tralis-live-map.js +0 -51
  391. package/src/doc/examples/tralis-live-map.md +0 -3
  392. package/src/doc/examples.js +0 -107
  393. package/src/doc/img/examples/live_tracker_mb.jpg +0 -0
  394. package/src/doc/img/examples/live_tracker_munich.jpg +0 -0
  395. package/src/doc/img/examples/live_tracker_ol.jpg +0 -0
  396. package/src/doc/img/examples/mapbox.jpg +0 -0
  397. package/src/doc/img/examples/mapbox_style.jpg +0 -0
  398. package/src/doc/img/examples/ol-copyright.png +0 -0
  399. package/src/doc/img/examples/query_objects.jpg +0 -0
  400. package/src/doc/img/examples/routing.jpg +0 -0
  401. package/src/doc/img/examples/simple_map.jpg +0 -0
  402. package/src/doc/img/examples/stops.jpg +0 -0
  403. package/src/doc/img/favico.ico +0 -0
  404. package/src/doc/index.js +0 -21
  405. package/src/index.js +0 -10
  406. package/src/mapbox/controls/CopyrightControl.js +0 -58
  407. package/src/mapbox/layers/Layer.js +0 -118
  408. package/src/mapbox/layers/Layer.test.js +0 -202
  409. package/src/mapbox/layers/TralisLayer.js +0 -329
  410. package/src/mapbox/layers/TralisLayer.test.js +0 -40
  411. package/src/mapbox/layers/index.js +0 -2
  412. package/src/mapbox/utils.js +0 -46
  413. package/src/ol/README.md +0 -0
  414. package/src/ol/controls/CopyrightControl.js +0 -80
  415. package/src/ol/controls/CopyrightControl.test.js +0 -211
  416. package/src/ol/controls/RoutingControl.js +0 -752
  417. package/src/ol/controls/RoutingControl.test.js +0 -216
  418. package/src/ol/controls/StopFinderControl.test.js +0 -59
  419. package/src/ol/controls/snapshots/RoutingControlRouteGen10.json +0 -58
  420. package/src/ol/controls/snapshots/RoutingControlRouteGen100.json +0 -292
  421. package/src/ol/controls/snapshots/RoutingControlRouteGen30.json +0 -69
  422. package/src/ol/controls/snapshots/RoutingControlRouteGen5.json +0 -58
  423. package/src/ol/controls/snapshots/RoutingControlRouteOSM.json +0 -759
  424. package/src/ol/controls/snapshots/RoutingControlStation1.json +0 -60
  425. package/src/ol/controls/snapshots/RoutingControlStation2.json +0 -49
  426. package/src/ol/layers/Layer.js +0 -193
  427. package/src/ol/layers/Layer.test.js +0 -197
  428. package/src/ol/layers/MapboxLayer.js +0 -378
  429. package/src/ol/layers/MapboxLayer.test.js +0 -186
  430. package/src/ol/layers/MapboxStyleLayer.js +0 -417
  431. package/src/ol/layers/MapboxStyleLayer.test.js +0 -262
  432. package/src/ol/layers/MaplibreLayer.js +0 -280
  433. package/src/ol/layers/RoutingLayer.js +0 -91
  434. package/src/ol/layers/RoutingLayer.test.js +0 -49
  435. package/src/ol/layers/TralisLayer.js +0 -359
  436. package/src/ol/layers/TralisLayer.test.js +0 -97
  437. package/src/ol/layers/VectorLayer.js +0 -43
  438. package/src/ol/layers/VectorLayer.test.js +0 -98
  439. package/src/ol/layers/WMSLayer.js +0 -80
  440. package/src/ol/layers/WMSLayer.test.js +0 -84
  441. package/src/ol/styles/fullTrajectoryDelayStyle.js +0 -35
  442. package/src/ol/styles/fullTrajectoryStyle.js +0 -51
  443. package/webpack.config.js +0 -6
  444. /package/{src/mapbox → mapbox}/controls/index.js +0 -0
  445. /package/{src/ol → ol}/controls/index.js +0 -0
  446. /package/{src/ol → ol}/index.js +0 -0
  447. /package/{src/ol → ol}/styles/index.js +0 -0
@@ -0,0 +1,109 @@
1
+ /* eslint-disable no-underscore-dangle */
2
+ import { Map } from 'mapbox-gl';
3
+ import { getMapboxMapCopyrights, getMapboxRender } from '../../common/utils';
4
+ import MapGlLayer from './MapGlLayer';
5
+ /**
6
+ * A class representing Mapboxlayer to display on BasicMap
7
+ *
8
+ * @example
9
+ * import { MapboxLayer } from 'mobility-toolbox-js/ol';
10
+ *
11
+ * const layer = new MapboxLayer({
12
+ * url: 'https://maps.geops.io/styles/travic_v2/style.json',
13
+ * apikey: 'yourApiKey',
14
+ * });
15
+ *
16
+ * @classproperty {ol/Map~Map} map - The map where the layer is displayed.
17
+ * @extends {Layer}
18
+ */
19
+ export default class MapboxLayer extends MapGlLayer {
20
+ /**
21
+ * Initialize the layer and listen to feature clicks.
22
+ * @param {ol/Map~Map} map
23
+ */
24
+ attachToMap(map) {
25
+ super.attachToMap(map);
26
+ if (!this.map) {
27
+ return;
28
+ }
29
+ this.olListenersKeys.push(this.map.on('change:size', () => {
30
+ try {
31
+ if (this.mbMap) {
32
+ this.mbMap.resize();
33
+ }
34
+ }
35
+ catch (err) {
36
+ // ignore render errors
37
+ // eslint-disable-next-line no-console
38
+ console.warn(err);
39
+ }
40
+ }));
41
+ }
42
+ /**
43
+ * Create the mapbox map.
44
+ * @private
45
+ */
46
+ loadMbMap() {
47
+ var _a;
48
+ // If the map hasn't been resized, the center could be [NaN,NaN].
49
+ // We set default good value for the mapbox map, to avoid the app crashes.
50
+ let [x, y] = ((_a = this.map) === null || _a === void 0 ? void 0 : _a.getView().getCenter()) || [];
51
+ if (!x || !y) {
52
+ x = 0;
53
+ y = 0;
54
+ }
55
+ // Options the last render run did happen. If something changes
56
+ // we have to render again
57
+ /** @ignore */
58
+ this.renderState = {
59
+ center: [x, y],
60
+ zoom: undefined,
61
+ rotation: undefined,
62
+ visible: undefined,
63
+ opacity: undefined,
64
+ size: [0, 0],
65
+ };
66
+ super.loadMbMap();
67
+ if (!this.mbMap) {
68
+ // mbMap could ne bull if the map is not in the dom yet.
69
+ return;
70
+ }
71
+ this.mbMap.once('load', () => {
72
+ var _a, _b;
73
+ if (!this.mbMap) {
74
+ return;
75
+ }
76
+ this.mbMap.resize();
77
+ /** @ignore */
78
+ this.copyrights = getMapboxMapCopyrights(this.mbMap) || [];
79
+ // @ts-ignore
80
+ (_b = (_a = this.olLayer) === null || _a === void 0 ? void 0 : _a.getSource()) === null || _b === void 0 ? void 0 : _b.setAttributions(this.copyrights);
81
+ });
82
+ const mapboxCanvas = this.mbMap.getCanvas();
83
+ if (mapboxCanvas) {
84
+ if (this.options.tabIndex) {
85
+ mapboxCanvas.setAttribute('tabindex', `${this.options.tabIndex}`);
86
+ }
87
+ else {
88
+ // With a tabIndex='-1' the mouse events works but the map is not focused when we click on it
89
+ // so we remove completely the tabIndex attribute.
90
+ mapboxCanvas.removeAttribute('tabindex');
91
+ }
92
+ }
93
+ }
94
+ getOlLayerRender() {
95
+ return getMapboxRender(this);
96
+ }
97
+ // eslint-disable-next-line class-methods-use-this
98
+ getMapboxMapClass() {
99
+ return Map;
100
+ }
101
+ /**
102
+ * Create a copy of the MapboxLayer.
103
+ * @param {Object} newOptions Options to override
104
+ * @return {MapboxLayer} A MapboxLayer
105
+ */
106
+ clone(newOptions) {
107
+ return new MapboxLayer(Object.assign(Object.assign({}, this.options), newOptions));
108
+ }
109
+ }
@@ -0,0 +1,129 @@
1
+ import { Feature, Map } from 'ol';
2
+ import { Coordinate } from 'ol/coordinate';
3
+ import { ObjectEvent } from 'ol/Object';
4
+ import { AnyMapboxLayer, LayerGetFeatureInfoResponse } from '../../types';
5
+ import Layer, { OlLayerOptions } from './Layer';
6
+ export type MapboxStyleLayerOptions = OlLayerOptions & {
7
+ beforeId?: string;
8
+ mapboxLayer?: AnyMapboxLayer;
9
+ styleLayer?: {
10
+ [key: string]: any;
11
+ };
12
+ styleLayers?: {
13
+ [key: string]: any;
14
+ }[];
15
+ styleLayersFilter?: FilterFunction;
16
+ filters?: FilterFunction | {
17
+ [key: string]: any;
18
+ }[];
19
+ featureInfoFilter?: FilterFunction;
20
+ queryRenderedLayersFilter?: FilterFunction;
21
+ };
22
+ export type StyleLayer = {
23
+ id?: string;
24
+ [key: string]: any;
25
+ };
26
+ /**
27
+ * Layer for visualizing a specific set of layer from a MapboxLayer.
28
+ *
29
+ * @example
30
+ * import { MapboxLayer, MapboxStyleLayer } from 'mobility-toolbox-js/ol';
31
+ *
32
+ * const mapboxLayer = new MapboxLayer({
33
+ * url: 'https://maps.geops.io/styles/travic_v2/style.json?key=[yourApiKey]',
34
+ * });
35
+ *
36
+ * const layer = new MapboxStyleLayer({
37
+ * mapboxLayer: mapboxLayer,
38
+ * styleLayersFilter: () => {},
39
+ * });
40
+ *
41
+ * @classproperty {ol/Map~Map} map - The map where the layer is displayed.
42
+ * @extends {Layer}
43
+ */
44
+ declare class MapboxStyleLayer extends Layer {
45
+ beforeId?: string;
46
+ mapboxLayer?: AnyMapboxLayer;
47
+ styleLayersFilter?: FilterFunction;
48
+ featureInfoFilter?: FilterFunction;
49
+ queryRenderedLayersFilter?: FilterFunction;
50
+ selectedFeatures?: Feature[];
51
+ highlightedFeatures?: Feature[];
52
+ styleLayer?: StyleLayer;
53
+ styleLayers: StyleLayer[];
54
+ addDynamicFilters?: () => void;
55
+ /**
56
+ * Constructor.
57
+ *
58
+ * @param {Object} options
59
+ * @param {MapboxLayer} [options.mapboxLayer] The MapboxLayer to use.
60
+ * @param {Function} [options.styleLayersFilter] Filter function to decide which style layer to display.
61
+ */
62
+ constructor(options: MapboxStyleLayerOptions);
63
+ /**
64
+ * Initialize the layer.
65
+ * @param {ol/Map~Map} map the mapbox map.
66
+ * @override
67
+ */
68
+ attachToMap(map: Map): void;
69
+ /**
70
+ * Terminate the layer.
71
+ * @override
72
+ */
73
+ detachFromMap(): void;
74
+ /** @ignore */
75
+ addStyleLayers(): void;
76
+ /** @ignore */
77
+ removeStyleLayers(): void;
78
+ /**
79
+ * On Mapbox map load callback function. Add style layers and dynaimc filters.
80
+ * @ignore
81
+ */
82
+ onLoad(): void;
83
+ /**
84
+ * Request feature information for a given coordinate.
85
+ * @param {ol/coordinate~Coordinate} coordinate Coordinate to request the information at.
86
+ * @return {Promise<FeatureInfo>} Promise with features, layer and coordinate.
87
+ */
88
+ getFeatureInfoAtCoordinate(coordinate: Coordinate): Promise<LayerGetFeatureInfoResponse>;
89
+ /**
90
+ * Set filter that determines which features should be rendered in a style layer.
91
+ * @param {mapboxgl.filter} filter Determines which features should be rendered in a style layer.
92
+ */
93
+ setFilter(filter: {
94
+ [key: string]: any;
95
+ }): void;
96
+ /**
97
+ * Set if features are hovered or not.
98
+ * @param {Array<ol/Feature~Feature>} features
99
+ * @param {boolean} state Is the feature hovered
100
+ * @private
101
+ */
102
+ setHoverState(features: Feature[], state: boolean): void;
103
+ /**
104
+ * Select a list of features.
105
+ * @param {Array<ol/Feature~Feature>} [features=[]] Features to select.
106
+ * @private
107
+ */
108
+ select(features?: Feature[]): void;
109
+ /**
110
+ * Highlight a list of features.
111
+ * @param {Array<ol/Feature~Feature>} [features=[]] Features to highlight.
112
+ * @private
113
+ */
114
+ highlight(features?: Feature[]): void;
115
+ /**
116
+ * Apply visibility to style layers that fits the styleLayersFilter function.
117
+ * @param {Event} evt Layer's event that has called the function.
118
+ * @private
119
+ */
120
+ applyLayoutVisibility(evt?: ObjectEvent): void;
121
+ /**
122
+ * Create a copy of the MapboxStyleLayer.
123
+ * @param {Object} newOptions Options to override.
124
+ * @return {MapboxStyleLayer} A MapboxStyleLayer.
125
+ */
126
+ clone(newOptions: MapboxStyleLayerOptions): MapboxStyleLayer;
127
+ }
128
+ export default MapboxStyleLayer;
129
+ //# sourceMappingURL=MapboxStyleLayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapboxStyleLayer.d.ts","sourceRoot":"","sources":["../../../src/ol/layers/MapboxStyleLayer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACpC,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;IACvC,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC,OAAO,CAAC,EAAE,cAAc,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;IACpD,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC,yBAAyB,CAAC,EAAE,cAAc,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,cAAM,gBAAiB,SAAQ,KAAK;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,cAAc,CAAC;IAE7B,iBAAiB,CAAC,EAAE,cAAc,CAAC;IAEnC,iBAAiB,CAAC,EAAE,cAAc,CAAC;IAEnC,yBAAyB,CAAC,EAAE,cAAc,CAAC;IAE3C,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAE7B,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC;IAEhC,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE/B;;;;;;OAMG;gBACS,OAAO,EAAE,uBAAuB;IA6F5C;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,GAAG;IAoDpB;;;OAGG;IACH,aAAa;IASb,cAAc;IACd,cAAc;IAgBd,cAAc;IACd,iBAAiB;IAcjB;;;OAGG;IACH,MAAM;IAmBN;;;;OAIG;IACH,0BAA0B,CACxB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,2BAA2B,CAAC;IA4CvC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAcxC;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO;IAmCjD;;;;OAIG;IACH,MAAM,CAAC,QAAQ,GAAE,OAAO,EAAO;IAM/B;;;;OAIG;IACH,SAAS,CAAC,QAAQ,GAAE,OAAO,EAAO;IAkBlC;;;;OAIG;IAEH,qBAAqB,CAAC,GAAG,CAAC,EAAE,WAAW;IAiCvC;;;;OAIG;IACH,KAAK,CAAC,UAAU,EAAE,uBAAuB;CAG1C;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,374 @@
1
+ import Layer from './Layer';
2
+ /**
3
+ * Layer for visualizing a specific set of layer from a MapboxLayer.
4
+ *
5
+ * @example
6
+ * import { MapboxLayer, MapboxStyleLayer } from 'mobility-toolbox-js/ol';
7
+ *
8
+ * const mapboxLayer = new MapboxLayer({
9
+ * url: 'https://maps.geops.io/styles/travic_v2/style.json?key=[yourApiKey]',
10
+ * });
11
+ *
12
+ * const layer = new MapboxStyleLayer({
13
+ * mapboxLayer: mapboxLayer,
14
+ * styleLayersFilter: () => {},
15
+ * });
16
+ *
17
+ * @classproperty {ol/Map~Map} map - The map where the layer is displayed.
18
+ * @extends {Layer}
19
+ */
20
+ class MapboxStyleLayer extends Layer {
21
+ /**
22
+ * Constructor.
23
+ *
24
+ * @param {Object} options
25
+ * @param {MapboxLayer} [options.mapboxLayer] The MapboxLayer to use.
26
+ * @param {Function} [options.styleLayersFilter] Filter function to decide which style layer to display.
27
+ */
28
+ constructor(options) {
29
+ super(options);
30
+ /**
31
+ * MapboxLayer provided for the style Layer.
32
+ * @type {MapboxLayer}
33
+ * @private
34
+ */
35
+ this.mapboxLayer = options.mapboxLayer;
36
+ /**
37
+ * Define if the layer has data to display in the current mapbox layer.
38
+ */
39
+ this.disabled = false;
40
+ /**
41
+ * Function to filter features to be displayed.
42
+ * @type {function}
43
+ * @private
44
+ */
45
+ this.styleLayersFilter = options.styleLayersFilter;
46
+ /**
47
+ * Mapbox style layer id where to add the style layers.
48
+ * See [mapbox.map.addLayer](https://docs.mapbox.com/mapbox-gl-js/api/map/#map#addlayer) documentation.
49
+ * @type {String}
50
+ * @private
51
+ */
52
+ this.beforeId = options.beforeId;
53
+ /**
54
+ * Function to filter features for getFeatureInfoAtCoordinate method.
55
+ * @type {function}
56
+ * @private
57
+ */
58
+ this.featureInfoFilter = options.featureInfoFilter || ((obj) => obj);
59
+ /**
60
+ * Function to query the rendered features.
61
+ * @type {function}
62
+ * @private
63
+ */
64
+ this.queryRenderedLayersFilter = options.queryRenderedLayersFilter;
65
+ /**
66
+ * Array of features to highlight.
67
+ * @type {Array<ol/Feature~Feature>}
68
+ * @private
69
+ */
70
+ this.highlightedFeatures = [];
71
+ /**
72
+ * Array of selected features.
73
+ * @type {Array<ol/Feature~Feature>}
74
+ * @private
75
+ */
76
+ this.selectedFeatures = [];
77
+ /**
78
+ * Array of mapbox style layers to add.
79
+ * @type {Array<mapboxgl.styleLayer>}
80
+ * @private
81
+ */
82
+ this.styleLayers =
83
+ (options.styleLayer ? [options.styleLayer] : options.styleLayers) || [];
84
+ /**
85
+ * @private
86
+ */
87
+ this.addStyleLayers = this.addStyleLayers.bind(this);
88
+ /**
89
+ * @private
90
+ */
91
+ this.onLoad = this.onLoad.bind(this);
92
+ if (options.filters) {
93
+ /** @private */
94
+ this.addDynamicFilters = () => {
95
+ this.setFilter(typeof options.filters === 'function'
96
+ ? options.filters(this)
97
+ : options.filters);
98
+ };
99
+ }
100
+ if (!this.styleLayersFilter && this.styleLayers) {
101
+ this.styleLayersFilter = (styleLayer) => {
102
+ var _a;
103
+ return !!((_a = this.styleLayers) === null || _a === void 0 ? void 0 : _a.find((sl) => styleLayer.id === sl.id));
104
+ };
105
+ }
106
+ }
107
+ /**
108
+ * Initialize the layer.
109
+ * @param {ol/Map~Map} map the mapbox map.
110
+ * @override
111
+ */
112
+ attachToMap(map) {
113
+ var _a;
114
+ if (this.mapboxLayer && !this.mapboxLayer.map) {
115
+ (_a = this.mapboxLayer) === null || _a === void 0 ? void 0 : _a.attachToMap(map);
116
+ }
117
+ super.attachToMap(map);
118
+ if (!this.map || !this.mapboxLayer) {
119
+ return;
120
+ }
121
+ // Apply the initial visibiltity.
122
+ const { mbMap } = this.mapboxLayer;
123
+ if (!mbMap) {
124
+ // If the mbMap is not yet created because the map has no target yet, we
125
+ // relaunch the initialisation when it's the case.
126
+ this.olListenersKeys.push(this.map.on('change:target', () => {
127
+ this.attachToMap(map);
128
+ }));
129
+ return;
130
+ }
131
+ // mbMap.loaded() and mbMap.isStyleLoaded() are reliable only on the first call of init.
132
+ // On the next call (when a topic change for example), these functions returns false because
133
+ // the style is being modified.
134
+ // That's why we rely on a property instead for the next calls.
135
+ if (this.mapboxLayer.loaded || mbMap.isStyleLoaded() || mbMap.loaded()) {
136
+ this.onLoad();
137
+ }
138
+ else {
139
+ mbMap.once('load', this.onLoad);
140
+ }
141
+ // Apply the visibiltity when layer's visibility change.
142
+ this.olListenersKeys.push(
143
+ // @ts-ignore
144
+ this.on('change:visible', (evt) => {
145
+ // Once the map is loaded we can apply vsiiblity without waiting
146
+ // the style. Mapbox take care of the application of style changes.
147
+ this.applyLayoutVisibility(evt);
148
+ }));
149
+ this.olListenersKeys.push(
150
+ // @ts-ignore
151
+ this.mapboxLayer.on('load', () => {
152
+ this.onLoad();
153
+ }));
154
+ }
155
+ /**
156
+ * Terminate the layer.
157
+ * @override
158
+ */
159
+ detachFromMap() {
160
+ var _a;
161
+ if ((_a = this.mapboxLayer) === null || _a === void 0 ? void 0 : _a.mbMap) {
162
+ const { mbMap } = this.mapboxLayer;
163
+ mbMap.off('load', this.onLoad);
164
+ this.removeStyleLayers();
165
+ }
166
+ super.detachFromMap();
167
+ }
168
+ /** @ignore */
169
+ addStyleLayers() {
170
+ var _a;
171
+ if (!((_a = this.mapboxLayer) === null || _a === void 0 ? void 0 : _a.mbMap)) {
172
+ return;
173
+ }
174
+ const { mbMap } = this.mapboxLayer;
175
+ this.styleLayers.forEach((styleLayer) => {
176
+ const { id, source } = styleLayer;
177
+ if (mbMap.getSource(source) && id && !mbMap.getLayer(id)) {
178
+ // @ts-ignore
179
+ mbMap.addLayer(styleLayer, this.beforeId);
180
+ }
181
+ });
182
+ this.applyLayoutVisibility();
183
+ }
184
+ /** @ignore */
185
+ removeStyleLayers() {
186
+ var _a;
187
+ if (!((_a = this.mapboxLayer) === null || _a === void 0 ? void 0 : _a.mbMap)) {
188
+ return;
189
+ }
190
+ const { mbMap } = this.mapboxLayer;
191
+ this.styleLayers.forEach((styleLayer) => {
192
+ const { id } = styleLayer;
193
+ if (id && mbMap.getLayer(id)) {
194
+ mbMap.removeLayer(id);
195
+ }
196
+ });
197
+ }
198
+ /**
199
+ * On Mapbox map load callback function. Add style layers and dynaimc filters.
200
+ * @ignore
201
+ */
202
+ onLoad() {
203
+ var _a;
204
+ this.addStyleLayers();
205
+ if (this.addDynamicFilters) {
206
+ this.addDynamicFilters();
207
+ }
208
+ if (!((_a = this.mapboxLayer) === null || _a === void 0 ? void 0 : _a.mbMap)) {
209
+ return;
210
+ }
211
+ const { mbMap } = this.mapboxLayer;
212
+ const style = mbMap.getStyle();
213
+ if (style && this.styleLayersFilter) {
214
+ // @ts-ignore
215
+ const styles = style.layers.filter(this.styleLayersFilter);
216
+ this.disabled = !styles.length;
217
+ }
218
+ }
219
+ /**
220
+ * Request feature information for a given coordinate.
221
+ * @param {ol/coordinate~Coordinate} coordinate Coordinate to request the information at.
222
+ * @return {Promise<FeatureInfo>} Promise with features, layer and coordinate.
223
+ */
224
+ getFeatureInfoAtCoordinate(coordinate) {
225
+ var _a;
226
+ if (!((_a = this.mapboxLayer) === null || _a === void 0 ? void 0 : _a.mbMap)) {
227
+ return Promise.resolve({ coordinate, features: [], layer: this });
228
+ }
229
+ const { mbMap } = this.mapboxLayer;
230
+ // Ignore the getFeatureInfo until the mapbox map is loaded
231
+ if (!mbMap.isStyleLoaded()) {
232
+ return Promise.resolve({ coordinate, features: [], layer: this });
233
+ }
234
+ // We query features only on style layers used by this layer.
235
+ let layers = this.styleLayers || [];
236
+ if (this.styleLayersFilter) {
237
+ // @ts-ignore
238
+ layers = mbMap.getStyle().layers.filter(this.styleLayersFilter);
239
+ }
240
+ if (this.queryRenderedLayersFilter) {
241
+ // @ts-ignore
242
+ layers = mbMap.getStyle().layers.filter(this.queryRenderedLayersFilter);
243
+ }
244
+ return this.mapboxLayer
245
+ .getFeatureInfoAtCoordinate(coordinate, {
246
+ layers: layers.map((layer) => layer && layer.id),
247
+ validate: false,
248
+ })
249
+ .then((featureInfo) => {
250
+ const features = featureInfo.features.filter((feature) => {
251
+ var _a;
252
+ // @ts-ignore
253
+ return this.featureInfoFilter(feature, (_a = this.map) === null || _a === void 0 ? void 0 : _a.getView().getResolution());
254
+ });
255
+ this.highlight(features);
256
+ return Object.assign(Object.assign({}, featureInfo), { features, layer: this });
257
+ });
258
+ }
259
+ /**
260
+ * Set filter that determines which features should be rendered in a style layer.
261
+ * @param {mapboxgl.filter} filter Determines which features should be rendered in a style layer.
262
+ */
263
+ setFilter(filter) {
264
+ var _a;
265
+ if (!((_a = this.mapboxLayer) === null || _a === void 0 ? void 0 : _a.mbMap)) {
266
+ return;
267
+ }
268
+ const { mbMap } = this.mapboxLayer;
269
+ this.styleLayers.forEach(({ id }) => {
270
+ if (id && filter && mbMap.getLayer(id)) {
271
+ // @ts-ignore
272
+ mbMap.setFilter(id, filter);
273
+ }
274
+ });
275
+ }
276
+ /**
277
+ * Set if features are hovered or not.
278
+ * @param {Array<ol/Feature~Feature>} features
279
+ * @param {boolean} state Is the feature hovered
280
+ * @private
281
+ */
282
+ setHoverState(features, state) {
283
+ var _a;
284
+ if (!((_a = this.mapboxLayer) === null || _a === void 0 ? void 0 : _a.mbMap)) {
285
+ return;
286
+ }
287
+ const { mbMap } = this.mapboxLayer;
288
+ if (!features || !mbMap) {
289
+ return;
290
+ }
291
+ features.forEach((feature) => {
292
+ const { source, sourceLayer } = feature.get('mapboxFeature') || {};
293
+ if ((!source && !sourceLayer) || !feature.getId()) {
294
+ if (!feature.getId()) {
295
+ // eslint-disable-next-line no-console
296
+ console.warn("No feature's id found. To use the feature state functionnality, tiles must be generated with --generate-ids. See https://github.com/mapbox/tippecanoe#adding-calculated-attributes.", feature.getId(), feature.getProperties());
297
+ }
298
+ return;
299
+ }
300
+ mbMap.setFeatureState({
301
+ id: feature.getId(),
302
+ source,
303
+ sourceLayer,
304
+ }, { hover: state });
305
+ });
306
+ }
307
+ /**
308
+ * Select a list of features.
309
+ * @param {Array<ol/Feature~Feature>} [features=[]] Features to select.
310
+ * @private
311
+ */
312
+ select(features = []) {
313
+ this.setHoverState(this.selectedFeatures || [], false);
314
+ this.selectedFeatures = features;
315
+ this.setHoverState(this.selectedFeatures || [], true);
316
+ }
317
+ /**
318
+ * Highlight a list of features.
319
+ * @param {Array<ol/Feature~Feature>} [features=[]] Features to highlight.
320
+ * @private
321
+ */
322
+ highlight(features = []) {
323
+ var _a;
324
+ // Filter out selected features
325
+ const filtered = ((_a = this.highlightedFeatures) === null || _a === void 0 ? void 0 : _a.filter((feature) => !(this.selectedFeatures || [])
326
+ .map((feat) => feat.getId())
327
+ .includes(feature.getId()))) || [];
328
+ // Remove previous highlight
329
+ this.setHoverState(filtered, false);
330
+ this.highlightedFeatures = features;
331
+ // Add highlight
332
+ this.setHoverState(this.highlightedFeatures, true);
333
+ }
334
+ /**
335
+ * Apply visibility to style layers that fits the styleLayersFilter function.
336
+ * @param {Event} evt Layer's event that has called the function.
337
+ * @private
338
+ */
339
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
340
+ applyLayoutVisibility(evt) {
341
+ var _a;
342
+ const { visible } = this;
343
+ const filterFunc = this.styleLayersFilter;
344
+ if (!((_a = this.mapboxLayer) === null || _a === void 0 ? void 0 : _a.mbMap)) {
345
+ return;
346
+ }
347
+ const { mbMap } = this.mapboxLayer;
348
+ const style = mbMap.getStyle();
349
+ if (!style) {
350
+ return;
351
+ }
352
+ if (filterFunc) {
353
+ const visibilityValue = visible ? 'visible' : 'none';
354
+ const layers = style.layers || [];
355
+ for (let i = 0; i < layers.length; i += 1) {
356
+ const styleLayer = layers[i];
357
+ if (filterFunc(styleLayer)) {
358
+ if (mbMap.getLayer(styleLayer.id)) {
359
+ mbMap.setLayoutProperty(styleLayer.id, 'visibility', visibilityValue);
360
+ }
361
+ }
362
+ }
363
+ }
364
+ }
365
+ /**
366
+ * Create a copy of the MapboxStyleLayer.
367
+ * @param {Object} newOptions Options to override.
368
+ * @return {MapboxStyleLayer} A MapboxStyleLayer.
369
+ */
370
+ clone(newOptions) {
371
+ return new MapboxStyleLayer(Object.assign(Object.assign({}, this.options), newOptions));
372
+ }
373
+ }
374
+ export default MapboxStyleLayer;
@@ -0,0 +1,28 @@
1
+ import { Map } from 'maplibre-gl';
2
+ import MapGlLayer, { MapGlLayerOptions } from './MapGlLayer';
3
+ /**
4
+ * A class representing MaplibreLayer to display on BasicMap
5
+ *
6
+ * @example
7
+ * import { MaplibreLayer } from 'mobility-toolbox-js/ol';
8
+ *
9
+ * const layer = new MaplibreLayer({
10
+ * url: 'https://maps.geops.io/styles/travic_v2/style.json',
11
+ * apikey: 'yourApiKey',
12
+ * });
13
+ *
14
+ * @classproperty {ol/Map~Map} map - The map where the layer is displayed.
15
+ * @extends {Layer}
16
+ */
17
+ export default class MaplibreLayer extends MapGlLayer {
18
+ mbMap?: maplibregl.Map;
19
+ getOlLayerRender(): import("ol/layer/Layer").RenderFunction;
20
+ getMapboxMapClass(): typeof Map;
21
+ /**
22
+ * Create a copy of the MapboxLayer.
23
+ * @param {Object} newOptions Options to override
24
+ * @return {MapboxLayer} A MapboxLayer
25
+ */
26
+ clone(newOptions: MapGlLayerOptions): MaplibreLayer;
27
+ }
28
+ //# sourceMappingURL=MaplibreLayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaplibreLayer.d.ts","sourceRoot":"","sources":["../../../src/ol/layers/MaplibreLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IACnD,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;IAEvB,gBAAgB;IAKhB,iBAAiB;IAIjB;;;;OAIG;IACH,KAAK,CAAC,UAAU,EAAE,iBAAiB;CAGpC"}
@@ -0,0 +1,34 @@
1
+ import { Map } from 'maplibre-gl';
2
+ import { getMaplibreRender } from '../../common/utils';
3
+ import MapGlLayer from './MapGlLayer';
4
+ /**
5
+ * A class representing MaplibreLayer to display on BasicMap
6
+ *
7
+ * @example
8
+ * import { MaplibreLayer } from 'mobility-toolbox-js/ol';
9
+ *
10
+ * const layer = new MaplibreLayer({
11
+ * url: 'https://maps.geops.io/styles/travic_v2/style.json',
12
+ * apikey: 'yourApiKey',
13
+ * });
14
+ *
15
+ * @classproperty {ol/Map~Map} map - The map where the layer is displayed.
16
+ * @extends {Layer}
17
+ */
18
+ export default class MaplibreLayer extends MapGlLayer {
19
+ getOlLayerRender() {
20
+ return getMaplibreRender(this);
21
+ }
22
+ // eslint-disable-next-line class-methods-use-this
23
+ getMapboxMapClass() {
24
+ return Map;
25
+ }
26
+ /**
27
+ * Create a copy of the MapboxLayer.
28
+ * @param {Object} newOptions Options to override
29
+ * @return {MapboxLayer} A MapboxLayer
30
+ */
31
+ clone(newOptions) {
32
+ return new MaplibreLayer(Object.assign(Object.assign({}, this.options), newOptions));
33
+ }
34
+ }