UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

137 lines (106 loc) 3.79 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _react = require("react"); var _propTypes = _interopRequireDefault(require("prop-types")); function _createSuper(Derived) { function 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; } } return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function wrapEvent(element, eventName, callback) { return function (e) { var originalEvent = element.props[eventName]; if (originalEvent) { originalEvent(e); } callback(e); }; } var MouseDown = /*#__PURE__*/ function (_PureComponent) { (0, _inherits2["default"])(MouseDown, _PureComponent); var _super = _createSuper(MouseDown); function MouseDown() { var _this; (0, _classCallCheck2["default"])(this, MouseDown); _this = _super.apply(this, arguments); _this.state = {}; _this.show = function (e) { var currentTarget = e.currentTarget; var pos = currentTarget.getBoundingClientRect(); _this.setState({ size: { x: e.clientX - pos.left, y: e.clientY - pos.top, width: currentTarget.clientWidth, height: currentTarget.clientHeight, position: document.defaultView && document.defaultView.getComputedStyle(currentTarget).position } }); }; _this.hide = function () { _this.setState({ size: undefined }); }; return _this; } (0, _createClass2["default"])(MouseDown, [{ key: "render", value: function render() { var _this$props = this.props, children = _this$props.children, rippleChild = _this$props.rippleChild; var size = this.state.size; var element = children(rippleChild, size); var newProps = { onMouseDown: wrapEvent(element, 'onMouseDown', this.show) }; if (size) { (0, _extends2["default"])(newProps, { onMouseUp: wrapEvent(element, 'onMouseUp', this.hide), onMouseLeave: wrapEvent(element, 'onMouseLeave', this.hide), onDragEnd: wrapEvent(element, 'onDragEnd', this.hide) }); } return (0, _react.cloneElement)(element, newProps); } }]); return MouseDown; }(_react.PureComponent); exports["default"] = MouseDown; MouseDown.displayName = 'MouseDown'; MouseDown.propTypes = { rippleChild: _propTypes["default"].node }; //# sourceMappingURL=MouseDown.js.map