@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,606 @@
1
+ (self["webpackChunk_vaadin_bundles"] = self["webpackChunk_vaadin_bundles"] || []).push([["vendors-node_modules_ol_Overlay_js"],{
2
+
3
+ /***/ "./node_modules/ol/Overlay.js":
4
+ /*!************************************!*\
5
+ !*** ./node_modules/ol/Overlay.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
+ /* harmony import */ var _MapEventType_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./MapEventType.js */ "./node_modules/ol/MapEventType.js");
14
+ /* harmony import */ var _Object_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Object.js */ "./node_modules/ol/Object.js");
15
+ /* harmony import */ var _css_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./css.js */ "./node_modules/ol/css.js");
16
+ /* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dom.js */ "./node_modules/ol/dom.js");
17
+ /* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./events.js */ "./node_modules/ol/events.js");
18
+ /* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./extent.js */ "./node_modules/ol/extent.js");
19
+ /**
20
+ * @module ol/Overlay
21
+ */
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+ /**
30
+ * @typedef {'bottom-left' | 'bottom-center' | 'bottom-right' | 'center-left' | 'center-center' | 'center-right' | 'top-left' | 'top-center' | 'top-right'} Positioning
31
+ * The overlay position: `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,
32
+ * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,
33
+ * `'top-center'`, or `'top-right'`.
34
+ */
35
+
36
+ /**
37
+ * @typedef {Object} Options
38
+ * @property {number|string} [id] Set the overlay id. The overlay id can be used
39
+ * with the {@link module:ol/Map~Map#getOverlayById} method.
40
+ * @property {HTMLElement} [element] The overlay element.
41
+ * @property {Array<number>} [offset=[0, 0]] Offsets in pixels used when positioning
42
+ * the overlay. The first element in the
43
+ * array is the horizontal offset. A positive value shifts the overlay right.
44
+ * The second element in the array is the vertical offset. A positive value
45
+ * shifts the overlay down.
46
+ * @property {import("./coordinate.js").Coordinate} [position] The overlay position
47
+ * in map projection.
48
+ * @property {Positioning} [positioning='top-left'] Defines how
49
+ * the overlay is actually positioned with respect to its `position` property.
50
+ * Possible values are `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,
51
+ * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,
52
+ * `'top-center'`, and `'top-right'`.
53
+ * @property {boolean} [stopEvent=true] Whether event propagation to the map
54
+ * viewport should be stopped. If `true` the overlay is placed in the same
55
+ * container as that of the controls (CSS class name
56
+ * `ol-overlaycontainer-stopevent`); if `false` it is placed in the container
57
+ * with CSS class name specified by the `className` property.
58
+ * @property {boolean} [insertFirst=true] Whether the overlay is inserted first
59
+ * in the overlay container, or appended. If the overlay is placed in the same
60
+ * container as that of the controls (see the `stopEvent` option) you will
61
+ * probably set `insertFirst` to `true` so the overlay is displayed below the
62
+ * controls.
63
+ * @property {PanIntoViewOptions|boolean} [autoPan=false] Pan the map when calling
64
+ * `setPosition`, so that the overlay is entirely visible in the current viewport.
65
+ * @property {string} [className='ol-overlay-container ol-selectable'] CSS class
66
+ * name.
67
+ */
68
+
69
+ /**
70
+ * @typedef {Object} PanOptions
71
+ * @property {number} [duration=1000] The duration of the animation in
72
+ * milliseconds.
73
+ * @property {function(number):number} [easing] The easing function to use. Can
74
+ * be one from {@link module:ol/easing} or a custom function.
75
+ * Default is {@link module:ol/easing.inAndOut}.
76
+ */
77
+
78
+ /**
79
+ * @typedef {Object} PanIntoViewOptions
80
+ * @property {PanOptions} [animation={}] The animation parameters for the pan
81
+ * @property {number} [margin=20] The margin (in pixels) between the
82
+ * overlay and the borders of the map when panning into view.
83
+ */
84
+
85
+ /**
86
+ * @enum {string}
87
+ * @protected
88
+ */
89
+ const Property = {
90
+ ELEMENT: 'element',
91
+ MAP: 'map',
92
+ OFFSET: 'offset',
93
+ POSITION: 'position',
94
+ POSITIONING: 'positioning',
95
+ };
96
+
97
+ /**
98
+ * @typedef {import("./ObjectEventType").Types|'change:element'|'change:map'|'change:offset'|'change:position'|
99
+ * 'change:positioning'} OverlayObjectEventTypes
100
+ */
101
+
102
+ /***
103
+ * @template Return
104
+ * @typedef {import("./Observable").OnSignature<import("./Observable").EventTypes, import("./events/Event.js").default, Return> &
105
+ * import("./Observable").OnSignature<OverlayObjectEventTypes, import("./Object").ObjectEvent, Return> &
106
+ * import("./Observable").CombinedOnSignature<import("./Observable").EventTypes|OverlayObjectEventTypes, Return>} OverlayOnSignature
107
+ */
108
+
109
+ /**
110
+ * @classdesc
111
+ * An element to be displayed over the map and attached to a single map
112
+ * location. Like {@link module:ol/control/Control~Control}, Overlays are
113
+ * visible widgets. Unlike Controls, they are not in a fixed position on the
114
+ * screen, but are tied to a geographical coordinate, so panning the map will
115
+ * move an Overlay but not a Control.
116
+ *
117
+ * Example:
118
+ *
119
+ * import Overlay from 'ol/Overlay.js';
120
+ *
121
+ * // ...
122
+ * const popup = new Overlay({
123
+ * element: document.getElementById('popup'),
124
+ * });
125
+ * popup.setPosition(coordinate);
126
+ * map.addOverlay(popup);
127
+ *
128
+ * @api
129
+ */
130
+ class Overlay extends _Object_js__WEBPACK_IMPORTED_MODULE_0__["default"] {
131
+ /**
132
+ * @param {Options} options Overlay options.
133
+ */
134
+ constructor(options) {
135
+ super();
136
+
137
+ /***
138
+ * @type {OverlayOnSignature<import("./events").EventsKey>}
139
+ */
140
+ this.on;
141
+
142
+ /***
143
+ * @type {OverlayOnSignature<import("./events").EventsKey>}
144
+ */
145
+ this.once;
146
+
147
+ /***
148
+ * @type {OverlayOnSignature<void>}
149
+ */
150
+ this.un;
151
+
152
+ /**
153
+ * @protected
154
+ * @type {Options}
155
+ */
156
+ this.options = options;
157
+
158
+ /**
159
+ * @protected
160
+ * @type {number|string|undefined}
161
+ */
162
+ this.id = options.id;
163
+
164
+ /**
165
+ * @protected
166
+ * @type {boolean}
167
+ */
168
+ this.insertFirst =
169
+ options.insertFirst !== undefined ? options.insertFirst : true;
170
+
171
+ /**
172
+ * @protected
173
+ * @type {boolean}
174
+ */
175
+ this.stopEvent = options.stopEvent !== undefined ? options.stopEvent : true;
176
+
177
+ /**
178
+ * @protected
179
+ * @type {HTMLElement}
180
+ */
181
+ this.element = document.createElement('div');
182
+ this.element.className =
183
+ options.className !== undefined
184
+ ? options.className
185
+ : 'ol-overlay-container ' + _css_js__WEBPACK_IMPORTED_MODULE_1__.CLASS_SELECTABLE;
186
+ this.element.style.position = 'absolute';
187
+ this.element.style.pointerEvents = 'auto';
188
+
189
+ /**
190
+ * @protected
191
+ * @type {PanIntoViewOptions|undefined}
192
+ */
193
+ this.autoPan = options.autoPan === true ? {} : options.autoPan || undefined;
194
+
195
+ /**
196
+ * @protected
197
+ * @type {{transform_: string,
198
+ * visible: boolean}}
199
+ */
200
+ this.rendered = {
201
+ transform_: '',
202
+ visible: true,
203
+ };
204
+
205
+ /**
206
+ * @protected
207
+ * @type {?import("./events.js").EventsKey}
208
+ */
209
+ this.mapPostrenderListenerKey = null;
210
+
211
+ this.addChangeListener(Property.ELEMENT, this.handleElementChanged);
212
+ this.addChangeListener(Property.MAP, this.handleMapChanged);
213
+ this.addChangeListener(Property.OFFSET, this.handleOffsetChanged);
214
+ this.addChangeListener(Property.POSITION, this.handlePositionChanged);
215
+ this.addChangeListener(Property.POSITIONING, this.handlePositioningChanged);
216
+
217
+ if (options.element !== undefined) {
218
+ this.setElement(options.element);
219
+ }
220
+
221
+ this.setOffset(options.offset !== undefined ? options.offset : [0, 0]);
222
+
223
+ this.setPositioning(options.positioning || 'top-left');
224
+
225
+ if (options.position !== undefined) {
226
+ this.setPosition(options.position);
227
+ }
228
+ }
229
+
230
+ /**
231
+ * Get the DOM element of this overlay.
232
+ * @return {HTMLElement|undefined} The Element containing the overlay.
233
+ * @observable
234
+ * @api
235
+ */
236
+ getElement() {
237
+ return /** @type {HTMLElement|undefined} */ (this.get(Property.ELEMENT));
238
+ }
239
+
240
+ /**
241
+ * Get the overlay identifier which is set on constructor.
242
+ * @return {number|string|undefined} Id.
243
+ * @api
244
+ */
245
+ getId() {
246
+ return this.id;
247
+ }
248
+
249
+ /**
250
+ * Get the map associated with this overlay.
251
+ * @return {import("./Map.js").default|null} The map that the
252
+ * overlay is part of.
253
+ * @observable
254
+ * @api
255
+ */
256
+ getMap() {
257
+ return /** @type {import("./Map.js").default|null} */ (
258
+ this.get(Property.MAP) || null
259
+ );
260
+ }
261
+
262
+ /**
263
+ * Get the offset of this overlay.
264
+ * @return {Array<number>} The offset.
265
+ * @observable
266
+ * @api
267
+ */
268
+ getOffset() {
269
+ return /** @type {Array<number>} */ (this.get(Property.OFFSET));
270
+ }
271
+
272
+ /**
273
+ * Get the current position of this overlay.
274
+ * @return {import("./coordinate.js").Coordinate|undefined} The spatial point that the overlay is
275
+ * anchored at.
276
+ * @observable
277
+ * @api
278
+ */
279
+ getPosition() {
280
+ return /** @type {import("./coordinate.js").Coordinate|undefined} */ (
281
+ this.get(Property.POSITION)
282
+ );
283
+ }
284
+
285
+ /**
286
+ * Get the current positioning of this overlay.
287
+ * @return {Positioning} How the overlay is positioned
288
+ * relative to its point on the map.
289
+ * @observable
290
+ * @api
291
+ */
292
+ getPositioning() {
293
+ return /** @type {Positioning} */ (this.get(Property.POSITIONING));
294
+ }
295
+
296
+ /**
297
+ * @protected
298
+ */
299
+ handleElementChanged() {
300
+ (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.removeChildren)(this.element);
301
+ const element = this.getElement();
302
+ if (element) {
303
+ this.element.appendChild(element);
304
+ }
305
+ }
306
+
307
+ /**
308
+ * @protected
309
+ */
310
+ handleMapChanged() {
311
+ if (this.mapPostrenderListenerKey) {
312
+ this.element?.remove();
313
+ (0,_events_js__WEBPACK_IMPORTED_MODULE_3__.unlistenByKey)(this.mapPostrenderListenerKey);
314
+ this.mapPostrenderListenerKey = null;
315
+ }
316
+ const map = this.getMap();
317
+ if (map) {
318
+ this.mapPostrenderListenerKey = (0,_events_js__WEBPACK_IMPORTED_MODULE_3__.listen)(
319
+ map,
320
+ _MapEventType_js__WEBPACK_IMPORTED_MODULE_4__["default"].POSTRENDER,
321
+ this.render,
322
+ this,
323
+ );
324
+ this.updatePixelPosition();
325
+ const container = this.stopEvent
326
+ ? map.getOverlayContainerStopEvent()
327
+ : map.getOverlayContainer();
328
+ if (this.insertFirst) {
329
+ container.insertBefore(this.element, container.childNodes[0] || null);
330
+ } else {
331
+ container.appendChild(this.element);
332
+ }
333
+ this.performAutoPan();
334
+ }
335
+ }
336
+
337
+ /**
338
+ * @protected
339
+ */
340
+ render() {
341
+ this.updatePixelPosition();
342
+ }
343
+
344
+ /**
345
+ * @protected
346
+ */
347
+ handleOffsetChanged() {
348
+ this.updatePixelPosition();
349
+ }
350
+
351
+ /**
352
+ * @protected
353
+ */
354
+ handlePositionChanged() {
355
+ this.updatePixelPosition();
356
+ this.performAutoPan();
357
+ }
358
+
359
+ /**
360
+ * @protected
361
+ */
362
+ handlePositioningChanged() {
363
+ this.updatePixelPosition();
364
+ }
365
+
366
+ /**
367
+ * Set the DOM element to be associated with this overlay.
368
+ * @param {HTMLElement|undefined} element The Element containing the overlay.
369
+ * @observable
370
+ * @api
371
+ */
372
+ setElement(element) {
373
+ this.set(Property.ELEMENT, element);
374
+ }
375
+
376
+ /**
377
+ * Set the map to be associated with this overlay.
378
+ * @param {import("./Map.js").default|null} map The map that the
379
+ * overlay is part of. Pass `null` to just remove the overlay from the current map.
380
+ * @observable
381
+ * @api
382
+ */
383
+ setMap(map) {
384
+ this.set(Property.MAP, map);
385
+ }
386
+
387
+ /**
388
+ * Set the offset for this overlay.
389
+ * @param {Array<number>} offset Offset.
390
+ * @observable
391
+ * @api
392
+ */
393
+ setOffset(offset) {
394
+ this.set(Property.OFFSET, offset);
395
+ }
396
+
397
+ /**
398
+ * Set the position for this overlay. If the position is `undefined` the
399
+ * overlay is hidden.
400
+ * @param {import("./coordinate.js").Coordinate|undefined} position The spatial point that the overlay
401
+ * is anchored at.
402
+ * @observable
403
+ * @api
404
+ */
405
+ setPosition(position) {
406
+ this.set(Property.POSITION, position);
407
+ }
408
+
409
+ /**
410
+ * Pan the map so that the overlay is entirely visible in the current viewport
411
+ * (if necessary) using the configured autoPan parameters
412
+ * @protected
413
+ */
414
+ performAutoPan() {
415
+ if (this.autoPan) {
416
+ this.panIntoView(this.autoPan);
417
+ }
418
+ }
419
+
420
+ /**
421
+ * Pan the map so that the overlay is entirely visible in the current viewport
422
+ * (if necessary).
423
+ * @param {PanIntoViewOptions} [panIntoViewOptions] Options for the pan action
424
+ * @api
425
+ */
426
+ panIntoView(panIntoViewOptions) {
427
+ const map = this.getMap();
428
+
429
+ if (!map || !map.getTargetElement() || !this.get(Property.POSITION)) {
430
+ return;
431
+ }
432
+
433
+ const mapRect = this.getRect(map.getTargetElement(), map.getSize());
434
+ const element = this.getElement();
435
+ const overlayRect = this.getRect(element, [
436
+ (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.outerWidth)(element),
437
+ (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.outerHeight)(element),
438
+ ]);
439
+
440
+ panIntoViewOptions = panIntoViewOptions || {};
441
+
442
+ const myMargin =
443
+ panIntoViewOptions.margin === undefined ? 20 : panIntoViewOptions.margin;
444
+ if (!(0,_extent_js__WEBPACK_IMPORTED_MODULE_5__.containsExtent)(mapRect, overlayRect)) {
445
+ // the overlay is not completely inside the viewport, so pan the map
446
+ const offsetLeft = overlayRect[0] - mapRect[0];
447
+ const offsetRight = mapRect[2] - overlayRect[2];
448
+ const offsetTop = overlayRect[1] - mapRect[1];
449
+ const offsetBottom = mapRect[3] - overlayRect[3];
450
+
451
+ const delta = [0, 0];
452
+ if (offsetLeft < 0) {
453
+ // move map to the left
454
+ delta[0] = offsetLeft - myMargin;
455
+ } else if (offsetRight < 0) {
456
+ // move map to the right
457
+ delta[0] = Math.abs(offsetRight) + myMargin;
458
+ }
459
+ if (offsetTop < 0) {
460
+ // move map up
461
+ delta[1] = offsetTop - myMargin;
462
+ } else if (offsetBottom < 0) {
463
+ // move map down
464
+ delta[1] = Math.abs(offsetBottom) + myMargin;
465
+ }
466
+
467
+ if (delta[0] !== 0 || delta[1] !== 0) {
468
+ const center = /** @type {import("./coordinate.js").Coordinate} */ (
469
+ map.getView().getCenterInternal()
470
+ );
471
+ const centerPx = map.getPixelFromCoordinateInternal(center);
472
+ if (!centerPx) {
473
+ return;
474
+ }
475
+ const newCenterPx = [centerPx[0] + delta[0], centerPx[1] + delta[1]];
476
+
477
+ const panOptions = panIntoViewOptions.animation || {};
478
+ map.getView().animateInternal({
479
+ center: map.getCoordinateFromPixelInternal(newCenterPx),
480
+ duration: panOptions.duration,
481
+ easing: panOptions.easing,
482
+ });
483
+ }
484
+ }
485
+ }
486
+
487
+ /**
488
+ * Get the extent of an element relative to the document
489
+ * @param {HTMLElement} element The element.
490
+ * @param {import("./size.js").Size} size The size of the element.
491
+ * @return {import("./extent.js").Extent} The extent.
492
+ * @protected
493
+ */
494
+ getRect(element, size) {
495
+ const box = element.getBoundingClientRect();
496
+ const offsetX = box.left + window.pageXOffset;
497
+ const offsetY = box.top + window.pageYOffset;
498
+ return [offsetX, offsetY, offsetX + size[0], offsetY + size[1]];
499
+ }
500
+
501
+ /**
502
+ * Set the positioning for this overlay.
503
+ * @param {Positioning} positioning how the overlay is
504
+ * positioned relative to its point on the map.
505
+ * @observable
506
+ * @api
507
+ */
508
+ setPositioning(positioning) {
509
+ this.set(Property.POSITIONING, positioning);
510
+ }
511
+
512
+ /**
513
+ * Modify the visibility of the element.
514
+ * @param {boolean} visible Element visibility.
515
+ * @protected
516
+ */
517
+ setVisible(visible) {
518
+ if (this.rendered.visible !== visible) {
519
+ this.element.style.display = visible ? '' : 'none';
520
+ this.rendered.visible = visible;
521
+ }
522
+ }
523
+
524
+ /**
525
+ * Update pixel position.
526
+ * @protected
527
+ */
528
+ updatePixelPosition() {
529
+ const map = this.getMap();
530
+ const position = this.getPosition();
531
+ if (!map || !map.isRendered() || !position) {
532
+ this.setVisible(false);
533
+ return;
534
+ }
535
+
536
+ const pixel = map.getPixelFromCoordinate(position);
537
+ const mapSize = map.getSize();
538
+ this.updateRenderedPosition(pixel, mapSize);
539
+ }
540
+
541
+ /**
542
+ * @param {import("./pixel.js").Pixel} pixel The pixel location.
543
+ * @param {import("./size.js").Size|undefined} mapSize The map size.
544
+ * @protected
545
+ */
546
+ updateRenderedPosition(pixel, mapSize) {
547
+ const style = this.element.style;
548
+ const offset = this.getOffset();
549
+
550
+ const positioning = this.getPositioning();
551
+
552
+ this.setVisible(true);
553
+
554
+ const x = `${pixel[0] + offset[0]}px`;
555
+ const y = `${pixel[1] + offset[1]}px`;
556
+ let posX = '0%';
557
+ let posY = '0%';
558
+ if (
559
+ positioning == 'bottom-right' ||
560
+ positioning == 'center-right' ||
561
+ positioning == 'top-right'
562
+ ) {
563
+ posX = '-100%';
564
+ } else if (
565
+ positioning == 'bottom-center' ||
566
+ positioning == 'center-center' ||
567
+ positioning == 'top-center'
568
+ ) {
569
+ posX = '-50%';
570
+ }
571
+ if (
572
+ positioning == 'bottom-left' ||
573
+ positioning == 'bottom-center' ||
574
+ positioning == 'bottom-right'
575
+ ) {
576
+ posY = '-100%';
577
+ } else if (
578
+ positioning == 'center-left' ||
579
+ positioning == 'center-center' ||
580
+ positioning == 'center-right'
581
+ ) {
582
+ posY = '-50%';
583
+ }
584
+ const transform = `translate(${posX}, ${posY}) translate(${x}, ${y})`;
585
+ if (this.rendered.transform_ != transform) {
586
+ this.rendered.transform_ = transform;
587
+ style.transform = transform;
588
+ }
589
+ }
590
+
591
+ /**
592
+ * returns the options this Overlay has been created with
593
+ * @return {Options} overlay options
594
+ */
595
+ getOptions() {
596
+ return this.options;
597
+ }
598
+ }
599
+
600
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Overlay);
601
+
602
+
603
+ /***/ })
604
+
605
+ }])
606
+ //# sourceMappingURL=vendors-node_modules_ol_Overlay_js.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendors-node_modules_ol_Overlay_js.js","mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAC6C;AACR;AACK;AACuB;AACf;AACP;;AAE3C;AACA,aAAa,+IAA+I;AAC5J;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,cAAc,eAAe;AAC7B,aAAa,wCAAwC;AACrD,cAAc,aAAa;AAC3B,cAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA,cAAc,sCAAsC;AACpD;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA,qCAAqC;AACrC;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA,cAAc,4BAA4B;AAC1C;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA,cAAc,yBAAyB;AACvC,gBAAgB,wBAAwB;AACxC,eAAe,gCAAgC;AAC/C;;AAEA;AACA,aAAa,QAAQ;AACrB,cAAc,YAAY,aAAa;AACvC,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,2BAA2B;AAC3B;;AAEA;AACA;AACA,aAAa;AACb;AACA,oHAAoH;AACpH;;AAEA;AACA;AACA;AACA,oBAAoB,wCAAwC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,sBAAsB,kDAAU;AAChC;AACA,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,oCAAoC,qDAAgB;AACpD;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,iDAAiD;;AAEjD;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,uBAAuB;AACrC;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB;AAC7C;;AAEA;AACA;AACA,cAAc,yBAAyB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,iCAAiC;AAC/C;AACA;AACA;AACA;AACA;AACA,sBAAsB,iCAAiC;AACvD;AACA;AACA;;AAEA;AACA;AACA,cAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;;AAEA;AACA;AACA,cAAc,gDAAgD;AAC9D;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAgD;AACtE;AACA;AACA;;AAEA;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA,sBAAsB,aAAa;AACnC;;AAEA;AACA;AACA;AACA;AACA,IAAI,uDAAc;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yDAAa;AACnB;AACA;AACA;AACA;AACA,sCAAsC,kDAAM;AAC5C;AACA,QAAQ,mEAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iCAAiC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,gDAAgD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,mDAAU;AAChB,MAAM,oDAAW;AACjB;;AAEA;;AAEA;AACA;AACA,SAAS,0DAAc;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA,kCAAkC,sCAAsC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,0BAA0B;AACvC,cAAc,8BAA8B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,4BAA4B;AACzC,aAAa,oCAAoC;AACjD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,iBAAiB,qBAAqB;AACtC,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,KAAK,IAAI,KAAK,cAAc,EAAE,IAAI,EAAE;AACvE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;;AAEA,iEAAe,OAAO,EAAC","sources":["webpack://@vaadin/bundles/./node_modules/ol/Overlay.js"],"sourcesContent":["/**\n * @module ol/Overlay\n */\nimport MapEventType from './MapEventType.js';\nimport BaseObject from './Object.js';\nimport {CLASS_SELECTABLE} from './css.js';\nimport {outerHeight, outerWidth, removeChildren} from './dom.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {containsExtent} from './extent.js';\n\n/**\n * @typedef {'bottom-left' | 'bottom-center' | 'bottom-right' | 'center-left' | 'center-center' | 'center-right' | 'top-left' | 'top-center' | 'top-right'} Positioning\n * The overlay position: `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, or `'top-right'`.\n */\n\n/**\n * @typedef {Object} Options\n * @property {number|string} [id] Set the overlay id. The overlay id can be used\n * with the {@link module:ol/Map~Map#getOverlayById} method.\n * @property {HTMLElement} [element] The overlay element.\n * @property {Array<number>} [offset=[0, 0]] Offsets in pixels used when positioning\n * the overlay. The first element in the\n * array is the horizontal offset. A positive value shifts the overlay right.\n * The second element in the array is the vertical offset. A positive value\n * shifts the overlay down.\n * @property {import(\"./coordinate.js\").Coordinate} [position] The overlay position\n * in map projection.\n * @property {Positioning} [positioning='top-left'] Defines how\n * the overlay is actually positioned with respect to its `position` property.\n * Possible values are `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, and `'top-right'`.\n * @property {boolean} [stopEvent=true] Whether event propagation to the map\n * viewport should be stopped. If `true` the overlay is placed in the same\n * container as that of the controls (CSS class name\n * `ol-overlaycontainer-stopevent`); if `false` it is placed in the container\n * with CSS class name specified by the `className` property.\n * @property {boolean} [insertFirst=true] Whether the overlay is inserted first\n * in the overlay container, or appended. If the overlay is placed in the same\n * container as that of the controls (see the `stopEvent` option) you will\n * probably set `insertFirst` to `true` so the overlay is displayed below the\n * controls.\n * @property {PanIntoViewOptions|boolean} [autoPan=false] Pan the map when calling\n * `setPosition`, so that the overlay is entirely visible in the current viewport.\n * @property {string} [className='ol-overlay-container ol-selectable'] CSS class\n * name.\n */\n\n/**\n * @typedef {Object} PanOptions\n * @property {number} [duration=1000] The duration of the animation in\n * milliseconds.\n * @property {function(number):number} [easing] The easing function to use. Can\n * be one from {@link module:ol/easing} or a custom function.\n * Default is {@link module:ol/easing.inAndOut}.\n */\n\n/**\n * @typedef {Object} PanIntoViewOptions\n * @property {PanOptions} [animation={}] The animation parameters for the pan\n * @property {number} [margin=20] The margin (in pixels) between the\n * overlay and the borders of the map when panning into view.\n */\n\n/**\n * @enum {string}\n * @protected\n */\nconst Property = {\n ELEMENT: 'element',\n MAP: 'map',\n OFFSET: 'offset',\n POSITION: 'position',\n POSITIONING: 'positioning',\n};\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:element'|'change:map'|'change:offset'|'change:position'|\n * 'change:positioning'} OverlayObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n * import(\"./Observable\").OnSignature<OverlayObjectEventTypes, import(\"./Object\").ObjectEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|OverlayObjectEventTypes, Return>} OverlayOnSignature\n */\n\n/**\n * @classdesc\n * An element to be displayed over the map and attached to a single map\n * location. Like {@link module:ol/control/Control~Control}, Overlays are\n * visible widgets. Unlike Controls, they are not in a fixed position on the\n * screen, but are tied to a geographical coordinate, so panning the map will\n * move an Overlay but not a Control.\n *\n * Example:\n *\n * import Overlay from 'ol/Overlay.js';\n *\n * // ...\n * const popup = new Overlay({\n * element: document.getElementById('popup'),\n * });\n * popup.setPosition(coordinate);\n * map.addOverlay(popup);\n *\n * @api\n */\nclass Overlay extends BaseObject {\n /**\n * @param {Options} options Overlay options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {OverlayOnSignature<import(\"./events\").EventsKey>}\n */\n this.on;\n\n /***\n * @type {OverlayOnSignature<import(\"./events\").EventsKey>}\n */\n this.once;\n\n /***\n * @type {OverlayOnSignature<void>}\n */\n this.un;\n\n /**\n * @protected\n * @type {Options}\n */\n this.options = options;\n\n /**\n * @protected\n * @type {number|string|undefined}\n */\n this.id = options.id;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.insertFirst =\n options.insertFirst !== undefined ? options.insertFirst : true;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.stopEvent = options.stopEvent !== undefined ? options.stopEvent : true;\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = document.createElement('div');\n this.element.className =\n options.className !== undefined\n ? options.className\n : 'ol-overlay-container ' + CLASS_SELECTABLE;\n this.element.style.position = 'absolute';\n this.element.style.pointerEvents = 'auto';\n\n /**\n * @protected\n * @type {PanIntoViewOptions|undefined}\n */\n this.autoPan = options.autoPan === true ? {} : options.autoPan || undefined;\n\n /**\n * @protected\n * @type {{transform_: string,\n * visible: boolean}}\n */\n this.rendered = {\n transform_: '',\n visible: true,\n };\n\n /**\n * @protected\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.mapPostrenderListenerKey = null;\n\n this.addChangeListener(Property.ELEMENT, this.handleElementChanged);\n this.addChangeListener(Property.MAP, this.handleMapChanged);\n this.addChangeListener(Property.OFFSET, this.handleOffsetChanged);\n this.addChangeListener(Property.POSITION, this.handlePositionChanged);\n this.addChangeListener(Property.POSITIONING, this.handlePositioningChanged);\n\n if (options.element !== undefined) {\n this.setElement(options.element);\n }\n\n this.setOffset(options.offset !== undefined ? options.offset : [0, 0]);\n\n this.setPositioning(options.positioning || 'top-left');\n\n if (options.position !== undefined) {\n this.setPosition(options.position);\n }\n }\n\n /**\n * Get the DOM element of this overlay.\n * @return {HTMLElement|undefined} The Element containing the overlay.\n * @observable\n * @api\n */\n getElement() {\n return /** @type {HTMLElement|undefined} */ (this.get(Property.ELEMENT));\n }\n\n /**\n * Get the overlay identifier which is set on constructor.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id;\n }\n\n /**\n * Get the map associated with this overlay.\n * @return {import(\"./Map.js\").default|null} The map that the\n * overlay is part of.\n * @observable\n * @api\n */\n getMap() {\n return /** @type {import(\"./Map.js\").default|null} */ (\n this.get(Property.MAP) || null\n );\n }\n\n /**\n * Get the offset of this overlay.\n * @return {Array<number>} The offset.\n * @observable\n * @api\n */\n getOffset() {\n return /** @type {Array<number>} */ (this.get(Property.OFFSET));\n }\n\n /**\n * Get the current position of this overlay.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The spatial point that the overlay is\n * anchored at.\n * @observable\n * @api\n */\n getPosition() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n this.get(Property.POSITION)\n );\n }\n\n /**\n * Get the current positioning of this overlay.\n * @return {Positioning} How the overlay is positioned\n * relative to its point on the map.\n * @observable\n * @api\n */\n getPositioning() {\n return /** @type {Positioning} */ (this.get(Property.POSITIONING));\n }\n\n /**\n * @protected\n */\n handleElementChanged() {\n removeChildren(this.element);\n const element = this.getElement();\n if (element) {\n this.element.appendChild(element);\n }\n }\n\n /**\n * @protected\n */\n handleMapChanged() {\n if (this.mapPostrenderListenerKey) {\n this.element?.remove();\n unlistenByKey(this.mapPostrenderListenerKey);\n this.mapPostrenderListenerKey = null;\n }\n const map = this.getMap();\n if (map) {\n this.mapPostrenderListenerKey = listen(\n map,\n MapEventType.POSTRENDER,\n this.render,\n this,\n );\n this.updatePixelPosition();\n const container = this.stopEvent\n ? map.getOverlayContainerStopEvent()\n : map.getOverlayContainer();\n if (this.insertFirst) {\n container.insertBefore(this.element, container.childNodes[0] || null);\n } else {\n container.appendChild(this.element);\n }\n this.performAutoPan();\n }\n }\n\n /**\n * @protected\n */\n render() {\n this.updatePixelPosition();\n }\n\n /**\n * @protected\n */\n handleOffsetChanged() {\n this.updatePixelPosition();\n }\n\n /**\n * @protected\n */\n handlePositionChanged() {\n this.updatePixelPosition();\n this.performAutoPan();\n }\n\n /**\n * @protected\n */\n handlePositioningChanged() {\n this.updatePixelPosition();\n }\n\n /**\n * Set the DOM element to be associated with this overlay.\n * @param {HTMLElement|undefined} element The Element containing the overlay.\n * @observable\n * @api\n */\n setElement(element) {\n this.set(Property.ELEMENT, element);\n }\n\n /**\n * Set the map to be associated with this overlay.\n * @param {import(\"./Map.js\").default|null} map The map that the\n * overlay is part of. Pass `null` to just remove the overlay from the current map.\n * @observable\n * @api\n */\n setMap(map) {\n this.set(Property.MAP, map);\n }\n\n /**\n * Set the offset for this overlay.\n * @param {Array<number>} offset Offset.\n * @observable\n * @api\n */\n setOffset(offset) {\n this.set(Property.OFFSET, offset);\n }\n\n /**\n * Set the position for this overlay. If the position is `undefined` the\n * overlay is hidden.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} position The spatial point that the overlay\n * is anchored at.\n * @observable\n * @api\n */\n setPosition(position) {\n this.set(Property.POSITION, position);\n }\n\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary) using the configured autoPan parameters\n * @protected\n */\n performAutoPan() {\n if (this.autoPan) {\n this.panIntoView(this.autoPan);\n }\n }\n\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary).\n * @param {PanIntoViewOptions} [panIntoViewOptions] Options for the pan action\n * @api\n */\n panIntoView(panIntoViewOptions) {\n const map = this.getMap();\n\n if (!map || !map.getTargetElement() || !this.get(Property.POSITION)) {\n return;\n }\n\n const mapRect = this.getRect(map.getTargetElement(), map.getSize());\n const element = this.getElement();\n const overlayRect = this.getRect(element, [\n outerWidth(element),\n outerHeight(element),\n ]);\n\n panIntoViewOptions = panIntoViewOptions || {};\n\n const myMargin =\n panIntoViewOptions.margin === undefined ? 20 : panIntoViewOptions.margin;\n if (!containsExtent(mapRect, overlayRect)) {\n // the overlay is not completely inside the viewport, so pan the map\n const offsetLeft = overlayRect[0] - mapRect[0];\n const offsetRight = mapRect[2] - overlayRect[2];\n const offsetTop = overlayRect[1] - mapRect[1];\n const offsetBottom = mapRect[3] - overlayRect[3];\n\n const delta = [0, 0];\n if (offsetLeft < 0) {\n // move map to the left\n delta[0] = offsetLeft - myMargin;\n } else if (offsetRight < 0) {\n // move map to the right\n delta[0] = Math.abs(offsetRight) + myMargin;\n }\n if (offsetTop < 0) {\n // move map up\n delta[1] = offsetTop - myMargin;\n } else if (offsetBottom < 0) {\n // move map down\n delta[1] = Math.abs(offsetBottom) + myMargin;\n }\n\n if (delta[0] !== 0 || delta[1] !== 0) {\n const center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n map.getView().getCenterInternal()\n );\n const centerPx = map.getPixelFromCoordinateInternal(center);\n if (!centerPx) {\n return;\n }\n const newCenterPx = [centerPx[0] + delta[0], centerPx[1] + delta[1]];\n\n const panOptions = panIntoViewOptions.animation || {};\n map.getView().animateInternal({\n center: map.getCoordinateFromPixelInternal(newCenterPx),\n duration: panOptions.duration,\n easing: panOptions.easing,\n });\n }\n }\n }\n\n /**\n * Get the extent of an element relative to the document\n * @param {HTMLElement} element The element.\n * @param {import(\"./size.js\").Size} size The size of the element.\n * @return {import(\"./extent.js\").Extent} The extent.\n * @protected\n */\n getRect(element, size) {\n const box = element.getBoundingClientRect();\n const offsetX = box.left + window.pageXOffset;\n const offsetY = box.top + window.pageYOffset;\n return [offsetX, offsetY, offsetX + size[0], offsetY + size[1]];\n }\n\n /**\n * Set the positioning for this overlay.\n * @param {Positioning} positioning how the overlay is\n * positioned relative to its point on the map.\n * @observable\n * @api\n */\n setPositioning(positioning) {\n this.set(Property.POSITIONING, positioning);\n }\n\n /**\n * Modify the visibility of the element.\n * @param {boolean} visible Element visibility.\n * @protected\n */\n setVisible(visible) {\n if (this.rendered.visible !== visible) {\n this.element.style.display = visible ? '' : 'none';\n this.rendered.visible = visible;\n }\n }\n\n /**\n * Update pixel position.\n * @protected\n */\n updatePixelPosition() {\n const map = this.getMap();\n const position = this.getPosition();\n if (!map || !map.isRendered() || !position) {\n this.setVisible(false);\n return;\n }\n\n const pixel = map.getPixelFromCoordinate(position);\n const mapSize = map.getSize();\n this.updateRenderedPosition(pixel, mapSize);\n }\n\n /**\n * @param {import(\"./pixel.js\").Pixel} pixel The pixel location.\n * @param {import(\"./size.js\").Size|undefined} mapSize The map size.\n * @protected\n */\n updateRenderedPosition(pixel, mapSize) {\n const style = this.element.style;\n const offset = this.getOffset();\n\n const positioning = this.getPositioning();\n\n this.setVisible(true);\n\n const x = `${pixel[0] + offset[0]}px`;\n const y = `${pixel[1] + offset[1]}px`;\n let posX = '0%';\n let posY = '0%';\n if (\n positioning == 'bottom-right' ||\n positioning == 'center-right' ||\n positioning == 'top-right'\n ) {\n posX = '-100%';\n } else if (\n positioning == 'bottom-center' ||\n positioning == 'center-center' ||\n positioning == 'top-center'\n ) {\n posX = '-50%';\n }\n if (\n positioning == 'bottom-left' ||\n positioning == 'bottom-center' ||\n positioning == 'bottom-right'\n ) {\n posY = '-100%';\n } else if (\n positioning == 'center-left' ||\n positioning == 'center-center' ||\n positioning == 'center-right'\n ) {\n posY = '-50%';\n }\n const transform = `translate(${posX}, ${posY}) translate(${x}, ${y})`;\n if (this.rendered.transform_ != transform) {\n this.rendered.transform_ = transform;\n style.transform = transform;\n }\n }\n\n /**\n * returns the options this Overlay has been created with\n * @return {Options} overlay options\n */\n getOptions() {\n return this.options;\n }\n}\n\nexport default Overlay;\n"],"names":[],"sourceRoot":""}