mobility-toolbox-js 3.0.1-beta.0 → 3.0.1-beta.2

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 (78) hide show
  1. package/README.md +11 -3
  2. package/api/HttpAPI.js +1 -3
  3. package/api/RealtimeAPI.d.ts +47 -47
  4. package/api/RealtimeAPI.js +74 -74
  5. package/api/WebSocketAPI.js +0 -1
  6. package/common/controls/StopFinderControlCommon.d.ts +1 -1
  7. package/common/controls/StopFinderControlCommon.js +1 -1
  8. package/common/styles/realtimeDefaultStyle.js +0 -5
  9. package/common/styles/realtimeHeadingStyle.js +0 -5
  10. package/common/styles/realtimeSimpleStyle.d.ts +0 -1
  11. package/common/styles/realtimeSimpleStyle.js +0 -1
  12. package/common/typedefs.d.ts +0 -117
  13. package/common/typedefs.js +0 -31
  14. package/common/utils/RealtimeEngine.d.ts +214 -0
  15. package/common/utils/RealtimeEngine.js +554 -0
  16. package/common/utils/getLayersAsFlatArray.d.ts +0 -1
  17. package/common/utils/getLayersAsFlatArray.js +0 -1
  18. package/common/utils/getVehiclePosition.js +1 -4
  19. package/common/utils/realtimeConfig.d.ts +1 -1
  20. package/common/utils/realtimeConfig.js +0 -1
  21. package/common/utils/renderTrajectories.d.ts +1 -0
  22. package/common/utils/renderTrajectories.js +1 -0
  23. package/common/utils/sortAndFilterDepartures.d.ts +1 -0
  24. package/common/utils/sortAndFilterDepartures.js +1 -0
  25. package/maplibre/controls/CopyrightControl.d.ts +9 -6
  26. package/maplibre/controls/CopyrightControl.js +11 -8
  27. package/maplibre/layers/Layer.d.ts +7 -6
  28. package/maplibre/layers/Layer.js +1 -2
  29. package/maplibre/layers/RealtimeLayer.d.ts +54 -111
  30. package/maplibre/layers/RealtimeLayer.js +126 -114
  31. package/maplibre/utils/getSourceCoordinates.d.ts +1 -0
  32. package/maplibre/utils/getSourceCoordinates.js +5 -4
  33. package/mbt.js +6960 -14605
  34. package/mbt.js.map +4 -4
  35. package/mbt.min.js +68 -71
  36. package/mbt.min.js.map +4 -4
  37. package/ol/controls/CopyrightControl.d.ts +13 -5
  38. package/ol/controls/CopyrightControl.js +13 -5
  39. package/ol/controls/RoutingControl.d.ts +29 -18
  40. package/ol/controls/RoutingControl.js +44 -56
  41. package/ol/controls/StopFinderControl.d.ts +21 -2
  42. package/ol/controls/StopFinderControl.js +22 -3
  43. package/ol/index.d.ts +0 -1
  44. package/ol/index.js +0 -1
  45. package/ol/layers/Layer.d.ts +17 -92
  46. package/ol/layers/Layer.js +17 -3
  47. package/ol/layers/MaplibreLayer.d.ts +47 -114
  48. package/ol/layers/MaplibreLayer.js +102 -46
  49. package/ol/layers/MaplibreStyleLayer.d.ts +67 -147
  50. package/ol/layers/MaplibreStyleLayer.js +170 -123
  51. package/ol/layers/RealtimeLayer.d.ts +85 -218
  52. package/ol/layers/RealtimeLayer.js +170 -181
  53. package/ol/layers/VectorLayer.d.ts +1 -2
  54. package/ol/layers/VectorLayer.js +7 -6
  55. package/ol/renderers/MaplibreLayerRenderer.d.ts +9 -0
  56. package/ol/renderers/MaplibreLayerRenderer.js +35 -137
  57. package/ol/renderers/MaplibreStyleLayerRenderer.js +2 -2
  58. package/ol/renderers/RealtimeLayerRenderer.d.ts +1 -1
  59. package/ol/renderers/RealtimeLayerRenderer.js +6 -31
  60. package/ol/styles/fullTrajectoryDelayStyle.js +5 -7
  61. package/ol/styles/fullTrajectoryStyle.d.ts +1 -2
  62. package/ol/styles/fullTrajectoryStyle.js +5 -7
  63. package/ol/styles/routingStyle.d.ts +0 -1
  64. package/ol/styles/routingStyle.js +13 -10
  65. package/ol/utils/defineDeprecatedProperties.d.ts +10 -0
  66. package/ol/utils/defineDeprecatedProperties.js +180 -0
  67. package/package.json +40 -39
  68. package/setupTests.js +14 -0
  69. package/types/common.d.ts +4 -27
  70. package/types/realtime.d.ts +7 -2
  71. package/common/mixins/RealtimeLayerMixin.d.ts +0 -267
  72. package/common/mixins/RealtimeLayerMixin.js +0 -751
  73. package/ol/mixins/MobilityLayerMixin.d.ts +0 -96
  74. package/ol/mixins/MobilityLayerMixin.js +0 -6
  75. package/ol/mixins/PropertiesLayerMixin.d.ts +0 -136
  76. package/ol/mixins/PropertiesLayerMixin.js +0 -178
  77. package/ol/mixins/index.d.ts +0 -1
  78. package/ol/mixins/index.js +0 -2
