mobility-toolbox-js 3.0.0-beta.8 → 3.0.0-beta.9

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 (81) hide show
  1. package/api/HttpAPI.d.ts +31 -0
  2. package/api/RealtimeAPI.d.ts +359 -0
  3. package/api/RoutingAPI.d.ts +37 -0
  4. package/api/StopsAPI.d.ts +38 -0
  5. package/api/WebSocketAPI.d.ts +153 -0
  6. package/api/index.d.ts +3 -0
  7. package/api/typedefs.d.ts +178 -0
  8. package/common/controls/StopFinderControlCommon.d.ts +53 -0
  9. package/common/index.d.ts +2 -0
  10. package/common/mixins/RealtimeLayerMixin.d.ts +273 -0
  11. package/common/styles/index.d.ts +4 -0
  12. package/common/styles/realtimeDefaultStyle.d.ts +36 -0
  13. package/common/styles/realtimeDelayStyle.d.ts +12 -0
  14. package/common/styles/realtimeHeadingStyle.d.ts +12 -0
  15. package/common/styles/realtimeSimpleStyle.d.ts +4 -0
  16. package/common/typedefs.d.ts +212 -0
  17. package/common/utils/compareDepartures.d.ts +10 -0
  18. package/common/utils/constants.d.ts +5 -0
  19. package/common/utils/createCanvas.d.ts +10 -0
  20. package/common/utils/createDefaultCopyrightElt.d.ts +5 -0
  21. package/common/utils/createDefaultStopFinderElt.d.ts +5 -0
  22. package/common/utils/createRealtimeFilters.d.ts +12 -0
  23. package/common/utils/debounceDeparturesMessages.d.ts +12 -0
  24. package/common/utils/debounceWebsocketMessages.d.ts +11 -0
  25. package/common/utils/getLayersAsFlatArray.d.ts +3 -0
  26. package/common/utils/getMapGlCopyrights.d.ts +17 -0
  27. package/common/utils/getRealtimeModeSuffix.d.ts +9 -0
  28. package/common/utils/getUrlWithParams.d.ts +8 -0
  29. package/common/utils/getVehiclePosition.d.ts +16 -0
  30. package/common/utils/index.d.ts +16 -0
  31. package/common/utils/realtimeConfig.d.ts +64 -0
  32. package/common/utils/removeDuplicate.d.ts +9 -0
  33. package/common/utils/renderTrajectories.d.ts +16 -0
  34. package/common/utils/sortAndFilterDepartures.d.ts +15 -0
  35. package/common/utils/sortByDelay.d.ts +3 -0
  36. package/common/utils/timeUtils.d.ts +23 -0
  37. package/common/utils/toMercatorExtent.d.ts +5 -0
  38. package/iife.d.ts +2 -0
  39. package/index.d.ts +9 -0
  40. package/maplibre/controls/CopyrightControl.d.ts +35 -0
  41. package/maplibre/controls/index.d.ts +1 -0
  42. package/maplibre/index.d.ts +5 -0
  43. package/maplibre/layers/Layer.d.ts +28 -0
  44. package/maplibre/layers/RealtimeLayer.d.ts +160 -0
  45. package/maplibre/layers/index.d.ts +2 -0
  46. package/maplibre/utils/getMercatorResolution.d.ts +7 -0
  47. package/maplibre/utils/getSourceCoordinates.d.ts +7 -0
  48. package/maplibre/utils/index.d.ts +2 -0
  49. package/mbt.js +32 -24
  50. package/mbt.js.map +2 -2
  51. package/mbt.min.js +1 -1
  52. package/mbt.min.js.map +3 -3
  53. package/ol/controls/CopyrightControl.d.ts +31 -0
  54. package/ol/controls/RoutingControl.d.ts +209 -0
  55. package/ol/controls/StopFinderControl.d.ts +37 -0
  56. package/ol/controls/index.d.ts +3 -0
  57. package/ol/index.d.ts +6 -0
  58. package/ol/layers/MapGlLayer.d.ts +144 -0
  59. package/ol/layers/MapGlLayer.js +3 -1
  60. package/ol/layers/MaplibreLayer.d.ts +63 -0
  61. package/ol/layers/MaplibreStyleLayer.d.ts +235 -0
  62. package/ol/layers/MaplibreStyleLayer.js +1 -1
  63. package/ol/layers/RealtimeLayer.d.ts +285 -0
  64. package/ol/layers/RealtimeLayer.js +11 -5
  65. package/ol/layers/index.d.ts +3 -0
  66. package/ol/mixins/MobilityLayerMixin.d.ts +98 -0
  67. package/ol/mixins/MobilityLayerMixin.js +1 -4
  68. package/ol/mixins/PropertiesLayerMixin.d.ts +127 -0
  69. package/ol/mixins/PropertiesLayerMixin.js +5 -4
  70. package/ol/renderers/MaplibreLayerRenderer.d.ts +20 -0
  71. package/ol/renderers/MaplibreStyleLayerRenderer.d.ts +20 -0
  72. package/ol/renderers/RealtimeLayerRenderer.d.ts +22 -0
  73. package/ol/renderers/RealtimeLayerRenderer.js +9 -9
  74. package/ol/styles/fullTrajectoryDelayStyle.d.ts +6 -0
  75. package/ol/styles/fullTrajectoryStyle.d.ts +5 -0
  76. package/ol/styles/index.d.ts +3 -0
  77. package/ol/styles/routingStyle.d.ts +4 -0
  78. package/ol/utils/getFeatureInfoAtCoordinate.d.ts +8 -0
  79. package/ol/utils/index.d.ts +1 -0
  80. package/package.json +1 -1
  81. package/setupTests.d.ts +1 -0
