@vaadin/bundles 25.0.0-alpha3 → 25.0.0-alpha5

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 (192) hide show
  1. package/node_modules_ol_ImageCanvas_js.js +76 -83
  2. package/node_modules_ol_ImageCanvas_js.js.map +1 -1
  3. package/node_modules_ol_TileRange_js.js +128 -110
  4. package/node_modules_ol_TileRange_js.js.map +1 -1
  5. package/node_modules_ol_Tile_js.js +279 -0
  6. package/node_modules_ol_Tile_js.js.map +1 -0
  7. package/node_modules_ol_VectorRenderTile_js.js +428 -143
  8. package/node_modules_ol_VectorRenderTile_js.js.map +1 -1
  9. package/node_modules_ol_VectorTile_js.js +405 -119
  10. package/node_modules_ol_VectorTile_js.js.map +1 -1
  11. package/node_modules_ol_control_MousePosition_js.js +327 -0
  12. package/node_modules_ol_control_MousePosition_js.js.map +1 -0
  13. package/node_modules_ol_control_ZoomToExtent_js.js +118 -0
  14. package/node_modules_ol_control_ZoomToExtent_js.js.map +1 -0
  15. package/node_modules_ol_events_SnapEvent_js.js +79 -0
  16. package/node_modules_ol_events_SnapEvent_js.js.map +1 -0
  17. package/node_modules_ol_featureloader_js.js +205 -0
  18. package/node_modules_ol_featureloader_js.js.map +1 -0
  19. package/node_modules_ol_geom_Circle_js.js +300 -0
  20. package/node_modules_ol_geom_Circle_js.js.map +1 -0
  21. package/node_modules_ol_geom_GeometryCollection_js.js +369 -0
  22. package/node_modules_ol_geom_GeometryCollection_js.js.map +1 -0
  23. package/node_modules_ol_geom_MultiPoint_js.js +228 -0
  24. package/node_modules_ol_geom_MultiPoint_js.js.map +1 -0
  25. package/node_modules_ol_geom_flat_center_js.js +47 -0
  26. package/node_modules_ol_geom_flat_center_js.js.map +1 -0
  27. package/node_modules_ol_geom_flat_geodesic_js.js +123 -88
  28. package/node_modules_ol_geom_flat_geodesic_js.js.map +1 -1
  29. package/node_modules_ol_geom_flat_interpolate_js.js +230 -0
  30. package/node_modules_ol_geom_flat_interpolate_js.js.map +1 -0
  31. package/node_modules_ol_geom_flat_length_js-_375a0.js +58 -0
  32. package/node_modules_ol_geom_flat_length_js-_375a0.js.map +1 -0
  33. package/node_modules_ol_geom_flat_length_js-_375a1.js +58 -0
  34. package/node_modules_ol_geom_flat_length_js-_375a1.js.map +1 -0
  35. package/node_modules_ol_geom_flat_length_js-_375a2.js +58 -0
  36. package/node_modules_ol_geom_flat_length_js-_375a2.js.map +1 -0
  37. package/node_modules_ol_geom_flat_length_js-_375a3.js +58 -0
  38. package/node_modules_ol_geom_flat_length_js-_375a3.js.map +1 -0
  39. package/node_modules_ol_geom_flat_length_js-_375a4.js +58 -0
  40. package/node_modules_ol_geom_flat_length_js-_375a4.js.map +1 -0
  41. package/node_modules_ol_geom_flat_linechunk_js.js +76 -0
  42. package/node_modules_ol_geom_flat_linechunk_js.js.map +1 -0
  43. package/node_modules_ol_geom_flat_straightchunk_js.js +68 -0
  44. package/node_modules_ol_geom_flat_straightchunk_js.js.map +1 -0
  45. package/node_modules_ol_geom_flat_textpath_js.js +178 -0
  46. package/node_modules_ol_geom_flat_textpath_js.js.map +1 -0
  47. package/node_modules_ol_interaction_DblClickDragZoom_js.js +285 -0
  48. package/node_modules_ol_interaction_DblClickDragZoom_js.js.map +1 -0
  49. package/node_modules_ol_interaction_DragAndDrop_js.js +351 -0
  50. package/node_modules_ol_interaction_DragAndDrop_js.js.map +1 -0
  51. package/node_modules_ol_interaction_DragRotateAndZoom_js.js +159 -0
  52. package/node_modules_ol_interaction_DragRotateAndZoom_js.js.map +1 -0
  53. package/node_modules_ol_layer_Vector_js-_49290.js +110 -0
  54. package/node_modules_ol_layer_Vector_js-_49290.js.map +1 -0
  55. package/node_modules_ol_layer_Vector_js-_49291.js +110 -0
  56. package/node_modules_ol_layer_Vector_js-_49291.js.map +1 -0
  57. package/node_modules_ol_layer_Vector_js-_49292.js +110 -0
  58. package/node_modules_ol_layer_Vector_js-_49292.js.map +1 -0
  59. package/node_modules_ol_layer_Vector_js-_49293.js +110 -0
  60. package/node_modules_ol_layer_Vector_js-_49293.js.map +1 -0
  61. package/node_modules_ol_loadingstrategy_js.js +95 -0
  62. package/node_modules_ol_loadingstrategy_js.js.map +1 -0
  63. package/node_modules_ol_render_VectorContext_js-_3ad60.js +144 -0
  64. package/node_modules_ol_render_VectorContext_js-_3ad60.js.map +1 -0
  65. package/node_modules_ol_render_VectorContext_js-_3ad61.js +144 -0
  66. package/node_modules_ol_render_VectorContext_js-_3ad61.js.map +1 -0
  67. package/node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js +372 -0
  68. package/node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js.map +1 -0
  69. package/node_modules_ol_render_canvas_ImageBuilder_js.js +318 -0
  70. package/node_modules_ol_render_canvas_ImageBuilder_js.js.map +1 -0
  71. package/node_modules_ol_render_canvas_Instruction_js.js +66 -0
  72. package/node_modules_ol_render_canvas_Instruction_js.js.map +1 -0
  73. package/node_modules_ol_render_canvas_LineStringBuilder_js.js +187 -0
  74. package/node_modules_ol_render_canvas_LineStringBuilder_js.js.map +1 -0
  75. package/node_modules_ol_render_canvas_PolygonBuilder_js.js +276 -0
  76. package/node_modules_ol_render_canvas_PolygonBuilder_js.js.map +1 -0
  77. package/node_modules_ol_render_canvas_ZIndexContext_js-_fab20.js +156 -0
  78. package/node_modules_ol_render_canvas_ZIndexContext_js-_fab20.js.map +1 -0
  79. package/node_modules_ol_render_canvas_ZIndexContext_js-_fab21.js +156 -0
  80. package/node_modules_ol_render_canvas_ZIndexContext_js-_fab21.js.map +1 -0
  81. package/node_modules_ol_render_js-node_modules_ol_render_VectorContext_js.js +301 -0
  82. package/node_modules_ol_render_js-node_modules_ol_render_VectorContext_js.js.map +1 -0
  83. package/node_modules_ol_renderer_Layer_js.js +219 -0
  84. package/node_modules_ol_renderer_Layer_js.js.map +1 -0
  85. package/node_modules_ol_source_Source_js.js +256 -0
  86. package/node_modules_ol_source_Source_js.js.map +1 -0
  87. package/node_modules_ol_source_VectorEventType_js-node_modules_ol_structs_RBush_js.js +318 -0
  88. package/node_modules_ol_source_VectorEventType_js-node_modules_ol_structs_RBush_js.js.map +1 -0
  89. package/node_modules_ol_source_VectorEventType_js.js +80 -0
  90. package/node_modules_ol_source_VectorEventType_js.js.map +1 -0
  91. package/node_modules_ol_structs_RBush_js.js +242 -0
  92. package/node_modules_ol_structs_RBush_js.js.map +1 -0
  93. package/node_modules_ol_style_js.js +2 -1
  94. package/node_modules_ol_style_js.js.map +1 -1
  95. package/node_modules_rbush_rbush_min_js.js +16 -0
  96. package/node_modules_rbush_rbush_min_js.js.map +1 -0
  97. package/package.json +142 -146
  98. package/vaadin-bundle.json +2447 -2352
  99. package/vaadin.js +52246 -63791
  100. package/vaadin.js.map +1 -1
  101. package/vendors-node_modules_dompurify_dist_purify_es_mjs.js +1364 -0
  102. package/vendors-node_modules_dompurify_dist_purify_es_mjs.js.map +1 -0
  103. package/vendors-node_modules_dompurify_dist_purify_js.js +26 -21
  104. package/vendors-node_modules_dompurify_dist_purify_js.js.map +1 -1
  105. package/vendors-node_modules_marked_lib_marked_esm_js.js +2205 -0
  106. package/vendors-node_modules_marked_lib_marked_esm_js.js.map +1 -0
  107. package/vendors-node_modules_marked_lib_marked_umd_js.js +2164 -2556
  108. package/vendors-node_modules_marked_lib_marked_umd_js.js.map +1 -1
  109. package/vendors-node_modules_ol_Feature_js.js +360 -0
  110. package/vendors-node_modules_ol_Feature_js.js.map +1 -0
  111. package/vendors-node_modules_ol_Geolocation_js.js +352 -293
  112. package/vendors-node_modules_ol_Geolocation_js.js.map +1 -1
  113. package/vendors-node_modules_ol_ImageTile_js.js +494 -0
  114. package/vendors-node_modules_ol_ImageTile_js.js.map +1 -0
  115. package/vendors-node_modules_ol_Overlay_js.js +606 -0
  116. package/vendors-node_modules_ol_Overlay_js.js.map +1 -0
  117. package/vendors-node_modules_ol_control_FullScreen_js.js +417 -0
  118. package/vendors-node_modules_ol_control_FullScreen_js.js.map +1 -0
  119. package/vendors-node_modules_ol_control_OverviewMap_js.js +711 -0
  120. package/vendors-node_modules_ol_control_OverviewMap_js.js.map +1 -0
  121. package/vendors-node_modules_ol_control_ScaleLine_js.js +509 -0
  122. package/vendors-node_modules_ol_control_ScaleLine_js.js.map +1 -0
  123. package/vendors-node_modules_ol_control_ZoomSlider_js.js +418 -0
  124. package/vendors-node_modules_ol_control_ZoomSlider_js.js.map +1 -0
  125. package/vendors-node_modules_ol_control_js.js +490 -0
  126. package/vendors-node_modules_ol_control_js.js.map +1 -0
  127. package/vendors-node_modules_ol_geom_LineString_js.js +574 -0
  128. package/vendors-node_modules_ol_geom_LineString_js.js.map +1 -0
  129. package/vendors-node_modules_ol_geom_MultiLineString_js.js +405 -0
  130. package/vendors-node_modules_ol_geom_MultiLineString_js.js.map +1 -0
  131. package/vendors-node_modules_ol_geom_MultiPolygon_js.js +773 -0
  132. package/vendors-node_modules_ol_geom_MultiPolygon_js.js.map +1 -0
  133. package/vendors-node_modules_ol_geom_js-node_modules_ol_geom_flat_length_js.js +769 -0
  134. package/vendors-node_modules_ol_geom_js-node_modules_ol_geom_flat_length_js.js.map +1 -0
  135. package/vendors-node_modules_ol_index_js.js +526 -675
  136. package/vendors-node_modules_ol_index_js.js.map +1 -1
  137. package/vendors-node_modules_ol_interaction_Draw_js.js +2777 -0
  138. package/vendors-node_modules_ol_interaction_Draw_js.js.map +1 -0
  139. package/vendors-node_modules_ol_interaction_Extent_js.js +586 -0
  140. package/vendors-node_modules_ol_interaction_Extent_js.js.map +1 -0
  141. package/vendors-node_modules_ol_interaction_Link_js.js +489 -0
  142. package/vendors-node_modules_ol_interaction_Link_js.js.map +1 -0
  143. package/vendors-node_modules_ol_interaction_Modify_js.js +1841 -0
  144. package/vendors-node_modules_ol_interaction_Modify_js.js.map +1 -0
  145. package/vendors-node_modules_ol_interaction_Select_js.js +623 -0
  146. package/vendors-node_modules_ol_interaction_Select_js.js.map +1 -0
  147. package/vendors-node_modules_ol_interaction_Snap_js.js +982 -0
  148. package/vendors-node_modules_ol_interaction_Snap_js.js.map +1 -0
  149. package/vendors-node_modules_ol_interaction_Translate_js.js +466 -0
  150. package/vendors-node_modules_ol_interaction_Translate_js.js.map +1 -0
  151. package/vendors-node_modules_ol_interaction_js.js +872 -0
  152. package/vendors-node_modules_ol_interaction_js.js.map +1 -0
  153. package/vendors-node_modules_ol_layer_Graticule_js.js +1374 -989
  154. package/vendors-node_modules_ol_layer_Graticule_js.js.map +1 -1
  155. package/vendors-node_modules_ol_render_Feature_js.js +546 -0
  156. package/vendors-node_modules_ol_render_Feature_js.js.map +1 -0
  157. package/vendors-node_modules_ol_render_canvas_BuilderGroup_js.js +897 -0
  158. package/vendors-node_modules_ol_render_canvas_BuilderGroup_js.js.map +1 -0
  159. package/vendors-node_modules_ol_render_canvas_Builder_js.js +907 -0
  160. package/vendors-node_modules_ol_render_canvas_Builder_js.js.map +1 -0
  161. package/vendors-node_modules_ol_render_canvas_ExecutorGroup_js.js +539 -0
  162. package/vendors-node_modules_ol_render_canvas_ExecutorGroup_js.js.map +1 -0
  163. package/vendors-node_modules_ol_render_canvas_Executor_js.js +1715 -0
  164. package/vendors-node_modules_ol_render_canvas_Executor_js.js.map +1 -0
  165. package/vendors-node_modules_ol_render_canvas_Immediate_js.js +1208 -0
  166. package/vendors-node_modules_ol_render_canvas_Immediate_js.js.map +1 -0
  167. package/vendors-node_modules_ol_render_canvas_TextBuilder_js.js +825 -0
  168. package/vendors-node_modules_ol_render_canvas_TextBuilder_js.js.map +1 -0
  169. package/vendors-node_modules_ol_renderer_canvas_Layer_js.js +654 -0
  170. package/vendors-node_modules_ol_renderer_canvas_Layer_js.js.map +1 -0
  171. package/vendors-node_modules_ol_renderer_canvas_VectorLayer_js.js +1044 -0
  172. package/vendors-node_modules_ol_renderer_canvas_VectorLayer_js.js.map +1 -0
  173. package/vendors-node_modules_ol_renderer_vector_js.js +460 -0
  174. package/vendors-node_modules_ol_renderer_vector_js.js.map +1 -0
  175. package/vendors-node_modules_ol_source_Vector_js.js +2091 -0
  176. package/vendors-node_modules_ol_source_Vector_js.js.map +1 -0
  177. package/node_modules_ol_ImageTile_js.js +0 -177
  178. package/node_modules_ol_ImageTile_js.js.map +0 -1
  179. package/node_modules_ol_render_js.js +0 -131
  180. package/node_modules_ol_render_js.js.map +0 -1
  181. package/node_modules_ol_structs_LRUCache_js.js +0 -275
  182. package/node_modules_ol_structs_LRUCache_js.js.map +0 -1
  183. package/node_modules_ol_tilecoord_js.js +0 -115
  184. package/node_modules_ol_tilecoord_js.js.map +0 -1
  185. package/vendors-node_modules_ol_TileCache_js.js +0 -461
  186. package/vendors-node_modules_ol_TileCache_js.js.map +0 -1
  187. package/vendors-node_modules_ol_Tile_js.js +0 -330
  188. package/vendors-node_modules_ol_Tile_js.js.map +0 -1
  189. package/vendors-node_modules_ol_style_Text_js.js +0 -509
  190. package/vendors-node_modules_ol_style_Text_js.js.map +0 -1
  191. package/vendors-node_modules_rbush_index_js.js +0 -531
  192. package/vendors-node_modules_rbush_index_js.js.map +0 -1
