'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');

var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);

var _createClass2 = require('babel-runtime/helpers/createClass');

var _createClass3 = _interopRequireDefault(_createClass2);

var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');

var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);

var _inherits2 = require('babel-runtime/helpers/inherits');

var _inherits3 = _interopRequireDefault(_inherits2);

var _basicMapApiClass = require('../util/basicMapApiClass');

var _basicMapApiClass2 = _interopRequireDefault(_basicMapApiClass);

var _dragPan = require('./dragPan');

var _dragPan2 = _interopRequireDefault(_dragPan);

var _cursor = require('./cursor');

var _cursor2 = _interopRequireDefault(_cursor);

var _zoomInOut = require('./zoomInOut');

var _zoomInOut2 = _interopRequireDefault(_zoomInOut);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

/**
 * @文件说明: 构建Map.Handlers地图内置交互对象
 * @创建人: pjtools@vip.qq.com
 * @创建时间: 2020-05-14 11:41:07
 */

var Handlers = function (_BasicMapApi) {
  (0, _inherits3['default'])(Handlers, _BasicMapApi);

  /**
   * Handlers地图内置交互
   * 其中包括：[ dragRotate | scrollZoom | boxZoom | keyboard | doubleClickZoom | touchZoomRotate | dragPan | Cursor | ZoomInOut ]
   * @param {MapApi} iMapApi 地图Api实例化对象
   */
  function Handlers() {
    var _ref;

    (0, _classCallCheck3['default'])(this, Handlers);

    for (var _len = arguments.length, arg = Array(_len), _key = 0; _key < _len; _key++) {
      arg[_key] = arguments[_key];
    }

    // 初始化内置地图交互对象
    var _this = (0, _possibleConstructorReturn3['default'])(this, (_ref = Handlers.__proto__ || Object.getPrototypeOf(Handlers)).call.apply(_ref, [this].concat(arg)));

    _this.map = _this.iMapApi && _this.iMapApi.map;
    if (_this.map) {
      !_this.map.pjCursor && (_this.map.pjCursor = new _cursor2['default'](_this.iMapApi));
      !_this.map.pjDragPan && (_this.map.pjDragPan = new _dragPan2['default'](_this.iMapApi));
      !_this.map.pjZoomInOut && (_this.map.pjZoomInOut = new _zoomInOut2['default'](_this.iMapApi));
    }
    return _this;
  }

  /**
   * 获取 dragRotate 拖拽旋转交互对象（操作：Ctrl + 鼠标拖拽旋转 | 鼠标反键旋转）
   * @readonly
   */


  (0, _createClass3['default'])(Handlers, [{
    key: 'dragRotate',
    get: function get() {
      return this.map && this.map.dragRotate;
    }

    /**
     * 获取 scrollZoom 鼠标滚轮缩放交互对象（操作：鼠标中键滚轮）
     * @readonly
     */

  }, {
    key: 'scrollZoom',
    get: function get() {
      return this.map && this.map.scrollZoom;
    }

    /**
     * 获取 boxZoom 键盘+鼠标组合拉框放大交互对象（操作：Shift + 拉框放大）
     * @readonly
     */

  }, {
    key: 'boxZoom',
    get: function get() {
      return this.map && this.map.boxZoom;
    }

    /**
     * 获取 keyboard 键盘快捷组合键交互对象
     * 键盘组合键说明：
     * +/= ：层级放大1级
     * -/— ：层级缩小1级
     * Shift + ：层级放大2级
     * Shift - ：层级缩小2级
     * 方向键上下左右：地图上下左右平移 100px 像素距离
     * Shift ↑ ：地图增加倾斜15度
     * Shift ↓ ：地图减少倾斜15度
     * Shift ← ：地图顺时针旋转10度
     * Shift → ：地图逆时针旋转10度
     * @readonly
     */

  }, {
    key: 'keyboard',
    get: function get() {
      return this.map && this.map.keyboard;
    }

    /**
     * 获取 doubleClickZoom 鼠标双击放大交互对象（操作：鼠标左键双击放大）
     * @readonly
     */

  }, {
    key: 'doubleClickZoom',
    get: function get() {
      return this.map && this.map.doubleClickZoom;
    }

    /**
     * 获取 touchZoomRotate 触摸屏双指缩放旋转交互对象（操作：触摸屏双指缩放与旋转）
     * @readonly
     */

  }, {
    key: 'touchZoomRotate',
    get: function get() {
      return this.map && this.map.touchZoomRotate;
    }

    /**
     * 获取 dragPan 地图漫游交互对象（操作：鼠标拖拽移动 | 触摸屏移动）
     * @readonly
     */

  }, {
    key: 'dragPan',
    get: function get() {
      return this.map && this.map.pjDragPan;
    }

    /**
     * 获取 cursor 地图光标对象（操作：鼠标光标）
     * @readonly
     */

  }, {
    key: 'cursor',
    get: function get() {
      return this.map && this.map.pjCursor;
    }

    /**
     * 获取 ZoomInOut 地图鼠标拉框放大缩小对象（操作：鼠标左键单击 + 拖拽）
     * @readonly
     */

  }, {
    key: 'zoomInOut',
    get: function get() {
      return this.map && this.map.pjZoomInOut;
    }
  }]);
  return Handlers;
}(_basicMapApiClass2['default']);

exports['default'] = Handlers;