@@ -1,101 +1,26 @@
1
+ import { Map } from 'ol';
1
2
  import OLLayer from 'ol/layer/Layer';
2
- import { MobilityLayerOptions } from '../mixins/MobilityLayerMixin';
3
- declare const Layer_base: {
4
- new (...args: any[]): {
5
- olEventsKeys: import("ol/events").EventsKey[];
6
- options?: import("../mixins/PropertiesLayerMixin").PropertiesLayerMixinOptions;
7
- attachToMap(map: import("ol").Map): void;
8
- detachFromMap(): void;
9
- flat(): any[];
10
- onChildrenChange(oldValue: OLLayer[]): void;
11
- setMapInternal: ((map: import("ol").Map) => void) & ((map: import("ol").default | null) => void);
12
- children: OLLayer<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: number;
18
- readonly key: string;
19
- readonly map: import("ol").Map;
20
- readonly name: string;
21
- olLayer: OLLayer;
22
- parent: OLLayer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>;
23
- visible: boolean;
24
- on: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
25
- once: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
26
- un: import("ol/layer/Layer").LayerOnSignature<void>;
27
- render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
28
- getSource: () => import("ol/source").Source | null;
29
- getRenderSource: () => import("ol/source").Source | null;
30
- getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<Array<import("ol/Feature").FeatureLike>>;
31
- getData: (pixel: import("ol/pixel").Pixel) => Uint8ClampedArray | Uint8Array | Float32Array | DataView | null;
32
- isVisible: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
33
- getAttributions: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => Array<string>;
34
- unrender: () => void;
35
- getDeclutter: () => string;
36
- renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
37
- renderDeferred: (frameState: import("ol/Map").FrameState) => void;
38
- getMapInternal: () => import("ol").default | null;
39
- setMap: (map: import("ol").default | null) => void;
40
- setSource: (source: import("ol/source").Source | null) => void;
41
- getRenderer: () => import("ol/renderer/Layer").default<any> | null;
42
- hasRenderer: () => boolean;
43
- getBackground: () => import("ol/layer/Base").BackgroundColor | false;
44
- getClassName: () => string;
45
- getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
46
- getLayersArray: (array?: import("ol/layer/Layer").default<import("ol/source").default, import("ol/renderer/Layer").default<any>>[] | undefined) => Array<import("ol/layer/Layer").default>;
47
- getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => Array<import("ol/layer/Layer").State>;
48
- getExtent: () => import("ol/extent").Extent | undefined;
49
- getMaxResolution: () => number;
50
- getMinResolution: () => number;
51
- getMinZoom: () => number;
52
- getMaxZoom: () => number;
53
- getOpacity: () => number;
54
- getSourceState: () => import("ol/source/Source").State;
55
- getVisible: () => boolean;
56
- getZIndex: () => number | undefined;
57
- setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
58
- setExtent: (extent: import("ol/extent").Extent | undefined) => void;
59
- setMaxResolution: (maxResolution: number) => void;
60
- setMinResolution: (minResolution: number) => void;
61
- setMaxZoom: (maxZoom: number) => void;
62
- setMinZoom: (minZoom: number) => void;
63
- setOpacity: (opacity: number) => void;
64
- setVisible: (visible: boolean) => void;
65
- setZIndex: (zindex: number) => void;
66
- get: (key: string) => any;
67
- getKeys: () => Array<string>;
68
- getProperties: () => {
69
- [x: string]: any;
70
- };
71
- getPropertiesInternal: () => {
72
- [x: string]: any;
73
- } | null;
74
- hasProperties: () => boolean;
75
- notify: (key: string, oldValue: any) => void;
76
- addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
77
- removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
78
- set: (key: string, value: any, silent?: boolean | undefined) => void;
79
- setProperties: (values: {
80
- [x: string]: any;
81
- }, silent?: boolean | undefined) => void;
82
- unset: (key: string, silent?: boolean | undefined) => void;
83
- changed: () => void;
84
- getRevision: () => number;
85
- addEventListener: (type: string, listener: import("ol/events").Listener) => void;
86
- dispatchEvent: (event: import("ol/events/Event").default | string) => boolean | undefined;
87
- getListeners: (type: string) => Array<import("ol/events").Listener> | undefined;
88
- hasListener: (type?: string | undefined) => boolean;
89
- removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
90
- dispose: () => void;
91
- };
92
- } & typeof OLLayer;
3
+ import LayerRenderer from 'ol/renderer/Layer';
4
+ import type { Options } from 'ol/layer/Layer';
5
+ export type MobilityLayerOptions = {
6
+ children?: any[];
7
+ copyrights?: string[];
8
+ disabled?: boolean;
9
+ group?: string;
10
+ hitTolerance?: number;
11
+ key?: string;
12
+ map?: Map;
13
+ name?: string;
14
+ properties?: Record<string, any>;
15
+ visible?: boolean;
16
+ } & Options & Record<string, any>;
93
17
  /**
94
18
  * An OpenLayers layer here only for backward compatibility v2.
95
19
  * @deprecated Use an OpenLayers Layer instead.
96
20
  */
