ol 9.0.0-dev.1707154322322 → 9.0.0-dev.1707413332477

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/Map.d.ts +5 -10
  2. package/Map.d.ts.map +1 -1
  3. package/Map.js +3 -17
  4. package/VectorRenderTile.d.ts +0 -7
  5. package/VectorRenderTile.d.ts.map +1 -1
  6. package/VectorRenderTile.js +0 -6
  7. package/dist/ol.d.ts +2 -0
  8. package/dist/ol.d.ts.map +1 -1
  9. package/dist/ol.js +2 -2
  10. package/dist/ol.js.map +1 -1
  11. package/layer/BaseVector.d.ts +7 -22
  12. package/layer/BaseVector.d.ts.map +1 -1
  13. package/layer/BaseVector.js +12 -20
  14. package/layer/Layer.d.ts +12 -0
  15. package/layer/Layer.d.ts.map +1 -1
  16. package/layer/Layer.js +23 -0
  17. package/layer/VectorImage.d.ts +10 -6
  18. package/layer/VectorImage.d.ts.map +1 -1
  19. package/layer/VectorImage.js +5 -3
  20. package/layer/VectorTile.d.ts +22 -30
  21. package/layer/VectorTile.d.ts.map +1 -1
  22. package/layer/VectorTile.js +10 -14
  23. package/package.json +1 -1
  24. package/render/VectorContext.d.ts +22 -11
  25. package/render/VectorContext.d.ts.map +1 -1
  26. package/render/VectorContext.js +22 -11
  27. package/render/canvas/Builder.d.ts +2 -1
  28. package/render/canvas/Builder.d.ts.map +1 -1
  29. package/render/canvas/Builder.js +19 -3
  30. package/render/canvas/Executor.d.ts +18 -7
  31. package/render/canvas/Executor.d.ts.map +1 -1
  32. package/render/canvas/Executor.js +101 -57
  33. package/render/canvas/ExecutorGroup.d.ts +39 -9
  34. package/render/canvas/ExecutorGroup.d.ts.map +1 -1
  35. package/render/canvas/ExecutorGroup.js +96 -25
  36. package/render/canvas/ImageBuilder.d.ts +1 -1
  37. package/render/canvas/ImageBuilder.d.ts.map +1 -1
  38. package/render/canvas/ImageBuilder.js +30 -8
  39. package/render/canvas/Immediate.d.ts +11 -0
  40. package/render/canvas/Immediate.d.ts.map +1 -1
  41. package/render/canvas/LineStringBuilder.d.ts.map +1 -1
  42. package/render/canvas/LineStringBuilder.js +6 -4
  43. package/render/canvas/PolygonBuilder.d.ts.map +1 -1
  44. package/render/canvas/PolygonBuilder.js +9 -6
  45. package/render/canvas/TextBuilder.d.ts +4 -0
  46. package/render/canvas/TextBuilder.d.ts.map +1 -1
  47. package/render/canvas/TextBuilder.js +15 -6
  48. package/render/canvas/ZIndexContext.d.ts +56 -0
  49. package/render/canvas/ZIndexContext.d.ts.map +1 -0
  50. package/render/canvas/ZIndexContext.js +112 -0
  51. package/render/canvas/style.d.ts.map +1 -1
  52. package/render/canvas/style.js +9 -2
  53. package/render/canvas.d.ts +2 -2
  54. package/render/canvas.d.ts.map +1 -1
  55. package/render/canvas.js +6 -2
  56. package/renderer/Composite.d.ts +3 -2
  57. package/renderer/Composite.d.ts.map +1 -1
  58. package/renderer/Composite.js +26 -19
  59. package/renderer/Layer.d.ts +4 -0
  60. package/renderer/Layer.d.ts.map +1 -1
  61. package/renderer/Layer.js +5 -0
  62. package/renderer/Map.d.ts +0 -4
  63. package/renderer/Map.d.ts.map +1 -1
  64. package/renderer/Map.js +0 -5
  65. package/renderer/canvas/Layer.d.ts +4 -0
  66. package/renderer/canvas/Layer.d.ts.map +1 -1
  67. package/renderer/canvas/Layer.js +32 -0
  68. package/renderer/canvas/VectorImageLayer.d.ts.map +1 -1
  69. package/renderer/canvas/VectorImageLayer.js +8 -1
  70. package/renderer/canvas/VectorLayer.d.ts +6 -5
  71. package/renderer/canvas/VectorLayer.d.ts.map +1 -1
  72. package/renderer/canvas/VectorLayer.js +55 -58
  73. package/renderer/canvas/VectorTileLayer.d.ts +14 -3
  74. package/renderer/canvas/VectorTileLayer.d.ts.map +1 -1
  75. package/renderer/canvas/VectorTileLayer.js +129 -60
  76. package/renderer/vector.d.ts +3 -2
  77. package/renderer/vector.d.ts.map +1 -1
  78. package/renderer/vector.js +68 -126
  79. package/renderer/webgl/PointsLayer.d.ts +1 -0
  80. package/renderer/webgl/PointsLayer.d.ts.map +1 -1
  81. package/renderer/webgl/PointsLayer.js +2 -0
  82. package/source/Raster.js +1 -1
  83. package/source/WMTS.js +1 -1
  84. package/style/Circle.d.ts +2 -2
  85. package/style/Circle.d.ts.map +1 -1
  86. package/style/Circle.js +1 -1
  87. package/style/Icon.d.ts +1 -1
  88. package/style/Icon.d.ts.map +1 -1
  89. package/style/Icon.js +1 -1
  90. package/style/Image.d.ts +7 -6
  91. package/style/Image.d.ts.map +1 -1
  92. package/style/Image.js +4 -3
  93. package/style/RegularShape.d.ts +2 -2
  94. package/style/RegularShape.d.ts.map +1 -1
  95. package/style/RegularShape.js +1 -1
  96. package/style/Style.d.ts +17 -0
  97. package/style/Style.d.ts.map +1 -1
  98. package/style/Style.js +10 -0
  99. package/style/Text.d.ts +16 -0
  100. package/style/Text.d.ts.map +1 -1
  101. package/style/Text.js +17 -0
  102. package/style/flat.d.ts +11 -6
  103. package/style/flat.d.ts.map +1 -1
  104. package/style/flat.js +4 -3
  105. package/util.js +1 -1
