mobility-toolbox-js 2.0.0 → 2.1.0
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.
- package/api/RealtimeAPI.d.ts +279 -0
- package/api/RealtimeAPI.d.ts.map +1 -0
- package/api/RealtimeAPI.js +466 -0
- package/api/RoutingAPI.d.ts +37 -0
- package/api/RoutingAPI.d.ts.map +1 -0
- package/api/RoutingAPI.js +35 -0
- package/api/StopsAPI.d.ts +38 -0
- package/api/StopsAPI.d.ts.map +1 -0
- package/api/StopsAPI.js +36 -0
- package/api/index.d.ts +4 -0
- package/api/index.d.ts.map +1 -0
- package/api/index.js +3 -3
- package/api/typedefs.d.ts +179 -0
- package/api/typedefs.d.ts.map +1 -0
- package/api/{tralis/typedefs.js → typedefs.js} +4 -10
- package/common/api/HttpAPI.d.ts +31 -0
- package/common/api/HttpAPI.d.ts.map +1 -0
- package/common/api/HttpAPI.js +57 -0
- package/common/api/WebSocketAPI.d.ts +153 -0
- package/common/api/WebSocketAPI.d.ts.map +1 -0
- package/common/api/WebSocketAPI.js +341 -0
- package/common/controls/ControlCommon.d.ts +76 -0
- package/common/controls/ControlCommon.d.ts.map +1 -0
- package/common/controls/ControlCommon.js +150 -0
- package/common/controls/CopyrightControlCommon.d.ts +13 -0
- package/common/controls/CopyrightControlCommon.d.ts.map +1 -0
- package/common/controls/CopyrightControlCommon.js +34 -0
- package/common/controls/StopFinderControlCommon.d.ts +55 -0
- package/common/controls/StopFinderControlCommon.d.ts.map +1 -0
- package/common/controls/StopFinderControlCommon.js +144 -0
- package/common/index.d.ts +3 -0
- package/common/index.d.ts.map +1 -0
- package/common/index.js +2 -0
- package/common/layers/LayerCommon.d.ts +94 -0
- package/common/layers/LayerCommon.d.ts.map +1 -0
- package/common/layers/LayerCommon.js +244 -0
- package/common/mixins/RealtimeLayerMixin.d.ts +286 -0
- package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -0
- package/common/mixins/RealtimeLayerMixin.js +776 -0
- package/common/mixins/UserInteractionsLayerMixin.d.ts +60 -0
- package/common/mixins/UserInteractionsLayerMixin.d.ts.map +1 -0
- package/common/mixins/UserInteractionsLayerMixin.js +241 -0
- package/common/styles/index.d.ts +5 -0
- package/common/styles/index.d.ts.map +1 -0
- package/common/styles/index.js +4 -4
- package/common/styles/realtimeDefaultStyle.d.ts +36 -0
- package/common/styles/realtimeDefaultStyle.d.ts.map +1 -0
- package/common/styles/realtimeDefaultStyle.js +275 -0
- package/common/styles/{trackerDelayStyle.js → realtimeDelayStyle.d.ts} +4 -9
- package/common/styles/realtimeDelayStyle.d.ts.map +1 -0
- package/common/styles/realtimeDelayStyle.js +13 -0
- package/common/styles/realtimeHeadingStyle.d.ts +12 -0
- package/common/styles/realtimeHeadingStyle.d.ts.map +1 -0
- package/common/styles/realtimeHeadingStyle.js +85 -0
- package/common/styles/realtimeSimpleStyle.d.ts +4 -0
- package/common/styles/realtimeSimpleStyle.d.ts.map +1 -0
- package/common/styles/realtimeSimpleStyle.js +23 -0
- package/common/typedefs.d.ts +111 -0
- package/common/typedefs.d.ts.map +1 -0
- package/common/typedefs.js +35 -6
- package/common/utils/compareDepartures.d.ts +11 -0
- package/common/utils/compareDepartures.d.ts.map +1 -0
- package/common/utils/compareDepartures.js +35 -0
- package/common/utils/createCanvas.d.ts +10 -0
- package/common/utils/createCanvas.d.ts.map +1 -0
- package/common/utils/createCanvas.js +27 -0
- package/common/utils/createRealtimeFilters.d.ts +13 -0
- package/common/utils/createRealtimeFilters.d.ts.map +1 -0
- package/common/utils/createRealtimeFilters.js +74 -0
- package/common/utils/debounceDeparturesMessages.d.ts +12 -0
- package/common/utils/debounceDeparturesMessages.d.ts.map +1 -0
- package/common/utils/debounceDeparturesMessages.js +24 -0
- package/common/utils/debounceWebsocketMessages.d.ts +11 -0
- package/common/utils/debounceWebsocketMessages.d.ts.map +1 -0
- package/common/utils/debounceWebsocketMessages.js +29 -0
- package/common/utils/getLayersAsFlatArray.d.ts +3 -0
- package/common/utils/getLayersAsFlatArray.d.ts.map +1 -0
- package/common/utils/getLayersAsFlatArray.js +15 -0
- package/common/utils/getMapboxMapCopyrights.d.ts +18 -0
- package/common/utils/getMapboxMapCopyrights.d.ts.map +1 -0
- package/common/utils/getMapboxMapCopyrights.js +21 -23
- package/common/utils/getMapboxRender.d.ts +7 -0
- package/common/utils/getMapboxRender.d.ts.map +1 -0
- package/common/utils/getMapboxRender.js +87 -0
- package/common/utils/getMaplibreRender.d.ts +7 -0
- package/common/utils/getMaplibreRender.d.ts.map +1 -0
- package/common/utils/getMaplibreRender.js +38 -0
- package/common/utils/getRealtimeModeSuffix.d.ts +10 -0
- package/common/utils/getRealtimeModeSuffix.d.ts.map +1 -0
- package/common/utils/getRealtimeModeSuffix.js +7 -0
- package/common/utils/getUrlWithParams.d.ts +9 -0
- package/common/utils/getUrlWithParams.d.ts.map +1 -0
- package/common/utils/getUrlWithParams.js +18 -0
- package/common/utils/getVehiclePosition.d.ts +16 -0
- package/common/utils/getVehiclePosition.d.ts.map +1 -0
- package/common/utils/getVehiclePosition.js +60 -60
- package/common/utils/index.d.ts +17 -0
- package/common/utils/index.d.ts.map +1 -0
- package/common/utils/index.js +13 -2
- package/common/utils/realtimeConfig.d.ts +49 -0
- package/common/utils/realtimeConfig.d.ts.map +1 -0
- package/common/utils/realtimeConfig.js +173 -0
- package/common/utils/removeDuplicate.d.ts +10 -0
- package/common/utils/removeDuplicate.d.ts.map +1 -0
- package/common/utils/removeDuplicate.js +5 -12
- package/common/utils/renderTrajectories.d.ts +17 -0
- package/common/utils/renderTrajectories.d.ts.map +1 -0
- package/common/utils/renderTrajectories.js +110 -0
- package/common/utils/sortAndFilterDepartures.d.ts +16 -0
- package/common/utils/sortAndFilterDepartures.d.ts.map +1 -0
- package/common/utils/sortAndFilterDepartures.js +58 -0
- package/common/utils/sortByDelay.d.ts +3 -0
- package/common/utils/sortByDelay.d.ts.map +1 -0
- package/common/utils/sortByDelay.js +17 -20
- package/common/utils/timeUtils.d.ts +24 -0
- package/common/utils/timeUtils.d.ts.map +1 -0
- package/common/utils/timeUtils.js +13 -18
- package/iife.d.ts +3 -0
- package/iife.d.ts.map +1 -0
- package/iife.js +5 -0
- package/index.d.ts +10 -0
- package/index.d.ts.map +1 -0
- package/index.js +10 -2
- package/mapbox/controls/CopyrightControl.d.ts +29 -0
- package/mapbox/controls/CopyrightControl.d.ts.map +1 -0
- package/mapbox/controls/CopyrightControl.js +25 -35
- package/mapbox/controls/index.d.ts +2 -0
- package/mapbox/controls/index.d.ts.map +1 -0
- package/mapbox/controls/index.js +2 -0
- package/mapbox/index.d.ts +6 -0
- package/mapbox/index.d.ts.map +1 -0
- package/mapbox/index.js +5 -3
- package/mapbox/layers/Layer.d.ts +59 -0
- package/mapbox/layers/Layer.d.ts.map +1 -0
- package/mapbox/layers/Layer.js +78 -95
- package/mapbox/layers/RealtimeLayer.d.ts +181 -0
- package/mapbox/layers/RealtimeLayer.d.ts.map +1 -0
- package/mapbox/layers/RealtimeLayer.js +276 -0
- package/mapbox/layers/index.d.ts +3 -0
- package/mapbox/layers/index.d.ts.map +1 -0
- package/mapbox/layers/index.js +2 -0
- package/mapbox/utils/getMercatorResolution.d.ts +9 -0
- package/mapbox/utils/getMercatorResolution.d.ts.map +1 -0
- package/mapbox/utils/getMercatorResolution.js +18 -0
- package/mapbox/utils/getSourceCoordinates.d.ts +9 -0
- package/mapbox/utils/getSourceCoordinates.d.ts.map +1 -0
- package/mapbox/utils/getSourceCoordinates.js +27 -0
- package/mapbox/utils/index.d.ts +3 -0
- package/mapbox/utils/index.d.ts.map +1 -0
- package/mapbox/utils/index.js +2 -0
- package/mbt.js +60005 -0
- package/mbt.js.map +7 -0
- package/mbt.min.js +1084 -0
- package/mbt.min.js.map +7 -0
- package/ol/controls/CopyrightControl.d.ts +31 -0
- package/ol/controls/CopyrightControl.d.ts.map +1 -0
- package/ol/controls/CopyrightControl.js +44 -56
- package/ol/controls/RoutingControl.d.ts +193 -0
- package/ol/controls/RoutingControl.d.ts.map +1 -0
- package/ol/controls/RoutingControl.js +546 -667
- package/ol/controls/StopFinderControl.d.ts +30 -0
- package/ol/controls/StopFinderControl.d.ts.map +1 -0
- package/ol/controls/StopFinderControl.js +10 -16
- package/ol/controls/index.d.ts +4 -0
- package/ol/controls/index.d.ts.map +1 -0
- package/ol/controls/index.js +3 -0
- package/ol/index.d.ts +6 -0
- package/ol/index.d.ts.map +1 -0
- package/ol/index.js +4 -12
- package/ol/layers/Layer.d.ts +86 -0
- package/ol/layers/Layer.d.ts.map +1 -0
- package/ol/layers/Layer.js +147 -166
- package/ol/layers/MapGlLayer.d.ts +67 -0
- package/ol/layers/MapGlLayer.d.ts.map +1 -0
- package/ol/layers/MapGlLayer.js +218 -0
- package/ol/layers/MapboxLayer.d.ts +50 -0
- package/ol/layers/MapboxLayer.d.ts.map +1 -0
- package/ol/layers/MapboxLayer.js +79 -348
- package/ol/layers/MapboxStyleLayer.d.ts +129 -0
- package/ol/layers/MapboxStyleLayer.d.ts.map +1 -0
- package/ol/layers/MapboxStyleLayer.js +329 -368
- package/ol/layers/MaplibreLayer.d.ts +28 -0
- package/ol/layers/MaplibreLayer.d.ts.map +1 -0
- package/ol/layers/MaplibreLayer.js +13 -259
- package/ol/layers/RealtimeLayer.d.ts +202 -0
- package/ol/layers/RealtimeLayer.d.ts.map +1 -0
- package/ol/layers/RealtimeLayer.js +340 -0
- package/ol/layers/RoutingLayer.d.ts +34 -0
- package/ol/layers/RoutingLayer.d.ts.map +1 -0
- package/ol/layers/RoutingLayer.js +62 -68
- package/ol/layers/VectorLayer.d.ts +25 -0
- package/ol/layers/VectorLayer.d.ts.map +1 -0
- package/ol/layers/VectorLayer.js +27 -32
- package/ol/layers/WMSLayer.d.ts +42 -0
- package/ol/layers/WMSLayer.d.ts.map +1 -0
- package/ol/layers/WMSLayer.js +74 -66
- package/ol/layers/index.d.ts +9 -0
- package/ol/layers/index.d.ts.map +1 -0
- package/ol/layers/index.js +8 -0
- package/ol/styles/fullTrajectoryDelayStyle.d.ts +4 -0
- package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryDelayStyle.js +23 -25
- package/ol/styles/fullTrajectoryStyle.d.ts +5 -0
- package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryStyle.js +37 -44
- package/ol/styles/index.d.ts +3 -0
- package/ol/styles/index.d.ts.map +1 -0
- package/package.json +98 -177
- package/setupTests.d.ts +2 -0
- package/setupTests.d.ts.map +1 -0
- package/setupTests.js +26 -0
- package/types/common.d.ts +122 -0
- package/types/index.d.ts +11 -0
- package/types/realtime.d.ts +320 -0
- package/types/routing.d.ts +206 -0
- package/types/stops.d.ts +143 -0
- package/README.md +0 -23
- package/api/routing/RoutingAPI.js +0 -44
- package/api/routing/RoutingAPI.test.js +0 -41
- package/api/stops/StopsAPI.js +0 -41
- package/api/stops/StopsAPI.test.js +0 -34
- package/api/tralis/TralisAPI.js +0 -731
- package/api/tralis/TralisAPI.test.js +0 -75
- package/api/tralis/TralisAPIUtils.js +0 -73
- package/api/tralis/WebSocketConnector.js +0 -338
- package/api/tralis/WebSocketConnector.test.js +0 -356
- package/common/Tracker.js +0 -197
- package/common/api/api.js +0 -64
- package/common/api/api.test.js +0 -68
- package/common/controls/Control.js +0 -146
- package/common/controls/Control.test.js +0 -98
- package/common/layers/Layer.js +0 -404
- package/common/layers/Layer.test.js +0 -585
- package/common/mixins/CopyrightMixin.js +0 -48
- package/common/mixins/SearchMixin.js +0 -176
- package/common/mixins/TralisLayerMixin.js +0 -930
- package/common/styles/trackerDefaultStyle.js +0 -333
- package/common/styles/trackerSimpleStyle.js +0 -22
- package/common/trackerConfig.js +0 -190
- package/common/trackerConfig.test.js +0 -25
- package/common/utils/createTrackerFilters.js +0 -87
- package/common/utils/createTrackerFilters.test.js +0 -95
- package/common/utils/getMapboxMapCopyrights.test.js +0 -47
- package/common/utils/getMapboxStyleUrl.js +0 -32
- package/common/utils/removeDuplicate.test.js +0 -22
- package/common/utils/timeUtils.test.js +0 -16
- package/index.js.map +0 -1
- package/mapbox/layers/Layer.test.js +0 -202
- package/mapbox/layers/TralisLayer.js +0 -329
- package/mapbox/layers/TralisLayer.test.js +0 -40
- package/mapbox/utils.js +0 -46
- package/module.js +0 -23
- package/ol/README.md +0 -0
- package/ol/controls/CopyrightControl.test.js +0 -211
- package/ol/controls/RoutingControl.test.js +0 -216
- package/ol/controls/StopFinderControl.test.js +0 -59
- package/ol/controls/snapshots/RoutingControlRouteGen10.json +0 -58
- package/ol/controls/snapshots/RoutingControlRouteGen100.json +0 -292
- package/ol/controls/snapshots/RoutingControlRouteGen30.json +0 -69
- package/ol/controls/snapshots/RoutingControlRouteGen5.json +0 -58
- package/ol/controls/snapshots/RoutingControlRouteOSM.json +0 -759
- package/ol/controls/snapshots/RoutingControlStation1.json +0 -60
- package/ol/controls/snapshots/RoutingControlStation2.json +0 -49
- package/ol/layers/Layer.test.js +0 -197
- package/ol/layers/MapboxLayer.test.js +0 -186
- package/ol/layers/MapboxStyleLayer.test.js +0 -262
- package/ol/layers/RoutingLayer.test.js +0 -49
- package/ol/layers/TralisLayer.js +0 -359
- package/ol/layers/TralisLayer.test.js +0 -97
- package/ol/layers/VectorLayer.test.js +0 -98
- package/ol/layers/WMSLayer.test.js +0 -84
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Map } from 'maplibre-gl';
|
|
2
|
+
import MapGlLayer, { MapGlLayerOptions } from './MapGlLayer';
|
|
3
|
+
/**
|
|
4
|
+
* A class representing MaplibreLayer to display on BasicMap
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* import { MaplibreLayer } from 'mobility-toolbox-js/ol';
|
|
8
|
+
*
|
|
9
|
+
* const layer = new MaplibreLayer({
|
|
10
|
+
* url: 'https://maps.geops.io/styles/travic_v2/style.json',
|
|
11
|
+
* apikey: 'yourApiKey',
|
|
12
|
+
* });
|
|
13
|
+
*
|
|
14
|
+
* @classproperty {ol/Map~Map} map - The map where the layer is displayed.
|
|
15
|
+
* @extends {Layer}
|
|
16
|
+
*/
|
|
17
|
+
export default class MaplibreLayer extends MapGlLayer {
|
|
18
|
+
mbMap?: maplibregl.Map;
|
|
19
|
+
getOlLayerRender(): import("ol/layer/Layer").RenderFunction;
|
|
20
|
+
getMapboxMapClass(): typeof Map;
|
|
21
|
+
/**
|
|
22
|
+
* Create a copy of the MapboxLayer.
|
|
23
|
+
* @param {Object} newOptions Options to override
|
|
24
|
+
* @return {MapboxLayer} A MapboxLayer
|
|
25
|
+
*/
|
|
26
|
+
clone(newOptions: MapGlLayerOptions): MaplibreLayer;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=MaplibreLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaplibreLayer.d.ts","sourceRoot":"","sources":["../../../src/ol/layers/MaplibreLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IACnD,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;IAEvB,gBAAgB;IAKhB,iBAAiB;IAIjB;;;;OAIG;IACH,KAAK,CAAC,UAAU,EAAE,iBAAiB;CAGpC"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
/* eslint-disable no-underscore-dangle */
|
|
2
|
-
import { toLonLat } from 'ol/proj';
|
|
3
1
|
import { Map } from 'maplibre-gl';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import GeoJSON from 'ol/format/GeoJSON';
|
|
7
|
-
import { toDegrees } from 'ol/math';
|
|
8
|
-
import Layer from './Layer';
|
|
9
|
-
import { getMapboxMapCopyrights, getMapboxStyleUrl } from '../../common/utils';
|
|
10
|
-
|
|
2
|
+
import { getMaplibreRender } from '../../common/utils';
|
|
3
|
+
import MapGlLayer from './MapGlLayer';
|
|
11
4
|
/**
|
|
12
5
|
* A class representing MaplibreLayer to display on BasicMap
|
|
13
6
|
*
|
|
@@ -22,259 +15,20 @@ import { getMapboxMapCopyrights, getMapboxStyleUrl } from '../../common/utils';
|
|
|
22
15
|
* @classproperty {ol/Map~Map} map - The map where the layer is displayed.
|
|
23
16
|
* @extends {Layer}
|
|
24
17
|
*/
|
|
25
|
-
export default class MaplibreLayer extends
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
*
|
|
29
|
-
* @param {Object} options
|
|
30
|
-
* @param {boolean} [options.preserveDrawingBuffer=false] If true able to export the canvas.
|
|
31
|
-
* @param {number} [options.fadeDuration=300] Duration of the fade effect in ms.
|
|
32
|
-
*/
|
|
33
|
-
constructor(options = {}) {
|
|
34
|
-
const mbLayer = new OLLayer({
|
|
35
|
-
source: new Source({}),
|
|
36
|
-
render: (frameState) => {
|
|
37
|
-
if (!this.mbMap) {
|
|
38
|
-
// eslint-disable-next-line no-console
|
|
39
|
-
console.warn("Mapbox map doesn't exist.");
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const canvas = this.mbMap.getCanvas();
|
|
44
|
-
const { viewState } = frameState;
|
|
45
|
-
|
|
46
|
-
const opacity = this.olLayer.getOpacity();
|
|
47
|
-
canvas.style.opacity = opacity;
|
|
48
|
-
|
|
49
|
-
// adjust view parameters in mapbox
|
|
50
|
-
this.mbMap.jumpTo({
|
|
51
|
-
center: toLonLat(viewState.center),
|
|
52
|
-
zoom: viewState.zoom - 1,
|
|
53
|
-
bearing: toDegrees(-viewState.rotation),
|
|
54
|
-
animate: false,
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
if (!canvas.isConnected) {
|
|
58
|
-
// The canvas is not connected to the DOM, request a map rendering at the next animation frame
|
|
59
|
-
// to set the canvas size.
|
|
60
|
-
this.map.render();
|
|
61
|
-
} else if (
|
|
62
|
-
canvas.width !== frameState.size[0] ||
|
|
63
|
-
canvas.height !== frameState.size[1]
|
|
64
|
-
) {
|
|
65
|
-
this.mbMap.resize();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
this.mbMap.redraw();
|
|
69
|
-
|
|
70
|
-
return this.mbMap.getContainer();
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
super({
|
|
75
|
-
...options,
|
|
76
|
-
olLayer: mbLayer,
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Url of the mapbox style.
|
|
81
|
-
* @type {string}
|
|
82
|
-
* @private
|
|
83
|
-
*/
|
|
84
|
-
this.styleUrl = options.url;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Api key for the url of the mapbox style.
|
|
88
|
-
* If set to false, the apiKey is not required.
|
|
89
|
-
* @type {string}
|
|
90
|
-
* @private
|
|
91
|
-
*/
|
|
92
|
-
this.apiKey = options.apiKey;
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Name of the apiKey to set in the url request.
|
|
96
|
-
* Default is 'key'.
|
|
97
|
-
* @type {string}
|
|
98
|
-
* @private
|
|
99
|
-
*/
|
|
100
|
-
this.apiKeyName = options.apiKeyName || 'key';
|
|
101
|
-
|
|
102
|
-
/** @ignore */
|
|
103
|
-
this.updateAttribution = this.updateAttribution.bind(this);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Initialize the layer and listen to feature clicks.
|
|
108
|
-
* @param {ol/Map~Map} map
|
|
109
|
-
*/
|
|
110
|
-
init(map) {
|
|
111
|
-
super.init(map);
|
|
112
|
-
|
|
113
|
-
if (!this.map) {
|
|
114
|
-
return;
|
|
18
|
+
export default class MaplibreLayer extends MapGlLayer {
|
|
19
|
+
getOlLayerRender() {
|
|
20
|
+
return getMaplibreRender(this);
|
|
115
21
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
* @type {ol/format/GeoJSON}
|
|
120
|
-
*/
|
|
121
|
-
this.format = new GeoJSON({
|
|
122
|
-
featureProjection: this.map.getView().getProjection(),
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
this.loadMbMap();
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Terminate what was initialized in init function. Remove layer, events...
|
|
130
|
-
*/
|
|
131
|
-
terminate() {
|
|
132
|
-
if (this.mbMap) {
|
|
133
|
-
this.mbMap.off('idle', this.updateAttribution);
|
|
134
|
-
// Some asynchrone repaints are triggered even if the mbMap has been removed,
|
|
135
|
-
// to avoid display of errors we set an empty function.
|
|
136
|
-
this.mbMap.triggerRepaint = () => {};
|
|
137
|
-
this.mbMap.remove();
|
|
138
|
-
this.mbMap = null;
|
|
139
|
-
}
|
|
140
|
-
this.loaded = false;
|
|
141
|
-
super.terminate();
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Returns a style URL with apiKey & apiKeyName infos.
|
|
146
|
-
* @private
|
|
147
|
-
*/
|
|
148
|
-
createStyleUrl() {
|
|
149
|
-
return getMapboxStyleUrl(this.apiKey, this.apiKeyName, this.styleUrl);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Create the mapbox map.
|
|
154
|
-
* @private
|
|
155
|
-
*/
|
|
156
|
-
loadMbMap() {
|
|
157
|
-
this.olListenersKeys.push(
|
|
158
|
-
this.map.on('change:target', () => {
|
|
159
|
-
this.loadMbMap();
|
|
160
|
-
}),
|
|
161
|
-
);
|
|
162
|
-
|
|
163
|
-
if (!this.map.getTargetElement()) {
|
|
164
|
-
return;
|
|
22
|
+
// eslint-disable-next-line class-methods-use-this
|
|
23
|
+
getMapboxMapClass() {
|
|
24
|
+
return Map;
|
|
165
25
|
}
|
|
166
|
-
|
|
167
|
-
if (!this.visible) {
|
|
168
|
-
// On next change of visibility we load the map
|
|
169
|
-
this.olListenersKeys.push(
|
|
170
|
-
this.once('change:visible', () => {
|
|
171
|
-
this.loadMbMap();
|
|
172
|
-
}),
|
|
173
|
-
);
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
const container = document.createElement('div');
|
|
178
|
-
container.style.position = 'absolute';
|
|
179
|
-
container.style.width = '100%';
|
|
180
|
-
container.style.height = '100%';
|
|
181
|
-
|
|
182
26
|
/**
|
|
183
|
-
*
|
|
184
|
-
* @
|
|
27
|
+
* Create a copy of the MapboxLayer.
|
|
28
|
+
* @param {Object} newOptions Options to override
|
|
29
|
+
* @return {MapboxLayer} A MapboxLayer
|
|
185
30
|
*/
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
container,
|
|
189
|
-
interactive: false,
|
|
190
|
-
trackResize: false,
|
|
191
|
-
attributionControl: false,
|
|
192
|
-
...(this.options.mapOptions || {}),
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
this.mbMap.once('load', () => {
|
|
196
|
-
/**
|
|
197
|
-
* Is the map loaded.
|
|
198
|
-
* @type {boolean}
|
|
199
|
-
*/
|
|
200
|
-
this.loaded = true;
|
|
201
|
-
|
|
202
|
-
this.dispatchEvent({
|
|
203
|
-
type: 'load',
|
|
204
|
-
target: this,
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
this.mbMap.on('idle', this.updateAttribution);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Update attributions of the source.
|
|
213
|
-
* @private
|
|
214
|
-
*/
|
|
215
|
-
updateAttribution(evt) {
|
|
216
|
-
const newAttributions = getMapboxMapCopyrights(evt.target) || [];
|
|
217
|
-
if (this.copyrights?.toString() !== newAttributions.toString()) {
|
|
218
|
-
this.copyrights = newAttributions;
|
|
219
|
-
this.olLayer.getSource().setAttributions(newAttributions);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Request feature information for a given coordinate.
|
|
225
|
-
* @param {ol/coordinate~Coordinate} coordinate Coordinate to request the information at.
|
|
226
|
-
* @param {Object} options A [mapboxgl.Map#queryrenderedfeatures](https://docs.mapbox.com/mapbox-gl-js/api/map/#map#queryrenderedfeatures) options parameter.
|
|
227
|
-
* @return {Promise<FeatureInfo>} Promise with features, layer and coordinate. The original Mapbox feature is available as a property named 'mapboxFeature'.
|
|
228
|
-
*/
|
|
229
|
-
getFeatureInfoAtCoordinate(coordinate, options) {
|
|
230
|
-
// Ignore the getFeatureInfo until the mapbox map is loaded
|
|
231
|
-
if (
|
|
232
|
-
!options ||
|
|
233
|
-
!this.format ||
|
|
234
|
-
!this.mbMap ||
|
|
235
|
-
!this.mbMap.isStyleLoaded()
|
|
236
|
-
) {
|
|
237
|
-
return Promise.resolve({ coordinate, features: [], layer: this });
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
let pixel = coordinate && this.mbMap.project(toLonLat(coordinate));
|
|
241
|
-
|
|
242
|
-
if (this.hitTolerance) {
|
|
243
|
-
const { x, y } = pixel;
|
|
244
|
-
pixel = [
|
|
245
|
-
{ x: x - this.hitTolerance, y: y - this.hitTolerance },
|
|
246
|
-
{ x: x + this.hitTolerance, y: y + this.hitTolerance },
|
|
247
|
-
];
|
|
31
|
+
clone(newOptions) {
|
|
32
|
+
return new MaplibreLayer(Object.assign(Object.assign({}, this.options), newOptions));
|
|
248
33
|
}
|
|
249
|
-
|
|
250
|
-
// At this point we get GeoJSON Mapbox feature, we transform it to an OpenLayers
|
|
251
|
-
// feature to be consistent with other layers.
|
|
252
|
-
const features = this.mbMap
|
|
253
|
-
.queryRenderedFeatures(pixel, options)
|
|
254
|
-
.map((feature) => {
|
|
255
|
-
const olFeature = this.format.readFeature(feature);
|
|
256
|
-
if (olFeature) {
|
|
257
|
-
// We save the original mapbox feature to avoid losing informations
|
|
258
|
-
// potentially needed for other functionnality like highlighting
|
|
259
|
-
// (id, layer id, source, sourceLayer ...)
|
|
260
|
-
olFeature.set('mapboxFeature', feature);
|
|
261
|
-
}
|
|
262
|
-
return olFeature;
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
return Promise.resolve({
|
|
266
|
-
layer: this,
|
|
267
|
-
features,
|
|
268
|
-
coordinate,
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* Create a copy of the MapboxLayer.
|
|
274
|
-
* @param {Object} newOptions Options to override
|
|
275
|
-
* @return {MapboxLayer} A MapboxLayer
|
|
276
|
-
*/
|
|
277
|
-
clone(newOptions) {
|
|
278
|
-
return new MaplibreLayer({ ...this.options, ...newOptions });
|
|
279
|
-
}
|
|
280
34
|
}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import GeoJSON from 'ol/format/GeoJSON';
|
|
2
|
+
import Feature, { FeatureLike } from 'ol/Feature';
|
|
3
|
+
import { MapEvent } from 'ol';
|
|
4
|
+
import { Coordinate } from 'ol/coordinate';
|
|
5
|
+
import { ObjectEvent } from 'ol/Object';
|
|
6
|
+
import Layer from './Layer';
|
|
7
|
+
import { RealtimeLayerMixinOptions } from '../../common/mixins/RealtimeLayerMixin';
|
|
8
|
+
import { AnyMap, LayerGetFeatureInfoResponse, RealtimeFullTrajectory, RealtimeTrainId } from '../../types';
|
|
9
|
+
import { RealtimeTrajectory } from '../../api/typedefs';
|
|
10
|
+
import { WebSocketAPIMessageEventData } from '../../common/api/WebSocketAPI';
|
|
11
|
+
export type OlRealtimeLayerOptions = RealtimeLayerMixinOptions & {
|
|
12
|
+
fullTrajectoryStyle: (feature: FeatureLike, resolution: number, options: any) => void;
|
|
13
|
+
allowRenderWhenAnimating?: boolean;
|
|
14
|
+
};
|
|
15
|
+
declare const RealtimeLayer_base: {
|
|
16
|
+
new (options: RealtimeLayerMixinOptions): {
|
|
17
|
+
[x: string]: any;
|
|
18
|
+
debug: boolean;
|
|
19
|
+
trajectories?: {
|
|
20
|
+
[key: string]: GeoJSONFeature;
|
|
21
|
+
} | undefined;
|
|
22
|
+
canvas?: import("../../types").AnyCanvas | undefined;
|
|
23
|
+
mode: import("../../types").RealtimeMode;
|
|
24
|
+
api: import("../../api/RealtimeAPI").default;
|
|
25
|
+
tenant: string;
|
|
26
|
+
time?: Date | undefined;
|
|
27
|
+
live?: boolean | undefined;
|
|
28
|
+
speed?: number | undefined;
|
|
29
|
+
filter?: Function | undefined;
|
|
30
|
+
sort?: Function | undefined;
|
|
31
|
+
style?: import("../../types").RealtimeStyleFunction | undefined;
|
|
32
|
+
styleOptions?: import("../../types").RealtimeStyleOptions | undefined;
|
|
33
|
+
pixelRatio?: number | undefined;
|
|
34
|
+
minZoomInterpolation: number;
|
|
35
|
+
isUpdateBboxOnMoveEnd: boolean;
|
|
36
|
+
hoverVehicleId?: string | undefined;
|
|
37
|
+
selectedVehicleId?: string | undefined;
|
|
38
|
+
renderState?: import("../../types").RealtimeRenderState | undefined;
|
|
39
|
+
useRequestAnimationFrame?: boolean | undefined;
|
|
40
|
+
useDebounce?: boolean | undefined;
|
|
41
|
+
useThrottle?: boolean | undefined;
|
|
42
|
+
mots?: import("../../types").RealtimeMot[] | undefined;
|
|
43
|
+
motsByZoom: import("../../types").RealtimeMot[][];
|
|
44
|
+
generalizationLevel?: import("../../types").RealtimeGeneralizationLevel | undefined;
|
|
45
|
+
generalizationLevelByZoom: import("../../types").RealtimeGeneralizationLevel[];
|
|
46
|
+
renderTimeIntervalByZoom: number[];
|
|
47
|
+
format: GeoJSON;
|
|
48
|
+
requestId?: number | undefined;
|
|
49
|
+
updateTimeInterval?: number | undefined;
|
|
50
|
+
updateTimeDelay?: number | undefined;
|
|
51
|
+
visibilityRef: import("ol/events").EventsKey;
|
|
52
|
+
selectedVehicle: GeoJSONFeature;
|
|
53
|
+
getMotsByZoom: (zoom: number) => import("../../types").RealtimeMot[];
|
|
54
|
+
getGeneralizationLevelByZoom: (zoom: number) => import("../../types").RealtimeGeneralizationLevel;
|
|
55
|
+
getRenderTimeIntervalByZoom: (zoom: number) => number;
|
|
56
|
+
throttleRenderTrajectories: (viewState: import("../../types").ViewState, noInterpolate?: boolean | undefined) => void;
|
|
57
|
+
debounceRenderTrajectories: (viewState: import("../../types").ViewState, noInterpolate?: boolean | undefined) => void;
|
|
58
|
+
onStart?: ((realtimeLayer: any) => void) | undefined;
|
|
59
|
+
onStop?: ((realtimeLayer: any) => void) | undefined;
|
|
60
|
+
defineProperties(options: RealtimeLayerMixinOptions): void;
|
|
61
|
+
attachToMap(map: any): void;
|
|
62
|
+
detachFromMap(): void;
|
|
63
|
+
start(): void;
|
|
64
|
+
startUpdateTime(): void;
|
|
65
|
+
stop(): void;
|
|
66
|
+
stopUpdateTime(): void;
|
|
67
|
+
renderTrajectoriesInternal(viewState: import("../../types").ViewState, noInterpolate?: boolean): boolean;
|
|
68
|
+
renderTrajectories(viewState: import("../../types").ViewState | undefined, noInterpolate: boolean | undefined): void;
|
|
69
|
+
setBbox(extent?: [number, number, number, number] | undefined, zoom?: number | undefined): void;
|
|
70
|
+
getRefreshTimeInMs(zoom?: number | undefined): number;
|
|
71
|
+
getVehicle(filterFc: Function): GeoJSONFeature[];
|
|
72
|
+
getFeatureInfoAtCoordinate(coordinate: Coordinate, options: import("../../types").LayerGetFeatureInfoOptions): Promise<{
|
|
73
|
+
layer: any;
|
|
74
|
+
features: Feature<import("ol/geom/Geometry").default>[];
|
|
75
|
+
coordinate: Coordinate;
|
|
76
|
+
}>;
|
|
77
|
+
getTrajectoryInfos(id: string): Promise<{
|
|
78
|
+
stopSequence: WebSocketAPIMessageEventData<RealtimeFullTrajectory> | WebSocketAPIMessageEventData<GeoJSONFeature[]>;
|
|
79
|
+
fullTrajectory: WebSocketAPIMessageEventData<RealtimeFullTrajectory> | WebSocketAPIMessageEventData<GeoJSONFeature[]>;
|
|
80
|
+
}>;
|
|
81
|
+
purgeOutOfDateTrajectories(): void;
|
|
82
|
+
purgeTrajectory(trajectory: GeoJSONFeature, extent: [number, number, number, number], zoom: number): boolean;
|
|
83
|
+
addTrajectory(trajectory: GeoJSONFeature): void;
|
|
84
|
+
removeTrajectory(trajectoryOrId: any): void;
|
|
85
|
+
onZoomEnd(): void;
|
|
86
|
+
onDocumentVisibilityChange(): void;
|
|
87
|
+
onTrajectoryMessage(data: WebSocketAPIMessageEventData<GeoJSONFeature>): void;
|
|
88
|
+
onDeleteTrajectoryMessage(data: WebSocketAPIMessageEventData<string>): void;
|
|
89
|
+
onFeatureHover(features: Feature<import("ol/geom/Geometry").default>[], layer: import("../../types").AnyRealtimeLayer, coordinate: Coordinate): void;
|
|
90
|
+
onFeatureClick(features: Feature<import("ol/geom/Geometry").default>[], layer: import("../../types").AnyRealtimeLayer, coordinate: Coordinate): void;
|
|
91
|
+
};
|
|
92
|
+
} & typeof Layer;
|
|
93
|
+
/**
|
|
94
|
+
* Responsible for loading and display data from a Realtime service.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* import { RealtimeLayer } from 'mobility-toolbox-js/ol';
|
|
98
|
+
*
|
|
99
|
+
* const layer = new RealtimeLayer({
|
|
100
|
+
* url: [yourUrl],
|
|
101
|
+
* apiKey: [yourApiKey],
|
|
102
|
+
* });
|
|
103
|
+
*
|
|
104
|
+
*
|
|
105
|
+
* @see <a href="/api/class/src/api/RealtimeAPI%20js~RealtimeAPI%20html">RealtimeAPI</a>
|
|
106
|
+
*
|
|
107
|
+
* @extends {Layer}
|
|
108
|
+
* @implements {UserInteractionsLayerInterface}
|
|
109
|
+
* @implements {RealtimeLayerInterface}
|
|
110
|
+
*/
|
|
111
|
+
declare class RealtimeLayer extends RealtimeLayer_base {
|
|
112
|
+
allowRenderWhenAnimating?: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Constructor.
|
|
115
|
+
*
|
|
116
|
+
* @param {Object} options
|
|
117
|
+
* @private
|
|
118
|
+
*/
|
|
119
|
+
constructor(options: OlRealtimeLayerOptions);
|
|
120
|
+
attachToMap(map: AnyMap): void;
|
|
121
|
+
/**
|
|
122
|
+
* Destroy the container of the tracker.
|
|
123
|
+
*/
|
|
124
|
+
detachFromMap(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Detect in the canvas if there is data to query at a specific coordinate.
|
|
127
|
+
* @param {ol/coordinate~Coordinate} coordinate The coordinate to test
|
|
128
|
+
* @returns
|
|
129
|
+
*/
|
|
130
|
+
hasFeatureInfoAtCoordinate(coordinate: Coordinate): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Render the trajectories using current map's size, resolution and rotation.
|
|
133
|
+
* @param {boolean} noInterpolate if true, renders the vehicles without interpolating theirs positions.
|
|
134
|
+
* @overrides
|
|
135
|
+
*/
|
|
136
|
+
renderTrajectories(noInterpolate: boolean): void;
|
|
137
|
+
/**
|
|
138
|
+
* Launch renderTrajectories. it avoids duplicating code in renderTrajectories methhod.
|
|
139
|
+
* @private
|
|
140
|
+
* @override
|
|
141
|
+
*/
|
|
142
|
+
renderTrajectoriesInternal(viewState: ViewState, noInterpolate: boolean): boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Return the delay in ms before the next rendering.
|
|
145
|
+
*/
|
|
146
|
+
getRefreshTimeInMs(): number;
|
|
147
|
+
getFeatureInfoAtCoordinate(coordinate: Coordinate, options?: {}): Promise<LayerGetFeatureInfoResponse>;
|
|
148
|
+
/**
|
|
149
|
+
* On move end we update the websocket with the new bbox.
|
|
150
|
+
*
|
|
151
|
+
* @private
|
|
152
|
+
* @override
|
|
153
|
+
*/
|
|
154
|
+
onMoveEnd(evt: MapEvent | ObjectEvent): void;
|
|
155
|
+
/**
|
|
156
|
+
* Function called on moveend event only when the zoom has changed.
|
|
157
|
+
*
|
|
158
|
+
* @param {ol/MapEvent~MapEvent} evt Moveend event.
|
|
159
|
+
* @private
|
|
160
|
+
* @override
|
|
161
|
+
*/
|
|
162
|
+
onZoomEnd(): void;
|
|
163
|
+
/**
|
|
164
|
+
* Update the cursor style when hovering a vehicle.
|
|
165
|
+
*
|
|
166
|
+
* @private
|
|
167
|
+
* @override
|
|
168
|
+
*/
|
|
169
|
+
onFeatureHover(features: Feature[], layer: RealtimeLayer, coordinate: Coordinate): void;
|
|
170
|
+
/**
|
|
171
|
+
* Display the complete trajectory of the vehicle.
|
|
172
|
+
*
|
|
173
|
+
* @private
|
|
174
|
+
* @override
|
|
175
|
+
*/
|
|
176
|
+
onFeatureClick(features: Feature[], layer: RealtimeLayer, coordinate: Coordinate): void;
|
|
177
|
+
/**
|
|
178
|
+
* Remove the trajectory form the list if necessary.
|
|
179
|
+
*
|
|
180
|
+
* @private
|
|
181
|
+
*/
|
|
182
|
+
purgeTrajectory(trajectory: RealtimeTrajectory, extent: [number, number, number, number], zoom: number): boolean;
|
|
183
|
+
/**
|
|
184
|
+
* Send the current bbox to the websocket
|
|
185
|
+
*
|
|
186
|
+
* @private
|
|
187
|
+
*/
|
|
188
|
+
setBbox(extent?: [number, number, number, number], zoom?: number): void;
|
|
189
|
+
/**
|
|
190
|
+
* Highlight the trajectory of journey.
|
|
191
|
+
* @private
|
|
192
|
+
*/
|
|
193
|
+
highlightTrajectory(id: RealtimeTrainId): Promise<Feature[] | undefined>;
|
|
194
|
+
/**
|
|
195
|
+
* Create a copy of the RealtimeLayer.
|
|
196
|
+
* @param {Object} newOptions Options to override
|
|
197
|
+
* @return {RealtimeLayer} A RealtimeLayer
|
|
198
|
+
*/
|
|
199
|
+
clone(newOptions: OlRealtimeLayerOptions): RealtimeLayer;
|
|
200
|
+
}
|
|
201
|
+
export default RealtimeLayer;
|
|
202
|
+
//# sourceMappingURL=RealtimeLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RealtimeLayer.d.ts","sourceRoot":"","sources":["../../../src/ol/layers/RealtimeLayer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAKxC,OAAO,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAc,EACZ,yBAAyB,EAC1B,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EACL,MAAM,EACN,2BAA2B,EAC3B,sBAAsB,EACtB,eAAe,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAK7E,MAAM,MAAM,sBAAsB,GAAG,yBAAyB,GAAG;IAC/D,mBAAmB,EAAE,CACnB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,GAAG,KACT,IAAI,CAAC;IACV,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF;;;;;;;;;;;;;;;;;GAiBG;AAEH,cAAM,aAAc,SAAQ,kBAAY;IACtC,wBAAwB,CAAC,EAAE,OAAO,CAAS;IAE3C;;;;;OAKG;gBACS,OAAO,EAAE,sBAAsB;IAmG3C,WAAW,CAAC,GAAG,EAAE,MAAM;IA4BvB;;OAEG;IACH,aAAa;IAKb;;;;OAIG;IACH,0BAA0B,CAAC,UAAU,EAAE,UAAU;IAgBjD;;;;OAIG;IAEH,kBAAkB,CAAC,aAAa,EAAE,OAAO;IA2BzC;;;;OAIG;IACH,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO;IA2BvE;;OAEG;IACH,kBAAkB;IAIlB,0BAA0B,CACxB,UAAU,EAAE,UAAU,EACtB,OAAO,KAAK,GACX,OAAO,CAAC,2BAA2B,CAAC;IAgBvC;;;;;OAKG;IAEH,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW;IAerC;;;;;;OAMG;IAEH,SAAS;IAiBT;;;;;OAKG;IACH,cAAc,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,UAAU;IAQxB;;;;;OAKG;IACH,cAAc,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,UAAU;IAWxB;;;;OAIG;IACH,eAAe,CACb,UAAU,EAAE,kBAAkB,EAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACxC,IAAI,EAAE,MAAM;IAed;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM;IAUhE;;;OAGG;IACH,mBAAmB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;IAoBxE;;;;OAIG;IACH,KAAK,CAAC,UAAU,EAAE,sBAAsB;CAGzC;AAED,eAAe,aAAa,CAAC"}
|