mobility-toolbox-js 2.0.1-beta.13 → 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 (259) 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 +32 -12
  7. package/api/StopsAPI.d.ts +38 -0
  8. package/api/StopsAPI.d.ts.map +1 -0
  9. package/api/StopsAPI.js +33 -9
  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/typedefs.js +75 -0
  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 +54 -27
  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 +330 -164
  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 -4
  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/realtimeDelayStyle.d.ts +12 -0
  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 +26 -15
  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 +67 -37
  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 -5
  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 +12 -5
  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 -15
  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 +34 -15
  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 +8 -6
  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 +44 -25
  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 -1
  130. package/mapbox/index.d.ts +6 -0
  131. package/mapbox/index.d.ts.map +1 -0
  132. package/mapbox/index.js +5 -4
  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 +99 -55
  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 -2
  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 +26061 -16500
  152. package/mbt.js.map +4 -4
  153. package/mbt.min.js +205 -126
  154. package/mbt.min.js.map +4 -4
  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 +62 -36
  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 +601 -357
  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 +30 -8
  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 -3
  167. package/ol/index.d.ts +6 -0
  168. package/ol/index.d.ts.map +1 -0
  169. package/ol/index.js +5 -5
  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 +163 -77
  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 +99 -193
  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 +362 -171
  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 +30 -135
  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 +72 -48
  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 +34 -18
  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 +84 -34
  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 -8
  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 +26 -24
  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 +40 -39
  206. package/ol/styles/index.d.ts +3 -0
  207. package/ol/styles/index.d.ts.map +1 -0
  208. package/ol/styles/index.js +2 -2
  209. package/package.json +81 -133
  210. package/setupTests.d.ts +2 -0
  211. package/setupTests.d.ts.map +1 -0
  212. package/setupTests.js +26 -0
  213. package/types/common.d.ts +122 -0
  214. package/types/index.d.ts +11 -0
  215. package/types/realtime.d.ts +320 -0
  216. package/types/routing.d.ts +206 -0
  217. package/types/stops.d.ts +143 -0
  218. package/README.md +0 -23
  219. package/api/RoutingAPI.test.js +0 -25
  220. package/api/StopsAPI.test.js +0 -22
  221. package/api/TralisAPI.js +0 -359
  222. package/api/TralisAPI.test.js +0 -67
  223. package/api/TralisAPIUtils.js +0 -43
  224. package/common/Tracker.js +0 -93
  225. package/common/api/HttpAPI.test.js +0 -50
  226. package/common/api/WebSocketAPI.test.js +0 -311
  227. package/common/controls/Control.js +0 -81
  228. package/common/controls/Control.test.js +0 -87
  229. package/common/layers/Layer.js +0 -213
  230. package/common/layers/Layer.test.js +0 -526
  231. package/common/mixins/CopyrightMixin.js +0 -24
  232. package/common/mixins/SearchMixin.js +0 -110
  233. package/common/mixins/TralisLayerMixin.js +0 -479
  234. package/common/styles/trackerDefaultStyle.js +0 -197
  235. package/common/styles/trackerDelayStyle.js +0 -8
  236. package/common/styles/trackerSimpleStyle.js +0 -18
  237. package/common/trackerConfig.js +0 -152
  238. package/common/trackerConfig.test.js +0 -23
  239. package/common/utils/createTrackerFilters.js +0 -56
  240. package/common/utils/createTrackerFilters.test.js +0 -79
  241. package/common/utils/getMapboxMapCopyrights.test.js +0 -40
  242. package/common/utils/getMapboxStyleUrl.js +0 -22
  243. package/common/utils/removeDuplicate.test.js +0 -19
  244. package/common/utils/timeUtils.test.js +0 -10
  245. package/mapbox/layers/Layer.test.js +0 -182
  246. package/mapbox/layers/TralisLayer.js +0 -182
  247. package/mapbox/layers/TralisLayer.test.js +0 -38
  248. package/mapbox/utils.js +0 -32
  249. package/ol/controls/CopyrightControl.test.js +0 -165
  250. package/ol/controls/RoutingControl.test.js +0 -151
  251. package/ol/controls/StopFinderControl.test.js +0 -48
  252. package/ol/layers/Layer.test.js +0 -174
  253. package/ol/layers/MapboxLayer.test.js +0 -160
  254. package/ol/layers/MapboxStyleLayer.test.js +0 -231
  255. package/ol/layers/RoutingLayer.test.js +0 -40
  256. package/ol/layers/TralisLayer.js +0 -185
  257. package/ol/layers/TralisLayer.test.js +0 -79
  258. package/ol/layers/VectorLayer.test.js +0 -87
  259. package/ol/layers/WMSLayer.test.js +0 -76