@@ -0,0 +1,160 @@
1
+ import { RealtimeLayerMixinOptions } from '../../common/mixins/RealtimeLayerMixin';
2
+ import Layer, { LayerOptions } from './Layer';
3
+ import type { AnyMapGlMap, ViewState } from '../../types';
4
+ import type { RealtimeTrajectory } from '../../api/typedefs';
5
+ export type RealtimeLayerOptions = LayerOptions & RealtimeLayerMixinOptions;
6
+ declare const RealtimeLayer_base: {
7
+ new (options: RealtimeLayerMixinOptions): {
8
+ [x: string]: any;
9
+ debug: boolean;
10
+ trajectories?: {
11
+ [key: string]: GeoJSONFeature;
12
+ } | undefined;
13
+ canvas?: import("../../types").AnyCanvas | undefined;
14
+ mode: import("../../types").RealtimeMode;
15
+ api: import("../../api/RealtimeAPI").default;
16
+ tenant: string;
17
+ bboxParameters?: {
18
+ [index: string]: string | number | boolean | string[] | number[] | boolean[];
19
+ } | undefined;
20
+ time?: Date | undefined;
21
+ live?: boolean | undefined;
22
+ speed?: number | undefined;
23
+ filter?: Function | undefined;
24
+ sort?: Function | undefined;
25
+ style?: import("../../types").RealtimeStyleFunction | undefined;
26
+ styleOptions?: import("../../types").RealtimeStyleOptions | undefined;
27
+ pixelRatio?: number | undefined;
28
+ minZoomInterpolation: number;
29
+ isUpdateBboxOnMoveEnd: boolean;
30
+ hoverVehicleId?: string | undefined;
31
+ selectedVehicleId?: string | undefined;
32
+ renderState?: import("../../types").RealtimeRenderState | undefined;
33
+ useRequestAnimationFrame?: boolean | undefined;
34
+ useDebounce?: boolean | undefined;
35
+ useThrottle?: boolean | undefined;
36
+ mots?: import("../../types").RealtimeMot[] | undefined;
37
+ motsByZoom: import("../../types").RealtimeMot[][];
38
+ generalizationLevel?: import("../../types").RealtimeGeneralizationLevel | undefined;
39
+ generalizationLevelByZoom: import("../../types").RealtimeGeneralizationLevel[];
40
+ renderTimeIntervalByZoom: number[];
41
+ format: import("ol/format/GeoJSON").default<typeof import("ol/Feature").default>;
42
+ requestId?: number | undefined;
43
+ updateTimeInterval?: number | undefined;
44
+ updateTimeDelay?: number | undefined;
45
+ visibilityRef: import("ol/events").EventsKey;
46
+ selectedVehicle: GeoJSONFeature;
47
+ getMotsByZoom: (zoom: number) => import("../../types").RealtimeMot[];
48
+ getGeneralizationLevelByZoom: (zoom: number) => import("../../types").RealtimeGeneralizationLevel;
49
+ getRenderTimeIntervalByZoom: (zoom: number) => number;
50
+ throttleRenderTrajectories: (viewState: ViewState, noInterpolate?: boolean | undefined) => void;
51
+ debounceRenderTrajectories: (viewState: ViewState, noInterpolate?: boolean | undefined) => void;
52
+ onStart?: ((realtimeLayer: any) => void) | undefined;
53
+ onStop?: ((realtimeLayer: any) => void) | undefined;
54
+ defineProperties(options: RealtimeLayerMixinOptions): void;
55
+ attachToMap(map: any): void;
56
+ detachFromMap(): void;
57
+ start(): void;
58
+ startUpdateTime(): void;
59
+ stop(): void;
60
+ stopUpdateTime(): void;
61
+ renderTrajectoriesInternal(viewState: ViewState, noInterpolate?: boolean): boolean;
62
+ renderTrajectories(viewState: ViewState | undefined, noInterpolate: boolean | undefined): void;
63
+ setBbox(extent: [number, number, number, number], zoom: number): void;
64
+ getRefreshTimeInMs(zoom?: number | undefined): number;
65
+ getVehicle(filterFc: Function): GeoJSONFeature[];
66
+ getFeatureInfoAtCoordinate(coordinate: import("ol/coordinate").Coordinate, options: import("../../types").LayerGetFeatureInfoOptions): Promise<import("../../types").LayerGetFeatureInfoResponse>;
67
+ getTrajectoryInfos(id: string): Promise<{
68
+ stopSequence: import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<import("../../types").RealtimeFullTrajectory> | import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<GeoJSONFeature[]>;
69
+ fullTrajectory: import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<import("../../types").RealtimeFullTrajectory> | import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<GeoJSONFeature[]>;
70
+ }>;
71
+ purgeOutOfDateTrajectories(): void;
72
+ purgeTrajectory(trajectory: GeoJSONFeature, extent: [number, number, number, number], zoom: number): boolean;
73
+ addTrajectory(trajectory: GeoJSONFeature): void;
74
+ removeTrajectory(trajectoryOrId: any): void;
75
+ onZoomEnd(): void;
76
+ onDocumentVisibilityChange(): void;
77
+ onTrajectoryMessage(data: import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<GeoJSONFeature>): void;
78
+ onDeleteTrajectoryMessage(data: import("../../api/WebSocketAPI").WebSocketAPIMessageEventData<string>): void;
79
+ highlightVehicle(id: string): void;
80
+ selectVehicle(id: string): void;
81
+ };
82
+ } & typeof Layer;
83
+ /**
84
+ * Responsible for loading and display data from a geOps realtime API.
85
+ *
86
+ * @example
87
+ * import { RealtimeLayer } from 'mobility-toolbox-js/Maplibre';
88
+ *
89
+ * const layer = new RealtimeLayer({
90
+ * apiKey: "yourApiKey"
91
+ * // url: "wss://api.geops.io/tracker-ws/v1/",
92
+ * });
93
+ *
94
+ *
95
+ * @see <a href="/api/class/src/api/RealtimeAPI%20js~RealtimeAPI%20html">RealtimeAPI</a>
96
+ *
97
+ * @implements {maplibregl.CustomLayer}
98
+ * @extends {maplibregl.Evented}
99
+ * @public
100
+ */
101
+ declare class RealtimeLayer extends RealtimeLayer_base {
102
+ /**
103
+ * Constructor.
104
+ *
105
+ * @param {RealtimeLayerOptions} options
106
+ * @param {string} options.apiKey Access key for [geOps apis](https://developer.geops.io/).
107
+ * @param {string} [options.url="wss://api.geops.io/tracker-ws/v1/"] The geOps realtime API url.
108
+ *
109
+ */
110
+ constructor(options?: {});
111
+ /**
112
+ * Add sources, layers and listeners to the map.
113
+ */
114
+ onAdd(map: AnyMapGlMap, gl: WebGLRenderingContext | WebGL2RenderingContext): void;
115
+ /**
116
+ * Remove source, layers and listeners from the map.
117
+ */
118
+ onRemove(map: AnyMapGlMap, gl: WebGLRenderingContext | WebGL2RenderingContext): void;
119
+ onLoad(): void;
120
+ /**
121
+ * Start updating vehicles position.
122
+ *
123
+ * @public
124
+ */
125
+ start(): void;
126
+ /**
127
+ * Stop updating vehicles position.
128
+ *
129
+ * @public
130
+ */
131
+ stop(): void;
132
+ /**
133
+ * Render the trajectories using current map's size, resolution and rotation.
134
+ * @param {boolean} noInterpolate if true, renders the vehicles without interpolating theirs positions.
135
+ * @private
136
+ */
137
+ renderTrajectories(noInterpolate?: boolean): void;
138
+ /**
139
+ * Return the delay in ms before the next rendering.
140
+ */
141
+ getRefreshTimeInMs(): number;
142
+ /**
143
+ * Remove the trajectory form the list if necessary.
144
+ */
145
+ purgeTrajectory(trajectory: RealtimeTrajectory, extent: [number, number, number, number], zoom: number): boolean;
146
+ /**
147
+ * Send the current bbox to the websocket
148
+ */
149
+ setBbox(extent?: [number, number, number, number], zoom?: number): void;
150
+ renderTrajectoriesInternal(viewState: ViewState, noInterpolate?: boolean): boolean;
151
+ /**
152
+ * Callback on 'move' event.
153
+ */
154
+ onMove(): void;
155
+ /**
156
+ * Callback on 'moveend' event.
157
+ */
158
+ onMoveEnd(): void;
159
+ }
160
+ export default RealtimeLayer;
@@ -0,0 +1,2 @@
1
+ export { default as Layer } from "./Layer";
2
+ export { default as RealtimeLayer } from "./RealtimeLayer";
@@ -0,0 +1,7 @@
1
+ import { AnyMapGlMap } from '../../types';
2
+ /**
3
+ * Get the current resolution of a Maplibre map.
4
+ * @param {maplibregl.Map} map A map object.
5
+ */
6
+ declare const getMercatorResolution: (map: AnyMapGlMap) => number;
7
+ export default getMercatorResolution;
@@ -0,0 +1,7 @@
1
+ import { AnyMapGlMap } from '../../types';
2
+ /**
3
+ * Get the canvas source coordinates of the current map's extent.
4
+ * @param {maplibregl.Map} map A map object.
5
+ */
6
+ export declare const getSourceCoordinates: (map: AnyMapGlMap, pixelRatio?: number) => number[][];
7
+ export default getSourceCoordinates;
@@ -0,0 +1,2 @@
1
+ export { default as getSourceCoordinates } from "./getSourceCoordinates";
2
+ export { default as getMercatorResolution } from "./getMercatorResolution";
package/mbt.js CHANGED
@@ -45447,8 +45447,9 @@ uniform ${i3} ${s3} u_${a3};
45447
45447
 
