var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }

import React, { forwardRef } from 'react';
import { createPortal } from 'react-dom';
import Swiper from './../Swiper';

var clickSpace = null;
var Swipe = forwardRef(function (_ref, ref) {
  var onHide = _ref.onHide,
      onChange = _ref.onChange,
      defaultIndex = _ref.defaultIndex,
      children = _ref.children,
      others = _objectWithoutProperties(_ref, ['onHide', 'onChange', 'defaultIndex', 'children']);

  // 初始化轮播
  function initHandler(s) {
    s.slideTo(defaultIndex, 0);
  }

  // 点击事件: 防止与放大缩小的双击事件冲突
  function clickHandler(s, e) {
    if (e.target.classList.contains('swiper-button-prev') || e.target.classList.contains('swiper-button-next')) {
      return;
    }
    if (clickSpace) {
      window.clearTimeout(clickSpace);
      clickSpace = null;
    }
    clickSpace = setTimeout(function () {
      if (onHide) onHide(s, e);
    }, 500);
  }
  function zoomHandler() {
    if (clickSpace) {
      window.clearTimeout(clickSpace);
      clickSpace = null;
    }
  }
  return createPortal(React.createElement(
    Swiper,
    _extends({
      ref: ref,
      className: 'preview-swiper',
      params: {
        zoom: true,
        pagination: {
          el: '.swiper-pagination'
        },
        // navigation: {
        //   nextEl: '.swiper-button-next',
        //   prevEl: '.swiper-button-prev',
        // },
        on: {
          init: initHandler,
          tap: clickHandler,
          zoomChange: zoomHandler,
          slideChange: onChange
        }
      }
    }, others),
    children
  ), document.getElementById('root') || document.body);
});

export default Swipe;