ol 9.0.0-dev.1707341212133 → 9.0.0-dev.1707494062569
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/Map.d.ts +5 -10
- package/Map.d.ts.map +1 -1
- package/Map.js +3 -17
- package/VectorRenderTile.d.ts +0 -7
- package/VectorRenderTile.d.ts.map +1 -1
- package/VectorRenderTile.js +0 -6
- package/dist/ol.d.ts +2 -0
- package/dist/ol.d.ts.map +1 -1
- package/dist/ol.js +2 -2
- package/dist/ol.js.map +1 -1
- package/layer/BaseVector.d.ts +7 -22
- package/layer/BaseVector.d.ts.map +1 -1
- package/layer/BaseVector.js +12 -20
- package/layer/Layer.d.ts +12 -0
- package/layer/Layer.d.ts.map +1 -1
- package/layer/Layer.js +23 -0
- package/layer/VectorImage.d.ts +10 -6
- package/layer/VectorImage.d.ts.map +1 -1
- package/layer/VectorImage.js +5 -3
- package/layer/VectorTile.d.ts +22 -30
- package/layer/VectorTile.d.ts.map +1 -1
- package/layer/VectorTile.js +10 -14
- package/package.json +1 -1
- package/render/VectorContext.d.ts +22 -11
- package/render/VectorContext.d.ts.map +1 -1
- package/render/VectorContext.js +22 -11
- package/render/canvas/Builder.d.ts +2 -1
- package/render/canvas/Builder.d.ts.map +1 -1
- package/render/canvas/Builder.js +19 -3
- package/render/canvas/Executor.d.ts +18 -7
- package/render/canvas/Executor.d.ts.map +1 -1
- package/render/canvas/Executor.js +101 -57
- package/render/canvas/ExecutorGroup.d.ts +39 -9
- package/render/canvas/ExecutorGroup.d.ts.map +1 -1
- package/render/canvas/ExecutorGroup.js +96 -25
- package/render/canvas/ImageBuilder.d.ts +1 -1
- package/render/canvas/ImageBuilder.d.ts.map +1 -1
- package/render/canvas/ImageBuilder.js +30 -8
- package/render/canvas/Immediate.d.ts +11 -0
- package/render/canvas/Immediate.d.ts.map +1 -1
- package/render/canvas/LineStringBuilder.d.ts.map +1 -1
- package/render/canvas/LineStringBuilder.js +6 -4
- package/render/canvas/PolygonBuilder.d.ts.map +1 -1
- package/render/canvas/PolygonBuilder.js +9 -6
- package/render/canvas/TextBuilder.d.ts +4 -0
- package/render/canvas/TextBuilder.d.ts.map +1 -1
- package/render/canvas/TextBuilder.js +15 -6
- package/render/canvas/ZIndexContext.d.ts +56 -0
- package/render/canvas/ZIndexContext.d.ts.map +1 -0
- package/render/canvas/ZIndexContext.js +112 -0
- package/render/canvas/style.d.ts.map +1 -1
- package/render/canvas/style.js +9 -2
- package/render/canvas.d.ts +2 -2
- package/render/canvas.d.ts.map +1 -1
- package/render/canvas.js +6 -2
- package/renderer/Composite.d.ts +3 -2
- package/renderer/Composite.d.ts.map +1 -1
- package/renderer/Composite.js +26 -19
- package/renderer/Layer.d.ts +4 -0
- package/renderer/Layer.d.ts.map +1 -1
- package/renderer/Layer.js +5 -0
- package/renderer/Map.d.ts +0 -4
- package/renderer/Map.d.ts.map +1 -1
- package/renderer/Map.js +0 -5
- package/renderer/canvas/Layer.d.ts +4 -0
- package/renderer/canvas/Layer.d.ts.map +1 -1
- package/renderer/canvas/Layer.js +32 -0
- package/renderer/canvas/VectorImageLayer.d.ts.map +1 -1
- package/renderer/canvas/VectorImageLayer.js +8 -1
- package/renderer/canvas/VectorLayer.d.ts +6 -5
- package/renderer/canvas/VectorLayer.d.ts.map +1 -1
- package/renderer/canvas/VectorLayer.js +55 -58
- package/renderer/canvas/VectorTileLayer.d.ts +14 -3
- package/renderer/canvas/VectorTileLayer.d.ts.map +1 -1
- package/renderer/canvas/VectorTileLayer.js +129 -60
- package/renderer/vector.d.ts +3 -2
- package/renderer/vector.d.ts.map +1 -1
- package/renderer/vector.js +68 -126
- package/renderer/webgl/PointsLayer.d.ts +1 -0
- package/renderer/webgl/PointsLayer.d.ts.map +1 -1
- package/renderer/webgl/PointsLayer.js +2 -0
- package/source/Raster.js +1 -1
- package/style/Circle.d.ts +2 -2
- package/style/Circle.d.ts.map +1 -1
- package/style/Circle.js +1 -1
- package/style/Icon.d.ts +1 -1
- package/style/Icon.d.ts.map +1 -1
- package/style/Icon.js +1 -1
- package/style/Image.d.ts +7 -6
- package/style/Image.d.ts.map +1 -1
- package/style/Image.js +4 -3
- package/style/RegularShape.d.ts +2 -2
- package/style/RegularShape.d.ts.map +1 -1
- package/style/RegularShape.js +1 -1
- package/style/Style.d.ts +17 -0
- package/style/Style.d.ts.map +1 -1
- package/style/Style.js +10 -0
- package/style/Text.d.ts +16 -0
- package/style/Text.d.ts.map +1 -1
- package/style/Text.js +17 -0
- package/style/flat.d.ts +11 -6
- package/style/flat.d.ts.map +1 -1
- package/style/flat.js +4 -3
- package/util.js +1 -1
package/render/canvas/Builder.js
CHANGED
|
@@ -247,9 +247,10 @@ class CanvasBuilder extends VectorContext {
|
|
|
247
247
|
* @param {import("../../Feature.js").FeatureLike} feature Feature.
|
|
248
248
|
* @param {Function} renderer Renderer.
|
|
249
249
|
* @param {Function} hitDetectionRenderer Renderer.
|
|
250
|
+
* @param {number} [index] Render order index.
|
|
250
251
|
*/
|
|
251
|
-
drawCustom(geometry, feature, renderer, hitDetectionRenderer) {
|
|
252
|
-
this.beginGeometry(geometry, feature);
|
|
252
|
+
drawCustom(geometry, feature, renderer, hitDetectionRenderer, index) {
|
|
253
|
+
this.beginGeometry(geometry, feature, index);
|
|
253
254
|
|
|
254
255
|
const type = geometry.getType();
|
|
255
256
|
const stride = geometry.getStride();
|
|
@@ -288,6 +289,7 @@ class CanvasBuilder extends VectorContext {
|
|
|
288
289
|
geometry,
|
|
289
290
|
renderer,
|
|
290
291
|
inflateMultiCoordinatesArray,
|
|
292
|
+
index,
|
|
291
293
|
]);
|
|
292
294
|
this.hitDetectionInstructions.push([
|
|
293
295
|
CanvasInstruction.CUSTOM,
|
|
@@ -296,6 +298,7 @@ class CanvasBuilder extends VectorContext {
|
|
|
296
298
|
geometry,
|
|
297
299
|
hitDetectionRenderer || renderer,
|
|
298
300
|
inflateMultiCoordinatesArray,
|
|
301
|
+
index,
|
|
299
302
|
]);
|
|
300
303
|
break;
|
|
301
304
|
case 'Polygon':
|
|
@@ -323,6 +326,7 @@ class CanvasBuilder extends VectorContext {
|
|
|
323
326
|
geometry,
|
|
324
327
|
renderer,
|
|
325
328
|
inflateCoordinatesArray,
|
|
329
|
+
index,
|
|
326
330
|
]);
|
|
327
331
|
this.hitDetectionInstructions.push([
|
|
328
332
|
CanvasInstruction.CUSTOM,
|
|
@@ -331,6 +335,7 @@ class CanvasBuilder extends VectorContext {
|
|
|
331
335
|
geometry,
|
|
332
336
|
hitDetectionRenderer || renderer,
|
|
333
337
|
inflateCoordinatesArray,
|
|
338
|
+
index,
|
|
334
339
|
]);
|
|
335
340
|
break;
|
|
336
341
|
case 'LineString':
|
|
@@ -351,6 +356,7 @@ class CanvasBuilder extends VectorContext {
|
|
|
351
356
|
geometry,
|
|
352
357
|
renderer,
|
|
353
358
|
inflateCoordinates,
|
|
359
|
+
index,
|
|
354
360
|
]);
|
|
355
361
|
this.hitDetectionInstructions.push([
|
|
356
362
|
CanvasInstruction.CUSTOM,
|
|
@@ -359,6 +365,7 @@ class CanvasBuilder extends VectorContext {
|
|
|
359
365
|
geometry,
|
|
360
366
|
hitDetectionRenderer || renderer,
|
|
361
367
|
inflateCoordinates,
|
|
368
|
+
index,
|
|
362
369
|
]);
|
|
363
370
|
break;
|
|
364
371
|
case 'MultiPoint':
|
|
@@ -373,6 +380,7 @@ class CanvasBuilder extends VectorContext {
|
|
|
373
380
|
geometry,
|
|
374
381
|
renderer,
|
|
375
382
|
inflateCoordinates,
|
|
383
|
+
index,
|
|
376
384
|
]);
|
|
377
385
|
this.hitDetectionInstructions.push([
|
|
378
386
|
CanvasInstruction.CUSTOM,
|
|
@@ -381,6 +389,7 @@ class CanvasBuilder extends VectorContext {
|
|
|
381
389
|
geometry,
|
|
382
390
|
hitDetectionRenderer || renderer,
|
|
383
391
|
inflateCoordinates,
|
|
392
|
+
index,
|
|
384
393
|
]);
|
|
385
394
|
}
|
|
386
395
|
break;
|
|
@@ -395,6 +404,8 @@ class CanvasBuilder extends VectorContext {
|
|
|
395
404
|
builderEnd,
|
|
396
405
|
geometry,
|
|
397
406
|
renderer,
|
|
407
|
+
undefined,
|
|
408
|
+
index,
|
|
398
409
|
]);
|
|
399
410
|
this.hitDetectionInstructions.push([
|
|
400
411
|
CanvasInstruction.CUSTOM,
|
|
@@ -402,6 +413,8 @@ class CanvasBuilder extends VectorContext {
|
|
|
402
413
|
builderEnd,
|
|
403
414
|
geometry,
|
|
404
415
|
hitDetectionRenderer || renderer,
|
|
416
|
+
undefined,
|
|
417
|
+
index,
|
|
405
418
|
]);
|
|
406
419
|
break;
|
|
407
420
|
default:
|
|
@@ -413,13 +426,15 @@ class CanvasBuilder extends VectorContext {
|
|
|
413
426
|
* @protected
|
|
414
427
|
* @param {import("../../geom/Geometry").default|import("../Feature.js").default} geometry The geometry.
|
|
415
428
|
* @param {import("../../Feature.js").FeatureLike} feature Feature.
|
|
429
|
+
* @param {number} index Render order index
|
|
416
430
|
*/
|
|
417
|
-
beginGeometry(geometry, feature) {
|
|
431
|
+
beginGeometry(geometry, feature, index) {
|
|
418
432
|
this.beginGeometryInstruction1_ = [
|
|
419
433
|
CanvasInstruction.BEGIN_GEOMETRY,
|
|
420
434
|
feature,
|
|
421
435
|
0,
|
|
422
436
|
geometry,
|
|
437
|
+
index,
|
|
423
438
|
];
|
|
424
439
|
this.instructions.push(this.beginGeometryInstruction1_);
|
|
425
440
|
this.beginGeometryInstruction2_ = [
|
|
@@ -427,6 +442,7 @@ class CanvasBuilder extends VectorContext {
|
|
|
427
442
|
feature,
|
|
428
443
|
0,
|
|
429
444
|
geometry,
|
|
445
|
+
index,
|
|
430
446
|
];
|
|
431
447
|
this.hitDetectionInstructions.push(this.beginGeometryInstruction2_);
|
|
432
448
|
}
|
|
@@ -61,7 +61,7 @@ export type ImageOrLabelDimensions = {
|
|
|
61
61
|
};
|
|
62
62
|
export type ReplayImageOrLabelArgs = {
|
|
63
63
|
0: CanvasRenderingContext2D;
|
|
64
|
-
1:
|
|
64
|
+
1: import('../../size.js').Size;
|
|
65
65
|
2: import("../canvas.js").Label | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement;
|
|
66
66
|
3: ImageOrLabelDimensions;
|
|
67
67
|
4: number;
|
|
@@ -74,9 +74,10 @@ declare class Executor {
|
|
|
74
74
|
* @param {number} resolution Resolution.
|
|
75
75
|
* @param {number} pixelRatio Pixel ratio.
|
|
76
76
|
* @param {boolean} overlaps The replay can have overlapping geometries.
|
|
77
|
-
* @param {import("../canvas.js").SerializableInstructions} instructions The serializable instructions
|
|
77
|
+
* @param {import("../canvas.js").SerializableInstructions} instructions The serializable instructions.
|
|
78
|
+
* @param {boolean} [deferredRendering] Enable deferred rendering.
|
|
78
79
|
*/
|
|
79
|
-
constructor(resolution: number, pixelRatio: number, overlaps: boolean, instructions: import("../canvas.js").SerializableInstructions);
|
|
80
|
+
constructor(resolution: number, pixelRatio: number, overlaps: boolean, instructions: import("../canvas.js").SerializableInstructions, deferredRendering?: boolean | undefined);
|
|
80
81
|
/**
|
|
81
82
|
* @protected
|
|
82
83
|
* @type {boolean}
|
|
@@ -161,6 +162,15 @@ declare class Executor {
|
|
|
161
162
|
* @type {Object<string, import("../canvas.js").Label>}
|
|
162
163
|
*/
|
|
163
164
|
private labels_;
|
|
165
|
+
/**
|
|
166
|
+
* @private
|
|
167
|
+
* @type {import("../canvas/ZIndexContext.js").default}
|
|
168
|
+
*/
|
|
169
|
+
private zIndexContext_;
|
|
170
|
+
/**
|
|
171
|
+
* @return {ZIndexContext} ZIndex context.
|
|
172
|
+
*/
|
|
173
|
+
getZIndexContext(): ZIndexContext;
|
|
164
174
|
/**
|
|
165
175
|
* @param {string|Array<string>} text Text.
|
|
166
176
|
* @param {string} textKey Text style key.
|
|
@@ -203,7 +213,7 @@ declare class Executor {
|
|
|
203
213
|
/**
|
|
204
214
|
* @private
|
|
205
215
|
* @param {CanvasRenderingContext2D} context Context.
|
|
206
|
-
* @param {
|
|
216
|
+
* @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size.
|
|
207
217
|
* @param {import("../canvas.js").Label|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} imageOrLabel Image.
|
|
208
218
|
* @param {ImageOrLabelDimensions} dimensions Dimensions.
|
|
209
219
|
* @param {number} opacity Opacity.
|
|
@@ -235,7 +245,7 @@ declare class Executor {
|
|
|
235
245
|
/**
|
|
236
246
|
* @private
|
|
237
247
|
* @param {CanvasRenderingContext2D} context Context.
|
|
238
|
-
* @param {
|
|
248
|
+
* @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size
|
|
239
249
|
* @param {import("../../transform.js").Transform} transform Transform.
|
|
240
250
|
* @param {Array<*>} instructions Instructions array.
|
|
241
251
|
* @param {boolean} snapToPixel Snap point symbols and text to integer pixels.
|
|
@@ -249,13 +259,13 @@ declare class Executor {
|
|
|
249
259
|
private execute_;
|
|
250
260
|
/**
|
|
251
261
|
* @param {CanvasRenderingContext2D} context Context.
|
|
252
|
-
* @param {
|
|
262
|
+
* @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size.
|
|
253
263
|
* @param {import("../../transform.js").Transform} transform Transform.
|
|
254
264
|
* @param {number} viewRotation View rotation.
|
|
255
265
|
* @param {boolean} snapToPixel Snap point symbols and text to integer pixels.
|
|
256
266
|
* @param {import("rbush").default} [declutterTree] Declutter tree.
|
|
257
267
|
*/
|
|
258
|
-
execute(context: CanvasRenderingContext2D,
|
|
268
|
+
execute(context: CanvasRenderingContext2D, scaledCanvasSize: import('../../size.js').Size, transform: import("../../transform.js").Transform, viewRotation: number, snapToPixel: boolean, declutterTree?: any): void;
|
|
259
269
|
/**
|
|
260
270
|
* @param {CanvasRenderingContext2D} context Context.
|
|
261
271
|
* @param {import("../../transform.js").Transform} transform Transform.
|
|
@@ -268,4 +278,5 @@ declare class Executor {
|
|
|
268
278
|
*/
|
|
269
279
|
executeHitDetection<T>(context: CanvasRenderingContext2D, transform: import("../../transform.js").Transform, viewRotation: number, featureCallback?: FeatureCallback<T> | undefined, hitExtent?: import("../../extent.js").Extent | undefined): T | undefined;
|
|
270
280
|
}
|
|
281
|
+
import ZIndexContext from '../canvas/ZIndexContext.js';
|
|
271
282
|
//# sourceMappingURL=Executor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Executor.d.ts","sourceRoot":"","sources":["Executor.js"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Executor.d.ts","sourceRoot":"","sources":["Executor.js"],"names":[],"mappings":";;;;;UA4Bc,MAAM;;;;UACN,MAAM;;;;UACN,MAAM;;;;UACN,MAAM;;;;;;;;;;gBAMN,MAAM;;;;gBACN,MAAM;;;;gBACN,MAAM;;;;gBACN,MAAM;;;;aACN,MAAM;;;;aACN,MAAM;;;;WACN,MAAM,MAAM,CAAC;;;;kBACb,IAAI;;;;qBACJ,OAAO,oBAAoB,EAAE,SAAS;;qCAIvC;IAAC,CAAC,EAAE,wBAAwB,CAAC;IAAC,CAAC,EAAE,OAAO,eAAe,EAAE,IAAI,CAAC;IAAC,CAAC,EAAE,OAAO,cAAc,EAAE,KAAK,GAAC,gBAAgB,GAAC,iBAAiB,GAAC,gBAAgB,CAAC;IAAC,CAAC,EAAE,sBAAsB,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,UAAQ,CAAC;IAAC,CAAC,EAAE,UAAQ,CAAA;CAAC;wCAK1M,OAAO,kBAAkB,EAAE,WAAW,QAAE,OAAO,8BAA8B,EAAE,OAAO,KAAG,CAAC;AAiEhH;IACE;;;;;;OAMG;IACH,wBANW,MAAM,cACN,MAAM,YACN,OAAO,gBACP,OAAO,cAAc,EAAE,wBAAwB,2CA6GzD;IAnGC;;;OAGG;IACH,oBAFU,OAAO,CAEO;IAExB;;;OAGG;IACH,sBAFU,MAAM,CAEY;IAE5B;;;;OAIG;IACH,sBAFU,MAAM,CAEY;IAE5B;;;OAGG;IACH,2BAAuB;IAEvB;;;OAGG;IACH,wBAFU,UAAQ,CAE2B;IAE7C;;;OAGG;IACH,uBAFU,MAAM,MAAM,CAAC,CAEoB;IAE3C;;;OAGG;IACH,yBAA0B;IAE1B;;;OAGG;IACH,2BAA2C;IAE3C;;;OAGG;IACH,oCAFU,UAAQ,CAEmD;IAErE;;;OAGG;IACH,0BAA6B;IAE7B;;;OAGG;IACH,sBAAsB;IAEtB;;OAEG;IACH;YAFkB,MAAM,GAAE,OAAO,cAAc,EAAE,SAAS;MAEX;IAE/C;;OAEG;IACH;YAFkB,MAAM,GAAE,OAAO,cAAc,EAAE,WAAW;MAET;IAEnD;;OAEG;IACH;YAFkB,MAAM,GAAE,OAAO,cAAc,EAAE,SAAS;MAEX;IAE/C;;;OAGG;IACH,gBAAiB;IAEjB;;;OAGG;IACH,gBAAiB;IAEjB;;;OAGG;IACH,uBAAoE;IAGtE;;OAEG;IACH,oBAFY,aAAa,CAIxB;IAED;;;;;;OAMG;IACH,kBANW,MAAM,GAAC,MAAM,MAAM,CAAC,WACpB,MAAM,WACN,MAAM,aACN,MAAM,GACL,OAAO,cAAc,EAAE,KAAK,CA8GvC;IAED;;;;;;;;OAQG;IACH,+BARW,wBAAwB,MACxB,OAAO,qBAAqB,EAAE,UAAU,MACxC,OAAO,qBAAqB,EAAE,UAAU,MACxC,OAAO,qBAAqB,EAAE,UAAU,MACxC,OAAO,qBAAqB,EAAE,UAAU,mBACxC,UAAQ,qBACR,UAAQ,QA4BlB;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,yCA+FC;IAED;;;;;;;;;;OAUG;IACH,4BAgDC;IAED;;;OAGG;IACH,cAgBC;IAED;;;;OAIG;IACH,wBASC;IAED;;;;;;;OAOG;IACH,qCA2BC;IAED;;;;;;;;;;;;;OAaG;IACH,iBAokBC;IAED;;;;;;;OAOG;IACH,iBAPW,wBAAwB,oBACxB,OAAO,eAAe,EAAE,IAAI,aAC5B,OAAO,oBAAoB,EAAE,SAAS,gBACtC,MAAM,eACN,OAAO,6BAsBjB;IAED;;;;;;;;;OASG;IACH,gCATW,wBAAwB,aACxB,OAAO,oBAAoB,EAAE,SAAS,gBACtC,MAAM,6HAwBhB;CACF;0BAlxCyB,4BAA4B"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @module ol/render/canvas/Executor
|
|
3
3
|
*/
|
|
4
4
|
import CanvasInstruction from './Instruction.js';
|
|
5
|
+
import ZIndexContext from '../canvas/ZIndexContext.js';
|
|
5
6
|
import {TEXT_ALIGN} from './TextBuilder.js';
|
|
6
7
|
import {
|
|
7
8
|
apply as applyTransform,
|
|
@@ -46,7 +47,7 @@ import {transform2D} from '../../geom/flat/transform.js';
|
|
|
46
47
|
*/
|
|
47
48
|
|
|
48
49
|
/**
|
|
49
|
-
* @typedef {{0: CanvasRenderingContext2D, 1:
|
|
50
|
+
* @typedef {{0: CanvasRenderingContext2D, 1: import('../../size.js').Size, 2: import("../canvas.js").Label|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement, 3: ImageOrLabelDimensions, 4: number, 5: Array<*>, 6: Array<*>}} ReplayImageOrLabelArgs
|
|
50
51
|
*/
|
|
51
52
|
|
|
52
53
|
/**
|
|
@@ -121,9 +122,16 @@ class Executor {
|
|
|
121
122
|
* @param {number} resolution Resolution.
|
|
122
123
|
* @param {number} pixelRatio Pixel ratio.
|
|
123
124
|
* @param {boolean} overlaps The replay can have overlapping geometries.
|
|
124
|
-
* @param {import("../canvas.js").SerializableInstructions} instructions The serializable instructions
|
|
125
|
+
* @param {import("../canvas.js").SerializableInstructions} instructions The serializable instructions.
|
|
126
|
+
* @param {boolean} [deferredRendering] Enable deferred rendering.
|
|
125
127
|
*/
|
|
126
|
-
constructor(
|
|
128
|
+
constructor(
|
|
129
|
+
resolution,
|
|
130
|
+
pixelRatio,
|
|
131
|
+
overlaps,
|
|
132
|
+
instructions,
|
|
133
|
+
deferredRendering,
|
|
134
|
+
) {
|
|
127
135
|
/**
|
|
128
136
|
* @protected
|
|
129
137
|
* @type {boolean}
|
|
@@ -217,6 +225,19 @@ class Executor {
|
|
|
217
225
|
* @type {Object<string, import("../canvas.js").Label>}
|
|
218
226
|
*/
|
|
219
227
|
this.labels_ = {};
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* @private
|
|
231
|
+
* @type {import("../canvas/ZIndexContext.js").default}
|
|
232
|
+
*/
|
|
233
|
+
this.zIndexContext_ = deferredRendering ? new ZIndexContext() : null;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* @return {ZIndexContext} ZIndex context.
|
|
238
|
+
*/
|
|
239
|
+
getZIndexContext() {
|
|
240
|
+
return this.zIndexContext_;
|
|
220
241
|
}
|
|
221
242
|
|
|
222
243
|
/**
|
|
@@ -493,7 +514,7 @@ class Executor {
|
|
|
493
514
|
/**
|
|
494
515
|
* @private
|
|
495
516
|
* @param {CanvasRenderingContext2D} context Context.
|
|
496
|
-
* @param {
|
|
517
|
+
* @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size.
|
|
497
518
|
* @param {import("../canvas.js").Label|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} imageOrLabel Image.
|
|
498
519
|
* @param {ImageOrLabelDimensions} dimensions Dimensions.
|
|
499
520
|
* @param {number} opacity Opacity.
|
|
@@ -503,7 +524,7 @@ class Executor {
|
|
|
503
524
|
*/
|
|
504
525
|
replayImageOrLabel_(
|
|
505
526
|
context,
|
|
506
|
-
|
|
527
|
+
scaledCanvasSize,
|
|
507
528
|
imageOrLabel,
|
|
508
529
|
dimensions,
|
|
509
530
|
opacity,
|
|
@@ -513,14 +534,13 @@ class Executor {
|
|
|
513
534
|
const fillStroke = !!(fillInstruction || strokeInstruction);
|
|
514
535
|
|
|
515
536
|
const box = dimensions.declutterBox;
|
|
516
|
-
const canvas = context.canvas;
|
|
517
537
|
const strokePadding = strokeInstruction
|
|
518
538
|
? (strokeInstruction[2] * dimensions.scale[0]) / 2
|
|
519
539
|
: 0;
|
|
520
540
|
const intersects =
|
|
521
|
-
box.minX - strokePadding <=
|
|
541
|
+
box.minX - strokePadding <= scaledCanvasSize[0] &&
|
|
522
542
|
box.maxX + strokePadding >= 0 &&
|
|
523
|
-
box.minY - strokePadding <=
|
|
543
|
+
box.minY - strokePadding <= scaledCanvasSize[1] &&
|
|
524
544
|
box.maxY + strokePadding >= 0;
|
|
525
545
|
|
|
526
546
|
if (intersects) {
|
|
@@ -580,7 +600,7 @@ class Executor {
|
|
|
580
600
|
* @param {Array<*>} instruction Instruction.
|
|
581
601
|
*/
|
|
582
602
|
setStrokeStyle_(context, instruction) {
|
|
583
|
-
context
|
|
603
|
+
context.strokeStyle =
|
|
584
604
|
/** @type {import("../../colorlike.js").ColorLike} */ (instruction[1]);
|
|
585
605
|
context.lineWidth = /** @type {number} */ (instruction[2]);
|
|
586
606
|
context.lineCap = /** @type {CanvasLineCap} */ (instruction[3]);
|
|
@@ -630,7 +650,7 @@ class Executor {
|
|
|
630
650
|
/**
|
|
631
651
|
* @private
|
|
632
652
|
* @param {CanvasRenderingContext2D} context Context.
|
|
633
|
-
* @param {
|
|
653
|
+
* @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size
|
|
634
654
|
* @param {import("../../transform.js").Transform} transform Transform.
|
|
635
655
|
* @param {Array<*>} instructions Instructions array.
|
|
636
656
|
* @param {boolean} snapToPixel Snap point symbols and text to integer pixels.
|
|
@@ -643,7 +663,7 @@ class Executor {
|
|
|
643
663
|
*/
|
|
644
664
|
execute_(
|
|
645
665
|
context,
|
|
646
|
-
|
|
666
|
+
scaledCanvasSize,
|
|
647
667
|
transform,
|
|
648
668
|
instructions,
|
|
649
669
|
snapToPixel,
|
|
@@ -651,6 +671,7 @@ class Executor {
|
|
|
651
671
|
hitExtent,
|
|
652
672
|
declutterTree,
|
|
653
673
|
) {
|
|
674
|
+
const zIndexContext = this.zIndexContext_;
|
|
654
675
|
/** @type {Array<number>} */
|
|
655
676
|
let pixelCoordinates;
|
|
656
677
|
if (this.pixelCoordinates_ && equals(transform, this.renderedTransform_)) {
|
|
@@ -675,6 +696,8 @@ class Executor {
|
|
|
675
696
|
let dd; // end of per-instruction data
|
|
676
697
|
let anchorX,
|
|
677
698
|
anchorY,
|
|
699
|
+
/** @type {import('../../style/Style.js').DeclutterMode} */
|
|
700
|
+
declutterMode,
|
|
678
701
|
prevX,
|
|
679
702
|
prevY,
|
|
680
703
|
roundX,
|
|
@@ -727,6 +750,9 @@ class Executor {
|
|
|
727
750
|
} else {
|
|
728
751
|
++i;
|
|
729
752
|
}
|
|
753
|
+
if (zIndexContext) {
|
|
754
|
+
zIndexContext.zIndex = instruction[4];
|
|
755
|
+
}
|
|
730
756
|
break;
|
|
731
757
|
case CanvasInstruction.BEGIN_PATH:
|
|
732
758
|
if (pendingFill > batchSize) {
|
|
@@ -769,7 +795,7 @@ class Executor {
|
|
|
769
795
|
instruction[3]
|
|
770
796
|
);
|
|
771
797
|
const renderer = instruction[4];
|
|
772
|
-
const fn = instruction
|
|
798
|
+
const fn = instruction[5];
|
|
773
799
|
state.geometry = geometry;
|
|
774
800
|
state.feature = feature;
|
|
775
801
|
if (!(i in coordinateCache)) {
|
|
@@ -783,6 +809,9 @@ class Executor {
|
|
|
783
809
|
coords[1] = pixelCoordinates[d + 1];
|
|
784
810
|
coords.length = 2;
|
|
785
811
|
}
|
|
812
|
+
if (zIndexContext) {
|
|
813
|
+
zIndexContext.zIndex = instruction[6];
|
|
814
|
+
}
|
|
786
815
|
renderer(coords, state);
|
|
787
816
|
++i;
|
|
788
817
|
break;
|
|
@@ -807,12 +836,9 @@ class Executor {
|
|
|
807
836
|
instruction[12]
|
|
808
837
|
);
|
|
809
838
|
let width = /** @type {number} */ (instruction[13]);
|
|
810
|
-
|
|
811
|
-
/** @type {"declutter"|"obstacle"|"none"|undefined} */ (
|
|
812
|
-
instruction[14]
|
|
813
|
-
);
|
|
839
|
+
declutterMode = instruction[14] || 'declutter';
|
|
814
840
|
const declutterImageWithText =
|
|
815
|
-
/** @type {import("../canvas.js").DeclutterImageWithText} */ (
|
|
841
|
+
/** @type {{args: import("../canvas.js").DeclutterImageWithText, declutterMode: import('../../style/Style.js').DeclutterMode}} */ (
|
|
816
842
|
instruction[15]
|
|
817
843
|
);
|
|
818
844
|
|
|
@@ -894,7 +920,7 @@ class Executor {
|
|
|
894
920
|
/** @type {ReplayImageOrLabelArgs} */
|
|
895
921
|
const args = [
|
|
896
922
|
context,
|
|
897
|
-
|
|
923
|
+
scaledCanvasSize,
|
|
898
924
|
image,
|
|
899
925
|
dimensions,
|
|
900
926
|
opacity,
|
|
@@ -906,44 +932,59 @@ class Executor {
|
|
|
906
932
|
: null,
|
|
907
933
|
];
|
|
908
934
|
if (declutterTree) {
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
} else {
|
|
917
|
-
let imageArgs;
|
|
918
|
-
let imageDeclutterBox;
|
|
919
|
-
if (declutterImageWithText) {
|
|
920
|
-
const index = dd - d;
|
|
921
|
-
if (!declutterImageWithText[index]) {
|
|
922
|
-
// We now have the image for an image+text combination.
|
|
923
|
-
declutterImageWithText[index] = args;
|
|
924
|
-
// Don't render anything for now, wait for the text.
|
|
925
|
-
continue;
|
|
926
|
-
}
|
|
927
|
-
imageArgs = declutterImageWithText[index];
|
|
928
|
-
delete declutterImageWithText[index];
|
|
929
|
-
imageDeclutterBox = getDeclutterBox(imageArgs);
|
|
930
|
-
if (declutterTree.collides(imageDeclutterBox)) {
|
|
931
|
-
continue;
|
|
932
|
-
}
|
|
933
|
-
}
|
|
934
|
-
if (declutterTree.collides(dimensions.declutterBox)) {
|
|
935
|
+
let imageArgs, imageDeclutterMode, imageDeclutterBox;
|
|
936
|
+
if (declutterImageWithText) {
|
|
937
|
+
const index = dd - d;
|
|
938
|
+
if (!declutterImageWithText[index]) {
|
|
939
|
+
// We now have the image for an image+text combination.
|
|
940
|
+
declutterImageWithText[index] = {args, declutterMode};
|
|
941
|
+
// Don't render anything for now, wait for the text.
|
|
935
942
|
continue;
|
|
936
943
|
}
|
|
937
|
-
|
|
938
|
-
|
|
944
|
+
const imageDeclutter = declutterImageWithText[index];
|
|
945
|
+
imageArgs = imageDeclutter.args;
|
|
946
|
+
imageDeclutterMode = imageDeclutter.declutterMode;
|
|
947
|
+
delete declutterImageWithText[index];
|
|
948
|
+
imageDeclutterBox = getDeclutterBox(imageArgs);
|
|
949
|
+
}
|
|
950
|
+
// We now have image and text for an image+text combination.
|
|
951
|
+
let renderImage, renderText;
|
|
952
|
+
if (
|
|
953
|
+
imageArgs &&
|
|
954
|
+
(imageDeclutterMode !== 'declutter' ||
|
|
955
|
+
!declutterTree.collides(imageDeclutterBox))
|
|
956
|
+
) {
|
|
957
|
+
renderImage = true;
|
|
958
|
+
}
|
|
959
|
+
if (
|
|
960
|
+
declutterMode !== 'declutter' ||
|
|
961
|
+
!declutterTree.collides(dimensions.declutterBox)
|
|
962
|
+
) {
|
|
963
|
+
renderText = true;
|
|
964
|
+
}
|
|
965
|
+
if (
|
|
966
|
+
imageDeclutterMode === 'declutter' &&
|
|
967
|
+
declutterMode === 'declutter'
|
|
968
|
+
) {
|
|
969
|
+
const render = renderImage && renderText;
|
|
970
|
+
renderImage = render;
|
|
971
|
+
renderText = render;
|
|
972
|
+
}
|
|
973
|
+
if (renderImage) {
|
|
974
|
+
if (imageDeclutterMode !== 'none') {
|
|
939
975
|
declutterTree.insert(imageDeclutterBox);
|
|
940
|
-
// Render the image before we render the text.
|
|
941
|
-
this.replayImageOrLabel_.apply(this, imageArgs);
|
|
942
976
|
}
|
|
943
|
-
|
|
977
|
+
this.replayImageOrLabel_.apply(this, imageArgs);
|
|
978
|
+
}
|
|
979
|
+
if (renderText) {
|
|
980
|
+
if (declutterMode !== 'none') {
|
|
981
|
+
declutterTree.insert(dimensions.declutterBox);
|
|
982
|
+
}
|
|
983
|
+
this.replayImageOrLabel_.apply(this, args);
|
|
944
984
|
}
|
|
985
|
+
} else {
|
|
986
|
+
this.replayImageOrLabel_.apply(this, args);
|
|
945
987
|
}
|
|
946
|
-
this.replayImageOrLabel_.apply(this, args);
|
|
947
988
|
}
|
|
948
989
|
++i;
|
|
949
990
|
break;
|
|
@@ -964,6 +1005,7 @@ class Executor {
|
|
|
964
1005
|
/** @type {number} */ (instruction[13]),
|
|
965
1006
|
/** @type {number} */ (instruction[13]),
|
|
966
1007
|
];
|
|
1008
|
+
declutterMode = instruction[14] || 'declutter';
|
|
967
1009
|
|
|
968
1010
|
const textState = this.textStates[textKey];
|
|
969
1011
|
const font = textState.font;
|
|
@@ -1039,13 +1081,14 @@ class Executor {
|
|
|
1039
1081
|
);
|
|
1040
1082
|
if (
|
|
1041
1083
|
declutterTree &&
|
|
1084
|
+
declutterMode === 'declutter' &&
|
|
1042
1085
|
declutterTree.collides(dimensions.declutterBox)
|
|
1043
1086
|
) {
|
|
1044
1087
|
break drawChars;
|
|
1045
1088
|
}
|
|
1046
1089
|
replayImageOrLabelArgs.push([
|
|
1047
1090
|
context,
|
|
1048
|
-
|
|
1091
|
+
scaledCanvasSize,
|
|
1049
1092
|
label,
|
|
1050
1093
|
dimensions,
|
|
1051
1094
|
1,
|
|
@@ -1081,13 +1124,14 @@ class Executor {
|
|
|
1081
1124
|
);
|
|
1082
1125
|
if (
|
|
1083
1126
|
declutterTree &&
|
|
1127
|
+
declutterMode === 'declutter' &&
|
|
1084
1128
|
declutterTree.collides(dimensions.declutterBox)
|
|
1085
1129
|
) {
|
|
1086
1130
|
break drawChars;
|
|
1087
1131
|
}
|
|
1088
1132
|
replayImageOrLabelArgs.push([
|
|
1089
1133
|
context,
|
|
1090
|
-
|
|
1134
|
+
scaledCanvasSize,
|
|
1091
1135
|
label,
|
|
1092
1136
|
dimensions,
|
|
1093
1137
|
1,
|
|
@@ -1096,7 +1140,7 @@ class Executor {
|
|
|
1096
1140
|
]);
|
|
1097
1141
|
}
|
|
1098
1142
|
}
|
|
1099
|
-
if (declutterTree) {
|
|
1143
|
+
if (declutterTree && declutterMode !== 'none') {
|
|
1100
1144
|
declutterTree.load(replayImageOrLabelArgs.map(getDeclutterBox));
|
|
1101
1145
|
}
|
|
1102
1146
|
for (let i = 0, ii = replayImageOrLabelArgs.length; i < ii; ++i) {
|
|
@@ -1201,7 +1245,7 @@ class Executor {
|
|
|
1201
1245
|
|
|
1202
1246
|
/**
|
|
1203
1247
|
* @param {CanvasRenderingContext2D} context Context.
|
|
1204
|
-
* @param {
|
|
1248
|
+
* @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size.
|
|
1205
1249
|
* @param {import("../../transform.js").Transform} transform Transform.
|
|
1206
1250
|
* @param {number} viewRotation View rotation.
|
|
1207
1251
|
* @param {boolean} snapToPixel Snap point symbols and text to integer pixels.
|
|
@@ -1209,7 +1253,7 @@ class Executor {
|
|
|
1209
1253
|
*/
|
|
1210
1254
|
execute(
|
|
1211
1255
|
context,
|
|
1212
|
-
|
|
1256
|
+
scaledCanvasSize,
|
|
1213
1257
|
transform,
|
|
1214
1258
|
viewRotation,
|
|
1215
1259
|
snapToPixel,
|
|
@@ -1218,7 +1262,7 @@ class Executor {
|
|
|
1218
1262
|
this.viewRotation_ = viewRotation;
|
|
1219
1263
|
this.execute_(
|
|
1220
1264
|
context,
|
|
1221
|
-
|
|
1265
|
+
scaledCanvasSize,
|
|
1222
1266
|
transform,
|
|
1223
1267
|
this.instructions,
|
|
1224
1268
|
snapToPixel,
|
|
@@ -1248,7 +1292,7 @@ class Executor {
|
|
|
1248
1292
|
this.viewRotation_ = viewRotation;
|
|
1249
1293
|
return this.execute_(
|
|
1250
1294
|
context,
|
|
1251
|
-
|
|
1295
|
+
[context.canvas.width, context.canvas.height],
|
|
1252
1296
|
transform,
|
|
1253
1297
|
this.hitDetectionInstructions,
|
|
1254
1298
|
true,
|
|
@@ -6,6 +6,21 @@
|
|
|
6
6
|
* @return {Array<number>} An array with indexes within a circle.
|
|
7
7
|
*/
|
|
8
8
|
export function getPixelIndexArray(radius: number): Array<number>;
|
|
9
|
+
/**
|
|
10
|
+
* @const
|
|
11
|
+
* @type {Array<import("../canvas.js").BuilderType>}
|
|
12
|
+
*/
|
|
13
|
+
export const ALL: Array<import("../canvas.js").BuilderType>;
|
|
14
|
+
/**
|
|
15
|
+
* @const
|
|
16
|
+
* @type {Array<import("../canvas.js").BuilderType>}
|
|
17
|
+
*/
|
|
18
|
+
export const DECLUTTER: Array<import("../canvas.js").BuilderType>;
|
|
19
|
+
/**
|
|
20
|
+
* @const
|
|
21
|
+
* @type {Array<import("../canvas.js").BuilderType>}
|
|
22
|
+
*/
|
|
23
|
+
export const NON_DECLUTTER: Array<import("../canvas.js").BuilderType>;
|
|
9
24
|
export default ExecutorGroup;
|
|
10
25
|
declare class ExecutorGroup {
|
|
11
26
|
/**
|
|
@@ -19,10 +34,11 @@ declare class ExecutorGroup {
|
|
|
19
34
|
* @param {!Object<string, !Object<import("../canvas.js").BuilderType, import("../canvas.js").SerializableInstructions>>} allInstructions
|
|
20
35
|
* The serializable instructions.
|
|
21
36
|
* @param {number} [renderBuffer] Optional rendering buffer.
|
|
37
|
+
* @param {boolean} [deferredRendering] Enable deferred rendering with renderDeferred().
|
|
22
38
|
*/
|
|
23
39
|
constructor(maxExtent: import("../../extent.js").Extent, resolution: number, pixelRatio: number, overlaps: boolean, allInstructions: {
|
|
24
40
|
[x: string]: any;
|
|
25
|
-
}, renderBuffer?: number | undefined);
|
|
41
|
+
}, renderBuffer?: number | undefined, deferredRendering?: boolean | undefined);
|
|
26
42
|
/**
|
|
27
43
|
* @private
|
|
28
44
|
* @type {import("../../extent.js").Extent}
|
|
@@ -50,7 +66,7 @@ declare class ExecutorGroup {
|
|
|
50
66
|
private renderBuffer_;
|
|
51
67
|
/**
|
|
52
68
|
* @private
|
|
53
|
-
* @type {!Object<string, !Object<
|
|
69
|
+
* @type {!Object<string, !Object<string, import("./Executor").default>>}
|
|
54
70
|
*/
|
|
55
71
|
private executorsByZIndex_;
|
|
56
72
|
/**
|
|
@@ -63,6 +79,15 @@ declare class ExecutorGroup {
|
|
|
63
79
|
* @type {import("../../transform.js").Transform}
|
|
64
80
|
*/
|
|
65
81
|
private hitDetectionTransform_;
|
|
82
|
+
/**
|
|
83
|
+
* @private
|
|
84
|
+
* @type {CanvasRenderingContext2D}
|
|
85
|
+
*/
|
|
86
|
+
private renderedContext_;
|
|
87
|
+
/**
|
|
88
|
+
* @type {Array<Array<import("./ZIndexContext.js").default>>}
|
|
89
|
+
*/
|
|
90
|
+
deferredZIndexContexts_: Array<Array<import("./ZIndexContext.js").default>>;
|
|
66
91
|
/**
|
|
67
92
|
* @param {CanvasRenderingContext2D} context Context.
|
|
68
93
|
* @param {import("../../transform.js").Transform} transform Transform.
|
|
@@ -71,7 +96,8 @@ declare class ExecutorGroup {
|
|
|
71
96
|
/**
|
|
72
97
|
* Create executors and populate them using the provided instructions.
|
|
73
98
|
* @private
|
|
74
|
-
* @param {!Object<string, !Object<
|
|
99
|
+
* @param {!Object<string, !Object<string, import("../canvas.js").SerializableInstructions>>} allInstructions The serializable instructions
|
|
100
|
+
* @param {boolean} deferredRendering Enable deferred rendering.
|
|
75
101
|
*/
|
|
76
102
|
private createExecutors_;
|
|
77
103
|
/**
|
|
@@ -100,15 +126,19 @@ declare class ExecutorGroup {
|
|
|
100
126
|
*/
|
|
101
127
|
isEmpty(): boolean;
|
|
102
128
|
/**
|
|
103
|
-
* @param {CanvasRenderingContext2D}
|
|
104
|
-
* @param {
|
|
129
|
+
* @param {CanvasRenderingContext2D} targetContext Context.
|
|
130
|
+
* @param {import('../../size.js').Size} scaledCanvasSize Scale of the context.
|
|
105
131
|
* @param {import("../../transform.js").Transform} transform Transform.
|
|
106
132
|
* @param {number} viewRotation View rotation.
|
|
107
133
|
* @param {boolean} snapToPixel Snap point symbols and test to integer pixel.
|
|
108
134
|
* @param {Array<import("../canvas.js").BuilderType>} [builderTypes] Ordered replay types to replay.
|
|
109
|
-
* Default is {@link module:ol/render/replay~
|
|
110
|
-
* @param {import("rbush").default} [declutterTree] Declutter tree.
|
|
111
|
-
|
|
112
|
-
|
|
135
|
+
* Default is {@link module:ol/render/replay~ALL}
|
|
136
|
+
* @param {import("rbush").default|null} [declutterTree] Declutter tree.
|
|
137
|
+
* When set to null, no decluttering is done, even when the executor group has a `ZIndexContext`.
|
|
138
|
+
*/
|
|
139
|
+
execute(targetContext: CanvasRenderingContext2D, scaledCanvasSize: import('../../size.js').Size, transform: import("../../transform.js").Transform, viewRotation: number, snapToPixel: boolean, builderTypes?: import("../canvas.js").BuilderType[] | undefined, declutterTree?: any | null): void;
|
|
140
|
+
getDeferredZIndexContexts(): import("./ZIndexContext.js").default[][];
|
|
141
|
+
getRenderedContext(): CanvasRenderingContext2D;
|
|
142
|
+
renderDeferred(): void;
|
|
113
143
|
}
|
|
114
144
|
//# sourceMappingURL=ExecutorGroup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutorGroup.d.ts","sourceRoot":"","sources":["ExecutorGroup.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExecutorGroup.d.ts","sourceRoot":"","sources":["ExecutorGroup.js"],"names":[],"mappings":"AA4bA;;;;;;GAMG;AACH,2CAHW,MAAM,GACL,MAAM,MAAM,CAAC,CA2CxB;AA7dD;;;GAGG;AACH,kBAFU,MAAM,OAAO,cAAc,EAAE,WAAW,CAAC,CASjD;AAEF;;;GAGG;AACH,wBAFU,MAAM,OAAO,cAAc,EAAE,WAAW,CAAC,CAER;AAE3C;;;GAGG;AACH,4BAFU,MAAM,OAAO,cAAc,EAAE,WAAW,CAAC,CAIjD;;AAEF;IACE;;;;;;;;;;;;OAYG;IACH,uBAZW,OAAO,iBAAiB,EAAE,MAAM,cAIhC,MAAM,cACN,MAAM,YACN,OAAO;YACC,MAAM;mFA0ExB;IA5DC;;;OAGG;IACH,mBAA2B;IAE3B;;;OAGG;IACH,kBAAyB;IAEzB;;;OAGG;IACH,oBAA6B;IAE7B;;;OAGG;IACH,oBAA6B;IAE7B;;;OAGG;IACH,sBAAiC;IAEjC;;;OAGG;IACH,2BAA4B;IAE5B;;;OAGG;IACH,6BAAgC;IAEhC;;;OAGG;IACH,+BAA+C;IAE/C;;;OAGG;IACH,yBAA4B;IAE5B;;OAEG;IACH,yBAFU,MAAM,MAAM,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAE3B;IAKnC;;;OAGG;IACH,cAHW,wBAAwB,aACxB,OAAO,oBAAoB,EAAE,SAAS,QAUhD;IAED;;;;;OAKG;IACH,yBAmBC;IAED;;;OAGG;IACH,wBAHW,MAAM,OAAO,cAAc,EAAE,WAAW,CAAC,GACxC,OAAO,CAYlB;IAED;;;;;;;;;OASG;IACH,0CATW,OAAO,qBAAqB,EAAE,UAAU,cACxC,MAAM,YACN,MAAM,gBACN,MAAM,mBACG,OAAO,kBAAkB,EAAE,WAAW,QAAE,OAAO,8BAA8B,EAAE,OAAO,QAAE,MAAM,6BACvG,MAAM,OAAO,kBAAkB,EAAE,WAAW,CAAC,iBA4HvD;IAED;;;OAGG;IACH,yBAHW,OAAO,oBAAoB,EAAE,SAAS,GACrC,MAAM,MAAM,CAAC,GAAC,IAAI,CAc7B;IAED;;OAEG;IACH,WAFY,OAAO,CAIlB;IAED;;;;;;;;;;OAUG;IACH,uBAVW,wBAAwB,oBACxB,OAAO,eAAe,EAAE,IAAI,aAC5B,OAAO,oBAAoB,EAAE,SAAS,gBACtC,MAAM,eACN,OAAO,mFAGP,MAAwB,IAAI,QAmEtC;IAED,sEAEC;IAED,+CAEC;IAED,uBAOC;CACF"}
|