map-ol-utils 0.0.21 → 0.0.23

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/dist/index.cjs CHANGED
@@ -72,7 +72,7 @@ __export(index_exports, {
72
72
  buildMassMarksStyles: () => buildMassMarksStyles,
73
73
  createAnimationMarker: () => createAnimationMarker,
74
74
  createBaseLayer: () => createBaseLayer,
75
- createGeoJsonLayer: () => createGeoJsonLayer,
75
+ createBusinessLayer: () => createBusinessLayer,
76
76
  createMapInstance: () => createMapInstance,
77
77
  createMapWorldLayer: () => createMapWorldLayer,
78
78
  createMassMarksLayer: () => createMassMarksLayer,
@@ -160,6 +160,7 @@ var import_View = __toESM(require("ol/View"), 1);
160
160
  var import_control = require("ol/control");
161
161
 
162
162
  // src/layer-utils.ts
163
+ var import_gcoord = __toESM(require("gcoord"), 1);
163
164
  var import_geom = require("ol/geom");
164
165
  var import_format2 = require("ol/format");
165
166
  var import_ol = require("ol");
@@ -220,38 +221,42 @@ var assembleGeoJson = (dataList, config) => {
220
221
  console.error(`\u521B\u5EFA\u7EBF\u72B6\u6570\u636E\u5931\u8D25\uFF1A${e}`);
221
222
  }
222
223
  });
223
- return { type: "FeatureCollection", features: tempList };
224
+ return import_gcoord.default.transform({ type: "FeatureCollection", features: tempList }, import_gcoord.default.GCJ02, import_gcoord.default.WGS84);
224
225
  };