@@ -0,0 +1,150 @@
1
+ import BaseObject from 'ol/Object';
2
+ /**
3
+ * A class representing a control to display on map.
4
+ *
5
+ * @example
6
+ * const control = new Control();
7
+ *
8
+ * @classproperty {ol/Map~Map|mapboxgl.Map} map - The map which the control refers to.
9
+ * @classproperty {boolean} active - Active the control.
10
+ * @classproperty {HTMLElement} element - The HTML element used to render the control.
11
+ * @classproperty {HTMLElement} target - The HTML element where to render the element property. Default is the map's element. Read only.
12
+ */
13
+ class ControlCommon extends BaseObject {
14
+ /**
15
+ * Constructor
16
+ *
17
+ * @param {Object} [options] Control options.
18
+ * @param {boolean} [options.active = true] Whether the control is active or not.
19
+ * @param {HTMLElement} [options.element] The HTML element used to render the control.
20
+ * @param {HTMLElement} [options.target] The HTML element where to render the element property. Default is the map's element.
21
+ * @param {function} [options.render] Render function called whenever the control needs to be rerendered.
22
+ */
23
+ constructor(options = {}) {
24
+ super(options);
25
+ this.defineProperties(options);
26
+ const { active } = Object.assign({ active: options.active !== false }, options);
27
+ /**
28
+ * @ignore
29
+ */
30
+ this.active = active;
31
+ }
32
+ /**
33
+ * Define control's properties.
34
+ *
35
+ * @private
36
+ * @ignore
37
+ */
38
+ defineProperties(options) {
39
+ const { target, element, render } = Object.assign({}, options);
40
+ Object.defineProperties(this, {
41
+ active: {
42
+ get: () => this.get('active'),
43
+ set: (newActive) => {
44
+ this.set('active', newActive);
45
+ if (newActive) {
46
+ this.activate();
47
+ }
48
+ else {
49
+ this.deactivate();
50
+ }
51
+ this.render();
52
+ },
53
+ },
54
+ map: {
55
+ get: () => this.get('map'),
56
+ set: (map) => {
57
+ // Remove previous node.
58
+ if (this.map && this.element && this.element.parentNode) {
59
+ this.element.parentNode.removeChild(this.element);
60
+ }
61
+ // Clean listeners
62
+ this.deactivate();
63
+ this.set('map', map);
64
+ if (this.map) {
65
+ // Add new node
66
+ const targett = this.target ||
67
+ (this.map.getTargetElement &&
68
+ this.map.getTargetElement()) ||
69
+ (this.map.getContainer &&
70
+ this.map.getContainer());
71
+ if (!this.element) {
72
+ this.createDefaultElement();
73
+ }
74
+ if (this.element) {
75
+ targett.appendChild(this.element);
76
+ }
77
+ // Add listeners
78
+ if (this.active) {
79
+ this.activate();
80
+ }
81
+ }
82
+ this.render();
83
+ },
84
+ },
85
+ target: {
86
+ value: target,
87
+ },
88
+ element: {
89
+ value: element,
90
+ writable: true,
91
+ },
92
+ render: {
93
+ /** @ignore */
94
+ value: render || this.render,
95
+ writable: true,
96
+ },
97
+ });
98
+ }
99
+ /**
100
+ * Attach the control to the map. Add events, html element ...
101
+ */
102
+ attachToMap(map) {
103
+ this.map = map;
104
+ }
105
+ /**
106
+ * Detach the control From the map. Remove events, html element ..
107
+ */
108
+ detachFromMap() {
109
+ this.map = undefined;
110
+ }
111
+ /**
112
+ * Add listeners then renders the control.
113
+ * To be defined in inherited classes.
114
+ */
115
+ activate() {
116
+ this.deactivate();
117
+ }
118
+ /**
119
+ * Remove listeners added by activate() function then renders the control.
120
+ * To be defined in inherited classes.
121
+ */
122
+ // eslint-disable-next-line class-methods-use-this
123
+ deactivate() {
124
+ // eslint-disable-next-line no-console
125
+ console.error('The function deactivate() must be implemented in subclasses');
126
+ }
127
+ /**
128
+ * The default render function. It renders content in the HTML element.
129
+ * To be defined in inherited classes.
130
+ *
131
+ * @private
132
+ */
133
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
134
+ render(options) {
135
+ // eslint-disable-next-line no-console
136
+ console.error('The function render() must be implemented in subclasses');
137
+ }
138
+ /**
139
+ * The default element to display if this.element is not defined.
140
+ * To be defined in inherited classes.
141
+ *
142
+ * @private
143
+ */
144
+ // eslint-disable-next-line class-methods-use-this
145
+ createDefaultElement() {
146
+ // eslint-disable-next-line no-console
147
+ console.error('The function createDefaultElement() must be implemented in subclasses');
148
+ }
149
+ }
150
+ export default ControlCommon;
@@ -0,0 +1,13 @@
1
+ import ControlCommon from './ControlCommon';
2
+ /**
3
+ * A class representing a copyright control to display on map.
4
+ * This class only draw an html element, with an empty string in it.
5
+ * Use subclasses to use it in an ol or mapbox map.
6
+ */
7
+ declare class CopyrightControlCommon extends ControlCommon {
8
+ render(): void;
9
+ createDefaultElement(): void;
10
+ getCopyrights(): string[];
11
+ }
12
+ export default CopyrightControlCommon;
13
+ //# sourceMappingURL=CopyrightControlCommon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyrightControlCommon.d.ts","sourceRoot":"","sources":["../../../src/common/controls/CopyrightControlCommon.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C;;;;GAIG;AACH,cAAM,sBAAuB,SAAQ,aAAa;IAChD,MAAM;IASN,oBAAoB;IAYpB,aAAa;CAQd;AAED,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /* eslint-disable max-classes-per-file */
2
+ import ControlCommon from './ControlCommon';
3
+ /**
4
+ * A class representing a copyright control to display on map.
5
+ * This class only draw an html element, with an empty string in it.
6
+ * Use subclasses to use it in an ol or mapbox map.
7
+ */
8
+ class CopyrightControlCommon extends ControlCommon {
9
+ render() {
10
+ if (!this.element) {
11
+ return;
12
+ }
13
+ this.element.innerHTML = this.active
14
+ ? this.getCopyrights().join(' | ')
15
+ : '';
16
+ }
17
+ createDefaultElement() {
18
+ this.element = document.createElement('div');
19
+ this.element.id = 'mbt-copyright';
20
+ Object.assign(this.element.style, {
21
+ position: 'absolute',
22
+ bottom: 0,
23
+ right: 0,
24
+ fontSize: '.8rem',
25
+ padding: '0 10px',
26
+ });
27
+ }
28
+ getCopyrights() {
29
+ // eslint-disable-next-line no-console
30
+ console.error('The getCopyrights() function must be implemented in subclasses.', this);
31
+ return [];
32
+ }
33
+ }
34
+ export default CopyrightControlCommon;
@@ -0,0 +1,55 @@
1
+ import { FeatureCollection } from '@turf/helpers';
2
+ import { Feature } from 'geojson';
3
+ import { StopsAPI } from '../../api';
4
+ import { StopsAPIOptions } from '../../api/StopsAPI';
5
+ import { StopsParameters } from '../../types';
6
+ import ControlCommon, { ControlCommonOptions } from './ControlCommon';
7
+ export type StopFinderControlCommonOptions = ControlCommonOptions & StopsAPIOptions & {
8
+ placeholder?: string;
9
+ apiParams: StopsParameters;
10
+ };
11
+ /**
12
+ * A class representing a stop finder control to display on map.
13
+ * This class only draw the html elements.
14
+ * The geographic logic must be implemented by subclasses.
15
+ */
16
+ declare class StopFinderControlCommon extends ControlCommon {
17
+ apiParams: StopsParameters;
18
+ placeholder: string;
19
+ api: StopsAPI;
20
+ abortController?: AbortController;
21
+ suggestionsElt?: HTMLElement;
22
+ inputElt?: HTMLInputElement;
23
+ clearElt?: HTMLDivElement;
24
+ /**
25
+ * Constructor.
26
+ *
27
+ * @param {Object} options Map options
28
+ * @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/). See StopsAPI.
29
+ * @param {string} [options.url='https://api.geops.io/tracker/v1'] Stops service url. See StopsAPI.
30
+ * @param {string} [options.placeholder='Search for a stop...'] Input field placeholder.
31
+ * @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
32
+ */
33
+ constructor(options: StopFinderControlCommonOptions);
34
+ deactivate(): void;
35
+ render(featureCollection?: FeatureCollection): void;
36
+ createDefaultElement(): void;
37
+ /**
38
+ * Launch a search.
39
+ *
40
+ * @param {String} query The query to search for.
41
+ * @param {AbortController} abortController Abort controller used to cancel the request.
42
+ * @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
43
+ */
44
+ search(q: string, abortController: AbortController): Promise<void>;
45
+ /**
46
+ * To be defined in inherited class
47
+ */
48
+ onSuggestionClick(suggestion: Feature): void;
49
+ /**
50
+ * Clear the search field and close the control.
51
+ */
52
+ clear(): void;
53
+ }
54
+ export default StopFinderControlCommon;
55
+ //# sourceMappingURL=StopFinderControlCommon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StopFinderControlCommon.d.ts","sourceRoot":"","sources":["../../../src/common/controls/StopFinderControlCommon.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,aAAa,EAAE,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,MAAM,MAAM,8BAA8B,GAAG,oBAAoB,GAC/D,eAAe,GAAG;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEJ;;;;GAIG;AACH,cAAM,uBAAwB,SAAQ,aAAa;IACjD,SAAS,EAAE,eAAe,CAAC;IAE3B,WAAW,EAAE,MAAM,CAAC;IAEpB,GAAG,EAAE,QAAQ,CAAC;IAEd,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,cAAc,CAAC,EAAE,WAAW,CAAC;IAE7B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;;;;;;OAQG;gBACS,OAAO,EAAE,8BAA8B;IAenD,UAAU;IAEV,MAAM,CAAC,iBAAiB,CAAC,EAAE,iBAAiB;IAwB5C,oBAAoB;IAuDpB;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;IAsBlD;;OAEG;IAEH,iBAAiB,CAAC,UAAU,EAAE,OAAO;IAErC;;OAEG;IACH,KAAK;CASN;AAED,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,144 @@
1
+ import { StopsAPI } from '../../api';
2
+ import ControlCommon from './ControlCommon';
3
+ /**
4
+ * A class representing a stop finder control to display on map.
5
+ * This class only draw the html elements.
6
+ * The geographic logic must be implemented by subclasses.
7
+ */
8
+ class StopFinderControlCommon extends ControlCommon {
9
+ /**
10
+ * Constructor.
11
+ *
12
+ * @param {Object} options Map options
13
+ * @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/). See StopsAPI.
14
+ * @param {string} [options.url='https://api.geops.io/tracker/v1'] Stops service url. See StopsAPI.
15
+ * @param {string} [options.placeholder='Search for a stop...'] Input field placeholder.
16
+ * @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
17
+ */
18
+ constructor(options) {
19
+ super(options);
20
+ const { apiParams, apiKey, url, placeholder } = options || {};
21
+ this.apiParams = Object.assign({ limit: 20 }, (apiParams || {}));
22
+ this.placeholder = placeholder || 'Search for a stop...';
23
+ const apiOptions = { apiKey };
24
+ if (url) {
25
+ apiOptions.url = url;
26
+ }
27
+ this.api = new StopsAPI(apiOptions);
28
+ this.abortController = new AbortController();
29
+ }
30
+ deactivate() { }
31
+ render(featureCollection) {
32
+ const suggestions = (featureCollection === null || featureCollection === void 0 ? void 0 : featureCollection.features) || [];
33
+ if (!this.suggestionsElt) {
34
+ return;
35
+ }
36
+ this.suggestionsElt.style.display = suggestions.length ? 'block' : 'none';
37
+ this.suggestionsElt.innerHTML = '';
38
+ suggestions.forEach((suggestion) => {
39
+ var _a, _b;
40
+ const suggElt = document.createElement('div');
41
+ suggElt.innerHTML = (_a = suggestion === null || suggestion === void 0 ? void 0 : suggestion.properties) === null || _a === void 0 ? void 0 : _a.name;
42
+ suggElt.onclick = () => {
43
+ // @ts-ignore
44
+ this.onSuggestionClick(suggestion);
45
+ };
46
+ Object.assign(suggElt.style, {
47
+ padding: '5px 12px',
48
+ });
49
+ (_b = this.suggestionsElt) === null || _b === void 0 ? void 0 : _b.appendChild(suggElt);
50
+ });
51
+ }
52
+ createDefaultElement() {
53
+ /**
54
+ * Define a default element.
55
+ */
56
+ this.element = document.createElement('div');
57
+ this.element.id = 'mbt-search';
58
+ Object.assign(this.element.style, {
59
+ position: 'absolute',
60
+ top: 0,
61
+ left: '50px',
62
+ margin: '10px',
63
+ display: 'flex',
64
+ flexDirection: 'column',
65
+ width: '320px',
66
+ });
67
+ // Create input element
68
+ this.inputElt = document.createElement('input');
69
+ this.inputElt.type = 'text';
70
+ this.inputElt.placeholder = this.placeholder;
71
+ this.inputElt.autocomplete = 'off';
72
+ this.inputElt.onkeyup = (evt) => {
73
+ var _a;
74
+ (_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
75
+ this.abortController = new AbortController();
76
+ // @ts-ignore
77
+ this.search(evt.target.value, this.abortController);
78
+ };
79
+ Object.assign(this.inputElt.style, {
80
+ padding: '10px 30px 10px 10px',
81
+ });
82
+ this.element.appendChild(this.inputElt);
83
+ // Create suggestions list element
84
+ this.suggestionsElt = document.createElement('div');
85
+ Object.assign(this.suggestionsElt.style, {
86
+ backgroundColor: 'white',
87
+ overflowY: 'auto',
88
+ cursor: 'pointer',
89
+ });
90
+ this.element.appendChild(this.suggestionsElt);
91
+ this.clearElt = document.createElement('div');
92
+ Object.assign(this.clearElt.style, {
93
+ display: 'none',
94
+ position: 'absolute',
95
+ right: '0',
96
+ padding: '0 10px',
97
+ fontSize: '200%',
98
+ cursor: 'pointer',
99
+ });
100
+ this.clearElt.innerHTML = '×';
101
+ this.clearElt.onclick = () => this.clear();
102
+ this.element.appendChild(this.clearElt);
103
+ }
104
+ /**
105
+ * Launch a search.
106
+ *
107
+ * @param {String} query The query to search for.
108
+ * @param {AbortController} abortController Abort controller used to cancel the request.
109
+ * @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
110
+ */
111
+ search(q, abortController) {
112
+ if (q !== undefined || q !== null) {
113
+ this.apiParams.q = q;
114
+ }
115
+ if (this.clearElt) {
116
+ this.clearElt.style.display = 'block';
117
+ }
118
+ return this.api
119
+ .search(this.apiParams, abortController && { signal: abortController.signal })
120
+ .then((data) => {
121
+ this.render(data);
122
+ })
123
+ .catch(() => {
124
+ this.render();
125
+ });
126
+ }
127
+ /**
128
+ * To be defined in inherited class
129
+ */
130
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
131
+ onSuggestionClick(suggestion) { }
132
+ /**
133
+ * Clear the search field and close the control.
134
+ */
135
+ clear() {
136
+ if (!this.suggestionsElt || !this.inputElt || !this.clearElt) {
137
+ return;
138
+ }
139
+ this.inputElt.value = '';
140
+ this.suggestionsElt.innerHTML = '';
141
+ this.clearElt.style.display = 'none';
142
+ }
143
+ }
144
+ export default StopFinderControlCommon;
@@ -0,0 +1,3 @@
1
+ export * from "./utils";
2
+ export * from "./styles";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.js"],"names":[],"mappings":""}
package/common/index.js CHANGED
@@ -1,4 +1,2 @@
1
- export { default as Tracker } from "./Tracker";
2
- export * as trackerConfig from "./trackerConfig";
3
- export * from "./utils";
4
- export * from "./styles";
1
+ export * from './utils';
2
+ export * from './styles';
@@ -0,0 +1,94 @@
1
+ import BaseObject from 'ol/Object';
2
+ import type { AnyMap, LayerGetFeatureInfoOptions, LayerGetFeatureInfoResponse } from '../../types';
3
+ export type LayerCommonOptions = {
4
+ key?: string;
5
+ name?: string;
6
+ group?: string;
7
+ copyrights?: string[];
8
+ children?: Layer[];
9
+ visible?: Boolean;
10
+ disabled?: Boolean;
11
+ hitTolerance?: Number;
12
+ properties?: {
13
+ [x: string]: any;
14
+ };
15
+ map?: AnyMap;
16
+ };
17
+ /**
18
+ * A class representing a layer to display on map.
19
+ *
20
+ * @example
21
+ * const layer = new Layer({
22
+ * name: 'My Layer',
23
+ * });
24
+ *
25
+ * @classproperty {string} key - Identifier of the layer. Must be unique.
26
+ * @classproperty {string} name - Name of the layer
27
+ * @classproperty {string[]} copyrights - Array of copyrights.
28
+ * @classproperty {Layer[]} children - List of children layers.
29
+ * @classproperty {boolean} visible - Define if the layer is currently display on the map.
30
+ * @classproperty {boolean} disabled - Define if the layer is currently display on the map but can't be seen (extent, zoom ,data restrictions).
31
+ * @classproperty {number} hitTolerance - Hit-detection tolerance in css pixels. Pixels inside the radius around the given position will be checked for features.
32
+ * @classproperty {Object} properties - Custom properties.
33
+ * @classproperty {ol/Map~Map|mapboxgl.Map} map - The map where the layer is displayed.
34
+ */
35
+ export default class Layer extends BaseObject {
36
+ key?: string;
37
+ name?: string;
38
+ group?: string;
39
+ copyrights?: string[];
40
+ children?: Layer[];
41
+ visible?: boolean;
42
+ disabled?: boolean;
43
+ hitTolerance?: number;
44
+ properties?: {
45
+ [x: string]: any;
46
+ };
47
+ map?: AnyMap;
48
+ parent?: Layer;
49
+ options: LayerCommonOptions;
50
+ /**
51
+ * Constructor
52
+ *
53
+ * @param {Object} options
54
+ * @param {string} [options.key=uuid()] Identifier of the layer. Muste be unique. Default use a generated uuid.
55
+ * @param {string} [options.name] Name of the layer.
56
+ * @param {string[]} [options.copyrights] Array of copyrights.
57
+ * @param {Array<Layer>} [options.children=[]] Sublayers, all child layers will have a parent property associated to this layer.
58
+ * @param {boolean} [options.visible=true] Define if the layer is currently display on the map.
59
+ * @param {boolean} [options.disabled=false] Define if the layer is currently display on the map but can't be seen (extent, zoom ,data restrictions).
60
+ * @param {number} [options.hitTolerance=5] Hit-detection tolerance in css pixels. Pixels inside the radius around the given position will be checked for features.
61
+ * @param {Object} [options.properties={}] Application-specific layer properties.
62
+ */
63
+ constructor(options?: LayerCommonOptions);
64
+ /**
65
+ * Define layer's properties that needs custom get and set.
66
+ *
67
+ * @ignore
68
+ */
69
+ defineProperties(options?: LayerCommonOptions): void;
70
+ /**
71
+ * Initialize the layer with the map passed in parameters.
72
+ *
73
+ * @param {ol/Map~Map|mapboxgl.Map} map A map.
74
+ */
75
+ attachToMap(map: AnyMap): void;
76
+ /**
77
+ * Terminate what was initialized in init function. Remove layer, events...
78
+ */
79
+ detachFromMap(): void;
80
+ /**
81
+ * Request feature information for a given coordinate.
82
+ * This function must be implemented by inheriting layers.
83
+ *
84
+ * @param {ol/coordinate~Coordinate} coordinate Coordinate.
85
+ * @param {Object} options Some options. See child classes to see which are supported.
86
+ * @return {Promise<FeatureInfo>} An empty response.
87
+ */
88
+ getFeatureInfoAtCoordinate(coordinate: number[], options?: LayerGetFeatureInfoOptions): Promise<LayerGetFeatureInfoResponse>;
89
+ /**
90
+ * Return the an array containing all the descendants of the layer in a flat array. Including the current layer.
91
+ */
92
+ flat(): any[];
93
+ }
94
+ //# sourceMappingURL=LayerCommon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayerCommon.d.ts","sourceRoot":"","sources":["../../../src/common/layers/LayerCommon.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,WAAW,CAAC;AAInC,OAAO,KAAK,EACV,MAAM,EACN,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,UAAU;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IAEnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,UAAU,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IAEvC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,MAAM,CAAC,EAAE,KAAK,CAAC;IAEf,OAAO,EAAE,kBAAkB,CAAM;IAEjC;;;;;;;;;;;;OAYG;gBACS,OAAO,GAAE,kBAAuB;IAoC5C;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,GAAE,kBAAuB;IA2IjD;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM;IAYvB;;OAEG;IAEH,aAAa;IAKb;;;;;;;OAOG;IAEH,0BAA0B,CACxB,UAAU,EAAE,MAAM,EAAE,EAEpB,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,2BAA2B,CAAC;IAgBvC;;OAEG;IACH,IAAI;CAGL"}