@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.
- package/node_modules_ol_ImageCanvas_js.js +76 -83
- package/node_modules_ol_ImageCanvas_js.js.map +1 -1
- package/node_modules_ol_TileRange_js.js +128 -110
- package/node_modules_ol_TileRange_js.js.map +1 -1
- package/node_modules_ol_Tile_js.js +279 -0
- package/node_modules_ol_Tile_js.js.map +1 -0
- package/node_modules_ol_VectorRenderTile_js.js +428 -143
- package/node_modules_ol_VectorRenderTile_js.js.map +1 -1
- package/node_modules_ol_VectorTile_js.js +405 -119
- package/node_modules_ol_VectorTile_js.js.map +1 -1
- package/node_modules_ol_control_MousePosition_js.js +327 -0
- package/node_modules_ol_control_MousePosition_js.js.map +1 -0
- package/node_modules_ol_control_ZoomToExtent_js.js +118 -0
- package/node_modules_ol_control_ZoomToExtent_js.js.map +1 -0
- package/node_modules_ol_events_SnapEvent_js.js +79 -0
- package/node_modules_ol_events_SnapEvent_js.js.map +1 -0
- package/node_modules_ol_featureloader_js.js +205 -0
- package/node_modules_ol_featureloader_js.js.map +1 -0
- package/node_modules_ol_geom_Circle_js.js +300 -0
- package/node_modules_ol_geom_Circle_js.js.map +1 -0
- package/node_modules_ol_geom_GeometryCollection_js.js +369 -0
- package/node_modules_ol_geom_GeometryCollection_js.js.map +1 -0
- package/node_modules_ol_geom_MultiPoint_js.js +228 -0
- package/node_modules_ol_geom_MultiPoint_js.js.map +1 -0
- package/node_modules_ol_geom_flat_center_js.js +47 -0
- package/node_modules_ol_geom_flat_center_js.js.map +1 -0
- package/node_modules_ol_geom_flat_geodesic_js.js +123 -88
- package/node_modules_ol_geom_flat_geodesic_js.js.map +1 -1
- package/node_modules_ol_geom_flat_interpolate_js.js +230 -0
- package/node_modules_ol_geom_flat_interpolate_js.js.map +1 -0
- package/node_modules_ol_geom_flat_length_js-_375a0.js +58 -0
- package/node_modules_ol_geom_flat_length_js-_375a0.js.map +1 -0
- package/node_modules_ol_geom_flat_length_js-_375a1.js +58 -0
- package/node_modules_ol_geom_flat_length_js-_375a1.js.map +1 -0
- package/node_modules_ol_geom_flat_length_js-_375a2.js +58 -0
- package/node_modules_ol_geom_flat_length_js-_375a2.js.map +1 -0
- package/node_modules_ol_geom_flat_length_js-_375a3.js +58 -0
- package/node_modules_ol_geom_flat_length_js-_375a3.js.map +1 -0
- package/node_modules_ol_geom_flat_length_js-_375a4.js +58 -0
- package/node_modules_ol_geom_flat_length_js-_375a4.js.map +1 -0
- package/node_modules_ol_geom_flat_linechunk_js.js +76 -0
- package/node_modules_ol_geom_flat_linechunk_js.js.map +1 -0
- package/node_modules_ol_geom_flat_straightchunk_js.js +68 -0
- package/node_modules_ol_geom_flat_straightchunk_js.js.map +1 -0
- package/node_modules_ol_geom_flat_textpath_js.js +178 -0
- package/node_modules_ol_geom_flat_textpath_js.js.map +1 -0
- package/node_modules_ol_interaction_DblClickDragZoom_js.js +285 -0
- package/node_modules_ol_interaction_DblClickDragZoom_js.js.map +1 -0
- package/node_modules_ol_interaction_DragAndDrop_js.js +351 -0
- package/node_modules_ol_interaction_DragAndDrop_js.js.map +1 -0
- package/node_modules_ol_interaction_DragRotateAndZoom_js.js +159 -0
- package/node_modules_ol_interaction_DragRotateAndZoom_js.js.map +1 -0
- package/node_modules_ol_layer_Vector_js-_49290.js +110 -0
- package/node_modules_ol_layer_Vector_js-_49290.js.map +1 -0
- package/node_modules_ol_layer_Vector_js-_49291.js +110 -0
- package/node_modules_ol_layer_Vector_js-_49291.js.map +1 -0
- package/node_modules_ol_layer_Vector_js-_49292.js +110 -0
- package/node_modules_ol_layer_Vector_js-_49292.js.map +1 -0
- package/node_modules_ol_layer_Vector_js-_49293.js +110 -0
- package/node_modules_ol_layer_Vector_js-_49293.js.map +1 -0
- package/node_modules_ol_loadingstrategy_js.js +95 -0
- package/node_modules_ol_loadingstrategy_js.js.map +1 -0
- package/node_modules_ol_render_VectorContext_js-_3ad60.js +144 -0
- package/node_modules_ol_render_VectorContext_js-_3ad60.js.map +1 -0
- package/node_modules_ol_render_VectorContext_js-_3ad61.js +144 -0
- package/node_modules_ol_render_VectorContext_js-_3ad61.js.map +1 -0
- package/node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js +372 -0
- package/node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js.map +1 -0
- package/node_modules_ol_render_canvas_ImageBuilder_js.js +318 -0
- package/node_modules_ol_render_canvas_ImageBuilder_js.js.map +1 -0
- package/node_modules_ol_render_canvas_Instruction_js.js +66 -0
- package/node_modules_ol_render_canvas_Instruction_js.js.map +1 -0
- package/node_modules_ol_render_canvas_LineStringBuilder_js.js +187 -0
- package/node_modules_ol_render_canvas_LineStringBuilder_js.js.map +1 -0
- package/node_modules_ol_render_canvas_PolygonBuilder_js.js +276 -0
- package/node_modules_ol_render_canvas_PolygonBuilder_js.js.map +1 -0
- package/node_modules_ol_render_canvas_ZIndexContext_js-_fab20.js +156 -0
- package/node_modules_ol_render_canvas_ZIndexContext_js-_fab20.js.map +1 -0
- package/node_modules_ol_render_canvas_ZIndexContext_js-_fab21.js +156 -0
- package/node_modules_ol_render_canvas_ZIndexContext_js-_fab21.js.map +1 -0
- package/node_modules_ol_render_js-node_modules_ol_render_VectorContext_js.js +301 -0
- package/node_modules_ol_render_js-node_modules_ol_render_VectorContext_js.js.map +1 -0
- package/node_modules_ol_renderer_Layer_js.js +219 -0
- package/node_modules_ol_renderer_Layer_js.js.map +1 -0
- package/node_modules_ol_source_Source_js.js +256 -0
- package/node_modules_ol_source_Source_js.js.map +1 -0
- package/node_modules_ol_source_VectorEventType_js-node_modules_ol_structs_RBush_js.js +318 -0
- package/node_modules_ol_source_VectorEventType_js-node_modules_ol_structs_RBush_js.js.map +1 -0
- package/node_modules_ol_source_VectorEventType_js.js +80 -0
- package/node_modules_ol_source_VectorEventType_js.js.map +1 -0
- package/node_modules_ol_structs_RBush_js.js +242 -0
- package/node_modules_ol_structs_RBush_js.js.map +1 -0
- package/node_modules_ol_style_js.js +2 -1
- package/node_modules_ol_style_js.js.map +1 -1
- package/node_modules_rbush_rbush_min_js.js +16 -0
- package/node_modules_rbush_rbush_min_js.js.map +1 -0
- package/package.json +142 -146
- package/vaadin-bundle.json +2447 -2352
- package/vaadin.js +52246 -63791
- package/vaadin.js.map +1 -1
- package/vendors-node_modules_dompurify_dist_purify_es_mjs.js +1364 -0
- package/vendors-node_modules_dompurify_dist_purify_es_mjs.js.map +1 -0
- package/vendors-node_modules_dompurify_dist_purify_js.js +26 -21
- package/vendors-node_modules_dompurify_dist_purify_js.js.map +1 -1
- package/vendors-node_modules_marked_lib_marked_esm_js.js +2205 -0
- package/vendors-node_modules_marked_lib_marked_esm_js.js.map +1 -0
- package/vendors-node_modules_marked_lib_marked_umd_js.js +2164 -2556
- package/vendors-node_modules_marked_lib_marked_umd_js.js.map +1 -1
- package/vendors-node_modules_ol_Feature_js.js +360 -0
- package/vendors-node_modules_ol_Feature_js.js.map +1 -0
- package/vendors-node_modules_ol_Geolocation_js.js +352 -293
- package/vendors-node_modules_ol_Geolocation_js.js.map +1 -1
- package/vendors-node_modules_ol_ImageTile_js.js +494 -0
- package/vendors-node_modules_ol_ImageTile_js.js.map +1 -0
- package/vendors-node_modules_ol_Overlay_js.js +606 -0
- package/vendors-node_modules_ol_Overlay_js.js.map +1 -0
- package/vendors-node_modules_ol_control_FullScreen_js.js +417 -0
- package/vendors-node_modules_ol_control_FullScreen_js.js.map +1 -0
- package/vendors-node_modules_ol_control_OverviewMap_js.js +711 -0
- package/vendors-node_modules_ol_control_OverviewMap_js.js.map +1 -0
- package/vendors-node_modules_ol_control_ScaleLine_js.js +509 -0
- package/vendors-node_modules_ol_control_ScaleLine_js.js.map +1 -0
- package/vendors-node_modules_ol_control_ZoomSlider_js.js +418 -0
- package/vendors-node_modules_ol_control_ZoomSlider_js.js.map +1 -0
- package/vendors-node_modules_ol_control_js.js +490 -0
- package/vendors-node_modules_ol_control_js.js.map +1 -0
- package/vendors-node_modules_ol_geom_LineString_js.js +574 -0
- package/vendors-node_modules_ol_geom_LineString_js.js.map +1 -0
- package/vendors-node_modules_ol_geom_MultiLineString_js.js +405 -0
- package/vendors-node_modules_ol_geom_MultiLineString_js.js.map +1 -0
- package/vendors-node_modules_ol_geom_MultiPolygon_js.js +773 -0
- package/vendors-node_modules_ol_geom_MultiPolygon_js.js.map +1 -0
- package/vendors-node_modules_ol_geom_js-node_modules_ol_geom_flat_length_js.js +769 -0
- package/vendors-node_modules_ol_geom_js-node_modules_ol_geom_flat_length_js.js.map +1 -0
- package/vendors-node_modules_ol_index_js.js +526 -675
- package/vendors-node_modules_ol_index_js.js.map +1 -1
- package/vendors-node_modules_ol_interaction_Draw_js.js +2777 -0
- package/vendors-node_modules_ol_interaction_Draw_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Extent_js.js +586 -0
- package/vendors-node_modules_ol_interaction_Extent_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Link_js.js +489 -0
- package/vendors-node_modules_ol_interaction_Link_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Modify_js.js +1841 -0
- package/vendors-node_modules_ol_interaction_Modify_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Select_js.js +623 -0
- package/vendors-node_modules_ol_interaction_Select_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Snap_js.js +982 -0
- package/vendors-node_modules_ol_interaction_Snap_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Translate_js.js +466 -0
- package/vendors-node_modules_ol_interaction_Translate_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_js.js +872 -0
- package/vendors-node_modules_ol_interaction_js.js.map +1 -0
- package/vendors-node_modules_ol_layer_Graticule_js.js +1374 -989
- package/vendors-node_modules_ol_layer_Graticule_js.js.map +1 -1
- package/vendors-node_modules_ol_render_Feature_js.js +546 -0
- package/vendors-node_modules_ol_render_Feature_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_BuilderGroup_js.js +897 -0
- package/vendors-node_modules_ol_render_canvas_BuilderGroup_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_Builder_js.js +907 -0
- package/vendors-node_modules_ol_render_canvas_Builder_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_ExecutorGroup_js.js +539 -0
- package/vendors-node_modules_ol_render_canvas_ExecutorGroup_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_Executor_js.js +1715 -0
- package/vendors-node_modules_ol_render_canvas_Executor_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_Immediate_js.js +1208 -0
- package/vendors-node_modules_ol_render_canvas_Immediate_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_TextBuilder_js.js +825 -0
- package/vendors-node_modules_ol_render_canvas_TextBuilder_js.js.map +1 -0
- package/vendors-node_modules_ol_renderer_canvas_Layer_js.js +654 -0
- package/vendors-node_modules_ol_renderer_canvas_Layer_js.js.map +1 -0
- package/vendors-node_modules_ol_renderer_canvas_VectorLayer_js.js +1044 -0
- package/vendors-node_modules_ol_renderer_canvas_VectorLayer_js.js.map +1 -0
- package/vendors-node_modules_ol_renderer_vector_js.js +460 -0
- package/vendors-node_modules_ol_renderer_vector_js.js.map +1 -0
- package/vendors-node_modules_ol_source_Vector_js.js +2091 -0
- package/vendors-node_modules_ol_source_Vector_js.js.map +1 -0
- package/node_modules_ol_ImageTile_js.js +0 -177
- package/node_modules_ol_ImageTile_js.js.map +0 -1
- package/node_modules_ol_render_js.js +0 -131
- package/node_modules_ol_render_js.js.map +0 -1
- package/node_modules_ol_structs_LRUCache_js.js +0 -275
- package/node_modules_ol_structs_LRUCache_js.js.map +0 -1
- package/node_modules_ol_tilecoord_js.js +0 -115
- package/node_modules_ol_tilecoord_js.js.map +0 -1
- package/vendors-node_modules_ol_TileCache_js.js +0 -461
- package/vendors-node_modules_ol_TileCache_js.js.map +0 -1
- package/vendors-node_modules_ol_Tile_js.js +0 -330
- package/vendors-node_modules_ol_Tile_js.js.map +0 -1
- package/vendors-node_modules_ol_style_Text_js.js +0 -509
- package/vendors-node_modules_ol_style_Text_js.js.map +0 -1
- package/vendors-node_modules_rbush_index_js.js +0 -531
- package/vendors-node_modules_rbush_index_js.js.map +0 -1
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
(self["webpackChunk_vaadin_bundles"] = self["webpackChunk_vaadin_bundles"] || []).push([["node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js"],{
|
|
2
|
+
|
|
3
|
+
/***/ "./node_modules/ol/render/VectorContext.js":
|
|
4
|
+
/*!*************************************************!*\
|
|
5
|
+
!*** ./node_modules/ol/render/VectorContext.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 */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
12
|
+
/* harmony export */ });
|
|
13
|
+
/**
|
|
14
|
+
* @module ol/render/VectorContext
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @classdesc
|
|
19
|
+
* Context for drawing geometries. A vector context is available on render
|
|
20
|
+
* events and does not need to be constructed directly.
|
|
21
|
+
* @api
|
|
22
|
+
*/
|
|
23
|
+
class VectorContext {
|
|
24
|
+
/**
|
|
25
|
+
* Render a geometry with a custom renderer.
|
|
26
|
+
*
|
|
27
|
+
* @param {import("../geom/SimpleGeometry.js").default} geometry Geometry.
|
|
28
|
+
* @param {import("../Feature.js").FeatureLike} feature Feature.
|
|
29
|
+
* @param {Function} renderer Renderer.
|
|
30
|
+
* @param {Function} hitDetectionRenderer Renderer.
|
|
31
|
+
* @param {number} [index] Render order index.
|
|
32
|
+
*/
|
|
33
|
+
drawCustom(geometry, feature, renderer, hitDetectionRenderer, index) {}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Render a geometry.
|
|
37
|
+
*
|
|
38
|
+
* @param {import("../geom/Geometry.js").default} geometry The geometry to render.
|
|
39
|
+
*/
|
|
40
|
+
drawGeometry(geometry) {}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Set the rendering style.
|
|
44
|
+
*
|
|
45
|
+
* @param {import("../style/Style.js").default} style The rendering style.
|
|
46
|
+
*/
|
|
47
|
+
setStyle(style) {}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @param {import("../geom/Circle.js").default} circleGeometry Circle geometry.
|
|
51
|
+
* @param {import("../Feature.js").default} feature Feature.
|
|
52
|
+
* @param {number} [index] Render order index.
|
|
53
|
+
*/
|
|
54
|
+
drawCircle(circleGeometry, feature, index) {}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @param {import("../Feature.js").default} feature Feature.
|
|
58
|
+
* @param {import("../style/Style.js").default} style Style.
|
|
59
|
+
* @param {number} [index] Render order index.
|
|
60
|
+
*/
|
|
61
|
+
drawFeature(feature, style, index) {}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @param {import("../geom/GeometryCollection.js").default} geometryCollectionGeometry Geometry collection.
|
|
65
|
+
* @param {import("../Feature.js").default} feature Feature.
|
|
66
|
+
* @param {number} [index] Render order index.
|
|
67
|
+
*/
|
|
68
|
+
drawGeometryCollection(geometryCollectionGeometry, feature, index) {}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @param {import("../geom/LineString.js").default|import("./Feature.js").default} lineStringGeometry Line string geometry.
|
|
72
|
+
* @param {import("../Feature.js").FeatureLike} feature Feature.
|
|
73
|
+
* @param {number} [index] Render order index.
|
|
74
|
+
*/
|
|
75
|
+
drawLineString(lineStringGeometry, feature, index) {}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @param {import("../geom/MultiLineString.js").default|import("./Feature.js").default} multiLineStringGeometry MultiLineString geometry.
|
|
79
|
+
* @param {import("../Feature.js").FeatureLike} feature Feature.
|
|
80
|
+
* @param {number} [index] Render order index.
|
|
81
|
+
*/
|
|
82
|
+
drawMultiLineString(multiLineStringGeometry, feature, index) {}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @param {import("../geom/MultiPoint.js").default|import("./Feature.js").default} multiPointGeometry MultiPoint geometry.
|
|
86
|
+
* @param {import("../Feature.js").FeatureLike} feature Feature.
|
|
87
|
+
* @param {number} [index] Render order index.
|
|
88
|
+
*/
|
|
89
|
+
drawMultiPoint(multiPointGeometry, feature, index) {}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @param {import("../geom/MultiPolygon.js").default} multiPolygonGeometry MultiPolygon geometry.
|
|
93
|
+
* @param {import("../Feature.js").FeatureLike} feature Feature.
|
|
94
|
+
* @param {number} [index] Render order index.
|
|
95
|
+
*/
|
|
96
|
+
drawMultiPolygon(multiPolygonGeometry, feature, index) {}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @param {import("../geom/Point.js").default|import("./Feature.js").default} pointGeometry Point geometry.
|
|
100
|
+
* @param {import("../Feature.js").FeatureLike} feature Feature.
|
|
101
|
+
* @param {number} [index] Render order index.
|
|
102
|
+
*/
|
|
103
|
+
drawPoint(pointGeometry, feature, index) {}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @param {import("../geom/Polygon.js").default|import("./Feature.js").default} polygonGeometry Polygon geometry.
|
|
107
|
+
* @param {import("../Feature.js").FeatureLike} feature Feature.
|
|
108
|
+
* @param {number} [index] Render order index.
|
|
109
|
+
*/
|
|
110
|
+
drawPolygon(polygonGeometry, feature, index) {}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @param {import("../geom/SimpleGeometry.js").default|import("./Feature.js").default} geometry Geometry.
|
|
114
|
+
* @param {import("../Feature.js").FeatureLike} feature Feature.
|
|
115
|
+
* @param {number} [index] Render order index.
|
|
116
|
+
*/
|
|
117
|
+
drawText(geometry, feature, index) {}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @param {import("../style/Fill.js").default} fillStyle Fill style.
|
|
121
|
+
* @param {import("../style/Stroke.js").default} strokeStyle Stroke style.
|
|
122
|
+
*/
|
|
123
|
+
setFillStrokeStyle(fillStyle, strokeStyle) {}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @param {import("../style/Image.js").default} imageStyle Image style.
|
|
127
|
+
* @param {import("../render/canvas.js").DeclutterImageWithText} [declutterImageWithText] Shared data for combined decluttering with a text style.
|
|
128
|
+
*/
|
|
129
|
+
setImageStyle(imageStyle, declutterImageWithText) {}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* @param {import("../style/Text.js").default} textStyle Text style.
|
|
133
|
+
* @param {import("../render/canvas.js").DeclutterImageWithText} [declutterImageWithText] Shared data for combined decluttering with an image style.
|
|
134
|
+
*/
|
|
135
|
+
setTextStyle(textStyle, declutterImageWithText) {}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VectorContext);
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
/***/ }),
|
|
142
|
+
|
|
143
|
+
/***/ "./node_modules/ol/render/canvas/hitdetect.js":
|
|
144
|
+
/*!****************************************************!*\
|
|
145
|
+
!*** ./node_modules/ol/render/canvas/hitdetect.js ***!
|
|
146
|
+
\****************************************************/
|
|
147
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
148
|
+
|
|
149
|
+
__webpack_require__.r(__webpack_exports__);
|
|
150
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
151
|
+
/* harmony export */ "HIT_DETECT_RESOLUTION": () => (/* binding */ HIT_DETECT_RESOLUTION),
|
|
152
|
+
/* harmony export */ "createHitDetectionImageData": () => (/* binding */ createHitDetectionImageData),
|
|
153
|
+
/* harmony export */ "hitDetect": () => (/* binding */ hitDetect)
|
|
154
|
+
/* harmony export */ });
|
|
155
|
+
/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../array.js */ "./node_modules/ol/array.js");
|
|
156
|
+
/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../dom.js */ "./node_modules/ol/dom.js");
|
|
157
|
+
/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../extent.js */ "./node_modules/ol/extent.js");
|
|
158
|
+
/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../math.js */ "./node_modules/ol/math.js");
|
|
159
|
+
/* harmony import */ var _proj_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../proj.js */ "./node_modules/ol/proj.js");
|
|
160
|
+
/* harmony import */ var _style_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../style.js */ "./node_modules/ol/style/Icon.js");
|
|
161
|
+
/* harmony import */ var _Immediate_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Immediate.js */ "./node_modules/ol/render/canvas/Immediate.js");
|
|
162
|
+
/**
|
|
163
|
+
* @module ol/render/canvas/hitdetect
|
|
164
|
+
*/
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
const HIT_DETECT_RESOLUTION = 0.5;
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* @param {import("../../size.js").Size} size Canvas size in css pixels.
|
|
178
|
+
* @param {Array<import("../../transform.js").Transform>} transforms Transforms
|
|
179
|
+
* for rendering features to all worlds of the viewport, from coordinates to css
|
|
180
|
+
* pixels.
|
|
181
|
+
* @param {Array<import("../../Feature.js").FeatureLike>} features
|
|
182
|
+
* Features to consider for hit detection.
|
|
183
|
+
* @param {import("../../style/Style.js").StyleFunction|undefined} styleFunction
|
|
184
|
+
* Layer style function.
|
|
185
|
+
* @param {import("../../extent.js").Extent} extent Extent in render projection.
|
|
186
|
+
* @param {number} resolution Resolution.
|
|
187
|
+
* @param {number} rotation Rotation.
|
|
188
|
+
* @param {number} [squaredTolerance] Squared tolerance.
|
|
189
|
+
* @param {import("../../proj/Projection.js").default} [projection] Render projection.
|
|
190
|
+
* @return {ImageData} Hit detection image data.
|
|
191
|
+
*/
|
|
192
|
+
function createHitDetectionImageData(
|
|
193
|
+
size,
|
|
194
|
+
transforms,
|
|
195
|
+
features,
|
|
196
|
+
styleFunction,
|
|
197
|
+
extent,
|
|
198
|
+
resolution,
|
|
199
|
+
rotation,
|
|
200
|
+
squaredTolerance,
|
|
201
|
+
projection,
|
|
202
|
+
) {
|
|
203
|
+
const userExtent = projection ? (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.toUserExtent)(extent, projection) : extent;
|
|
204
|
+
const width = size[0] * HIT_DETECT_RESOLUTION;
|
|
205
|
+
const height = size[1] * HIT_DETECT_RESOLUTION;
|
|
206
|
+
const context = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.createCanvasContext2D)(width, height);
|
|
207
|
+
context.imageSmoothingEnabled = false;
|
|
208
|
+
const canvas = context.canvas;
|
|
209
|
+
const renderer = new _Immediate_js__WEBPACK_IMPORTED_MODULE_2__["default"](
|
|
210
|
+
context,
|
|
211
|
+
HIT_DETECT_RESOLUTION,
|
|
212
|
+
extent,
|
|
213
|
+
null,
|
|
214
|
+
rotation,
|
|
215
|
+
squaredTolerance,
|
|
216
|
+
projection
|
|
217
|
+
? (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getTransformFromProjections)((0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getUserProjection)(), projection)
|
|
218
|
+
: null,
|
|
219
|
+
);
|
|
220
|
+
const featureCount = features.length;
|
|
221
|
+
// Stretch hit detection index to use the whole available color range
|
|
222
|
+
const indexFactor = Math.floor((256 * 256 * 256 - 1) / featureCount);
|
|
223
|
+
const featuresByZIndex = {};
|
|
224
|
+
for (let i = 1; i <= featureCount; ++i) {
|
|
225
|
+
const feature = features[i - 1];
|
|
226
|
+
const featureStyleFunction = feature.getStyleFunction() || styleFunction;
|
|
227
|
+
if (!featureStyleFunction) {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
let styles = featureStyleFunction(feature, resolution);
|
|
231
|
+
if (!styles) {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
if (!Array.isArray(styles)) {
|
|
235
|
+
styles = [styles];
|
|
236
|
+
}
|
|
237
|
+
const index = i * indexFactor;
|
|
238
|
+
const color = index.toString(16).padStart(7, '#00000');
|
|
239
|
+
for (let j = 0, jj = styles.length; j < jj; ++j) {
|
|
240
|
+
const originalStyle = styles[j];
|
|
241
|
+
const geometry = originalStyle.getGeometryFunction()(feature);
|
|
242
|
+
if (!geometry || !(0,_extent_js__WEBPACK_IMPORTED_MODULE_3__.intersects)(userExtent, geometry.getExtent())) {
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
const style = originalStyle.clone();
|
|
246
|
+
const fill = style.getFill();
|
|
247
|
+
if (fill) {
|
|
248
|
+
fill.setColor(color);
|
|
249
|
+
}
|
|
250
|
+
const stroke = style.getStroke();
|
|
251
|
+
if (stroke) {
|
|
252
|
+
stroke.setColor(color);
|
|
253
|
+
stroke.setLineDash(null);
|
|
254
|
+
}
|
|
255
|
+
style.setText(undefined);
|
|
256
|
+
const image = originalStyle.getImage();
|
|
257
|
+
if (image) {
|
|
258
|
+
const imgSize = image.getImageSize();
|
|
259
|
+
if (!imgSize) {
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
const imgContext = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.createCanvasContext2D)(
|
|
264
|
+
imgSize[0],
|
|
265
|
+
imgSize[1],
|
|
266
|
+
undefined,
|
|
267
|
+
{alpha: false},
|
|
268
|
+
);
|
|
269
|
+
const img = imgContext.canvas;
|
|
270
|
+
imgContext.fillStyle = color;
|
|
271
|
+
imgContext.fillRect(0, 0, img.width, img.height);
|
|
272
|
+
style.setImage(
|
|
273
|
+
new _style_js__WEBPACK_IMPORTED_MODULE_4__["default"]({
|
|
274
|
+
img: img,
|
|
275
|
+
anchor: image.getAnchor(),
|
|
276
|
+
anchorXUnits: 'pixels',
|
|
277
|
+
anchorYUnits: 'pixels',
|
|
278
|
+
offset: image.getOrigin(),
|
|
279
|
+
opacity: 1,
|
|
280
|
+
size: image.getSize(),
|
|
281
|
+
scale: image.getScale(),
|
|
282
|
+
rotation: image.getRotation(),
|
|
283
|
+
rotateWithView: image.getRotateWithView(),
|
|
284
|
+
}),
|
|
285
|
+
);
|
|
286
|
+
}
|
|
287
|
+
const zIndex = style.getZIndex() || 0;
|
|
288
|
+
let byGeometryType = featuresByZIndex[zIndex];
|
|
289
|
+
if (!byGeometryType) {
|
|
290
|
+
byGeometryType = {};
|
|
291
|
+
featuresByZIndex[zIndex] = byGeometryType;
|
|
292
|
+
byGeometryType['Polygon'] = [];
|
|
293
|
+
byGeometryType['Circle'] = [];
|
|
294
|
+
byGeometryType['LineString'] = [];
|
|
295
|
+
byGeometryType['Point'] = [];
|
|
296
|
+
}
|
|
297
|
+
const type = geometry.getType();
|
|
298
|
+
if (type === 'GeometryCollection') {
|
|
299
|
+
const geometries =
|
|
300
|
+
/** @type {import("../../geom/GeometryCollection.js").default} */ (
|
|
301
|
+
geometry
|
|
302
|
+
).getGeometriesArrayRecursive();
|
|
303
|
+
for (let i = 0, ii = geometries.length; i < ii; ++i) {
|
|
304
|
+
const geometry = geometries[i];
|
|
305
|
+
byGeometryType[geometry.getType().replace('Multi', '')].push(
|
|
306
|
+
geometry,
|
|
307
|
+
style,
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
} else {
|
|
311
|
+
byGeometryType[type.replace('Multi', '')].push(geometry, style);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
const zIndexKeys = Object.keys(featuresByZIndex).map(Number).sort(_array_js__WEBPACK_IMPORTED_MODULE_5__.ascending);
|
|
317
|
+
for (let i = 0, ii = zIndexKeys.length; i < ii; ++i) {
|
|
318
|
+
const byGeometryType = featuresByZIndex[zIndexKeys[i]];
|
|
319
|
+
for (const type in byGeometryType) {
|
|
320
|
+
const geomAndStyle = byGeometryType[type];
|
|
321
|
+
for (let j = 0, jj = geomAndStyle.length; j < jj; j += 2) {
|
|
322
|
+
renderer.setStyle(geomAndStyle[j + 1]);
|
|
323
|
+
for (let k = 0, kk = transforms.length; k < kk; ++k) {
|
|
324
|
+
renderer.setTransform(transforms[k]);
|
|
325
|
+
renderer.drawGeometry(geomAndStyle[j]);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return context.getImageData(0, 0, canvas.width, canvas.height);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* @param {import("../../pixel").Pixel} pixel Pixel coordinate on the hit
|
|
335
|
+
* detection canvas in css pixels.
|
|
336
|
+
* @param {Array<F>} features Features. Has to
|
|
337
|
+
* match the `features` array that was passed to `createHitDetectionImageData()`.
|
|
338
|
+
* @param {ImageData} imageData Hit detection image data generated by
|
|
339
|
+
* `createHitDetectionImageData()`.
|
|
340
|
+
* @return {Array<F>} Features.
|
|
341
|
+
* @template {import("../../Feature.js").FeatureLike} F
|
|
342
|
+
*/
|
|
343
|
+
function hitDetect(pixel, features, imageData) {
|
|
344
|
+
/** @type {Array<F>} */
|
|
345
|
+
const resultFeatures = [];
|
|
346
|
+
if (imageData) {
|
|
347
|
+
const x = Math.floor(Math.round(pixel[0]) * HIT_DETECT_RESOLUTION);
|
|
348
|
+
const y = Math.floor(Math.round(pixel[1]) * HIT_DETECT_RESOLUTION);
|
|
349
|
+
// The pixel coordinate is clamped down to the hit-detect canvas' size to account
|
|
350
|
+
// for browsers returning coordinates slightly larger than the actual canvas size
|
|
351
|
+
// due to a non-integer pixel ratio.
|
|
352
|
+
const index =
|
|
353
|
+
((0,_math_js__WEBPACK_IMPORTED_MODULE_6__.clamp)(x, 0, imageData.width - 1) +
|
|
354
|
+
(0,_math_js__WEBPACK_IMPORTED_MODULE_6__.clamp)(y, 0, imageData.height - 1) * imageData.width) *
|
|
355
|
+
4;
|
|
356
|
+
const r = imageData.data[index];
|
|
357
|
+
const g = imageData.data[index + 1];
|
|
358
|
+
const b = imageData.data[index + 2];
|
|
359
|
+
const i = b + 256 * (g + 256 * r);
|
|
360
|
+
const indexFactor = Math.floor((256 * 256 * 256 - 1) / features.length);
|
|
361
|
+
if (i && i % indexFactor === 0) {
|
|
362
|
+
resultFeatures.push(features[i / indexFactor - 1]);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
return resultFeatures;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
/***/ })
|
|
370
|
+
|
|
371
|
+
}])
|
|
372
|
+
//# sourceMappingURL=node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js.map
|
package/node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js","mappings":";;;;;;;;;;;;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6CAA6C;AAC1D,aAAa,qCAAqC;AAClD,aAAa,UAAU;AACvB,aAAa,UAAU;AACvB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA,aAAa,uCAAuC;AACpD;AACA;;AAEA;AACA;AACA;AACA,aAAa,qCAAqC;AAClD;AACA;;AAEA;AACA,aAAa,qCAAqC;AAClD,aAAa,iCAAiC;AAC9C,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA,aAAa,iCAAiC;AAC9C,aAAa,qCAAqC;AAClD,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA,aAAa,iDAAiD;AAC9D,aAAa,iCAAiC;AAC9C,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA,aAAa,wEAAwE;AACrF,aAAa,qCAAqC;AAClD,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA,aAAa,6EAA6E;AAC1F,aAAa,qCAAqC;AAClD,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA,aAAa,wEAAwE;AACrF,aAAa,qCAAqC;AAClD,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA,aAAa,2CAA2C;AACxD,aAAa,qCAAqC;AAClD,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA,aAAa,mEAAmE;AAChF,aAAa,qCAAqC;AAClD,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA,aAAa,qEAAqE;AAClF,aAAa,qCAAqC;AAClD,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA,aAAa,4EAA4E;AACzF,aAAa,qCAAqC;AAClD,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA,aAAa,oCAAoC;AACjD,aAAa,sCAAsC;AACnD;AACA;;AAEA;AACA,aAAa,qCAAqC;AAClD,aAAa,sDAAsD;AACnE;AACA;;AAEA;AACA,aAAa,oCAAoC;AACjD,aAAa,sDAAsD;AACnE;AACA;AACA;;AAEA,iEAAe,aAAa,EAAC;;;;;;;;;;;;;;;;;;;;;;;;AC7H7B;AACA;AACA;;AAEyC;AACU;AACR;AACP;AAKb;AACa;AACiB;;AAE9C;;AAEP;AACA,WAAW,8BAA8B;AACzC,WAAW,+CAA+C;AAC1D;AACA;AACA,WAAW,+CAA+C;AAC1D;AACA,WAAW,wDAAwD;AACnE;AACA,WAAW,kCAAkC;AAC7C,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,4CAA4C;AACvD,YAAY,WAAW;AACvB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sDAAY;AAC9C;AACA;AACA,kBAAkB,8DAAqB;AACvC;AACA;AACA,uBAAuB,qDAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAA2B,CAAC,2DAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA,wBAAwB,sDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,8DAAqB;AAChD;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA;AACA,cAAc,iDAAI;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAoD;AACzE;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA,oEAAoE,gDAAS;AAC7E,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,6BAA6B;AACxC;AACA,WAAW,UAAU;AACrB;AACA,WAAW,WAAW;AACtB;AACA,YAAY,UAAU;AACtB,cAAc,wCAAwC;AACtD;AACO;AACP,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,+CAAK;AACZ,QAAQ,+CAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://@vaadin/bundles/./node_modules/ol/render/VectorContext.js","webpack://@vaadin/bundles/./node_modules/ol/render/canvas/hitdetect.js"],"sourcesContent":["/**\n * @module ol/render/VectorContext\n */\n\n/**\n * @classdesc\n * Context for drawing geometries. A vector context is available on render\n * events and does not need to be constructed directly.\n * @api\n */\nclass VectorContext {\n /**\n * Render a geometry with a custom renderer.\n *\n * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {Function} renderer Renderer.\n * @param {Function} hitDetectionRenderer Renderer.\n * @param {number} [index] Render order index.\n */\n drawCustom(geometry, feature, renderer, hitDetectionRenderer, index) {}\n\n /**\n * Render a geometry.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry The geometry to render.\n */\n drawGeometry(geometry) {}\n\n /**\n * Set the rendering style.\n *\n * @param {import(\"../style/Style.js\").default} style The rendering style.\n */\n setStyle(style) {}\n\n /**\n * @param {import(\"../geom/Circle.js\").default} circleGeometry Circle geometry.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {number} [index] Render order index.\n */\n drawCircle(circleGeometry, feature, index) {}\n\n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {number} [index] Render order index.\n */\n drawFeature(feature, style, index) {}\n\n /**\n * @param {import(\"../geom/GeometryCollection.js\").default} geometryCollectionGeometry Geometry collection.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {number} [index] Render order index.\n */\n drawGeometryCollection(geometryCollectionGeometry, feature, index) {}\n\n /**\n * @param {import(\"../geom/LineString.js\").default|import(\"./Feature.js\").default} lineStringGeometry Line string geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\n drawLineString(lineStringGeometry, feature, index) {}\n\n /**\n * @param {import(\"../geom/MultiLineString.js\").default|import(\"./Feature.js\").default} multiLineStringGeometry MultiLineString geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\n drawMultiLineString(multiLineStringGeometry, feature, index) {}\n\n /**\n * @param {import(\"../geom/MultiPoint.js\").default|import(\"./Feature.js\").default} multiPointGeometry MultiPoint geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\n drawMultiPoint(multiPointGeometry, feature, index) {}\n\n /**\n * @param {import(\"../geom/MultiPolygon.js\").default} multiPolygonGeometry MultiPolygon geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\n drawMultiPolygon(multiPolygonGeometry, feature, index) {}\n\n /**\n * @param {import(\"../geom/Point.js\").default|import(\"./Feature.js\").default} pointGeometry Point geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\n drawPoint(pointGeometry, feature, index) {}\n\n /**\n * @param {import(\"../geom/Polygon.js\").default|import(\"./Feature.js\").default} polygonGeometry Polygon geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\n drawPolygon(polygonGeometry, feature, index) {}\n\n /**\n * @param {import(\"../geom/SimpleGeometry.js\").default|import(\"./Feature.js\").default} geometry Geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\n drawText(geometry, feature, index) {}\n\n /**\n * @param {import(\"../style/Fill.js\").default} fillStyle Fill style.\n * @param {import(\"../style/Stroke.js\").default} strokeStyle Stroke style.\n */\n setFillStrokeStyle(fillStyle, strokeStyle) {}\n\n /**\n * @param {import(\"../style/Image.js\").default} imageStyle Image style.\n * @param {import(\"../render/canvas.js\").DeclutterImageWithText} [declutterImageWithText] Shared data for combined decluttering with a text style.\n */\n setImageStyle(imageStyle, declutterImageWithText) {}\n\n /**\n * @param {import(\"../style/Text.js\").default} textStyle Text style.\n * @param {import(\"../render/canvas.js\").DeclutterImageWithText} [declutterImageWithText] Shared data for combined decluttering with an image style.\n */\n setTextStyle(textStyle, declutterImageWithText) {}\n}\n\nexport default VectorContext;\n","/**\n * @module ol/render/canvas/hitdetect\n */\n\nimport {ascending} from '../../array.js';\nimport {createCanvasContext2D} from '../../dom.js';\nimport {intersects} from '../../extent.js';\nimport {clamp} from '../../math.js';\nimport {\n getTransformFromProjections,\n getUserProjection,\n toUserExtent,\n} from '../../proj.js';\nimport {Icon} from '../../style.js';\nimport CanvasImmediateRenderer from './Immediate.js';\n\nexport const HIT_DETECT_RESOLUTION = 0.5;\n\n/**\n * @param {import(\"../../size.js\").Size} size Canvas size in css pixels.\n * @param {Array<import(\"../../transform.js\").Transform>} transforms Transforms\n * for rendering features to all worlds of the viewport, from coordinates to css\n * pixels.\n * @param {Array<import(\"../../Feature.js\").FeatureLike>} features\n * Features to consider for hit detection.\n * @param {import(\"../../style/Style.js\").StyleFunction|undefined} styleFunction\n * Layer style function.\n * @param {import(\"../../extent.js\").Extent} extent Extent in render projection.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {number} [squaredTolerance] Squared tolerance.\n * @param {import(\"../../proj/Projection.js\").default} [projection] Render projection.\n * @return {ImageData} Hit detection image data.\n */\nexport function createHitDetectionImageData(\n size,\n transforms,\n features,\n styleFunction,\n extent,\n resolution,\n rotation,\n squaredTolerance,\n projection,\n) {\n const userExtent = projection ? toUserExtent(extent, projection) : extent;\n const width = size[0] * HIT_DETECT_RESOLUTION;\n const height = size[1] * HIT_DETECT_RESOLUTION;\n const context = createCanvasContext2D(width, height);\n context.imageSmoothingEnabled = false;\n const canvas = context.canvas;\n const renderer = new CanvasImmediateRenderer(\n context,\n HIT_DETECT_RESOLUTION,\n extent,\n null,\n rotation,\n squaredTolerance,\n projection\n ? getTransformFromProjections(getUserProjection(), projection)\n : null,\n );\n const featureCount = features.length;\n // Stretch hit detection index to use the whole available color range\n const indexFactor = Math.floor((256 * 256 * 256 - 1) / featureCount);\n const featuresByZIndex = {};\n for (let i = 1; i <= featureCount; ++i) {\n const feature = features[i - 1];\n const featureStyleFunction = feature.getStyleFunction() || styleFunction;\n if (!featureStyleFunction) {\n continue;\n }\n let styles = featureStyleFunction(feature, resolution);\n if (!styles) {\n continue;\n }\n if (!Array.isArray(styles)) {\n styles = [styles];\n }\n const index = i * indexFactor;\n const color = index.toString(16).padStart(7, '#00000');\n for (let j = 0, jj = styles.length; j < jj; ++j) {\n const originalStyle = styles[j];\n const geometry = originalStyle.getGeometryFunction()(feature);\n if (!geometry || !intersects(userExtent, geometry.getExtent())) {\n continue;\n }\n const style = originalStyle.clone();\n const fill = style.getFill();\n if (fill) {\n fill.setColor(color);\n }\n const stroke = style.getStroke();\n if (stroke) {\n stroke.setColor(color);\n stroke.setLineDash(null);\n }\n style.setText(undefined);\n const image = originalStyle.getImage();\n if (image) {\n const imgSize = image.getImageSize();\n if (!imgSize) {\n continue;\n }\n\n const imgContext = createCanvasContext2D(\n imgSize[0],\n imgSize[1],\n undefined,\n {alpha: false},\n );\n const img = imgContext.canvas;\n imgContext.fillStyle = color;\n imgContext.fillRect(0, 0, img.width, img.height);\n style.setImage(\n new Icon({\n img: img,\n anchor: image.getAnchor(),\n anchorXUnits: 'pixels',\n anchorYUnits: 'pixels',\n offset: image.getOrigin(),\n opacity: 1,\n size: image.getSize(),\n scale: image.getScale(),\n rotation: image.getRotation(),\n rotateWithView: image.getRotateWithView(),\n }),\n );\n }\n const zIndex = style.getZIndex() || 0;\n let byGeometryType = featuresByZIndex[zIndex];\n if (!byGeometryType) {\n byGeometryType = {};\n featuresByZIndex[zIndex] = byGeometryType;\n byGeometryType['Polygon'] = [];\n byGeometryType['Circle'] = [];\n byGeometryType['LineString'] = [];\n byGeometryType['Point'] = [];\n }\n const type = geometry.getType();\n if (type === 'GeometryCollection') {\n const geometries =\n /** @type {import(\"../../geom/GeometryCollection.js\").default} */ (\n geometry\n ).getGeometriesArrayRecursive();\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n const geometry = geometries[i];\n byGeometryType[geometry.getType().replace('Multi', '')].push(\n geometry,\n style,\n );\n }\n } else {\n byGeometryType[type.replace('Multi', '')].push(geometry, style);\n }\n }\n }\n\n const zIndexKeys = Object.keys(featuresByZIndex).map(Number).sort(ascending);\n for (let i = 0, ii = zIndexKeys.length; i < ii; ++i) {\n const byGeometryType = featuresByZIndex[zIndexKeys[i]];\n for (const type in byGeometryType) {\n const geomAndStyle = byGeometryType[type];\n for (let j = 0, jj = geomAndStyle.length; j < jj; j += 2) {\n renderer.setStyle(geomAndStyle[j + 1]);\n for (let k = 0, kk = transforms.length; k < kk; ++k) {\n renderer.setTransform(transforms[k]);\n renderer.drawGeometry(geomAndStyle[j]);\n }\n }\n }\n }\n return context.getImageData(0, 0, canvas.width, canvas.height);\n}\n\n/**\n * @param {import(\"../../pixel\").Pixel} pixel Pixel coordinate on the hit\n * detection canvas in css pixels.\n * @param {Array<F>} features Features. Has to\n * match the `features` array that was passed to `createHitDetectionImageData()`.\n * @param {ImageData} imageData Hit detection image data generated by\n * `createHitDetectionImageData()`.\n * @return {Array<F>} Features.\n * @template {import(\"../../Feature.js\").FeatureLike} F\n */\nexport function hitDetect(pixel, features, imageData) {\n /** @type {Array<F>} */\n const resultFeatures = [];\n if (imageData) {\n const x = Math.floor(Math.round(pixel[0]) * HIT_DETECT_RESOLUTION);\n const y = Math.floor(Math.round(pixel[1]) * HIT_DETECT_RESOLUTION);\n // The pixel coordinate is clamped down to the hit-detect canvas' size to account\n // for browsers returning coordinates slightly larger than the actual canvas size\n // due to a non-integer pixel ratio.\n const index =\n (clamp(x, 0, imageData.width - 1) +\n clamp(y, 0, imageData.height - 1) * imageData.width) *\n 4;\n const r = imageData.data[index];\n const g = imageData.data[index + 1];\n const b = imageData.data[index + 2];\n const i = b + 256 * (g + 256 * r);\n const indexFactor = Math.floor((256 * 256 * 256 - 1) / features.length);\n if (i && i % indexFactor === 0) {\n resultFeatures.push(features[i / indexFactor - 1]);\n }\n }\n return resultFeatures;\n}\n"],"names":[],"sourceRoot":""}
|