97
- declare class Layer extends Layer_base {
21
+ declare class Layer extends OLLayer {
98
22
  constructor(options: MobilityLayerOptions);
99
23
  clone(newOptions: MobilityLayerOptions): Layer;
24
+ createRenderer(): LayerRenderer<OLLayer>;
100
25
  }
101
26
  export default Layer;
@@ -1,6 +1,7 @@
1
1
  import debounce from 'lodash.debounce';
2
2
  import OLLayer from 'ol/layer/Layer';
3
- import MobilityLayerMixin from '../mixins/MobilityLayerMixin';
3
+ import LayerRenderer from 'ol/renderer/Layer';
4
+ import defineDeprecatedProperties from '../utils/defineDeprecatedProperties';
4
5
  let deprecated = () => { };
5
6
  if (typeof window !== 'undefined' &&
6
7
  new URLSearchParams(window.location.search).get('deprecated')) {
@@ -9,17 +10,30 @@ if (typeof window !== 'undefined' &&
9
10
  console.warn(message);
10
11
  }, 1000);
11
12
  }
13
+ class EmptyLayerRenderer extends LayerRenderer {
14
+ prepareFrame() {
15
+ return true;
16
+ }
17
+ renderFrame() {
18
+ return null;
19
+ }
20
+ }
12
21
  /**
13
22
  * An OpenLayers layer here only for backward compatibility v2.
14
23
  * @deprecated Use an OpenLayers Layer instead.
15
24
  */
