mobility-toolbox-js 3.0.0-beta.7 → 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 (88) hide show
  1. package/api/HttpAPI.d.ts +31 -0
  2. package/api/RealtimeAPI.d.ts +359 -0
  3. package/api/RealtimeAPI.js +96 -89
  4. package/api/RoutingAPI.d.ts +37 -0
  5. package/api/StopsAPI.d.ts +38 -0
  6. package/api/WebSocketAPI.d.ts +153 -0
  7. package/api/index.d.ts +3 -0
  8. package/api/typedefs.d.ts +178 -0
  9. package/common/controls/StopFinderControlCommon.d.ts +53 -0
  10. package/common/index.d.ts +2 -0
  11. package/common/mixins/RealtimeLayerMixin.d.ts +273 -0
  12. package/common/styles/index.d.ts +4 -0
  13. package/common/styles/realtimeDefaultStyle.d.ts +36 -0
  14. package/common/styles/realtimeDelayStyle.d.ts +12 -0
  15. package/common/styles/realtimeHeadingStyle.d.ts +12 -0
  16. package/common/styles/realtimeSimpleStyle.d.ts +4 -0
  17. package/common/typedefs.d.ts +212 -0
  18. package/common/utils/compareDepartures.d.ts +10 -0
  19. package/common/utils/constants.d.ts +5 -0
  20. package/common/utils/createCanvas.d.ts +10 -0
  21. package/common/utils/createDefaultCopyrightElt.d.ts +5 -0
  22. package/common/utils/createDefaultStopFinderElt.d.ts +5 -0
  23. package/common/utils/createRealtimeFilters.d.ts +12 -0
  24. package/common/utils/debounceDeparturesMessages.d.ts +12 -0
  25. package/common/utils/debounceWebsocketMessages.d.ts +11 -0
  26. package/common/utils/getLayersAsFlatArray.d.ts +3 -0
  27. package/common/utils/getLayersAsFlatArray.js +5 -1
  28. package/common/utils/getMapGlCopyrights.d.ts +17 -0
  29. package/common/utils/getRealtimeModeSuffix.d.ts +9 -0
  30. package/common/utils/getUrlWithParams.d.ts +8 -0
  31. package/common/utils/getVehiclePosition.d.ts +16 -0
  32. package/common/utils/index.d.ts +16 -0
  33. package/common/utils/realtimeConfig.d.ts +64 -0
  34. package/common/utils/removeDuplicate.d.ts +9 -0
  35. package/common/utils/renderTrajectories.d.ts +16 -0
  36. package/common/utils/sortAndFilterDepartures.d.ts +15 -0
  37. package/common/utils/sortByDelay.d.ts +3 -0
  38. package/common/utils/timeUtils.d.ts +23 -0
  39. package/common/utils/toMercatorExtent.d.ts +5 -0
  40. package/iife.d.ts +2 -0
  41. package/index.d.ts +9 -0
  42. package/maplibre/controls/CopyrightControl.d.ts +35 -0
  43. package/maplibre/controls/index.d.ts +1 -0
  44. package/maplibre/index.d.ts +5 -0
  45. package/maplibre/layers/Layer.d.ts +28 -0
  46. package/maplibre/layers/RealtimeLayer.d.ts +160 -0
  47. package/maplibre/layers/RealtimeLayer.js +2 -2
  48. package/maplibre/layers/index.d.ts +2 -0
  49. package/maplibre/utils/getMercatorResolution.d.ts +7 -0
  50. package/maplibre/utils/getSourceCoordinates.d.ts +7 -0
  51. package/maplibre/utils/index.d.ts +2 -0
  52. package/mbt.js +137 -114
  53. package/mbt.js.map +3 -3
  54. package/mbt.min.js +13 -13
  55. package/mbt.min.js.map +3 -3
  56. package/ol/controls/CopyrightControl.d.ts +31 -0
  57. package/ol/controls/CopyrightControl.js +18 -8
  58. package/ol/controls/RoutingControl.d.ts +209 -0
  59. package/ol/controls/RoutingControl.js +3 -0
  60. package/ol/controls/StopFinderControl.d.ts +37 -0
  61. package/ol/controls/StopFinderControl.js +3 -0
  62. package/ol/controls/index.d.ts +3 -0
  63. package/ol/index.d.ts +6 -0
  64. package/ol/layers/MapGlLayer.d.ts +144 -0
  65. package/ol/layers/MapGlLayer.js +3 -1
  66. package/ol/layers/MaplibreLayer.d.ts +63 -0
  67. package/ol/layers/MaplibreStyleLayer.d.ts +235 -0
  68. package/ol/layers/MaplibreStyleLayer.js +1 -1
  69. package/ol/layers/RealtimeLayer.d.ts +285 -0
  70. package/ol/layers/RealtimeLayer.js +13 -7
  71. package/ol/layers/index.d.ts +3 -0
  72. package/ol/mixins/MobilityLayerMixin.d.ts +98 -0
  73. package/ol/mixins/MobilityLayerMixin.js +1 -4
  74. package/ol/mixins/PropertiesLayerMixin.d.ts +127 -0
  75. package/ol/mixins/PropertiesLayerMixin.js +5 -4
  76. package/ol/renderers/MaplibreLayerRenderer.d.ts +20 -0
  77. package/ol/renderers/MaplibreStyleLayerRenderer.d.ts +20 -0
  78. package/ol/renderers/RealtimeLayerRenderer.d.ts +22 -0
  79. package/ol/renderers/RealtimeLayerRenderer.js +9 -9
  80. package/ol/styles/fullTrajectoryDelayStyle.d.ts +6 -0
  81. package/ol/styles/fullTrajectoryStyle.d.ts +5 -0
  82. package/ol/styles/index.d.ts +3 -0
  83. package/ol/styles/routingStyle.d.ts +4 -0
  84. package/ol/utils/getFeatureInfoAtCoordinate.d.ts +8 -0
  85. package/ol/utils/getFeatureInfoAtCoordinate.js +1 -1
  86. package/ol/utils/index.d.ts +1 -0
  87. package/package.json +1 -1
  88. package/setupTests.d.ts +1 -0
