mobility-toolbox-js 2.0.0-beta.45 → 2.0.0-beta.47

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 (201) hide show
  1. package/api/RealtimeAPI.d.ts +80 -64
  2. package/api/RealtimeAPI.d.ts.map +1 -1
  3. package/api/RealtimeAPI.js +58 -45
  4. package/api/RoutingAPI.d.ts +2 -2
  5. package/api/RoutingAPI.d.ts.map +1 -1
  6. package/api/RoutingAPI.js +1 -1
  7. package/api/StopsAPI.d.ts +14 -12
  8. package/api/StopsAPI.d.ts.map +1 -1
  9. package/api/StopsAPI.js +7 -9
  10. package/api/typedefs.d.ts +84 -10
  11. package/api/typedefs.d.ts.map +1 -1
  12. package/api/typedefs.js +3 -1
  13. package/common/api/WebSocketAPI.d.ts +80 -24
  14. package/common/api/WebSocketAPI.d.ts.map +1 -1
  15. package/common/api/WebSocketAPI.js +28 -16
  16. package/common/controls/{Control.d.ts → ControlCommon.d.ts} +21 -19
  17. package/common/controls/ControlCommon.d.ts.map +1 -0
  18. package/common/controls/{Control.js → ControlCommon.js} +21 -8
  19. package/common/controls/CopyrightControlCommon.d.ts +13 -0
  20. package/common/controls/CopyrightControlCommon.d.ts.map +1 -0
  21. package/common/controls/CopyrightControlCommon.js +34 -0
  22. package/common/controls/StopFinderControlCommon.d.ts +54 -0
  23. package/common/controls/StopFinderControlCommon.d.ts.map +1 -0
  24. package/common/{mixins/StopFinderMixin.js → controls/StopFinderControlCommon.js} +25 -38
  25. package/common/layers/{Layer.d.ts → LayerCommon.d.ts} +34 -21
  26. package/common/layers/LayerCommon.d.ts.map +1 -0
  27. package/common/layers/{Layer.js → LayerCommon.js} +15 -9
  28. package/common/mixins/RealtimeLayerMixin.d.ts +243 -19
  29. package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -1
  30. package/common/mixins/RealtimeLayerMixin.js +598 -569
  31. package/common/mixins/UserInteractionsLayerMixin.d.ts +18 -8
  32. package/common/mixins/UserInteractionsLayerMixin.d.ts.map +1 -1
  33. package/common/mixins/UserInteractionsLayerMixin.js +170 -159
  34. package/common/styles/realtimeDefaultStyle.d.ts +30 -9
  35. package/common/styles/realtimeDefaultStyle.d.ts.map +1 -1
  36. package/common/styles/realtimeDefaultStyle.js +41 -17
  37. package/common/styles/realtimeDelayStyle.d.ts +3 -2
  38. package/common/styles/realtimeDelayStyle.d.ts.map +1 -1
  39. package/common/styles/realtimeSimpleStyle.d.ts +1 -1
  40. package/common/styles/realtimeSimpleStyle.d.ts.map +1 -1
  41. package/common/styles/realtimeSimpleStyle.js +9 -7
  42. package/common/typedefs.d.ts +64 -3
  43. package/common/typedefs.d.ts.map +1 -1
  44. package/common/typedefs.js +34 -4
  45. package/common/utils/cleanStopTime.d.ts +3 -2
  46. package/common/utils/cleanStopTime.d.ts.map +1 -1
  47. package/common/utils/cleanStopTime.js +0 -3
  48. package/common/utils/compareDepartures.d.ts +6 -4
  49. package/common/utils/compareDepartures.d.ts.map +1 -1
  50. package/common/utils/compareDepartures.js +3 -2
  51. package/common/utils/createCanvas.d.ts +3 -2
  52. package/common/utils/createCanvas.d.ts.map +1 -1
  53. package/common/utils/createTrackerFilters.d.ts +3 -2
  54. package/common/utils/createTrackerFilters.d.ts.map +1 -1
  55. package/common/utils/createTrackerFilters.js +3 -3
  56. package/common/utils/getLayersAsFlatArray.d.ts +1 -1
  57. package/common/utils/getLayersAsFlatArray.d.ts.map +1 -1
  58. package/common/utils/getLayersAsFlatArray.js +1 -0
  59. package/common/utils/getMapboxMapCopyrights.d.ts +13 -3
  60. package/common/utils/getMapboxMapCopyrights.d.ts.map +1 -1
  61. package/common/utils/getMapboxMapCopyrights.js +10 -4
  62. package/common/utils/getMapboxRender.d.ts +3 -1
  63. package/common/utils/getMapboxRender.d.ts.map +1 -1
  64. package/common/utils/getMapboxRender.js +1 -2
  65. package/common/utils/getVehiclePosition.d.ts +1 -1
  66. package/common/utils/getVehiclePosition.d.ts.map +1 -1
  67. package/common/utils/removeDuplicate.d.ts +2 -2
  68. package/common/utils/removeDuplicate.d.ts.map +1 -1
  69. package/common/utils/renderTrajectories.d.ts +3 -6
  70. package/common/utils/renderTrajectories.d.ts.map +1 -1
  71. package/common/utils/renderTrajectories.js +17 -8
  72. package/common/utils/trackerConfig.d.ts.map +1 -1
  73. package/common/utils/trackerConfig.js +3 -0
  74. package/mapbox/controls/CopyrightControl.d.ts +6 -8
  75. package/mapbox/controls/CopyrightControl.d.ts.map +1 -1
  76. package/mapbox/controls/CopyrightControl.js +3 -8
  77. package/mapbox/layers/Layer.js +1 -1
  78. package/mapbox/layers/RealtimeLayer.d.ts +1 -1
  79. package/mapbox/layers/RealtimeLayer.d.ts.map +1 -1
  80. package/mapbox/utils.d.ts +1 -1
  81. package/mapbox/utils.d.ts.map +1 -1
  82. package/mbt.js +825 -703
  83. package/mbt.js.map +3 -3
  84. package/mbt.min.js +84 -84
  85. package/mbt.min.js.map +3 -3
  86. package/ol/controls/CopyrightControl.d.ts +10 -10
  87. package/ol/controls/CopyrightControl.d.ts.map +1 -1
  88. package/ol/controls/CopyrightControl.js +8 -8
  89. package/ol/controls/RoutingControl.d.ts +10 -3
  90. package/ol/controls/RoutingControl.d.ts.map +1 -1
  91. package/ol/controls/RoutingControl.js +2 -2
  92. package/ol/controls/StopFinderControl.d.ts +5 -7
  93. package/ol/controls/StopFinderControl.d.ts.map +1 -1
  94. package/ol/controls/StopFinderControl.js +4 -8
  95. package/ol/layers/Layer.d.ts +57 -9
  96. package/ol/layers/Layer.d.ts.map +1 -1
  97. package/ol/layers/Layer.js +17 -8
  98. package/ol/layers/MapGlLayer.d.ts +67 -0
  99. package/ol/layers/MapGlLayer.d.ts.map +1 -0
  100. package/{common/mixins/MapboxLayerMixin.js → ol/layers/MapGlLayer.js} +66 -44
  101. package/ol/layers/MapboxLayer.d.ts +15 -17
  102. package/ol/layers/MapboxLayer.d.ts.map +1 -1
  103. package/ol/layers/MapboxLayer.js +11 -8
  104. package/ol/layers/MapboxStyleLayer.d.ts +6 -0
  105. package/ol/layers/MapboxStyleLayer.d.ts.map +1 -1
  106. package/ol/layers/MaplibreLayer.d.ts +4 -4
  107. package/ol/layers/MaplibreLayer.d.ts.map +1 -1
  108. package/ol/layers/MaplibreLayer.js +2 -3
  109. package/ol/layers/RealtimeLayer.d.ts +106 -30
  110. package/ol/layers/RealtimeLayer.d.ts.map +1 -1
  111. package/ol/layers/RealtimeLayer.js +22 -14
  112. package/ol/styles/fullTrajectoryStyle.d.ts +3 -2
  113. package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -1
  114. package/package.json +15 -9
  115. package/types/common.d.ts +111 -0
  116. package/types/index.d.ts +1 -0
  117. package/types/realtime.d.ts +290 -9
  118. package/api/RealtimeAPI.test.d.ts +0 -2
  119. package/api/RealtimeAPI.test.d.ts.map +0 -1
  120. package/api/RealtimeAPI.test.js +0 -67
  121. package/api/RoutingAPI.test.d.ts +0 -2
  122. package/api/RoutingAPI.test.d.ts.map +0 -1
  123. package/api/RoutingAPI.test.js +0 -29
  124. package/api/StopsAPI.test.d.ts +0 -2
  125. package/api/StopsAPI.test.d.ts.map +0 -1
  126. package/api/StopsAPI.test.js +0 -26
  127. package/common/api/HttpAPI.test.d.ts +0 -2
  128. package/common/api/HttpAPI.test.d.ts.map +0 -1
  129. package/common/api/HttpAPI.test.js +0 -54
  130. package/common/api/WebSocketAPI.test.d.ts +0 -2
  131. package/common/api/WebSocketAPI.test.d.ts.map +0 -1
  132. package/common/api/WebSocketAPI.test.js +0 -380
  133. package/common/controls/Control.d.ts.map +0 -1
  134. package/common/controls/Control.test.d.ts +0 -2
  135. package/common/controls/Control.test.d.ts.map +0 -1
  136. package/common/controls/Control.test.js +0 -89
  137. package/common/layers/Layer.d.ts.map +0 -1
  138. package/common/layers/Layer.test.d.ts +0 -2
  139. package/common/layers/Layer.test.d.ts.map +0 -1
  140. package/common/layers/Layer.test.js +0 -137
  141. package/common/mixins/CopyrightMixin.d.ts +0 -22
  142. package/common/mixins/CopyrightMixin.d.ts.map +0 -1
  143. package/common/mixins/CopyrightMixin.js +0 -43
  144. package/common/mixins/MapboxLayerMixin.d.ts +0 -27
  145. package/common/mixins/MapboxLayerMixin.d.ts.map +0 -1
  146. package/common/mixins/StopFinderMixin.d.ts +0 -40
  147. package/common/mixins/StopFinderMixin.d.ts.map +0 -1
  148. package/common/mixins/UserInteractionsLayerMixin.test.d.ts +0 -2
  149. package/common/mixins/UserInteractionsLayerMixin.test.d.ts.map +0 -1
  150. package/common/mixins/UserInteractionsLayerMixin.test.js +0 -214
  151. package/common/utils/createTrackerFilters.test.d.ts +0 -2
  152. package/common/utils/createTrackerFilters.test.d.ts.map +0 -1
  153. package/common/utils/createTrackerFilters.test.js +0 -79
  154. package/common/utils/getMapboxMapCopyrights.test.d.ts +0 -2
  155. package/common/utils/getMapboxMapCopyrights.test.d.ts.map +0 -1
  156. package/common/utils/getMapboxMapCopyrights.test.js +0 -40
  157. package/common/utils/removeDuplicate.test.d.ts +0 -2
  158. package/common/utils/removeDuplicate.test.d.ts.map +0 -1
  159. package/common/utils/removeDuplicate.test.js +0 -19
  160. package/common/utils/timeUtils.test.d.ts +0 -2
  161. package/common/utils/timeUtils.test.d.ts.map +0 -1
  162. package/common/utils/timeUtils.test.js +0 -10
  163. package/common/utils/trackerConfig.test.d.ts +0 -2
  164. package/common/utils/trackerConfig.test.d.ts.map +0 -1
  165. package/common/utils/trackerConfig.test.js +0 -23
  166. package/mapbox/layers/Layer.test.d.ts +0 -2
  167. package/mapbox/layers/Layer.test.d.ts.map +0 -1
  168. package/mapbox/layers/Layer.test.js +0 -204
  169. package/mapbox/layers/RealtimeLayer.test.d.ts +0 -2
  170. package/mapbox/layers/RealtimeLayer.test.d.ts.map +0 -1
  171. package/mapbox/layers/RealtimeLayer.test.js +0 -10
  172. package/ol/controls/CopyrightControl.test.d.ts +0 -2
  173. package/ol/controls/CopyrightControl.test.d.ts.map +0 -1
  174. package/ol/controls/CopyrightControl.test.js +0 -177
  175. package/ol/controls/RoutingControl.test.d.ts +0 -2
  176. package/ol/controls/RoutingControl.test.d.ts.map +0 -1
  177. package/ol/controls/RoutingControl.test.js +0 -150
  178. package/ol/controls/StopFinderControl.test.d.ts +0 -2
  179. package/ol/controls/StopFinderControl.test.d.ts.map +0 -1
  180. package/ol/controls/StopFinderControl.test.js +0 -49
  181. package/ol/layers/Layer.test.d.ts +0 -2
  182. package/ol/layers/Layer.test.d.ts.map +0 -1
  183. package/ol/layers/Layer.test.js +0 -196
  184. package/ol/layers/MapboxLayer.test.d.ts +0 -2
  185. package/ol/layers/MapboxLayer.test.d.ts.map +0 -1
  186. package/ol/layers/MapboxLayer.test.js +0 -164
  187. package/ol/layers/MapboxStyleLayer.test.d.ts +0 -2
  188. package/ol/layers/MapboxStyleLayer.test.d.ts.map +0 -1
  189. package/ol/layers/MapboxStyleLayer.test.js +0 -232
  190. package/ol/layers/RealtimeLayer.test.d.ts +0 -2
  191. package/ol/layers/RealtimeLayer.test.d.ts.map +0 -1
  192. package/ol/layers/RealtimeLayer.test.js +0 -71
  193. package/ol/layers/RoutingLayer.test.d.ts +0 -2
  194. package/ol/layers/RoutingLayer.test.d.ts.map +0 -1
  195. package/ol/layers/RoutingLayer.test.js +0 -39
  196. package/ol/layers/VectorLayer.test.d.ts +0 -2
  197. package/ol/layers/VectorLayer.test.d.ts.map +0 -1
  198. package/ol/layers/VectorLayer.test.js +0 -87
  199. package/ol/layers/WMSLayer.test.d.ts +0 -2
  200. package/ol/layers/WMSLayer.test.d.ts.map +0 -1
  201. package/ol/layers/WMSLayer.test.js +0 -66
