mobility-toolbox-js 3.0.0-beta.36 → 3.0.0-beta.38

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.
@@ -27,7 +27,7 @@ export type RoutingControlOptions = {
27
27
  style?: StyleLike;
28
28
  useRawViaPoints?: boolean;
29
29
  } & Options;
30
- export type AbotControllersByGraph = Record<string, AbortController>;
30
+ export type AbortControllersByGraph = Record<string, AbortController>;
31
31
  /**
32
32
  * This OpenLayers control allows the user to add and modifiy via points to
33
33
  * a map and request a route from the [geOps Routing API](https://developer.geops.io/apis/routing/).
@@ -250,7 +250,7 @@ class RoutingControl extends Control {
250
250
  */
251
251
  // Define and add modify interaction
252
252
  this.modifyInteraction = new Modify({
253
- // hitDetection: this.routingLayer, // Create a bug, the first point is always selected even if the mous eis far away
253
+ // hitDetection: this.routingLayer, // TODO: wait for ol, fixed in https://github.com/openlayers/openlayers/pull/16393
254
254
  deleteCondition: (e) => {
255
255
  var _a;
256
256
  const feats = ((_a = e.target) === null || _a === void 0 ? void 0 : _a.getFeaturesAtPixel(e.pixel, {
@@ -294,7 +294,7 @@ class RoutingControl extends Control {
294
294
  var _a, _b;
295
295
  /* Calls RoutingAPI to draw a route using the viaPoints array */
296
296
  this.abortRequests();
297
- (_b = (_a = this.routingLayer) === null || _a === void 0 ? void 0 : _a.getSource()) === null || _b === void 0 ? void 0 : _b.clear(true);
297
+ (_b = (_a = this.routingLayer) === null || _a === void 0 ? void 0 : _a.getSource()) === null || _b === void 0 ? void 0 : _b.clear();
298
298
  if (!this.viaPoints.length) {
299
299
  return null;
300
300
  }
package/ol/index.d.ts CHANGED
@@ -2,6 +2,5 @@ export * from "../api";
2
2
  export * from "../common";
3
3
  export * from "./controls";
4
4
  export * from "./layers";
5
- export * from "./mixins";
6
5
  export * from "./styles";
7
6
  export * from "./utils";
package/ol/index.js CHANGED
@@ -2,6 +2,5 @@ export * from '../api';
2
2
  export * from '../common';
3
3
  export * from './controls';
4
4
  export * from './layers';
5
- export * from './mixins';
6
5
  export * from './styles';
7
6
  export * from './utils';
@@ -1,101 +1,24 @@
1
+ import { Map } from 'ol';
1
2
  import OLLayer from 'ol/layer/Layer';
2
3
  import LayerRenderer from 'ol/renderer/Layer';
3
- import { MobilityLayerOptions } from '../mixins/MobilityLayerMixin';
4
- declare const Layer_base: {
5
- new (...args: any[]): {
6
- olEventsKeys: import("ol/events").EventsKey[];
7
- options?: import("../mixins/PropertiesLayerMixin").PropertiesLayerMixinOptions;
8
- attachToMap(map: import("ol").Map): void;
9
- detachFromMap(): void;
10
- flat(): any[];
11
- onChildrenChange(oldValue: OLLayer[]): void;
12
- setMapInternal: ((map: import("ol").Map) => void) & ((map: import("ol").default | null) => void);
13
- children: OLLayer<import("ol/source").Source, LayerRenderer<any>>[];
14
- get copyrights(): string;
15
- set copyrights(newCopyrights: string | string[]);
16
- disabled: boolean;
17
- readonly group: string;
18
- hitTolerance: number;
19
- readonly key: string;
20
- readonly map: import("ol").Map;
21
- readonly name: string;
22
- olLayer: OLLayer;
23
- parent: OLLayer<import("ol/source").Source, LayerRenderer<any>>;
24
- visible: boolean;
25
- on: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
26
- once: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
27
- un: import("ol/layer/Layer").LayerOnSignature<void>;
28
- render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
29
- getSource: () => import("ol/source").Source | null;
30
- getRenderSource: () => import("ol/source").Source | null;
31
- getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<Array<import("ol/Feature").FeatureLike>>;
32
- getData: (pixel: import("ol/pixel").Pixel) => Uint8ClampedArray | Uint8Array | Float32Array | DataView | null;
33
- isVisible: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
34
- getAttributions: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => Array<string>;
35
- unrender: () => void;
36
- getDeclutter: () => string;
37
- renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
38
- renderDeferred: (frameState: import("ol/Map").FrameState) => void;
39
- getMapInternal: () => import("ol").default | null;
40
- setMap: (map: import("ol").default | null) => void;
41
- setSource: (source: import("ol/source").Source | null) => void;
42
- getRenderer: () => LayerRenderer<any> | null;
43
- hasRenderer: () => boolean;
44
- getBackground: () => import("ol/layer/Base").BackgroundColor | false;
45
- getClassName: () => string;
46
- getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
47
- getLayersArray: (array?: import("ol/layer/Layer").default<import("ol/source").default, import("ol/renderer/Layer").default<any>>[] | undefined) => Array<import("ol/layer/Layer").default>;
48
- getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => Array<import("ol/layer/Layer").State>;
49
- getExtent: () => import("ol/extent").Extent | undefined;
50
- getMaxResolution: () => number;
51
- getMinResolution: () => number;
52
- getMinZoom: () => number;
53
- getMaxZoom: () => number;
54
- getOpacity: () => number;
55
- getSourceState: () => import("ol/source/Source").State;
56
- getVisible: () => boolean;
57
- getZIndex: () => number | undefined;
58
- setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
59
- setExtent: (extent: import("ol/extent").Extent | undefined) => void;
60
- setMaxResolution: (maxResolution: number) => void;
61
- setMinResolution: (minResolution: number) => void;
62
- setMaxZoom: (maxZoom: number) => void;
63
- setMinZoom: (minZoom: number) => void;
64
- setOpacity: (opacity: number) => void;
65
- setVisible: (visible: boolean) => void;
66
- setZIndex: (zindex: number) => void;
67
- get: (key: string) => any;
68
- getKeys: () => Array<string>;
69
- getProperties: () => {
70
- [x: string]: any;
71
- };
72
- getPropertiesInternal: () => {
73
- [x: string]: any;
74
- } | null;
75
- hasProperties: () => boolean;
76
- notify: (key: string, oldValue: any) => void;
77
- addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
78
- removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
79
- set: (key: string, value: any, silent?: boolean | undefined) => void;
80
- setProperties: (values: {
81
- [x: string]: any;
82
- }, silent?: boolean | undefined) => void;
83
- unset: (key: string, silent?: boolean | undefined) => void;
84
- changed: () => void;
85
- getRevision: () => number;
86
- addEventListener: (type: string, listener: import("ol/events").Listener) => void;
87
- dispatchEvent: (event: import("ol/events/Event").default | string) => boolean | undefined;
88
- getListeners: (type: string) => Array<import("ol/events").Listener> | undefined;
89
- hasListener: (type?: string | undefined) => boolean;
90
- removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
91
- dispose: () => void;
92
- };
93
- } & typeof OLLayer;
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>;
94
17
  /**
95
18
  * An OpenLayers layer here only for backward compatibility v2.
96
19
  * @deprecated Use an OpenLayers Layer instead.
97
20
  */
98
- declare class Layer extends Layer_base {
21
+ declare class Layer extends OLLayer {
99
22
  constructor(options: MobilityLayerOptions);
100
23
  clone(newOptions: MobilityLayerOptions): Layer;
101
24
  createRenderer(): LayerRenderer<OLLayer>;
@@ -1,7 +1,7 @@
1
1
  import debounce from 'lodash.debounce';
2
2
  import OLLayer from 'ol/layer/Layer';
3
3
  import LayerRenderer from 'ol/renderer/Layer';
4
- import MobilityLayerMixin from '../mixins/MobilityLayerMixin';
4
+ import defineDeprecatedProperties from '../utils/defineDeprecatedProperties';
5
5
  let deprecated = () => { };
6
6
  if (typeof window !== 'undefined' &&
7
7
  new URLSearchParams(window.location.search).get('deprecated')) {
@@ -22,13 +22,14 @@ class EmptyLayerRenderer extends LayerRenderer {
22
22
  * An OpenLayers layer here only for backward compatibility v2.
23
23
  * @deprecated Use an OpenLayers Layer instead.
24
24
  */
25
- class Layer extends MobilityLayerMixin(OLLayer) {
25
+ class Layer extends OLLayer {
26
26
  constructor(options) {
27
27
  super(options);
28
+ defineDeprecatedProperties(this, options);
28
29
  deprecated('Layer is deprecated. Use an OpenLayers Layer instead.');
29
30
  }
30
31
  clone(newOptions) {
31
- return new Layer(Object.assign(Object.assign({}, (this.options || {})), (newOptions || {})));
32
+ return new Layer(Object.assign(Object.assign({}, (this.get('options') || {})), (newOptions || {})));
32
33
  }
33
34
  // ol does not like when it returns null.
34
35
  createRenderer() {
@@ -1,6 +1,7 @@
1
1
  import { MapLibreLayer } from '@geoblocks/ol-maplibre-layer';
2
- import OlMap from 'ol/Map';
3
- import { MobilityLayerOptions } from '../mixins/MobilityLayerMixin';
2
+ import { EventsKey } from 'ol/events';
3
+ import Map from 'ol/Map';
4
+ import { MobilityLayerOptions } from './Layer';
4
5
  import type { MapLibreLayerOptions, MapLibreOptions } from '@geoblocks/ol-maplibre-layer/lib/types/MapLibreLayer';
5
6
  import type { QueryRenderedFeaturesOptions } from 'maplibre-gl';
6
7
  export type MaplibreLayerOptions = {
@@ -11,96 +12,6 @@ export type MaplibreLayerOptions = {
11
12
  style?: maplibregl.StyleSpecification | null | string;
12
13
  url?: string;
13
14
  } & MapLibreLayerOptions & MobilityLayerOptions;
14
- declare const MaplibreLayer_base: {
15
- new (...args: any[]): {
16
- olEventsKeys: import("ol/events").EventsKey[];
17
- options?: import("../mixins/PropertiesLayerMixin").PropertiesLayerMixinOptions;
18
- attachToMap(map: OlMap): void;
19
- detachFromMap(): void;
20
- flat(): any[];
21
- onChildrenChange(oldValue: import("ol/layer").Layer[]): void;
22
- setMapInternal: ((map: OlMap) => void) & ((map: import("ol/Map").default | null) => void);
23
- children: import("ol/layer").Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>[];
24
- get copyrights(): string;
25
- set copyrights(newCopyrights: string | string[]);
26
- disabled: boolean;
27
- readonly group: string;
28
- hitTolerance: number;
29
- readonly key: string;
30
- readonly map: OlMap;
31
- readonly name: string;
32
- olLayer: import("ol/layer").Layer;
33
- parent: import("ol/layer").Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>>;
34
- visible: boolean;
35
- on: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
36
- once: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
37
- un: import("ol/layer/Layer").LayerOnSignature<void>;
38
- render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
39
- getSource: () => import("ol/source").Source | null;
40
- getRenderSource: () => import("ol/source").Source | null;
41
- getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<Array<import("ol/Feature").FeatureLike>>;
42
- getData: (pixel: import("ol/pixel").Pixel) => Uint8ClampedArray | Uint8Array | Float32Array | DataView | null;
43
- isVisible: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
44
- getAttributions: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => Array<string>;
45
- unrender: () => void;
46
- getDeclutter: () => string;
47
- renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
48
- renderDeferred: (frameState: import("ol/Map").FrameState) => void;
49
- getMapInternal: () => import("ol/Map").default | null;
50
- setMap: (map: import("ol/Map").default | null) => void;
51
- setSource: (source: import("ol/source").Source | null) => void;
52
- getRenderer: () => import("ol/renderer/Layer").default<any> | null;
53
- hasRenderer: () => boolean;
54
- getBackground: () => import("ol/layer/Base").BackgroundColor | false;
55
- getClassName: () => string;
56
- getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
57
- getLayersArray: (array?: import("ol/layer").default<import("ol/source").default, import("ol/renderer/Layer").default<any>>[] | undefined) => Array<import("ol/layer").default>;
58
- getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => Array<import("ol/layer/Layer").State>;
59
- getExtent: () => import("ol/extent").Extent | undefined;
60
- getMaxResolution: () => number;
61
- getMinResolution: () => number;
62
- getMinZoom: () => number;
63
- getMaxZoom: () => number;
64
- getOpacity: () => number;
65
- getSourceState: () => import("ol/source/Source").State;
66
- getVisible: () => boolean;
67
- getZIndex: () => number | undefined;
68
- setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
69
- setExtent: (extent: import("ol/extent").Extent | undefined) => void;
70
- setMaxResolution: (maxResolution: number) => void;
71
- setMinResolution: (minResolution: number) => void;
72
- setMaxZoom: (maxZoom: number) => void;
73
- setMinZoom: (minZoom: number) => void;
74
- setOpacity: (opacity: number) => void;
75
- setVisible: (visible: boolean) => void;
76
- setZIndex: (zindex: number) => void;
77
- get: (key: string) => any;
78
- getKeys: () => Array<string>;
79
- getProperties: () => {
80
- [x: string]: any;
81
- };
82
- getPropertiesInternal: () => {
83
- [x: string]: any;
84
- } | null;
85
- hasProperties: () => boolean;
86
- notify: (key: string, oldValue: any) => void;
87
- addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
88
- removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
89
- set: (key: string, value: any, silent?: boolean | undefined) => void;
90
- setProperties: (values: {
91
- [x: string]: any;
92
- }, silent?: boolean | undefined) => void;
93
- unset: (key: string, silent?: boolean | undefined) => void;
94
- changed: () => void;
95
- getRevision: () => number;
96
- addEventListener: (type: string, listener: import("ol/events").Listener) => void;
97
- dispatchEvent: (event: import("ol/events/Event").default | string) => boolean | undefined;
98
- getListeners: (type: string) => Array<import("ol/events").Listener> | undefined;
99
- hasListener: (type?: string | undefined) => boolean;
100
- removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
101
- dispose: () => void;
102
- };
103
- } & typeof MapLibreLayer;
104
15
  /**
105
16
  * An OpenLayers layer able to display data from the [geOps Maps API](https://developer.geops.io/apis/maps).
106
17
  *
@@ -128,11 +39,11 @@ declare const MaplibreLayer_base: {
128
39
  *
129
40
  * @see <a href="/example/ol-maplibre-layer">OpenLayers Maplibre layer example</a>
130
41
  *
131
- * @extends {ol/layer/Layer~Layer}
132
42
  * @extends {geoblocks/ol-maplibre-layer/MapLibreLayer}
133
43
  * @public
134
44
  */
135
- declare class MaplibreLayer extends MaplibreLayer_base {
45
+ declare class MaplibreLayer extends MapLibreLayer {
46
+ olEventsKeys: EventsKey[];
136
47
  /**
137
48
  * Constructor.
138
49
  *
@@ -146,9 +57,8 @@ declare class MaplibreLayer extends MaplibreLayer_base {
146
57
  constructor(options: MaplibreLayerOptions);
147
58
  /**
148
59
  * Initialize the layer and listen to feature clicks.
149
- * @param {ol/Map~Map} map An OpenLayers map.
150
60
  */
151
- attachToMap(map: OlMap): void;
61
+ attachToMap(): void;
152
62
  /**
153
63
  * Create a copy of the MaplibreLayer.
154
64
  *
@@ -157,7 +67,9 @@ declare class MaplibreLayer extends MaplibreLayer_base {
157
67
  * @public
158
68
  */
159
69
  clone(newOptions: MaplibreLayerOptions): MaplibreLayer;
70
+ detachFromMap(): void;
160
71
  getStyle(): any;
72
+ setMapInternal(map: Map): void;
161
73
  updateMaplibreMap(): void;
162
74
  set apiKey(newValue: string);
163
75
  get apiKey(): string;
@@ -1,7 +1,8 @@
1
1
  import { MapLibreLayer } from '@geoblocks/ol-maplibre-layer';
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 defineDeprecatedProperties from '../utils/defineDeprecatedProperties';
5
6
  const buildStyleUrl = (url, style, apiKey, apiKeyName) => {
6
7
  return getUrlWithParams(`${url}/styles/${style}/style.json`, {
7
8
  [apiKeyName]: apiKey,
@@ -42,11 +43,10 @@ if (typeof window !== 'undefined' &&
42
43
  *
43
44
  * @see <a href="/example/ol-maplibre-layer">OpenLayers Maplibre layer example</a>
44
45
  *
45
- * @extends {ol/layer/Layer~Layer}
46
46
  * @extends {geoblocks/ol-maplibre-layer/MapLibreLayer}
47
47
  * @public
48
48
  */
49
- class MaplibreLayer extends MobilityLayerMixin(MapLibreLayer) {
49
+ class MaplibreLayer extends MapLibreLayer {
50
50
  /**
51
51
  * Constructor.
52
52
  *
@@ -71,13 +71,17 @@ class MaplibreLayer extends MobilityLayerMixin(MapLibreLayer) {
71
71
  newOptions.mapLibreOptions.style = buildStyleUrl(newOptions.url, newOptions.style, newOptions.apiKey, newOptions.apiKeyName);
72
72
  }
73
73
  super(newOptions);
74
+ this.olEventsKeys = [];
75
+ // For backward compatibility with v2
76
+ defineDeprecatedProperties(this, options);
77
+ // We save the options to be able to clone the layer.
78
+ // and to see if the style is defined by the maplibreOptions given by the user.
79
+ this.set('options', options);
74
80
  }
75
81
  /**
76
82
  * Initialize the layer and listen to feature clicks.
77
- * @param {ol/Map~Map} map An OpenLayers map.
78
83
  */
79
- attachToMap(map) {
80
- super.attachToMap(map);
84
+ attachToMap() {
81
85
  const updateMaplibreMapDebounced = debounce(this.updateMaplibreMap.bind(this), 150);
82
86
  updateMaplibreMapDebounced();
83
87
  this.olEventsKeys.push(this.on('propertychange', (evt) => {
@@ -86,14 +90,6 @@ class MaplibreLayer extends MobilityLayerMixin(MapLibreLayer) {
86
90
  }
87
91
  }));
88
92
  }
89
- // get queryRenderedFeaturesOptions(): maplibregl.QueryRenderedFeaturesOptions {
90
- // return this.get('queryRenderedFeaturesOptions');
91
- // }
92
- // set queryRenderedFeaturesOptions(
93
- // newValue: maplibregl.QueryRenderedFeaturesOptions,
94
- // ) {
95
- // this.set('queryRenderedFeaturesOptions', newValue);
96
- // }
97
93
  /**
98
94
  * Create a copy of the MaplibreLayer.
99
95
  *
@@ -102,10 +98,13 @@ class MaplibreLayer extends MobilityLayerMixin(MapLibreLayer) {
102
98
  * @public
103
99
  */
104
100
  clone(newOptions) {
105
- return new MaplibreLayer(Object.assign(Object.assign({}, (this.options || {})), (newOptions || {})));
101
+ return new MaplibreLayer(Object.assign(Object.assign({}, (this.get('options') || {})), (newOptions || {})));
102
+ }
103
+ detachFromMap() {
104
+ unByKey(this.olEventsKeys);
106
105
  }
107
106
  getStyle() {
108
- var _a;
107
+ var _a, _b;
109
108
  // If the style is a complete style object, use it directly.
110
109
  if (this.style &&
111
110
  typeof this.style === 'object' &&
@@ -117,13 +116,31 @@ class MaplibreLayer extends MobilityLayerMixin(MapLibreLayer) {
117
116
  if (this.url.includes('style.json')) {
118
117
  return this.url;
119
118
  }
120
- // If the style is defined by the maplibreOptions, we use it directly
121
- if ((_a = this.get('mapLibreOptions')) === null || _a === void 0 ? void 0 : _a.style) {
122
- return this.get('mapLibreOptions').style;
119
+ // If the user has defined the style by the maplibreOptions, we use it directly.
120
+ if ((_b = (_a = this.get('options')) === null || _a === void 0 ? void 0 : _a.mapLibreOptions) === null || _b === void 0 ? void 0 : _b.style) {
121
+ return this.get('options').mapLibreOptions.style;
123
122
  }
124
123
  /// Otherwise build the complete style url.
125
124
  return buildStyleUrl(this.url, this.style, this.apiKey, this.apiKeyName);
126
125
  }
126
+ // get queryRenderedFeaturesOptions(): maplibregl.QueryRenderedFeaturesOptions {
127
+ // return this.get('queryRenderedFeaturesOptions');
128
+ // }
129
+ // set queryRenderedFeaturesOptions(
130
+ // newValue: maplibregl.QueryRenderedFeaturesOptions,
131
+ // ) {
132
+ // this.set('queryRenderedFeaturesOptions', newValue);
133
+ // }
134
+ setMapInternal(map) {
135
+ if (map) {
136
+ super.setMapInternal(map);
137
+ this.attachToMap();
138
+ }
139
+ else {
140
+ this.detachFromMap();
141
+ super.setMapInternal(map);
142
+ }
143
+ }
127
144
  updateMaplibreMap() {
128
145
  var _a;
129
146
  try {
@@ -1,9 +1,9 @@
1
1
  import { FeatureState } from 'maplibre-gl';
2
2
  import { Feature, Map } from 'ol';
3
3
  import { Coordinate } from 'ol/coordinate';
4
+ import { EventsKey } from 'ol/events';
4
5
  import { Layer } from 'ol/layer';
5
6
  import { ObjectEvent } from 'ol/Object';
6
- import { Source } from 'ol/source';
7
7
  import { FilterFunction } from '../../common/typedefs';
8
8
  import { LayerGetFeatureInfoResponse } from '../../types';
9
9
  import MaplibreStyleLayerRenderer from '../renderers/MaplibreStyleLayerRenderer';
@@ -15,96 +15,6 @@ export type MaplibreStyleLayerOptions = {
15
15
  maplibreLayer?: MaplibreLayer;
16
16
  queryRenderedLayersFilter?: FilterFunction;
17
17
  } & MaplibreLayerOptions;
18
- declare const MaplibreStyleLayer_base: {
19
- new (...args: any[]): {
20
- olEventsKeys: import("ol/events").EventsKey[];
21
- options?: import("../mixins/PropertiesLayerMixin").PropertiesLayerMixinOptions;
22
- attachToMap(map: Map): void;
23
- detachFromMap(): void;
24
- flat(): any[];
25
- onChildrenChange(oldValue: Layer[]): void;
26
- setMapInternal: ((map: Map) => void) & ((map: import("ol/Map").default | null) => void);
27
- children: Layer<Source, import("ol/renderer/Layer").default<any>>[];
28
- get copyrights(): string;
29
- set copyrights(newCopyrights: string | string[]);
30
- disabled: boolean;
31
- readonly group: string;
32
- hitTolerance: number;
33
- readonly key: string;
34
- readonly map: Map;
35
- readonly name: string;
36
- olLayer: Layer;
37
- parent: Layer<Source, import("ol/renderer/Layer").default<any>>;
38
- visible: boolean;
39
- on: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
40
- once: import("ol/layer/Layer").LayerOnSignature<import("ol/events").EventsKey>;
41
- un: import("ol/layer/Layer").LayerOnSignature<void>;
42
- render: (frameState: import("ol/Map").FrameState | null, target: HTMLElement) => HTMLElement | null;
43
- getSource: () => Source | null;
44
- getRenderSource: () => Source | null;
45
- getFeatures: (pixel: import("ol/pixel").Pixel) => Promise<Array<import("ol/Feature").FeatureLike>>;
46
- getData: (pixel: import("ol/pixel").Pixel) => Uint8ClampedArray | Uint8Array | Float32Array | DataView | null;
47
- isVisible: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => boolean;
48
- getAttributions: (view?: import("ol").View | import("ol/View").ViewStateLayerStateExtent | undefined) => Array<string>;
49
- unrender: () => void;
50
- getDeclutter: () => string;
51
- renderDeclutter: (frameState: import("ol/Map").FrameState, layerState: import("ol/layer/Layer").State) => void;
52
- renderDeferred: (frameState: import("ol/Map").FrameState) => void;
53
- getMapInternal: () => import("ol/Map").default | null;
54
- setMap: (map: import("ol/Map").default | null) => void;
55
- setSource: (source: Source | null) => void;
56
- getRenderer: () => import("ol/renderer/Layer").default<any> | null;
57
- hasRenderer: () => boolean;
58
- getBackground: () => import("ol/layer/Base").BackgroundColor | false;
59
- getClassName: () => string;
60
- getLayerState: (managed?: boolean | undefined) => import("ol/layer/Layer").State;
61
- getLayersArray: (array?: import("ol/layer/Layer").default<import("ol/source/Source").default, import("ol/renderer/Layer").default<any>>[] | undefined) => Array<import("ol/layer/Layer").default>;
62
- getLayerStatesArray: (states?: import("ol/layer/Layer").State[] | undefined) => Array<import("ol/layer/Layer").State>;
63
- getExtent: () => import("ol/extent").Extent | undefined;
64
- getMaxResolution: () => number;
65
- getMinResolution: () => number;
66
- getMinZoom: () => number;
67
- getMaxZoom: () => number;
68
- getOpacity: () => number;
69
- getSourceState: () => import("ol/source/Source").State;
70
- getVisible: () => boolean;
71
- getZIndex: () => number | undefined;
72
- setBackground: (background?: import("ol/layer/Base").BackgroundColor | undefined) => void;
73
- setExtent: (extent: import("ol/extent").Extent | undefined) => void;
74
- setMaxResolution: (maxResolution: number) => void;
75
- setMinResolution: (minResolution: number) => void;
76
- setMaxZoom: (maxZoom: number) => void;
77
- setMinZoom: (minZoom: number) => void;
78
- setOpacity: (opacity: number) => void;
79
- setVisible: (visible: boolean) => void;
80
- setZIndex: (zindex: number) => void;
81
- get: (key: string) => any;
82
- getKeys: () => Array<string>;
83
- getProperties: () => {
84
- [x: string]: any;
85
- };
86
- getPropertiesInternal: () => {
87
- [x: string]: any;
88
- } | null;
89
- hasProperties: () => boolean;
90
- notify: (key: string, oldValue: any) => void;
91
- addChangeListener: (key: string, listener: import("ol/events").Listener) => void;
92
- removeChangeListener: (key: string, listener: import("ol/events").Listener) => void;
93
- set: (key: string, value: any, silent?: boolean | undefined) => void;
94
- setProperties: (values: {
95
- [x: string]: any;
96
- }, silent?: boolean | undefined) => void;
97
- unset: (key: string, silent?: boolean | undefined) => void;
98
- changed: () => void;
99
- getRevision: () => number;
100
- addEventListener: (type: string, listener: import("ol/events").Listener) => void;
101
- dispatchEvent: (event: import("ol/events/Event").default | string) => boolean | undefined;
102
- getListeners: (type: string) => Array<import("ol/events").Listener> | undefined;
103
- hasListener: (type?: string | undefined) => boolean;
104
- removeEventListener: (type: string, listener: import("ol/events").Listener) => void;
105
- dispose: () => void;
106
- };
107
- } & typeof Layer;
108
18
  /**
109
19
  * Layer that helps show/hide a specific subset of style layers of a [MaplibreLayer](./MaplibreLayer.js~MaplibreLayer.html).
110
20
  *
@@ -127,8 +37,9 @@ declare const MaplibreStyleLayer_base: {
127
37
  * @extends {ol/layer/Layer~Layer}
128
38
  * @public
129
39
  */
130
- declare class MaplibreStyleLayer extends MaplibreStyleLayer_base {
40
+ declare class MaplibreStyleLayer extends Layer {
131
41
  highlightedFeatures: Feature[];
42
+ olEventsKeys: EventsKey[];
132
43
  selectedFeatures: Feature[];
133
44
  /**
134
45
  * Constructor.
@@ -206,6 +117,7 @@ declare class MaplibreStyleLayer extends MaplibreStyleLayer_base {
206
117
  * @deprecated Use layer.setFeatureState(features, {hover: true|false}) instead.
207
118
  */
208
119
  setHoverState(features: Feature[], state: boolean): void;
120
+ setMapInternal(map: Map): void;
209
121
  get beforeId(): string;
210
122
  set beforeId(newValue: string | undefined);
211
123
  get layers(): maplibregl.AddLayerObject[];
@@ -1,9 +1,10 @@
1
1
  import debounce from 'lodash.debounce';
2
2
  import { Layer } from 'ol/layer';
3
+ import { unByKey } from 'ol/Observable';
3
4
  import { Source } from 'ol/source';
4
5
  import { VECTOR_TILE_FEATURE_PROPERTY } from '../../common';
5
- import MobilityLayerMixin from '../mixins/MobilityLayerMixin';
6
6
  import MaplibreStyleLayerRenderer from '../renderers/MaplibreStyleLayerRenderer';
7
+ import defineDeprecatedProperties from '../utils/defineDeprecatedProperties';
7
8
  let deprecated = () => { };
8
9
  if (typeof window !== 'undefined' &&
9
10
  new URLSearchParams(window.location.search).get('deprecated')) {
@@ -34,7 +35,7 @@ if (typeof window !== 'undefined' &&
34
35
  * @extends {ol/layer/Layer~Layer}
35
36
  * @public
36
37
  */
37
- class MaplibreStyleLayer extends MobilityLayerMixin(Layer) {
38
+ class MaplibreStyleLayer extends Layer {
38
39
  /**
39
40
  * Constructor.
40
41
  *
@@ -74,7 +75,12 @@ class MaplibreStyleLayer extends MobilityLayerMixin(Layer) {
74
75
  }
75
76
  super(Object.assign({ source: new Source({}) }, options));
76
77
  this.highlightedFeatures = [];
78
+ this.olEventsKeys = [];
77
79
  this.selectedFeatures = [];
80
+ // For backward compatibility with v2
81
+ defineDeprecatedProperties(this, options);
82
+ // For cloning
83
+ this.set('options', options);
78
84
  this.beforeId = options.beforeId;
79
85
  this.onLoad = this.onLoad.bind(this);
80
86
  if (!this.layersFilter && this.layers) {
@@ -146,17 +152,17 @@ class MaplibreStyleLayer extends MobilityLayerMixin(Layer) {
146
152
  * @override
147
153
  */
148
154
  attachToMap(map) {
149
- if (this.maplibreLayer && !this.maplibreLayer.map) {
155
+ if (this.maplibreLayer && !this.maplibreLayer.getMapInternal()) {
150
156
  map.addLayer(this.maplibreLayer);
151
157
  }
152
- super.attachToMap(map);
153
- if (!this.map || !this.maplibreLayer) {
158
+ const mapInternal = this.getMapInternal();
159
+ if (!mapInternal || !this.maplibreLayer) {
154
160
  return;
155
161
  }
156
- if (!this.map.getTargetElement()) {
162
+ if (!mapInternal.getTargetElement()) {
157
163
  // If ther e is no target element the mapLibreMap is not yet created, we
158
164
  // relaunch the initialisation when it's the case.
159
- this.olEventsKeys.push(this.map.on('change:target', () => {
165
+ this.olEventsKeys.push(mapInternal.on('change:target', () => {
160
166
  this.attachToMap(map);
161
167
  }));
162
168
  return;
@@ -207,7 +213,7 @@ class MaplibreStyleLayer extends MobilityLayerMixin(Layer) {
207
213
  * @public
208
214
  */
209
215
  clone(newOptions) {
210
- return new MaplibreStyleLayer(Object.assign(Object.assign({}, this.options), newOptions));
216
+ return new MaplibreStyleLayer(Object.assign(Object.assign({}, this.get('options')), newOptions));
211
217
  }
212
218
  createRenderer() {
213
219
  return new MaplibreStyleLayerRenderer(this);
@@ -218,12 +224,12 @@ class MaplibreStyleLayer extends MobilityLayerMixin(Layer) {
218
224
  */
219
225
  detachFromMap() {
220
226
  var _a;
227
+ unByKey(this.olEventsKeys);
221
228
  if ((_a = this.maplibreLayer) === null || _a === void 0 ? void 0 : _a.mapLibreMap) {
222
229
  this.maplibreLayer.mapLibreMap.off('load', this.onLoad);
223
230
  this.removeLayers();
224
231
  this.removeSources();
225
232
  }
226
- super.detachFromMap();
227
233
  }
228
234
  /**
229
235
  * Request feature information for a given coordinate.
@@ -392,6 +398,16 @@ class MaplibreStyleLayer extends MobilityLayerMixin(Layer) {
392
398
  deprecated(`Deprecated. Use layer.setFeatureState(features, {hover: ${state}}) instead.`);
393
399
  this.setFeatureState(features, { hover: state });
394
400
  }
401
+ setMapInternal(map) {
402
+ if (map) {
403
+ super.setMapInternal(map);
404
+ this.attachToMap(map);
405
+ }
406
+ else {
407
+ this.detachFromMap();
408
+ super.setMapInternal(map);
409
+ }
410
+ }
395
411
  get beforeId() {
396
412
  return this.get('beforeId');
397
413
  }