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

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 (195) hide show
  1. package/README.md +14 -8
  2. package/api/RealtimeAPI.d.ts +6 -6
  3. package/api/RealtimeAPI.d.ts.map +1 -1
  4. package/api/RealtimeAPI.js +170 -197
  5. package/api/RealtimeAPI.test.d.ts +2 -0
  6. package/api/RealtimeAPI.test.d.ts.map +1 -0
  7. package/api/RealtimeAPI.test.js +67 -0
  8. package/api/RoutingAPI.d.ts +6 -2
  9. package/api/RoutingAPI.d.ts.map +1 -1
  10. package/api/RoutingAPI.js +8 -38
  11. package/api/RoutingAPI.test.d.ts +2 -0
  12. package/api/RoutingAPI.test.d.ts.map +1 -0
  13. package/api/RoutingAPI.test.js +29 -0
  14. package/api/StopsAPI.d.ts +1 -1
  15. package/api/StopsAPI.d.ts.map +1 -1
  16. package/api/StopsAPI.js +8 -40
  17. package/api/StopsAPI.test.d.ts +2 -0
  18. package/api/StopsAPI.test.d.ts.map +1 -0
  19. package/api/StopsAPI.test.js +26 -0
  20. package/api/index.d.ts +3 -4
  21. package/api/index.d.ts.map +1 -1
  22. package/api/index.js +3 -10
  23. package/api/typedefs.js +1 -0
  24. package/common/api/HttpAPI.d.ts +2 -2
  25. package/common/api/HttpAPI.d.ts.map +1 -1
  26. package/common/api/HttpAPI.js +21 -48
  27. package/common/api/HttpAPI.test.d.ts +2 -0
  28. package/common/api/HttpAPI.test.d.ts.map +1 -0
  29. package/common/api/HttpAPI.test.js +54 -0
  30. package/common/api/WebSocketAPI.d.ts +8 -4
  31. package/common/api/WebSocketAPI.d.ts.map +1 -1
  32. package/common/api/WebSocketAPI.js +125 -129
  33. package/common/api/WebSocketAPI.test.d.ts +2 -0
  34. package/common/api/WebSocketAPI.test.d.ts.map +1 -0
  35. package/common/api/WebSocketAPI.test.js +380 -0
  36. package/common/controls/Control.d.ts +5 -5
  37. package/common/controls/Control.d.ts.map +1 -1
  38. package/common/controls/Control.js +44 -77
  39. package/common/controls/Control.test.d.ts +2 -0
  40. package/common/controls/Control.test.d.ts.map +1 -0
  41. package/common/controls/Control.test.js +89 -0
  42. package/common/index.js +2 -18
  43. package/common/layers/Layer.d.ts +11 -11
  44. package/common/layers/Layer.d.ts.map +1 -1
  45. package/common/layers/Layer.js +70 -104
  46. package/common/layers/Layer.test.d.ts +2 -0
  47. package/common/layers/Layer.test.d.ts.map +1 -0
  48. package/common/layers/Layer.test.js +137 -0
  49. package/common/mixins/CopyrightMixin.js +23 -52
  50. package/common/mixins/MapboxLayerMixin.js +162 -204
  51. package/common/mixins/RealtimeLayerMixin.js +580 -635
  52. package/common/mixins/StopFinderMixin.d.ts +3 -3
  53. package/common/mixins/StopFinderMixin.d.ts.map +1 -1
  54. package/common/mixins/StopFinderMixin.js +115 -157
  55. package/common/mixins/UserInteractionsLayerMixin.js +142 -175
  56. package/common/mixins/UserInteractionsLayerMixin.test.d.ts +2 -0
  57. package/common/mixins/UserInteractionsLayerMixin.test.d.ts.map +1 -0
  58. package/common/mixins/UserInteractionsLayerMixin.test.js +214 -0
  59. package/common/styles/index.js +4 -24
  60. package/common/styles/realtimeDefaultStyle.d.ts.map +1 -1
  61. package/common/styles/realtimeDefaultStyle.js +67 -78
  62. package/common/styles/realtimeDelayStyle.js +4 -17
  63. package/common/styles/realtimeSimpleStyle.js +5 -7
  64. package/common/typedefs.js +1 -0
  65. package/common/utils/cleanStopTime.js +3 -5
  66. package/common/utils/compareDepartures.d.ts +1 -1
  67. package/common/utils/compareDepartures.d.ts.map +1 -1
  68. package/common/utils/compareDepartures.js +8 -11
  69. package/common/utils/createCanvas.js +3 -5
  70. package/common/utils/createTrackerFilters.d.ts +1 -1
  71. package/common/utils/createTrackerFilters.d.ts.map +1 -1
  72. package/common/utils/createTrackerFilters.js +22 -32
  73. package/common/utils/createTrackerFilters.test.d.ts +2 -0
  74. package/common/utils/createTrackerFilters.test.d.ts.map +1 -0
  75. package/common/utils/createTrackerFilters.test.js +79 -0
  76. package/common/utils/getLayersAsFlatArray.js +6 -8
  77. package/common/utils/getMapboxMapCopyrights.js +9 -11
  78. package/common/utils/getMapboxMapCopyrights.test.d.ts +2 -0
  79. package/common/utils/getMapboxMapCopyrights.test.d.ts.map +1 -0
  80. package/common/utils/getMapboxMapCopyrights.test.js +40 -0
  81. package/common/utils/getMapboxRender.js +12 -15
  82. package/common/utils/getMaplibreRender.js +10 -13
  83. package/common/utils/getRealtimeModeSuffix.js +2 -6
  84. package/common/utils/getUrlWithParams.js +5 -8
  85. package/common/utils/getVehiclePosition.js +20 -23
  86. package/common/utils/index.js +12 -37
  87. package/common/utils/removeDuplicate.d.ts +1 -1
  88. package/common/utils/removeDuplicate.d.ts.map +1 -1
  89. package/common/utils/removeDuplicate.js +6 -21
  90. package/common/utils/removeDuplicate.test.d.ts +2 -0
  91. package/common/utils/removeDuplicate.test.d.ts.map +1 -0
  92. package/common/utils/removeDuplicate.test.js +19 -0
  93. package/common/utils/renderTrajectories.js +31 -43
  94. package/common/utils/sortByDelay.js +4 -6
  95. package/common/utils/timeUtils.js +14 -24
  96. package/common/utils/timeUtils.test.d.ts +2 -0
  97. package/common/utils/timeUtils.test.d.ts.map +1 -0
  98. package/common/utils/timeUtils.test.js +10 -0
  99. package/common/utils/trackerConfig.js +27 -39
  100. package/common/utils/trackerConfig.test.d.ts +2 -0
  101. package/common/utils/trackerConfig.test.d.ts.map +1 -0
  102. package/common/utils/trackerConfig.test.js +23 -0
  103. package/iife.js +3 -5
  104. package/index.d.ts +4 -0
  105. package/index.js +9 -10
  106. package/mapbox/controls/CopyrightControl.d.ts +0 -1
  107. package/mapbox/controls/CopyrightControl.d.ts.map +1 -1
  108. package/mapbox/controls/CopyrightControl.js +18 -38
  109. package/mapbox/controls/index.js +1 -5
  110. package/mapbox/index.js +4 -20
  111. package/mapbox/layers/Layer.d.ts +1 -1
  112. package/mapbox/layers/Layer.d.ts.map +1 -1
  113. package/mapbox/layers/Layer.js +29 -71
  114. package/mapbox/layers/Layer.test.d.ts +2 -0
  115. package/mapbox/layers/Layer.test.d.ts.map +1 -0
  116. package/mapbox/layers/Layer.test.js +204 -0
  117. package/mapbox/layers/RealtimeLayer.d.ts +4 -4
  118. package/mapbox/layers/RealtimeLayer.d.ts.map +1 -1
  119. package/mapbox/layers/RealtimeLayer.js +83 -125
  120. package/mapbox/layers/RealtimeLayer.test.d.ts +2 -0
  121. package/mapbox/layers/RealtimeLayer.test.d.ts.map +1 -0
  122. package/mapbox/layers/RealtimeLayer.test.js +10 -0
  123. package/mapbox/layers/index.js +2 -7
  124. package/mapbox/utils.js +19 -33
  125. package/mbt.js +59 -37
  126. package/mbt.js.map +2 -2
  127. package/mbt.min.js +10 -10
  128. package/mbt.min.js.map +2 -2
  129. package/ol/controls/CopyrightControl.js +26 -47
  130. package/ol/controls/CopyrightControl.test.d.ts +2 -0
  131. package/ol/controls/CopyrightControl.test.d.ts.map +1 -0
  132. package/ol/controls/CopyrightControl.test.js +177 -0
  133. package/ol/controls/RoutingControl.d.ts +6 -5
  134. package/ol/controls/RoutingControl.d.ts.map +1 -1
  135. package/ol/controls/RoutingControl.js +209 -270
  136. package/ol/controls/RoutingControl.test.d.ts +2 -0
  137. package/ol/controls/RoutingControl.test.d.ts.map +1 -0
  138. package/ol/controls/RoutingControl.test.js +150 -0
  139. package/ol/controls/StopFinderControl.js +9 -32
  140. package/ol/controls/StopFinderControl.test.d.ts +2 -0
  141. package/ol/controls/StopFinderControl.test.d.ts.map +1 -0
  142. package/ol/controls/StopFinderControl.test.js +49 -0
  143. package/ol/controls/index.js +3 -9
  144. package/ol/index.js +5 -21
  145. package/ol/layers/Layer.d.ts +1 -1
  146. package/ol/layers/Layer.d.ts.map +1 -1
  147. package/ol/layers/Layer.js +40 -72
  148. package/ol/layers/Layer.test.d.ts +2 -0
  149. package/ol/layers/Layer.test.d.ts.map +1 -0
  150. package/ol/layers/Layer.test.js +196 -0
  151. package/ol/layers/MapboxLayer.d.ts +7 -7
  152. package/ol/layers/MapboxLayer.d.ts.map +1 -1
  153. package/ol/layers/MapboxLayer.js +30 -66
  154. package/ol/layers/MapboxLayer.test.d.ts +2 -0
  155. package/ol/layers/MapboxLayer.test.d.ts.map +1 -0
  156. package/ol/layers/MapboxLayer.test.js +164 -0
  157. package/ol/layers/MapboxStyleLayer.d.ts +3 -3
  158. package/ol/layers/MapboxStyleLayer.d.ts.map +1 -1
  159. package/ol/layers/MapboxStyleLayer.js +92 -135
  160. package/ol/layers/MapboxStyleLayer.test.d.ts +2 -0
  161. package/ol/layers/MapboxStyleLayer.test.d.ts.map +1 -0
  162. package/ol/layers/MapboxStyleLayer.test.js +232 -0
  163. package/ol/layers/MaplibreLayer.d.ts +1 -1
  164. package/ol/layers/MaplibreLayer.d.ts.map +1 -1
  165. package/ol/layers/MaplibreLayer.js +14 -48
  166. package/ol/layers/RealtimeLayer.d.ts +2 -2
  167. package/ol/layers/RealtimeLayer.d.ts.map +1 -1
  168. package/ol/layers/RealtimeLayer.js +111 -147
  169. package/ol/layers/RealtimeLayer.test.d.ts +2 -0
  170. package/ol/layers/RealtimeLayer.test.d.ts.map +1 -0
  171. package/ol/layers/RealtimeLayer.test.js +71 -0
  172. package/ol/layers/RoutingLayer.d.ts +2 -2
  173. package/ol/layers/RoutingLayer.d.ts.map +1 -1
  174. package/ol/layers/RoutingLayer.js +29 -61
  175. package/ol/layers/RoutingLayer.test.d.ts +2 -0
  176. package/ol/layers/RoutingLayer.test.d.ts.map +1 -0
  177. package/ol/layers/RoutingLayer.test.js +39 -0
  178. package/ol/layers/VectorLayer.d.ts +1 -1
  179. package/ol/layers/VectorLayer.d.ts.map +1 -1
  180. package/ol/layers/VectorLayer.js +14 -48
  181. package/ol/layers/VectorLayer.test.d.ts +2 -0
  182. package/ol/layers/VectorLayer.test.d.ts.map +1 -0
  183. package/ol/layers/VectorLayer.test.js +87 -0
  184. package/ol/layers/WMSLayer.d.ts +1 -1
  185. package/ol/layers/WMSLayer.d.ts.map +1 -1
  186. package/ol/layers/WMSLayer.js +34 -68
  187. package/ol/layers/WMSLayer.test.d.ts +2 -0
  188. package/ol/layers/WMSLayer.test.d.ts.map +1 -0
  189. package/ol/layers/WMSLayer.test.js +66 -0
  190. package/ol/layers/index.js +8 -19
  191. package/ol/styles/fullTrajectoryDelayStyle.js +11 -13
  192. package/ol/styles/fullTrajectoryStyle.js +16 -18
  193. package/ol/styles/index.js +2 -7
  194. package/package.json +5 -2
  195. package/setupTests.js +12 -14