16
- class Layer extends MobilityLayerMixin(OLLayer) {
25
+ class Layer extends OLLayer {
17
26
  constructor(options) {
18
27
  super(options);
28
+ defineDeprecatedProperties(this, options);
19
29
  deprecated('Layer is deprecated. Use an OpenLayers Layer instead.');
20
30
  }
21
31
  clone(newOptions) {
22
- return new Layer(Object.assign(Object.assign({}, (this.options || {})), (newOptions || {})));
32
+ return new Layer(Object.assign(Object.assign({}, (this.get('options') || {})), (newOptions || {})));
33
+ }
34
+ // ol does not like when it returns null.
35
+ createRenderer() {
36
+ return new EmptyLayerRenderer(this);
23
37
  }
24
38
  }
25
39
  export default Layer;
@@ -1,104 +1,18 @@
1
- import { MapLibreLayer } from '@geoblocks/ol-maplibre-layer';
2
- import OlMap from 'ol/Map';
3
- import { MobilityLayerOptions } from '../mixins/MobilityLayerMixin';
4
- import type { MapLibreLayerOptions, MapLibreOptions } from '@geoblocks/ol-maplibre-layer/lib/types/MapLibreLayer';
1
+ import { MapLibreLayer } from '@geoblocks/ol-maplibre-layer/lib';
2
+ import { EventsKey } from 'ol/events';
3
+ import Map from 'ol/Map';
4
+ import MaplibreLayerRenderer from '../renderers/MaplibreLayerRenderer';
5
+ import { MobilityLayerOptions } from './Layer';
6
+ import type { MapLibreLayerOptions, MapLibreOptions } from '@geoblocks/ol-maplibre-layer/lib/MapLibreLayer';
7
+ import type { QueryRenderedFeaturesOptions } from 'maplibre-gl';
5
8
  export type MaplibreLayerOptions = {
6
9
  apiKey?: string;
7
10
  apiKeyName?: string;
8
11
  mapLibreOptions?: MapLibreOptions;
12
+ queryRenderedFeaturesOptions?: QueryRenderedFeaturesOptions | undefined;
9
13
  style?: maplibregl.StyleSpecification | null | string;
10
14
  url?: string;
11
- } & MapLibreLayerOptions & MobilityLayerOptions;
12
- declare const MaplibreLayer_base: {
13
- new (...args: any[]): {
14
- olEventsKeys: import("ol/events").EventsKey[];
15
- options?: import("../mixins/PropertiesLayerMixin").PropertiesLayerMixinOptions;
16
- attachToMap(map: OlMap): void;
17
- detachFromMap(): void;
18
- flat(): any[];
19
- onChildrenChange(oldValue: import("ol/layer").Layer[]): void;
20
- setMapInternal: ((map: OlMap) => void) & ((map: import("ol/Map").default | null) => void);
21
- children: import("ol/layer").Layer<import("ol/source").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: number;
27
- readonly key: string;
28
- readonly map: OlMap;
29
- readonly name: string;
30
- olLayer: import("ol/layer").Layer;
31
- parent: import("ol/layer").Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>;
32
- visible: boolean;
33
- on: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
34
- once: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
35
- un: import("ol/layer/Layer").LayerOnSignature<void>;
36
- render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
37
- getSource: () => import("ol/source").Source | null;
38
- getRenderSource: () => import("ol/source").Source | null;
39
- getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<Array<import("ol/Feature").FeatureLike>>;
40
- getData: (pixel: import("ol/pixel").Pixel) => Uint8ClampedArray | Uint8Array | Float32Array | DataView | null;
41
- isVisible: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
42
- getAttributions: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => Array<string>;
43
- unrender: () => void;
44
- getDeclutter: () => string;
45
- renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
46
- renderDeferred: (frameState: import("ol/Map").FrameState) => void;
47
- getMapInternal: () => import("ol/Map").default | null;
48
- setMap: (map: import("ol/Map").default | null) => void;
49
- setSource: (source: import("ol/source").Source | null) => void;
50
- getRenderer: () => import("ol/renderer/Layer").default<any> | null;
51
- hasRenderer: () => boolean;
52
- getBackground: () => import("ol/layer/Base").BackgroundColor | false;
53
- getClassName: () => string;
54
- getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
55
- getLayersArray: (array?: import("ol/layer").default<import("ol/source").default, import("ol/renderer/Layer").default<any>>[] | undefined) => Array<import("ol/layer").default>;
56
- getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => Array<import("ol/layer/Layer").State>;
57
- getExtent: () => import("ol/extent").Extent | undefined;
58
- getMaxResolution: () => number;
59
- getMinResolution: () => number;
60
- getMinZoom: () => number;
61
- getMaxZoom: () => number;
62
- getOpacity: () => number;
63
- getSourceState: () => import("ol/source/Source").State;
64
- getVisible: () => boolean;
65
- getZIndex: () => number | undefined;
66
- setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
67
- setExtent: (extent: import("ol/extent").Extent | undefined) => void;
68
- setMaxResolution: (maxResolution: number) => void;
69
- setMinResolution: (minResolution: number) => void;
70
- setMaxZoom: (maxZoom: number) => void;
71
- setMinZoom: (minZoom: number) => void;
72
- setOpacity: (opacity: number) => void;
73
- setVisible: (visible: boolean) => void;
74
- setZIndex: (zindex: number) => void;
75
- get: (key: string) => any;
76
- getKeys: () => Array<string>;
77
- getProperties: () => {
78
- [x: string]: any;
79
- };
80
- getPropertiesInternal: () => {
81
- [x: string]: any;
82
- } | null;
83
- hasProperties: () => boolean;
84
- notify: (key: string, oldValue: any) => void;
85
- addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
86
- removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
87
- set: (key: string, value: any, silent?: boolean | undefined) => void;
88
- setProperties: (values: {
89
- [x: string]: any;
90
- }, silent?: boolean | undefined) => void;
91
- unset: (key: string, silent?: boolean | undefined) => void;
92
- changed: () => void;
93
- getRevision: () => number;
94
- addEventListener: (type: string, listener: import("ol/events").Listener) => void;
95
- dispatchEvent: (event: import("ol/events/Event").default | string) => boolean | undefined;
96
- getListeners: (type: string) => Array<import("ol/events").Listener> | undefined;
97
- hasListener: (type?: string | undefined) => boolean;
98
- removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
99
- dispose: () => void;
100
- };
101
- } & typeof MapLibreLayer;
15
+ } & MobilityLayerOptions & Omit<MapLibreLayerOptions, 'mapLibreOptions'>;
102
16
  /**
103
17
  * An OpenLayers layer able to display data from the [geOps Maps API](https://developer.geops.io/apis/maps).
104
18
  *
@@ -121,40 +35,59 @@ declare const MaplibreLayer_base: {
121
35
  * });
122
36
  *
123
37
  * @classproperty {maplibregl.Map} mapLibreMap - The Maplibre map object. Readonly.
124
- * @classproperty {string} style - geOps Maps api style.
125
- * @extends {ol/layer/Layer~Layer}
38
+ * @classproperty {string} style - The [geOps Maps API](https://developer.geops.io/apis/maps) style.
39
+ *
40
+ *
41
+ * @see <a href="/example/ol-maplibre-layer">OpenLayers Maplibre layer example</a>
42
+ *
43
+ * @extends {geoblocks/ol-maplibre-layer/MapLibreLayer}
126
44
  * @public
127
45
  */
