df0ecac853564947a9a6631e84c27e06.json 67.2 KB
{"ast":null,"code":"import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nimport classnames from 'classnames';\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { addEventListener, dataToArray, getTouchParentScroll, isNumeric, removeEventListener, transformArguments, transitionEnd, transitionStr, windowIsUndefined } from './utils';\nvar currentDrawer = {};\n\nvar DrawerChild = /*#__PURE__*/function (_React$Component) {\n  _inherits(DrawerChild, _React$Component);\n\n  var _super = _createSuper(DrawerChild);\n\n  function DrawerChild(props) {\n    var _this;\n\n    _classCallCheck(this, DrawerChild);\n\n    _this = _super.call(this, props);\n\n    _this.domFocus = function () {\n      if (_this.dom) {\n        _this.dom.focus();\n      }\n    };\n\n    _this.removeStartHandler = function (e) {\n      if (e.touches.length > 1) {\n        return;\n      }\n\n      _this.startPos = {\n        x: e.touches[0].clientX,\n        y: e.touches[0].clientY\n      };\n    };\n\n    _this.removeMoveHandler = function (e) {\n      if (e.changedTouches.length > 1) {\n        return;\n      }\n\n      var currentTarget = e.currentTarget;\n      var differX = e.changedTouches[0].clientX - _this.startPos.x;\n      var differY = e.changedTouches[0].clientY - _this.startPos.y;\n\n      if ((currentTarget === _this.maskDom || currentTarget === _this.handlerDom || currentTarget === _this.contentDom && getTouchParentScroll(currentTarget, e.target, differX, differY)) && e.cancelable) {\n        e.preventDefault();\n      }\n    };\n\n    _this.transitionEnd = function (e) {\n      var dom = e.target;\n      removeEventListener(dom, transitionEnd, _this.transitionEnd);\n      dom.style.transition = '';\n    };\n\n    _this.onKeyDown = function (e) {\n      if (e.keyCode === KeyCode.ESC) {\n        var onClose = _this.props.onClose;\n        e.stopPropagation();\n\n        if (onClose) {\n          onClose(e);\n        }\n      }\n    };\n\n    _this.onWrapperTransitionEnd = function (e) {\n      var _this$props = _this.props,\n          open = _this$props.open,\n          afterVisibleChange = _this$props.afterVisibleChange;\n\n      if (e.target === _this.contentWrapper && e.propertyName.match(/transform$/)) {\n        _this.dom.style.transition = '';\n\n        if (!open && _this.getCurrentDrawerSome()) {\n          document.body.style.overflowX = '';\n\n          if (_this.maskDom) {\n            _this.maskDom.style.left = '';\n            _this.maskDom.style.width = '';\n          }\n        }\n\n        if (afterVisibleChange) {\n          afterVisibleChange(!!open);\n        }\n      }\n    };\n\n    _this.openLevelTransition = function () {\n      var _this$props2 = _this.props,\n          open = _this$props2.open,\n          width = _this$props2.width,\n          height = _this$props2.height;\n\n      var _this$getHorizontalBo = _this.getHorizontalBoolAndPlacementName(),\n          isHorizontal = _this$getHorizontalBo.isHorizontal,\n          placementName = _this$getHorizontalBo.placementName;\n\n      var contentValue = _this.contentDom ? _this.contentDom.getBoundingClientRect()[isHorizontal ? 'width' : 'height'] : 0;\n      var value = (isHorizontal ? width : height) || contentValue;\n\n      _this.setLevelAndScrolling(open, placementName, value);\n    };\n\n    _this.setLevelTransform = function (open, placementName, value, right) {\n      var _this$props3 = _this.props,\n          placement = _this$props3.placement,\n          levelMove = _this$props3.levelMove,\n          duration = _this$props3.duration,\n          ease = _this$props3.ease,\n          showMask = _this$props3.showMask; // router 切换时可能会导至页面失去滚动条,所以需要时时获取。\n\n      _this.levelDom.forEach(function (dom) {\n        dom.style.transition = \"transform \".concat(duration, \" \").concat(ease);\n        addEventListener(dom, transitionEnd, _this.transitionEnd);\n        var levelValue = open ? value : 0;\n\n        if (levelMove) {\n          var $levelMove = transformArguments(levelMove, {\n            target: dom,\n            open: open\n          });\n          levelValue = open ? $levelMove[0] : $levelMove[1] || 0;\n        }\n\n        var $value = typeof levelValue === 'number' ? \"\".concat(levelValue, \"px\") : levelValue;\n        var placementPos = placement === 'left' || placement === 'top' ? $value : \"-\".concat($value);\n        placementPos = showMask && placement === 'right' && right ? \"calc(\".concat(placementPos, \" + \").concat(right, \"px)\") : placementPos;\n        dom.style.transform = levelValue ? \"\".concat(placementName, \"(\").concat(placementPos, \")\") : '';\n      });\n    };\n\n    _this.setLevelAndScrolling = function (open, placementName, value) {\n      var onChange = _this.props.onChange;\n\n      if (!windowIsUndefined) {\n        var right = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth ? getScrollBarSize(true) : 0;\n\n        _this.setLevelTransform(open, placementName, value, right);\n\n        _this.toggleScrollingToDrawerAndBody(right);\n      }\n\n      if (onChange) {\n        onChange(open);\n      }\n    };\n\n    _this.toggleScrollingToDrawerAndBody = function (right) {\n      var _this$props4 = _this.props,\n          getOpenCount = _this$props4.getOpenCount,\n          getContainer = _this$props4.getContainer,\n          showMask = _this$props4.showMask,\n          open = _this$props4.open;\n      var container = getContainer && getContainer();\n      var openCount = getOpenCount && getOpenCount(); // 处理 body 滚动\n\n      if (container && container.parentNode === document.body && showMask) {\n        var eventArray = ['touchstart'];\n        var domArray = [document.body, _this.maskDom, _this.handlerDom, _this.contentDom];\n\n        if (open && document.body.style.overflow !== 'hidden') {\n          if (right) {\n            _this.addScrollingEffect(right);\n          }\n\n          if (openCount === 1) {\n            document.body.style.overflow = 'hidden';\n          }\n\n          document.body.style.touchAction = 'none'; // 手机禁滚\n\n          domArray.forEach(function (item, i) {\n            if (!item) {\n              return;\n            }\n\n            addEventListener(item, eventArray[i] || 'touchmove', i ? _this.removeMoveHandler : _this.removeStartHandler, _this.passive);\n          });\n        } else if (_this.getCurrentDrawerSome()) {\n          // 没有弹框的状态下清除 overflow;\n          if (!openCount) {\n            document.body.style.overflow = '';\n          }\n\n          document.body.style.touchAction = '';\n\n          if (right) {\n            _this.remScrollingEffect(right);\n          } // 恢复事件\n\n\n          domArray.forEach(function (item, i) {\n            if (!item) {\n              return;\n            }\n\n            removeEventListener(item, eventArray[i] || 'touchmove', i ? _this.removeMoveHandler : _this.removeStartHandler, _this.passive);\n          });\n        }\n      }\n    };\n\n    _this.addScrollingEffect = function (right) {\n      var _this$props5 = _this.props,\n          placement = _this$props5.placement,\n          duration = _this$props5.duration,\n          ease = _this$props5.ease,\n          getOpenCount = _this$props5.getOpenCount,\n          switchScrollingEffect = _this$props5.switchScrollingEffect;\n      var openCount = getOpenCount && getOpenCount();\n\n      if (openCount === 1) {\n        switchScrollingEffect();\n      }\n\n      var widthTransition = \"width \".concat(duration, \" \").concat(ease);\n      var transformTransition = \"transform \".concat(duration, \" \").concat(ease);\n      _this.dom.style.transition = 'none';\n\n      switch (placement) {\n        case 'right':\n          _this.dom.style.transform = \"translateX(-\".concat(right, \"px)\");\n          break;\n\n        case 'top':\n        case 'bottom':\n          _this.dom.style.width = \"calc(100% - \".concat(right, \"px)\");\n          _this.dom.style.transform = 'translateZ(0)';\n          break;\n\n        default:\n          break;\n      }\n\n      clearTimeout(_this.timeout);\n      _this.timeout = setTimeout(function () {\n        if (_this.dom) {\n          _this.dom.style.transition = \"\".concat(transformTransition, \",\").concat(widthTransition);\n          _this.dom.style.width = '';\n          _this.dom.style.transform = '';\n        }\n      });\n    };\n\n    _this.remScrollingEffect = function (right) {\n      var _this$props6 = _this.props,\n          placement = _this$props6.placement,\n          duration = _this$props6.duration,\n          ease = _this$props6.ease,\n          getOpenCount = _this$props6.getOpenCount,\n          switchScrollingEffect = _this$props6.switchScrollingEffect;\n      var openCount = getOpenCount && getOpenCount();\n\n      if (!openCount) {\n        switchScrollingEffect(true);\n      }\n\n      if (transitionStr) {\n        document.body.style.overflowX = 'hidden';\n      }\n\n      _this.dom.style.transition = 'none';\n      var heightTransition;\n      var widthTransition = \"width \".concat(duration, \" \").concat(ease);\n      var transformTransition = \"transform \".concat(duration, \" \").concat(ease);\n\n      switch (placement) {\n        case 'left':\n          {\n            _this.dom.style.width = '100%';\n            widthTransition = \"width 0s \".concat(ease, \" \").concat(duration);\n            break;\n          }\n\n        case 'right':\n          {\n            _this.dom.style.transform = \"translateX(\".concat(right, \"px)\");\n            _this.dom.style.width = '100%';\n            widthTransition = \"width 0s \".concat(ease, \" \").concat(duration);\n\n            if (_this.maskDom) {\n              _this.maskDom.style.left = \"-\".concat(right, \"px\");\n              _this.maskDom.style.width = \"calc(100% + \".concat(right, \"px)\");\n            }\n\n            break;\n          }\n\n        case 'top':\n        case 'bottom':\n          {\n            _this.dom.style.width = \"calc(100% + \".concat(right, \"px)\");\n            _this.dom.style.height = '100%';\n            _this.dom.style.transform = 'translateZ(0)';\n            heightTransition = \"height 0s \".concat(ease, \" \").concat(duration);\n            break;\n          }\n\n        default:\n          break;\n      }\n\n      clearTimeout(_this.timeout);\n      _this.timeout = setTimeout(function () {\n        if (_this.dom) {\n          _this.dom.style.transition = \"\".concat(transformTransition, \",\").concat(heightTransition ? \"\".concat(heightTransition, \",\") : '').concat(widthTransition);\n          _this.dom.style.transform = '';\n          _this.dom.style.width = '';\n          _this.dom.style.height = '';\n        }\n      });\n    };\n\n    _this.getCurrentDrawerSome = function () {\n      return !Object.keys(currentDrawer).some(function (key) {\n        return currentDrawer[key];\n      });\n    };\n\n    _this.getLevelDom = function (_ref) {\n      var level = _ref.level,\n          getContainer = _ref.getContainer;\n\n      if (windowIsUndefined) {\n        return;\n      }\n\n      var container = getContainer && getContainer();\n      var parent = container ? container.parentNode : null;\n      _this.levelDom = [];\n\n      if (level === 'all') {\n        var children = parent ? Array.prototype.slice.call(parent.children) : [];\n        children.forEach(function (child) {\n          if (child.nodeName !== 'SCRIPT' && child.nodeName !== 'STYLE' && child.nodeName !== 'LINK' && child !== container) {\n            _this.levelDom.push(child);\n          }\n        });\n      } else if (level) {\n        dataToArray(level).forEach(function (key) {\n          document.querySelectorAll(key).forEach(function (item) {\n            _this.levelDom.push(item);\n          });\n        });\n      }\n    };\n\n    _this.getHorizontalBoolAndPlacementName = function () {\n      var placement = _this.props.placement;\n      var isHorizontal = placement === 'left' || placement === 'right';\n      var placementName = \"translate\".concat(isHorizontal ? 'X' : 'Y');\n      return {\n        isHorizontal: isHorizontal,\n        placementName: placementName\n      };\n    };\n\n    _this.state = {\n      _self: _assertThisInitialized(_this)\n    };\n    return _this;\n  }\n\n  _createClass(DrawerChild, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      if (!windowIsUndefined) {\n        var passiveSupported = false;\n\n        try {\n          window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n            get: function get() {\n              passiveSupported = true;\n              return null;\n            }\n          }));\n        } catch (err) {}\n\n        this.passive = passiveSupported ? {\n          passive: false\n        } : false;\n      }\n\n      var _this$props7 = this.props,\n          open = _this$props7.open,\n          getContainer = _this$props7.getContainer;\n      var container = getContainer && getContainer();\n      this.drawerId = \"drawer_id_\".concat(Number((Date.now() + Math.random()).toString().replace('.', Math.round(Math.random() * 9).toString())).toString(16));\n      this.getLevelDom(this.props);\n\n      if (open) {\n        if (container && container.parentNode === document.body) {\n          currentDrawer[this.drawerId] = open;\n        } // 默认打开状态时推出 level;\n\n\n        this.openLevelTransition();\n        this.forceUpdate(function () {\n          _this2.domFocus();\n        });\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props8 = this.props,\n          open = _this$props8.open,\n          getContainer = _this$props8.getContainer;\n      var container = getContainer && getContainer();\n\n      if (open !== prevProps.open) {\n        if (open) {\n          this.domFocus();\n        }\n\n        if (container && container.parentNode === document.body) {\n          currentDrawer[this.drawerId] = !!open;\n        }\n\n        this.openLevelTransition();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var _this$props9 = this.props,\n          getOpenCount = _this$props9.getOpenCount,\n          open = _this$props9.open,\n          switchScrollingEffect = _this$props9.switchScrollingEffect;\n      var openCount = typeof getOpenCount === 'function' && getOpenCount();\n      delete currentDrawer[this.drawerId];\n\n      if (open) {\n        this.setLevelTransform(false);\n        document.body.style.touchAction = '';\n      }\n\n      if (!openCount) {\n        document.body.style.overflow = '';\n        switchScrollingEffect(true);\n      }\n    } // tslint:disable-next-line:member-ordering\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classnames,\n          _this3 = this;\n\n      var _this$props10 = this.props,\n          className = _this$props10.className,\n          children = _this$props10.children,\n          style = _this$props10.style,\n          width = _this$props10.width,\n          height = _this$props10.height,\n          defaultOpen = _this$props10.defaultOpen,\n          $open = _this$props10.open,\n          prefixCls = _this$props10.prefixCls,\n          placement = _this$props10.placement,\n          level = _this$props10.level,\n          levelMove = _this$props10.levelMove,\n          ease = _this$props10.ease,\n          duration = _this$props10.duration,\n          getContainer = _this$props10.getContainer,\n          handler = _this$props10.handler,\n          onChange = _this$props10.onChange,\n          afterVisibleChange = _this$props10.afterVisibleChange,\n          showMask = _this$props10.showMask,\n          maskClosable = _this$props10.maskClosable,\n          maskStyle = _this$props10.maskStyle,\n          onClose = _this$props10.onClose,\n          onHandleClick = _this$props10.onHandleClick,\n          keyboard = _this$props10.keyboard,\n          getOpenCount = _this$props10.getOpenCount,\n          switchScrollingEffect = _this$props10.switchScrollingEffect,\n          props = _objectWithoutProperties(_this$props10, [\"className\", \"children\", \"style\", \"width\", \"height\", \"defaultOpen\", \"open\", \"prefixCls\", \"placement\", \"level\", \"levelMove\", \"ease\", \"duration\", \"getContainer\", \"handler\", \"onChange\", \"afterVisibleChange\", \"showMask\", \"maskClosable\", \"maskStyle\", \"onClose\", \"onHandleClick\", \"keyboard\", \"getOpenCount\", \"switchScrollingEffect\"]); // 首次渲染都将是关闭状态。\n\n\n      var open = this.dom ? $open : false;\n      var wrapperClassName = classnames(prefixCls, (_classnames = {}, _defineProperty(_classnames, \"\".concat(prefixCls, \"-\").concat(placement), true), _defineProperty(_classnames, \"\".concat(prefixCls, \"-open\"), open), _defineProperty(_classnames, className || '', !!className), _defineProperty(_classnames, 'no-mask', !showMask), _classnames));\n\n      var _this$getHorizontalBo2 = this.getHorizontalBoolAndPlacementName(),\n          placementName = _this$getHorizontalBo2.placementName; // 百分比与像素动画不同步,第一次打用后全用像素动画。\n      // const defaultValue = !this.contentDom || !level ? '100%' : `${value}px`;\n\n\n      var placementPos = placement === 'left' || placement === 'top' ? '-100%' : '100%';\n      var transform = open ? '' : \"\".concat(placementName, \"(\").concat(placementPos, \")\");\n      var handlerChildren = handler && React.cloneElement(handler, {\n        onClick: function onClick(e) {\n          if (handler.props.onClick) {\n            handler.props.onClick();\n          }\n\n          if (onHandleClick) {\n            onHandleClick(e);\n          }\n        },\n        ref: function ref(c) {\n          _this3.handlerDom = c;\n        }\n      });\n      return React.createElement(\"div\", Object.assign({}, props, {\n        tabIndex: -1,\n        className: wrapperClassName,\n        style: style,\n        ref: function ref(c) {\n          _this3.dom = c;\n        },\n        onKeyDown: open && keyboard ? this.onKeyDown : undefined,\n        onTransitionEnd: this.onWrapperTransitionEnd\n      }), showMask && React.createElement(\"div\", {\n        className: \"\".concat(prefixCls, \"-mask\"),\n        onClick: maskClosable ? onClose : undefined,\n        style: maskStyle,\n        ref: function ref(c) {\n          _this3.maskDom = c;\n        }\n      }), React.createElement(\"div\", {\n        className: \"\".concat(prefixCls, \"-content-wrapper\"),\n        style: {\n          transform: transform,\n          msTransform: transform,\n          width: isNumeric(width) ? \"\".concat(width, \"px\") : width,\n          height: isNumeric(height) ? \"\".concat(height, \"px\") : height\n        },\n        ref: function ref(c) {\n          _this3.contentWrapper = c;\n        }\n      }, React.createElement(\"div\", {\n        className: \"\".concat(prefixCls, \"-content\"),\n        ref: function ref(c) {\n          _this3.contentDom = c;\n        },\n        onTouchStart: open && showMask ? this.removeStartHandler : undefined,\n        onTouchMove: open && showMask ? this.removeMoveHandler : undefined\n      }, children), handlerChildren));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(props, _ref2) {\n      var prevProps = _ref2.prevProps,\n          _self = _ref2._self;\n      var nextState = {\n        prevProps: props\n      };\n\n      if (prevProps !== undefined) {\n        var placement = props.placement,\n            level = props.level;\n\n        if (placement !== prevProps.placement) {\n          // test 的 bug, 有动画过场,删除 dom\n          _self.contentDom = null;\n        }\n\n        if (level !== prevProps.level) {\n          _self.getLevelDom(props);\n        }\n      }\n\n      return nextState;\n    }\n  }]);\n\n  return DrawerChild;\n}(React.Component);\n\nDrawerChild.defaultProps = {\n  switchScrollingEffect: function switchScrollingEffect() {}\n};\nexport default DrawerChild;","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/node_modules/rc-drawer/es/DrawerChild.js"],"names":["_defineProperty","_objectWithoutProperties","_classCallCheck","_createClass","_assertThisInitialized","_inherits","_possibleConstructorReturn","_getPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","result","NewTarget","constructor","Reflect","construct","arguments","apply","sham","Proxy","Date","prototype","toString","call","e","classnames","getScrollBarSize","KeyCode","React","addEventListener","dataToArray","getTouchParentScroll","isNumeric","removeEventListener","transformArguments","transitionEnd","transitionStr","windowIsUndefined","currentDrawer","DrawerChild","_React$Component","_super","props","_this","domFocus","dom","focus","removeStartHandler","touches","length","startPos","x","clientX","y","clientY","removeMoveHandler","changedTouches","currentTarget","differX","differY","maskDom","handlerDom","contentDom","target","cancelable","preventDefault","style","transition","onKeyDown","keyCode","ESC","onClose","stopPropagation","onWrapperTransitionEnd","_this$props","open","afterVisibleChange","contentWrapper","propertyName","match","getCurrentDrawerSome","document","body","overflowX","left","width","openLevelTransition","_this$props2","height","_this$getHorizontalBo","getHorizontalBoolAndPlacementName","isHorizontal","placementName","contentValue","getBoundingClientRect","value","setLevelAndScrolling","setLevelTransform","right","_this$props3","placement","levelMove","duration","ease","showMask","levelDom","forEach","concat","levelValue","$levelMove","$value","placementPos","transform","onChange","scrollHeight","window","innerHeight","documentElement","clientHeight","innerWidth","offsetWidth","toggleScrollingToDrawerAndBody","_this$props4","getOpenCount","getContainer","container","openCount","parentNode","eventArray","domArray","overflow","addScrollingEffect","touchAction","item","i","passive","remScrollingEffect","_this$props5","switchScrollingEffect","widthTransition","transformTransition","clearTimeout","timeout","setTimeout","_this$props6","heightTransition","Object","keys","some","key","getLevelDom","_ref","level","parent","children","Array","slice","child","nodeName","push","querySelectorAll","state","_self","componentDidMount","_this2","passiveSupported","defineProperty","get","err","_this$props7","drawerId","Number","now","Math","random","replace","round","forceUpdate","componentDidUpdate","prevProps","_this$props8","componentWillUnmount","_this$props9","render","_classnames","_this3","_this$props10","className","defaultOpen","$open","prefixCls","handler","maskClosable","maskStyle","onHandleClick","keyboard","wrapperClassName","_this$getHorizontalBo2","handlerChildren","cloneElement","onClick","ref","c","createElement","assign","tabIndex","undefined","onTransitionEnd","msTransform","onTouchStart","onTouchMove","getDerivedStateFromProps","_ref2","nextState","Component","defaultProps"],"mappings":"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","sourcesContent":["import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nimport classnames from 'classnames';\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { addEventListener, dataToArray, getTouchParentScroll, isNumeric, removeEventListener, transformArguments, transitionEnd, transitionStr, windowIsUndefined } from './utils';\nvar currentDrawer = {};\n\nvar DrawerChild = /*#__PURE__*/function (_React$Component) {\n  _inherits(DrawerChild, _React$Component);\n\n  var _super = _createSuper(DrawerChild);\n\n  function DrawerChild(props) {\n    var _this;\n\n    _classCallCheck(this, DrawerChild);\n\n    _this = _super.call(this, props);\n\n    _this.domFocus = function () {\n      if (_this.dom) {\n        _this.dom.focus();\n      }\n    };\n\n    _this.removeStartHandler = function (e) {\n      if (e.touches.length > 1) {\n        return;\n      }\n\n      _this.startPos = {\n        x: e.touches[0].clientX,\n        y: e.touches[0].clientY\n      };\n    };\n\n    _this.removeMoveHandler = function (e) {\n      if (e.changedTouches.length > 1) {\n        return;\n      }\n\n      var currentTarget = e.currentTarget;\n      var differX = e.changedTouches[0].clientX - _this.startPos.x;\n      var differY = e.changedTouches[0].clientY - _this.startPos.y;\n\n      if ((currentTarget === _this.maskDom || currentTarget === _this.handlerDom || currentTarget === _this.contentDom && getTouchParentScroll(currentTarget, e.target, differX, differY)) && e.cancelable) {\n        e.preventDefault();\n      }\n    };\n\n    _this.transitionEnd = function (e) {\n      var dom = e.target;\n      removeEventListener(dom, transitionEnd, _this.transitionEnd);\n      dom.style.transition = '';\n    };\n\n    _this.onKeyDown = function (e) {\n      if (e.keyCode === KeyCode.ESC) {\n        var onClose = _this.props.onClose;\n        e.stopPropagation();\n\n        if (onClose) {\n          onClose(e);\n        }\n      }\n    };\n\n    _this.onWrapperTransitionEnd = function (e) {\n      var _this$props = _this.props,\n          open = _this$props.open,\n          afterVisibleChange = _this$props.afterVisibleChange;\n\n      if (e.target === _this.contentWrapper && e.propertyName.match(/transform$/)) {\n        _this.dom.style.transition = '';\n\n        if (!open && _this.getCurrentDrawerSome()) {\n          document.body.style.overflowX = '';\n\n          if (_this.maskDom) {\n            _this.maskDom.style.left = '';\n            _this.maskDom.style.width = '';\n          }\n        }\n\n        if (afterVisibleChange) {\n          afterVisibleChange(!!open);\n        }\n      }\n    };\n\n    _this.openLevelTransition = function () {\n      var _this$props2 = _this.props,\n          open = _this$props2.open,\n          width = _this$props2.width,\n          height = _this$props2.height;\n\n      var _this$getHorizontalBo = _this.getHorizontalBoolAndPlacementName(),\n          isHorizontal = _this$getHorizontalBo.isHorizontal,\n          placementName = _this$getHorizontalBo.placementName;\n\n      var contentValue = _this.contentDom ? _this.contentDom.getBoundingClientRect()[isHorizontal ? 'width' : 'height'] : 0;\n      var value = (isHorizontal ? width : height) || contentValue;\n\n      _this.setLevelAndScrolling(open, placementName, value);\n    };\n\n    _this.setLevelTransform = function (open, placementName, value, right) {\n      var _this$props3 = _this.props,\n          placement = _this$props3.placement,\n          levelMove = _this$props3.levelMove,\n          duration = _this$props3.duration,\n          ease = _this$props3.ease,\n          showMask = _this$props3.showMask; // router 切换时可能会导至页面失去滚动条,所以需要时时获取。\n\n      _this.levelDom.forEach(function (dom) {\n        dom.style.transition = \"transform \".concat(duration, \" \").concat(ease);\n        addEventListener(dom, transitionEnd, _this.transitionEnd);\n        var levelValue = open ? value : 0;\n\n        if (levelMove) {\n          var $levelMove = transformArguments(levelMove, {\n            target: dom,\n            open: open\n          });\n          levelValue = open ? $levelMove[0] : $levelMove[1] || 0;\n        }\n\n        var $value = typeof levelValue === 'number' ? \"\".concat(levelValue, \"px\") : levelValue;\n        var placementPos = placement === 'left' || placement === 'top' ? $value : \"-\".concat($value);\n        placementPos = showMask && placement === 'right' && right ? \"calc(\".concat(placementPos, \" + \").concat(right, \"px)\") : placementPos;\n        dom.style.transform = levelValue ? \"\".concat(placementName, \"(\").concat(placementPos, \")\") : '';\n      });\n    };\n\n    _this.setLevelAndScrolling = function (open, placementName, value) {\n      var onChange = _this.props.onChange;\n\n      if (!windowIsUndefined) {\n        var right = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth ? getScrollBarSize(true) : 0;\n\n        _this.setLevelTransform(open, placementName, value, right);\n\n        _this.toggleScrollingToDrawerAndBody(right);\n      }\n\n      if (onChange) {\n        onChange(open);\n      }\n    };\n\n    _this.toggleScrollingToDrawerAndBody = function (right) {\n      var _this$props4 = _this.props,\n          getOpenCount = _this$props4.getOpenCount,\n          getContainer = _this$props4.getContainer,\n          showMask = _this$props4.showMask,\n          open = _this$props4.open;\n      var container = getContainer && getContainer();\n      var openCount = getOpenCount && getOpenCount(); // 处理 body 滚动\n\n      if (container && container.parentNode === document.body && showMask) {\n        var eventArray = ['touchstart'];\n        var domArray = [document.body, _this.maskDom, _this.handlerDom, _this.contentDom];\n\n        if (open && document.body.style.overflow !== 'hidden') {\n          if (right) {\n            _this.addScrollingEffect(right);\n          }\n\n          if (openCount === 1) {\n            document.body.style.overflow = 'hidden';\n          }\n\n          document.body.style.touchAction = 'none'; // 手机禁滚\n\n          domArray.forEach(function (item, i) {\n            if (!item) {\n              return;\n            }\n\n            addEventListener(item, eventArray[i] || 'touchmove', i ? _this.removeMoveHandler : _this.removeStartHandler, _this.passive);\n          });\n        } else if (_this.getCurrentDrawerSome()) {\n          // 没有弹框的状态下清除 overflow;\n          if (!openCount) {\n            document.body.style.overflow = '';\n          }\n\n          document.body.style.touchAction = '';\n\n          if (right) {\n            _this.remScrollingEffect(right);\n          } // 恢复事件\n\n\n          domArray.forEach(function (item, i) {\n            if (!item) {\n              return;\n            }\n\n            removeEventListener(item, eventArray[i] || 'touchmove', i ? _this.removeMoveHandler : _this.removeStartHandler, _this.passive);\n          });\n        }\n      }\n    };\n\n    _this.addScrollingEffect = function (right) {\n      var _this$props5 = _this.props,\n          placement = _this$props5.placement,\n          duration = _this$props5.duration,\n          ease = _this$props5.ease,\n          getOpenCount = _this$props5.getOpenCount,\n          switchScrollingEffect = _this$props5.switchScrollingEffect;\n      var openCount = getOpenCount && getOpenCount();\n\n      if (openCount === 1) {\n        switchScrollingEffect();\n      }\n\n      var widthTransition = \"width \".concat(duration, \" \").concat(ease);\n      var transformTransition = \"transform \".concat(duration, \" \").concat(ease);\n      _this.dom.style.transition = 'none';\n\n      switch (placement) {\n        case 'right':\n          _this.dom.style.transform = \"translateX(-\".concat(right, \"px)\");\n          break;\n\n        case 'top':\n        case 'bottom':\n          _this.dom.style.width = \"calc(100% - \".concat(right, \"px)\");\n          _this.dom.style.transform = 'translateZ(0)';\n          break;\n\n        default:\n          break;\n      }\n\n      clearTimeout(_this.timeout);\n      _this.timeout = setTimeout(function () {\n        if (_this.dom) {\n          _this.dom.style.transition = \"\".concat(transformTransition, \",\").concat(widthTransition);\n          _this.dom.style.width = '';\n          _this.dom.style.transform = '';\n        }\n      });\n    };\n\n    _this.remScrollingEffect = function (right) {\n      var _this$props6 = _this.props,\n          placement = _this$props6.placement,\n          duration = _this$props6.duration,\n          ease = _this$props6.ease,\n          getOpenCount = _this$props6.getOpenCount,\n          switchScrollingEffect = _this$props6.switchScrollingEffect;\n      var openCount = getOpenCount && getOpenCount();\n\n      if (!openCount) {\n        switchScrollingEffect(true);\n      }\n\n      if (transitionStr) {\n        document.body.style.overflowX = 'hidden';\n      }\n\n      _this.dom.style.transition = 'none';\n      var heightTransition;\n      var widthTransition = \"width \".concat(duration, \" \").concat(ease);\n      var transformTransition = \"transform \".concat(duration, \" \").concat(ease);\n\n      switch (placement) {\n        case 'left':\n          {\n            _this.dom.style.width = '100%';\n            widthTransition = \"width 0s \".concat(ease, \" \").concat(duration);\n            break;\n          }\n\n        case 'right':\n          {\n            _this.dom.style.transform = \"translateX(\".concat(right, \"px)\");\n            _this.dom.style.width = '100%';\n            widthTransition = \"width 0s \".concat(ease, \" \").concat(duration);\n\n            if (_this.maskDom) {\n              _this.maskDom.style.left = \"-\".concat(right, \"px\");\n              _this.maskDom.style.width = \"calc(100% + \".concat(right, \"px)\");\n            }\n\n            break;\n          }\n\n        case 'top':\n        case 'bottom':\n          {\n            _this.dom.style.width = \"calc(100% + \".concat(right, \"px)\");\n            _this.dom.style.height = '100%';\n            _this.dom.style.transform = 'translateZ(0)';\n            heightTransition = \"height 0s \".concat(ease, \" \").concat(duration);\n            break;\n          }\n\n        default:\n          break;\n      }\n\n      clearTimeout(_this.timeout);\n      _this.timeout = setTimeout(function () {\n        if (_this.dom) {\n          _this.dom.style.transition = \"\".concat(transformTransition, \",\").concat(heightTransition ? \"\".concat(heightTransition, \",\") : '').concat(widthTransition);\n          _this.dom.style.transform = '';\n          _this.dom.style.width = '';\n          _this.dom.style.height = '';\n        }\n      });\n    };\n\n    _this.getCurrentDrawerSome = function () {\n      return !Object.keys(currentDrawer).some(function (key) {\n        return currentDrawer[key];\n      });\n    };\n\n    _this.getLevelDom = function (_ref) {\n      var level = _ref.level,\n          getContainer = _ref.getContainer;\n\n      if (windowIsUndefined) {\n        return;\n      }\n\n      var container = getContainer && getContainer();\n      var parent = container ? container.parentNode : null;\n      _this.levelDom = [];\n\n      if (level === 'all') {\n        var children = parent ? Array.prototype.slice.call(parent.children) : [];\n        children.forEach(function (child) {\n          if (child.nodeName !== 'SCRIPT' && child.nodeName !== 'STYLE' && child.nodeName !== 'LINK' && child !== container) {\n            _this.levelDom.push(child);\n          }\n        });\n      } else if (level) {\n        dataToArray(level).forEach(function (key) {\n          document.querySelectorAll(key).forEach(function (item) {\n            _this.levelDom.push(item);\n          });\n        });\n      }\n    };\n\n    _this.getHorizontalBoolAndPlacementName = function () {\n      var placement = _this.props.placement;\n      var isHorizontal = placement === 'left' || placement === 'right';\n      var placementName = \"translate\".concat(isHorizontal ? 'X' : 'Y');\n      return {\n        isHorizontal: isHorizontal,\n        placementName: placementName\n      };\n    };\n\n    _this.state = {\n      _self: _assertThisInitialized(_this)\n    };\n    return _this;\n  }\n\n  _createClass(DrawerChild, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      if (!windowIsUndefined) {\n        var passiveSupported = false;\n\n        try {\n          window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n            get: function get() {\n              passiveSupported = true;\n              return null;\n            }\n          }));\n        } catch (err) {}\n\n        this.passive = passiveSupported ? {\n          passive: false\n        } : false;\n      }\n\n      var _this$props7 = this.props,\n          open = _this$props7.open,\n          getContainer = _this$props7.getContainer;\n      var container = getContainer && getContainer();\n      this.drawerId = \"drawer_id_\".concat(Number((Date.now() + Math.random()).toString().replace('.', Math.round(Math.random() * 9).toString())).toString(16));\n      this.getLevelDom(this.props);\n\n      if (open) {\n        if (container && container.parentNode === document.body) {\n          currentDrawer[this.drawerId] = open;\n        } // 默认打开状态时推出 level;\n\n\n        this.openLevelTransition();\n        this.forceUpdate(function () {\n          _this2.domFocus();\n        });\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props8 = this.props,\n          open = _this$props8.open,\n          getContainer = _this$props8.getContainer;\n      var container = getContainer && getContainer();\n\n      if (open !== prevProps.open) {\n        if (open) {\n          this.domFocus();\n        }\n\n        if (container && container.parentNode === document.body) {\n          currentDrawer[this.drawerId] = !!open;\n        }\n\n        this.openLevelTransition();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var _this$props9 = this.props,\n          getOpenCount = _this$props9.getOpenCount,\n          open = _this$props9.open,\n          switchScrollingEffect = _this$props9.switchScrollingEffect;\n      var openCount = typeof getOpenCount === 'function' && getOpenCount();\n      delete currentDrawer[this.drawerId];\n\n      if (open) {\n        this.setLevelTransform(false);\n        document.body.style.touchAction = '';\n      }\n\n      if (!openCount) {\n        document.body.style.overflow = '';\n        switchScrollingEffect(true);\n      }\n    } // tslint:disable-next-line:member-ordering\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classnames,\n          _this3 = this;\n\n      var _this$props10 = this.props,\n          className = _this$props10.className,\n          children = _this$props10.children,\n          style = _this$props10.style,\n          width = _this$props10.width,\n          height = _this$props10.height,\n          defaultOpen = _this$props10.defaultOpen,\n          $open = _this$props10.open,\n          prefixCls = _this$props10.prefixCls,\n          placement = _this$props10.placement,\n          level = _this$props10.level,\n          levelMove = _this$props10.levelMove,\n          ease = _this$props10.ease,\n          duration = _this$props10.duration,\n          getContainer = _this$props10.getContainer,\n          handler = _this$props10.handler,\n          onChange = _this$props10.onChange,\n          afterVisibleChange = _this$props10.afterVisibleChange,\n          showMask = _this$props10.showMask,\n          maskClosable = _this$props10.maskClosable,\n          maskStyle = _this$props10.maskStyle,\n          onClose = _this$props10.onClose,\n          onHandleClick = _this$props10.onHandleClick,\n          keyboard = _this$props10.keyboard,\n          getOpenCount = _this$props10.getOpenCount,\n          switchScrollingEffect = _this$props10.switchScrollingEffect,\n          props = _objectWithoutProperties(_this$props10, [\"className\", \"children\", \"style\", \"width\", \"height\", \"defaultOpen\", \"open\", \"prefixCls\", \"placement\", \"level\", \"levelMove\", \"ease\", \"duration\", \"getContainer\", \"handler\", \"onChange\", \"afterVisibleChange\", \"showMask\", \"maskClosable\", \"maskStyle\", \"onClose\", \"onHandleClick\", \"keyboard\", \"getOpenCount\", \"switchScrollingEffect\"]); // 首次渲染都将是关闭状态。\n\n\n      var open = this.dom ? $open : false;\n      var wrapperClassName = classnames(prefixCls, (_classnames = {}, _defineProperty(_classnames, \"\".concat(prefixCls, \"-\").concat(placement), true), _defineProperty(_classnames, \"\".concat(prefixCls, \"-open\"), open), _defineProperty(_classnames, className || '', !!className), _defineProperty(_classnames, 'no-mask', !showMask), _classnames));\n\n      var _this$getHorizontalBo2 = this.getHorizontalBoolAndPlacementName(),\n          placementName = _this$getHorizontalBo2.placementName; // 百分比与像素动画不同步,第一次打用后全用像素动画。\n      // const defaultValue = !this.contentDom || !level ? '100%' : `${value}px`;\n\n\n      var placementPos = placement === 'left' || placement === 'top' ? '-100%' : '100%';\n      var transform = open ? '' : \"\".concat(placementName, \"(\").concat(placementPos, \")\");\n      var handlerChildren = handler && React.cloneElement(handler, {\n        onClick: function onClick(e) {\n          if (handler.props.onClick) {\n            handler.props.onClick();\n          }\n\n          if (onHandleClick) {\n            onHandleClick(e);\n          }\n        },\n        ref: function ref(c) {\n          _this3.handlerDom = c;\n        }\n      });\n      return React.createElement(\"div\", Object.assign({}, props, {\n        tabIndex: -1,\n        className: wrapperClassName,\n        style: style,\n        ref: function ref(c) {\n          _this3.dom = c;\n        },\n        onKeyDown: open && keyboard ? this.onKeyDown : undefined,\n        onTransitionEnd: this.onWrapperTransitionEnd\n      }), showMask && React.createElement(\"div\", {\n        className: \"\".concat(prefixCls, \"-mask\"),\n        onClick: maskClosable ? onClose : undefined,\n        style: maskStyle,\n        ref: function ref(c) {\n          _this3.maskDom = c;\n        }\n      }), React.createElement(\"div\", {\n        className: \"\".concat(prefixCls, \"-content-wrapper\"),\n        style: {\n          transform: transform,\n          msTransform: transform,\n          width: isNumeric(width) ? \"\".concat(width, \"px\") : width,\n          height: isNumeric(height) ? \"\".concat(height, \"px\") : height\n        },\n        ref: function ref(c) {\n          _this3.contentWrapper = c;\n        }\n      }, React.createElement(\"div\", {\n        className: \"\".concat(prefixCls, \"-content\"),\n        ref: function ref(c) {\n          _this3.contentDom = c;\n        },\n        onTouchStart: open && showMask ? this.removeStartHandler : undefined,\n        onTouchMove: open && showMask ? this.removeMoveHandler : undefined\n      }, children), handlerChildren));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(props, _ref2) {\n      var prevProps = _ref2.prevProps,\n          _self = _ref2._self;\n      var nextState = {\n        prevProps: props\n      };\n\n      if (prevProps !== undefined) {\n        var placement = props.placement,\n            level = props.level;\n\n        if (placement !== prevProps.placement) {\n          // test 的 bug, 有动画过场,删除 dom\n          _self.contentDom = null;\n        }\n\n        if (level !== prevProps.level) {\n          _self.getLevelDom(props);\n        }\n      }\n\n      return nextState;\n    }\n  }]);\n\n  return DrawerChild;\n}(React.Component);\n\nDrawerChild.defaultProps = {\n  switchScrollingEffect: function switchScrollingEffect() {}\n};\nexport default DrawerChild;"]},"metadata":{},"sourceType":"module"}