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
@@ -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,54 @@
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 declare 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
+ render(featureCollection?: FeatureCollection): void;
35
+ createDefaultElement(): void;
36
+ /**
37
+ * Launch a search.
38
+ *
39
+ * @param {String} query The query to search for.
40
+ * @param {AbortController} abortController Abort controller used to cancel the request.
41
+ * @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
42
+ */
43
+ search(q: string, abortController: AbortController): Promise<void>;
44
+ /**
45
+ * To be defined in inherited class
46
+ */
47
+ onSuggestionClick(suggestion: Feature): void;
48
+ /**
49
+ * Clear the search field and close the control.
50
+ */
51
+ clear(): void;
52
+ }
53
+ export default StopFinderControlCommon;
54
+ //# 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,oBAAY,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,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"}
@@ -1,14 +1,11 @@
1
- /* eslint-disable no-empty-function */
2
- /* eslint-disable no-useless-constructor */
3
- /* eslint-disable class-methods-use-this */
4
- /* eslint-disable max-classes-per-file */
5
1
  import { StopsAPI } from '../../api';
2
+ import ControlCommon from './ControlCommon';
6
3
  /**
7
- * StopFinder control interface.
8
- *
9
- * @classproperty {StopsSearchParams} apiParams - Default request parameters used by the search method. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
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.
10
7
  */
