| 
/* 
 | 
* Licensed to the Apache Software Foundation (ASF) under one 
 | 
* or more contributor license agreements.  See the NOTICE file 
 | 
* distributed with this work for additional information 
 | 
* regarding copyright ownership.  The ASF licenses this file 
 | 
* to you under the Apache License, Version 2.0 (the 
 | 
* "License"); you may not use this file except in compliance 
 | 
* with the License.  You may obtain a copy of the License at 
 | 
* 
 | 
*   http://www.apache.org/licenses/LICENSE-2.0 
 | 
* 
 | 
* Unless required by applicable law or agreed to in writing, 
 | 
* software distributed under the License is distributed on an 
 | 
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
 | 
* KIND, either express or implied.  See the License for the 
 | 
* specific language governing permissions and limitations 
 | 
* under the License. 
 | 
*/ 
 | 
  
 | 
  
 | 
/** 
 | 
 * AUTO-GENERATED FILE. DO NOT MODIFY. 
 | 
 */ 
 | 
  
 | 
/* 
 | 
* Licensed to the Apache Software Foundation (ASF) under one 
 | 
* or more contributor license agreements.  See the NOTICE file 
 | 
* distributed with this work for additional information 
 | 
* regarding copyright ownership.  The ASF licenses this file 
 | 
* to you under the Apache License, Version 2.0 (the 
 | 
* "License"); you may not use this file except in compliance 
 | 
* with the License.  You may obtain a copy of the License at 
 | 
* 
 | 
*   http://www.apache.org/licenses/LICENSE-2.0 
 | 
* 
 | 
* Unless required by applicable law or agreed to in writing, 
 | 
* software distributed under the License is distributed on an 
 | 
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
 | 
* KIND, either express or implied.  See the License for the 
 | 
* specific language governing permissions and limitations 
 | 
* under the License. 
 | 
*/ 
 | 
import { __extends } from "tslib"; 
 | 
import DataZoomView from './DataZoomView.js'; 
 | 
import sliderMove from '../helper/sliderMove.js'; 
 | 
import * as roams from './roams.js'; 
 | 
import { bind } from 'zrender/lib/core/util.js'; 
 | 
var InsideZoomView = /** @class */function (_super) { 
 | 
  __extends(InsideZoomView, _super); 
 | 
  function InsideZoomView() { 
 | 
    var _this = _super !== null && _super.apply(this, arguments) || this; 
 | 
    _this.type = 'dataZoom.inside'; 
 | 
    return _this; 
 | 
  } 
 | 
  InsideZoomView.prototype.render = function (dataZoomModel, ecModel, api) { 
 | 
    _super.prototype.render.apply(this, arguments); 
 | 
    if (dataZoomModel.noTarget()) { 
 | 
      this._clear(); 
 | 
      return; 
 | 
    } 
 | 
    // Hence the `throttle` util ensures to preserve command order, 
 | 
    // here simply updating range all the time will not cause missing 
 | 
    // any of the the roam change. 
 | 
    this.range = dataZoomModel.getPercentRange(); 
 | 
    // Reset controllers. 
 | 
    roams.setViewInfoToCoordSysRecord(api, dataZoomModel, { 
 | 
      pan: bind(getRangeHandlers.pan, this), 
 | 
      zoom: bind(getRangeHandlers.zoom, this), 
 | 
      scrollMove: bind(getRangeHandlers.scrollMove, this) 
 | 
    }); 
 | 
  }; 
 | 
  InsideZoomView.prototype.dispose = function () { 
 | 
    this._clear(); 
 | 
    _super.prototype.dispose.apply(this, arguments); 
 | 
  }; 
 | 
  InsideZoomView.prototype._clear = function () { 
 | 
    roams.disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel); 
 | 
    this.range = null; 
 | 
  }; 
 | 
  InsideZoomView.type = 'dataZoom.inside'; 
 | 
  return InsideZoomView; 
 | 
}(DataZoomView); 
 | 
var getRangeHandlers = { 
 | 
  zoom: function (coordSysInfo, coordSysMainType, controller, e) { 
 | 
    var lastRange = this.range; 
 | 
    var range = lastRange.slice(); 
 | 
    // Calculate transform by the first axis. 
 | 
    var axisModel = coordSysInfo.axisModels[0]; 
 | 
    if (!axisModel) { 
 | 
      return; 
 | 
    } 
 | 
    var directionInfo = getDirectionInfo[coordSysMainType](null, [e.originX, e.originY], axisModel, controller, coordSysInfo); 
 | 
    var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0]; 
 | 
    var scale = Math.max(1 / e.scale, 0); 
 | 
    range[0] = (range[0] - percentPoint) * scale + percentPoint; 
 | 
    range[1] = (range[1] - percentPoint) * scale + percentPoint; 
 | 
    // Restrict range. 
 | 
    var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); 
 | 
    sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan); 
 | 
    this.range = range; 
 | 
    if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) { 
 | 
      return range; 
 | 
    } 
 | 
  }, 
 | 
  pan: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) { 
 | 
    var directionInfo = getDirectionInfo[coordSysMainType]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordSysInfo); 
 | 
    return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength; 
 | 
  }), 
 | 
  scrollMove: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) { 
 | 
    var directionInfo = getDirectionInfo[coordSysMainType]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordSysInfo); 
 | 
    return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta; 
 | 
  }) 
 | 
}; 
 | 