128
- declare class MaplibreLayer extends MaplibreLayer_base {
46
+ declare class MaplibreLayer extends MapLibreLayer {
47
+ olEventsKeys: EventsKey[];
48
+ set apiKey(newValue: string);
49
+ get apiKey(): string;
50
+ set apiKeyName(newValue: string);
51
+ get apiKeyName(): string;
52
+ /**
53
+ * @deprecated Use layer.mapLibreMap.
54
+ */
55
+ get maplibreMap(): maplibregl.Map | undefined;
56
+ /**
57
+ * @deprecated Use layer.mapLibreMap.
58
+ */
59
+ get mbMap(): maplibregl.Map | undefined;
60
+ get style(): string;
61
+ set style(newValue: string);
62
+ get url(): string;
63
+ set url(newValue: string);
129
64
  /**
130
65
  * Constructor.
131
66
  *
132
- * @param {MaplibreLayerOptions} options
133
- * @param {string} options.apiKey Access key for [geOps apis](https://developer.geops.io/).
134
- * @param {string} [options.apiKeyName="key"] The geOps Maps API key name.
135
- * @param {maplibregl.MapOptions} [options.mapLibreOptions={ interactive: false, trackResize: false, attributionControl: false }] Maplibre map options.
136
- * @param {string} [options.style="travic_v2"] The geOps Maps API style.
137
- * @param {string} [options.url="https://maps.geops.io"] The geOps Maps API url.
67
+ * @param {Object} options
68
+ * @param {string} options.apiKey Accesss key for [geOps APIs](https://developer.geops.io/).
69
+ * @param {string} [options.apiKeyName="key"] The [geOps Maps API](https://developer.geops.io/apis/maps) key name.
70
+ * @param {maplibregl.MapOptions} [options.mapLibreOptions={ interactive: false, trackResize: false, attributionControl: false }] MapLibre map options.
71
+ * @param {string} [options.style="travic_v2"] The [geOps Maps API](https://developer.geops.io/apis/maps) style.
72
+ * @param {string} [options.url="https://maps.geops.io"] The [geOps Maps API](https://developer.geops.io/apis/maps) url.
138
73
  */
139
74
  constructor(options: MaplibreLayerOptions);
140
75
  /**
141
76
  * Initialize the layer and listen to feature clicks.
142
- * @param {ol/Map~Map} map
143
77
  */
144
- attachToMap(map: OlMap): void;
78
+ attachToMap(): void;
145
79
  /**
146
80
  * Create a copy of the MaplibreLayer.
147
- * @param {MaplibreLayerOptions} newOptions Options to override
81
+ *
82
+ * @param {Object} newOptions Options to override. See constructor.
148
83
  * @return {MaplibreLayer} A MaplibreLayer layer
84
+ * @public
149
85
  */
150
86
  clone(newOptions: MaplibreLayerOptions): MaplibreLayer;
151
- getStyle(): string;
87
+ createRenderer(): MaplibreLayerRenderer;
88
+ detachFromMap(): void;
89
+ getStyle(): any;
90
+ setMapInternal(map: Map): void;
152
91
  updateMaplibreMap(): void;
153
- get maplibreMap(): maplibregl.Map | undefined;
154
- get mbMap(): maplibregl.Map | undefined;
155
- get style(): string;
156
- set style(newValue: string);
157
- get url(): string;
158
- set url(newValue: string);
159
92
  }
160
93
  export default MaplibreLayer;
@@ -1,7 +1,9 @@
1
- import { MapLibreLayer } from '@geoblocks/ol-maplibre-layer';
1
+ import { MapLibreLayer } from '@geoblocks/ol-maplibre-layer/lib';
2
2
  import debounce from 'lodash.debounce';
3
+ import { unByKey } from 'ol/Observable';
3
4
  import { getUrlWithParams } from '../../common/utils';
4
- import MobilityLayerMixin from '../mixins/MobilityLayerMixin';
5
+ import MaplibreLayerRenderer from '../renderers/MaplibreLayerRenderer';
6
+ import defineDeprecatedProperties from '../utils/defineDeprecatedProperties';
5
7
  const buildStyleUrl = (url, style, apiKey, apiKeyName) => {
6
8
  return getUrlWithParams(`${url}/styles/${style}/style.json`, {
7
9
  [apiKeyName]: apiKey,
@@ -37,62 +39,122 @@ if (typeof window !== 'undefined' &&
37
39
  * });
38
40
  *
39
41
  * @classproperty {maplibregl.Map} mapLibreMap - The Maplibre map object. Readonly.
40
- * @classproperty {string} style - geOps Maps api style.
41
- * @extends {ol/layer/Layer~Layer}
42
+ * @classproperty {string} style - The [geOps Maps API](https://developer.geops.io/apis/maps) style.
43
+ *
44
+ *
45
+ * @see <a href="/example/ol-maplibre-layer">OpenLayers Maplibre layer example</a>
46
+ *
47
+ * @extends {geoblocks/ol-maplibre-layer/MapLibreLayer}
42
48
  * @public
43
49
  */
44
- class MaplibreLayer extends MobilityLayerMixin(MapLibreLayer) {
50
+ class MaplibreLayer extends MapLibreLayer {
51
+ set apiKey(newValue) {
52
+ this.set('apiKey', newValue);
53
+ }
54
+ get apiKey() {
55
+ return this.get('apiKey');
56
+ }
57
+ set apiKeyName(newValue) {
58
+ this.set('apiKeyName', newValue);
59
+ }
60
+ get apiKeyName() {
61
+ return this.get('apiKeyName');
62
+ }
63
+ /**
64
+ * @deprecated Use layer.mapLibreMap.
65
+ */
66
+ get maplibreMap() {
67
+ deprecated('MaplibreLayer.maplibreMap is deprecated. Use layer.mapLibreMap.');
68
+ return this.mapLibreMap;
69
+ }
70
+ // get queryRenderedFeaturesOptions(): maplibregl.QueryRenderedFeaturesOptions {
71
+ // return this.get('queryRenderedFeaturesOptions');
72
+ // }
73
+ // set queryRenderedFeaturesOptions(
74
+ // newValue: maplibregl.QueryRenderedFeaturesOptions,
75
+ // ) {
76
+ // this.set('queryRenderedFeaturesOptions', newValue);
77
+ // }
78
+ /**
79
+ * @deprecated Use layer.mapLibreMap.
80
+ */
81
+ get mbMap() {
82
+ deprecated('MaplibreLayer.mbMap is deprecated. Use layer.maplibreMap.');
83
+ return this.maplibreMap;
84
+ }
85
+ get style() {
86
+ return this.get('style');
87
+ }
88
+ set style(newValue) {
89
+ this.set('style', newValue);
90
+ }
91
+ get url() {
92
+ return this.get('url');
93
+ }
94
+ set url(newValue) {
95
+ this.set('url', newValue);
96
+ }
45
97
  /**
46
98
  * Constructor.
47
99
  *
48
- * @param {MaplibreLayerOptions} options
49
- * @param {string} options.apiKey Access key for [geOps apis](https://developer.geops.io/).
50
- * @param {string} [options.apiKeyName="key"] The geOps Maps API key name.
51
- * @param {maplibregl.MapOptions} [options.mapLibreOptions={ interactive: false, trackResize: false, attributionControl: false }] Maplibre map options.
52
- * @param {string} [options.style="travic_v2"] The geOps Maps API style.
53
- * @param {string} [options.url="https://maps.geops.io"] The geOps Maps API url.
100
+ * @param {Object} options
101
+ * @param {string} options.apiKey Accesss key for [geOps APIs](https://developer.geops.io/).
102
+ * @param {string} [options.apiKeyName="key"] The [geOps Maps API](https://developer.geops.io/apis/maps) key name.
103
+ * @param {maplibregl.MapOptions} [options.mapLibreOptions={ interactive: false, trackResize: false, attributionControl: false }] MapLibre map options.
104
+ * @param {string} [options.style="travic_v2"] The [geOps Maps API](https://developer.geops.io/apis/maps) style.
105
+ * @param {string} [options.url="https://maps.geops.io"] The [geOps Maps API](https://developer.geops.io/apis/maps) url.
54
106
  */
55
107
  constructor(options) {
108
+ var _a;
56
109
  const newOptions = Object.assign(Object.assign({ apiKeyName: 'key', style: 'travic_v2', url: 'https://maps.geops.io' }, (options || {})), { mapLibreOptions: Object.assign({}, (options.mapLibreOptions || {})) });
57
110
  if (!newOptions.mapLibreOptions.style &&
111
+ ((_a = newOptions.url) === null || _a === void 0 ? void 0 : _a.includes('style.json'))) {
112
+ newOptions.mapLibreOptions.style = newOptions.url;
113
+ }
114
+ else if (!newOptions.mapLibreOptions.style &&
58
115
  newOptions.apiKey &&
59
116
  newOptions.style &&
60
117
  typeof newOptions.style === 'string') {
61
118
  newOptions.mapLibreOptions.style = buildStyleUrl(newOptions.url, newOptions.style, newOptions.apiKey, newOptions.apiKeyName);
62
119
  }
63
120
  super(newOptions);
121
+ this.olEventsKeys = [];
122
+ // For backward compatibility with v2
123
+ defineDeprecatedProperties(this, options);
124
+ // We save the options to be able to clone the layer.
125
+ // and to see if the style is defined by the maplibreOptions given by the user.
126
+ this.set('options', options);
64
127
  }
65
128
  /**
66
129
  * Initialize the layer and listen to feature clicks.
67
- * @param {ol/Map~Map} map
68
130
  */
69
- attachToMap(map) {
70
- super.attachToMap(map);
131
+ attachToMap() {
71
132
  const updateMaplibreMapDebounced = debounce(this.updateMaplibreMap.bind(this), 150);
72
133
  updateMaplibreMapDebounced();
73
134
  this.olEventsKeys.push(this.on('propertychange', (evt) => {
74
- if (/(url|style)/.test(evt.key)) {
135
+ if (/(url|style|apiKey|apiKeyName)/.test(evt.key)) {
75
136
  updateMaplibreMapDebounced();
76
137
  }
77
138
  }));
78
139
  }
79
- // get queryRenderedFeaturesOptions(): maplibregl.QueryRenderedFeaturesOptions {
80
- // return this.get('queryRenderedFeaturesOptions');
81
- // }
82
- // set queryRenderedFeaturesOptions(
83
- // newValue: maplibregl.QueryRenderedFeaturesOptions,
84
- // ) {
85
- // this.set('queryRenderedFeaturesOptions', newValue);
86
- // }
87
140
  /**
88
141
  * Create a copy of the MaplibreLayer.
89
- * @param {MaplibreLayerOptions} newOptions Options to override
142
+ *
143
+ * @param {Object} newOptions Options to override. See constructor.
90
144
  * @return {MaplibreLayer} A MaplibreLayer layer
145
+ * @public
91
146
  */
92
147
  clone(newOptions) {
93
- return new MaplibreLayer(Object.assign(Object.assign({}, (this.options || {})), (newOptions || {})));
148
+ return new MaplibreLayer(Object.assign(Object.assign({}, (this.get('options') || {})), (newOptions || {})));
149
+ }
150
+ createRenderer() {
151
+ return new MaplibreLayerRenderer(this);
152
+ }
153
+ detachFromMap() {
154
+ unByKey(this.olEventsKeys);
94
155
  }
95
156
  getStyle() {
157
+ var _a, _b;
96
158
  // If the style is a complete style object, use it directly.
97
159
  if (this.style &&
98
160
  typeof this.style === 'object' &&
@@ -104,8 +166,22 @@ class MaplibreLayer extends MobilityLayerMixin(MapLibreLayer) {
104
166
  if (this.url.includes('style.json')) {
105
167
  return this.url;
106
168
  }
169
+ // If the user has defined the style by the maplibreOptions, we use it directly.
170
+ if ((_b = (_a = this.get('options')) === null || _a === void 0 ? void 0 : _a.mapLibreOptions) === null || _b === void 0 ? void 0 : _b.style) {
171
+ return this.get('options').mapLibreOptions.style;
172
+ }
107
173
  /// Otherwise build the complete style url.
108
- return buildStyleUrl(this.url, this.style, this.get('apiKey'), this.get('apiKeyName'));
174
+ return buildStyleUrl(this.url, this.style, this.apiKey, this.apiKeyName);
175
+ }
176
+ setMapInternal(map) {
177
+ if (map) {
178
+ super.setMapInternal(map);
179
+ this.attachToMap();
180
+ }
181
+ else {
182
+ this.detachFromMap();
183
+ super.setMapInternal(map);
184
+ }
109
185
  }
110
186
  updateMaplibreMap() {
111
187
  var _a;
@@ -117,25 +193,5 @@ class MaplibreLayer extends MobilityLayerMixin(MapLibreLayer) {
117
193
  console.error('Error while updating MaplibreMap', e);
118
194
  }
119
195
  }
120
- get maplibreMap() {
121
- deprecated('MaplibreLayer.maplibreMap is deprecated. Use layer.mapLibreMap.');
122
- return this.mapLibreMap;
123
- }
124
- get mbMap() {
125
- deprecated('MaplibreLayer.mbMap is deprecated. Use layer.maplibreMap.');
126
- return this.maplibreMap;
127
- }
128
- get style() {
129
- return this.get('style');
130
- }
131
- set style(newValue) {
132
- this.set('style', newValue);
133
- }
134
- get url() {
135
- return this.get('url');
136
- }
137
- set url(newValue) {
138
- this.set('url', newValue);
139
- }
140
196
  }
141
197
  export default MaplibreLayer;