11
- export class StopFinderInterface {
8
+ class StopFinderControlCommon extends ControlCommon {
12
9
  /**
13
10
  * Constructor.
14
11
  *
@@ -18,27 +15,7 @@ export class StopFinderInterface {
18
15
  * @param {string} [options.placeholder='Search for a stop...'] Input field placeholder.
19
16
  * @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
20
17
  */
21
- // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-useless-constructor, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
22
- constructor(options = {}) { }
23
- /**
24
- * Launch a search.
25
- *
26
- * @param {String} query The query to search for.
27
- * @param {AbortController} abortController Abort controller used to cancel the request.
28
- * @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
29
- */
30
- // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
31
- search(query, abortController) { }
32
- }
33
- /**
34
- * Mixin for StopFinderInterface.
35
- *
36
- * @param {Class} Base A class to extend with {StopFinderInterface} functionnalities.
37
- * @return {Class} A class that implements <StopFinderInterface> class and extends Base;
38
- * @private
39
- */
40
- const StopFinderMixin = (Base) => class extends Base {
41
- constructor(options = {}) {
18
+ constructor(options) {
42
19
  super(options);
43
20
  const { apiParams, apiKey, url } = options;
44
21
  this.apiParams = Object.assign({ limit: 20 }, (apiParams || {}));
@@ -58,16 +35,17 @@ const StopFinderMixin = (Base) => class extends Base {
58
35
  this.suggestionsElt.style.display = suggestions.length ? 'block' : 'none';
59
36
  this.suggestionsElt.innerHTML = '';
60
37
  suggestions.forEach((suggestion) => {
61
- const { properties } = suggestion;
38
+ var _a, _b;
62
39
  const suggElt = document.createElement('div');
63
- suggElt.innerHTML = properties.name;
40
+ suggElt.innerHTML = (_a = suggestion === null || suggestion === void 0 ? void 0 : suggestion.properties) === null || _a === void 0 ? void 0 : _a.name;
64
41
  suggElt.onclick = () => {
42
+ // @ts-ignore
65
43
  this.onSuggestionClick(suggestion);
66
44
  };
67
45
  Object.assign(suggElt.style, {
68
46
  padding: '5px 12px',
69
47
  });
70
- this.suggestionsElt.appendChild(suggElt);
48
+ (_b = this.suggestionsElt) === null || _b === void 0 ? void 0 : _b.appendChild(suggElt);
71
49
  });
72
50
  }
73
51
  createDefaultElement() {
@@ -89,10 +67,12 @@ const StopFinderMixin = (Base) => class extends Base {
89
67
  this.inputElt = document.createElement('input');
90
68
  this.inputElt.type = 'text';
91
69
  this.inputElt.placeholder = this.placeholder;
92
- this.inputElt.autoComplete = 'off';
70
+ this.inputElt.autocomplete = 'off';
93
71
  this.inputElt.onkeyup = (evt) => {
94
- this.abortController.abort();
72
+ var _a;
73
+ (_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
95
74
  this.abortController = new AbortController();
75
+ // @ts-ignore
96
76
  this.search(evt.target.value, this.abortController);
97
77
  };
98
78
  Object.assign(this.inputElt.style, {
@@ -120,6 +100,13 @@ const StopFinderMixin = (Base) => class extends Base {
120
100
  this.clearElt.onclick = () => this.clear();
121
101
  this.element.appendChild(this.clearElt);
122
102
  }
103
+ /**
104
+ * Launch a search.
105
+ *
106
+ * @param {String} query The query to search for.
107
+ * @param {AbortController} abortController Abort controller used to cancel the request.
108
+ * @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
109
+ */
123
110
  search(q, abortController) {
124
111
  if (q !== undefined || q !== null) {
125
112
  this.apiParams.q = q;
@@ -128,7 +115,7 @@ const StopFinderMixin = (Base) => class extends Base {
128
115
  this.clearElt.style.display = 'block';
129
116
  }
130
117
  return this.api
131
- .search(this.apiParams, abortController)
118
+ .search(this.apiParams, abortController && { signal: abortController.signal })
132
119
  .then((data) => {
133
120
  this.render(data);
134
121
  })
@@ -145,12 +132,12 @@ const StopFinderMixin = (Base) => class extends Base {
145
132
  * Clear the search field and close the control.
146
133
  */
147
134
  clear() {
148
- if (!this.suggestionsElt) {
135
+ if (!this.suggestionsElt || !this.inputElt || !this.clearElt) {
149
136
  return;
150
137
  }
151
138
  this.inputElt.value = '';
152
139
  this.suggestionsElt.innerHTML = '';
153
140
  this.clearElt.style.display = 'none';
154
141
  }
155
- };
156
- export default StopFinderMixin;
142
+ }
143
+ export default StopFinderControlCommon;
@@ -1,3 +1,19 @@
1
+ import BaseObject from 'ol/Object';
2
+ import type { AnyMap, LayerGetFeatureInfoOptions, LayerGetFeatureInfoResponse } from '../../types';
3
+ export declare 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
+ };
1
17
  /**
2
18
  * A class representing a layer to display on map.
3
19
  *
@@ -17,6 +33,19 @@
17
33
  * @classproperty {ol/Map~Map|mapboxgl.Map} map - The map where the layer is displayed.
18
34
  */
19
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;
20
49
  /**
21
50
  * Constructor
22
51
  *
@@ -30,34 +59,19 @@ export default class Layer extends BaseObject {
30
59
  * @param {number} [options.hitTolerance=5] Hit-detection tolerance in css pixels. Pixels inside the radius around the given position will be checked for features.
31
60
  * @param {Object} [options.properties={}] Application-specific layer properties.
32
61
  */
33
- constructor(options?: {
34
- key?: string | undefined;
35
- name?: string | undefined;
36
- copyrights?: string[] | undefined;
37
- children?: Layer[] | undefined;
38
- visible?: boolean | undefined;
39
- disabled?: boolean | undefined;
40
- hitTolerance?: number | undefined;
41
- properties?: Object | undefined;
42
- });
43
- visible: boolean;
44
- group: any;
45
- copyrights: string[] | undefined;
46
- children: Layer[] | undefined;
62
+ constructor(options?: LayerCommonOptions);
47
63
  /**
48
64
  * Define layer's properties that needs custom get and set.
49
65
  *
50
66
  * @ignore
51
67
  */
52
- defineProperties(options: any): void;
68
+ defineProperties(options?: LayerCommonOptions): void;
53
69
  /**
54
70
  * Initialize the layer with the map passed in parameters.
55
71
  *
56
72
  * @param {ol/Map~Map|mapboxgl.Map} map A map.
57
73
  */
58
- attachToMap(map: any): void;
59
- /** @ignore */
60
- map: any;
74
+ attachToMap(map: AnyMap): void;
61
75
  /**
62
76
  * Terminate what was initialized in init function. Remove layer, events...
63
77
  */
@@ -70,11 +84,10 @@ export default class Layer extends BaseObject {
70
84
  * @param {Object} options Some options. See child classes to see which are supported.
71
85
  * @return {Promise<FeatureInfo>} An empty response.
72
86
  */
73
- getFeatureInfoAtCoordinate(coordinate: any, options: Object): Promise<FeatureInfo>;
87
+ getFeatureInfoAtCoordinate(coordinate: number[], options?: LayerGetFeatureInfoOptions): Promise<LayerGetFeatureInfoResponse>;
74
88
  /**
75
89
  * Return the an array containing all the descendants of the layer in a flat array. Including the current layer.
76
90
  */
77
91
  flat(): any[];
78
92
  }
79
- import BaseObject from "ol/Object";
80
- //# sourceMappingURL=Layer.d.ts.map
93
+ //# 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,oBAAY,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,CAAC;IAElC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,MAAM,CAAC,EAAE,KAAK,CAAC;IAEf;;;;;;;;;;;;OAYG;gBACS,OAAO,GAAE,kBAAuB;IAkC5C;;;;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"}
@@ -1,5 +1,6 @@
1
1
  import BaseObject from 'ol/Object';
2
2
  import { v4 as uuid } from 'uuid';
3
+ import BaseEvent from 'ol/events/Event';
3
4
  import getLayersAsFlatArray from '../utils/getLayersAsFlatArray';
4
5
  /**
5
6
  * A class representing a layer to display on map.
@@ -36,13 +37,16 @@ export default class Layer extends BaseObject {
36
37
  constructor(options = {}) {
37
38
  super();
38
39
  this.defineProperties(options);
39
- this.setProperties(options.properties);
40
+ if (options.properties) {
41
+ this.setProperties(options.properties);
42
+ }
40
43
  this.visible = options.visible === undefined ? true : !!options.visible;
41
44
  this.group = options.group;
42
45
  this.copyrights = options.copyrights;
43
46
  this.children = options.children;
44
47
  // Listen for group visiblity change
45
48
  // if a layer from a group is newly visible we hide the others.
49
+ /* @ts-ignore */
46
50
  this.on(`change:visible:group`, (evt) => {
47
51
  // We hide layer of the same group
48
52
  if (this.group === evt.target.group &&
@@ -61,7 +65,7 @@ export default class Layer extends BaseObject {
61
65
  *
62
66
  * @ignore
63
67
  */
64
- defineProperties(options) {
68
+ defineProperties(options = {}) {
65
69
  const { name, key, properties, hitTolerance } = Object.assign({}, options);
66
70
  const uid = uuid();
67
71
  Object.defineProperties(this, {
@@ -122,10 +126,9 @@ export default class Layer extends BaseObject {
122
126
  while (higherParent.parent) {
123
127
  higherParent = higherParent.parent;
124
128
  }
125
- higherParent.dispatchEvent({
126
- type: `change:visible:group`,
127
- target: this,
128
- });
129
+ const evt = new BaseEvent(`change:visible:group`);
130
+ evt.target = this;
131
+ higherParent.dispatchEvent(evt);
129
132
  }
130
133
  }
131
134
  else if (!this.visible) {
@@ -139,6 +142,7 @@ export default class Layer extends BaseObject {
139
142
  // If the parent has no more visible child we also hide it.
140
143
  if (this.parent &&
141
144
  this.parent.visible &&
145
+ this.parent.children &&
142
146
  !this.parent.children.find((child) => child.visible)) {
143
147
  this.parent.visible = false;
144
148
  }
@@ -161,7 +165,7 @@ export default class Layer extends BaseObject {
161
165
  set: (newValue) => {
162
166
  (this.children || []).forEach((child) => {
163
167
  // eslint-disable-next-line no-param-reassign
164
- child.parent = null;
168
+ child.parent = undefined;
165
169
  });
166
170
  if (Array.isArray(newValue)) {
167
171
  newValue.forEach((child) => {
@@ -204,7 +208,7 @@ export default class Layer extends BaseObject {
204
208
  // eslint-disable-next-line class-methods-use-this
205
209
  detachFromMap() {
206
210
  /** @ignore */
207
- this.map = null;
211
+ this.map = undefined;
208
212
  }
209
213
  /**
210
214
  * Request feature information for a given coordinate.
@@ -215,7 +219,9 @@ export default class Layer extends BaseObject {
215
219
  * @return {Promise<FeatureInfo>} An empty response.
216
220
  */
217
221
  // eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars
218
- getFeatureInfoAtCoordinate(coordinate, options) {
222
+ getFeatureInfoAtCoordinate(coordinate,
223
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
224
+ options) {
219
225
  // eslint-disable-next-line no-console
220
226
  console.error('getFeatureInfoAtCoordinate must be implemented by inheriting layers', this.key);
221
227
  // This layer returns no feature info.