@@ -15,9 +15,9 @@ export class StopFinderInterface {
15
15
  */
16
16
  constructor(options?: {
17
17
  apiKey: string;
18
- url?: string;
19
- placeholder?: string;
20
- apiParams?: StopsSearchParams;
18
+ url?: string | undefined;
19
+ placeholder?: string | undefined;
20
+ apiParams?: any;
21
21
  });
22
22
  /**
23
23
  * Launch a search.
@@ -1 +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
+ {"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;QACH,WAAW;QACA,SAAS;OAGpB;IAE5B;;;;;;OAMG;IAEH,uCAJW,eAAe,GACd,QAAQ,qBAAqB,CAAC,CAGT;CAClC;;AAED;;;;;;GAMG;AACH,qDAoIG"}
@@ -1,43 +1,14 @@
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);
8
- };
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
1
  /* eslint-disable no-empty-function */
31
2
  /* eslint-disable no-useless-constructor */
32
3
  /* eslint-disable class-methods-use-this */
33
4
  /* eslint-disable max-classes-per-file */
34
- var api_1 = require("../../api");
5
+ import { StopsAPI } from '../../api';
35
6
  /**
36
7
  * StopFinder control interface.
37
8
  *
38
9
  * @classproperty {StopsSearchParams} apiParams - Default request parameters used by the search method. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
39
10
  */
40
- var StopFinderInterface = /** @class */ (function () {
11
+ export class StopFinderInterface {
41
12
  /**
42
13
  * Constructor.
43
14
  *
@@ -48,9 +19,7 @@ var StopFinderInterface = /** @class */ (function () {
48
19
  * @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
49
20
  */
50
21
  // 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 = {}; }
53
- }
22
+ constructor(options = {}) { }
54
23
  /**
55
24
  * Launch a search.
56
25
  *
@@ -59,10 +28,8 @@ var StopFinderInterface = /** @class */ (function () {
59
28
  * @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
60
29
  */
61
30
  // 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;
31
+ search(query, abortController) { }
32
+ }
66
33
  /**
67
34
  * Mixin for StopFinderInterface.
68
35
  *
@@ -70,129 +37,120 @@ exports.StopFinderInterface = StopFinderInterface;
70
37
  * @return {Class} A class that implements <StopFinderInterface> class and extends Base;
71
38
  * @private
72
39
  */
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;
40
+ const StopFinderMixin = (Base) => class extends Base {
41
+ constructor(options = {}) {
42
+ super(options);
43
+ const { apiParams, apiKey, url } = options;
44
+ this.apiParams = Object.assign({ limit: 20 }, (apiParams || {}));
45
+ this.placeholder = options.placeholder || 'Search for a stop...';
46
+ const apiOptions = { apiKey };
47
+ if (url) {
48
+ apiOptions.url = url;
89
49
  }
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);
50
+ this.api = new StopsAPI(apiOptions);
51
+ this.abortController = new AbortController();
52
+ }
53
+ render(featureCollection) {
54
+ const suggestions = (featureCollection === null || featureCollection === void 0 ? void 0 : featureCollection.features) || [];
55
+ if (!this.suggestionsElt) {
56
+ return;
57
+ }
58
+ this.suggestionsElt.style.display = suggestions.length ? 'block' : 'none';
59
+ this.suggestionsElt.innerHTML = '';
60
+ suggestions.forEach((suggestion) => {
61
+ const { properties } = suggestion;
62
+ const suggElt = document.createElement('div');
63
+ suggElt.innerHTML = properties.name;
64
+ suggElt.onclick = () => {
65
+ this.onSuggestionClick(suggestion);
136
66
  };
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',
67
+ Object.assign(suggElt.style, {
68
+ padding: '5px 12px',
147
69
  });
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) { };
70
+ this.suggestionsElt.appendChild(suggElt);
71
+ });
72
+ }
73
+ createDefaultElement() {
184
74
  /**
185
- * Clear the search field and close the control.
75
+ * Define a default element.
186
76
  */
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';
77
+ this.element = document.createElement('div');
78
+ this.element.id = 'mbt-search';
79
+ Object.assign(this.element.style, {
80
+ position: 'absolute',
81
+ top: 0,
82
+ left: '50px',
83
+ margin: '10px',
84
+ display: 'flex',
85
+ flexDirection: 'column',
86
+ width: '320px',
87
+ });
88
+ // Create input element
89
+ this.inputElt = document.createElement('input');
90
+ this.inputElt.type = 'text';
91
+ this.inputElt.placeholder = this.placeholder;
92
+ this.inputElt.autoComplete = 'off';
93
+ this.inputElt.onkeyup = (evt) => {
94
+ this.abortController.abort();
95
+ this.abortController = new AbortController();
96
+ this.search(evt.target.value, this.abortController);
194
97
  };
195
- return class_1;
196
- }(Base));
98
+ Object.assign(this.inputElt.style, {
99
+ padding: '10px 30px 10px 10px',
100
+ });
101
+ this.element.appendChild(this.inputElt);
102
+ // Create suggestions list element
103
+ this.suggestionsElt = document.createElement('div');
104
+ Object.assign(this.suggestionsElt.style, {
105
+ backgroundColor: 'white',
106
+ overflowY: 'auto',
107
+ cursor: 'pointer',
108
+ });
109
+ this.element.appendChild(this.suggestionsElt);
110
+ this.clearElt = document.createElement('div');
111
+ Object.assign(this.clearElt.style, {
112
+ display: 'none',
113
+ position: 'absolute',
114
+ right: '0',
115
+ padding: '0 10px',
116
+ fontSize: '200%',
117
+ cursor: 'pointer',
118
+ });
119
+ this.clearElt.innerHTML = '×';
120
+ this.clearElt.onclick = () => this.clear();
121
+ this.element.appendChild(this.clearElt);
122
+ }
123
+ search(q, abortController) {
124
+ if (q !== undefined || q !== null) {
125
+ this.apiParams.q = q;
126
+ }
127
+ if (this.clearElt) {
128
+ this.clearElt.style.display = 'block';
129
+ }
130
+ return this.api
131
+ .search(this.apiParams, abortController)
132
+ .then((data) => {
133
+ this.render(data);
134
+ })
135
+ .catch(() => {
136
+ this.render();
137
+ });
138
+ }
139
+ /**
140
+ * To be defined in inherited class
141
+ */
142
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
143
+ onSuggestionClick(suggestion) { }
144
+ /**
145
+ * Clear the search field and close the control.
146
+ */
147
+ clear() {
148
+ if (!this.suggestionsElt) {
149
+ return;
150
+ }
151
+ this.inputElt.value = '';
152
+ this.suggestionsElt.innerHTML = '';
153
+ this.clearElt.style.display = 'none';
154
+ }
197
155
  };
198
- exports.default = StopFinderMixin;
156
+ export default StopFinderMixin;