225
- var createGeoJsonLayer = (dataList, config) => {
226
- const { isLine, layerName } = config || {};
226
+ var createVectorStyle = (data, config) => {
227
+ const { isLine, colorMap, fillColor, colorKey, strokeColor, strokeWeight } = config || {};
228
+ const style = new import_style.Style({
229
+ stroke: new import_style.Stroke({
230
+ width: strokeWeight,
231
+ color: colorKey ? (colorMap == null ? void 0 : colorMap.get(data[colorKey])) || strokeColor : strokeColor
232
+ })
233
+ });
234
+ if (!isLine) {
235
+ style.setFill(
236
+ new import_style.Fill({
237
+ color: colorKey ? (colorMap == null ? void 0 : colorMap.get(data[colorKey])) || fillColor : fillColor
238
+ })
239
+ );
240
+ }
241
+ return style;
242
+ };
243
+ var createBusinessLayer = (dataList, config) => {
244
+ const { layerName } = config || {};
227
245
  const geoJson = assembleGeoJson(dataList, config);
228
246
  const vectorLayer = new import_Vector.default({
229
247
  className: layerName ? layerName : "ol-layer",
230
248
  source: new import_Vector2.default({
231
- features: new import_format2.GeoJSON().readFeatures(geoJson)
232
- }),
233
- style: isLine ? new import_style.Style({
234
- stroke: new import_style.Stroke({
235
- color: "red",
236
- lineDash: [10],
237
- width: 3
238
- })
239
- }) : new import_style.Style({
240
- stroke: new import_style.Stroke({
241
- color: "red",
242
- lineDash: [10],
243
- width: 3
244
- }),
245
- fill: new import_style.Fill({
246
- color: "rgba(0, 0, 255, 0.1)"
249
+ features: new import_format2.GeoJSON().readFeatures(geoJson).map((feature) => {
250
+ feature.setStyle(createVectorStyle(feature.getProperties(), config));
251
+ return feature;
247
252
  })
248
253
  })
249
254
  });
250
255
  vectorLayer.set("_layerName", layerName);
251
256
  return vectorLayer;
252
257
  };
253
- var createVectorFaceLayer = (dataList = [], config) => createGeoJsonLayer(dataList, Object.assign(config, { isLine: false }));
254
- var createVectorLineLayer = (dataList = [], config) => createGeoJsonLayer(dataList, Object.assign(config, { isLine: true }));
258
+ var createVectorFaceLayer = (dataList = [], config) => createBusinessLayer(dataList, Object.assign(config, { isLine: false }));
259
+ var createVectorLineLayer = (dataList = [], config) => createBusinessLayer(dataList, Object.assign(config, { isLine: true }));
255
260
  var removeAllLayers = (isClearAll = true) => {
256
261
  removeOverlays();
257
262
  console.log(isClearAll);
@@ -422,7 +427,7 @@ var createMassMarksLayer = (dataList, styleList = []) => {
422
427
  _isCustom: true,
423
428
  _isMassMarksLayer: true,
424
429
  _statusNum: styleList.length / 2,
425
- _dataList: dataList,
430
+ _dataList: [...dataList],
426
431
  _uuidSet: new Set(dataList.map((item) => item._uuid) || [])
427
432
  });
428
433
  return vectorLayer;
@@ -436,7 +441,8 @@ var addMassMarksLayer = (getImgUrlFn) => {
436
441
  isDynamic,
437
442
  statusNum,
438
443
  markerIcon,
439
- markerSize
444
+ markerSize,
445
+ vectorConfig
440
446
  } = iconConfig;
441
447
  const massMarksStyles = buildMassMarksStyles(getImgUrlFn)({
442
448
  baseUrl,
@@ -450,7 +456,7 @@ var addMassMarksLayer = (getImgUrlFn) => {
450
456
  createSelectByLayer(massMarksLayer);
451
457
  }
452
458
  if (hasLine) {
453
- const vectorLayer = createGeoJsonLayer(dataList, {
459
+ const vectorLayer = createBusinessLayer(dataList, vectorConfig ? vectorConfig : {
454
460
  key: "line",
455
461
  isLine: true,
456
462
  strokeColor: "rgba(29, 235, 255, 0.8)"
@@ -458,10 +464,9 @@ var addMassMarksLayer = (getImgUrlFn) => {
458
464
  instance.addLayer(vectorLayer);
459
465
  }
460
466
  if (hasFace) {
461
- const vectorLayer = createGeoJsonLayer(dataList, {
467
+ const vectorLayer = createBusinessLayer(dataList, vectorConfig ? vectorConfig : {
462
468
  isLine: false,
463
469
  key: "faceList",
464
- fillOpacity: 0.1,
465
470
  fillColor: "#4247DF",
466
471
  strokeWeight: 1,
467
472
  strokeStyle: "dashed",
@@ -686,7 +691,7 @@ var changeLayersByNames = (activeNames, allLayerNames) => {
686
691
  buildMassMarksStyles,
687
692
  createAnimationMarker,
688
693
  createBaseLayer,
689
- createGeoJsonLayer,
694
+ createBusinessLayer,
690
695
  createMapInstance,
691
696
  createMapWorldLayer,
692
697
  createMassMarksLayer,
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { Map, Feature } from 'ol';
2
1
  import { Layer, Tile } from 'ol/layer';
2
+ import { Map as Map$1, Feature } from 'ol';
3
3
  import { Source, XYZ, WMTS } from 'ol/source';
4
4
  import { Emitter, EventType } from 'mitt';
5
5
  import TileLayer from 'ol/layer/Tile';
@@ -10,7 +10,7 @@ import VectorLayer from 'ol/layer/Vector';
10
10
  import { StyleLike } from 'ol/style/Style';
11
11
  import VectorSource from 'ol/source/Vector';
12
12
 
13
- interface CustomMap extends Map {
13
+ interface CustomMap extends Map$1 {
14
14
  activeBaseLayer?: string;
15
15
  changeBaseLayer?: () => void;
16
16
  removeLayerByName?: (name: string) => void;
@@ -19,53 +19,49 @@ interface CustomMap extends Map {
19
19
  }
20
20
  type GetImgUrl = (name: string, ext?: string) => string;
21
21
  type GetImgUrlFn = (baseUrl: string) => GetImgUrl;
22
- type LayerConfig = {
23
- zIndex?: number;
24
- visible?: boolean;
25
- minZoom?: number;
26
- maxZoom?: number;
27
- layerName: string;
28
- };
29
22
  type VectorConfig = {
30
23
  key: string;
31
24
  zIndex?: number;
32
25
  isRaw?: boolean;
33
26
  isLine: boolean;
27
+ colorKey?: string;
34
28
  layerName?: string;
35
29
  openClick?: boolean;
36
30
  fillColor?: string;
37
- fillOpacity?: number;
38
31
  strokeColor?: string;
39
32
  strokeStyle?: string;
40
33
  strokeWeight?: number;
41
- };
42
- type LineConfig = {
43
- key: string;
44
- width?: number;
45
- isRaw?: boolean;
46
- openClick?: boolean;
47
- strokeColor?: string;
48
- strokeStyle?: string;
49
- };
50
- type MassData = {
51
- style: number;
52
- _uuid?: string;
53
- width?: number;
54
- height?: number;
55
- status?: number | string | undefined;
56
- _status?: number | string | undefined;
57
- lnglat: [string, string] | [number, number];
34
+ colorMap?: Map<string, string>;
58
35
  };
59
36
  type IconConfig = {
60
37
  baseUrl: string;
61
38
  hasLine?: boolean;
62
39
  hasFace?: boolean;
63
- statusNum: number;
40
+ statusNum?: number;
64
41
  isDynamic?: boolean;
65
42
  markerIcon: string;
66
43
  activeScale?: number;
44
+ vectorConfig?: VectorConfig;
67
45
  markerSize: [number, number];
68
46
  };
47
+ type MassData = {
48
+ _uuid?: string;
49
+ id: string;
50
+ style: number;
51
+ name: string;
52
+ status: string;
53
+ width?: number;
54
+ height?: number;
55
+ itemName: string;
56
+ rawData: {
57
+ [key: string]: any;
58
+ };
59
+ imgList: {
60
+ text: string;
61
+ icon: string;
62
+ }[];
63
+ lnglat: [string, string] | [number, number];
64
+ };
69
65
  type MassMarkersStyleOptions = {
70
66
  url: string;
71
67
  zIndex?: number;
@@ -112,7 +108,7 @@ declare const createAnimationMarker: (imgUrl: string, data: MassData) => void;
112
108
  * 重置激活的矢量数据
113
109
  */
114
110
  declare const resetActiveVector: () => void;
115
- declare const createGeoJsonLayer: (dataList: any, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry>>, Feature<ol_geom.Geometry>>;
111
+ declare const createBusinessLayer: (dataList: any, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry>>, Feature<ol_geom.Geometry>>;
116
112
  /**
117
113
  * 创建面状数据
118
114
  * @param dataList
@@ -163,6 +159,6 @@ declare const addMassMarksLayer: (getImgUrlFn: GetImgUrlFn) => (dataList: never[
163
159
  * 更新图层根据选中状态列表
164
160
  * @param checkedStatusList
165
161
  */
166
- declare const updateMarksLayersByStatus: (checkedStatusList?: any[]) => void;
162
+ declare const updateMarksLayersByStatus: (checkedStatusList?: string[]) => void;
167
163
 
168
- export { type CustomMap, type GetImgUrl, type GetImgUrlFn, type IconConfig, type LayerConfig, type LineConfig, type MassData, type MassMarkersStyleOptions, type VectorConfig, type WmtsSourceOptions, activeMarkerByUid, addMassMarksLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createGeoJsonLayer, createMapInstance, createMapWorldLayer, createMassMarksLayer, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, disposeMap, emitter, getMapInstance, instance, removeAllLayers, resetActiveMarker, resetActiveVector, resetMap, resetZoomAndCenter, updateMarksLayersByStatus };
164
+ export { type CustomMap, type GetImgUrl, type GetImgUrlFn, type IconConfig, type MassData, type MassMarkersStyleOptions, type VectorConfig, type WmtsSourceOptions, activeMarkerByUid, addMassMarksLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createBusinessLayer, createMapInstance, createMapWorldLayer, createMassMarksLayer, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, disposeMap, emitter, getMapInstance, instance, removeAllLayers, resetActiveMarker, resetActiveVector, resetMap, resetZoomAndCenter, updateMarksLayersByStatus };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Map, Feature } from 'ol';
2
1
  import { Layer, Tile } from 'ol/layer';
2
+ import { Map as Map$1, Feature } from 'ol';
3
3
  import { Source, XYZ, WMTS } from 'ol/source';
4
4
  import { Emitter, EventType } from 'mitt';
5
5
  import TileLayer from 'ol/layer/Tile';
@@ -10,7 +10,7 @@ import VectorLayer from 'ol/layer/Vector';
10
10
  import { StyleLike } from 'ol/style/Style';
11
11
  import VectorSource from 'ol/source/Vector';
12
12
 
13
- interface CustomMap extends Map {
13
+ interface CustomMap extends Map$1 {
14
14
  activeBaseLayer?: string;
15
15
  changeBaseLayer?: () => void;
16
16
  removeLayerByName?: (name: string) => void;
@@ -19,53 +19,49 @@ interface CustomMap extends Map {
19
19
  }
20
20
  type GetImgUrl = (name: string, ext?: string) => string;
21
21
  type GetImgUrlFn = (baseUrl: string) => GetImgUrl;
22
- type LayerConfig = {
23
- zIndex?: number;
24
- visible?: boolean;
25
- minZoom?: number;
26
- maxZoom?: number;
27
- layerName: string;
28
- };
29
22
  type VectorConfig = {
30
23
  key: string;
31
24
  zIndex?: number;
32
25
  isRaw?: boolean;
33
26
  isLine: boolean;
27
+ colorKey?: string;
34
28
  layerName?: string;
35
29
  openClick?: boolean;
36
30
  fillColor?: string;
37
- fillOpacity?: number;
38
31
  strokeColor?: string;
39
32
  strokeStyle?: string;
40
33
  strokeWeight?: number;
41
- };
42
- type LineConfig = {
43
- key: string;
44
- width?: number;
45
- isRaw?: boolean;
46
- openClick?: boolean;
47
- strokeColor?: string;
48
- strokeStyle?: string;
49
- };
50
- type MassData = {
51
- style: number;
52
- _uuid?: string;
53
- width?: number;
54
- height?: number;
55
- status?: number | string | undefined;
56
- _status?: number | string | undefined;
57
- lnglat: [string, string] | [number, number];
34
+ colorMap?: Map<string, string>;
58
35
  };
59
36
  type IconConfig = {
60
37
  baseUrl: string;
61
38
  hasLine?: boolean;
62
39
  hasFace?: boolean;
63
- statusNum: number;
40
+ statusNum?: number;
64
41
  isDynamic?: boolean;
65
42
  markerIcon: string;
66
43
  activeScale?: number;
44
+ vectorConfig?: VectorConfig;
67
45
  markerSize: [number, number];
68
46
  };
47
+ type MassData = {
48
+ _uuid?: string;
49
+ id: string;
50
+ style: number;
51
+ name: string;
52
+ status: string;
53
+ width?: number;
54
+ height?: number;
55
+ itemName: string;
56
+ rawData: {
57
+ [key: string]: any;
58
+ };
59
+ imgList: {
60
+ text: string;
61
+ icon: string;
62
+ }[];
63
+ lnglat: [string, string] | [number, number];
64
+ };
69
65
  type MassMarkersStyleOptions = {
70
66
  url: string;
71
67
  zIndex?: number;
@@ -112,7 +108,7 @@ declare const createAnimationMarker: (imgUrl: string, data: MassData) => void;
112
108
  * 重置激活的矢量数据
113
109
  */
114
110
  declare const resetActiveVector: () => void;
115
- declare const createGeoJsonLayer: (dataList: any, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry>>, Feature<ol_geom.Geometry>>;
111
+ declare const createBusinessLayer: (dataList: any, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry>>, Feature<ol_geom.Geometry>>;
116
112
  /**
117
113
  * 创建面状数据
118
114
  * @param dataList
@@ -163,6 +159,6 @@ declare const addMassMarksLayer: (getImgUrlFn: GetImgUrlFn) => (dataList: never[
163
159
  * 更新图层根据选中状态列表
164
160
  * @param checkedStatusList
165
161
  */
166
- declare const updateMarksLayersByStatus: (checkedStatusList?: any[]) => void;
162
+ declare const updateMarksLayersByStatus: (checkedStatusList?: string[]) => void;
167
163
 
168
- export { type CustomMap, type GetImgUrl, type GetImgUrlFn, type IconConfig, type LayerConfig, type LineConfig, type MassData, type MassMarkersStyleOptions, type VectorConfig, type WmtsSourceOptions, activeMarkerByUid, addMassMarksLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createGeoJsonLayer, createMapInstance, createMapWorldLayer, createMassMarksLayer, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, disposeMap, emitter, getMapInstance, instance, removeAllLayers, resetActiveMarker, resetActiveVector, resetMap, resetZoomAndCenter, updateMarksLayersByStatus };
164
+ export { type CustomMap, type GetImgUrl, type GetImgUrlFn, type IconConfig, type MassData, type MassMarkersStyleOptions, type VectorConfig, type WmtsSourceOptions, activeMarkerByUid, addMassMarksLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createBusinessLayer, createMapInstance, createMapWorldLayer, createMassMarksLayer, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, disposeMap, emitter, getMapInstance, instance, removeAllLayers, resetActiveMarker, resetActiveVector, resetMap, resetZoomAndCenter, updateMarksLayersByStatus };
package/dist/index.js CHANGED
@@ -105,6 +105,7 @@ import View from "ol/View";
105
105
  import { defaults } from "ol/control";
106
106
 
107
107
  // src/layer-utils.ts
108
+ import gcoord from "gcoord";
108
109
  import { Point } from "ol/geom";
109
110
  import { GeoJSON } from "ol/format";
110
111
  import { Feature, Overlay } from "ol";
@@ -165,38 +166,42 @@ var assembleGeoJson = (dataList, config) => {
165
166
  console.error(`\u521B\u5EFA\u7EBF\u72B6\u6570\u636E\u5931\u8D25\uFF1A${e}`);
166
167
  }
167
168
  });
168
- return { type: "FeatureCollection", features: tempList };
169
+ return gcoord.transform({ type: "FeatureCollection", features: tempList }, gcoord.GCJ02, gcoord.WGS84);
169
170
  };
170
- var createGeoJsonLayer = (dataList, config) => {
171
- const { isLine, layerName } = config || {};
171
+ var createVectorStyle = (data, config) => {
172
+ const { isLine, colorMap, fillColor, colorKey, strokeColor, strokeWeight } = config || {};
173
+ const style = new Style({
174
+ stroke: new Stroke({
175
+ width: strokeWeight,
176
+ color: colorKey ? (colorMap == null ? void 0 : colorMap.get(data[colorKey])) || strokeColor : strokeColor
177
+ })
178
+ });
179
+ if (!isLine) {
180
+ style.setFill(
181
+ new Fill({
182
+ color: colorKey ? (colorMap == null ? void 0 : colorMap.get(data[colorKey])) || fillColor : fillColor
183
+ })
184
+ );
185
+ }
186
+ return style;
187
+ };
188
+ var createBusinessLayer = (dataList, config) => {
189
+ const { layerName } = config || {};
172
190
  const geoJson = assembleGeoJson(dataList, config);
173
191
  const vectorLayer = new VectorLayer({
174
192
  className: layerName ? layerName : "ol-layer",
175
193
  source: new VectorSource({
176
- features: new GeoJSON().readFeatures(geoJson)
177
- }),
178
- style: isLine ? new Style({
179
- stroke: new Stroke({
180
- color: "red",
181
- lineDash: [10],
182
- width: 3
183
- })
184
- }) : new Style({
185
- stroke: new Stroke({
186
- color: "red",
187
- lineDash: [10],
188
- width: 3
189
- }),
190
- fill: new Fill({
191
- color: "rgba(0, 0, 255, 0.1)"
194
+ features: new GeoJSON().readFeatures(geoJson).map((feature) => {
195
+ feature.setStyle(createVectorStyle(feature.getProperties(), config));
196
+ return feature;
192
197
  })
193
198
  })
194
199
  });
195
200
  vectorLayer.set("_layerName", layerName);
196
201
  return vectorLayer;
197
202
  };
198
- var createVectorFaceLayer = (dataList = [], config) => createGeoJsonLayer(dataList, Object.assign(config, { isLine: false }));
199
- var createVectorLineLayer = (dataList = [], config) => createGeoJsonLayer(dataList, Object.assign(config, { isLine: true }));
203
+ var createVectorFaceLayer = (dataList = [], config) => createBusinessLayer(dataList, Object.assign(config, { isLine: false }));
204
+ var createVectorLineLayer = (dataList = [], config) => createBusinessLayer(dataList, Object.assign(config, { isLine: true }));
200
205
  var removeAllLayers = (isClearAll = true) => {
201
206
  removeOverlays();
202
207
  console.log(isClearAll);
@@ -367,7 +372,7 @@ var createMassMarksLayer = (dataList, styleList = []) => {
367
372
  _isCustom: true,
368
373
  _isMassMarksLayer: true,
369
374
  _statusNum: styleList.length / 2,
370
- _dataList: dataList,
375
+ _dataList: [...dataList],
371
376
  _uuidSet: new Set(dataList.map((item) => item._uuid) || [])
372
377
  });
373
378
  return vectorLayer;
@@ -381,7 +386,8 @@ var addMassMarksLayer = (getImgUrlFn) => {
381
386
  isDynamic,
382
387
  statusNum,
383
388
  markerIcon,
384
- markerSize
389
+ markerSize,
390
+ vectorConfig
385
391
  } = iconConfig;
386
392
  const massMarksStyles = buildMassMarksStyles(getImgUrlFn)({
387
393
  baseUrl,
@@ -395,7 +401,7 @@ var addMassMarksLayer = (getImgUrlFn) => {
395
401
  createSelectByLayer(massMarksLayer);
396
402
  }
397
403
  if (hasLine) {
398
- const vectorLayer = createGeoJsonLayer(dataList, {
404
+ const vectorLayer = createBusinessLayer(dataList, vectorConfig ? vectorConfig : {
399
405
  key: "line",
400
406
  isLine: true,
401
407
  strokeColor: "rgba(29, 235, 255, 0.8)"
@@ -403,10 +409,9 @@ var addMassMarksLayer = (getImgUrlFn) => {
403
409
  instance.addLayer(vectorLayer);
404
410
  }
405
411
  if (hasFace) {
406
- const vectorLayer = createGeoJsonLayer(dataList, {
412
+ const vectorLayer = createBusinessLayer(dataList, vectorConfig ? vectorConfig : {
407
413
  isLine: false,
408
414
  key: "faceList",
409
- fillOpacity: 0.1,
410
415
  fillColor: "#4247DF",
411
416
  strokeWeight: 1,
412
417
  strokeStyle: "dashed",
@@ -630,7 +635,7 @@ export {
630
635
  buildMassMarksStyles,
631
636
  createAnimationMarker,
632
637
  createBaseLayer,
633
- createGeoJsonLayer,
638
+ createBusinessLayer,
634
639
  createMapInstance,
635
640
  createMapWorldLayer,
636
641
  createMassMarksLayer,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "map-ol-utils",
3
- "version": "0.0.21",
3
+ "version": "0.0.23",
4
4
  "type": "module",
5
5
  "description": "Openlayers utils library",
6
6
  "files": [
@@ -27,11 +27,9 @@
27
27
  "dependencies": {
28
28
  "ol": "^10.5.0",
29
29
  "mitt": "^3.0.1",
30
- "proj4": "^2.15.0"
31
- },
32
- "devDependencies": {
33
- "@types/proj4": "^2.5.6"
30
+ "gcoord": "^1.0.7"
34
31
  },
32
+ "devDependencies": {},
35
33
  "peerDependencies": {
36
34
  "ol": ">=10.5.0"
37
35
  },