@@ -0,0 +1,1044 @@
1
+ (self["webpackChunk_vaadin_bundles"] = self["webpackChunk_vaadin_bundles"] || []).push([["vendors-node_modules_ol_renderer_canvas_VectorLayer_js"],{
2
+
3
+ /***/ "./node_modules/ol/render/canvas/hitdetect.js":
4
+ /*!****************************************************!*\
5
+ !*** ./node_modules/ol/render/canvas/hitdetect.js ***!
6
+ \****************************************************/
7
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
8
+
9
+ __webpack_require__.r(__webpack_exports__);
10
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11
+ /* harmony export */ "HIT_DETECT_RESOLUTION": () => (/* binding */ HIT_DETECT_RESOLUTION),
12
+ /* harmony export */ "createHitDetectionImageData": () => (/* binding */ createHitDetectionImageData),
13
+ /* harmony export */ "hitDetect": () => (/* binding */ hitDetect)
14
+ /* harmony export */ });
15
+ /* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../array.js */ "./node_modules/ol/array.js");
16
+ /* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../dom.js */ "./node_modules/ol/dom.js");
17
+ /* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../extent.js */ "./node_modules/ol/extent.js");
18
+ /* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../math.js */ "./node_modules/ol/math.js");
19
+ /* harmony import */ var _proj_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../proj.js */ "./node_modules/ol/proj.js");
20
+ /* harmony import */ var _style_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../style.js */ "./node_modules/ol/style/Icon.js");
21
+ /* harmony import */ var _Immediate_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Immediate.js */ "./node_modules/ol/render/canvas/Immediate.js");
22
+ /**
23
+ * @module ol/render/canvas/hitdetect
24
+ */
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+ const HIT_DETECT_RESOLUTION = 0.5;
35
+
36
+ /**
37
+ * @param {import("../../size.js").Size} size Canvas size in css pixels.
38
+ * @param {Array<import("../../transform.js").Transform>} transforms Transforms
39
+ * for rendering features to all worlds of the viewport, from coordinates to css
40
+ * pixels.
41
+ * @param {Array<import("../../Feature.js").FeatureLike>} features
42
+ * Features to consider for hit detection.
43
+ * @param {import("../../style/Style.js").StyleFunction|undefined} styleFunction
44
+ * Layer style function.
45
+ * @param {import("../../extent.js").Extent} extent Extent in render projection.
46
+ * @param {number} resolution Resolution.
47
+ * @param {number} rotation Rotation.
48
+ * @param {number} [squaredTolerance] Squared tolerance.
49
+ * @param {import("../../proj/Projection.js").default} [projection] Render projection.
50
+ * @return {ImageData} Hit detection image data.
51
+ */
52
+ function createHitDetectionImageData(
53
+ size,
54
+ transforms,
55
+ features,
56
+ styleFunction,
57
+ extent,
58
+ resolution,
59
+ rotation,
60
+ squaredTolerance,
61
+ projection,
62
+ ) {
63
+ const userExtent = projection ? (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.toUserExtent)(extent, projection) : extent;
64
+ const width = size[0] * HIT_DETECT_RESOLUTION;
65
+ const height = size[1] * HIT_DETECT_RESOLUTION;
66
+ const context = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.createCanvasContext2D)(width, height);
67
+ context.imageSmoothingEnabled = false;
68
+ const canvas = context.canvas;
69
+ const renderer = new _Immediate_js__WEBPACK_IMPORTED_MODULE_2__["default"](
70
+ context,
71
+ HIT_DETECT_RESOLUTION,
72
+ extent,
73
+ null,
74
+ rotation,
75
+ squaredTolerance,
76
+ projection
77
+ ? (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getTransformFromProjections)((0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getUserProjection)(), projection)
78
+ : null,
79
+ );
80
+ const featureCount = features.length;
81
+ // Stretch hit detection index to use the whole available color range
82
+ const indexFactor = Math.floor((256 * 256 * 256 - 1) / featureCount);
83
+ const featuresByZIndex = {};
84
+ for (let i = 1; i <= featureCount; ++i) {
85
+ const feature = features[i - 1];
86
+ const featureStyleFunction = feature.getStyleFunction() || styleFunction;
87
+ if (!featureStyleFunction) {
88
+ continue;
89
+ }
90
+ let styles = featureStyleFunction(feature, resolution);
91
+ if (!styles) {
92
+ continue;
93
+ }
94
+ if (!Array.isArray(styles)) {
95
+ styles = [styles];
96
+ }
97
+ const index = i * indexFactor;
98
+ const color = index.toString(16).padStart(7, '#00000');
99
+ for (let j = 0, jj = styles.length; j < jj; ++j) {
100
+ const originalStyle = styles[j];
101
+ const geometry = originalStyle.getGeometryFunction()(feature);
102
+ if (!geometry || !(0,_extent_js__WEBPACK_IMPORTED_MODULE_3__.intersects)(userExtent, geometry.getExtent())) {
103
+ continue;
104
+ }
105
+ const style = originalStyle.clone();
106
+ const fill = style.getFill();
107
+ if (fill) {
108
+ fill.setColor(color);
109
+ }
110
+ const stroke = style.getStroke();
111
+ if (stroke) {
112
+ stroke.setColor(color);
113
+ stroke.setLineDash(null);
114
+ }
115
+ style.setText(undefined);
116
+ const image = originalStyle.getImage();
117
+ if (image) {
118
+ const imgSize = image.getImageSize();
119
+ if (!imgSize) {
120
+ continue;
121
+ }
122
+
123
+ const imgContext = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.createCanvasContext2D)(
124
+ imgSize[0],
125
+ imgSize[1],
126
+ undefined,
127
+ {alpha: false},
128
+ );
129
+ const img = imgContext.canvas;
130
+ imgContext.fillStyle = color;
131
+ imgContext.fillRect(0, 0, img.width, img.height);
132
+ style.setImage(
133
+ new _style_js__WEBPACK_IMPORTED_MODULE_4__["default"]({
134
+ img: img,
135
+ anchor: image.getAnchor(),
136
+ anchorXUnits: 'pixels',
137
+ anchorYUnits: 'pixels',
138
+ offset: image.getOrigin(),
139
+ opacity: 1,
140
+ size: image.getSize(),
141
+ scale: image.getScale(),
142
+ rotation: image.getRotation(),
143
+ rotateWithView: image.getRotateWithView(),
144
+ }),
145
+ );
146
+ }
147
+ const zIndex = style.getZIndex() || 0;
148
+ let byGeometryType = featuresByZIndex[zIndex];
149
+ if (!byGeometryType) {
150
+ byGeometryType = {};
151
+ featuresByZIndex[zIndex] = byGeometryType;
152
+ byGeometryType['Polygon'] = [];
153
+ byGeometryType['Circle'] = [];
154
+ byGeometryType['LineString'] = [];
155
+ byGeometryType['Point'] = [];
156
+ }
157
+ const type = geometry.getType();
158
+ if (type === 'GeometryCollection') {
159
+ const geometries =
160
+ /** @type {import("../../geom/GeometryCollection.js").default} */ (
161
+ geometry
162
+ ).getGeometriesArrayRecursive();
163
+ for (let i = 0, ii = geometries.length; i < ii; ++i) {
164
+ const geometry = geometries[i];
165
+ byGeometryType[geometry.getType().replace('Multi', '')].push(
166
+ geometry,
167
+ style,
168
+ );
169
+ }
170
+ } else {
171
+ byGeometryType[type.replace('Multi', '')].push(geometry, style);
172
+ }
173
+ }
174
+ }
175
+
176
+ const zIndexKeys = Object.keys(featuresByZIndex).map(Number).sort(_array_js__WEBPACK_IMPORTED_MODULE_5__.ascending);
177
+ for (let i = 0, ii = zIndexKeys.length; i < ii; ++i) {
178
+ const byGeometryType = featuresByZIndex[zIndexKeys[i]];
179
+ for (const type in byGeometryType) {
180
+ const geomAndStyle = byGeometryType[type];
181
+ for (let j = 0, jj = geomAndStyle.length; j < jj; j += 2) {
182
+ renderer.setStyle(geomAndStyle[j + 1]);
183
+ for (let k = 0, kk = transforms.length; k < kk; ++k) {
184
+ renderer.setTransform(transforms[k]);
185
+ renderer.drawGeometry(geomAndStyle[j]);
186
+ }
187
+ }
188
+ }
189
+ }
190
+ return context.getImageData(0, 0, canvas.width, canvas.height);
191
+ }
192
+
193
+ /**
194
+ * @param {import("../../pixel").Pixel} pixel Pixel coordinate on the hit
195
+ * detection canvas in css pixels.
196
+ * @param {Array<F>} features Features. Has to
197
+ * match the `features` array that was passed to `createHitDetectionImageData()`.
198
+ * @param {ImageData} imageData Hit detection image data generated by
199
+ * `createHitDetectionImageData()`.
200
+ * @return {Array<F>} Features.
201
+ * @template {import("../../Feature.js").FeatureLike} F
202
+ */
203
+ function hitDetect(pixel, features, imageData) {
204
+ /** @type {Array<F>} */
205
+ const resultFeatures = [];
206
+ if (imageData) {
207
+ const x = Math.floor(Math.round(pixel[0]) * HIT_DETECT_RESOLUTION);
208
+ const y = Math.floor(Math.round(pixel[1]) * HIT_DETECT_RESOLUTION);
209
+ // The pixel coordinate is clamped down to the hit-detect canvas' size to account
210
+ // for browsers returning coordinates slightly larger than the actual canvas size
211
+ // due to a non-integer pixel ratio.
212
+ const index =
213
+ ((0,_math_js__WEBPACK_IMPORTED_MODULE_6__.clamp)(x, 0, imageData.width - 1) +
214
+ (0,_math_js__WEBPACK_IMPORTED_MODULE_6__.clamp)(y, 0, imageData.height - 1) * imageData.width) *
215
+ 4;
216
+ const r = imageData.data[index];
217
+ const g = imageData.data[index + 1];
218
+ const b = imageData.data[index + 2];
219
+ const i = b + 256 * (g + 256 * r);
220
+ const indexFactor = Math.floor((256 * 256 * 256 - 1) / features.length);
221
+ if (i && i % indexFactor === 0) {
222
+ resultFeatures.push(features[i / indexFactor - 1]);
223
+ }
224
+ }
225
+ return resultFeatures;
226
+ }
227
+
228
+
229
+ /***/ }),
230
+
231
+ /***/ "./node_modules/ol/renderer/canvas/VectorLayer.js":
232
+ /*!********************************************************!*\
233
+ !*** ./node_modules/ol/renderer/canvas/VectorLayer.js ***!
234
+ \********************************************************/
235
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
236
+
237
+ __webpack_require__.r(__webpack_exports__);
238
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
239
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
240
+ /* harmony export */ });
241
+ /* harmony import */ var _ViewHint_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ViewHint.js */ "./node_modules/ol/ViewHint.js");
242
+ /* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../array.js */ "./node_modules/ol/array.js");
243
+ /* harmony import */ var _coordinate_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../coordinate.js */ "./node_modules/ol/coordinate.js");
244
+ /* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../dom.js */ "./node_modules/ol/dom.js");
245
+ /* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../extent.js */ "./node_modules/ol/extent.js");
246
+ /* harmony import */ var _proj_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../proj.js */ "./node_modules/ol/proj.js");
247
+ /* harmony import */ var _render_EventType_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../render/EventType.js */ "./node_modules/ol/render/EventType.js");
248
+ /* harmony import */ var _render_canvas_BuilderGroup_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../render/canvas/BuilderGroup.js */ "./node_modules/ol/render/canvas/BuilderGroup.js");
249
+ /* harmony import */ var _render_canvas_ExecutorGroup_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../render/canvas/ExecutorGroup.js */ "./node_modules/ol/render/canvas/ExecutorGroup.js");
250
+ /* harmony import */ var _render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../render/canvas/hitdetect.js */ "./node_modules/ol/render/canvas/hitdetect.js");
251
+ /* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util.js */ "./node_modules/ol/util.js");
252
+ /* harmony import */ var _vector_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../vector.js */ "./node_modules/ol/renderer/vector.js");
253
+ /* harmony import */ var _Layer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Layer.js */ "./node_modules/ol/renderer/canvas/Layer.js");
254
+ /**
255
+ * @module ol/renderer/canvas/VectorLayer
256
+ */
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+ /**
272
+ * @classdesc
273
+ * Canvas renderer for vector layers.
274
+ * @api
275
+ */
276
+ class CanvasVectorLayerRenderer extends _Layer_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
277
+ /**
278
+ * @param {import("../../layer/BaseVector.js").default} vectorLayer Vector layer.
279
+ */
280
+ constructor(vectorLayer) {
281
+ super(vectorLayer);
282
+
283
+ /** @private */
284
+ this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this);
285
+
286
+ /**
287
+ * @private
288
+ * @type {boolean}
289
+ */
290
+ this.animatingOrInteracting_;
291
+
292
+ /**
293
+ * @private
294
+ * @type {ImageData|null}
295
+ */
296
+ this.hitDetectionImageData_ = null;
297
+
298
+ /**
299
+ * @private
300
+ * @type {boolean}
301
+ */
302
+ this.clipped_ = false;
303
+
304
+ /**
305
+ * @private
306
+ * @type {Array<import("../../Feature.js").default>}
307
+ */
308
+ this.renderedFeatures_ = null;
309
+
310
+ /**
311
+ * @private
312
+ * @type {number}
313
+ */
314
+ this.renderedRevision_ = -1;
315
+
316
+ /**
317
+ * @private
318
+ * @type {number}
319
+ */
320
+ this.renderedResolution_ = NaN;
321
+
322
+ /**
323
+ * @private
324
+ * @type {import("../../extent.js").Extent}
325
+ */
326
+ this.renderedExtent_ = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.createEmpty)();
327
+
328
+ /**
329
+ * @private
330
+ * @type {import("../../extent.js").Extent}
331
+ */
332
+ this.wrappedRenderedExtent_ = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.createEmpty)();
333
+
334
+ /**
335
+ * @private
336
+ * @type {number}
337
+ */
338
+ this.renderedRotation_;
339
+
340
+ /**
341
+ * @private
342
+ * @type {import("../../coordinate").Coordinate}
343
+ */
344
+ this.renderedCenter_ = null;
345
+
346
+ /**
347
+ * @private
348
+ * @type {import("../../proj/Projection").default}
349
+ */
350
+ this.renderedProjection_ = null;
351
+
352
+ /**
353
+ * @private
354
+ * @type {number}
355
+ */
356
+ this.renderedPixelRatio_ = 1;
357
+
358
+ /**
359
+ * @private
360
+ * @type {import("../../render.js").OrderFunction|null}
361
+ */
362
+ this.renderedRenderOrder_ = null;
363
+
364
+ /**
365
+ * @private
366
+ * @type {boolean}
367
+ */
368
+ this.renderedFrameDeclutter_;
369
+
370
+ /**
371
+ * @private
372
+ * @type {import("../../render/canvas/ExecutorGroup").default}
373
+ */
374
+ this.replayGroup_ = null;
375
+
376
+ /**
377
+ * A new replay group had to be created by `prepareFrame()`
378
+ * @type {boolean}
379
+ */
380
+ this.replayGroupChanged = true;
381
+
382
+ /**
383
+ * Clipping to be performed by `renderFrame()`
384
+ * @type {boolean}
385
+ */
386
+ this.clipping = true;
387
+
388
+ /**
389
+ * @private
390
+ * @type {CanvasRenderingContext2D}
391
+ */
392
+ this.targetContext_ = null;
393
+
394
+ /**
395
+ * @private
396
+ * @type {number}
397
+ */
398
+ this.opacity_ = 1;
399
+ }
400
+
401
+ /**
402
+ * @param {ExecutorGroup} executorGroup Executor group.
403
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
404
+ * @param {boolean} [declutterable] `true` to only render declutterable items,
405
+ * `false` to only render non-declutterable items, `undefined` to render all.
406
+ */
407
+ renderWorlds(executorGroup, frameState, declutterable) {
408
+ const extent = frameState.extent;
409
+ const viewState = frameState.viewState;
410
+ const center = viewState.center;
411
+ const resolution = viewState.resolution;
412
+ const projection = viewState.projection;
413
+ const rotation = viewState.rotation;
414
+ const projectionExtent = projection.getExtent();
415
+ const vectorSource = this.getLayer().getSource();
416
+ const declutter = this.getLayer().getDeclutter();
417
+ const pixelRatio = frameState.pixelRatio;
418
+ const viewHints = frameState.viewHints;
419
+ const snapToPixel = !(
420
+ viewHints[_ViewHint_js__WEBPACK_IMPORTED_MODULE_3__["default"].ANIMATING] || viewHints[_ViewHint_js__WEBPACK_IMPORTED_MODULE_3__["default"].INTERACTING]
421
+ );
422
+ const context = this.context;
423
+ const width = Math.round(((0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getWidth)(extent) / resolution) * pixelRatio);
424
+ const height = Math.round(((0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getHeight)(extent) / resolution) * pixelRatio);
425
+
426
+ const multiWorld = vectorSource.getWrapX() && projection.canWrapX();
427
+ const worldWidth = multiWorld ? (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getWidth)(projectionExtent) : null;
428
+ const endWorld = multiWorld
429
+ ? Math.ceil((extent[2] - projectionExtent[2]) / worldWidth) + 1
430
+ : 1;
431
+ let world = multiWorld
432
+ ? Math.floor((extent[0] - projectionExtent[0]) / worldWidth)
433
+ : 0;
434
+ do {
435
+ let transform = this.getRenderTransform(
436
+ center,
437
+ resolution,
438
+ 0,
439
+ pixelRatio,
440
+ width,
441
+ height,
442
+ world * worldWidth,
443
+ );
444
+ if (frameState.declutter) {
445
+ transform = transform.slice(0);
446
+ }
447
+ executorGroup.execute(
448
+ context,
449
+ [context.canvas.width, context.canvas.height],
450
+ transform,
451
+ rotation,
452
+ snapToPixel,
453
+ declutterable === undefined
454
+ ? _render_canvas_ExecutorGroup_js__WEBPACK_IMPORTED_MODULE_4__.ALL
455
+ : declutterable
456
+ ? _render_canvas_ExecutorGroup_js__WEBPACK_IMPORTED_MODULE_4__.DECLUTTER
457
+ : _render_canvas_ExecutorGroup_js__WEBPACK_IMPORTED_MODULE_4__.NON_DECLUTTER,
458
+ declutterable
459
+ ? declutter && frameState.declutter[declutter]
460
+ : undefined,
461
+ );
462
+ } while (++world < endWorld);
463
+ }
464
+
465
+ /**
466
+ * @private
467
+ */
468
+ setDrawContext_() {
469
+ if (this.opacity_ !== 1) {
470
+ this.targetContext_ = this.context;
471
+ this.context = (0,_dom_js__WEBPACK_IMPORTED_MODULE_5__.createCanvasContext2D)(
472
+ this.context.canvas.width,
473
+ this.context.canvas.height,
474
+ _Layer_js__WEBPACK_IMPORTED_MODULE_1__.canvasPool,
475
+ );
476
+ }
477
+ }
478
+
479
+ /**
480
+ * @private
481
+ */
482
+ resetDrawContext_() {
483
+ if (this.opacity_ !== 1 && this.targetContext_) {
484
+ const alpha = this.targetContext_.globalAlpha;
485
+ this.targetContext_.globalAlpha = this.opacity_;
486
+ this.targetContext_.drawImage(this.context.canvas, 0, 0);
487
+ this.targetContext_.globalAlpha = alpha;
488
+ (0,_dom_js__WEBPACK_IMPORTED_MODULE_5__.releaseCanvas)(this.context);
489
+ _Layer_js__WEBPACK_IMPORTED_MODULE_1__.canvasPool.push(this.context.canvas);
490
+ this.context = this.targetContext_;
491
+ this.targetContext_ = null;
492
+ }
493
+ }
494
+
495
+ /**
496
+ * Render declutter items for this layer
497
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
498
+ */
499
+ renderDeclutter(frameState) {
500
+ if (!this.replayGroup_ || !this.getLayer().getDeclutter()) {
501
+ return;
502
+ }
503
+ this.renderWorlds(this.replayGroup_, frameState, true);
504
+ }
505
+
506
+ /**
507
+ * Render deferred instructions.
508
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
509
+ * @override
510
+ */
511
+ renderDeferredInternal(frameState) {
512
+ if (!this.replayGroup_) {
513
+ return;
514
+ }
515
+ this.replayGroup_.renderDeferred();
516
+ if (this.clipped_) {
517
+ this.context.restore();
518
+ }
519
+ this.resetDrawContext_();
520
+ }
521
+
522
+ /**
523
+ * Render the layer.
524
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
525
+ * @param {HTMLElement|null} target Target that may be used to render content to.
526
+ * @return {HTMLElement} The rendered element.
527
+ * @override
528
+ */
529
+ renderFrame(frameState, target) {
530
+ const layerState = frameState.layerStatesArray[frameState.layerIndex];
531
+ this.opacity_ = layerState.opacity;
532
+ const viewState = frameState.viewState;
533
+
534
+ this.prepareContainer(frameState, target);
535
+ const context = this.context;
536
+
537
+ const replayGroup = this.replayGroup_;
538
+ let render = replayGroup && !replayGroup.isEmpty();
539
+ if (!render) {
540
+ const hasRenderListeners =
541
+ this.getLayer().hasListener(_render_EventType_js__WEBPACK_IMPORTED_MODULE_6__["default"].PRERENDER) ||
542
+ this.getLayer().hasListener(_render_EventType_js__WEBPACK_IMPORTED_MODULE_6__["default"].POSTRENDER);
543
+ if (!hasRenderListeners) {
544
+ return this.container;
545
+ }
546
+ }
547
+
548
+ this.setDrawContext_();
549
+
550
+ this.preRender(context, frameState);
551
+
552
+ const projection = viewState.projection;
553
+
554
+ // clipped rendering if layer extent is set
555
+ this.clipped_ = false;
556
+ if (render && layerState.extent && this.clipping) {
557
+ const layerExtent = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.fromUserExtent)(layerState.extent, projection);
558
+ render = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.intersects)(layerExtent, frameState.extent);
559
+ this.clipped_ = render && !(0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.containsExtent)(layerExtent, frameState.extent);
560
+ if (this.clipped_) {
561
+ this.clipUnrotated(context, frameState, layerExtent);
562
+ }
563
+ }
564
+
565
+ if (render) {
566
+ this.renderWorlds(
567
+ replayGroup,
568
+ frameState,
569
+ this.getLayer().getDeclutter() ? false : undefined,
570
+ );
571
+ }
572
+
573
+ if (!frameState.declutter && this.clipped_) {
574
+ context.restore();
575
+ }
576
+
577
+ this.postRender(context, frameState);
578
+
579
+ if (this.renderedRotation_ !== viewState.rotation) {
580
+ this.renderedRotation_ = viewState.rotation;
581
+ this.hitDetectionImageData_ = null;
582
+ }
583
+ if (!frameState.declutter) {
584
+ this.resetDrawContext_();
585
+ }
586
+ return this.container;
587
+ }
588
+
589
+ /**
590
+ * Asynchronous layer level hit detection.
591
+ * @param {import("../../pixel.js").Pixel} pixel Pixel.
592
+ * @return {Promise<Array<import("../../Feature").default>>} Promise
593
+ * that resolves with an array of features.
594
+ * @override
595
+ */
596
+ getFeatures(pixel) {
597
+ return new Promise((resolve) => {
598
+ if (
599
+ this.frameState &&
600
+ !this.hitDetectionImageData_ &&
601
+ !this.animatingOrInteracting_
602
+ ) {
603
+ const size = this.frameState.size.slice();
604
+ const center = this.renderedCenter_;
605
+ const resolution = this.renderedResolution_;
606
+ const rotation = this.renderedRotation_;
607
+ const projection = this.renderedProjection_;
608
+ const extent = this.wrappedRenderedExtent_;
609
+ const layer = this.getLayer();
610
+ const transforms = [];
611
+ const width = size[0] * _render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.HIT_DETECT_RESOLUTION;
612
+ const height = size[1] * _render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.HIT_DETECT_RESOLUTION;
613
+ transforms.push(
614
+ this.getRenderTransform(
615
+ center,
616
+ resolution,
617
+ rotation,
618
+ _render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.HIT_DETECT_RESOLUTION,
619
+ width,
620
+ height,
621
+ 0,
622
+ ).slice(),
623
+ );
624
+ const source = layer.getSource();
625
+ const projectionExtent = projection.getExtent();
626
+ if (
627
+ source.getWrapX() &&
628
+ projection.canWrapX() &&
629
+ !(0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.containsExtent)(projectionExtent, extent)
630
+ ) {
631
+ let startX = extent[0];
632
+ const worldWidth = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getWidth)(projectionExtent);
633
+ let world = 0;
634
+ let offsetX;
635
+ while (startX < projectionExtent[0]) {
636
+ --world;
637
+ offsetX = worldWidth * world;
638
+ transforms.push(
639
+ this.getRenderTransform(
640
+ center,
641
+ resolution,
642
+ rotation,
643
+ _render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.HIT_DETECT_RESOLUTION,
644
+ width,
645
+ height,
646
+ offsetX,
647
+ ).slice(),
648
+ );
649
+ startX += worldWidth;
650
+ }
651
+ world = 0;
652
+ startX = extent[2];
653
+ while (startX > projectionExtent[2]) {
654
+ ++world;
655
+ offsetX = worldWidth * world;
656
+ transforms.push(
657
+ this.getRenderTransform(
658
+ center,
659
+ resolution,
660
+ rotation,
661
+ _render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.HIT_DETECT_RESOLUTION,
662
+ width,
663
+ height,
664
+ offsetX,
665
+ ).slice(),
666
+ );
667
+ startX -= worldWidth;
668
+ }
669
+ }
670
+ const userProjection = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getUserProjection)();
671
+ this.hitDetectionImageData_ = (0,_render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.createHitDetectionImageData)(
672
+ size,
673
+ transforms,
674
+ this.renderedFeatures_,
675
+ layer.getStyleFunction(),
676
+ extent,
677
+ resolution,
678
+ rotation,
679
+ (0,_vector_js__WEBPACK_IMPORTED_MODULE_8__.getSquaredTolerance)(resolution, this.renderedPixelRatio_),
680
+ userProjection ? projection : null,
681
+ );
682
+ }
683
+ resolve(
684
+ (0,_render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.hitDetect)(pixel, this.renderedFeatures_, this.hitDetectionImageData_),
685
+ );
686
+ });
687
+ }
688
+
689
+ /**
690
+ * @param {import("../../coordinate.js").Coordinate} coordinate Coordinate.
691
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
692
+ * @param {number} hitTolerance Hit tolerance in pixels.
693
+ * @param {import("../vector.js").FeatureCallback<T>} callback Feature callback.
694
+ * @param {Array<import("../Map.js").HitMatch<T>>} matches The hit detected matches with tolerance.
695
+ * @return {T|undefined} Callback result.
696
+ * @template T
697
+ * @override
698
+ */
699
+ forEachFeatureAtCoordinate(
700
+ coordinate,
701
+ frameState,
702
+ hitTolerance,
703
+ callback,
704
+ matches,
705
+ ) {
706
+ if (!this.replayGroup_) {
707
+ return undefined;
708
+ }
709
+ const resolution = frameState.viewState.resolution;
710
+ const rotation = frameState.viewState.rotation;
711
+ const layer = this.getLayer();
712
+
713
+ /** @type {!Object<string, import("../Map.js").HitMatch<T>|true>} */
714
+ const features = {};
715
+
716
+ /**
717
+ * @param {import("../../Feature.js").FeatureLike} feature Feature.
718
+ * @param {import("../../geom/SimpleGeometry.js").default} geometry Geometry.
719
+ * @param {number} distanceSq The squared distance to the click position
720
+ * @return {T|undefined} Callback result.
721
+ */
722
+ const featureCallback = function (feature, geometry, distanceSq) {
723
+ const key = (0,_util_js__WEBPACK_IMPORTED_MODULE_9__.getUid)(feature);
724
+ const match = features[key];
725
+ if (!match) {
726
+ if (distanceSq === 0) {
727
+ features[key] = true;
728
+ return callback(feature, layer, geometry);
729
+ }
730
+ matches.push(
731
+ (features[key] = {
732
+ feature: feature,
733
+ layer: layer,
734
+ geometry: geometry,
735
+ distanceSq: distanceSq,
736
+ callback: callback,
737
+ }),
738
+ );
739
+ } else if (match !== true && distanceSq < match.distanceSq) {
740
+ if (distanceSq === 0) {
741
+ features[key] = true;
742
+ matches.splice(matches.lastIndexOf(match), 1);
743
+ return callback(feature, layer, geometry);
744
+ }
745
+ match.geometry = geometry;
746
+ match.distanceSq = distanceSq;
747
+ }
748
+ return undefined;
749
+ };
750
+
751
+ const declutter = this.getLayer().getDeclutter();
752
+ return this.replayGroup_.forEachFeatureAtCoordinate(
753
+ coordinate,
754
+ resolution,
755
+ rotation,
756
+ hitTolerance,
757
+ featureCallback,
758
+ declutter
759
+ ? frameState.declutter?.[declutter]?.all().map((item) => item.value)
760
+ : null,
761
+ );
762
+ }
763
+
764
+ /**
765
+ * Perform action necessary to get the layer rendered after new fonts have loaded
766
+ * @override
767
+ */
768
+ handleFontsChanged() {
769
+ const layer = this.getLayer();
770
+ if (layer.getVisible() && this.replayGroup_) {
771
+ layer.changed();
772
+ }
773
+ }
774
+
775
+ /**
776
+ * Handle changes in image style state.
777
+ * @param {import("../../events/Event.js").default} event Image style change event.
778
+ * @private
779
+ */
780
+ handleStyleImageChange_(event) {
781
+ this.renderIfReadyAndVisible();
782
+ }
783
+
784
+ /**
785
+ * Determine whether render should be called.
786
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
787
+ * @return {boolean} Layer is ready to be rendered.
788
+ * @override
789
+ */
790
+ prepareFrame(frameState) {
791
+ const vectorLayer = this.getLayer();
792
+ const vectorSource = vectorLayer.getSource();
793
+ if (!vectorSource) {
794
+ return false;
795
+ }
796
+
797
+ const animating = frameState.viewHints[_ViewHint_js__WEBPACK_IMPORTED_MODULE_3__["default"].ANIMATING];
798
+ const interacting = frameState.viewHints[_ViewHint_js__WEBPACK_IMPORTED_MODULE_3__["default"].INTERACTING];
799
+ const updateWhileAnimating = vectorLayer.getUpdateWhileAnimating();
800
+ const updateWhileInteracting = vectorLayer.getUpdateWhileInteracting();
801
+
802
+ if (
803
+ (this.ready && !updateWhileAnimating && animating) ||
804
+ (!updateWhileInteracting && interacting)
805
+ ) {
806
+ this.animatingOrInteracting_ = true;
807
+ return true;
808
+ }
809
+ this.animatingOrInteracting_ = false;
810
+
811
+ const frameStateExtent = frameState.extent;
812
+ const viewState = frameState.viewState;
813
+ const projection = viewState.projection;
814
+ const resolution = viewState.resolution;
815
+ const pixelRatio = frameState.pixelRatio;
816
+ const vectorLayerRevision = vectorLayer.getRevision();
817
+ const vectorLayerRenderBuffer = vectorLayer.getRenderBuffer();
818
+ let vectorLayerRenderOrder = vectorLayer.getRenderOrder();
819
+
820
+ if (vectorLayerRenderOrder === undefined) {
821
+ vectorLayerRenderOrder = _vector_js__WEBPACK_IMPORTED_MODULE_8__.defaultOrder;
822
+ }
823
+
824
+ const center = viewState.center.slice();
825
+ const extent = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.buffer)(
826
+ frameStateExtent,
827
+ vectorLayerRenderBuffer * resolution,
828
+ );
829
+ const renderedExtent = extent.slice();
830
+ const loadExtents = [extent.slice()];
831
+ const projectionExtent = projection.getExtent();
832
+
833
+ if (
834
+ vectorSource.getWrapX() &&
835
+ projection.canWrapX() &&
836
+ !(0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.containsExtent)(projectionExtent, frameState.extent)
837
+ ) {
838
+ // For the replay group, we need an extent that intersects the real world
839
+ // (-180° to +180°). To support geometries in a coordinate range from -540°
840
+ // to +540°, we add at least 1 world width on each side of the projection
841
+ // extent. If the viewport is wider than the world, we need to add half of
842
+ // the viewport width to make sure we cover the whole viewport.
843
+ const worldWidth = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getWidth)(projectionExtent);
844
+ const gutter = Math.max((0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getWidth)(extent) / 2, worldWidth);
845
+ extent[0] = projectionExtent[0] - gutter;
846
+ extent[2] = projectionExtent[2] + gutter;
847
+ (0,_coordinate_js__WEBPACK_IMPORTED_MODULE_10__.wrapX)(center, projection);
848
+ const loadExtent = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.wrapX)(loadExtents[0], projection);
849
+ // If the extent crosses the date line, we load data for both edges of the worlds
850
+ if (
851
+ loadExtent[0] < projectionExtent[0] &&
852
+ loadExtent[2] < projectionExtent[2]
853
+ ) {
854
+ loadExtents.push([
855
+ loadExtent[0] + worldWidth,
856
+ loadExtent[1],
857
+ loadExtent[2] + worldWidth,
858
+ loadExtent[3],
859
+ ]);
860
+ } else if (
861
+ loadExtent[0] > projectionExtent[0] &&
862
+ loadExtent[2] > projectionExtent[2]
863
+ ) {
864
+ loadExtents.push([
865
+ loadExtent[0] - worldWidth,
866
+ loadExtent[1],
867
+ loadExtent[2] - worldWidth,
868
+ loadExtent[3],
869
+ ]);
870
+ }
871
+ }
872
+
873
+ if (
874
+ this.ready &&
875
+ this.renderedResolution_ == resolution &&
876
+ this.renderedRevision_ == vectorLayerRevision &&
877
+ this.renderedRenderOrder_ == vectorLayerRenderOrder &&
878
+ this.renderedFrameDeclutter_ === !!frameState.declutter &&
879
+ (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.containsExtent)(this.wrappedRenderedExtent_, extent)
880
+ ) {
881
+ if (!(0,_array_js__WEBPACK_IMPORTED_MODULE_11__.equals)(this.renderedExtent_, renderedExtent)) {
882
+ this.hitDetectionImageData_ = null;
883
+ this.renderedExtent_ = renderedExtent;
884
+ }
885
+ this.renderedCenter_ = center;
886
+ this.replayGroupChanged = false;
887
+ return true;
888
+ }
889
+
890
+ this.replayGroup_ = null;
891
+
892
+ const replayGroup = new _render_canvas_BuilderGroup_js__WEBPACK_IMPORTED_MODULE_12__["default"](
893
+ (0,_vector_js__WEBPACK_IMPORTED_MODULE_8__.getTolerance)(resolution, pixelRatio),
894
+ extent,
895
+ resolution,
896
+ pixelRatio,
897
+ );
898
+
899
+ const userProjection = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getUserProjection)();
900
+ let userTransform;
901
+ if (userProjection) {
902
+ for (let i = 0, ii = loadExtents.length; i < ii; ++i) {
903
+ const extent = loadExtents[i];
904
+ const userExtent = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.toUserExtent)(extent, projection);
905
+ vectorSource.loadFeatures(
906
+ userExtent,
907
+ (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.toUserResolution)(resolution, projection),
908
+ userProjection,
909
+ );
910
+ }
911
+ userTransform = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getTransformFromProjections)(userProjection, projection);
912
+ } else {
913
+ for (let i = 0, ii = loadExtents.length; i < ii; ++i) {
914
+ vectorSource.loadFeatures(loadExtents[i], resolution, projection);
915
+ }
916
+ }
917
+
918
+ const squaredTolerance = (0,_vector_js__WEBPACK_IMPORTED_MODULE_8__.getSquaredTolerance)(resolution, pixelRatio);
919
+ let ready = true;
920
+ const render =
921
+ /**
922
+ * @param {import("../../Feature.js").default} feature Feature.
923
+ * @param {number} index Index.
924
+ */
925
+ (feature, index) => {
926
+ let styles;
927
+ const styleFunction =
928
+ feature.getStyleFunction() || vectorLayer.getStyleFunction();
929
+ if (styleFunction) {
930
+ styles = styleFunction(feature, resolution);
931
+ }
932
+ if (styles) {
933
+ const dirty = this.renderFeature(
934
+ feature,
935
+ squaredTolerance,
936
+ styles,
937
+ replayGroup,
938
+ userTransform,
939
+ this.getLayer().getDeclutter(),
940
+ index,
941
+ );
942
+ ready = ready && !dirty;
943
+ }
944
+ };
945
+
946
+ const userExtent = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.toUserExtent)(extent, projection);
947
+ /** @type {Array<import("../../Feature.js").default>} */
948
+ const features = vectorSource.getFeaturesInExtent(userExtent);
949
+ if (vectorLayerRenderOrder) {
950
+ features.sort(vectorLayerRenderOrder);
951
+ }
952
+ for (let i = 0, ii = features.length; i < ii; ++i) {
953
+ render(features[i], i);
954
+ }
955
+ this.renderedFeatures_ = features;
956
+ this.ready = ready;
957
+
958
+ const replayGroupInstructions = replayGroup.finish();
959
+ const executorGroup = new _render_canvas_ExecutorGroup_js__WEBPACK_IMPORTED_MODULE_4__["default"](
960
+ extent,
961
+ resolution,
962
+ pixelRatio,
963
+ vectorSource.getOverlaps(),
964
+ replayGroupInstructions,
965
+ vectorLayer.getRenderBuffer(),
966
+ !!frameState.declutter,
967
+ );
968
+
969
+ this.renderedResolution_ = resolution;
970
+ this.renderedRevision_ = vectorLayerRevision;
971
+ this.renderedRenderOrder_ = vectorLayerRenderOrder;
972
+ this.renderedFrameDeclutter_ = !!frameState.declutter;
973
+ this.renderedExtent_ = renderedExtent;
974
+ this.wrappedRenderedExtent_ = extent;
975
+ this.renderedCenter_ = center;
976
+ this.renderedProjection_ = projection;
977
+ this.renderedPixelRatio_ = pixelRatio;
978
+ this.replayGroup_ = executorGroup;
979
+ this.hitDetectionImageData_ = null;
980
+
981
+ this.replayGroupChanged = true;
982
+ return true;
983
+ }
984
+
985
+ /**
986
+ * @param {import("../../Feature.js").default} feature Feature.
987
+ * @param {number} squaredTolerance Squared render tolerance.
988
+ * @param {import("../../style/Style.js").default|Array<import("../../style/Style.js").default>} styles The style or array of styles.
989
+ * @param {import("../../render/canvas/BuilderGroup.js").default} builderGroup Builder group.
990
+ * @param {import("../../proj.js").TransformFunction} [transform] Transform from user to view projection.
991
+ * @param {boolean} [declutter] Enable decluttering.
992
+ * @param {number} [index] Render order index.
993
+ * @return {boolean} `true` if an image is loading.
994
+ */
995
+ renderFeature(
996
+ feature,
997
+ squaredTolerance,
998
+ styles,
999
+ builderGroup,
1000
+ transform,
1001
+ declutter,
1002
+ index,
1003
+ ) {
1004
+ if (!styles) {
1005
+ return false;
1006
+ }
1007
+ let loading = false;
1008
+ if (Array.isArray(styles)) {
1009
+ for (let i = 0, ii = styles.length; i < ii; ++i) {
1010
+ loading =
1011
+ (0,_vector_js__WEBPACK_IMPORTED_MODULE_8__.renderFeature)(
1012
+ builderGroup,
1013
+ feature,
1014
+ styles[i],
1015
+ squaredTolerance,
1016
+ this.boundHandleStyleImageChange_,
1017
+ transform,
1018
+ declutter,
1019
+ index,
1020
+ ) || loading;
1021
+ }
1022
+ } else {
1023
+ loading = (0,_vector_js__WEBPACK_IMPORTED_MODULE_8__.renderFeature)(
1024
+ builderGroup,
1025
+ feature,
1026
+ styles,
1027
+ squaredTolerance,
1028
+ this.boundHandleStyleImageChange_,
1029
+ transform,
1030
+ declutter,
1031
+ index,
1032
+ );
1033
+ }
1034
+ return loading;
1035
+ }
1036
+ }
1037
+
1038
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CanvasVectorLayerRenderer);
1039
+
1040
+
1041
+ /***/ })
1042
+
1043
+ }])
1044
+ //# sourceMappingURL=vendors-node_modules_ol_renderer_canvas_VectorLayer_js.js.map