@@ -1,14 +1,24 @@
1
+ import { AnyMap, CommonLayerClass, UserInteractionCallback } from '../../types';
2
+ import LayerCommon from '../layers/LayerCommon';
3
+ export declare type UserInteractionsLayerMixinOptions = {
4
+ userInteractions?: boolean;
5
+ userClickInteractions?: boolean;
6
+ userHoverInteractions?: boolean;
7
+ defaultUserInteractions?: boolean;
8
+ onClick?: UserInteractionCallback;
9
+ onHover?: UserInteractionCallback;
10
+ };
1
11
  /**
2
12
  * UserInteractionsLayerInterface.
3
13
  */
4
- export class UserInteractionsLayerInterface {
14
+ export declare class UserInteractionsLayerInterface {
5
15
  constructor(options?: {});
6
16
  /**
7
17
  * Initialize the layer adding user interactions.
8
18
  *
9
19
  * @param {ol/Map~Map} map
10
20
  */
11
- attachToMap(map: any): void;
21
+ attachToMap(map: AnyMap): void;
12
22
  /**
13
23
  * Terminate the layer unsubscribing user interactions.
14
24
  */
@@ -24,21 +34,20 @@ export class UserInteractionsLayerInterface {
24
34
  /**
25
35
  * Subscribe on user:click event.
26
36
  */
27
- onClick(callback: any): void;
37
+ onClick(callback: UserInteractionCallback): void;
28
38
  /**
29
39
  * Subscribe on user:hover event.
30
40
  */
31
- onHover(callback: any): void;
41
+ onHover(callback: UserInteractionCallback): void;
32
42
  /**
33
43
  * Unsubscribe on user:click event.
34
44
  */
35
- unClick(callback: any): void;
45
+ unClick(callback: UserInteractionCallback): void;
36
46
  /**
37
47
  * Unsubscribe on user:hover event.
38
48
  */
39
- unHover(callback: any): void;
49
+ unHover(callback: UserInteractionCallback): void;
40
50
  }
41
- export default UserInteractionsLayerMixin;
42
51
  /**
43
52
  * Mixin for UserInteractionsLayerInterface. It provide onClick and onHover functions.
44
53
  *
@@ -46,5 +55,6 @@ export default UserInteractionsLayerMixin;
46
55
  * @return {Class} A class that implements {UserInteractionsLayerInterface} class and extends Base;
47
56
  * @private
48
57
  */
49
- declare function UserInteractionsLayerMixin(Base: Class): Class;
58
+ declare function UserInteractionsLayerMixin<T extends CommonLayerClass>(Base: T): T & typeof LayerCommon;
59
+ export default UserInteractionsLayerMixin;
50
60
  //# sourceMappingURL=UserInteractionsLayerMixin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserInteractionsLayerMixin.d.ts","sourceRoot":"","sources":["../../../src/common/mixins/UserInteractionsLayerMixin.js"],"names":[],"mappings":"AAQA;;GAEG;AACH;IAUE,0BAA4B;IAE5B;;;;OAIG;IACH,4BAAmB;IAEnB;;OAEG;IACH,sBAAkB;IAElB;;OAEG;IACH,iCAA6B;IAE7B;;OAEG;IACH,mCAA+B;IAE/B;;OAEG;IACH,6BAAoB;IAEpB;;OAEG;IACH,6BAAoB;IAEpB;;OAEG;IACH,6BAAoB;IAEpB;;OAEG;IACH,6BAAoB;CACrB;;AAED;;;;;;GAMG;AACH,gEAkNG"}
1
+ {"version":3,"file":"UserInteractionsLayerMixin.d.ts","sourceRoot":"","sources":["../../../src/common/mixins/UserInteractionsLayerMixin.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAEhD,oBAAY,iCAAiC,GAAG;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,qBAAa,8BAA8B;gBAU7B,OAAO,KAAK;IAExB;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM;IAEvB;;OAEG;IACH,aAAa;IAEb;;OAEG;IACH,wBAAwB;IAExB;;OAEG;IACH,0BAA0B;IAE1B;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,uBAAuB;IAEzC;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,uBAAuB;IAEzC;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,uBAAuB;IAEzC;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,uBAAuB;CAC1C;AAED;;;;;;GAMG;AACH,iBAAS,0BAA0B,CAAC,CAAC,SAAS,gBAAgB,EAC5D,IAAI,EAAE,CAAC,GACN,CAAC,GAAG,OAAO,WAAW,CAsQxB;AAED,eAAe,0BAA0B,CAAC"}
@@ -61,173 +61,184 @@ export class UserInteractionsLayerInterface {
61
61
  * @return {Class} A class that implements {UserInteractionsLayerInterface} class and extends Base;
62
62
  * @private
63
63
  */
64
- const UserInteractionsLayerMixin = (Base) => class extends Base {
65
- constructor(options = {}) {
66
- super(options);
67
- const { userInteractions = true, userClickInteractions = true, userHoverInteractions = true, defaultUserInteractions = true, } = options;
68
- this.userInteractions = userInteractions;
69
- this.userClickInteractions = userClickInteractions;
70
- this.userHoverInteractions = userHoverInteractions;
71
- this.defaultUserInteractions = defaultUserInteractions;
72
- this.userClickCallbacks = [];
73
- this.userHoverCallbacks = [];
74
- this.userClickEventsKeys = [];
75
- this.userHoverEventsKeys = [];
76
- this.onUserClickCallback = this.onUserClickCallback.bind(this);
77
- this.onUserMoveCallback = this.onUserMoveCallback.bind(this);
78
- // Add mouse event callbacks
79
- const { onClick, onHover } = options;
80
- if (this.userInteractions && this.userClickInteractions && onClick) {
81
- this.onClick(onClick);
64
+ function UserInteractionsLayerMixin(Base) {
65
+ // @ts-ignore
66
+ return class extends Base {
67
+ constructor(options = {}) {
68
+ super(options);
69
+ const { userInteractions = true, userClickInteractions = true, userHoverInteractions = true, defaultUserInteractions = true, } = options;
70
+ this.userInteractions = userInteractions;
71
+ this.userClickInteractions = userClickInteractions;
72
+ this.userHoverInteractions = userHoverInteractions;
73
+ this.defaultUserInteractions = defaultUserInteractions;
74
+ this.userClickCallbacks = [];
75
+ this.userHoverCallbacks = [];
76
+ this.userClickEventsKeys = [];
77
+ this.userHoverEventsKeys = [];
78
+ this.onUserClickCallback = this.onUserClickCallback.bind(this);
79
+ this.onUserMoveCallback = this.onUserMoveCallback.bind(this);
80
+ // Add mouse event callbacks
81
+ const { onClick, onHover } = options;
82
+ if (this.userInteractions && this.userClickInteractions && onClick) {
83
+ this.onClick(onClick);
84
+ }
85
+ if (this.userInteractions && this.userHoverInteractions && onHover) {
86
+ this.onHover(onHover);
87
+ }
82
88
  }
83
- if (this.userInteractions && this.userHoverInteractions && onHover) {
84
- this.onHover(onHover);
89
+ attachToMap(map) {
90
+ super.attachToMap(map);
91
+ if (this.userInteractions &&
92
+ this.defaultUserInteractions &&
93
+ this.userClickInteractions &&
94
+ this.onFeatureClick) {
95
+ this.onClick(this.onFeatureClick);
96
+ }
97
+ if (this.userInteractions &&
98
+ this.defaultUserInteractions &&
99
+ this.userHoverInteractions &&
100
+ this.onFeatureHover) {
101
+ this.onHover(this.onFeatureHover);
102
+ }
103
+ this.listenEvents();
85
104
  }
86
- }
87
- attachToMap(map, options) {
88
- super.attachToMap(map, options);
89
- if (this.userInteractions &&
90
- this.defaultUserInteractions &&
91
- this.userClickInteractions &&
92
- this.onFeatureClick) {
93
- this.onClick(this.onFeatureClick);
105
+ detachFromMap() {
106
+ this.unlistenEvents();
107
+ super.detachFromMap();
94
108
  }
95
- if (this.userInteractions &&
96
- this.defaultUserInteractions &&
97
- this.userHoverInteractions &&
98
- this.onFeatureHover) {
99
- this.onHover(this.onFeatureHover);
109
+ listenEvents() {
110
+ this.unlistenEvents();
111
+ this.userClickCallbacks.forEach((callback) => {
112
+ this.userClickEventsKeys.push(this.on(
113
+ // @ts-ignore
114
+ 'user:click', ({ target: { features, layer, coordinate, event }, }) => {
115
+ callback(features, layer, coordinate, event);
116
+ }));
117
+ });
118
+ this.userHoverCallbacks.forEach((callback) => {
119
+ this.userHoverEventsKeys.push(this.on(
120
+ // @ts-ignore
121
+ 'user:hover', ({ target: { features, layer, coordinate, event }, }) => {
122
+ callback(features, layer, coordinate, event);
123
+ }));
124
+ });
100
125
  }
101
- this.listenEvents();
102
- }
103
- detachFromMap() {
104
- this.unlistenEvents();
105
- super.detachFromMap();
106
- }
107
- listenEvents() {
108
- this.unlistenEvents();
109
- this.userClickCallbacks.forEach((callback) => {
110
- this.userClickEventsKeys.push(this.on('user:click', ({ target: { features, layer, coordinate } }) => {
111
- callback(features, layer, coordinate);
112
- }));
113
- });
114
- this.userHoverCallbacks.forEach((callback) => {
115
- this.userHoverEventsKeys.push(this.on('user:hover', ({ target: { features, layer, coordinate, event } }) => {
116
- callback(features, layer, coordinate, event);
117
- }));
118
- });
119
- }
120
- unlistenEvents() {
121
- unByKey(this.userClickEventsKeys);
122
- unByKey(this.userHoverEventsKeys);
123
- this.userClickEventsKeys = [];
124
- this.userHoverEventsKeys = [];
125
- }
126
- /**
127
- * Listens to click events on the layer.
128
- * @param {function} callback Callback function, called with the clicked
129
- * features,
130
- * the layer instance and the click event.
131
- */
132
- onClick(callback) {
133
- this.userClickCallbacks.push(callback);
134
- this.activateUserInteractions();
135
- if (this.map) {
136
- // If the layer is already attached to the map we reload the events
137
- this.listenEvents();
126
+ unlistenEvents() {
127
+ unByKey(this.userClickEventsKeys);
128
+ unByKey(this.userHoverEventsKeys);
129
+ this.userClickEventsKeys = [];
130
+ this.userHoverEventsKeys = [];
138
131
  }
139
- }
140
- /**
141
- * Listens to hover events on the layer.
142
- * @param {function} callback Callback function, called with the clicked
143
- * features, the layer instance and the click event.
144
- */
145
- onHover(callback) {
146
- this.userHoverCallbacks.push(callback);
147
- this.activateUserInteractions();
148
- if (this.map) {
149
- // If the layer is already attached to the map we reload the events
150
- this.listenEvents();
132
+ /**
133
+ * Listens to click events on the layer.
134
+ * @param {function} callback Callback function, called with the clicked
135
+ * features,
136
+ * the layer instance and the click event.
137
+ */
138
+ onClick(callback) {
139
+ this.userClickCallbacks.push(callback);
140
+ this.activateUserInteractions();
141
+ if (this.map) {
142
+ // If the layer is already attached to the map we reload the events
143
+ this.listenEvents();
144
+ }
151
145
  }
152
- }
153
- /**
154
- * Unlistens to click events on the layer.
155
- * @param {function} callback Callback function, called with the clicked
156
- * features,
157
- * the layer instance and the click event.
158
- */
159
- unClick(callback) {
160
- const index = this.userClickCallbacks.indexOf(callback);
161
- if (index !== -1) {
162
- return;
146
+ /**
147
+ * Listens to hover events on the layer.
148
+ * @param {function} callback Callback function, called with the clicked
149
+ * features, the layer instance and the click event.
150
+ */
151
+ onHover(callback) {
152
+ this.userHoverCallbacks.push(callback);
153
+ this.activateUserInteractions();
154
+ if (this.map) {
155
+ // If the layer is already attached to the map we reload the events
156
+ this.listenEvents();
157
+ }
163
158
  }
164
- this.userClickCallbacks = this.userClickCallbacks.slice(index, 1);
165
- if (this.map) {
166
- // If the layer is already attached to the map we reload the events
167
- this.listenEvents();
159
+ /**
160
+ * Unlistens to click events on the layer.
161
+ * @param {function} callback Callback function, called with the clicked
162
+ * features,
163
+ * the layer instance and the click event.
164
+ */
165
+ unClick(callback) {
166
+ const index = this.userClickCallbacks.indexOf(callback);
167
+ if (index !== -1) {
168
+ return;
169
+ }
170
+ this.userClickCallbacks = this.userClickCallbacks.slice(index, 1);
171
+ if (this.map) {
172
+ // If the layer is already attached to the map we reload the events
173
+ this.listenEvents();
174
+ }
168
175
  }
169
- }
170
- /**
171
- * Unlistens to hover events on the layer.
172
- * @param {function} callback Callback function, called with the clicked
173
- * features, the layer instance and the click event.
174
- */
175
- unHover(callback) {
176
- const index = this.userHoverCallbacks.indexOf(callback);
177
- if (index !== -1) {
178
- return;
176
+ /**
177
+ * Unlistens to hover events on the layer.
178
+ * @param {function} callback Callback function, called with the clicked
179
+ * features, the layer instance and the click event.
180
+ */
181
+ unHover(callback) {
182
+ const index = this.userHoverCallbacks.indexOf(callback);
183
+ if (index !== -1) {
184
+ return;
185
+ }
186
+ this.userHoverCallbacks = this.userHoverCallbacks.slice(index, 1);
187
+ if (this.map) {
188
+ // If the layer is already attached to the map we reload the events
189
+ this.listenEvents();
190
+ }
179
191
  }
180
- this.userHoverCallbacks = this.userHoverCallbacks.slice(index, 1);
181
- if (this.map) {
182
- // If the layer is already attached to the map we reload the events
183
- this.listenEvents();
192
+ /**
193
+ * Function triggered when the user click the map.
194
+ * @private
195
+ */
196
+ onUserClickCallback(evt) {
197
+ const coordinate = evt.coordinate ||
198
+ fromLonLat(evt.lngLat.toArray());
199
+ const emptyFeatureInfo = {
200
+ features: [],
201
+ layer: this,
202
+ coordinate,
203
+ event: evt,
204
+ };
205
+ return this.getFeatureInfoAtCoordinate(coordinate)
206
+ .then((featureInfo) => {
207
+ // @ts-ignore
208
+ this.dispatchEvent({
209
+ type: 'user:click',
210
+ target: featureInfo,
211
+ });
212
+ return featureInfo;
213
+ })
214
+ .catch(() => emptyFeatureInfo);
184
215
  }
185
- }
186
- /**
187
- * Function triggered when the user click the map.
188
- * @private
189
- */
190
- onUserClickCallback(evt) {
191
- const coordinate = evt.coordinate || fromLonLat(evt.lngLat.toArray());
192
- const emptyFeatureInfo = {
193
- features: [],
194
- layer: this,
195
- coordinate,
196
- event: evt,
197
- };
198
- return this.getFeatureInfoAtCoordinate(coordinate)
199
- .then((featureInfo) => {
200
- this.dispatchEvent({
201
- type: 'user:click',
202
- target: featureInfo,
203
- });
204
- return featureInfo;
205
- })
206
- .catch(() => emptyFeatureInfo);
207
- }
208
- /**
209
- * Function triggered when the user move the cursor.
210
- * @private
211
- */
212
- onUserMoveCallback(evt) {
213
- const coordinate = evt.coordinate || fromLonLat(evt.lngLat.toArray());
214
- const emptyFeatureInfo = {
215
- features: [],
216
- layer: this,
217
- coordinate,
218
- event: evt,
219
- };
220
- return this.getFeatureInfoAtCoordinate(coordinate)
221
- .then((featureInfo) => {
222
- this.dispatchEvent({
223
- type: 'user:hover',
224
- target: featureInfo,
225
- });
226
- return featureInfo;
227
- })
228
- .catch(() => emptyFeatureInfo);
229
- }
230
- activateUserInteractions() { }
231
- deactivateUserInteractions() { }
232
- };
216
+ /**
217
+ * Function triggered when the user move the cursor.
218
+ * @private
219
+ */
220
+ onUserMoveCallback(evt) {
221
+ const coordinate = evt.coordinate ||
222
+ fromLonLat(evt.lngLat.toArray());
223
+ const emptyFeatureInfo = {
224
+ features: [],
225
+ layer: this,
226
+ coordinate,
227
+ event: evt,
228
+ };
229
+ return this.getFeatureInfoAtCoordinate(coordinate)
230
+ .then((featureInfo) => {
231
+ // @ts-ignore
232
+ this.dispatchEvent({
233
+ type: 'user:hover',
234
+ target: featureInfo,
235
+ });
236
+ return featureInfo;
237
+ })
238
+ .catch(() => emptyFeatureInfo);
239
+ }
240
+ activateUserInteractions() { }
241
+ deactivateUserInteractions() { }
242
+ };
243
+ }
233
244
  export default UserInteractionsLayerMixin;
@@ -1,15 +1,36 @@
1
- export function getDelayBgCanvas(origin: any, radius: any, color: any): any;
2
- export function getDelayTextCanvas(width: any, text: any, fontSize: any, font: any, delayColor: any, delayOutlineColor?: string, pixelRatio?: number): any;
3
- export function getCircleCanvas(origin: any, radius: any, color: any, hasStroke: any, hasDash: any, pixelRatio: any): any;
4
- export function getTextCanvas(text: any, origin: any, textSize: any, fillColor: any, strokeColor: any, hasStroke: any, pixelRatio: any): any;
5
- export default realtimeDefaultStyle;
1
+ import { RealtimeTrajectory, ViewState, RealtimeStyleOptions } from '../../types';
2
+ /**
3
+ * Draw circle delay background
4
+ *
5
+ * @private
6
+ */
7
+ export declare const getDelayBgCanvas: (origin: number, radius: number, color: string) => import("../../types").AnyCanvas | null;
8
+ /**
9
+ * Draw delay text
10
+ *
11
+ * @private
12
+ */
13
+ export declare const getDelayTextCanvas: (width: number, text: string, fontSize: number, font: string, delayColor: string, delayOutlineColor?: string, pixelRatio?: number) => import("../../types").AnyCanvas | null;
14
+ /**
15
+ * Draw colored circle with black border
16
+ *
17
+ * @private
18
+ */
19
+ export declare const getCircleCanvas: (origin: number, radius: number, color: string, hasStroke: boolean, hasDash: boolean, pixelRatio: number) => import("../../types").AnyCanvas | null;
20
+ /**
21
+ * Draw text in the circle
22
+ *
23
+ * @private
24
+ */
25
+ export declare const getTextCanvas: (text: string, origin: number, textSize: number, fillColor: string, strokeColor: string, hasStroke: boolean, pixelRatio: number) => import("../../types").AnyCanvas | null;
6
26
  /**
7
27
  * A tracker style that take in account the delay.
8
28
  *
9
- * @param {*} trajectory The trajectory to render.
10
- * @param {*} viewState The view state of the map.
11
- * @param {*} options Some options to change the rendering
29
+ * @param {RealtimeTrajectory} trajectory The trajectory to render.
30
+ * @param {ViewState} viewState The view state of the map.
31
+ * @param {RealtimeStyleOptions} options Some options to change the rendering
12
32
  * @return a canvas
13
33
  */
14
- declare function realtimeDefaultStyle(trajectory: any, viewState: any, options: any): any;
34
+ declare const realtimeDefaultStyle: (trajectory: RealtimeTrajectory, viewState: ViewState, options: RealtimeStyleOptions) => import("../../types").AnyCanvas | null;
35
+ export default realtimeDefaultStyle;
15
36
  //# sourceMappingURL=realtimeDefaultStyle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"realtimeDefaultStyle.d.ts","sourceRoot":"","sources":["../../../src/common/styles/realtimeDefaultStyle.js"],"names":[],"mappings":"AAUO,4EAeN;AAUM,2JA2BN;AAUM,0HAoCN;AAUM,6IAuCN;;AAKD;;;;;;;GAOG;AACH,0FA8LC"}
1
+ {"version":3,"file":"realtimeDefaultStyle.d.ts","sourceRoot":"","sources":["../../../src/common/styles/realtimeDefaultStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,EAET,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAMrB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WACnB,MAAM,UACN,MAAM,SACP,MAAM,2CAmBd,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,UACtB,MAAM,QACP,MAAM,YACF,MAAM,QACV,MAAM,cACA,MAAM,sBACC,MAAM,eACb,MAAM,2CAuBnB,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,eAAe,WAClB,MAAM,UACN,MAAM,SACP,MAAM,aACF,OAAO,WACT,OAAO,cACJ,MAAM,2CAiCnB,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,aAAa,SAClB,MAAM,UACJ,MAAM,YACJ,MAAM,aACL,MAAM,eACJ,MAAM,aACR,OAAO,cACN,MAAM,2CAmCnB,CAAC;AAKF;;;;;;;GAOG;AACH,QAAA,MAAM,oBAAoB,eACZ,kBAAkB,aACnB,SAAS,WACX,oBAAoB,2CA2M9B,CAAC;AACF,eAAe,oBAAoB,CAAC"}
@@ -12,6 +12,9 @@ export const getDelayBgCanvas = (origin, radius, color) => {
12
12
  const canvas = createCanvas(origin * 2, origin * 2);
13
13
  if (canvas) {
14
14
  const ctx = canvas.getContext('2d');
15
+ if (!ctx) {
16
+ return null;
17
+ }
15
18
  ctx.beginPath();
16
19
  ctx.arc(origin, origin, radius, 0, 2 * Math.PI, false);
17
20
  ctx.fillStyle = color;
@@ -35,6 +38,9 @@ export const getDelayTextCanvas = (width, text, fontSize, font, delayColor, dela
35
38
  const canvas = createCanvas(width, fontSize + 8 * pixelRatio);
36
39
  if (canvas) {
37
40
  const ctx = canvas.getContext('2d');
41
+ if (!ctx) {
42
+ return null;
43
+ }
38
44
  ctx.textAlign = 'left';
39
45
  ctx.textBaseline = 'middle';
40
46
  ctx.font = font;
@@ -62,6 +68,9 @@ export const getCircleCanvas = (origin, radius, color, hasStroke, hasDash, pixel
62
68
  const canvas = createCanvas(origin * 2, origin * 2);
63
69
  if (canvas) {
64
70
  const ctx = canvas.getContext('2d');
71
+ if (!ctx) {
72
+ return null;
73
+ }
65
74
  ctx.fillStyle = color;
66
75
  if (hasStroke) {
67
76
  ctx.lineWidth = 1 * pixelRatio;
@@ -94,6 +103,9 @@ export const getTextCanvas = (text, origin, textSize, fillColor, strokeColor, ha
94
103
  const canvas = createCanvas(origin * 2, origin * 2);
95
104
  if (canvas) {
96
105
  const ctx = canvas.getContext('2d');
106
+ if (!ctx) {
107
+ return null;
108
+ }
97
109
  // Draw a stroke to the text only if a provider provides realtime but we don't use it.
98
110
  if (hasStroke) {
99
111
  ctx.save();
@@ -122,14 +134,14 @@ const cache = {};
122
134
  /**
123
135
  * A tracker style that take in account the delay.
124
136
  *
125
- * @param {*} trajectory The trajectory to render.
126
- * @param {*} viewState The view state of the map.
127
- * @param {*} options Some options to change the rendering
137
+ * @param {RealtimeTrajectory} trajectory The trajectory to render.
138
+ * @param {ViewState} viewState The view state of the map.
139
+ * @param {RealtimeStyleOptions} options Some options to change the rendering
128
140
  * @return a canvas
129
141
  */
130
142
  const realtimeDefaultStyle = (trajectory, viewState, options) => {
131
- const { hoverVehicleId, selectedVehicleId, useDelayStyle, delayOutlineColor = '#000', delayDisplay = 300000, getRadius, getBgColor, getDelayColor, getDelayText, getTextColor, getTextSize, } = options;
132
- const { zoom, pixelRatio } = viewState;
143
+ const { hoverVehicleId, selectedVehicleId, useDelayStyle, delayOutlineColor = '#000', delayDisplay = 300000, getRadius = () => 0, getBgColor = () => '#000', getDelayColor = () => '#000', getDelayText = () => null, getTextColor = () => '#000', getTextSize = () => 0, } = options;
144
+ const { zoom, pixelRatio = 1 } = viewState;
133
145
  let { type } = trajectory.properties;
134
146
  const { train_id: id, line, delay, state, operator_provides_realtime_journey: operatorProvidesRealtime, } = trajectory.properties;
135
147
  let { name, text_color: textColor, color } = line || {};
@@ -150,8 +162,8 @@ const realtimeDefaultStyle = (trajectory, viewState, options) => {
150
162
  textColor = `#${textColor}`;
151
163
  }
152
164
  const z = Math.min(Math.floor(zoom || 1), 16);
153
- const hover = hoverVehicleId && hoverVehicleId === id;
154
- const selected = selectedVehicleId && selectedVehicleId === id;
165
+ const hover = !!(hoverVehicleId && hoverVehicleId === id);
166
+ const selected = !!(selectedVehicleId && selectedVehicleId === id);
155
167
  // Calcul the radius of the circle
156
168
  let radius = getRadius(type, z) * pixelRatio;
157
169
  const isDisplayStrokeAndDelay = radius >= 7 * pixelRatio;
@@ -174,7 +186,6 @@ const realtimeDefaultStyle = (trajectory, viewState, options) => {
174
186
  }
175
187
  if (!cache[key]) {
176
188
  if (radius === 0) {
177
- cache[key] = null;
178
189
  return null;
179
190
  }
180
191
  const margin = 1 * pixelRatio;
@@ -186,21 +197,28 @@ const realtimeDefaultStyle = (trajectory, viewState, options) => {
186
197
  const canvas = createCanvas(size, size);
187
198
  if (canvas) {
188
199
  const ctx = canvas.getContext('2d');
200
+ if (!ctx) {
201
+ return null;
202
+ }
189
203
  if (isDisplayStrokeAndDelay && delay !== null) {
190
204
  // Draw circle delay background
191
205
  const delayBg = getDelayBgCanvas(origin, radiusDelay, getDelayColor(delay, cancelled));
192
- ctx.drawImage(delayBg, 0, 0);
206
+ if (delayBg) {
207
+ ctx.drawImage(delayBg, 0, 0);
208
+ }
193
209
  }
194
210
  // Show delay if feature is hovered or if delay is above 5mins.
195
211
  if (isDisplayStrokeAndDelay &&
196
- (hover || delay >= delayDisplay || cancelled)) {
212
+ (hover || (delay || 0) >= delayDisplay || cancelled)) {
197
213
  // Draw delay text
198
214
  const fontSize = Math.max(cancelled ? 19 : 14, Math.min(cancelled ? 19 : 17, radius * 1.2)) * pixelRatio;
199
215
  const text = getDelayText(delay, cancelled);
200
216
  if (text) {
201
217
  const textWidth = text.length * fontSize;
202
218
  const delayText = getDelayTextCanvas(textWidth, text, fontSize, `bold ${fontSize}px arial, sans-serif`, getDelayColor(delay, cancelled, true), delayOutlineColor, pixelRatio);
203
- ctx.drawImage(delayText, origin + radiusDelay + margin, origin - fontSize);
219
+ if (delayText) {
220
+ ctx.drawImage(delayText, origin + radiusDelay + margin, origin - fontSize);
221
+ }
204
222
  }
205
223
  }
206
224
  // Draw colored circle with black border
@@ -212,22 +230,28 @@ const realtimeDefaultStyle = (trajectory, viewState, options) => {
212
230
  circleFillColor = color || getBgColor(type);
213
231
  }
214
232
  const hasStroke = isDisplayStrokeAndDelay || hover || selected;
215
- const hasDash = isDisplayStrokeAndDelay &&
216
- useDelayStyle &&
233
+ const hasDash = !!isDisplayStrokeAndDelay &&
234
+ !!useDelayStyle &&
217
235
  delay === null &&
218
236
  operatorProvidesRealtime === 'yes';
219
237
  const circle = getCircleCanvas(origin, radius, circleFillColor, hasStroke, hasDash, pixelRatio);
220
- ctx.drawImage(circle, 0, 0);
238
+ if (circle) {
239
+ ctx.drawImage(circle, 0, 0);
240
+ }
221
241
  // Draw text in the circle
222
- if (mustDrawText) {
242
+ if (mustDrawText && ctx) {
223
243
  const fontSize = Math.max(radius, 10);
224
244
  const textSize = getTextSize(ctx, markerSize, name, fontSize);
225
245
  const textColor2 = !useDelayStyle
226
246
  ? textColor || getTextColor(type)
227
247
  : '#000000';
228
- const hasStroke2 = useDelayStyle && delay === null && operatorProvidesRealtime === 'yes';
248
+ const hasStroke2 = !!useDelayStyle &&
249
+ delay === null &&
250
+ operatorProvidesRealtime === 'yes';
229
251
  const text = getTextCanvas(name, origin, textSize, textColor2, circleFillColor, hasStroke2, pixelRatio);
230
- ctx.drawImage(text, 0, 0);
252
+ if (text) {
253
+ ctx.drawImage(text, 0, 0);
254
+ }
231
255
  }
232
256
  cache[key] = canvas;
233
257
  }
@@ -1,4 +1,4 @@
1
- export default realtimeDelayStyle;
1
+ import { RealtimeTrajectory, ViewState, RealtimeStyleOptions } from '../../types';
2
2
  /**
3
3
  * A tracker style that display the delay as backgroundColor.
4
4
  *
@@ -7,5 +7,6 @@ export default realtimeDelayStyle;
7
7
  * @param {*} options Some options to change the rendering
8
8
  * @return a canvas
9
9
  */
10
- declare function realtimeDelayStyle(trajectory: any, viewState: any, options: any): any;
10
+ declare const realtimeDelayStyle: (trajectory: RealtimeTrajectory, viewState: ViewState, options: RealtimeStyleOptions) => import("../../types").AnyCanvas | null;
11
+ export default realtimeDelayStyle;
11
12
  //# sourceMappingURL=realtimeDelayStyle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"realtimeDelayStyle.d.ts","sourceRoot":"","sources":["../../../src/common/styles/realtimeDelayStyle.js"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AACH,wFAKC"}
1
+ {"version":3,"file":"realtimeDelayStyle.d.ts","sourceRoot":"","sources":["../../../src/common/styles/realtimeDelayStyle.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB;;;;;;;GAOG;AACH,QAAA,MAAM,kBAAkB,eACV,kBAAkB,aACnB,SAAS,WACX,oBAAoB,2CAM9B,CAAC;AACF,eAAe,kBAAkB,CAAC"}
@@ -1,3 +1,3 @@
1
+ declare const realtimeSimpleStyle: () => HTMLCanvasElement;
1
2
  export default realtimeSimpleStyle;
2
- declare function realtimeSimpleStyle(): any;
3
3
  //# sourceMappingURL=realtimeSimpleStyle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"realtimeSimpleStyle.d.ts","sourceRoot":"","sources":["../../../src/common/styles/realtimeSimpleStyle.js"],"names":[],"mappings":";AAKA,4CAeC"}
1
+ {"version":3,"file":"realtimeSimpleStyle.d.ts","sourceRoot":"","sources":["../../../src/common/styles/realtimeSimpleStyle.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,mBAAmB,yBAiBxB,CAAC;AACF,eAAe,mBAAmB,CAAC"}