/* *
|
*
|
* (c) 2010-2019 Torstein Honsi
|
*
|
* License: www.highcharts.com/license
|
*
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
*
|
* */
|
'use strict';
|
|
var _Globals = require('../parts/Globals.js');
|
|
var _Globals2 = _interopRequireDefault(_Globals);
|
|
require('../parts/Utilities.js');
|
|
require('../parts/Pointer.js');
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
var extend = _Globals2.default.extend,
|
pick = _Globals2.default.pick,
|
Pointer = _Globals2.default.Pointer,
|
wrap = _Globals2.default.wrap;
|
/* eslint-disable no-invalid-this */
|
// Extend the Pointer
|
extend(Pointer.prototype, {
|
// The event handler for the doubleclick event
|
onContainerDblClick: function onContainerDblClick(e) {
|
var chart = this.chart;
|
e = this.normalize(e);
|
if (chart.options.mapNavigation.enableDoubleClickZoomTo) {
|
if (chart.pointer.inClass(e.target, 'highcharts-tracker') && chart.hoverPoint) {
|
chart.hoverPoint.zoomTo();
|
}
|
} else if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
|
chart.mapZoom(0.5, chart.xAxis[0].toValue(e.chartX), chart.yAxis[0].toValue(e.chartY), e.chartX, e.chartY);
|
}
|
},
|
// The event handler for the mouse scroll event
|
onContainerMouseWheel: function onContainerMouseWheel(e) {
|
var chart = this.chart,
|
delta;
|
e = this.normalize(e);
|
// Firefox uses e.detail, WebKit and IE uses wheelDelta
|
delta = e.detail || -(e.wheelDelta / 120);
|
if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
|
chart.mapZoom(Math.pow(chart.options.mapNavigation.mouseWheelSensitivity, delta), chart.xAxis[0].toValue(e.chartX), chart.yAxis[0].toValue(e.chartY), e.chartX, e.chartY);
|
}
|
}
|
});
|
// The pinchType is inferred from mapNavigation options.
|
wrap(Pointer.prototype, 'zoomOption', function (proceed) {
|
var mapNavigation = this.chart.options.mapNavigation;
|
// Pinch status
|
if (pick(mapNavigation.enableTouchZoom, mapNavigation.enabled)) {
|
this.chart.options.chart.pinchType = 'xy';
|
}
|
proceed.apply(this, [].slice.call(arguments, 1));
|
});
|
// Extend the pinchTranslate method to preserve fixed ratio when zooming
|
wrap(Pointer.prototype, 'pinchTranslate', function (proceed, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {
|
var xBigger;
|
proceed.call(this, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);
|
// Keep ratio
|
if (this.chart.options.chart.type === 'map' && this.hasZoom) {
|
xBigger = transform.scaleX > transform.scaleY;
|
this.pinchTranslateDirection(!xBigger, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch, xBigger ? transform.scaleX : transform.scaleY);
|
}
|
});
|