UNPKG

shineout

Version:

Shein 前端组件库

118 lines (92 loc) 4.25 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _func = require("../utils/func"); var defaultProps = { client: undefined, onDragStart: function onDragStart() {}, onDrag: function onDrag() {}, onDragEnd: function onDragEnd() {} }; var _default = (0, _func.curry)(function (OriginComponent) { var Drag = /*#__PURE__*/ function (_PureComponent) { (0, _inheritsLoose2.default)(Drag, _PureComponent); function Drag(props) { var _this; _this = _PureComponent.call(this, props) || this; (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "clientX", void 0); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "clientY", void 0); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "dragging", void 0); _this.handleDragStart = _this.handleDragStart.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); _this.handleDrag = _this.handleDrag.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); _this.handleDragEnd = _this.handleDragEnd.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); return _this; } var _proto = Drag.prototype; _proto.componentDidMount = function componentDidMount() { var client = this.props.client; if (client) { this.clientX = client.x; this.clientY = client.y; this.dragging = true; this.addEvents(); if (this.props.onDragStart) this.props.onDragStart(); } }; _proto.componentWillUnmount = function componentWillUnmount() { this.removeEvents(); }; _proto.addEvents = function addEvents() { document.addEventListener('mousemove', this.handleDrag); document.addEventListener('mouseup', this.handleDragEnd); document.addEventListener('mouseleave', this.handleDragEnd); }; _proto.removeEvents = function removeEvents() { document.removeEventListener('mousemove', this.handleDrag); document.removeEventListener('mouseup', this.handleDragEnd); document.removeEventListener('mouseleave', this.handleDragEnd); }; _proto.handleDragStart = function handleDragStart(e) { if (e.button !== 0) return; this.clientX = e.clientX; this.clientY = e.clientY; this.dragging = true; this.addEvents(); if (this.props.onDragStart) this.props.onDragStart(); }; _proto.handleDrag = function handleDrag(e) { if (!this.dragging) return; if (e.clientX === 0 && e.clientY === 0) return; var mx = e.clientX - this.clientX; var my = e.clientY - this.clientY; if (mx === 0 && my === 0) return; this.clientX = e.clientX; this.clientY = e.clientY; if (this.props.onDrag) this.props.onDrag(mx, my, e.clientX, e.clientY); }; _proto.handleDragEnd = function handleDragEnd() { if (!this.dragging) return; this.dragging = false; this.removeEvents(); if (this.props.onDragEnd) this.props.onDragEnd(); }; _proto.render = function render() { return _react.default.createElement(OriginComponent, (0, _extends2.default)({}, this.props, { onDragStart: this.handleDragStart })); }; return Drag; }(_react.PureComponent); (0, _defineProperty2.default)(Drag, "defaultProps", defaultProps); return Drag; }); exports.default = _default;