mobility-toolbox-js 2.0.0-beta.30 → 2.0.0-beta.34

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 (225) hide show
  1. package/api/RealtimeAPI.d.ts +268 -0
  2. package/api/RealtimeAPI.d.ts.map +1 -0
  3. package/api/RealtimeAPI.js +626 -343
  4. package/api/RoutingAPI.d.ts +33 -0
  5. package/api/RoutingAPI.d.ts.map +1 -0
  6. package/api/RoutingAPI.js +65 -15
  7. package/api/StopsAPI.d.ts +36 -0
  8. package/api/StopsAPI.d.ts.map +1 -0
  9. package/api/StopsAPI.js +70 -12
  10. package/api/index.d.ts +5 -0
  11. package/api/index.d.ts.map +1 -0
  12. package/api/index.js +10 -3
  13. package/api/typedefs.d.ts +105 -0
  14. package/api/typedefs.d.ts.map +1 -0
  15. package/api/typedefs.js +72 -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 +82 -30
  19. package/common/api/WebSocketAPI.d.ts +95 -0
  20. package/common/api/WebSocketAPI.d.ts.map +1 -0
  21. package/common/api/WebSocketAPI.js +313 -168
  22. package/common/controls/Control.d.ts +74 -0
  23. package/common/controls/Control.d.ts.map +1 -0
  24. package/common/controls/Control.js +167 -78
  25. package/common/index.d.ts +3 -0
  26. package/common/index.d.ts.map +1 -0
  27. package/common/index.js +18 -2
  28. package/common/layers/Layer.d.ts +80 -0
  29. package/common/layers/Layer.d.ts.map +1 -0
  30. package/common/layers/Layer.js +251 -134
  31. package/common/mixins/CopyrightMixin.d.ts +22 -0
  32. package/common/mixins/CopyrightMixin.d.ts.map +1 -0
  33. package/common/mixins/CopyrightMixin.js +70 -22
  34. package/common/mixins/MapboxLayerMixin.d.ts +27 -0
  35. package/common/mixins/MapboxLayerMixin.d.ts.map +1 -0
  36. package/common/mixins/MapboxLayerMixin.js +240 -0
  37. package/common/mixins/RealtimeLayerMixin.d.ts +58 -0
  38. package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -0
  39. package/common/mixins/RealtimeLayerMixin.js +698 -429
  40. package/common/mixins/StopFinderMixin.d.ts +40 -0
  41. package/common/mixins/StopFinderMixin.d.ts.map +1 -0
  42. package/common/mixins/StopFinderMixin.js +195 -107
  43. package/common/mixins/UserInteractionsLayerMixin.d.ts +42 -0
  44. package/common/mixins/UserInteractionsLayerMixin.d.ts.map +1 -0
  45. package/common/mixins/UserInteractionsLayerMixin.js +222 -121
  46. package/common/styles/index.d.ts +5 -0
  47. package/common/styles/index.d.ts.map +1 -0
  48. package/common/styles/index.js +24 -4
  49. package/common/styles/realtimeDefaultStyle.d.ts +15 -0
  50. package/common/styles/realtimeDefaultStyle.d.ts.map +1 -0
  51. package/common/styles/realtimeDefaultStyle.js +236 -190
  52. package/common/styles/realtimeDelayStyle.d.ts +11 -0
  53. package/common/styles/realtimeDelayStyle.d.ts.map +1 -0
  54. package/common/styles/realtimeDelayStyle.js +25 -7
  55. package/common/styles/realtimeSimpleStyle.d.ts +3 -0
  56. package/common/styles/realtimeSimpleStyle.d.ts.map +1 -0
  57. package/common/styles/realtimeSimpleStyle.js +23 -17
  58. package/common/typedefs.d.ts +50 -0
  59. package/common/typedefs.d.ts.map +1 -0
  60. package/common/typedefs.js +21 -0
  61. package/common/utils/cleanStopTime.d.ts +7 -0
  62. package/common/utils/cleanStopTime.d.ts.map +1 -0
  63. package/common/utils/cleanStopTime.js +28 -17
  64. package/common/utils/compareDepartures.d.ts +9 -0
  65. package/common/utils/compareDepartures.d.ts.map +1 -0
  66. package/common/utils/compareDepartures.js +34 -22
  67. package/common/utils/createCanvas.d.ts +9 -0
  68. package/common/utils/createCanvas.d.ts.map +1 -0
  69. package/common/utils/createCanvas.js +28 -16
  70. package/common/utils/createTrackerFilters.d.ts +12 -0
  71. package/common/utils/createTrackerFilters.d.ts.map +1 -0
  72. package/common/utils/createTrackerFilters.js +75 -54
  73. package/common/utils/getLayersAsFlatArray.d.ts +3 -0
  74. package/common/utils/getLayersAsFlatArray.d.ts.map +1 -0
  75. package/common/utils/getLayersAsFlatArray.js +15 -13
  76. package/common/utils/getMapboxMapCopyrights.d.ts +8 -0
  77. package/common/utils/getMapboxMapCopyrights.d.ts.map +1 -0
  78. package/common/utils/getMapboxMapCopyrights.js +24 -17
  79. package/common/utils/getMapboxRender.d.ts +5 -0
  80. package/common/utils/getMapboxRender.d.ts.map +1 -0
  81. package/common/utils/getMapboxRender.js +77 -0
  82. package/common/utils/getMaplibreRender.d.ts +5 -0
  83. package/common/utils/getMaplibreRender.d.ts.map +1 -0
  84. package/common/utils/getMaplibreRender.js +38 -0
  85. package/common/utils/getRealtimeModeSuffix.d.ts +8 -0
  86. package/common/utils/getRealtimeModeSuffix.d.ts.map +1 -0
  87. package/common/utils/getRealtimeModeSuffix.js +11 -2
  88. package/common/utils/getUrlWithParams.d.ts +9 -0
  89. package/common/utils/getUrlWithParams.d.ts.map +1 -0
  90. package/common/utils/getUrlWithParams.js +20 -10
  91. package/common/utils/getVehiclePosition.d.ts +14 -0
  92. package/common/utils/getVehiclePosition.d.ts.map +1 -0
  93. package/common/utils/getVehiclePosition.js +63 -39
  94. package/common/utils/index.d.ts +12 -0
  95. package/common/utils/index.d.ts.map +1 -0
  96. package/common/utils/index.js +37 -9
  97. package/common/utils/removeDuplicate.d.ts +10 -0
  98. package/common/utils/removeDuplicate.d.ts.map +1 -0
  99. package/common/utils/removeDuplicate.js +29 -7
  100. package/common/utils/renderTrajectories.d.ts +20 -0
  101. package/common/utils/renderTrajectories.d.ts.map +1 -0
  102. package/common/utils/renderTrajectories.js +111 -78
  103. package/common/utils/sortByDelay.d.ts +3 -0
  104. package/common/utils/sortByDelay.d.ts.map +1 -0
  105. package/common/utils/sortByDelay.js +21 -17
  106. package/common/utils/timeUtils.d.ts +5 -0
  107. package/common/utils/timeUtils.d.ts.map +1 -0
  108. package/common/utils/timeUtils.js +47 -18
  109. package/common/utils/trackerConfig.d.ts +24 -0
  110. package/common/utils/trackerConfig.d.ts.map +1 -0
  111. package/common/utils/trackerConfig.js +171 -118
  112. package/iife.d.ts +3 -0
  113. package/iife.d.ts.map +1 -0
  114. package/iife.js +7 -0
  115. package/index.d.ts +6 -0
  116. package/index.d.ts.map +1 -0
  117. package/index.js +10 -7
  118. package/mapbox/controls/CopyrightControl.d.ts +32 -0
  119. package/mapbox/controls/CopyrightControl.d.ts.map +1 -0
  120. package/mapbox/controls/CopyrightControl.js +72 -28
  121. package/mapbox/controls/index.d.ts +2 -0
  122. package/mapbox/controls/index.d.ts.map +1 -0
  123. package/mapbox/controls/index.js +6 -1
  124. package/mapbox/index.d.ts +5 -0
  125. package/mapbox/index.d.ts.map +1 -0
  126. package/mapbox/index.js +20 -4
  127. package/mapbox/layers/Layer.d.ts +47 -0
  128. package/mapbox/layers/Layer.d.ts.map +1 -0
  129. package/mapbox/layers/Layer.js +137 -54
  130. package/mapbox/layers/RealtimeLayer.d.ts +118 -0
  131. package/mapbox/layers/RealtimeLayer.d.ts.map +1 -0
  132. package/mapbox/layers/RealtimeLayer.js +310 -183
  133. package/mapbox/layers/index.d.ts +3 -0
  134. package/mapbox/layers/index.d.ts.map +1 -0
  135. package/mapbox/layers/index.js +7 -2
  136. package/mapbox/utils.d.ts +8 -0
  137. package/mapbox/utils.d.ts.map +1 -0
  138. package/mapbox/utils.js +54 -29
  139. package/mbt.js +2052 -2109
  140. package/mbt.js.map +3 -3
  141. package/mbt.min.js +18 -18
  142. package/mbt.min.js.map +3 -3
  143. package/ol/controls/CopyrightControl.d.ts +31 -0
  144. package/ol/controls/CopyrightControl.d.ts.map +1 -0
  145. package/ol/controls/CopyrightControl.js +89 -41
  146. package/ol/controls/RoutingControl.d.ts +180 -0
  147. package/ol/controls/RoutingControl.d.ts.map +1 -0
  148. package/ol/controls/RoutingControl.js +666 -371
  149. package/ol/controls/StopFinderControl.d.ts +32 -0
  150. package/ol/controls/StopFinderControl.d.ts.map +1 -0
  151. package/ol/controls/StopFinderControl.js +59 -10
  152. package/ol/controls/index.d.ts +4 -0
  153. package/ol/controls/index.d.ts.map +1 -0
  154. package/ol/controls/index.js +9 -3
  155. package/ol/index.d.ts +6 -0
  156. package/ol/index.d.ts.map +1 -0
  157. package/ol/index.js +21 -5
  158. package/ol/layers/Layer.d.ts +49 -0
  159. package/ol/layers/Layer.d.ts.map +1 -0
  160. package/ol/layers/Layer.js +178 -81
  161. package/ol/layers/MapboxLayer.d.ts +42 -0
  162. package/ol/layers/MapboxLayer.d.ts.map +1 -0
  163. package/ol/layers/MapboxLayer.js +131 -198
  164. package/ol/layers/MapboxStyleLayer.d.ts +146 -0
  165. package/ol/layers/MapboxStyleLayer.d.ts.map +1 -0
  166. package/ol/layers/MapboxStyleLayer.js +382 -186
  167. package/ol/layers/MaplibreLayer.d.ts +27 -0
  168. package/ol/layers/MaplibreLayer.d.ts.map +1 -0
  169. package/ol/layers/MaplibreLayer.js +67 -138
  170. package/ol/layers/RealtimeLayer.d.ts +119 -0
  171. package/ol/layers/RealtimeLayer.d.ts.map +1 -0
  172. package/ol/layers/RealtimeLayer.js +327 -184
  173. package/ol/layers/RoutingLayer.d.ts +24 -0
  174. package/ol/layers/RoutingLayer.d.ts.map +1 -0
  175. package/ol/layers/RoutingLayer.js +111 -56
  176. package/ol/layers/VectorLayer.d.ts +23 -0
  177. package/ol/layers/VectorLayer.d.ts.map +1 -0
  178. package/ol/layers/VectorLayer.js +71 -21
  179. package/ol/layers/WMSLayer.d.ts +38 -0
  180. package/ol/layers/WMSLayer.d.ts.map +1 -0
  181. package/ol/layers/WMSLayer.js +105 -37
  182. package/ol/layers/index.d.ts +9 -0
  183. package/ol/layers/index.d.ts.map +1 -0
  184. package/ol/layers/index.js +19 -8
  185. package/ol/styles/fullTrajectoryDelayStyle.d.ts +4 -0
  186. package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +1 -0
  187. package/ol/styles/fullTrajectoryDelayStyle.js +32 -28
  188. package/ol/styles/fullTrajectoryStyle.d.ts +4 -0
  189. package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -0
  190. package/ol/styles/fullTrajectoryStyle.js +44 -40
  191. package/ol/styles/index.d.ts +3 -0
  192. package/ol/styles/index.d.ts.map +1 -0
  193. package/ol/styles/index.js +7 -2
  194. package/package.json +14 -36
  195. package/setupTests.d.ts +2 -0
  196. package/setupTests.d.ts.map +1 -0
  197. package/setupTests.js +15 -0
  198. package/types/index.d.ts +7 -6
  199. package/types/routing.d.ts +25 -25
  200. package/types/stops.d.ts +19 -19
  201. package/api/RealtimeAPI.test.js +0 -67
  202. package/api/RoutingAPI.test.js +0 -25
  203. package/api/StopsAPI.test.js +0 -22
  204. package/common/api/HttpAPI.test.js +0 -50
  205. package/common/api/WebSocketAPI.test.js +0 -311
  206. package/common/controls/Control.test.js +0 -87
  207. package/common/layers/Layer.test.js +0 -134
  208. package/common/mixins/UserInteractionsLayerMixin.test.js +0 -199
  209. package/common/utils/createTrackerFilters.test.js +0 -79
  210. package/common/utils/getMapboxMapCopyrights.test.js +0 -40
  211. package/common/utils/removeDuplicate.test.js +0 -19
  212. package/common/utils/timeUtils.test.js +0 -10
  213. package/common/utils/trackerConfig.test.js +0 -23
  214. package/mapbox/layers/Layer.test.js +0 -182
  215. package/mapbox/layers/RealtimeLayer.test.js +0 -10
  216. package/ol/controls/CopyrightControl.test.js +0 -165
  217. package/ol/controls/RoutingControl.test.js +0 -146
  218. package/ol/controls/StopFinderControl.test.js +0 -48
  219. package/ol/layers/Layer.test.js +0 -175
  220. package/ol/layers/MapboxLayer.test.js +0 -160
  221. package/ol/layers/MapboxStyleLayer.test.js +0 -226
  222. package/ol/layers/RealtimeLayer.test.js +0 -67
  223. package/ol/layers/RoutingLayer.test.js +0 -39
  224. package/ol/layers/VectorLayer.test.js +0 -76
  225. package/ol/layers/WMSLayer.test.js +0 -57