@@ -0,0 +1,235 @@
1
+ import { Feature, Map } from 'ol';
2
+ import { Coordinate } from 'ol/coordinate';
3
+ import { ObjectEvent } from 'ol/Object';
4
+ import { Layer } from 'ol/layer';
5
+ import { Source } from 'ol/source';
6
+ import { LayerGetFeatureInfoResponse } from '../../types';
7
+ import { FilterFunction } from '../../common/typedefs';
8
+ import MaplibreLayer, { MaplibreLayerOptions } from './MaplibreLayer';
9
+ import MaplibreStyleLayerRenderer from '../renderers/MaplibreStyleLayerRenderer';
10
+ export type MaplibreStyleLayerOptions = MaplibreLayerOptions & {
11
+ beforeId?: string;
12
+ maplibreLayer?: MaplibreLayer;
13
+ layers?: maplibregl.AddLayerObject[];
14
+ layersFilter?: FilterFunction;
15
+ queryRenderedLayersFilter?: FilterFunction;
16
+ };
17
+ declare const MaplibreStyleLayer_base: {
18
+ new (...args: any[]): {
19
+ options?: import("../mixins/PropertiesLayerMixin").PropertiesLayerMixinOptions | undefined;
20
+ olListenersKeys: import("ol/events").EventsKey[];
21
+ children: Layer<Source, import("ol/renderer/Layer").default<any>>[];
22
+ get copyrights(): string;
23
+ set copyrights(newCopyrights: string | string[]);
24
+ disabled: boolean;
25
+ readonly group: string;
26
+ readonly hitTolerance: boolean;
27
+ readonly key: string;
28
+ readonly map: Map;
29
+ readonly name: string;
30
+ olLayer: Layer<Source, import("ol/renderer/Layer").default<any>>;
31
+ parent: Layer<Source, import("ol/renderer/Layer").default<any>>;
32
+ visible: boolean;
33
+ setMapInternal: ((map: Map) => void) & ((map: Map | null) => void);
34
+ onChildrenChange(oldValue: Layer<Source, import("ol/renderer/Layer").default<any>>[]): void;
35
+ attachToMap(map: Map): void;
36
+ detachFromMap(): void;
37
+ flat(): any[];
38
+ addEventListener: (type: string, listener: import("ol/events").Listener) => void;
39
+ removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
40
+ on: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
41
+ render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
42
+ once: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
43
+ un: import("ol/layer/Layer").LayerOnSignature<void>;
44
+ getSource: () => Source | null;
45
+ getRenderSource: () => Source | null;
46
+ getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<import("ol/Feature").FeatureLike[]>;
47
+ getData: (pixel: import("ol/pixel").Pixel) => Float32Array | Uint8ClampedArray | Uint8Array | DataView | null;
48
+ isVisible: (view?: import("ol/View").default | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
49
+ getAttributions: (view?: import("ol/View").default | import("ol/View").ViewStateLayerStateExtent | undefined) => string[];
50
+ unrender: () => void;
51
+ getDeclutter: () => string;
52
+ renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
53
+ renderDeferred: (frameState: import("ol/Map").FrameState) => void;
54
+ getMapInternal: () => Map | null;
55
+ setMap: (map: Map | null) => void;
56
+ setSource: (source: Source | null) => void;
57
+ getRenderer: () => import("ol/renderer/Layer").default<any> | null;
58
+ hasRenderer: () => boolean;
59
+ getBackground: () => false | import("ol/layer/Base").BackgroundColor;
60
+ getClassName: () => string;
61
+ getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
62
+ getLayersArray: (array?: Layer<Source, import("ol/renderer/Layer").default<any>>[] | undefined) => Layer<Source, import("ol/renderer/Layer").default<any>>[];
63
+ getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => import("ol/layer/Layer").State[];
64
+ getExtent: () => import("ol/extent").Extent | undefined;
65
+ getMaxResolution: () => number;
66
+ getMinResolution: () => number;
67
+ getMinZoom: () => number;
68
+ getMaxZoom: () => number;
69
+ getOpacity: () => number;
70
+ getSourceState: () => import("ol/source/Source").State;
71
+ getVisible: () => boolean;
72
+ getZIndex: () => number | undefined;
73
+ setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
74
+ setExtent: (extent: import("ol/extent").Extent | undefined) => void;
75
+ setMaxResolution: (maxResolution: number) => void;
76
+ setMinResolution: (minResolution: number) => void;
77
+ setMaxZoom: (maxZoom: number) => void;
78
+ setMinZoom: (minZoom: number) => void;
79
+ setOpacity: (opacity: number) => void;
80
+ setVisible: (visible: boolean) => void;
81
+ setZIndex: (zindex: number) => void;
82
+ get: (key: string) => any;
83
+ getKeys: () => string[];
84
+ getProperties: () => {
85
+ [x: string]: any;
86
+ };
87
+ getPropertiesInternal: () => {
88
+ [x: string]: any;
89
+ } | null;
90
+ hasProperties: () => boolean;
91
+ notify: (key: string, oldValue: any) => void;
92
+ addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
93
+ removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
94
+ set: (key: string, value: any, silent?: boolean | undefined) => void;
95
+ setProperties: (values: {
96
+ [x: string]: any;
97
+ }, silent?: boolean | undefined) => void;
98
+ unset: (key: string, silent?: boolean | undefined) => void;
99
+ changed: () => void;
100
+ getRevision: () => number;
101
+ dispatchEvent: (event: string | import("ol/events/Event").default) => boolean | undefined;
102
+ getListeners: (type: string) => import("ol/events").Listener[] | undefined;
103
+ hasListener: (type?: string | undefined) => boolean;
104
+ dispose: () => void;
105
+ };
106
+ } & typeof Layer;
107
+ /**
108
+ * Layer for visualizing a specific set of layer from a MapboxLayer.
109
+ *
110
+ * @example
111
+ * import { MapboxLayer, MapboxStyleLayer } from 'mobility-toolbox-js/ol';
112
+ *
113
+ * const maplibreLayer = new MapboxLayer({
114
+ * url: 'https://maps.geops.io/styles/travic_v2/style.json?key=[yourApiKey]',
115
+ * });
116
+ *
117
+ * const layer = new MapboxStyleLayer({
118
+ * maplibreLayer: maplibreLayer,
119
+ * styleLayersFilter: () => {},
120
+ * });
121
+ *
122
+ * @classproperty {ol/Map~Map} map - The map where the layer is displayed.
123
+ * @extends {ol/layer/Layer~Layer}
124
+ */
125
+ declare class MaplibreStyleLayer extends MaplibreStyleLayer_base {
126
+ highlightedFeatures: Feature[];
127
+ selectedFeatures: Feature[];
128
+ get beforeId(): string;
129
+ set beforeId(newValue: string[]);
130
+ get layers(): maplibregl.AddLayerObject[];
131
+ set layers(newValue: maplibregl.AddLayerObject[]);
132
+ get layersFilter(): (layer: maplibregl.LayerSpecification) => boolean;
133
+ set layersFilter(newValue: (layer: maplibregl.LayerSpecification) => boolean);
134
+ get mapboxLayer(): MaplibreLayer | undefined;
135
+ get maplibreLayer(): MaplibreLayer;
136
+ set maplibreLayer(newValue: MaplibreLayer);
137
+ get queryRenderedLayersFilter(): (layer: maplibregl.LayerSpecification) => boolean;
138
+ set queryRenderedLayersFilter(newValue: (layer: maplibregl.LayerSpecification) => boolean);
139
+ get sources(): {
140
+ [key: string]: maplibregl.SourceSpecification;
141
+ };
142
+ set sources(newValue: {
143
+ [key: string]: maplibregl.SourceSpecification;
144
+ });
145
+ /**
146
+ * @deprecated
147
+ */
148
+ get styleLayer(): maplibregl.AddLayerObject;
149
+ /**
150
+ * @deprecated
151
+ */
152
+ set styleLayer(newValue: maplibregl.AddLayerObject);
153
+ /**
154
+ * @deprecated
155
+ */
156
+ get styleLayers(): maplibregl.AddLayerObject[];
157
+ /**
158
+ * @deprecated
159
+ */
160
+ set styleLayers(newValue: maplibregl.AddLayerObject[]);
161
+ /**
162
+ * Constructor.
163
+ *
164
+ * @param {Object} options
165
+ * @param {MapboxLayer} [options.maplibreLayer] The MaplibreLayer to use.
166
+ * @param {maplibregl.SourceSpecification[]} [options.sources] The source to add to the style on load.
167
+ * @param {maplibregl.AddLayerObject[]} [options.layers] The layers to add to the style on load.
168
+ * @param {FilterFunction} [options.layersFilter] Filter function to decide which style layer to apply visiblity on. If not provided, the 'layers' property is used.
169
+ * @param {FilterFunction} [options.queryRenderedLayersFilter] Filter function to decide which style layer are available for query.
170
+ */
171
+ constructor(options: MaplibreStyleLayerOptions);
172
+ createRenderer(): MaplibreStyleLayerRenderer;
173
+ /**
174
+ * Initialize the layer.
175
+ * @param {ol/Map~Map} map the Maplibre map.
176
+ * @override
177
+ */
178
+ attachToMap(map: Map): void;
179
+ /**
180
+ * Terminate the layer.
181
+ * @override
182
+ */
183
+ detachFromMap(): void;
184
+ /** @private */
185
+ addSources(): void;
186
+ /** @private */
187
+ removeSources(): void;
188
+ /** @private */
189
+ addLayers(): void;
190
+ /** @private */
191
+ removeLayers(): void;
192
+ /**
193
+ * On Maplibre map load callback function. Add style layers and dynaimc filters.
194
+ * @private
195
+ */
196
+ onLoad(): void;
197
+ /**
198
+ * Request feature information for a given coordinate.
199
+ * @param {ol/coordinate~Coordinate} coordinate Coordinate to request the information at.
200
+ * @return {Promise<FeatureInfo>} Promise with features, layer and coordinate.
201
+ */
202
+ getFeatureInfoAtCoordinate(coordinate: Coordinate): Promise<LayerGetFeatureInfoResponse>;
203
+ /**
204
+ * Set if features are hovered or not.
205
+ * @param {Array<ol/Feature~Feature>} features
206
+ * @param {boolean} state Is the feature hovered
207
+ * @private
208
+ */
209
+ setHoverState(features: Feature[], state: boolean): void;
210
+ /**
211
+ * Select a list of features.
212
+ * @param {Array<ol/Feature~Feature>} [features=[]] Features to select.
213
+ * @private
214
+ */
215
+ select(features?: Feature[]): void;
216
+ /**
217
+ * Highlight a list of features.
218
+ * @param {Array<ol/Feature~Feature>} [features=[]] Features to highlight.
219
+ * @private
220
+ */
221
+ highlight(features?: Feature[]): void;
222
+ /**
223
+ * Apply visibility to style layers that fits the styleLayersFilter function.
224
+ *
225
+ * @private
226
+ */
227
+ applyLayoutVisibility(evt?: ObjectEvent): void;
228
+ /**
229
+ * Create a copy of the MapboxStyleLayer.
230
+ * @param {Object} newOptions Options to override.
231
+ * @return {MapboxStyleLayer} A MapboxStyleLayer.
232
+ */
233
+ clone(newOptions: MaplibreStyleLayerOptions): MaplibreStyleLayer;
234
+ }
235
+ export default MaplibreStyleLayer;
@@ -159,7 +159,7 @@ class MaplibreStyleLayer extends MobilityLayerMixin(Layer) {
159
159
  }
160
160
  // Apply the visibiltity when layer's visibility change.
161
161
  this.olListenersKeys.push(
162
- // @ts-expect-error 'load' is a custom event form mobility-toolbox-js
162
+ // @ts-expect-error 'load' is a custom event
163
163
  this.maplibreLayer.on('load', this.onLoad.bind(this)), this.on('change:visible', (evt) => {
164
164
  // Once the map is loaded we can apply visiblity without waiting
165
165
  // the style. Maplibre take care of the application of style changes.
@@ -0,0 +1,285 @@
1
+ import GeoJSON from 'ol/format/GeoJSON';
2
+ import Source from 'ol/source/Source';
3
+ import Feature, { FeatureLike } from 'ol/Feature';
4
+ import { Map, MapEvent } from 'ol';
5
+ import { ObjectEvent } from 'ol/Object';
6
+ import Layer from 'ol/layer/Layer';
7
+ import { RealtimeLayerMixinOptions } from '../../common/mixins/RealtimeLayerMixin';
8
+ import { RealtimeFullTrajectory, RealtimeTrainId, ViewState } from '../../types';
9
+ import { RealtimeTrajectory } from '../../api/typedefs';
10
+ import { WebSocketAPIMessageEventData } from '../../api/WebSocketAPI';
11
+ import RealtimeLayerRenderer from '../renderers/RealtimeLayerRenderer';
12
+ export type RealtimeLayerOptions = RealtimeLayerMixinOptions & {
13
+ fullTrajectoryStyle?: (feature: FeatureLike, resolution: number, options: any) => void;
14
+ allowRenderWhenAnimating?: boolean;
15
+ };
16
+ declare const RealtimeLayer_base: {
17
+ new (options: RealtimeLayerMixinOptions): {
18
+ [x: string]: any;
19
+ debug: boolean;
20
+ trajectories?: {
21
+ [key: string]: GeoJSONFeature;
22
+ } | undefined;
23
+ canvas?: import("../../types").AnyCanvas | undefined;
24
+ mode: import("../../types").RealtimeMode;
25
+ api: import("../../api/RealtimeAPI").default;
26
+ tenant: string;
27
+ bboxParameters?: {
28
+ [index: string]: string | number | boolean | string[] | number[] | boolean[];
29
+ } | undefined;
30
+ time?: Date | undefined;
31
+ live?: boolean | undefined;
32
+ speed?: number | undefined;
33
+ filter?: Function | undefined;
34
+ sort?: Function | undefined;
35
+ style?: import("../../types").RealtimeStyleFunction | undefined;
36
+ styleOptions?: import("../../types").RealtimeStyleOptions | undefined;
37
+ pixelRatio?: number | undefined;
38
+ minZoomInterpolation: number;
39
+ isUpdateBboxOnMoveEnd: boolean;
40
+ hoverVehicleId?: string | undefined;
41
+ selectedVehicleId?: string | undefined;
42
+ renderState?: import("../../types").RealtimeRenderState | undefined;
43
+ useRequestAnimationFrame?: boolean | undefined;
44
+ useDebounce?: boolean | undefined;
45
+ useThrottle?: boolean | undefined;
46
+ mots?: import("../../types").RealtimeMot[] | undefined;
47
+ motsByZoom: import("../../types").RealtimeMot[][];
48
+ generalizationLevel?: import("../../types").RealtimeGeneralizationLevel | undefined;
49
+ generalizationLevelByZoom: import("../../types").RealtimeGeneralizationLevel[];
50
+ renderTimeIntervalByZoom: number[];
51
+ format: GeoJSON<typeof Feature>;
52
+ requestId?: number | undefined;
53
+ updateTimeInterval?: number | undefined;
54
+ updateTimeDelay?: number | undefined;
55
+ visibilityRef: import("ol/events").EventsKey;
56
+ selectedVehicle: GeoJSONFeature;
57
+ getMotsByZoom: (zoom: number) => import("../../types").RealtimeMot[];
58
+ getGeneralizationLevelByZoom: (zoom: number) => import("../../types").RealtimeGeneralizationLevel;
59
+ getRenderTimeIntervalByZoom: (zoom: number) => number;
60
+ throttleRenderTrajectories: (viewState: ViewState, noInterpolate?: boolean | undefined) => void;
61
+ debounceRenderTrajectories: (viewState: ViewState, noInterpolate?: boolean | undefined) => void;
62
+ onStart?: ((realtimeLayer: any) => void) | undefined;
63
+ onStop?: ((realtimeLayer: any) => void) | undefined;
64
+ defineProperties(options: RealtimeLayerMixinOptions): void;
65
+ attachToMap(map: any): void;
66
+ detachFromMap(): void;
67
+ start(): void;
68
+ startUpdateTime(): void;
69
+ stop(): void;
70
+ stopUpdateTime(): void;
71
+ renderTrajectoriesInternal(viewState: ViewState, noInterpolate?: boolean): boolean;
72
+ renderTrajectories(viewState: ViewState | undefined, noInterpolate: boolean | undefined): void;
73
+ setBbox(extent: [number, number, number, number], zoom: number): void;
74
+ getRefreshTimeInMs(zoom?: number | undefined): number;
75
+ getVehicle(filterFc: Function): GeoJSONFeature[];
76
+ getFeatureInfoAtCoordinate(coordinate: import("ol/coordinate").Coordinate, options: import("../../types").LayerGetFeatureInfoOptions): Promise<import("../../types").LayerGetFeatureInfoResponse>;
77
+ getTrajectoryInfos(id: string): Promise<{
78
+ stopSequence: WebSocketAPIMessageEventData<RealtimeFullTrajectory> | WebSocketAPIMessageEventData<GeoJSONFeature[]>;
79
+ fullTrajectory: WebSocketAPIMessageEventData<RealtimeFullTrajectory> | WebSocketAPIMessageEventData<GeoJSONFeature[]>;
80
+ }>;
81
+ purgeOutOfDateTrajectories(): void;
82
+ purgeTrajectory(trajectory: GeoJSONFeature, extent: [number, number, number, number], zoom: number): boolean;
83
+ addTrajectory(trajectory: GeoJSONFeature): void;
84
+ removeTrajectory(trajectoryOrId: any): void;
85
+ onZoomEnd(): void;
86
+ onDocumentVisibilityChange(): void;
87
+ onTrajectoryMessage(data: WebSocketAPIMessageEventData<GeoJSONFeature>): void;
88
+ onDeleteTrajectoryMessage(data: WebSocketAPIMessageEventData<string>): void;
89
+ highlightVehicle(id: string): void;
90
+ selectVehicle(id: string): void;
91
+ };
92
+ } & {
93
+ new (...args: any[]): {
94
+ options?: import("../mixins/PropertiesLayerMixin").PropertiesLayerMixinOptions | undefined;
95
+ olListenersKeys: import("ol/events").EventsKey[];
96
+ children: Layer<Source, import("ol/renderer/Layer").default<any>>[];
97
+ get copyrights(): string;
98
+ set copyrights(newCopyrights: string | string[]);
99
+ disabled: boolean;
100
+ readonly group: string;
101
+ readonly hitTolerance: boolean;
102
+ readonly key: string;
103
+ readonly map: Map;
104
+ readonly name: string;
105
+ olLayer: Layer<Source, import("ol/renderer/Layer").default<any>>;
106
+ parent: Layer<Source, import("ol/renderer/Layer").default<any>>;
107
+ visible: boolean;
108
+ setMapInternal: ((map: Map) => void) & ((map: Map | null) => void);
109
+ onChildrenChange(oldValue: Layer<Source, import("ol/renderer/Layer").default<any>>[]): void;
110
+ attachToMap(map: Map): void;
111
+ detachFromMap(): void;
112
+ flat(): any[];
113
+ addEventListener: (type: string, listener: import("ol/events").Listener) => void;
114
+ removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
115
+ on: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
116
+ render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
117
+ once: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
118
+ un: import("ol/layer/Layer").LayerOnSignature<void>;
119
+ getSource: () => Source | null;
120
+ getRenderSource: () => Source | null;
121
+ getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<FeatureLike[]>;
122
+ getData: (pixel: import("ol/pixel").Pixel) => Float32Array | Uint8ClampedArray | Uint8Array | DataView | null;
123
+ isVisible: (view?: import("ol/View").default | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
124
+ getAttributions: (view?: import("ol/View").default | import("ol/View").ViewStateLayerStateExtent | undefined) => string[];
125
+ unrender: () => void;
126
+ getDeclutter: () => string;
127
+ renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
128
+ renderDeferred: (frameState: import("ol/Map").FrameState) => void;
129
+ getMapInternal: () => Map | null;
130
+ setMap: (map: Map | null) => void;
131
+ setSource: (source: Source | null) => void;
132
+ getRenderer: () => import("ol/renderer/Layer").default<any> | null;
133
+ hasRenderer: () => boolean;
134
+ getBackground: () => false | import("ol/layer/Base").BackgroundColor;
135
+ getClassName: () => string;
136
+ getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
137
+ getLayersArray: (array?: Layer<Source, import("ol/renderer/Layer").default<any>>[] | undefined) => Layer<Source, import("ol/renderer/Layer").default<any>>[];
138
+ getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => import("ol/layer/Layer").State[];
139
+ getExtent: () => import("ol/extent").Extent | undefined;
140
+ getMaxResolution: () => number;
141
+ getMinResolution: () => number;
142
+ getMinZoom: () => number;
143
+ getMaxZoom: () => number;
144
+ getOpacity: () => number;
145
+ getSourceState: () => import("ol/source/Source").State;
146
+ getVisible: () => boolean;
147
+ getZIndex: () => number | undefined;
148
+ setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
149
+ setExtent: (extent: import("ol/extent").Extent | undefined) => void;
150
+ setMaxResolution: (maxResolution: number) => void;
151
+ setMinResolution: (minResolution: number) => void;
152
+ setMaxZoom: (maxZoom: number) => void;
153
+ setMinZoom: (minZoom: number) => void;
154
+ setOpacity: (opacity: number) => void;
155
+ setVisible: (visible: boolean) => void;
156
+ setZIndex: (zindex: number) => void;
157
+ get: (key: string) => any;
158
+ getKeys: () => string[];
159
+ getProperties: () => {
160
+ [x: string]: any;
161
+ };
162
+ getPropertiesInternal: () => {
163
+ [x: string]: any;
164
+ } | null;
165
+ hasProperties: () => boolean;
166
+ notify: (key: string, oldValue: any) => void;
167
+ addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
168
+ removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
169
+ set: (key: string, value: any, silent?: boolean | undefined) => void;
170
+ setProperties: (values: {
171
+ [x: string]: any;
172
+ }, silent?: boolean | undefined) => void;
173
+ unset: (key: string, silent?: boolean | undefined) => void;
174
+ changed: () => void;
175
+ getRevision: () => number;
176
+ dispatchEvent: (event: string | import("ol/events/Event").default) => boolean | undefined;
177
+ getListeners: (type: string) => import("ol/events").Listener[] | undefined;
178
+ hasListener: (type?: string | undefined) => boolean;
179
+ dispose: () => void;
180
+ };
181
+ } & typeof Layer;
182
+ /**
183
+ * Responsible for loading and display data from the geOps realtime API.
184
+ *
185
+ * @example
186
+ * import { RealtimeLayer } from 'mobility-toolbox-js/ol';
187
+ *
188
+ * const layer = new RealtimeLayer({
189
+ * apiKey: "yourApiKey"
190
+ * // allowRenderWhenAnimating: false,
191
+ * // url: "wss://api.geops.io/tracker-ws/v1/",
192
+ * });
193
+ *
194
+ *
195
+ * @see <a href="/api/class/src/api/RealtimeAPI%20js~RealtimeAPI%20html">RealtimeAPI</a>
196
+ *
197
+ * @extends {ol/layer/Layer~Layer}
198
+ *
199
+ * @classproperty {boolean} allowRenderWhenAnimating - Allow rendering of the layer when the map is animating.
200
+ * @public
201
+ */
202
+ declare class RealtimeLayer extends RealtimeLayer_base {
203
+ /** @private */
204
+ allowRenderWhenAnimating?: boolean;
205
+ /**
206
+ * Constructor.
207
+ *
208
+ * @param {RealtimeLayerOptions} options
209
+ * @param {boolean} [options.allowRenderWhenAnimating=false] Allow rendering of the layer when the map is animating.
210
+ * @param {string} options.apiKey Access key for [geOps apis](https://developer.geops.io/).
211
+ * @param {string} [options.url="wss://api.geops.io/tracker-ws/v1/"] The geOps realtime API url.
212
+ *
213
+ */
214
+ constructor(options: RealtimeLayerOptions);
215
+ /**
216
+ * @private
217
+ */
218
+ createRenderer(): RealtimeLayerRenderer;
219
+ /** @private */
220
+ attachToMap(map: Map): void;
221
+ /**
222
+ * Destroy the container of the tracker.
223
+ * @private
224
+ */
225
+ detachFromMap(): void;
226
+ /**
227
+ * Render the trajectories using current map's size, resolution and rotation.
228
+ * @param {boolean} noInterpolate if true, renders the vehicles without interpolating theirs positions.
229
+ * @overrides
230
+ * @private
231
+ */
232
+ renderTrajectories(noInterpolate: boolean): void;
233
+ /**
234
+ * Launch renderTrajectories. it avoids duplicating code in renderTrajectories methhod.
235
+ * @private
236
+ * @override
237
+ */
238
+ renderTrajectoriesInternal(viewState: ViewState, noInterpolate: boolean): boolean;
239
+ /**
240
+ * Return the delay in ms before the next rendering.
241
+ * @private
242
+ */
243
+ getRefreshTimeInMs(): number;
244
+ /**
245
+ * On move end we update the websocket with the new bbox.
246
+ *
247
+ * @private
248
+ * @override
249
+ */
250
+ onMoveEnd(evt: MapEvent | ObjectEvent): void;
251
+ /**
252
+ * Function called on moveend event only when the zoom has changed.
253
+ *
254
+ * @param {ol/MapEvent~MapEvent} evt Moveend event.
255
+ * @private
256
+ * @override
257
+ */
258
+ onZoomEnd(): void;
259
+ highlight(feature: Feature): void;
260
+ select(feature: Feature): void;
261
+ /**
262
+ * Remove the trajectory form the list if necessary.
263
+ *
264
+ * @private
265
+ */
266
+ purgeTrajectory(trajectory: RealtimeTrajectory, extent: [number, number, number, number], zoom: number): boolean;
267
+ /**
268
+ * Send the current bbox to the websocket
269
+ *
270
+ * @private
271
+ */
272
+ setBbox(extent?: [number, number, number, number], zoom?: number): void;
273
+ /**
274
+ * Highlight the trajectory of journey.
275
+ * @private
276
+ */
277
+ highlightTrajectory(id: RealtimeTrainId): Promise<Feature[] | undefined>;
278
+ /**
279
+ * Create a copy of the RealtimeLayer.
280
+ * @param {Object} newOptions Options to override
281
+ * @return {RealtimeLayer} A RealtimeLayer
282
+ */
283
+ clone(newOptions: RealtimeLayerOptions): RealtimeLayer;
284
+ }
285
+ export default RealtimeLayer;
@@ -11,7 +11,7 @@ import RealtimeLayerRenderer from '../renderers/RealtimeLayerRenderer';
11
11
  /** @private */
12
12
  const format = new GeoJSON();
13
13
  /**
14
- * Responsible for loading and display data from the geOps Realtime API.
14
+ * Responsible for loading and display data from the geOps realtime API.
15
15
  *
16
16
  * @example
17
17
  * import { RealtimeLayer } from 'mobility-toolbox-js/ol';
@@ -38,7 +38,7 @@ class RealtimeLayer extends RealtimeLayerMixin(MobilityLayerMixin(Layer)) {
38
38
  * @param {RealtimeLayerOptions} options
39
39
  * @param {boolean} [options.allowRenderWhenAnimating=false] Allow rendering of the layer when the map is animating.
40
40
  * @param {string} options.apiKey Access key for [geOps apis](https://developer.geops.io/).
41
- * @param {string} [options.url="wss://api.geops.io/tracker-ws/v1/"] The geOps Realtime API url.
41
+ * @param {string} [options.url="wss://api.geops.io/tracker-ws/v1/"] The geOps realtime API url.
42
42
  *
43
43
  */
44
44
  constructor(options) {
@@ -86,9 +86,12 @@ class RealtimeLayer extends RealtimeLayerMixin(MobilityLayerMixin(Layer)) {
86
86
  if (this.visible) {
87
87
  this.start();
88
88
  }
89
+ // @ts-expect-error - bad ts check RealtimeLayer is a BaseLayer
89
90
  const index = this.map.getLayers().getArray().indexOf(this);
90
91
  this.map.getLayers().insertAt(index, this.vectorLayer);
91
- this.olListenersKeys.push(...this.map.on(['moveend', 'change:target'], (evt) => {
92
+ this.olListenersKeys.push(...this.map.on(['moveend', 'change:target'],
93
+ // @ts-expect-error - bad ol definitions
94
+ (evt) => {
92
95
  const view = (evt.map || evt.target).getView();
93
96
  if (view.getAnimating() || view.getInteracting()) {
94
97
  return;
@@ -174,8 +177,10 @@ class RealtimeLayer extends RealtimeLayerMixin(MobilityLayerMixin(Layer)) {
174
177
  if (isRendered) {
175
178
  /** @private */
176
179
  this.renderedViewState = Object.assign({}, viewState);
177
- if (this.getRenderer().container) {
178
- this.getRenderer().container.style.transform = '';
180
+ // @ts-expect-error - we are in the same class
181
+ const { container } = this.getRenderer();
182
+ if (container) {
183
+ container.style.transform = '';
179
184
  }
180
185
  }
181
186
  return isRendered;
@@ -266,7 +271,7 @@ class RealtimeLayer extends RealtimeLayerMixin(MobilityLayerMixin(Layer)) {
266
271
  // it will trigger a js error on calculateExtent function.
267
272
  return false;
268
273
  }
269
- return super.purgeTrajectory(trajectory, extent || this.map.getView().calculateExtent(), zoom || this.map.getView().getZoom());
274
+ return super.purgeTrajectory(trajectory, extent || this.map.getView().calculateExtent(), zoom || this.map.getView().getZoom() || 0);
270
275
  }
271
276
  /**
272
277
  * Send the current bbox to the websocket
@@ -274,7 +279,8 @@ class RealtimeLayer extends RealtimeLayerMixin(MobilityLayerMixin(Layer)) {
274
279
  * @private
275
280
  */
276
281
  setBbox(extent, zoom) {
277
- super.setBbox(extent || this.map.getView().calculateExtent(), zoom || this.map.getView().getZoom());
282
+ super.setBbox(extent ||
283
+ this.map.getView().calculateExtent(), zoom || this.map.getView().getZoom() || 0);
278
284
  }
279
285
  /**
280
286
  * Highlight the trajectory of journey.
@@ -0,0 +1,3 @@
1
+ export { default as MaplibreLayer } from "./MaplibreLayer";
2
+ export { default as MaplibreStyleLayer } from "./MaplibreStyleLayer";
3
+ export { default as RealtimeLayer } from "./RealtimeLayer";