@antv/l7-map 2.21.0 → 2.21.2

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 (158) hide show
  1. package/es/camera.js +595 -674
  2. package/es/earthmap.js +313 -276
  3. package/es/geo/edge_insets.js +57 -72
  4. package/es/geo/lng_lat.js +50 -64
  5. package/es/geo/lng_lat_bounds.js +101 -137
  6. package/es/geo/mercator.js +23 -35
  7. package/es/geo/point.js +150 -221
  8. package/es/geo/simple.js +22 -34
  9. package/es/geo/transform.js +839 -905
  10. package/es/handler/blockable_map_event.js +46 -66
  11. package/es/handler/box_zoom.js +125 -143
  12. package/es/handler/click_zoom.js +37 -51
  13. package/es/handler/events/event.js +11 -9
  14. package/es/handler/events/map_mouse_event.js +39 -54
  15. package/es/handler/events/map_touch_event.js +54 -73
  16. package/es/handler/events/map_wheel_event.js +22 -38
  17. package/es/handler/events/render_event.js +6 -23
  18. package/es/handler/handler_inertia.js +98 -113
  19. package/es/handler/handler_manager.js +349 -437
  20. package/es/handler/handler_util.js +2 -2
  21. package/es/handler/keyboard.js +98 -110
  22. package/es/handler/map_event.js +81 -117
  23. package/es/handler/mouse/mouse_handler.js +81 -100
  24. package/es/handler/mouse/mousepan_handler.js +16 -39
  25. package/es/handler/mouse/mousepitch_hander.js +18 -40
  26. package/es/handler/mouse/mouserotate_hander.js +18 -40
  27. package/es/handler/mouse/util.js +7 -6
  28. package/es/handler/scroll_zoom.js +221 -231
  29. package/es/handler/shim/dblclick_zoom.js +36 -47
  30. package/es/handler/shim/drag_pan.js +41 -50
  31. package/es/handler/shim/drag_rotate.js +38 -48
  32. package/es/handler/shim/touch_zoom_rotate.js +68 -79
  33. package/es/handler/tap/single_tap_recognizer.js +60 -80
  34. package/es/handler/tap/tap_drag_zoom.js +72 -89
  35. package/es/handler/tap/tap_recognizer.js +37 -45
  36. package/es/handler/tap/tap_zoom.js +67 -95
  37. package/es/handler/touch/touch_pan.js +77 -96
  38. package/es/handler/touch/touch_pitch.js +61 -79
  39. package/es/handler/touch/touch_rotate.js +47 -67
  40. package/es/handler/touch/touch_zoom.js +29 -46
  41. package/es/handler/touch/two_touch.js +79 -104
  42. package/es/hash.js +75 -88
  43. package/es/map.js +318 -284
  44. package/es/util.js +18 -37
  45. package/es/utils/Aabb.js +60 -100
  46. package/es/utils/dom.js +32 -55
  47. package/es/utils/performance.js +25 -29
  48. package/es/utils/primitives.js +33 -43
  49. package/es/utils/task_queue.js +47 -76
  50. package/lib/camera.d.ts +86 -0
  51. package/lib/camera.js +597 -672
  52. package/lib/earthmap.d.ts +69 -0
  53. package/lib/earthmap.js +314 -276
  54. package/lib/geo/edge_insets.d.ts +54 -0
  55. package/lib/geo/edge_insets.js +58 -70
  56. package/lib/geo/lng_lat.d.ts +18 -0
  57. package/lib/geo/lng_lat.js +50 -62
  58. package/lib/geo/lng_lat_bounds.d.ts +25 -0
  59. package/lib/geo/lng_lat_bounds.js +102 -136
  60. package/lib/geo/mercator.d.ts +30 -0
  61. package/lib/geo/mercator.js +26 -37
  62. package/lib/geo/point.d.ts +40 -0
  63. package/lib/geo/point.js +151 -220
  64. package/lib/geo/simple.d.ts +30 -0
  65. package/lib/geo/simple.js +25 -36
  66. package/lib/geo/transform.d.ts +198 -0
  67. package/lib/geo/transform.js +844 -907
  68. package/lib/handler/IHandler.d.ts +34 -0
  69. package/lib/handler/blockable_map_event.d.ts +17 -0
  70. package/lib/handler/blockable_map_event.js +48 -65
  71. package/lib/handler/box_zoom.d.ts +59 -0
  72. package/lib/handler/box_zoom.js +126 -143
  73. package/lib/handler/click_zoom.d.ts +16 -0
  74. package/lib/handler/click_zoom.js +38 -50
  75. package/lib/handler/events/event.d.ts +4 -0
  76. package/lib/handler/events/event.js +12 -9
  77. package/lib/handler/events/index.d.ts +4 -0
  78. package/lib/handler/events/index.js +3 -3
  79. package/lib/handler/events/map_mouse_event.d.ts +34 -0
  80. package/lib/handler/events/map_mouse_event.js +41 -52
  81. package/lib/handler/events/map_touch_event.d.ts +57 -0
  82. package/lib/handler/events/map_touch_event.js +56 -71
  83. package/lib/handler/events/map_wheel_event.d.ts +33 -0
  84. package/lib/handler/events/map_wheel_event.js +23 -37
  85. package/lib/handler/events/render_event.d.ts +5 -0
  86. package/lib/handler/events/render_event.js +7 -22
  87. package/lib/handler/handler_inertia.d.ts +23 -0
  88. package/lib/handler/handler_inertia.js +102 -112
  89. package/lib/handler/handler_manager.d.ts +61 -0
  90. package/lib/handler/handler_manager.js +351 -437
  91. package/lib/handler/handler_util.d.ts +4 -0
  92. package/lib/handler/handler_util.js +2 -2
  93. package/lib/handler/keyboard.d.ts +36 -0
  94. package/lib/handler/keyboard.js +98 -110
  95. package/lib/handler/map_event.d.ts +29 -0
  96. package/lib/handler/map_event.js +83 -116
  97. package/lib/handler/mouse/index.d.ts +4 -0
  98. package/lib/handler/mouse/index.js +3 -3
  99. package/lib/handler/mouse/mouse_handler.d.ts +22 -0
  100. package/lib/handler/mouse/mouse_handler.js +83 -99
  101. package/lib/handler/mouse/mousepan_handler.d.ts +10 -0
  102. package/lib/handler/mouse/mousepan_handler.js +19 -38
  103. package/lib/handler/mouse/mousepitch_hander.d.ts +9 -0
  104. package/lib/handler/mouse/mousepitch_hander.js +21 -39
  105. package/lib/handler/mouse/mouserotate_hander.d.ts +9 -0
  106. package/lib/handler/mouse/mouserotate_hander.js +21 -39
  107. package/lib/handler/mouse/util.d.ts +6 -0
  108. package/lib/handler/mouse/util.js +7 -7
  109. package/lib/handler/scroll_zoom.d.ts +93 -0
  110. package/lib/handler/scroll_zoom.js +221 -231
  111. package/lib/handler/shim/dblclick_zoom.d.ts +40 -0
  112. package/lib/handler/shim/dblclick_zoom.js +37 -46
  113. package/lib/handler/shim/drag_pan.d.ts +61 -0
  114. package/lib/handler/shim/drag_pan.js +42 -49
  115. package/lib/handler/shim/drag_rotate.d.ts +46 -0
  116. package/lib/handler/shim/drag_rotate.js +39 -47
  117. package/lib/handler/shim/touch_zoom_rotate.d.ts +70 -0
  118. package/lib/handler/shim/touch_zoom_rotate.js +69 -78
  119. package/lib/handler/tap/single_tap_recognizer.d.ts +20 -0
  120. package/lib/handler/tap/single_tap_recognizer.js +63 -79
  121. package/lib/handler/tap/tap_drag_zoom.d.ts +22 -0
  122. package/lib/handler/tap/tap_drag_zoom.js +74 -88
  123. package/lib/handler/tap/tap_recognizer.d.ts +17 -0
  124. package/lib/handler/tap/tap_recognizer.js +41 -47
  125. package/lib/handler/tap/tap_zoom.d.ts +22 -0
  126. package/lib/handler/tap/tap_zoom.js +69 -94
  127. package/lib/handler/touch/index.d.ts +5 -0
  128. package/lib/handler/touch/index.js +4 -4
  129. package/lib/handler/touch/touch_pan.d.ts +30 -0
  130. package/lib/handler/touch/touch_pan.js +79 -95
  131. package/lib/handler/touch/touch_pitch.d.ts +13 -0
  132. package/lib/handler/touch/touch_pitch.js +64 -78
  133. package/lib/handler/touch/touch_rotate.d.ts +12 -0
  134. package/lib/handler/touch/touch_rotate.js +50 -66
  135. package/lib/handler/touch/touch_zoom.d.ts +12 -0
  136. package/lib/handler/touch/touch_zoom.js +32 -45
  137. package/lib/handler/touch/two_touch.d.ts +23 -0
  138. package/lib/handler/touch/two_touch.js +81 -103
  139. package/lib/hash.d.ts +14 -0
  140. package/lib/hash.js +75 -88
  141. package/lib/index.d.ts +4 -0
  142. package/lib/index.js +4 -4
  143. package/lib/interface.d.ts +34 -0
  144. package/lib/map.d.ts +70 -0
  145. package/lib/map.js +319 -284
  146. package/lib/util.d.ts +25 -0
  147. package/lib/util.js +20 -36
  148. package/lib/utils/Aabb.d.ts +12 -0
  149. package/lib/utils/Aabb.js +61 -99
  150. package/lib/utils/dom.d.ts +4 -0
  151. package/lib/utils/dom.js +34 -55
  152. package/lib/utils/performance.d.ts +17 -0
  153. package/lib/utils/performance.js +25 -29
  154. package/lib/utils/primitives.d.ts +6 -0
  155. package/lib/utils/primitives.js +34 -42
  156. package/lib/utils/task_queue.d.ts +13 -0
  157. package/lib/utils/task_queue.js +47 -76
  158. package/package.json +25 -32