@@ -0,0 +1,40 @@
1
+ /**
2
+ * StopFinder control interface.
3
+ *
4
+ * @classproperty {StopsSearchParams} apiParams - Default request parameters used by the search method. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
5
+ */
6
+ export class StopFinderInterface {
7
+ /**
8
+ * Constructor.
9
+ *
10
+ * @param {Object} options Map options
11
+ * @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/). See StopsAPI.
12
+ * @param {string} [options.url='https://api.geops.io/tracker/v1'] Stops service url. See StopsAPI.
13
+ * @param {string} [options.placeholder='Search for a stop...'] Input field placeholder.
14
+ * @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
15
+ */
16
+ constructor(options?: {
17
+ apiKey: string;
18
+ url?: string;
19
+ placeholder?: string;
20
+ apiParams?: StopsSearchParams;
21
+ });
22
+ /**
23
+ * Launch a search.
24
+ *
25
+ * @param {String} query The query to search for.
26
+ * @param {AbortController} abortController Abort controller used to cancel the request.
27
+ * @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
28
+ */
29
+ search(query: string, abortController: AbortController): Promise<Array<GeoJSONFeature>>;
30
+ }
31
+ export default StopFinderMixin;
32
+ /**
33
+ * Mixin for StopFinderInterface.
34
+ *
35
+ * @param {Class} Base A class to extend with {StopFinderInterface} functionnalities.
36
+ * @return {Class} A class that implements <StopFinderInterface> class and extends Base;
37
+ * @private
38
+ */
39
+ declare function StopFinderMixin(Base: Class): Class;
40
+ //# sourceMappingURL=StopFinderMixin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StopFinderMixin.d.ts","sourceRoot":"","sources":["../../../src/common/mixins/StopFinderMixin.js"],"names":[],"mappings":"AAMA;;;;GAIG;AACH;IACE;;;;;;;;OAQG;IAEH;QAN2B,MAAM,EAAtB,MAAM;QACW,GAAG,GAApB,MAAM;QACW,WAAW,GAA5B,MAAM;QACsB,SAAS;OAGpB;IAE5B;;;;;;OAMG;IAEH,uCAJW,eAAe,GACd,QAAQ,qBAAqB,CAAC,CAGT;CAClC;;AAED;;;;;;GAMG;AACH,qDAoIG"}
@@ -1,110 +1,198 @@
1
- import { StopsAPI } from "../../api";
2
- export class StopFinderInterface {
3
- constructor(options = {}) {
4
- }
5
- search(query, abortController) {
6
- }
7
- }
8
- const StopFinderMixin = (Base) => class extends Base {
9
- constructor(options = {}) {
10
- super(options);
11
- const { apiParams, apiKey, url } = options;
12
- this.apiParams = { limit: 20, ...apiParams || {} };
13
- this.placeholder = options.placeholder || "Search for a stop...";
14
- const apiOptions = { apiKey };
15
- if (url) {
16
- apiOptions.url = url;
17
- }
18
- this.api = new StopsAPI(apiOptions);
19
- this.abortController = new AbortController();
20
- }
21
- render(featureCollection) {
22
- const suggestions = featureCollection?.features || [];
23
- if (!this.suggestionsElt) {
24
- return;
25
- }
26
- this.suggestionsElt.style.display = suggestions.length ? "block" : "none";
27
- this.suggestionsElt.innerHTML = "";
28
- suggestions.forEach((suggestion) => {
29
- const { properties } = suggestion;
30
- const suggElt = document.createElement("div");
31
- suggElt.innerHTML = properties.name;
32
- suggElt.onclick = () => {
33
- this.onSuggestionClick(suggestion);
34
- };
35
- Object.assign(suggElt.style, {
36
- padding: "5px 12px"
37
- });
38
- this.suggestionsElt.appendChild(suggElt);
39
- });
40
- }
41
- createDefaultElement() {
42
- this.element = document.createElement("div");
43
- this.element.id = "mbt-search";
44
- Object.assign(this.element.style, {
45
- position: "absolute",
46
- top: 0,
47
- left: "50px",
48
- margin: "10px",
49
- display: "flex",
50
- flexDirection: "column",
51
- width: "320px"
52
- });
53
- this.inputElt = document.createElement("input");
54
- this.inputElt.type = "text";
55
- this.inputElt.placeholder = this.placeholder;
56
- this.inputElt.autoComplete = "off";
57
- this.inputElt.onkeyup = (evt) => {
58
- this.abortController.abort();
59
- this.abortController = new AbortController();
60
- this.search(evt.target.value, this.abortController);
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
61
8
  };
62
- Object.assign(this.inputElt.style, {
63
- padding: "10px 30px 10px 10px"
64
- });
65
- this.element.appendChild(this.inputElt);
66
- this.suggestionsElt = document.createElement("div");
67
- Object.assign(this.suggestionsElt.style, {
68
- backgroundColor: "white",
69
- overflowY: "auto",
70
- cursor: "pointer"
71
- });
72
- this.element.appendChild(this.suggestionsElt);
73
- this.clearElt = document.createElement("div");
74
- Object.assign(this.clearElt.style, {
75
- display: "none",
76
- position: "absolute",
77
- right: "0",
78
- padding: "0 10px",
79
- fontSize: "200%",
80
- cursor: "pointer"
81
- });
82
- this.clearElt.innerHTML = "\xD7";
83
- this.clearElt.onclick = () => this.clear();
84
- this.element.appendChild(this.clearElt);
85
- }
86
- search(q, abortController) {
87
- if (q !== void 0 || q !== null) {
88
- this.apiParams.q = q;
89
- }
90
- if (this.clearElt) {
91
- this.clearElt.style.display = "block";
92
- }
93
- return this.api.search(this.apiParams, abortController).then((data) => {
94
- this.render(data);
95
- }).catch(() => {
96
- this.render();
97
- });
98
- }
99
- onSuggestionClick(suggestion) {
100
- }
101
- clear() {
102
- if (!this.suggestionsElt) {
103
- return;
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.StopFinderInterface = void 0;
30
+ /* eslint-disable no-empty-function */
31
+ /* eslint-disable no-useless-constructor */
32
+ /* eslint-disable class-methods-use-this */
33
+ /* eslint-disable max-classes-per-file */
34
+ var api_1 = require("../../api");
35
+ /**
36
+ * StopFinder control interface.
37
+ *
38
+ * @classproperty {StopsSearchParams} apiParams - Default request parameters used by the search method. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
39
+ */
40
+ var StopFinderInterface = /** @class */ (function () {
41
+ /**
42
+ * Constructor.
43
+ *
44
+ * @param {Object} options Map options
45
+ * @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/). See StopsAPI.
46
+ * @param {string} [options.url='https://api.geops.io/tracker/v1'] Stops service url. See StopsAPI.
47
+ * @param {string} [options.placeholder='Search for a stop...'] Input field placeholder.
48
+ * @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
49
+ */
50
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-useless-constructor, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
51
+ function StopFinderInterface(options) {
52
+ if (options === void 0) { options = {}; }
104
53
  }
105
- this.inputElt.value = "";
106
- this.suggestionsElt.innerHTML = "";
107
- this.clearElt.style.display = "none";
108
- }
54
+ /**
55
+ * Launch a search.
56
+ *
57
+ * @param {String} query The query to search for.
58
+ * @param {AbortController} abortController Abort controller used to cancel the request.
59
+ * @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
60
+ */
61
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
62
+ StopFinderInterface.prototype.search = function (query, abortController) { };
63
+ return StopFinderInterface;
64
+ }());
65
+ exports.StopFinderInterface = StopFinderInterface;
66
+ /**
67
+ * Mixin for StopFinderInterface.
68
+ *
69
+ * @param {Class} Base A class to extend with {StopFinderInterface} functionnalities.
70
+ * @return {Class} A class that implements <StopFinderInterface> class and extends Base;
71
+ * @private
72
+ */
73
+ var StopFinderMixin = function (Base) {
74
+ return /** @class */ (function (_super) {
75
+ __extends(class_1, _super);
76
+ function class_1(options) {
77
+ if (options === void 0) { options = {}; }
78
+ var _this = _super.call(this, options) || this;
79
+ var apiParams = options.apiParams, apiKey = options.apiKey, url = options.url;
80
+ _this.apiParams = __assign({ limit: 20 }, (apiParams || {}));
81
+ _this.placeholder = options.placeholder || 'Search for a stop...';
82
+ var apiOptions = { apiKey: apiKey };
83
+ if (url) {
84
+ apiOptions.url = url;
85
+ }
86
+ _this.api = new api_1.StopsAPI(apiOptions);
87
+ _this.abortController = new AbortController();
88
+ return _this;
89
+ }
90
+ class_1.prototype.render = function (featureCollection) {
91
+ var _this = this;
92
+ var suggestions = (featureCollection === null || featureCollection === void 0 ? void 0 : featureCollection.features) || [];
93
+ if (!this.suggestionsElt) {
94
+ return;
95
+ }
96
+ this.suggestionsElt.style.display = suggestions.length ? 'block' : 'none';
97
+ this.suggestionsElt.innerHTML = '';
98
+ suggestions.forEach(function (suggestion) {
99
+ var properties = suggestion.properties;
100
+ var suggElt = document.createElement('div');
101
+ suggElt.innerHTML = properties.name;
102
+ suggElt.onclick = function () {
103
+ _this.onSuggestionClick(suggestion);
104
+ };
105
+ Object.assign(suggElt.style, {
106
+ padding: '5px 12px',
107
+ });
108
+ _this.suggestionsElt.appendChild(suggElt);
109
+ });
110
+ };
111
+ class_1.prototype.createDefaultElement = function () {
112
+ var _this = this;
113
+ /**
114
+ * Define a default element.
115
+ */
116
+ this.element = document.createElement('div');
117
+ this.element.id = 'mbt-search';
118
+ Object.assign(this.element.style, {
119
+ position: 'absolute',
120
+ top: 0,
121
+ left: '50px',
122
+ margin: '10px',
123
+ display: 'flex',
124
+ flexDirection: 'column',
125
+ width: '320px',
126
+ });
127
+ // Create input element
128
+ this.inputElt = document.createElement('input');
129
+ this.inputElt.type = 'text';
130
+ this.inputElt.placeholder = this.placeholder;
131
+ this.inputElt.autoComplete = 'off';
132
+ this.inputElt.onkeyup = function (evt) {
133
+ _this.abortController.abort();
134
+ _this.abortController = new AbortController();
135
+ _this.search(evt.target.value, _this.abortController);
136
+ };
137
+ Object.assign(this.inputElt.style, {
138
+ padding: '10px 30px 10px 10px',
139
+ });
140
+ this.element.appendChild(this.inputElt);
141
+ // Create suggestions list element
142
+ this.suggestionsElt = document.createElement('div');
143
+ Object.assign(this.suggestionsElt.style, {
144
+ backgroundColor: 'white',
145
+ overflowY: 'auto',
146
+ cursor: 'pointer',
147
+ });
148
+ this.element.appendChild(this.suggestionsElt);
149
+ this.clearElt = document.createElement('div');
150
+ Object.assign(this.clearElt.style, {
151
+ display: 'none',
152
+ position: 'absolute',
153
+ right: '0',
154
+ padding: '0 10px',
155
+ fontSize: '200%',
156
+ cursor: 'pointer',
157
+ });
158
+ this.clearElt.innerHTML = '×';
159
+ this.clearElt.onclick = function () { return _this.clear(); };
160
+ this.element.appendChild(this.clearElt);
161
+ };
162
+ class_1.prototype.search = function (q, abortController) {
163
+ var _this = this;
164
+ if (q !== undefined || q !== null) {
165
+ this.apiParams.q = q;
166
+ }
167
+ if (this.clearElt) {
168
+ this.clearElt.style.display = 'block';
169
+ }
170
+ return this.api
171
+ .search(this.apiParams, abortController)
172
+ .then(function (data) {
173
+ _this.render(data);
174
+ })
175
+ .catch(function () {
176
+ _this.render();
177
+ });
178
+ };
179
+ /**
180
+ * To be defined in inherited class
181
+ */
182
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
183
+ class_1.prototype.onSuggestionClick = function (suggestion) { };
184
+ /**
185
+ * Clear the search field and close the control.
186
+ */
187
+ class_1.prototype.clear = function () {
188
+ if (!this.suggestionsElt) {
189
+ return;
190
+ }
191
+ this.inputElt.value = '';
192
+ this.suggestionsElt.innerHTML = '';
193
+ this.clearElt.style.display = 'none';
194
+ };
195
+ return class_1;
196
+ }(Base));
109
197
  };
110
- export default StopFinderMixin;
198
+ exports.default = StopFinderMixin;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * UserInteractionsLayerInterface.
3
+ */
4
+ export class UserInteractionsLayerInterface {
5
+ constructor(options?: {});
6
+ /**
7
+ * Initialize the layer adding user interactions.
8
+ *
9
+ * @param {ol/Map~Map} map
10
+ */
11
+ attachToMap(map: any): void;
12
+ /**
13
+ * Terminate the layer unsubscribing user interactions.
14
+ */
15
+ detachFromMap(): void;
16
+ /**
17
+ * Activate map listeners events.
18
+ */
19
+ activateUserInteractions(): void;
20
+ /**
21
+ * Deactivaet map listeners events.
22
+ */
23
+ deactivateUserInteractions(): void;
24
+ /**
25
+ * Terminate the layer unsubscribing user interactions.
26
+ */
27
+ onClick(callback: any): void;
28
+ /**
29
+ * Terminate the layer unsubscribing user interactions.
30
+ */
31
+ onHover(callback: any): void;
32
+ }
33
+ export default UserInteractionsLayerMixin;
34
+ /**
35
+ * Mixin for UserInteractionsLayerInterface. It provide onClick and onHover functions.
36
+ *
37
+ * @param {Class} Base A class to extend with {UserInteractionsLayerInterface} functionnalities.
38
+ * @return {Class} A class that implements {UserInteractionsLayerInterface} class and extends Base;
39
+ * @private
40
+ */
41
+ declare function UserInteractionsLayerMixin(Base: Class): Class;
42
+ //# sourceMappingURL=UserInteractionsLayerMixin.d.ts.map
@@ -0,0 +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;CACrB;;AAED;;;;;;GAMG;AACH,gEA6KG"}