@@ -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: number;
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 {number} contextScale Scale of the context.
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 {number} contextScale Scale of the context.
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 {number} contextScale Scale of the context.
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, contextScale: number, transform: import("../../transform.js").Transform, viewRotation: number, snapToPixel: boolean, declutterTree?: any): void;
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":";;;;;UA2Bc,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,MAAM,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;wCAKpL,OAAO,kBAAkB,EAAE,WAAW,QAAE,OAAO,8BAA8B,EAAE,OAAO,KAAG,CAAC;AAiEhH;IACE;;;;;OAKG;IACH,wBALW,MAAM,cACN,MAAM,YACN,OAAO,gBACP,OAAO,cAAc,EAAE,wBAAwB,EAgGzD;IA7FC;;;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;IAGnB;;;;;;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,4BAiDC;IAED;;;OAGG;IACH,cAgBC;IAED;;;;OAIG;IACH,wBASC;IAED;;;;;;;OAOG;IACH,qCA2BC;IAED;;;;;;;;;;;;;OAaG;IACH,iBA4iBC;IAED;;;;;;;OAOG;IACH,iBAPW,wBAAwB,gBACxB,MAAM,aACN,OAAO,oBAAoB,EAAE,SAAS,gBACtC,MAAM,eACN,OAAO,6BAsBjB;IAED;;;;;;;;;OASG;IACH,gCATW,wBAAwB,aACxB,OAAO,oBAAoB,EAAE,SAAS,gBACtC,MAAM,6HAwBhB;CACF"}
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: number, 2: import("../canvas.js").Label|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement, 3: ImageOrLabelDimensions, 4: number, 5: Array<*>, 6: Array<*>}} ReplayImageOrLabelArgs
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(resolution, pixelRatio, overlaps, instructions) {
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 {number} contextScale Scale of the context.
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
- contextScale,
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 <= canvas.width / contextScale &&
541
+ box.minX - strokePadding <= scaledCanvasSize[0] &&
522
542
  box.maxX + strokePadding >= 0 &&
523
- box.minY - strokePadding <= canvas.height / contextScale &&
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['strokeStyle'] =
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 {number} contextScale Scale of the context.
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
- contextScale,
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.length == 6 ? instruction[5] : undefined;
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
- const declutterMode =
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
- contextScale,
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
- if (declutterMode === 'none') {
910
- // not rendered in declutter group
911
- continue;
912
- } else if (declutterMode === 'obstacle') {
913
- // will always be drawn, thus no collision detection, but insert as obstacle
914
- declutterTree.insert(dimensions.declutterBox);
915
- continue;
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
- if (imageArgs) {
938
- // We now have image and text for an image+text combination.
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
- declutterTree.insert(dimensions.declutterBox);
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
- contextScale,
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
- contextScale,
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 {number} contextScale Scale of the context.
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
- contextScale,
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
- contextScale,
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
- 1,
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<import("../canvas.js").BuilderType, import("./Executor").default>>}
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<import("../canvas.js").BuilderType, import("../canvas.js").SerializableInstructions>>} allInstructions The serializable instructions
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} context Context.
104
- * @param {number} contextScale Scale of the context.
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~ORDER}
110
- * @param {import("rbush").default} [declutterTree] Declutter tree.
111
- */
112
- execute(context: CanvasRenderingContext2D, contextScale: number, transform: import("../../transform.js").Transform, viewRotation: number, snapToPixel: boolean, builderTypes?: import("../canvas.js").BuilderType[] | undefined, declutterTree?: any): void;
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":"AAqXA;;;;;;GAMG;AACH,2CAHW,MAAM,GACL,MAAM,MAAM,CAAC,CA2CxB;;AAhZD;IACE;;;;;;;;;;;OAWG;IACH,uBAXW,OAAO,iBAAiB,EAAE,MAAM,cAIhC,MAAM,cACN,MAAM,YACN,OAAO;YACC,MAAM;0CA6DxB;IAjDC;;;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;IAKjD;;;OAGG;IACH,cAHW,wBAAwB,aACxB,OAAO,oBAAoB,EAAE,SAAS,QAUhD;IAED;;;;OAIG;IACH,yBAkBC;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;;;;;;;;;OASG;IACH,iBATW,wBAAwB,gBACxB,MAAM,aACN,OAAO,oBAAoB,EAAE,SAAS,gBACtC,MAAM,eACN,OAAO,8FAoDjB;CACF"}
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"}