45448
45448
  // src/ol/mixins/PropertiesLayerMixin.ts
45449
45449
  function PropertiesLayerMixin(Base) {
45450
- return class extends Base {
45451
- constructor(options) {
45450
+ return class PropertiesLayer extends Base {
45451
+ constructor(...args) {
45452
+ const options = args[0];
45452
45453
  super(options);
45453
45454
  this.options = {};
45454
45455
  this.olListenersKeys = [];
@@ -45532,6 +45533,7 @@ uniform ${i3} ${s3} u_${a3};
45532
45533
  set visible(newValue) {
45533
45534
  this.setVisible(newValue);
45534
45535
  }
45536
+ // @ts-expect-error - this is a mixin
45535
45537
  setMapInternal(map) {
45536
45538
  super.setMapInternal(map);
45537
45539
  if (map) {
@@ -45583,10 +45585,10 @@ uniform ${i3} ${s3} u_${a3};
45583
45585
 
45584
45586
  // src/ol/mixins/MobilityLayerMixin.ts
45585
45587
  function MobilityLayerMixin(Base) {
45586
- return class extends PropertiesLayerMixin_default(Base) {
45587
- constructor(options = {}) {
45588
- super(options);
45589
- }
45588
+ return class MobilityLayer extends PropertiesLayerMixin_default(Base) {
45589
+ // constructor(options: MobilityLayerOptions = {}) {
45590
+ // super(options);
45591
+ // }
45590
45592
  };
45591
45593
  }
45592
45594
  var MobilityLayerMixin_default = MobilityLayerMixin;
@@ -45634,6 +45636,7 @@ uniform ${i3} ${s3} u_${a3};
45634
45636
  style: "travic_v2",
45635
45637
  url: "https://maps.geops.io",
45636
45638
  ...options || {},
45639
+ // @ts-expect-error mapOptions must be saved by the mixin in this.options
45637
45640
  mapOptions: {
45638
45641
  interactive: false,
45639
45642
  trackResize: false,
@@ -46072,7 +46075,7 @@ uniform ${i3} ${s3} u_${a3};
46072
46075
  }
46073
46076
  }
46074
46077
  this.olListenersKeys.push(
46075
- // @ts-expect-error 'load' is a custom event form mobility-toolbox-js
46078
+ // @ts-expect-error 'load' is a custom event
46076
46079
  this.maplibreLayer.on("load", this.onLoad.bind(this)),
46077
46080
  this.on("change:visible", (evt) => {
46078
46081
  this.applyLayoutVisibility(evt);
@@ -47230,7 +47233,7 @@ uniform ${i3} ${s3} u_${a3};
47230
47233
  this.container.style.position = "absolute";
47231
47234
  this.container.style.width = "100%";
47232
47235
  this.container.style.height = "100%";
47233
- if (canvas2) {
47236
+ if (canvas2 instanceof HTMLCanvasElement) {
47234
47237
  canvas2.style.position = "absolute";
47235
47238
  canvas2.style.top = "0";
47236
47239
  canvas2.style.left = "0";
@@ -47254,17 +47257,20 @@ uniform ${i3} ${s3} u_${a3};
47254
47257
  canvas2?.height
47255
47258
  );
47256
47259
  } else {
47257
- const pixelCenterRendered = this.getLayer().getMapInternal()?.getPixelFromCoordinate(renderedCenter);
47258
- const pixelCenter = this.getLayer().getMapInternal().getPixelFromCoordinate(center);
47259
- this.container.style.transform = composeCssTransform(
47260
- pixelCenterRendered[0] - pixelCenter[0],
47261
- pixelCenterRendered[1] - pixelCenter[1],
47262
- renderedResolution / resolution,
47263
- renderedResolution / resolution,
47264
- rotation - renderedRotation,
47265
- 0,
47266
- 0
47267
- );
47260
+ const map = this.getLayer().getMapInternal();
47261
+ const pixelCenterRendered = map?.getPixelFromCoordinate(renderedCenter);
47262
+ const pixelCenter = map?.getPixelFromCoordinate(center);
47263
+ if (pixelCenterRendered && pixelCenter) {
47264
+ this.container.style.transform = composeCssTransform(
47265
+ pixelCenterRendered[0] - pixelCenter[0],
47266
+ pixelCenterRendered[1] - pixelCenter[1],
47267
+ renderedResolution / resolution,
47268
+ renderedResolution / resolution,
47269
+ rotation - renderedRotation,
47270
+ 0,
47271
+ 0
47272
+ );
47273
+ }
47268
47274
  }
47269
47275
  }
47270
47276
  return this.container;
@@ -47305,7 +47311,7 @@ uniform ${i3} ${s3} u_${a3};
47305
47311
  }
47306
47312
  const layer = this.getLayer();
47307
47313
  const map = layer.getMapInternal();
47308
- const resolution = map.getView().getResolution();
47314
+ const resolution = map?.getView()?.getResolution() || 1;
47309
47315
  const nb = 10;
47310
47316
  const ext = buffer(
47311
47317
  [...coordinate, ...coordinate],
@@ -47392,6 +47398,7 @@ uniform ${i3} ${s3} u_${a3};
47392
47398
  this.olListenersKeys.push(
47393
47399
  ...this.map.on(
47394
47400
  ["moveend", "change:target"],
47401
+ // @ts-expect-error - bad ol definitions
47395
47402
  (evt) => {
47396
47403
  const view = (evt.map || evt.target).getView();
47397
47404
  if (view.getAnimating() || view.getInteracting()) {
@@ -47472,8 +47479,9 @@ uniform ${i3} ${s3} u_${a3};
47472
47479
  isRendered = blockRendering ? false : super.renderTrajectoriesInternal(viewState, noInterpolate);
47473
47480
  if (isRendered) {
47474
47481
  this.renderedViewState = { ...viewState };
47475
- if (this.getRenderer().container) {
47476
- this.getRenderer().container.style.transform = "";
47482
+ const { container } = this.getRenderer();
47483
+ if (container) {
47484
+ container.style.transform = "";
47477
47485
  }
47478
47486
  }
47479
47487
  return isRendered;
@@ -47565,7 +47573,7 @@ uniform ${i3} ${s3} u_${a3};
47565
47573
  return super.purgeTrajectory(
47566
47574
  trajectory,
47567
47575
  extent || this.map.getView().calculateExtent(),
47568
- zoom || this.map.getView().getZoom()
47576
+ zoom || this.map.getView().getZoom() || 0
47569
47577
  );
47570
47578
  }
47571
47579
  /**
@@ -47576,7 +47584,7 @@ uniform ${i3} ${s3} u_${a3};
47576
47584
  setBbox(extent, zoom) {
47577
47585
  super.setBbox(
47578
47586
  extent || this.map.getView().calculateExtent(),
47579
- zoom || this.map.getView().getZoom()
47587
+ zoom || this.map.getView().getZoom() || 0
47580
47588
  );
47581
47589
  }
47582
47590
  /**