function makeMover(getPercentDelta) { 
 | 
  return function (coordSysInfo, coordSysMainType, controller, e) { 
 | 
    var lastRange = this.range; 
 | 
    var range = lastRange.slice(); 
 | 
    // Calculate transform by the first axis. 
 | 
    var axisModel = coordSysInfo.axisModels[0]; 
 | 
    if (!axisModel) { 
 | 
      return; 
 | 
    } 
 | 
    var percentDelta = getPercentDelta(range, axisModel, coordSysInfo, coordSysMainType, controller, e); 
 | 
    sliderMove(percentDelta, range, [0, 100], 'all'); 
 | 
    this.range = range; 
 | 
    if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) { 
 | 
      return range; 
 | 
    } 
 | 
  }; 
 | 
} 
 | 
var getDirectionInfo = { 
 | 
  grid: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) { 
 | 
    var axis = axisModel.axis; 
 | 
    var ret = {}; 
 | 
    var rect = coordSysInfo.model.coordinateSystem.getRect(); 
 | 
    oldPoint = oldPoint || [0, 0]; 
 | 
    if (axis.dim === 'x') { 
 | 
      ret.pixel = newPoint[0] - oldPoint[0]; 
 | 
      ret.pixelLength = rect.width; 
 | 
      ret.pixelStart = rect.x; 
 | 
      ret.signal = axis.inverse ? 1 : -1; 
 | 
    } else { 
 | 
      // axis.dim === 'y' 
 | 
      ret.pixel = newPoint[1] - oldPoint[1]; 
 | 
      ret.pixelLength = rect.height; 
 | 
      ret.pixelStart = rect.y; 
 | 
      ret.signal = axis.inverse ? -1 : 1; 
 | 
    } 
 | 
    return ret; 
 | 
  }, 
 | 
  polar: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) { 
 | 
    var axis = axisModel.axis; 
 | 
    var ret = {}; 
 | 
    var polar = coordSysInfo.model.coordinateSystem; 
 | 
    var radiusExtent = polar.getRadiusAxis().getExtent(); 
 | 
    var angleExtent = polar.getAngleAxis().getExtent(); 
 | 
    oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0]; 
 | 
    newPoint = polar.pointToCoord(newPoint); 
 | 
    if (axisModel.mainType === 'radiusAxis') { 
 | 
      ret.pixel = newPoint[0] - oldPoint[0]; 
 | 
      // ret.pixelLength = Math.abs(radiusExtent[1] - radiusExtent[0]); 
 | 
      // ret.pixelStart = Math.min(radiusExtent[0], radiusExtent[1]); 
 | 
      ret.pixelLength = radiusExtent[1] - radiusExtent[0]; 
 | 
      ret.pixelStart = radiusExtent[0]; 
 | 
      ret.signal = axis.inverse ? 1 : -1; 
 | 
    } else { 
 | 
      // 'angleAxis' 
 | 
      ret.pixel = newPoint[1] - oldPoint[1]; 
 | 
      // ret.pixelLength = Math.abs(angleExtent[1] - angleExtent[0]); 
 | 
      // ret.pixelStart = Math.min(angleExtent[0], angleExtent[1]); 
 | 
      ret.pixelLength = angleExtent[1] - angleExtent[0]; 
 | 
      ret.pixelStart = angleExtent[0]; 
 | 
      ret.signal = axis.inverse ? -1 : 1; 
 | 
    } 
 | 
    return ret; 
 | 
  }, 
 | 
  singleAxis: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) { 
 | 
    var axis = axisModel.axis; 
 | 
    var rect = coordSysInfo.model.coordinateSystem.getRect(); 
 | 
    var ret = {}; 
 | 
    oldPoint = oldPoint || [0, 0]; 
 | 
    if (axis.orient === 'horizontal') { 
 | 
      ret.pixel = newPoint[0] - oldPoint[0]; 
 | 
      ret.pixelLength = rect.width; 
 | 
      ret.pixelStart = rect.x; 
 | 
      ret.signal = axis.inverse ? 1 : -1; 
 | 
    } else { 
 | 
      // 'vertical' 
 | 
      ret.pixel = newPoint[1] - oldPoint[1]; 
 | 
      ret.pixelLength = rect.height; 
 | 
      ret.pixelStart = rect.y; 
 | 
      ret.signal = axis.inverse ? -1 : 1; 
 | 
    } 
 | 
    return ret; 
 | 
  } 
 | 
}; 
 | 
export default InsideZoomView; 
 |