mobility-toolbox-js 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) 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 -3
  13. package/api/typedefs.d.ts +179 -0
  14. package/api/typedefs.d.ts.map +1 -0
  15. package/api/{tralis/typedefs.js → 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 +776 -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 -4
  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/common/styles/{trackerDelayStyle.js → 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 +35 -6
  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 +21 -23
  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 +60 -60
  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 +13 -2
  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 +5 -12
  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 +17 -20
  115. package/common/utils/timeUtils.d.ts +24 -0
  116. package/common/utils/timeUtils.d.ts.map +1 -0
  117. package/common/utils/timeUtils.js +13 -18
  118. package/iife.d.ts +3 -0
  119. package/iife.d.ts.map +1 -0
  120. package/iife.js +5 -0
  121. package/index.d.ts +10 -0
  122. package/index.d.ts.map +1 -0
  123. package/index.js +10 -2
  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 +25 -35
  127. package/mapbox/controls/index.d.ts +2 -0
  128. package/mapbox/controls/index.d.ts.map +1 -0
  129. package/mapbox/controls/index.js +2 -0
  130. package/mapbox/index.d.ts +6 -0
  131. package/mapbox/index.d.ts.map +1 -0
  132. package/mapbox/index.js +5 -3
  133. package/mapbox/layers/Layer.d.ts +59 -0
  134. package/mapbox/layers/Layer.d.ts.map +1 -0
  135. package/mapbox/layers/Layer.js +78 -95
  136. package/mapbox/layers/RealtimeLayer.d.ts +181 -0
  137. package/mapbox/layers/RealtimeLayer.d.ts.map +1 -0
  138. package/mapbox/layers/RealtimeLayer.js +276 -0
  139. package/mapbox/layers/index.d.ts +3 -0
  140. package/mapbox/layers/index.d.ts.map +1 -0
  141. package/mapbox/layers/index.js +2 -0
  142. package/mapbox/utils/getMercatorResolution.d.ts +9 -0
  143. package/mapbox/utils/getMercatorResolution.d.ts.map +1 -0
  144. package/mapbox/utils/getMercatorResolution.js +18 -0
  145. package/mapbox/utils/getSourceCoordinates.d.ts +9 -0
  146. package/mapbox/utils/getSourceCoordinates.d.ts.map +1 -0
  147. package/mapbox/utils/getSourceCoordinates.js +27 -0
  148. package/mapbox/utils/index.d.ts +3 -0
  149. package/mapbox/utils/index.d.ts.map +1 -0
  150. package/mapbox/utils/index.js +2 -0
  151. package/mbt.js +60005 -0
  152. package/mbt.js.map +7 -0
  153. package/mbt.min.js +1084 -0
  154. package/mbt.min.js.map +7 -0
  155. package/ol/controls/CopyrightControl.d.ts +31 -0
  156. package/ol/controls/CopyrightControl.d.ts.map +1 -0
  157. package/ol/controls/CopyrightControl.js +44 -56
  158. package/ol/controls/RoutingControl.d.ts +193 -0
  159. package/ol/controls/RoutingControl.d.ts.map +1 -0
  160. package/ol/controls/RoutingControl.js +546 -667
  161. package/ol/controls/StopFinderControl.d.ts +30 -0
  162. package/ol/controls/StopFinderControl.d.ts.map +1 -0
  163. package/ol/controls/StopFinderControl.js +10 -16
  164. package/ol/controls/index.d.ts +4 -0
  165. package/ol/controls/index.d.ts.map +1 -0
  166. package/ol/controls/index.js +3 -0
  167. package/ol/index.d.ts +6 -0
  168. package/ol/index.d.ts.map +1 -0
  169. package/ol/index.js +4 -12
  170. package/ol/layers/Layer.d.ts +86 -0
  171. package/ol/layers/Layer.d.ts.map +1 -0
  172. package/ol/layers/Layer.js +147 -166
  173. package/ol/layers/MapGlLayer.d.ts +67 -0
  174. package/ol/layers/MapGlLayer.d.ts.map +1 -0
  175. package/ol/layers/MapGlLayer.js +218 -0
  176. package/ol/layers/MapboxLayer.d.ts +50 -0
  177. package/ol/layers/MapboxLayer.d.ts.map +1 -0
  178. package/ol/layers/MapboxLayer.js +79 -348
  179. package/ol/layers/MapboxStyleLayer.d.ts +129 -0
  180. package/ol/layers/MapboxStyleLayer.d.ts.map +1 -0
  181. package/ol/layers/MapboxStyleLayer.js +329 -368
  182. package/ol/layers/MaplibreLayer.d.ts +28 -0
  183. package/ol/layers/MaplibreLayer.d.ts.map +1 -0
  184. package/ol/layers/MaplibreLayer.js +13 -259
  185. package/ol/layers/RealtimeLayer.d.ts +202 -0
  186. package/ol/layers/RealtimeLayer.d.ts.map +1 -0
  187. package/ol/layers/RealtimeLayer.js +340 -0
  188. package/ol/layers/RoutingLayer.d.ts +34 -0
  189. package/ol/layers/RoutingLayer.d.ts.map +1 -0
  190. package/ol/layers/RoutingLayer.js +62 -68
  191. package/ol/layers/VectorLayer.d.ts +25 -0
  192. package/ol/layers/VectorLayer.d.ts.map +1 -0
  193. package/ol/layers/VectorLayer.js +27 -32
  194. package/ol/layers/WMSLayer.d.ts +42 -0
  195. package/ol/layers/WMSLayer.d.ts.map +1 -0
  196. package/ol/layers/WMSLayer.js +74 -66
  197. package/ol/layers/index.d.ts +9 -0
  198. package/ol/layers/index.d.ts.map +1 -0
  199. package/ol/layers/index.js +8 -0
  200. package/ol/styles/fullTrajectoryDelayStyle.d.ts +4 -0
  201. package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +1 -0
  202. package/ol/styles/fullTrajectoryDelayStyle.js +23 -25
  203. package/ol/styles/fullTrajectoryStyle.d.ts +5 -0
  204. package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -0
  205. package/ol/styles/fullTrajectoryStyle.js +37 -44
  206. package/ol/styles/index.d.ts +3 -0
  207. package/ol/styles/index.d.ts.map +1 -0
  208. package/package.json +98 -177
  209. package/setupTests.d.ts +2 -0
  210. package/setupTests.d.ts.map +1 -0
  211. package/setupTests.js +26 -0
  212. package/types/common.d.ts +122 -0
  213. package/types/index.d.ts +11 -0
  214. package/types/realtime.d.ts +320 -0
  215. package/types/routing.d.ts +206 -0
  216. package/types/stops.d.ts +143 -0
  217. package/README.md +0 -23
  218. package/api/routing/RoutingAPI.js +0 -44
  219. package/api/routing/RoutingAPI.test.js +0 -41
  220. package/api/stops/StopsAPI.js +0 -41
  221. package/api/stops/StopsAPI.test.js +0 -34
  222. package/api/tralis/TralisAPI.js +0 -731
  223. package/api/tralis/TralisAPI.test.js +0 -75
  224. package/api/tralis/TralisAPIUtils.js +0 -73
  225. package/api/tralis/WebSocketConnector.js +0 -338
  226. package/api/tralis/WebSocketConnector.test.js +0 -356
  227. package/common/Tracker.js +0 -197
  228. package/common/api/api.js +0 -64
  229. package/common/api/api.test.js +0 -68
  230. package/common/controls/Control.js +0 -146
  231. package/common/controls/Control.test.js +0 -98
  232. package/common/layers/Layer.js +0 -404
  233. package/common/layers/Layer.test.js +0 -585
  234. package/common/mixins/CopyrightMixin.js +0 -48
  235. package/common/mixins/SearchMixin.js +0 -176
  236. package/common/mixins/TralisLayerMixin.js +0 -930
  237. package/common/styles/trackerDefaultStyle.js +0 -333
  238. package/common/styles/trackerSimpleStyle.js +0 -22
  239. package/common/trackerConfig.js +0 -190
  240. package/common/trackerConfig.test.js +0 -25
  241. package/common/utils/createTrackerFilters.js +0 -87
  242. package/common/utils/createTrackerFilters.test.js +0 -95
  243. package/common/utils/getMapboxMapCopyrights.test.js +0 -47
  244. package/common/utils/getMapboxStyleUrl.js +0 -32
  245. package/common/utils/removeDuplicate.test.js +0 -22
  246. package/common/utils/timeUtils.test.js +0 -16
  247. package/index.js.map +0 -1
  248. package/mapbox/layers/Layer.test.js +0 -202
  249. package/mapbox/layers/TralisLayer.js +0 -329
  250. package/mapbox/layers/TralisLayer.test.js +0 -40
  251. package/mapbox/utils.js +0 -46
  252. package/module.js +0 -23
  253. package/ol/README.md +0 -0
  254. package/ol/controls/CopyrightControl.test.js +0 -211
  255. package/ol/controls/RoutingControl.test.js +0 -216
  256. package/ol/controls/StopFinderControl.test.js +0 -59
  257. package/ol/controls/snapshots/RoutingControlRouteGen10.json +0 -58
  258. package/ol/controls/snapshots/RoutingControlRouteGen100.json +0 -292
  259. package/ol/controls/snapshots/RoutingControlRouteGen30.json +0 -69
  260. package/ol/controls/snapshots/RoutingControlRouteGen5.json +0 -58
  261. package/ol/controls/snapshots/RoutingControlRouteOSM.json +0 -759
  262. package/ol/controls/snapshots/RoutingControlStation1.json +0 -60
  263. package/ol/controls/snapshots/RoutingControlStation2.json +0 -49
  264. package/ol/layers/Layer.test.js +0 -197
  265. package/ol/layers/MapboxLayer.test.js +0 -186
  266. package/ol/layers/MapboxStyleLayer.test.js +0 -262
  267. package/ol/layers/RoutingLayer.test.js +0 -49
  268. package/ol/layers/TralisLayer.js +0 -359
  269. package/ol/layers/TralisLayer.test.js +0 -97
  270. package/ol/layers/VectorLayer.test.js +0 -98
  271. package/ol/layers/WMSLayer.test.js +0 -84
@@ -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"}
@@ -1,13 +1,6 @@
1
- /* eslint-disable no-underscore-dangle */
2
- import { toLonLat } from 'ol/proj';
3
1
  import { Map } from 'maplibre-gl';
4
- import Source from 'ol/source/Source';
5
- import OLLayer from 'ol/layer/Layer';
6
- import GeoJSON from 'ol/format/GeoJSON';
7
- import { toDegrees } from 'ol/math';
8
- import Layer from './Layer';
9
- import { getMapboxMapCopyrights, getMapboxStyleUrl } from '../../common/utils';
10
-
2
+ import { getMaplibreRender } from '../../common/utils';
3
+ import MapGlLayer from './MapGlLayer';
11
4
  /**
12
5
  * A class representing MaplibreLayer to display on BasicMap
13
6
  *
@@ -22,259 +15,20 @@ import { getMapboxMapCopyrights, getMapboxStyleUrl } from '../../common/utils';
22
15
  * @classproperty {ol/Map~Map} map - The map where the layer is displayed.
23
16
  * @extends {Layer}
24
17
  */
25
- export default class MaplibreLayer extends Layer {
26
- /**
27
- * Constructor.
28
- *
29
- * @param {Object} options
30
- * @param {boolean} [options.preserveDrawingBuffer=false] If true able to export the canvas.
31
- * @param {number} [options.fadeDuration=300] Duration of the fade effect in ms.
32
- */
33
- constructor(options = {}) {
34
- const mbLayer = new OLLayer({
35
- source: new Source({}),
36
- render: (frameState) => {
37
- if (!this.mbMap) {
38
- // eslint-disable-next-line no-console
39
- console.warn("Mapbox map doesn't exist.");
40
- return null;
41
- }
42
-
43
- const canvas = this.mbMap.getCanvas();
44
- const { viewState } = frameState;
45
-
46
- const opacity = this.olLayer.getOpacity();
47
- canvas.style.opacity = opacity;
48
-
49
- // adjust view parameters in mapbox
50
- this.mbMap.jumpTo({
51
- center: toLonLat(viewState.center),
52
- zoom: viewState.zoom - 1,
53
- bearing: toDegrees(-viewState.rotation),
54
- animate: false,
55
- });
56
-
57
- if (!canvas.isConnected) {
58
- // The canvas is not connected to the DOM, request a map rendering at the next animation frame
59
- // to set the canvas size.
60
- this.map.render();
61
- } else if (
62
- canvas.width !== frameState.size[0] ||
63
- canvas.height !== frameState.size[1]
64
- ) {
65
- this.mbMap.resize();
66
- }
67
-
68
- this.mbMap.redraw();
69
-
70
- return this.mbMap.getContainer();
71
- },
72
- });
73
-
74
- super({
75
- ...options,
76
- olLayer: mbLayer,
77
- });
78
-
79
- /**
80
- * Url of the mapbox style.
81
- * @type {string}
82
- * @private
83
- */
84
- this.styleUrl = options.url;
85
-
86
- /**
87
- * Api key for the url of the mapbox style.
88
- * If set to false, the apiKey is not required.
89
- * @type {string}
90
- * @private
91
- */
92
- this.apiKey = options.apiKey;
93
-
94
- /**
95
- * Name of the apiKey to set in the url request.
96
- * Default is 'key'.
97
- * @type {string}
98
- * @private
99
- */
100
- this.apiKeyName = options.apiKeyName || 'key';
101
-
102
- /** @ignore */
103
- this.updateAttribution = this.updateAttribution.bind(this);
104
- }
105
-
106
- /**
107
- * Initialize the layer and listen to feature clicks.
108
- * @param {ol/Map~Map} map
109
- */
110
- init(map) {
111
- super.init(map);
112
-
113
- if (!this.map) {
114
- return;
18
+ export default class MaplibreLayer extends MapGlLayer {
19
+ getOlLayerRender() {
20
+ return getMaplibreRender(this);
115
21
  }
116
-
117
- /**
118
- * The feature format.
119
- * @type {ol/format/GeoJSON}
120
- */
121
- this.format = new GeoJSON({
122
- featureProjection: this.map.getView().getProjection(),
123
- });
124
-
125
- this.loadMbMap();
126
- }
127
-
128
- /**
129
- * Terminate what was initialized in init function. Remove layer, events...
130
- */
131
- terminate() {
132
- if (this.mbMap) {
133
- this.mbMap.off('idle', this.updateAttribution);
134
- // Some asynchrone repaints are triggered even if the mbMap has been removed,
135
- // to avoid display of errors we set an empty function.
136
- this.mbMap.triggerRepaint = () => {};
137
- this.mbMap.remove();
138
- this.mbMap = null;
139
- }
140
- this.loaded = false;
141
- super.terminate();
142
- }
143
-
144
- /**
145
- * Returns a style URL with apiKey & apiKeyName infos.
146
- * @private
147
- */
148
- createStyleUrl() {
149
- return getMapboxStyleUrl(this.apiKey, this.apiKeyName, this.styleUrl);
150
- }
151
-
152
- /**
153
- * Create the mapbox map.
154
- * @private
155
- */
156
- loadMbMap() {
157
- this.olListenersKeys.push(
158
- this.map.on('change:target', () => {
159
- this.loadMbMap();
160
- }),
161
- );
162
-
163
- if (!this.map.getTargetElement()) {
164
- return;
22
+ // eslint-disable-next-line class-methods-use-this
23
+ getMapboxMapClass() {
24
+ return Map;
165
25
  }
166
-
167
- if (!this.visible) {
168
- // On next change of visibility we load the map
169
- this.olListenersKeys.push(
170
- this.once('change:visible', () => {
171
- this.loadMbMap();
172
- }),
173
- );
174
- return;
175
- }
176
-
177
- const container = document.createElement('div');
178
- container.style.position = 'absolute';
179
- container.style.width = '100%';
180
- container.style.height = '100%';
181
-
182
26
  /**
183
- * A mapbox map
184
- * @type {mapboxgl.Map}
27
+ * Create a copy of the MapboxLayer.
28
+ * @param {Object} newOptions Options to override
29
+ * @return {MapboxLayer} A MapboxLayer
185
30
  */
186
- this.mbMap = new Map({
187
- style: this.createStyleUrl(),
188
- container,
189
- interactive: false,
190
- trackResize: false,
191
- attributionControl: false,
192
- ...(this.options.mapOptions || {}),
193
- });
194
-
195
- this.mbMap.once('load', () => {
196
- /**
197
- * Is the map loaded.
198
- * @type {boolean}
199
- */
200
- this.loaded = true;
201
-
202
- this.dispatchEvent({
203
- type: 'load',
204
- target: this,
205
- });
206
- });
207
-
208
- this.mbMap.on('idle', this.updateAttribution);
209
- }
210
-
211
- /**
212
- * Update attributions of the source.
213
- * @private
214
- */
215
- updateAttribution(evt) {
216
- const newAttributions = getMapboxMapCopyrights(evt.target) || [];
217
- if (this.copyrights?.toString() !== newAttributions.toString()) {
218
- this.copyrights = newAttributions;
219
- this.olLayer.getSource().setAttributions(newAttributions);
220
- }
221
- }
222
-
223
- /**
224
- * Request feature information for a given coordinate.
225
- * @param {ol/coordinate~Coordinate} coordinate Coordinate to request the information at.
226
- * @param {Object} options A [mapboxgl.Map#queryrenderedfeatures](https://docs.mapbox.com/mapbox-gl-js/api/map/#map#queryrenderedfeatures) options parameter.
227
- * @return {Promise<FeatureInfo>} Promise with features, layer and coordinate. The original Mapbox feature is available as a property named 'mapboxFeature'.
228
- */
229
- getFeatureInfoAtCoordinate(coordinate, options) {
230
- // Ignore the getFeatureInfo until the mapbox map is loaded
231
- if (
232
- !options ||
233
- !this.format ||
234
- !this.mbMap ||
235
- !this.mbMap.isStyleLoaded()
236
- ) {
237
- return Promise.resolve({ coordinate, features: [], layer: this });
238
- }
239
-
240
- let pixel = coordinate && this.mbMap.project(toLonLat(coordinate));
241
-
242
- if (this.hitTolerance) {
243
- const { x, y } = pixel;
244
- pixel = [
245
- { x: x - this.hitTolerance, y: y - this.hitTolerance },
246
- { x: x + this.hitTolerance, y: y + this.hitTolerance },
247
- ];
31
+ clone(newOptions) {
32
+ return new MaplibreLayer(Object.assign(Object.assign({}, this.options), newOptions));
248
33
  }
249
-
250
- // At this point we get GeoJSON Mapbox feature, we transform it to an OpenLayers
251
- // feature to be consistent with other layers.
252
- const features = this.mbMap
253
- .queryRenderedFeatures(pixel, options)
254
- .map((feature) => {
255
- const olFeature = this.format.readFeature(feature);
256
- if (olFeature) {
257
- // We save the original mapbox feature to avoid losing informations
258
- // potentially needed for other functionnality like highlighting
259
- // (id, layer id, source, sourceLayer ...)
260
- olFeature.set('mapboxFeature', feature);
261
- }
262
- return olFeature;
263
- });
264
-
265
- return Promise.resolve({
266
- layer: this,
267
- features,
268
- coordinate,
269
- });
270
- }
271
-
272
- /**
273
- * Create a copy of the MapboxLayer.
274
- * @param {Object} newOptions Options to override
275
- * @return {MapboxLayer} A MapboxLayer
276
- */
277
- clone(newOptions) {
278
- return new MaplibreLayer({ ...this.options, ...newOptions });
279
- }
280
34
  }
@@ -0,0 +1,202 @@
1
+ import GeoJSON from 'ol/format/GeoJSON';
2
+ import Feature, { FeatureLike } from 'ol/Feature';
3
+ import { MapEvent } from 'ol';
4
+ import { Coordinate } from 'ol/coordinate';
5
+ import { ObjectEvent } from 'ol/Object';
6
+ import Layer from './Layer';
7
+ import { RealtimeLayerMixinOptions } from '../../common/mixins/RealtimeLayerMixin';
8
+ import { AnyMap, LayerGetFeatureInfoResponse, RealtimeFullTrajectory, RealtimeTrainId } from '../../types';
9
+ import { RealtimeTrajectory } from '../../api/typedefs';
10
+ import { WebSocketAPIMessageEventData } from '../../common/api/WebSocketAPI';
11
+ export type OlRealtimeLayerOptions = RealtimeLayerMixinOptions & {
12
+ fullTrajectoryStyle: (feature: FeatureLike, resolution: number, options: any) => void;
13
+ allowRenderWhenAnimating?: boolean;
14
+ };
15
+ declare const RealtimeLayer_base: {
16
+ new (options: RealtimeLayerMixinOptions): {
17
+ [x: string]: any;
18
+ debug: boolean;
19
+ trajectories?: {
20
+ [key: string]: GeoJSONFeature;
21
+ } | undefined;
22
+ canvas?: import("../../types").AnyCanvas | undefined;
23
+ mode: import("../../types").RealtimeMode;
24
+ api: import("../../api/RealtimeAPI").default;
25
+ tenant: string;
26
+ time?: Date | undefined;
27
+ live?: boolean | undefined;
28
+ speed?: number | undefined;
29
+ filter?: Function | undefined;
30
+ sort?: Function | undefined;
31
+ style?: import("../../types").RealtimeStyleFunction | undefined;
32
+ styleOptions?: import("../../types").RealtimeStyleOptions | undefined;
33
+ pixelRatio?: number | undefined;
34
+ minZoomInterpolation: number;
35
+ isUpdateBboxOnMoveEnd: boolean;
36
+ hoverVehicleId?: string | undefined;
37
+ selectedVehicleId?: string | undefined;
38
+ renderState?: import("../../types").RealtimeRenderState | undefined;
39
+ useRequestAnimationFrame?: boolean | undefined;
40
+ useDebounce?: boolean | undefined;
41
+ useThrottle?: boolean | undefined;
42
+ mots?: import("../../types").RealtimeMot[] | undefined;
43
+ motsByZoom: import("../../types").RealtimeMot[][];
44
+ generalizationLevel?: import("../../types").RealtimeGeneralizationLevel | undefined;
45
+ generalizationLevelByZoom: import("../../types").RealtimeGeneralizationLevel[];
46
+ renderTimeIntervalByZoom: number[];
47
+ format: GeoJSON;
48
+ requestId?: number | undefined;
49
+ updateTimeInterval?: number | undefined;
50
+ updateTimeDelay?: number | undefined;
51
+ visibilityRef: import("ol/events").EventsKey;
52
+ selectedVehicle: GeoJSONFeature;
53
+ getMotsByZoom: (zoom: number) => import("../../types").RealtimeMot[];
54
+ getGeneralizationLevelByZoom: (zoom: number) => import("../../types").RealtimeGeneralizationLevel;
55
+ getRenderTimeIntervalByZoom: (zoom: number) => number;
56
+ throttleRenderTrajectories: (viewState: import("../../types").ViewState, noInterpolate?: boolean | undefined) => void;
57
+ debounceRenderTrajectories: (viewState: import("../../types").ViewState, noInterpolate?: boolean | undefined) => void;
58
+ onStart?: ((realtimeLayer: any) => void) | undefined;
59
+ onStop?: ((realtimeLayer: any) => void) | undefined;
60
+ defineProperties(options: RealtimeLayerMixinOptions): void;
61
+ attachToMap(map: any): void;
62
+ detachFromMap(): void;
63
+ start(): void;
64
+ startUpdateTime(): void;
65
+ stop(): void;
66
+ stopUpdateTime(): void;
67
+ renderTrajectoriesInternal(viewState: import("../../types").ViewState, noInterpolate?: boolean): boolean;
68
+ renderTrajectories(viewState: import("../../types").ViewState | undefined, noInterpolate: boolean | undefined): void;
69
+ setBbox(extent?: [number, number, number, number] | undefined, zoom?: number | undefined): void;
70
+ getRefreshTimeInMs(zoom?: number | undefined): number;
71
+ getVehicle(filterFc: Function): GeoJSONFeature[];
72
+ getFeatureInfoAtCoordinate(coordinate: Coordinate, options: import("../../types").LayerGetFeatureInfoOptions): Promise<{
73
+ layer: any;
74
+ features: Feature<import("ol/geom/Geometry").default>[];
75
+ coordinate: Coordinate;
76
+ }>;
77
+ getTrajectoryInfos(id: string): Promise<{
78
+ stopSequence: WebSocketAPIMessageEventData<RealtimeFullTrajectory> | WebSocketAPIMessageEventData<GeoJSONFeature[]>;
79
+ fullTrajectory: WebSocketAPIMessageEventData<RealtimeFullTrajectory> | WebSocketAPIMessageEventData<GeoJSONFeature[]>;
80
+ }>;
81
+ purgeOutOfDateTrajectories(): void;
82
+ purgeTrajectory(trajectory: GeoJSONFeature, extent: [number, number, number, number], zoom: number): boolean;
83
+ addTrajectory(trajectory: GeoJSONFeature): void;
84
+ removeTrajectory(trajectoryOrId: any): void;
85
+ onZoomEnd(): void;
86
+ onDocumentVisibilityChange(): void;
87
+ onTrajectoryMessage(data: WebSocketAPIMessageEventData<GeoJSONFeature>): void;
88
+ onDeleteTrajectoryMessage(data: WebSocketAPIMessageEventData<string>): void;
89
+ onFeatureHover(features: Feature<import("ol/geom/Geometry").default>[], layer: import("../../types").AnyRealtimeLayer, coordinate: Coordinate): void;
90
+ onFeatureClick(features: Feature<import("ol/geom/Geometry").default>[], layer: import("../../types").AnyRealtimeLayer, coordinate: Coordinate): void;
91
+ };
92
+ } & typeof Layer;
93
+ /**
94
+ * Responsible for loading and display data from a Realtime service.
95
+ *
96
+ * @example
97
+ * import { RealtimeLayer } from 'mobility-toolbox-js/ol';
98
+ *
99
+ * const layer = new RealtimeLayer({
100
+ * url: [yourUrl],
101
+ * apiKey: [yourApiKey],
102
+ * });
103
+ *
104
+ *
105
+ * @see <a href="/api/class/src/api/RealtimeAPI%20js~RealtimeAPI%20html">RealtimeAPI</a>
106
+ *
107
+ * @extends {Layer}
108
+ * @implements {UserInteractionsLayerInterface}
109
+ * @implements {RealtimeLayerInterface}
110
+ */
111
+ declare class RealtimeLayer extends RealtimeLayer_base {
112
+ allowRenderWhenAnimating?: boolean;
113
+ /**
114
+ * Constructor.
115
+ *
116
+ * @param {Object} options
117
+ * @private
118
+ */
119
+ constructor(options: OlRealtimeLayerOptions);
120
+ attachToMap(map: AnyMap): void;
121
+ /**
122
+ * Destroy the container of the tracker.
123
+ */
124
+ detachFromMap(): void;
125
+ /**
126
+ * Detect in the canvas if there is data to query at a specific coordinate.
127
+ * @param {ol/coordinate~Coordinate} coordinate The coordinate to test
128
+ * @returns
129
+ */
130
+ hasFeatureInfoAtCoordinate(coordinate: Coordinate): boolean;
131
+ /**
132
+ * Render the trajectories using current map's size, resolution and rotation.
133
+ * @param {boolean} noInterpolate if true, renders the vehicles without interpolating theirs positions.
134
+ * @overrides
135
+ */
136
+ renderTrajectories(noInterpolate: boolean): void;
137
+ /**
138
+ * Launch renderTrajectories. it avoids duplicating code in renderTrajectories methhod.
139
+ * @private
140
+ * @override
141
+ */
142
+ renderTrajectoriesInternal(viewState: ViewState, noInterpolate: boolean): boolean;
143
+ /**
144
+ * Return the delay in ms before the next rendering.
145
+ */
146
+ getRefreshTimeInMs(): number;
147
+ getFeatureInfoAtCoordinate(coordinate: Coordinate, options?: {}): Promise<LayerGetFeatureInfoResponse>;
148
+ /**
149
+ * On move end we update the websocket with the new bbox.
150
+ *
151
+ * @private
152
+ * @override
153
+ */
154
+ onMoveEnd(evt: MapEvent | ObjectEvent): void;
155
+ /**
156
+ * Function called on moveend event only when the zoom has changed.
157
+ *
158
+ * @param {ol/MapEvent~MapEvent} evt Moveend event.
159
+ * @private
160
+ * @override
161
+ */
162
+ onZoomEnd(): void;
163
+ /**
164
+ * Update the cursor style when hovering a vehicle.
165
+ *
166
+ * @private
167
+ * @override
168
+ */
169
+ onFeatureHover(features: Feature[], layer: RealtimeLayer, coordinate: Coordinate): void;
170
+ /**
171
+ * Display the complete trajectory of the vehicle.
172
+ *
173
+ * @private
174
+ * @override
175
+ */
176
+ onFeatureClick(features: Feature[], layer: RealtimeLayer, coordinate: Coordinate): void;
177
+ /**
178
+ * Remove the trajectory form the list if necessary.
179
+ *
180
+ * @private
181
+ */
182
+ purgeTrajectory(trajectory: RealtimeTrajectory, extent: [number, number, number, number], zoom: number): boolean;
183
+ /**
184
+ * Send the current bbox to the websocket
185
+ *
186
+ * @private
187
+ */
188
+ setBbox(extent?: [number, number, number, number], zoom?: number): void;
189
+ /**
190
+ * Highlight the trajectory of journey.
191
+ * @private
192
+ */
193
+ highlightTrajectory(id: RealtimeTrainId): Promise<Feature[] | undefined>;
194
+ /**
195
+ * Create a copy of the RealtimeLayer.
196
+ * @param {Object} newOptions Options to override
197
+ * @return {RealtimeLayer} A RealtimeLayer
198
+ */
199
+ clone(newOptions: OlRealtimeLayerOptions): RealtimeLayer;
200
+ }
201
+ export default RealtimeLayer;
202
+ //# sourceMappingURL=RealtimeLayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealtimeLayer.d.ts","sourceRoot":"","sources":["../../../src/ol/layers/RealtimeLayer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAKxC,OAAO,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAc,EACZ,yBAAyB,EAC1B,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EACL,MAAM,EACN,2BAA2B,EAC3B,sBAAsB,EACtB,eAAe,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAK7E,MAAM,MAAM,sBAAsB,GAAG,yBAAyB,GAAG;IAC/D,mBAAmB,EAAE,CACnB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,GAAG,KACT,IAAI,CAAC;IACV,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF;;;;;;;;;;;;;;;;;GAiBG;AAEH,cAAM,aAAc,SAAQ,kBAAY;IACtC,wBAAwB,CAAC,EAAE,OAAO,CAAS;IAE3C;;;;;OAKG;gBACS,OAAO,EAAE,sBAAsB;IAmG3C,WAAW,CAAC,GAAG,EAAE,MAAM;IA4BvB;;OAEG;IACH,aAAa;IAKb;;;;OAIG;IACH,0BAA0B,CAAC,UAAU,EAAE,UAAU;IAgBjD;;;;OAIG;IAEH,kBAAkB,CAAC,aAAa,EAAE,OAAO;IA2BzC;;;;OAIG;IACH,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO;IA2BvE;;OAEG;IACH,kBAAkB;IAIlB,0BAA0B,CACxB,UAAU,EAAE,UAAU,EACtB,OAAO,KAAK,GACX,OAAO,CAAC,2BAA2B,CAAC;IAgBvC;;;;;OAKG;IAEH,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW;IAerC;;;;;;OAMG;IAEH,SAAS;IAiBT;;;;;OAKG;IACH,cAAc,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,UAAU;IAQxB;;;;;OAKG;IACH,cAAc,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,UAAU;IAWxB;;;;OAIG;IACH,eAAe,CACb,UAAU,EAAE,kBAAkB,EAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACxC,IAAI,EAAE,MAAM;IAed;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM;IAUhE;;;OAGG;IACH,mBAAmB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;IAoBxE;;;;OAIG;IACH,KAAK,CAAC,UAAU,EAAE,sBAAsB;CAGzC;AAED,eAAe,aAAa,CAAC"}