mobility-toolbox-js 3.0.0-beta.0 → 3.0.0-beta.10

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 (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/api/HttpAPI.d.ts +20 -0
  4. package/api/HttpAPI.js +1 -11
  5. package/api/RealtimeAPI.d.ts +365 -0
  6. package/api/RealtimeAPI.js +102 -89
  7. package/api/RoutingAPI.d.ts +37 -0
  8. package/api/StopsAPI.d.ts +44 -0
  9. package/api/StopsAPI.js +15 -9
  10. package/api/WebSocketAPI.d.ts +153 -0
  11. package/api/index.d.ts +3 -0
  12. package/api/typedefs.d.ts +178 -0
  13. package/common/controls/StopFinderControlCommon.d.ts +53 -0
  14. package/common/index.d.ts +2 -0
  15. package/common/mixins/RealtimeLayerMixin.d.ts +273 -0
  16. package/common/styles/index.d.ts +4 -0
  17. package/common/styles/realtimeDefaultStyle.d.ts +36 -0
  18. package/common/styles/realtimeDelayStyle.d.ts +12 -0
  19. package/common/styles/realtimeHeadingStyle.d.ts +12 -0
  20. package/common/styles/realtimeSimpleStyle.d.ts +4 -0
  21. package/common/typedefs.d.ts +212 -0
  22. package/common/utils/compareDepartures.d.ts +10 -0
  23. package/common/utils/constants.d.ts +5 -0
  24. package/common/utils/createCanvas.d.ts +10 -0
  25. package/common/utils/createDefaultCopyrightElt.d.ts +5 -0
  26. package/common/utils/createDefaultStopFinderElt.d.ts +5 -0
  27. package/common/utils/createRealtimeFilters.d.ts +12 -0
  28. package/common/utils/debounceDeparturesMessages.d.ts +12 -0
  29. package/common/utils/debounceWebsocketMessages.d.ts +11 -0
  30. package/common/utils/getLayersAsFlatArray.d.ts +3 -0
  31. package/common/utils/getLayersAsFlatArray.js +5 -1
  32. package/common/utils/getMapGlCopyrights.d.ts +17 -0
  33. package/common/utils/getRealtimeModeSuffix.d.ts +9 -0
  34. package/common/utils/getUrlWithParams.d.ts +8 -0
  35. package/common/utils/getVehiclePosition.d.ts +16 -0
  36. package/common/utils/index.d.ts +16 -0
  37. package/common/utils/realtimeConfig.d.ts +64 -0
  38. package/common/utils/removeDuplicate.d.ts +9 -0
  39. package/common/utils/renderTrajectories.d.ts +16 -0
  40. package/common/utils/sortAndFilterDepartures.d.ts +15 -0
  41. package/common/utils/sortByDelay.d.ts +3 -0
  42. package/common/utils/timeUtils.d.ts +23 -0
  43. package/common/utils/toMercatorExtent.d.ts +5 -0
  44. package/iife.d.ts +2 -0
  45. package/index.d.ts +9 -0
  46. package/maplibre/controls/CopyrightControl.d.ts +35 -0
  47. package/maplibre/controls/index.d.ts +1 -0
  48. package/maplibre/index.d.ts +5 -0
  49. package/maplibre/layers/Layer.d.ts +28 -0
  50. package/maplibre/layers/RealtimeLayer.d.ts +160 -0
  51. package/maplibre/layers/RealtimeLayer.js +2 -2
  52. package/maplibre/layers/index.d.ts +2 -0
  53. package/maplibre/utils/getMercatorResolution.d.ts +7 -0
  54. package/maplibre/utils/getSourceCoordinates.d.ts +7 -0
  55. package/maplibre/utils/index.d.ts +2 -0
  56. package/mbt.js +1395 -1293
  57. package/mbt.js.map +4 -4
  58. package/mbt.min.js +42 -42
  59. package/mbt.min.js.map +4 -4
  60. package/ol/controls/CopyrightControl.d.ts +31 -0
  61. package/ol/controls/CopyrightControl.js +18 -8
  62. package/ol/controls/RoutingControl.d.ts +209 -0
  63. package/ol/controls/RoutingControl.js +3 -0
  64. package/ol/controls/StopFinderControl.d.ts +37 -0
  65. package/ol/controls/StopFinderControl.js +3 -0
  66. package/ol/controls/index.d.ts +3 -0
  67. package/ol/index.d.ts +6 -0
  68. package/ol/layers/MapGlLayer.d.ts +144 -0
  69. package/ol/layers/MapGlLayer.js +7 -7
  70. package/ol/layers/MaplibreLayer.d.ts +63 -0
  71. package/ol/layers/MaplibreStyleLayer.d.ts +235 -0
  72. package/ol/layers/MaplibreStyleLayer.js +24 -24
  73. package/ol/layers/RealtimeLayer.d.ts +285 -0
  74. package/ol/layers/RealtimeLayer.js +13 -7
  75. package/ol/layers/index.d.ts +3 -0
  76. package/ol/mixins/MobilityLayerMixin.d.ts +98 -0
  77. package/ol/mixins/MobilityLayerMixin.js +1 -4
  78. package/ol/mixins/PropertiesLayerMixin.d.ts +127 -0
  79. package/ol/mixins/PropertiesLayerMixin.js +6 -65
  80. package/ol/renderers/MaplibreLayerRenderer.d.ts +20 -0
  81. package/ol/renderers/MaplibreStyleLayerRenderer.d.ts +20 -0
  82. package/ol/renderers/RealtimeLayerRenderer.d.ts +22 -0
  83. package/ol/renderers/RealtimeLayerRenderer.js +9 -9
  84. package/ol/styles/fullTrajectoryDelayStyle.d.ts +6 -0
  85. package/ol/styles/fullTrajectoryStyle.d.ts +5 -0
  86. package/ol/styles/index.d.ts +3 -0
  87. package/ol/styles/routingStyle.d.ts +4 -0
  88. package/ol/utils/getFeatureInfoAtCoordinate.d.ts +8 -0
  89. package/ol/utils/getFeatureInfoAtCoordinate.js +2 -2
  90. package/ol/utils/index.d.ts +1 -0
  91. package/package.json +19 -20
  92. package/setupTests.d.ts +1 -0
@@ -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";
@@ -0,0 +1,98 @@
1
+ import { Layer } from 'ol/layer';
2
+ import { PropertiesLayerMixinOptions } from './PropertiesLayerMixin';
3
+ export type MobilityLayerOptions = PropertiesLayerMixinOptions & {
4
+ [x: string]: any;
5
+ };
6
+ type GConstructor<T = {}> = new (...args: any[]) => T;
7
+ export type Layerable = GConstructor<Omit<Layer, keyof string>>;
8
+ declare function MobilityLayerMixin<TBase extends Layerable>(Base: TBase): {
9
+ new (...args: any[]): {
10
+ options?: PropertiesLayerMixinOptions | undefined;
11
+ olListenersKeys: import("ol/events").EventsKey[];
12
+ children: Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>[];
13
+ get copyrights(): string;
14
+ set copyrights(newCopyrights: string | string[]);
15
+ disabled: boolean;
16
+ readonly group: string;
17
+ readonly hitTolerance: boolean;
18
+ readonly key: string;
19
+ readonly map: import("ol").Map;
20
+ readonly name: string;
21
+ olLayer: Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>;
22
+ parent: Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>;
23
+ visible: boolean;
24
+ setMapInternal: ((map: import("ol").Map) => void) & ((map: import("ol").Map | null) => void);
25
+ onChildrenChange(oldValue: Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>[]): void;
26
+ attachToMap(map: import("ol").Map): void;
27
+ detachFromMap(): void;
28
+ flat(): any[];
29
+ addEventListener: (type: string, listener: import("ol/events").Listener) => void;
30
+ removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
31
+ on: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
32
+ render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
33
+ once: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
34
+ un: import("ol/layer/Layer").LayerOnSignature<void>;
35
+ getSource: () => import("ol/source").Source | null;
36
+ getRenderSource: () => import("ol/source").Source | null;
37
+ getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<import("ol/Feature").FeatureLike[]>;
38
+ getData: (pixel: import("ol/pixel").Pixel) => Float32Array | Uint8ClampedArray | Uint8Array | DataView | null;
39
+ isVisible: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
40
+ getAttributions: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => string[];
41
+ unrender: () => void;
42
+ getDeclutter: () => string;
43
+ renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
44
+ renderDeferred: (frameState: import("ol/Map").FrameState) => void;
45
+ getMapInternal: () => import("ol").Map | null;
46
+ setMap: (map: import("ol").Map | null) => void;
47
+ setSource: (source: import("ol/source").Source | null) => void;
48
+ getRenderer: () => import("ol/renderer/Layer").default<any> | null;
49
+ hasRenderer: () => boolean;
50
+ getBackground: () => false | import("ol/layer/Base").BackgroundColor;
51
+ getClassName: () => string;
52
+ getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
53
+ getLayersArray: (array?: Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>[] | undefined) => Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>[];
54
+ getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => import("ol/layer/Layer").State[];
55
+ getExtent: () => import("ol/extent").Extent | undefined;
56
+ getMaxResolution: () => number;
57
+ getMinResolution: () => number;
58
+ getMinZoom: () => number;
59
+ getMaxZoom: () => number;
60
+ getOpacity: () => number;
61
+ getSourceState: () => import("ol/source/Source").State;
62
+ getVisible: () => boolean;
63
+ getZIndex: () => number | undefined;
64
+ setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
65
+ setExtent: (extent: import("ol/extent").Extent | undefined) => void;
66
+ setMaxResolution: (maxResolution: number) => void;
67
+ setMinResolution: (minResolution: number) => void;
68
+ setMaxZoom: (maxZoom: number) => void;
69
+ setMinZoom: (minZoom: number) => void;
70
+ setOpacity: (opacity: number) => void;
71
+ setVisible: (visible: boolean) => void;
72
+ setZIndex: (zindex: number) => void;
73
+ get: (key: string) => any;
74
+ getKeys: () => string[];
75
+ getProperties: () => {
76
+ [x: string]: any;
77
+ };
78
+ getPropertiesInternal: () => {
79
+ [x: string]: any;
80
+ } | null;
81
+ hasProperties: () => boolean;
82
+ notify: (key: string, oldValue: any) => void;
83
+ addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
84
+ removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
85
+ set: (key: string, value: any, silent?: boolean | undefined) => void;
86
+ setProperties: (values: {
87
+ [x: string]: any;
88
+ }, silent?: boolean | undefined) => void;
89
+ unset: (key: string, silent?: boolean | undefined) => void;
90
+ changed: () => void;
91
+ getRevision: () => number;
92
+ dispatchEvent: (event: string | import("ol/events/Event").default) => boolean | undefined;
93
+ getListeners: (type: string) => import("ol/events").Listener[] | undefined;
94
+ hasListener: (type?: string | undefined) => boolean;
95
+ dispose: () => void;
96
+ };
97
+ } & TBase;
98
+ export default MobilityLayerMixin;
@@ -1,9 +1,6 @@
1
1
  import PropertiesLayerMixin from './PropertiesLayerMixin';
2
2
  function MobilityLayerMixin(Base) {
3
- return class extends PropertiesLayerMixin(Base) {
4
- constructor(options = {}) {
5
- super(options);
6
- }
3
+ return class MobilityLayer extends PropertiesLayerMixin(Base) {
7
4
  };
8
5
  }
9
6
  export default MobilityLayerMixin;
@@ -0,0 +1,127 @@
1
+ import { Layer } from 'ol/layer';
2
+ import { EventsKey } from 'ol/events';
3
+ import { Map } from 'ol';
4
+ import type { Options } from 'ol/layer/Layer';
5
+ import type { Layerable } from './MobilityLayerMixin';
6
+ export type PropertiesLayerMixinOptions = Options & {
7
+ key?: string;
8
+ name?: string;
9
+ group?: string;
10
+ copyrights?: string[];
11
+ children?: any[];
12
+ visible?: boolean;
13
+ disabled?: boolean;
14
+ hitTolerance?: number;
15
+ properties?: {
16
+ [x: string]: any;
17
+ };
18
+ map?: Map;
19
+ } & {
20
+ [x: string]: any;
21
+ };
22
+ /**
23
+ * This mixin adds some properties to access ol custom properties easily.
24
+ */
25
+ declare function PropertiesLayerMixin<TBase extends Layerable>(Base: TBase): {
26
+ new (...args: any[]): {
27
+ options?: PropertiesLayerMixinOptions | undefined;
28
+ olListenersKeys: EventsKey[];
29
+ children: Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>[];
30
+ get copyrights(): string;
31
+ set copyrights(newCopyrights: string | string[]);
32
+ disabled: boolean;
33
+ readonly group: string;
34
+ readonly hitTolerance: boolean;
35
+ readonly key: string;
36
+ readonly map: Map;
37
+ readonly name: string;
38
+ olLayer: Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>;
39
+ parent: Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>;
40
+ visible: boolean;
41
+ setMapInternal(map: Map): void;
42
+ /** @private */
43
+ onChildrenChange(oldValue: Layer[]): void;
44
+ /**
45
+ * Initialize the layer with the map passed in parameters.
46
+ *
47
+ * @param {ol/Map~Map} map A map.
48
+ */
49
+ attachToMap(map: Map): void;
50
+ /**
51
+ * Terminate what was initialized in init function. Remove layer, events...
52
+ */
53
+ detachFromMap(): void;
54
+ /**
55
+ * Return the an array containing all the descendants of the layer in a flat array. Including the current layer.
56
+ */
57
+ flat(): any[];
58
+ addEventListener: (type: string, listener: import("ol/events").Listener) => void;
59
+ removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
60
+ on: import("ol/layer/Layer").LayerOnSignature<EventsKey>;
61
+ render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
62
+ once: import("ol/layer/Layer").LayerOnSignature<EventsKey>;
63
+ un: import("ol/layer/Layer").LayerOnSignature<void>;
64
+ getSource: () => import("ol/source").Source | null;
65
+ getRenderSource: () => import("ol/source").Source | null;
66
+ getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<import("ol/Feature").FeatureLike[]>;
67
+ getData: (pixel: import("ol/pixel").Pixel) => Float32Array | Uint8ClampedArray | Uint8Array | DataView | null;
68
+ isVisible: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
69
+ getAttributions: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => string[];
70
+ unrender: () => void;
71
+ getDeclutter: () => string;
72
+ renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
73
+ renderDeferred: (frameState: import("ol/Map").FrameState) => void;
74
+ getMapInternal: () => Map | null;
75
+ setMap: (map: Map | null) => void;
76
+ setSource: (source: import("ol/source").Source | null) => void;
77
+ getRenderer: () => import("ol/renderer/Layer").default<any> | null;
78
+ hasRenderer: () => boolean;
79
+ getBackground: () => false | import("ol/layer/Base").BackgroundColor;
80
+ getClassName: () => string;
81
+ getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
82
+ getLayersArray: (array?: Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>[] | undefined) => Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>[];
83
+ getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => import("ol/layer/Layer").State[];
84
+ getExtent: () => import("ol/extent").Extent | undefined;
85
+ getMaxResolution: () => number;
86
+ getMinResolution: () => number;
87
+ getMinZoom: () => number;
88
+ getMaxZoom: () => number;
89
+ getOpacity: () => number;
90
+ getSourceState: () => import("ol/source/Source").State;
91
+ getVisible: () => boolean;
92
+ getZIndex: () => number | undefined;
93
+ setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
94
+ setExtent: (extent: import("ol/extent").Extent | undefined) => void;
95
+ setMaxResolution: (maxResolution: number) => void;
96
+ setMinResolution: (minResolution: number) => void;
97
+ setMaxZoom: (maxZoom: number) => void;
98
+ setMinZoom: (minZoom: number) => void;
99
+ setOpacity: (opacity: number) => void;
100
+ setVisible: (visible: boolean) => void;
101
+ setZIndex: (zindex: number) => void;
102
+ get: (key: string) => any;
103
+ getKeys: () => string[];
104
+ getProperties: () => {
105
+ [x: string]: any;
106
+ };
107
+ getPropertiesInternal: () => {
108
+ [x: string]: any;
109
+ } | null;
110
+ hasProperties: () => boolean;
111
+ notify: (key: string, oldValue: any) => void;
112
+ addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
113
+ removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
114
+ set: (key: string, value: any, silent?: boolean | undefined) => void;
115
+ setProperties: (values: {
116
+ [x: string]: any;
117
+ }, silent?: boolean | undefined) => void;
118
+ unset: (key: string, silent?: boolean | undefined) => void;
119
+ changed: () => void;
120
+ getRevision: () => number;
121
+ dispatchEvent: (event: string | import("ol/events/Event").default) => boolean | undefined;
122
+ getListeners: (type: string) => import("ol/events").Listener[] | undefined;
123
+ hasListener: (type?: string | undefined) => boolean;
124
+ dispose: () => void;
125
+ };
126
+ } & TBase;
127
+ export default PropertiesLayerMixin;
@@ -1,12 +1,10 @@
1
- import BaseEvent from 'ol/events/Event';
2
1
  import { getUid } from 'ol';
3
2
  import getLayersAsFlatArray from '../../common/utils/getLayersAsFlatArray';
4
3
  /**
5
- * This mixin adds some properties to access some ol properties easily ansd also
6
- * the management of a hierarchy of layers using children, parent and group property.
4
+ * This mixin adds some properties to access ol custom properties easily.
7
5
  */
8
6
  function PropertiesLayerMixin(Base) {
9
- return class extends Base {
7
+ return class PropertiesLayer extends Base {
10
8
  get children() {
11
9
  return this.get('children') || [];
12
10
  }
@@ -71,8 +69,9 @@ function PropertiesLayerMixin(Base) {
71
69
  set visible(newValue) {
72
70
  this.setVisible(newValue);
73
71
  }
74
- constructor(options) {
72
+ constructor(...args) {
75
73
  var _a;
74
+ const options = args[0];
76
75
  super(options);
77
76
  this.options = {};
78
77
  this.olListenersKeys = [];
@@ -87,29 +86,11 @@ function PropertiesLayerMixin(Base) {
87
86
  if (evt.key === 'children') {
88
87
  this.onChildrenChange(evt.oldValue);
89
88
  }
90
- }),
91
- // Manage group visiblity
92
- this.on('change:visible', () => {
93
- this.onVisibleChange();
94
- }),
95
- // Listen for group visiblity change
96
- // if a layer from a group is newly visible we hide the others.
97
- // @ts-ignore
98
- this.on(`change:visible:group`, (evt) => {
99
- // We hide layer of the same group
100
- if (this.group === evt.target.group &&
101
- this !== evt.target &&
102
- this.visible) {
103
- this.visible = false;
104
- // Propagate event to parent
105
- }
106
- else if (this.children) {
107
- this.children.forEach((child) => child.dispatchEvent(evt));
108
- }
109
89
  }));
110
90
  this.options = options;
111
91
  this.children = options.children || []; // Trigger the on children change event
112
92
  }
93
+ // @ts-expect-error - this is a mixin
113
94
  setMapInternal(map) {
114
95
  super.setMapInternal(map);
115
96
  if (map) {
@@ -129,46 +110,6 @@ function PropertiesLayerMixin(Base) {
129
110
  child.set('parent', this);
130
111
  });
131
112
  }
132
- /** @private */
133
- onVisibleChange() {
134
- const parent = this.get('parent');
135
- const children = this.get('children') || [];
136
- if (this.getVisible()) {
137
- const group = this.get('group');
138
- // We make the parent visible
139
- if (parent) {
140
- parent.setVisible(true);
141
- }
142
- // If children doesn't contain any visible layers, we display all children.
143
- if (children && !children.some((child) => child.getVisible())) {
144
- children.forEach((child) => {
145
- child.setVisible(true);
146
- });
147
- }
148
- // Warn the same group that a new layer is visible
149
- if (parent && group) {
150
- // We search for the higher parent then it will dispatch to all the tree.
151
- let higherParent = parent;
152
- while (higherParent.get('parent')) {
153
- higherParent = higherParent.get('parent');
154
- }
155
- const evt = new BaseEvent(`change:visible:group`);
156
- evt.target = this;
157
- higherParent.dispatchEvent(evt);
158
- }
159
- }
160
- else {
161
- // We hide all the children
162
- children.forEach((child) => {
163
- child.setVisible(false);
164
- });
165
- // If the parent has no more visible child we also hide it.
166
- if ((parent === null || parent === void 0 ? void 0 : parent.getVisible()) &&
167
- !(parent === null || parent === void 0 ? void 0 : parent.get('children').find((child) => child.getVisible()))) {
168
- parent.setVisible(false);
169
- }
170
- }
171
- }
172
113
  /**
173
114
  * Initialize the layer with the map passed in parameters.
174
115
  *
@@ -189,7 +130,7 @@ function PropertiesLayerMixin(Base) {
189
130
  this.map.removeLayer(child);
190
131
  });
191
132
  // @ts-ignore
192
- (super.detachFromMap || (() => { }))(map);
133
+ (super.detachFromMap || (() => { }))();
193
134
  }
194
135
  /**
195
136
  * Return the an array containing all the descendants of the layer in a flat array. Including the current layer.
@@ -0,0 +1,20 @@
1
+ import { FrameState } from 'ol/Map';
2
+ import LayerRenderer from 'ol/renderer/Layer';
3
+ import { Coordinate } from 'ol/coordinate';
4
+ import { FeatureCallback } from 'ol/renderer/vector';
5
+ import { Feature } from 'ol';
6
+ import { Geometry } from 'ol/geom';
7
+ import { Pixel } from 'ol/pixel';
8
+ import type MaplibreLayer from '../layers/MaplibreLayer';
9
+ /**
10
+ * This class is a renderer for Maplibre Layer to be able to use the native ol
11
+ * functionnalities like map.getFeaturesAtPixel or map.hasFeatureAtPixel.
12
+ * @private
13
+ */
14
+ export default class MaplibreLayerRenderer extends LayerRenderer<MaplibreLayer> {
15
+ getFeaturesAtCoordinate(coordinate: Coordinate | undefined, hitTolerance?: number): Feature<Geometry>[];
16
+ prepareFrame(): boolean;
17
+ renderFrame(frameState: FrameState): HTMLElement | null;
18
+ getFeatures(pixel: Pixel): Promise<Feature<Geometry>[]>;
19
+ forEachFeatureAtCoordinate<Feature>(coordinate: Coordinate, frameState: FrameState, hitTolerance: number, callback: FeatureCallback<Feature>): Feature | undefined;
20
+ }
@@ -0,0 +1,20 @@
1
+ import { FrameState } from 'ol/Map';
2
+ import LayerRenderer from 'ol/renderer/Layer';
3
+ import { Coordinate } from 'ol/coordinate';
4
+ import { FeatureCallback } from 'ol/renderer/vector';
5
+ import { Feature } from 'ol';
6
+ import { Geometry } from 'ol/geom';
7
+ import { Pixel } from 'ol/pixel';
8
+ import type { MaplibreStyleLayer } from '../layers';
9
+ /**
10
+ * This class is a renderer for Maplibre Layer to be able to use the native ol
11
+ * functionnalities like map.getFeaturesAtPixel or map.hasFeatureAtPixel.
12
+ * @private
13
+ */
14
+ export default class MaplibreStyleLayerRenderer extends LayerRenderer<MaplibreStyleLayer> {
15
+ getFeaturesAtCoordinate(coordinate: Coordinate | undefined, hitTolerance?: number): Feature<Geometry>[];
16
+ prepareFrame(): boolean;
17
+ renderFrame(): null;
18
+ getFeatures(pixel: Pixel): Promise<Feature<Geometry>[]>;
19
+ forEachFeatureAtCoordinate<Feature>(coordinate: Coordinate, frameState: FrameState, hitTolerance: number, callback: FeatureCallback<Feature>): Feature | undefined;
20
+ }
@@ -0,0 +1,22 @@
1
+ import { FrameState } from 'ol/Map';
2
+ import { Coordinate } from 'ol/coordinate';
3
+ import { FeatureCallback } from 'ol/renderer/vector';
4
+ import { Feature } from 'ol';
5
+ import { Geometry } from 'ol/geom';
6
+ import { Pixel } from 'ol/pixel';
7
+ import CanvasLayerRenderer from 'ol/renderer/canvas/Layer';
8
+ import type RealtimeLayer from '../layers/RealtimeLayer';
9
+ /**
10
+ * This class is a renderer for Maplibre Layer to be able to use the native ol
11
+ * functionnalities like map.getFeaturesAtPixel or map.hasFeatureAtPixel.
12
+ * @private
13
+ */
14
+ export default class RealtimeLayerRenderer extends CanvasLayerRenderer<RealtimeLayer> {
15
+ private canvas;
16
+ prepareFrame(): boolean;
17
+ renderFrame(frameState: FrameState): HTMLElement;
18
+ getData(pixel: Pixel): Uint8ClampedArray | null;
19
+ getFeatures(pixel: Pixel): Promise<Feature<Geometry>[]>;
20
+ forEachFeatureAtCoordinate<Feature>(coordinate: Coordinate, frameState: FrameState, hitTolerance: number, callback: FeatureCallback<Feature>): Feature | undefined;
21
+ getFeaturesAtCoordinate(coordinate: Coordinate | undefined, hitTolerance?: number): Feature<Geometry>[];
22
+ }
@@ -16,7 +16,6 @@ export default class RealtimeLayerRenderer extends CanvasLayerRenderer {
16
16
  return true;
17
17
  }
18
18
  renderFrame(frameState) {
19
- var _a;
20
19
  const { canvas, renderedViewState } = this.getLayer();
21
20
  if (!this.container) {
22
21
  this.container = document.createElement('div');
@@ -24,7 +23,7 @@ export default class RealtimeLayerRenderer extends CanvasLayerRenderer {
24
23
  this.container.style.position = 'absolute';
25
24
  this.container.style.width = '100%';
26
25
  this.container.style.height = '100%';
27
- if (canvas) {
26
+ if (canvas instanceof HTMLCanvasElement) {
28
27
  canvas.style.position = 'absolute';
29
28
  canvas.style.top = '0';
30
29
  canvas.style.left = '0';
@@ -41,12 +40,12 @@ export default class RealtimeLayerRenderer extends CanvasLayerRenderer {
41
40
  context === null || context === void 0 ? void 0 : context.clearRect(0, 0, canvas === null || canvas === void 0 ? void 0 : canvas.width, canvas === null || canvas === void 0 ? void 0 : canvas.height);
42
41
  }
43
42
  else {
44
- const pixelCenterRendered = (_a = this.getLayer()
45
- .getMapInternal()) === null || _a === void 0 ? void 0 : _a.getPixelFromCoordinate(renderedCenter);
46
- const pixelCenter = this.getLayer()
47
- .getMapInternal()
48
- .getPixelFromCoordinate(center);
49
- this.container.style.transform = composeCssTransform(pixelCenterRendered[0] - pixelCenter[0], pixelCenterRendered[1] - pixelCenter[1], renderedResolution / resolution, renderedResolution / resolution, rotation - renderedRotation, 0, 0);
43
+ const map = this.getLayer().getMapInternal();
44
+ const pixelCenterRendered = map === null || map === void 0 ? void 0 : map.getPixelFromCoordinate(renderedCenter);
45
+ const pixelCenter = map === null || map === void 0 ? void 0 : map.getPixelFromCoordinate(center);
46
+ if (pixelCenterRendered && pixelCenter) {
47
+ this.container.style.transform = composeCssTransform(pixelCenterRendered[0] - pixelCenter[0], pixelCenterRendered[1] - pixelCenter[1], renderedResolution / resolution, renderedResolution / resolution, rotation - renderedRotation, 0, 0);
48
+ }
50
49
  }
51
50
  }
52
51
  return this.container;
@@ -83,12 +82,13 @@ export default class RealtimeLayerRenderer extends CanvasLayerRenderer {
83
82
  return features === null || features === void 0 ? void 0 : features[0];
84
83
  }
85
84
  getFeaturesAtCoordinate(coordinate, hitTolerance = 5) {
85
+ var _a;
86
86
  if (!coordinate) {
87
87
  return [];
88
88
  }
89
89
  const layer = this.getLayer();
90
90
  const map = layer.getMapInternal();
91
- const resolution = map.getView().getResolution();
91
+ const resolution = ((_a = map === null || map === void 0 ? void 0 : map.getView()) === null || _a === void 0 ? void 0 : _a.getResolution()) || 1;
92
92
  const nb = 10;
93
93
  const ext = buffer([...coordinate, ...coordinate], hitTolerance * resolution);
94
94
  let features = [];
@@ -0,0 +1,6 @@
1
+ import { Style } from 'ol/style';
2
+ /**
3
+ * @private
4
+ */
5
+ declare const fullTrajectoryDelaystyle: () => Style[];
6
+ export default fullTrajectoryDelaystyle;
@@ -0,0 +1,5 @@
1
+ import type { FeatureLike } from 'ol/Feature';
2
+ import { Style } from 'ol/style';
3
+ /** @private */
4
+ declare const fullTrajectorystyle: (feature: FeatureLike, resolution: number, options: any) => Style[];
5
+ export default fullTrajectorystyle;
@@ -0,0 +1,3 @@
1
+ export { default as fullTrajectoryStyle } from "./fullTrajectoryStyle";
2
+ export { default as fullTrajectoryDelayStyle } from "./fullTrajectoryDelayStyle";
3
+ export { default as routingStyle } from "./routingStyle";
@@ -0,0 +1,4 @@
1
+ import { StyleFunction } from 'ol/style/Style';
2
+ /** @private */
3
+ declare const routingStyle: StyleFunction;
4
+ export default routingStyle;
@@ -0,0 +1,8 @@
1
+ import type { Coordinate } from 'ol/coordinate';
2
+ import type { Layer } from 'ol/layer';
3
+ import { LayerGetFeatureInfoResponse } from '../../types';
4
+ /**
5
+ * @private
6
+ */
7
+ declare const getFeatureInfoAtCoordinate: (coordinate: Coordinate, layers: Layer[], hitTolerance?: number) => Promise<LayerGetFeatureInfoResponse[]>;
8
+ export default getFeatureInfoAtCoordinate;
@@ -36,7 +36,7 @@ let abortControllers = {};
36
36
  /**
37
37
  * @private
38
38
  */
39
- const getFeatureInfoAtCoordinate = (coordinate, layers, hitTolerance = 5) => __awaiter(void 0, void 0, void 0, function* () {
39
+ const getFeatureInfoAtCoordinate = (coordinate_1, layers_1, ...args_1) => __awaiter(void 0, [coordinate_1, layers_1, ...args_1], void 0, function* (coordinate, layers, hitTolerance = 5) {
40
40
  // Kill all previous requests
41
41
  Object.values(abortControllers).forEach((abortController) => {
42
42
  abortController === null || abortController === void 0 ? void 0 : abortController.abort();
@@ -63,7 +63,7 @@ const getFeatureInfoAtCoordinate = (coordinate, layers, hitTolerance = 5) => __a
63
63
  const source = layer === null || layer === void 0 ? void 0 : layer.getSource();
64
64
  // @ts-ignore
65
65
  if (source === null || source === void 0 ? void 0 : source.getFeatureInfoUrl) {
66
- const id = getUid(this);
66
+ const id = getUid(layer);
67
67
  // Abort and recreates one controller per layer
68
68
  (_c = abortControllers[id]) === null || _c === void 0 ? void 0 : _c.abort();
69
69
  abortControllers[id] = new AbortController();
@@ -0,0 +1 @@
1
+ export { default as getFeatureInfoAtCoordinate } from "./getFeatureInfoAtCoordinate";
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "mobility-toolbox-js",
3
3
  "license": "MIT",
4
4
  "description": "Toolbox for JavaScript applications in the domains of mobility and logistics.",
5
- "version": "3.0.0-beta.0",
5
+ "version": "3.0.0-beta.10",
6
6
  "homepage": "https://mobility-toolbox-js.geops.io/",
7
7
  "module": "index.js",
8
8
  "exports": {
@@ -24,10 +24,10 @@
24
24
  "ol": ">=7"
25
25
  },
26
26
  "devDependencies": {
27
- "@babel/preset-env": "^7.24.0",
28
- "@babel/preset-typescript": "^7.23.3",
29
- "@commitlint/cli": "19.0.3",
30
- "@commitlint/config-conventional": "19.0.3",
27
+ "@babel/preset-env": "^7.24.3",
28
+ "@babel/preset-typescript": "^7.24.1",
29
+ "@commitlint/cli": "19.2.1",
30
+ "@commitlint/config-conventional": "19.1.0",
31
31
  "@types/geojson": "7946.0.14",
32
32
  "@types/lodash.debounce": "4.0.9",
33
33
  "@types/lodash.throttle": "4.1.9",
@@ -35,10 +35,10 @@
35
35
  "@types/offscreencanvas": "2019.7.3",
36
36
  "@types/topojson": "3.2.6",
37
37
  "@types/uuid": "9.0.8",
38
- "@typescript-eslint/eslint-plugin": "7.1.0",
39
- "@typescript-eslint/parser": "7.1.0",
40
- "cypress": "13.6.6",
41
- "esbuild": "0.20.1",
38
+ "@typescript-eslint/eslint-plugin": "7.4.0",
39
+ "@typescript-eslint/parser": "7.4.0",
40
+ "cypress": "13.7.1",
41
+ "esbuild": "0.20.2",
42
42
  "esdoc": "1.1.0",
43
43
  "esdoc-ecmascript-proposal-plugin": "1.0.0",
44
44
  "esdoc-publish-html-plugin": "1.1.2",
@@ -46,13 +46,13 @@
46
46
  "esdoc-typescript-plugin": "1.0.1",
47
47
  "eslint": "8.57.0",
48
48
  "eslint-config-airbnb": "19.0.4",
49
- "eslint-config-airbnb-typescript": "17.1.0",
49
+ "eslint-config-airbnb-typescript": "18.0.0",
50
50
  "eslint-config-prettier": "9.1.0",
51
51
  "eslint-plugin-cypress": "2.15.1",
52
52
  "eslint-plugin-import": "2.29.1",
53
53
  "eslint-plugin-jsx-a11y": "6.8.0",
54
54
  "eslint-plugin-prettier": "5.1.3",
55
- "eslint-plugin-react": "7.33.2",
55
+ "eslint-plugin-react": "7.34.1",
56
56
  "fixpack": "4.0.0",
57
57
  "husky": "9.0.11",
58
58
  "is-ci": "3.0.1",
@@ -64,28 +64,27 @@
64
64
  "jest-transformer-svg": "2.0.2",
65
65
  "jest-websocket-mock": "2.5.0",
66
66
  "lint-staged": "15.2.2",
67
- "maplibre-gl": "4.0.2",
67
+ "maplibre-gl": "4.1.2",
68
68
  "mock-socket": "9.3.1",
69
- "next": "14.1.0",
69
+ "next": "14.1.4",
70
70
  "next-transpile-modules": "10.0.1",
71
- "ol": "9.0.0",
72
- "openapi-typescript": "6.7.4",
71
+ "ol": "9.1.0",
72
+ "openapi-typescript": "6.7.5",
73
73
  "prettier": "3.2.5",
74
74
  "raw-loader": "4.0.2",
75
75
  "sort-json": "2.0.1",
76
76
  "standard-version": "9.5.0",
77
77
  "start-server-and-test": "2.0.3",
78
- "stylelint": "16.2.1",
78
+ "stylelint": "16.3.1",
79
79
  "stylelint-config-recommended-scss": "14.0.0",
80
80
  "stylelint-config-standard": "36.0.0",
81
- "stylelint-scss": "6.1.0",
82
- "typedoc": "^0.25.9",
83
- "typescript": "5.3.3"
81
+ "stylelint-scss": "6.2.1",
82
+ "typescript": "5.4.3"
84
83
  },
85
84
  "scripts": {
86
85
  "apidoc": "esdoc && cp apidoc/index.json doc/src/components/Esdoc",
87
86
  "build": "yarn build:tsc && yarn esbuild:iife",
88
- "build:tsc": "rm -rf build && yarn tsc && cp package.json build/ && cp -R src/types build/ && find build -type f -name '*.test.*' -delete",
87
+ "build:tsc": "rm -rf build && yarn tsc && cp package.json build/ && cp README.md build/ && cp LICENSE build/ && cp -R src/types build/ && find build -type f -name '*.test.*' -delete",
89
88
  "clean": "rm -rf .next && rm -rf doc/.next",
90
89
  "coverage": "yarn test --watchAll=false --coverage --coverageDirectory=coverage",
91
90
  "cy:open": "cypress open",
@@ -0,0 +1 @@
1
+ export {};