@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,418 @@
|
|
|
1
|
+
(self["webpackChunk_vaadin_bundles"] = self["webpackChunk_vaadin_bundles"] || []).push([["vendors-node_modules_ol_control_ZoomSlider_js"],{
|
|
2
|
+
|
|
3
|
+
/***/ "./node_modules/ol/control/ZoomSlider.js":
|
|
4
|
+
/*!***********************************************!*\
|
|
5
|
+
!*** ./node_modules/ol/control/ZoomSlider.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 _css_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css.js */ "./node_modules/ol/css.js");
|
|
14
|
+
/* harmony import */ var _easing_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../easing.js */ "./node_modules/ol/easing.js");
|
|
15
|
+
/* harmony import */ var _events_Event_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../events/Event.js */ "./node_modules/ol/events/Event.js");
|
|
16
|
+
/* harmony import */ var _events_EventType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../events/EventType.js */ "./node_modules/ol/events/EventType.js");
|
|
17
|
+
/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../events.js */ "./node_modules/ol/events.js");
|
|
18
|
+
/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../math.js */ "./node_modules/ol/math.js");
|
|
19
|
+
/* harmony import */ var _pointer_EventType_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../pointer/EventType.js */ "./node_modules/ol/pointer/EventType.js");
|
|
20
|
+
/* harmony import */ var _Control_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Control.js */ "./node_modules/ol/control/Control.js");
|
|
21
|
+
/**
|
|
22
|
+
* @module ol/control/ZoomSlider
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The enum for available directions.
|
|
36
|
+
*
|
|
37
|
+
* @enum {number}
|
|
38
|
+
*/
|
|
39
|
+
const Direction = {
|
|
40
|
+
VERTICAL: 0,
|
|
41
|
+
HORIZONTAL: 1,
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @typedef {Object} Options
|
|
46
|
+
* @property {string} [className='ol-zoomslider'] CSS class name.
|
|
47
|
+
* @property {number} [duration=200] Animation duration in milliseconds.
|
|
48
|
+
* @property {function(import("../MapEvent.js").default):void} [render] Function called when the control
|
|
49
|
+
* should be re-rendered. This is called in a `requestAnimationFrame` callback.
|
|
50
|
+
* @property {HTMLElement|string} [target] Specify a target if you want the control to be
|
|
51
|
+
* rendered outside of the map's viewport.
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @classdesc
|
|
56
|
+
* A slider type of control for zooming.
|
|
57
|
+
*
|
|
58
|
+
* Example:
|
|
59
|
+
*
|
|
60
|
+
* map.addControl(new ZoomSlider());
|
|
61
|
+
*
|
|
62
|
+
* @api
|
|
63
|
+
*/
|
|
64
|
+
class ZoomSlider extends _Control_js__WEBPACK_IMPORTED_MODULE_0__["default"] {
|
|
65
|
+
/**
|
|
66
|
+
* @param {Options} [options] Zoom slider options.
|
|
67
|
+
*/
|
|
68
|
+
constructor(options) {
|
|
69
|
+
options = options ? options : {};
|
|
70
|
+
|
|
71
|
+
super({
|
|
72
|
+
target: options.target,
|
|
73
|
+
element: document.createElement('div'),
|
|
74
|
+
render: options.render,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @type {!Array<import("../events.js").EventsKey>}
|
|
79
|
+
* @private
|
|
80
|
+
*/
|
|
81
|
+
this.dragListenerKeys_ = [];
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Will hold the current resolution of the view.
|
|
85
|
+
*
|
|
86
|
+
* @type {number|undefined}
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
this.currentResolution_ = undefined;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The direction of the slider. Will be determined from actual display of the
|
|
93
|
+
* container and defaults to Direction.VERTICAL.
|
|
94
|
+
*
|
|
95
|
+
* @type {Direction}
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
this.direction_ = Direction.VERTICAL;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @type {boolean}
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
this.dragging_;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @type {number}
|
|
108
|
+
* @private
|
|
109
|
+
*/
|
|
110
|
+
this.heightLimit_ = 0;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @type {number}
|
|
114
|
+
* @private
|
|
115
|
+
*/
|
|
116
|
+
this.widthLimit_ = 0;
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @type {number|undefined}
|
|
120
|
+
* @private
|
|
121
|
+
*/
|
|
122
|
+
this.startX_;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @type {number|undefined}
|
|
126
|
+
* @private
|
|
127
|
+
*/
|
|
128
|
+
this.startY_;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* The calculated thumb size (border box plus margins). Set when initSlider_
|
|
132
|
+
* is called.
|
|
133
|
+
* @type {import("../size.js").Size}
|
|
134
|
+
* @private
|
|
135
|
+
*/
|
|
136
|
+
this.thumbSize_ = null;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Whether the slider is initialized.
|
|
140
|
+
* @type {boolean}
|
|
141
|
+
* @private
|
|
142
|
+
*/
|
|
143
|
+
this.sliderInitialized_ = false;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @type {number}
|
|
147
|
+
* @private
|
|
148
|
+
*/
|
|
149
|
+
this.duration_ = options.duration !== undefined ? options.duration : 200;
|
|
150
|
+
|
|
151
|
+
const className =
|
|
152
|
+
options.className !== undefined ? options.className : 'ol-zoomslider';
|
|
153
|
+
const thumbElement = document.createElement('button');
|
|
154
|
+
thumbElement.setAttribute('type', 'button');
|
|
155
|
+
thumbElement.className = className + '-thumb ' + _css_js__WEBPACK_IMPORTED_MODULE_1__.CLASS_UNSELECTABLE;
|
|
156
|
+
const containerElement = this.element;
|
|
157
|
+
containerElement.className =
|
|
158
|
+
className + ' ' + _css_js__WEBPACK_IMPORTED_MODULE_1__.CLASS_UNSELECTABLE + ' ' + _css_js__WEBPACK_IMPORTED_MODULE_1__.CLASS_CONTROL;
|
|
159
|
+
containerElement.appendChild(thumbElement);
|
|
160
|
+
|
|
161
|
+
containerElement.addEventListener(
|
|
162
|
+
_pointer_EventType_js__WEBPACK_IMPORTED_MODULE_2__["default"].POINTERDOWN,
|
|
163
|
+
this.handleDraggerStart_.bind(this),
|
|
164
|
+
false,
|
|
165
|
+
);
|
|
166
|
+
containerElement.addEventListener(
|
|
167
|
+
_pointer_EventType_js__WEBPACK_IMPORTED_MODULE_2__["default"].POINTERMOVE,
|
|
168
|
+
this.handleDraggerDrag_.bind(this),
|
|
169
|
+
false,
|
|
170
|
+
);
|
|
171
|
+
containerElement.addEventListener(
|
|
172
|
+
_pointer_EventType_js__WEBPACK_IMPORTED_MODULE_2__["default"].POINTERUP,
|
|
173
|
+
this.handleDraggerEnd_.bind(this),
|
|
174
|
+
false,
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
containerElement.addEventListener(
|
|
178
|
+
_events_EventType_js__WEBPACK_IMPORTED_MODULE_3__["default"].CLICK,
|
|
179
|
+
this.handleContainerClick_.bind(this),
|
|
180
|
+
false,
|
|
181
|
+
);
|
|
182
|
+
thumbElement.addEventListener(_events_EventType_js__WEBPACK_IMPORTED_MODULE_3__["default"].CLICK, _events_Event_js__WEBPACK_IMPORTED_MODULE_4__.stopPropagation, false);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Remove the control from its current map and attach it to the new map.
|
|
187
|
+
* Pass `null` to just remove the control from the current map.
|
|
188
|
+
* Subclasses may set up event handlers to get notified about changes to
|
|
189
|
+
* the map here.
|
|
190
|
+
* @param {import("../Map.js").default|null} map Map.
|
|
191
|
+
* @api
|
|
192
|
+
* @override
|
|
193
|
+
*/
|
|
194
|
+
setMap(map) {
|
|
195
|
+
super.setMap(map);
|
|
196
|
+
if (map) {
|
|
197
|
+
map.render();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Initializes the slider element. This will determine and set this controls
|
|
203
|
+
* direction_ and also constrain the dragging of the thumb to always be within
|
|
204
|
+
* the bounds of the container.
|
|
205
|
+
*
|
|
206
|
+
* @return {boolean} Initialization successful
|
|
207
|
+
* @private
|
|
208
|
+
*/
|
|
209
|
+
initSlider_() {
|
|
210
|
+
const container = this.element;
|
|
211
|
+
let containerWidth = container.offsetWidth;
|
|
212
|
+
let containerHeight = container.offsetHeight;
|
|
213
|
+
if (containerWidth === 0 && containerHeight === 0) {
|
|
214
|
+
return (this.sliderInitialized_ = false);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const containerStyle = getComputedStyle(container);
|
|
218
|
+
containerWidth -=
|
|
219
|
+
parseFloat(containerStyle['paddingRight']) +
|
|
220
|
+
parseFloat(containerStyle['paddingLeft']);
|
|
221
|
+
containerHeight -=
|
|
222
|
+
parseFloat(containerStyle['paddingTop']) +
|
|
223
|
+
parseFloat(containerStyle['paddingBottom']);
|
|
224
|
+
const thumb = /** @type {HTMLElement} */ (container.firstElementChild);
|
|
225
|
+
const thumbStyle = getComputedStyle(thumb);
|
|
226
|
+
const thumbWidth =
|
|
227
|
+
thumb.offsetWidth +
|
|
228
|
+
parseFloat(thumbStyle['marginRight']) +
|
|
229
|
+
parseFloat(thumbStyle['marginLeft']);
|
|
230
|
+
const thumbHeight =
|
|
231
|
+
thumb.offsetHeight +
|
|
232
|
+
parseFloat(thumbStyle['marginTop']) +
|
|
233
|
+
parseFloat(thumbStyle['marginBottom']);
|
|
234
|
+
this.thumbSize_ = [thumbWidth, thumbHeight];
|
|
235
|
+
|
|
236
|
+
if (containerWidth > containerHeight) {
|
|
237
|
+
this.direction_ = Direction.HORIZONTAL;
|
|
238
|
+
this.widthLimit_ = containerWidth - thumbWidth;
|
|
239
|
+
} else {
|
|
240
|
+
this.direction_ = Direction.VERTICAL;
|
|
241
|
+
this.heightLimit_ = containerHeight - thumbHeight;
|
|
242
|
+
}
|
|
243
|
+
return (this.sliderInitialized_ = true);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* @param {PointerEvent} event The browser event to handle.
|
|
248
|
+
* @private
|
|
249
|
+
*/
|
|
250
|
+
handleContainerClick_(event) {
|
|
251
|
+
const view = this.getMap().getView();
|
|
252
|
+
|
|
253
|
+
const relativePosition = this.getRelativePosition_(
|
|
254
|
+
event.offsetX - this.thumbSize_[0] / 2,
|
|
255
|
+
event.offsetY - this.thumbSize_[1] / 2,
|
|
256
|
+
);
|
|
257
|
+
|
|
258
|
+
const resolution = this.getResolutionForPosition_(relativePosition);
|
|
259
|
+
const zoom = view.getConstrainedZoom(view.getZoomForResolution(resolution));
|
|
260
|
+
|
|
261
|
+
view.animateInternal({
|
|
262
|
+
zoom: zoom,
|
|
263
|
+
duration: this.duration_,
|
|
264
|
+
easing: _easing_js__WEBPACK_IMPORTED_MODULE_5__.easeOut,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Handle dragger start events.
|
|
270
|
+
* @param {PointerEvent} event The drag event.
|
|
271
|
+
* @private
|
|
272
|
+
*/
|
|
273
|
+
handleDraggerStart_(event) {
|
|
274
|
+
if (!this.dragging_ && event.target === this.element.firstElementChild) {
|
|
275
|
+
const element = /** @type {HTMLElement} */ (
|
|
276
|
+
this.element.firstElementChild
|
|
277
|
+
);
|
|
278
|
+
this.getMap().getView().beginInteraction();
|
|
279
|
+
this.startX_ = event.clientX - parseFloat(element.style.left);
|
|
280
|
+
this.startY_ = event.clientY - parseFloat(element.style.top);
|
|
281
|
+
this.dragging_ = true;
|
|
282
|
+
|
|
283
|
+
if (this.dragListenerKeys_.length === 0) {
|
|
284
|
+
const drag = this.handleDraggerDrag_;
|
|
285
|
+
const end = this.handleDraggerEnd_;
|
|
286
|
+
const doc = this.getMap().getOwnerDocument();
|
|
287
|
+
this.dragListenerKeys_.push(
|
|
288
|
+
(0,_events_js__WEBPACK_IMPORTED_MODULE_6__.listen)(doc, _pointer_EventType_js__WEBPACK_IMPORTED_MODULE_2__["default"].POINTERMOVE, drag, this),
|
|
289
|
+
(0,_events_js__WEBPACK_IMPORTED_MODULE_6__.listen)(doc, _pointer_EventType_js__WEBPACK_IMPORTED_MODULE_2__["default"].POINTERUP, end, this),
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Handle dragger drag events.
|
|
297
|
+
*
|
|
298
|
+
* @param {PointerEvent} event The drag event.
|
|
299
|
+
* @private
|
|
300
|
+
*/
|
|
301
|
+
handleDraggerDrag_(event) {
|
|
302
|
+
if (this.dragging_) {
|
|
303
|
+
const deltaX = event.clientX - this.startX_;
|
|
304
|
+
const deltaY = event.clientY - this.startY_;
|
|
305
|
+
const relativePosition = this.getRelativePosition_(deltaX, deltaY);
|
|
306
|
+
this.currentResolution_ =
|
|
307
|
+
this.getResolutionForPosition_(relativePosition);
|
|
308
|
+
this.getMap().getView().setResolution(this.currentResolution_);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Handle dragger end events.
|
|
314
|
+
* @param {PointerEvent} event The drag event.
|
|
315
|
+
* @private
|
|
316
|
+
*/
|
|
317
|
+
handleDraggerEnd_(event) {
|
|
318
|
+
if (this.dragging_) {
|
|
319
|
+
const view = this.getMap().getView();
|
|
320
|
+
view.endInteraction();
|
|
321
|
+
|
|
322
|
+
this.dragging_ = false;
|
|
323
|
+
this.startX_ = undefined;
|
|
324
|
+
this.startY_ = undefined;
|
|
325
|
+
this.dragListenerKeys_.forEach(_events_js__WEBPACK_IMPORTED_MODULE_6__.unlistenByKey);
|
|
326
|
+
this.dragListenerKeys_.length = 0;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Positions the thumb inside its container according to the given resolution.
|
|
332
|
+
*
|
|
333
|
+
* @param {number} res The res.
|
|
334
|
+
* @private
|
|
335
|
+
*/
|
|
336
|
+
setThumbPosition_(res) {
|
|
337
|
+
const position = this.getPositionForResolution_(res);
|
|
338
|
+
const thumb = /** @type {HTMLElement} */ (this.element.firstElementChild);
|
|
339
|
+
|
|
340
|
+
if (this.direction_ == Direction.HORIZONTAL) {
|
|
341
|
+
thumb.style.left = this.widthLimit_ * position + 'px';
|
|
342
|
+
} else {
|
|
343
|
+
thumb.style.top = this.heightLimit_ * position + 'px';
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Calculates the relative position of the thumb given x and y offsets. The
|
|
349
|
+
* relative position scales from 0 to 1. The x and y offsets are assumed to be
|
|
350
|
+
* in pixel units within the dragger limits.
|
|
351
|
+
*
|
|
352
|
+
* @param {number} x Pixel position relative to the left of the slider.
|
|
353
|
+
* @param {number} y Pixel position relative to the top of the slider.
|
|
354
|
+
* @return {number} The relative position of the thumb.
|
|
355
|
+
* @private
|
|
356
|
+
*/
|
|
357
|
+
getRelativePosition_(x, y) {
|
|
358
|
+
let amount;
|
|
359
|
+
if (this.direction_ === Direction.HORIZONTAL) {
|
|
360
|
+
amount = x / this.widthLimit_;
|
|
361
|
+
} else {
|
|
362
|
+
amount = y / this.heightLimit_;
|
|
363
|
+
}
|
|
364
|
+
return (0,_math_js__WEBPACK_IMPORTED_MODULE_7__.clamp)(amount, 0, 1);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Calculates the corresponding resolution of the thumb given its relative
|
|
369
|
+
* position (where 0 is the minimum and 1 is the maximum).
|
|
370
|
+
*
|
|
371
|
+
* @param {number} position The relative position of the thumb.
|
|
372
|
+
* @return {number} The corresponding resolution.
|
|
373
|
+
* @private
|
|
374
|
+
*/
|
|
375
|
+
getResolutionForPosition_(position) {
|
|
376
|
+
const fn = this.getMap().getView().getResolutionForValueFunction();
|
|
377
|
+
return fn(1 - position);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Determines the relative position of the slider for the given resolution. A
|
|
382
|
+
* relative position of 0 corresponds to the minimum view resolution. A
|
|
383
|
+
* relative position of 1 corresponds to the maximum view resolution.
|
|
384
|
+
*
|
|
385
|
+
* @param {number} res The resolution.
|
|
386
|
+
* @return {number} The relative position value (between 0 and 1).
|
|
387
|
+
* @private
|
|
388
|
+
*/
|
|
389
|
+
getPositionForResolution_(res) {
|
|
390
|
+
const fn = this.getMap().getView().getValueForResolutionFunction();
|
|
391
|
+
return (0,_math_js__WEBPACK_IMPORTED_MODULE_7__.clamp)(1 - fn(res), 0, 1);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Update the zoomslider element.
|
|
396
|
+
* @param {import("../MapEvent.js").default} mapEvent Map event.
|
|
397
|
+
* @override
|
|
398
|
+
*/
|
|
399
|
+
render(mapEvent) {
|
|
400
|
+
if (!mapEvent.frameState) {
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
if (!this.sliderInitialized_ && !this.initSlider_()) {
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
const res = mapEvent.frameState.viewState.resolution;
|
|
407
|
+
this.currentResolution_ = res;
|
|
408
|
+
this.setThumbPosition_(res);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ZoomSlider);
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
/***/ })
|
|
416
|
+
|
|
417
|
+
}])
|
|
418
|
+
//# sourceMappingURL=vendors-node_modules_ol_control_ZoomSlider_js.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vendors-node_modules_ol_control_ZoomSlider_js.js","mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;;AAE4D;AACvB;AACc;AACJ;AACI;AAClB;AACsB;AACpB;;AAEnC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,iDAAiD;AAC/D;AACA,cAAc,oBAAoB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mDAAO;AAChC;AACA,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,uDAAkB;AACvE;AACA;AACA,wBAAwB,uDAAkB,SAAS,kDAAa;AAChE;;AAEA;AACA,MAAM,yEAA4B;AAClC;AACA;AACA;AACA;AACA,MAAM,yEAA4B;AAClC;AACA;AACA;AACA;AACA,MAAM,uEAA0B;AAChC;AACA;AACA;;AAEA;AACA,MAAM,kEAAe;AACrB;AACA;AACA;AACA,kCAAkC,kEAAe,EAAE,6DAAe;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,kCAAkC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,+CAAO;AACrB,KAAK;AACL;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAM,MAAM,yEAA4B;AAClD,UAAU,kDAAM,MAAM,uEAA0B;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC,qDAAa;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,6BAA6B,aAAa;;AAE1C;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,WAAW,+CAAK;AAChB;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,WAAW,+CAAK;AAChB;;AAEA;AACA;AACA,aAAa,kCAAkC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,UAAU,EAAC","sources":["webpack://@vaadin/bundles/./node_modules/ol/control/ZoomSlider.js"],"sourcesContent":["/**\n * @module ol/control/ZoomSlider\n */\n\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\nimport {stopPropagation} from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {clamp} from '../math.js';\nimport PointerEventType from '../pointer/EventType.js';\nimport Control from './Control.js';\n\n/**\n * The enum for available directions.\n *\n * @enum {number}\n */\nconst Direction = {\n VERTICAL: 0,\n HORIZONTAL: 1,\n};\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-zoomslider'] CSS class name.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A slider type of control for zooming.\n *\n * Example:\n *\n * map.addControl(new ZoomSlider());\n *\n * @api\n */\nclass ZoomSlider extends Control {\n /**\n * @param {Options} [options] Zoom slider options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n target: options.target,\n element: document.createElement('div'),\n render: options.render,\n });\n\n /**\n * @type {!Array<import(\"../events.js\").EventsKey>}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * Will hold the current resolution of the view.\n *\n * @type {number|undefined}\n * @private\n */\n this.currentResolution_ = undefined;\n\n /**\n * The direction of the slider. Will be determined from actual display of the\n * container and defaults to Direction.VERTICAL.\n *\n * @type {Direction}\n * @private\n */\n this.direction_ = Direction.VERTICAL;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_;\n\n /**\n * @type {number}\n * @private\n */\n this.heightLimit_ = 0;\n\n /**\n * @type {number}\n * @private\n */\n this.widthLimit_ = 0;\n\n /**\n * @type {number|undefined}\n * @private\n */\n this.startX_;\n\n /**\n * @type {number|undefined}\n * @private\n */\n this.startY_;\n\n /**\n * The calculated thumb size (border box plus margins). Set when initSlider_\n * is called.\n * @type {import(\"../size.js\").Size}\n * @private\n */\n this.thumbSize_ = null;\n\n /**\n * Whether the slider is initialized.\n * @type {boolean}\n * @private\n */\n this.sliderInitialized_ = false;\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 200;\n\n const className =\n options.className !== undefined ? options.className : 'ol-zoomslider';\n const thumbElement = document.createElement('button');\n thumbElement.setAttribute('type', 'button');\n thumbElement.className = className + '-thumb ' + CLASS_UNSELECTABLE;\n const containerElement = this.element;\n containerElement.className =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n containerElement.appendChild(thumbElement);\n\n containerElement.addEventListener(\n PointerEventType.POINTERDOWN,\n this.handleDraggerStart_.bind(this),\n false,\n );\n containerElement.addEventListener(\n PointerEventType.POINTERMOVE,\n this.handleDraggerDrag_.bind(this),\n false,\n );\n containerElement.addEventListener(\n PointerEventType.POINTERUP,\n this.handleDraggerEnd_.bind(this),\n false,\n );\n\n containerElement.addEventListener(\n EventType.CLICK,\n this.handleContainerClick_.bind(this),\n false,\n );\n thumbElement.addEventListener(EventType.CLICK, stopPropagation, false);\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n * @override\n */\n setMap(map) {\n super.setMap(map);\n if (map) {\n map.render();\n }\n }\n\n /**\n * Initializes the slider element. This will determine and set this controls\n * direction_ and also constrain the dragging of the thumb to always be within\n * the bounds of the container.\n *\n * @return {boolean} Initialization successful\n * @private\n */\n initSlider_() {\n const container = this.element;\n let containerWidth = container.offsetWidth;\n let containerHeight = container.offsetHeight;\n if (containerWidth === 0 && containerHeight === 0) {\n return (this.sliderInitialized_ = false);\n }\n\n const containerStyle = getComputedStyle(container);\n containerWidth -=\n parseFloat(containerStyle['paddingRight']) +\n parseFloat(containerStyle['paddingLeft']);\n containerHeight -=\n parseFloat(containerStyle['paddingTop']) +\n parseFloat(containerStyle['paddingBottom']);\n const thumb = /** @type {HTMLElement} */ (container.firstElementChild);\n const thumbStyle = getComputedStyle(thumb);\n const thumbWidth =\n thumb.offsetWidth +\n parseFloat(thumbStyle['marginRight']) +\n parseFloat(thumbStyle['marginLeft']);\n const thumbHeight =\n thumb.offsetHeight +\n parseFloat(thumbStyle['marginTop']) +\n parseFloat(thumbStyle['marginBottom']);\n this.thumbSize_ = [thumbWidth, thumbHeight];\n\n if (containerWidth > containerHeight) {\n this.direction_ = Direction.HORIZONTAL;\n this.widthLimit_ = containerWidth - thumbWidth;\n } else {\n this.direction_ = Direction.VERTICAL;\n this.heightLimit_ = containerHeight - thumbHeight;\n }\n return (this.sliderInitialized_ = true);\n }\n\n /**\n * @param {PointerEvent} event The browser event to handle.\n * @private\n */\n handleContainerClick_(event) {\n const view = this.getMap().getView();\n\n const relativePosition = this.getRelativePosition_(\n event.offsetX - this.thumbSize_[0] / 2,\n event.offsetY - this.thumbSize_[1] / 2,\n );\n\n const resolution = this.getResolutionForPosition_(relativePosition);\n const zoom = view.getConstrainedZoom(view.getZoomForResolution(resolution));\n\n view.animateInternal({\n zoom: zoom,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n\n /**\n * Handle dragger start events.\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerStart_(event) {\n if (!this.dragging_ && event.target === this.element.firstElementChild) {\n const element = /** @type {HTMLElement} */ (\n this.element.firstElementChild\n );\n this.getMap().getView().beginInteraction();\n this.startX_ = event.clientX - parseFloat(element.style.left);\n this.startY_ = event.clientY - parseFloat(element.style.top);\n this.dragging_ = true;\n\n if (this.dragListenerKeys_.length === 0) {\n const drag = this.handleDraggerDrag_;\n const end = this.handleDraggerEnd_;\n const doc = this.getMap().getOwnerDocument();\n this.dragListenerKeys_.push(\n listen(doc, PointerEventType.POINTERMOVE, drag, this),\n listen(doc, PointerEventType.POINTERUP, end, this),\n );\n }\n }\n }\n\n /**\n * Handle dragger drag events.\n *\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerDrag_(event) {\n if (this.dragging_) {\n const deltaX = event.clientX - this.startX_;\n const deltaY = event.clientY - this.startY_;\n const relativePosition = this.getRelativePosition_(deltaX, deltaY);\n this.currentResolution_ =\n this.getResolutionForPosition_(relativePosition);\n this.getMap().getView().setResolution(this.currentResolution_);\n }\n }\n\n /**\n * Handle dragger end events.\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerEnd_(event) {\n if (this.dragging_) {\n const view = this.getMap().getView();\n view.endInteraction();\n\n this.dragging_ = false;\n this.startX_ = undefined;\n this.startY_ = undefined;\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n }\n }\n\n /**\n * Positions the thumb inside its container according to the given resolution.\n *\n * @param {number} res The res.\n * @private\n */\n setThumbPosition_(res) {\n const position = this.getPositionForResolution_(res);\n const thumb = /** @type {HTMLElement} */ (this.element.firstElementChild);\n\n if (this.direction_ == Direction.HORIZONTAL) {\n thumb.style.left = this.widthLimit_ * position + 'px';\n } else {\n thumb.style.top = this.heightLimit_ * position + 'px';\n }\n }\n\n /**\n * Calculates the relative position of the thumb given x and y offsets. The\n * relative position scales from 0 to 1. The x and y offsets are assumed to be\n * in pixel units within the dragger limits.\n *\n * @param {number} x Pixel position relative to the left of the slider.\n * @param {number} y Pixel position relative to the top of the slider.\n * @return {number} The relative position of the thumb.\n * @private\n */\n getRelativePosition_(x, y) {\n let amount;\n if (this.direction_ === Direction.HORIZONTAL) {\n amount = x / this.widthLimit_;\n } else {\n amount = y / this.heightLimit_;\n }\n return clamp(amount, 0, 1);\n }\n\n /**\n * Calculates the corresponding resolution of the thumb given its relative\n * position (where 0 is the minimum and 1 is the maximum).\n *\n * @param {number} position The relative position of the thumb.\n * @return {number} The corresponding resolution.\n * @private\n */\n getResolutionForPosition_(position) {\n const fn = this.getMap().getView().getResolutionForValueFunction();\n return fn(1 - position);\n }\n\n /**\n * Determines the relative position of the slider for the given resolution. A\n * relative position of 0 corresponds to the minimum view resolution. A\n * relative position of 1 corresponds to the maximum view resolution.\n *\n * @param {number} res The resolution.\n * @return {number} The relative position value (between 0 and 1).\n * @private\n */\n getPositionForResolution_(res) {\n const fn = this.getMap().getView().getValueForResolutionFunction();\n return clamp(1 - fn(res), 0, 1);\n }\n\n /**\n * Update the zoomslider element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n if (!mapEvent.frameState) {\n return;\n }\n if (!this.sliderInitialized_ && !this.initSlider_()) {\n return;\n }\n const res = mapEvent.frameState.viewState.resolution;\n this.currentResolution_ = res;\n this.setThumbPosition_(res);\n }\n}\n\nexport default ZoomSlider;\n"],"names":[],"sourceRoot":""}
|