@@ -1,10 +1,4 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
- import _createClass from "@babel/runtime/helpers/esm/createClass";
4
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
6
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
7
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
8
2
  // @ts-ignore
9
3
  // tslint:disable-next-line: no-submodule-imports
10
4
  import { lodashUtil } from '@antv/l7-utils';
@@ -27,100 +21,107 @@ import TouchZoomRotateHandler from "./shim/touch_zoom_rotate";
27
21
  import TapDragZoomHandler from "./tap/tap_drag_zoom";
28
22
  import TapZoomHandler from "./tap/tap_zoom";
29
23
  import { TouchPanHandler, TouchPitchHandler, TouchRotateHandler, TouchZoomHandler } from "./touch";
30
- var merge = lodashUtil.merge;
31
- var _isMoving = function isMoving(p) {
32
- return p.zoom || p.drag || p.pitch || p.rotate;
33
- };
24
+ const {
25
+ merge
26
+ } = lodashUtil;
27
+ const isMoving = p => p.zoom || p.drag || p.pitch || p.rotate;
34
28
  function hasChange(result) {
35
29
  return result.panDelta && result.panDelta.mag() || result.zoomDelta || result.bearingDelta || result.pitchDelta;
36
30
  }
37
- var HandlerManager = /*#__PURE__*/function () {
38
- function HandlerManager(map, options) {
39
- var _this = this;
40
- _classCallCheck(this, HandlerManager);
41
- _defineProperty(this, "handleWindowEvent", function (e) {
42
- _this.handleEvent(e, "".concat(e.type, "Window"));
31
+ class HandlerManager {
32
+ constructor(map, options) {
33
+ _defineProperty(this, "map", void 0);
34
+ _defineProperty(this, "el", void 0);
35
+ _defineProperty(this, "handlers", void 0);
36
+ _defineProperty(this, "eventsInProgress", void 0);
37
+ _defineProperty(this, "frameId", void 0);
38
+ _defineProperty(this, "inertia", void 0);
39
+ _defineProperty(this, "bearingSnap", void 0);
40
+ _defineProperty(this, "handlersById", void 0);
41
+ _defineProperty(this, "updatingCamera", void 0);
42
+ _defineProperty(this, "changes", void 0);
43
+ _defineProperty(this, "previousActiveHandlers", void 0);
44
+ _defineProperty(this, "bearingChanged", void 0);
45
+ _defineProperty(this, "rotateEnabled", void 0);
46
+ _defineProperty(this, "pitchEnabled", void 0);
47
+ _defineProperty(this, "listeners", void 0);
48
+ _defineProperty(this, "handleWindowEvent", e => {
49
+ this.handleEvent(e, `${e.type}Window`);
43
50
  });
44
- _defineProperty(this, "handleEvent", function (e, eventName) {
51
+ _defineProperty(this, "handleEvent", (e, eventName) => {
45
52
  if (e.type === 'blur') {
46
- _this.stop();
53
+ this.stop();
47
54
  return;
48
55
  }
49
- _this.updatingCamera = true;
50
- var inputEvent = e.type === 'renderFrame' ? undefined : e;
56
+ this.updatingCamera = true;
57
+ const inputEvent = e.type === 'renderFrame' ? undefined : e;
51
58
 
52
59
  /*
53
60
  * We don't call e.preventDefault() for any events by default.
54
61
  * Handlers are responsible for calling it where necessary.
55
62
  */
56
63
 
57
- var mergedIHandlerResult = {
64
+ const mergedIHandlerResult = {
58
65
  needsRenderFrame: false
59
66
  };
60
- var eventsInProgress = {};
61
- var activeHandlers = {};
67
+ const eventsInProgress = {};
68
+ const activeHandlers = {};
62
69
  // @ts-ignore
63
- var mapTouches = e.touches ?
70
+ const mapTouches = e.touches ?
64
71
  // @ts-ignore
65
- _this.getMapTouches(e.touches) : undefined;
66
- var points = mapTouches ? DOM.touchPos(_this.el, mapTouches) : DOM.mousePos(_this.el, e);
67
- var _iterator = _createForOfIteratorHelper(_this.handlers),
68
- _step;
69
- try {
70
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
71
- var _step$value = _step.value,
72
- handlerName = _step$value.handlerName,
73
- handler = _step$value.handler,
74
- allowed = _step$value.allowed;
75
- if (!handler.isEnabled()) {
76
- continue;
77
- }
78
- var data = void 0;
79
- if (_this.blockedByActive(activeHandlers, allowed, handlerName)) {
80
- handler.reset();
81
- } else {
82
- var handerName = eventName || e.type;
72
+ this.getMapTouches(e.touches) : undefined;
73
+ const points = mapTouches ? DOM.touchPos(this.el, mapTouches) : DOM.mousePos(this.el, e);
74
+ for (const {
75
+ handlerName,
76
+ handler,
77
+ allowed
78
+ } of this.handlers) {
79
+ if (!handler.isEnabled()) {
80
+ continue;
81
+ }
82
+ let data;
83
+ if (this.blockedByActive(activeHandlers, allowed, handlerName)) {
84
+ handler.reset();
85
+ } else {
86
+ const handerName = eventName || e.type;
87
+ // @ts-ignore
88
+ if (handler && handler[handerName]) {
83
89
  // @ts-ignore
84
- if (handler && handler[handerName]) {
85
- // @ts-ignore
86
- data = handler[handerName](e, points, mapTouches);
87
- _this.mergeIHandlerResult(mergedIHandlerResult, eventsInProgress, data, handlerName, inputEvent);
88
- if (data && data.needsRenderFrame) {
89
- _this.triggerRenderFrame();
90
- }
90
+ data = handler[handerName](e, points, mapTouches);
91
+ this.mergeIHandlerResult(mergedIHandlerResult, eventsInProgress, data, handlerName, inputEvent);
92
+ if (data && data.needsRenderFrame) {
93
+ this.triggerRenderFrame();
91
94
  }
92
95
  }
93
- // @ts-ignore
94
- if (data || handler.isActive()) {
95
- activeHandlers[handlerName] = handler;
96
- }
97
96
  }
98
- } catch (err) {
99
- _iterator.e(err);
100
- } finally {
101
- _iterator.f();
97
+ // @ts-ignore
98
+ if (data || handler.isActive()) {
99
+ activeHandlers[handlerName] = handler;
100
+ }
102
101
  }
103
- var deactivatedHandlers = {};
104
- for (var name in _this.previousActiveHandlers) {
102
+ const deactivatedHandlers = {};
103
+ for (const name in this.previousActiveHandlers) {
105
104
  if (!activeHandlers[name]) {
106
105
  deactivatedHandlers[name] = inputEvent;
107
106
  }
108
107
  }
109
- _this.previousActiveHandlers = activeHandlers;
108
+ this.previousActiveHandlers = activeHandlers;
110
109
  if (Object.keys(deactivatedHandlers).length || hasChange(mergedIHandlerResult)) {
111
- _this.changes.push([mergedIHandlerResult, eventsInProgress, deactivatedHandlers]);
112
- _this.triggerRenderFrame();
110
+ this.changes.push([mergedIHandlerResult, eventsInProgress, deactivatedHandlers]);
111
+ this.triggerRenderFrame();
113
112
  }
114
113
  if (Object.keys(activeHandlers).length || hasChange(mergedIHandlerResult)) {
115
- _this.map.stop(true);
114
+ this.map.stop(true);
116
115
  }
117
- _this.updatingCamera = false;
118
- var cameraAnimation = mergedIHandlerResult.cameraAnimation;
116
+ this.updatingCamera = false;
117
+ const {
118
+ cameraAnimation
119
+ } = mergedIHandlerResult;
119
120
  if (cameraAnimation) {
120
- _this.inertia.clear();
121
- _this.fireEvents({}, {});
122
- _this.changes = [];
123
- cameraAnimation(_this.map);
121
+ this.inertia.clear();
122
+ this.fireEvents({}, {});
123
+ this.changes = [];
124
+ cameraAnimation(this.map);
124
125
  }
125
126
  });
126
127
  this.map = map;
@@ -137,7 +138,7 @@ var HandlerManager = /*#__PURE__*/function () {
137
138
  // Track whether map is currently moving, to compute start/move/end events
138
139
  this.eventsInProgress = {};
139
140
  this.addDefaultHandlers(options);
140
- var el = this.el;
141
+ const el = this.el;
141
142
  this.listeners = [];
142
143
  // l7 - mini
143
144
  this.listeners = [
@@ -168,410 +169,321 @@ var HandlerManager = /*#__PURE__*/function () {
168
169
  }], [el, 'contextmenu', undefined],
169
170
  // @ts-ignore
170
171
  [window, 'blur', undefined]];
171
- var _iterator2 = _createForOfIteratorHelper(this.listeners),
172
- _step2;
173
- try {
174
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
175
- var _step2$value = _slicedToArray(_step2.value, 3),
176
- target = _step2$value[0],
177
- type = _step2$value[1],
178
- listenerOptions = _step2$value[2];
179
- // @ts-ignore
180
- DOM.addEventListener(target, type,
181
- // @ts-ignore
182
- target === window.document ? this.handleWindowEvent : this.handleEvent, listenerOptions);
183
- }
184
- } catch (err) {
185
- _iterator2.e(err);
186
- } finally {
187
- _iterator2.f();
172
+ for (const [target, type, listenerOptions] of this.listeners) {
173
+ // @ts-ignore
174
+ DOM.addEventListener(target, type,
175
+ // @ts-ignore
176
+ target === window.document ? this.handleWindowEvent : this.handleEvent, listenerOptions);
188
177
  }
189
178
  }
190
- _createClass(HandlerManager, [{
191
- key: "destroy",
192
- value: function destroy() {
193
- var _iterator3 = _createForOfIteratorHelper(this.listeners),
194
- _step3;
195
- try {
196
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
197
- var _step3$value = _slicedToArray(_step3.value, 3),
198
- target = _step3$value[0],
199
- type = _step3$value[1],
200
- listenerOptions = _step3$value[2];
201
- // @ts-ignore
202
- DOM.removeEventListener(target, type,
203
- // @ts-ignore
204
- target === window.document ? this.handleWindowEvent : this.handleEvent, listenerOptions);
205
- }
206
- } catch (err) {
207
- _iterator3.e(err);
208
- } finally {
209
- _iterator3.f();
210
- }
179
+ destroy() {
180
+ for (const [target, type, listenerOptions] of this.listeners) {
181
+ // @ts-ignore
182
+ DOM.removeEventListener(target, type,
183
+ // @ts-ignore
184
+ target === window.document ? this.handleWindowEvent : this.handleEvent, listenerOptions);
211
185
  }
212
- }, {
213
- key: "stop",
214
- value: function stop() {
215
- // do nothing if this method was triggered by a gesture update
216
- if (this.updatingCamera) {
217
- return;
218
- }
219
- var _iterator4 = _createForOfIteratorHelper(this.handlers),
220
- _step4;
221
- try {
222
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
223
- var handler = _step4.value.handler;
224
- handler.reset();
225
- }
226
- } catch (err) {
227
- _iterator4.e(err);
228
- } finally {
229
- _iterator4.f();
230
- }
231
- this.inertia.clear();
232
- this.fireEvents({}, {});
233
- this.changes = [];
186
+ }
187
+ stop() {
188
+ // do nothing if this method was triggered by a gesture update
189
+ if (this.updatingCamera) {
190
+ return;
234
191
  }
235
- }, {
236
- key: "isActive",
237
- value: function isActive() {
238
- var _iterator5 = _createForOfIteratorHelper(this.handlers),
239
- _step5;
240
- try {
241
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
242
- var handler = _step5.value.handler;
243
- if (handler.isActive()) {
244
- return true;
245
- }
246
- }
247
- } catch (err) {
248
- _iterator5.e(err);
249
- } finally {
250
- _iterator5.f();
192
+ for (const {
193
+ handler
194
+ } of this.handlers) {
195
+ handler.reset();
196
+ }
197
+ this.inertia.clear();
198
+ this.fireEvents({}, {});
199
+ this.changes = [];
200
+ }
201
+ isActive() {
202
+ for (const {
203
+ handler
204
+ } of this.handlers) {
205
+ if (handler.isActive()) {
206
+ return true;
251
207
  }
252
- return false;
253
208
  }
254
- }, {
255
- key: "isZooming",
256
- value: function isZooming() {
257
- return !!this.eventsInProgress.zoom || this.map.scrollZoom.isZooming();
209
+ return false;
210
+ }
211
+ isZooming() {
212
+ return !!this.eventsInProgress.zoom || this.map.scrollZoom.isZooming();
213
+ }
214
+ isRotating() {
215
+ return !!this.eventsInProgress.rotate;
216
+ }
217
+ isMoving() {
218
+ return Boolean(isMoving(this.eventsInProgress)) || this.isZooming();
219
+ }
220
+ mergeIHandlerResult(mergedIHandlerResult, eventsInProgress, HandlerResult, name, e) {
221
+ if (!HandlerResult) {
222
+ return;
258
223
  }
259
- }, {
260
- key: "isRotating",
261
- value: function isRotating() {
262
- return !!this.eventsInProgress.rotate;
224
+ merge(mergedIHandlerResult, HandlerResult);
225
+ const eventData = {
226
+ handlerName: name,
227
+ originalEvent: HandlerResult.originalEvent || e
228
+ };
229
+
230
+ // track which handler changed which camera property
231
+ if (HandlerResult.zoomDelta !== undefined) {
232
+ eventsInProgress.zoom = eventData;
263
233
  }
264
- }, {
265
- key: "isMoving",
266
- value: function isMoving() {
267
- return Boolean(_isMoving(this.eventsInProgress)) || this.isZooming();
234
+ if (HandlerResult.panDelta !== undefined) {
235
+ eventsInProgress.drag = eventData;
268
236
  }
269
- }, {
270
- key: "mergeIHandlerResult",
271
- value: function mergeIHandlerResult(mergedIHandlerResult, eventsInProgress, HandlerResult, name, e) {
272
- if (!HandlerResult) {
273
- return;
274
- }
275
- merge(mergedIHandlerResult, HandlerResult);
276
- var eventData = {
277
- handlerName: name,
278
- originalEvent: HandlerResult.originalEvent || e
279
- };
280
-
281
- // track which handler changed which camera property
282
- if (HandlerResult.zoomDelta !== undefined) {
283
- eventsInProgress.zoom = eventData;
284
- }
285
- if (HandlerResult.panDelta !== undefined) {
286
- eventsInProgress.drag = eventData;
287
- }
288
- if (HandlerResult.pitchDelta !== undefined) {
289
- eventsInProgress.pitch = eventData;
290
- }
291
- if (HandlerResult.bearingDelta !== undefined) {
292
- eventsInProgress.rotate = eventData;
293
- }
237
+ if (HandlerResult.pitchDelta !== undefined) {
238
+ eventsInProgress.pitch = eventData;
294
239
  }
295
- }, {
296
- key: "triggerRenderFrame",
297
- value: function triggerRenderFrame() {
298
- var _this2 = this;
299
- if (this.frameId === undefined) {
300
- this.frameId = this.map.requestRenderFrame(function (timeStamp) {
301
- // @ts-ignore
302
- delete _this2.frameId;
303
- _this2.handleEvent(new RenderFrameEvent('renderFrame', {
304
- timeStamp: timeStamp
305
- }));
306
- _this2.applyChanges();
307
- });
308
- }
240
+ if (HandlerResult.bearingDelta !== undefined) {
241
+ eventsInProgress.rotate = eventData;
309
242
  }
310
- }, {
311
- key: "addDefaultHandlers",
312
- value: function addDefaultHandlers(options) {
313
- var map = this.map;
314
- var el = map.getCanvasContainer();
315
- this.add('mapEvent', new MapEventHandler(map, options));
316
- var boxZoom = map.boxZoom = new BoxZoomHandler(map, options);
317
- this.add('boxZoom', boxZoom);
318
- var tapZoom = new TapZoomHandler();
319
- var clickZoom = new ClickZoomHandler();
320
- map.doubleClickZoom = new DoubleClickZoomHandler(clickZoom, tapZoom);
321
- this.add('tapZoom', tapZoom);
322
- this.add('clickZoom', clickZoom);
323
- var tapDragZoom = new TapDragZoomHandler();
324
- this.add('tapDragZoom', tapDragZoom);
325
- var touchPitch = map.touchPitch = new TouchPitchHandler();
326
- this.add('touchPitch', touchPitch);
327
- var mouseRotate = new MouseRotateHandler(options);
328
- var mousePitch = new MousePitchHandler(options);
329
- map.dragRotate = new DragRotateHandler(options, mouseRotate, mousePitch);
330
- this.add('mouseRotate', mouseRotate, ['mousePitch']);
331
- this.add('mousePitch', mousePitch, ['mouseRotate']);
332
- var mousePan = new MousePanHandler(options);
333
- var touchPan = new TouchPanHandler(options);
334
- map.dragPan = new DragPanHandler(el, mousePan, touchPan);
335
- this.add('mousePan', mousePan);
336
- this.add('touchPan', touchPan, ['touchZoom', 'touchRotate']);
337
- var touchRotate = new TouchRotateHandler();
338
- var touchZoom = new TouchZoomHandler();
339
- map.touchZoomRotate = new TouchZoomRotateHandler(el, touchZoom, touchRotate, tapDragZoom);
340
- this.add('touchRotate', touchRotate, ['touchPan', 'touchZoom']);
341
- this.add('touchZoom', touchZoom, ['touchPan', 'touchRotate']);
342
- var scrollZoom = map.scrollZoom = new ScrollZoomHandler(map, this);
343
- this.add('scrollZoom', scrollZoom, ['mousePan']);
344
- var keyboard = map.keyboard = new KeyboardHandler();
345
- this.add('keyboard', keyboard);
346
- this.add('blockableMapEvent', new BlockableMapEventHandler(map));
347
- for (var _i = 0, _arr = ['boxZoom', 'doubleClickZoom', 'tapDragZoom', 'touchPitch', 'dragRotate', 'dragPan', 'touchZoomRotate', 'scrollZoom', 'keyboard']; _i < _arr.length; _i++) {
348
- var name = _arr[_i];
243
+ }
244
+ triggerRenderFrame() {
245
+ if (this.frameId === undefined) {
246
+ this.frameId = this.map.requestRenderFrame(timeStamp => {
349
247
  // @ts-ignore
350
- if (options.interactive && options[name]) {
351
- // @ts-ignore
352
- map[name].enable(options[name]);
353
- }
354
- }
355
- }
356
- }, {
357
- key: "add",
358
- value: function add(handlerName, handler, allowed) {
359
- this.handlers.push({
360
- handlerName: handlerName,
361
- handler: handler,
362
- allowed: allowed
248
+ delete this.frameId;
249
+ this.handleEvent(new RenderFrameEvent('renderFrame', {
250
+ timeStamp
251
+ }));
252
+ this.applyChanges();
363
253
  });
364
- this.handlersById[handlerName] = handler;
365
254
  }
366
- }, {
367
- key: "blockedByActive",
368
- value: function blockedByActive(activeHandlers, allowed, myName) {
369
- for (var name in activeHandlers) {
370
- if (name === myName) {
371
- continue;
372
- }
373
- if (!allowed || allowed.indexOf(name) < 0) {
374
- return true;
375
- }
255
+ }
256
+ addDefaultHandlers(options) {
257
+ const map = this.map;
258
+ const el = map.getCanvasContainer();
259
+ this.add('mapEvent', new MapEventHandler(map, options));
260
+ const boxZoom = map.boxZoom = new BoxZoomHandler(map, options);
261
+ this.add('boxZoom', boxZoom);
262
+ const tapZoom = new TapZoomHandler();
263
+ const clickZoom = new ClickZoomHandler();
264
+ map.doubleClickZoom = new DoubleClickZoomHandler(clickZoom, tapZoom);
265
+ this.add('tapZoom', tapZoom);
266
+ this.add('clickZoom', clickZoom);
267
+ const tapDragZoom = new TapDragZoomHandler();
268
+ this.add('tapDragZoom', tapDragZoom);
269
+ const touchPitch = map.touchPitch = new TouchPitchHandler();
270
+ this.add('touchPitch', touchPitch);
271
+ const mouseRotate = new MouseRotateHandler(options);
272
+ const mousePitch = new MousePitchHandler(options);
273
+ map.dragRotate = new DragRotateHandler(options, mouseRotate, mousePitch);
274
+ this.add('mouseRotate', mouseRotate, ['mousePitch']);
275
+ this.add('mousePitch', mousePitch, ['mouseRotate']);
276
+ const mousePan = new MousePanHandler(options);
277
+ const touchPan = new TouchPanHandler(options);
278
+ map.dragPan = new DragPanHandler(el, mousePan, touchPan);
279
+ this.add('mousePan', mousePan);
280
+ this.add('touchPan', touchPan, ['touchZoom', 'touchRotate']);
281
+ const touchRotate = new TouchRotateHandler();
282
+ const touchZoom = new TouchZoomHandler();
283
+ map.touchZoomRotate = new TouchZoomRotateHandler(el, touchZoom, touchRotate, tapDragZoom);
284
+ this.add('touchRotate', touchRotate, ['touchPan', 'touchZoom']);
285
+ this.add('touchZoom', touchZoom, ['touchPan', 'touchRotate']);
286
+ const scrollZoom = map.scrollZoom = new ScrollZoomHandler(map, this);
287
+ this.add('scrollZoom', scrollZoom, ['mousePan']);
288
+ const keyboard = map.keyboard = new KeyboardHandler();
289
+ this.add('keyboard', keyboard);
290
+ this.add('blockableMapEvent', new BlockableMapEventHandler(map));
291
+ for (const name of ['boxZoom', 'doubleClickZoom', 'tapDragZoom', 'touchPitch', 'dragRotate', 'dragPan', 'touchZoomRotate', 'scrollZoom', 'keyboard']) {
292
+ // @ts-ignore
293
+ if (options.interactive && options[name]) {
294
+ // @ts-ignore
295
+ map[name].enable(options[name]);
376
296
  }
377
- return false;
378
297
  }
379
- }, {
380
- key: "getMapTouches",
381
- value: function getMapTouches(touches) {
382
- var mapTouches = [];
383
- var _iterator6 = _createForOfIteratorHelper(touches),
384
- _step6;
385
- try {
386
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
387
- var t = _step6.value;
388
- var target = t.target;
389
- if (this.el.contains(target)) {
390
- mapTouches.push(t);
391
- }
392
- }
393
- } catch (err) {
394
- _iterator6.e(err);
395
- } finally {
396
- _iterator6.f();
298
+ }
299
+ add(handlerName, handler, allowed) {
300
+ this.handlers.push({
301
+ handlerName,
302
+ handler,
303
+ allowed
304
+ });
305
+ this.handlersById[handlerName] = handler;
306
+ }
307
+ blockedByActive(activeHandlers, allowed, myName) {
308
+ for (const name in activeHandlers) {
309
+ if (name === myName) {
310
+ continue;
311
+ }
312
+ if (!allowed || allowed.indexOf(name) < 0) {
313
+ return true;
397
314
  }
398
- return mapTouches;
399
315
  }
400
- }, {
401
- key: "applyChanges",
402
- value: function applyChanges() {
403
- var combined = {};
404
- var combinedEventsInProgress = {};
405
- var combinedDeactivatedHandlers = {};
406
- var _iterator7 = _createForOfIteratorHelper(this.changes),
407
- _step7;
408
- try {
409
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
410
- var _step7$value = _slicedToArray(_step7.value, 3),
411
- change = _step7$value[0],
412
- eventsInProgress = _step7$value[1],
413
- deactivatedHandlers = _step7$value[2];
414
- if (change.panDelta) {
415
- combined.panDelta = (combined.panDelta || new Point(0, 0))._add(change.panDelta);
416
- }
417
- if (change.zoomDelta) {
418
- combined.zoomDelta = (combined.zoomDelta || 0) + change.zoomDelta;
419
- }
420
- if (change.bearingDelta) {
421
- combined.bearingDelta = (combined.bearingDelta || 0) + change.bearingDelta;
422
- }
423
- if (change.pitchDelta) {
424
- combined.pitchDelta = (combined.pitchDelta || 0) + change.pitchDelta;
425
- }
426
- if (change.around !== undefined) {
427
- combined.around = change.around;
428
- }
429
- if (change.pinchAround !== undefined) {
430
- combined.pinchAround = change.pinchAround;
431
- }
432
- if (change.noInertia) {
433
- combined.noInertia = change.noInertia;
434
- }
435
- merge(combinedEventsInProgress, eventsInProgress);
436
- merge(combinedDeactivatedHandlers, deactivatedHandlers);
437
- }
438
- } catch (err) {
439
- _iterator7.e(err);
440
- } finally {
441
- _iterator7.f();
316
+ return false;
317
+ }
318
+ getMapTouches(touches) {
319
+ const mapTouches = [];
320
+ for (const t of touches) {
321
+ const target = t.target;
322
+ if (this.el.contains(target)) {
323
+ mapTouches.push(t);
442
324
  }
443
- this.updateMapTransform(combined, combinedEventsInProgress, combinedDeactivatedHandlers);
444
- this.changes = [];
445
325
  }
446
- }, {
447
- key: "updateMapTransform",
448
- value: function updateMapTransform(combinedResult, combinedEventsInProgress, deactivatedHandlers) {
449
- var map = this.map;
450
- var tr = map.transform;
451
- if (!hasChange(combinedResult)) {
452
- return this.fireEvents(combinedEventsInProgress, deactivatedHandlers);
326
+ return mapTouches;
327
+ }
328
+ applyChanges() {
329
+ const combined = {};
330
+ const combinedEventsInProgress = {};
331
+ const combinedDeactivatedHandlers = {};
332
+ for (const [change, eventsInProgress, deactivatedHandlers] of this.changes) {
333
+ if (change.panDelta) {
334
+ combined.panDelta = (combined.panDelta || new Point(0, 0))._add(change.panDelta);
453
335
  }
454
- var panDelta = combinedResult.panDelta,
455
- zoomDelta = combinedResult.zoomDelta,
456
- bearingDelta = combinedResult.bearingDelta,
457
- pitchDelta = combinedResult.pitchDelta,
458
- pinchAround = combinedResult.pinchAround;
459
- var around = combinedResult.around;
460
- if (pinchAround !== undefined) {
461
- around = pinchAround;
336
+ if (change.zoomDelta) {
337
+ combined.zoomDelta = (combined.zoomDelta || 0) + change.zoomDelta;
462
338
  }
463
-
464
- // stop any ongoing camera animations (easeTo, flyTo)
465
- map.stop(true);
466
- around = around || map.transform.centerPoint;
467
- var loc = tr.pointLocation(panDelta ? around.sub(panDelta) : around);
468
- if (bearingDelta && this.rotateEnabled) {
469
- tr.bearing += bearingDelta;
339
+ if (change.bearingDelta) {
340
+ combined.bearingDelta = (combined.bearingDelta || 0) + change.bearingDelta;
470
341
  }
471
- if (pitchDelta && this.pitchEnabled) {
472
- tr.pitch += pitchDelta;
342
+ if (change.pitchDelta) {
343
+ combined.pitchDelta = (combined.pitchDelta || 0) + change.pitchDelta;
473
344
  }
474
- if (zoomDelta) {
475
- tr.zoom += zoomDelta;
345
+ if (change.around !== undefined) {
346
+ combined.around = change.around;
476
347
  }
477
- tr.setLocationAtPoint(loc, around);
478
- this.map.update();
479
- if (!combinedResult.noInertia) {
480
- this.inertia.record(combinedResult);
348
+ if (change.pinchAround !== undefined) {
349
+ combined.pinchAround = change.pinchAround;
481
350
  }
482
- this.fireEvents(combinedEventsInProgress, deactivatedHandlers);
483
- }
484
- }, {
485
- key: "fireEvents",
486
- value: function fireEvents(newEventsInProgress, deactivatedHandlers) {
487
- var _this3 = this;
488
- var wasMoving = _isMoving(this.eventsInProgress);
489
- var nowMoving = _isMoving(newEventsInProgress);
490
- var startEvents = {};
491
- for (var eventName in newEventsInProgress) {
492
- if (newEventsInProgress[eventName]) {
493
- var originalEvent = newEventsInProgress[eventName].originalEvent;
494
- if (!this.eventsInProgress[eventName]) {
495
- startEvents["".concat(eventName, "start")] = originalEvent;
496
- }
497
- this.eventsInProgress[eventName] = newEventsInProgress[eventName];
498
- }
351
+ if (change.noInertia) {
352
+ combined.noInertia = change.noInertia;
499
353
  }
354
+ merge(combinedEventsInProgress, eventsInProgress);
355
+ merge(combinedDeactivatedHandlers, deactivatedHandlers);
356
+ }
357
+ this.updateMapTransform(combined, combinedEventsInProgress, combinedDeactivatedHandlers);
358
+ this.changes = [];
359
+ }
360
+ updateMapTransform(combinedResult, combinedEventsInProgress, deactivatedHandlers) {
361
+ const map = this.map;
362
+ const tr = map.transform;
363
+ if (!hasChange(combinedResult)) {
364
+ return this.fireEvents(combinedEventsInProgress, deactivatedHandlers);
365
+ }
366
+ const {
367
+ panDelta,
368
+ zoomDelta,
369
+ bearingDelta,
370
+ pitchDelta,
371
+ pinchAround
372
+ } = combinedResult;
373
+ let {
374
+ around
375
+ } = combinedResult;
376
+ if (pinchAround !== undefined) {
377
+ around = pinchAround;
378
+ }
500
379
 
501
- // fire start events only after this.eventsInProgress has been updated
502
- if (!wasMoving && nowMoving) {
503
- this.fireEvent('movestart', nowMoving.originalEvent);
504
- }
505
- for (var name in startEvents) {
506
- if (startEvents[name]) {
507
- this.fireEvent(name, startEvents[name]);
380
+ // stop any ongoing camera animations (easeTo, flyTo)
381
+ map.stop(true);
382
+ around = around || map.transform.centerPoint;
383
+ const loc = tr.pointLocation(panDelta ? around.sub(panDelta) : around);
384
+ if (bearingDelta && this.rotateEnabled) {
385
+ tr.bearing += bearingDelta;
386
+ }
387
+ if (pitchDelta && this.pitchEnabled) {
388
+ tr.pitch += pitchDelta;
389
+ }
390
+ if (zoomDelta) {
391
+ tr.zoom += zoomDelta;
392
+ }
393
+ tr.setLocationAtPoint(loc, around);
394
+ this.map.update();
395
+ if (!combinedResult.noInertia) {
396
+ this.inertia.record(combinedResult);
397
+ }
398
+ this.fireEvents(combinedEventsInProgress, deactivatedHandlers);
399
+ }
400
+ fireEvents(newEventsInProgress, deactivatedHandlers) {
401
+ const wasMoving = isMoving(this.eventsInProgress);
402
+ const nowMoving = isMoving(newEventsInProgress);
403
+ const startEvents = {};
404
+ for (const eventName in newEventsInProgress) {
405
+ if (newEventsInProgress[eventName]) {
406
+ const {
407
+ originalEvent
408
+ } = newEventsInProgress[eventName];
409
+ if (!this.eventsInProgress[eventName]) {
410
+ startEvents[`${eventName}start`] = originalEvent;
508
411
  }
412
+ this.eventsInProgress[eventName] = newEventsInProgress[eventName];
509
413
  }
510
- if (newEventsInProgress.rotate) {
511
- this.bearingChanged = true;
414
+ }
415
+
416
+ // fire start events only after this.eventsInProgress has been updated
417
+ if (!wasMoving && nowMoving) {
418
+ this.fireEvent('movestart', nowMoving.originalEvent);
419
+ }
420
+ for (const name in startEvents) {
421
+ if (startEvents[name]) {
422
+ this.fireEvent(name, startEvents[name]);
512
423
  }
513
- if (nowMoving) {
514
- this.fireEvent('move', nowMoving.originalEvent);
424
+ }
425
+ if (newEventsInProgress.rotate) {
426
+ this.bearingChanged = true;
427
+ }
428
+ if (nowMoving) {
429
+ this.fireEvent('move', nowMoving.originalEvent);
430
+ }
431
+ for (const eventName in newEventsInProgress) {
432
+ if (newEventsInProgress[eventName]) {
433
+ const {
434
+ originalEvent
435
+ } = newEventsInProgress[eventName];
436
+ this.fireEvent(eventName, originalEvent);
515
437
  }
516
- for (var _eventName in newEventsInProgress) {
517
- if (newEventsInProgress[_eventName]) {
518
- var _originalEvent = newEventsInProgress[_eventName].originalEvent;
519
- this.fireEvent(_eventName, _originalEvent);
438
+ }
439
+ const endEvents = {};
440
+ let originalEndEvent;
441
+ for (const eventName in this.eventsInProgress) {
442
+ if (this.eventsInProgress[eventName]) {
443
+ const {
444
+ handlerName,
445
+ originalEvent
446
+ } = this.eventsInProgress[eventName];
447
+ if (!this.handlersById[handlerName].isActive()) {
448
+ delete this.eventsInProgress[eventName];
449
+ originalEndEvent = deactivatedHandlers[handlerName] || originalEvent;
450
+ endEvents[`${eventName}end`] = originalEndEvent;
520
451
  }
521
452
  }
522
- var endEvents = {};
523
- var originalEndEvent;
524
- for (var _eventName2 in this.eventsInProgress) {
525
- if (this.eventsInProgress[_eventName2]) {
526
- var _this$eventsInProgres = this.eventsInProgress[_eventName2],
527
- handlerName = _this$eventsInProgres.handlerName,
528
- _originalEvent2 = _this$eventsInProgres.originalEvent;
529
- if (!this.handlersById[handlerName].isActive()) {
530
- delete this.eventsInProgress[_eventName2];
531
- originalEndEvent = deactivatedHandlers[handlerName] || _originalEvent2;
532
- endEvents["".concat(_eventName2, "end")] = originalEndEvent;
533
- }
534
- }
453
+ }
454
+ for (const name in endEvents) {
455
+ if (endEvents[name]) {
456
+ this.fireEvent(name, endEvents[name]);
535
457
  }
536
- for (var _name in endEvents) {
537
- if (endEvents[_name]) {
538
- this.fireEvent(_name, endEvents[_name]);
458
+ }
459
+ const stillMoving = isMoving(this.eventsInProgress);
460
+ if ((wasMoving || nowMoving) && !stillMoving) {
461
+ this.updatingCamera = true;
462
+ const inertialEase = this.inertia.onMoveEnd(this.map.dragPan.inertiaOptions);
463
+ const shouldSnapToNorth = bearing => bearing !== 0 && -this.bearingSnap < bearing && bearing < this.bearingSnap;
464
+ if (inertialEase) {
465
+ if (shouldSnapToNorth(inertialEase.bearing || this.map.getBearing())) {
466
+ inertialEase.bearing = 0;
539
467
  }
540
- }
541
- var stillMoving = _isMoving(this.eventsInProgress);
542
- if ((wasMoving || nowMoving) && !stillMoving) {
543
- this.updatingCamera = true;
544
- var inertialEase = this.inertia.onMoveEnd(this.map.dragPan.inertiaOptions);
545
- var shouldSnapToNorth = function shouldSnapToNorth(bearing) {
546
- return bearing !== 0 && -_this3.bearingSnap < bearing && bearing < _this3.bearingSnap;
547
- };
548
- if (inertialEase) {
549
- if (shouldSnapToNorth(inertialEase.bearing || this.map.getBearing())) {
550
- inertialEase.bearing = 0;
551
- }
552
- this.map.easeTo(inertialEase, {
553
- originalEvent: originalEndEvent
554
- });
555
- } else {
556
- this.map.emit('moveend', new Event('moveend', {
557
- originalEvent: originalEndEvent
558
- }));
559
- if (shouldSnapToNorth(this.map.getBearing())) {
560
- this.map.resetNorth();
561
- }
468
+ this.map.easeTo(inertialEase, {
469
+ originalEvent: originalEndEvent
470
+ });
471
+ } else {
472
+ this.map.emit('moveend', new Event('moveend', {
473
+ originalEvent: originalEndEvent
474
+ }));
475
+ if (shouldSnapToNorth(this.map.getBearing())) {
476
+ this.map.resetNorth();
562
477
  }
563
- this.bearingChanged = false;
564
- this.updatingCamera = false;
565
478
  }
479
+ this.bearingChanged = false;
480
+ this.updatingCamera = false;
566
481
  }
567
- }, {
568
- key: "fireEvent",
569
- value: function fireEvent(type, e) {
570
- this.map.emit(type, new Event(type, e ? {
571
- originalEvent: e
572
- } : {}));
573
- }
574
- }]);
575
- return HandlerManager;
576
- }();
482
+ }
483
+ fireEvent(type, e) {
484
+ this.map.emit(type, new Event(type, e ? {
485
+ originalEvent: e
486
+ } : {}));
487
+ }
488
+ }
577
489
  export default HandlerManager;