choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
205 lines (161 loc) • 7.95 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
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 = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _clamp = _interopRequireDefault(require("lodash/clamp"));
var _domLib = require("dom-lib");
var _utils = require("./utils");
var _TableContext = _interopRequireDefault(require("./TableContext"));
var _constants = require("./constants");
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);
};
}
var ColumnResizeHandler =
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2["default"])(ColumnResizeHandler, _React$Component);
var _super = _createSuper(ColumnResizeHandler);
function ColumnResizeHandler(props) {
var _this;
(0, _classCallCheck2["default"])(this, ColumnResizeHandler);
_this = _super.call(this, props);
_this.columnWidth = 0;
_this.cursorDelta = 0;
_this.onMove = function (deltaX) {
if (!_this.isKeyDown) {
return;
}
var _this$props = _this.props,
onColumnResizeMove = _this$props.onColumnResizeMove,
defaultColumnWidth = _this$props.defaultColumnWidth,
columnLeft = _this$props.columnLeft,
columnFixed = _this$props.columnFixed;
var rtl = _this.context.rtl;
_this.cursorDelta += deltaX;
_this.columnWidth = (0, _clamp["default"])( // @ts-ignore
defaultColumnWidth + (rtl ? -_this.cursorDelta : _this.cursorDelta), _this.props.minWidth ? Math.max(_this.props.minWidth, _constants.RESIZE_MIN_WIDTH) : _constants.RESIZE_MIN_WIDTH, 20000);
onColumnResizeMove === null || onColumnResizeMove === void 0 ? void 0 : onColumnResizeMove(_this.columnWidth, columnLeft, columnFixed);
};
_this.onColumnResizeEnd = function () {
var _this$props$onColumnR, _this$props2, _this$mouseMoveTracke, _this$mouseMoveTracke2;
_this.isKeyDown = false;
(_this$props$onColumnR = (_this$props2 = _this.props).onColumnResizeEnd) === null || _this$props$onColumnR === void 0 ? void 0 : _this$props$onColumnR.call(_this$props2, _this.columnWidth, _this.cursorDelta);
(_this$mouseMoveTracke = _this.mouseMoveTracker) === null || _this$mouseMoveTracke === void 0 ? void 0 : (_this$mouseMoveTracke2 = _this$mouseMoveTracke.releaseMouseMoves) === null || _this$mouseMoveTracke2 === void 0 ? void 0 : _this$mouseMoveTracke2.call(_this$mouseMoveTracke);
_this.mouseMoveTracker = null;
};
_this.onColumnResizeMouseDown = function (event) {
var _this$props$onColumnR2, _this$props3;
_this.mouseMoveTracker = _this.getMouseMoveTracker();
_this.mouseMoveTracker.captureMouseMoves(event);
_this.isKeyDown = true;
_this.cursorDelta = 0;
var client = {
clientX: event.clientX,
clientY: event.clientY,
preventDefault: Function()
};
(_this$props$onColumnR2 = (_this$props3 = _this.props).onColumnResizeStart) === null || _this$props$onColumnR2 === void 0 ? void 0 : _this$props$onColumnR2.call(_this$props3, client);
};
_this.columnWidth = props.defaultColumnWidth || 0;
return _this;
}
(0, _createClass2["default"])(ColumnResizeHandler, [{
key: "componentWillUnmount",
value: function componentWillUnmount() {
if (this.mouseMoveTracker) {
this.mouseMoveTracker.releaseMouseMoves();
this.mouseMoveTracker = null;
}
}
}, {
key: "getMouseMoveTracker",
value: function getMouseMoveTracker() {
return this.mouseMoveTracker || new _domLib.DOMMouseMoveTracker(this.onMove, this.onColumnResizeEnd, document.body);
}
}, {
key: "render",
value: function render() {
var _objectSpread2;
var _this$props4 = this.props,
_this$props4$columnLe = _this$props4.columnLeft,
columnLeft = _this$props4$columnLe === void 0 ? 0 : _this$props4$columnLe,
classPrefix = _this$props4.classPrefix,
height = _this$props4.height,
className = _this$props4.className,
style = _this$props4.style,
columnFixed = _this$props4.columnFixed,
rest = (0, _objectWithoutProperties2["default"])(_this$props4, ["columnLeft", "classPrefix", "height", "className", "style", "columnFixed"]);
if (columnFixed === 'right') {
return null;
}
var rtl = this.context.rtl;
var styles = (0, _objectSpread3["default"])((_objectSpread2 = {}, (0, _defineProperty2["default"])(_objectSpread2, rtl ? 'right' : 'left', this.columnWidth + columnLeft - 2), (0, _defineProperty2["default"])(_objectSpread2, "height", height), _objectSpread2), style);
var classes = (0, _classnames["default"])(classPrefix, className);
var unhandled = (0, _utils.getUnhandledProps)(ColumnResizeHandler, rest);
return React.createElement("div", (0, _extends2["default"])({}, unhandled, {
className: classes,
style: styles,
onMouseDown: this.onColumnResizeMouseDown,
role: "button",
tabIndex: -1
}));
}
}]);
return ColumnResizeHandler;
}(React.Component);
ColumnResizeHandler.contextType = _TableContext["default"];
ColumnResizeHandler.propTypes = {
height: _propTypes["default"].number,
defaultColumnWidth: _propTypes["default"].number,
columnLeft: _propTypes["default"].number,
columnFixed: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].oneOf(['left', 'right'])]),
className: _propTypes["default"].string,
classPrefix: _propTypes["default"].string,
minWidth: _propTypes["default"].number,
style: _propTypes["default"].object,
onColumnResizeStart: _propTypes["default"].func,
onColumnResizeEnd: _propTypes["default"].func,
onColumnResizeMove: _propTypes["default"].func
};
ColumnResizeHandler.defaultProps = {
classPrefix: (0, _utils.defaultClassPrefix)('performance-table-column-resize-spanner')
};
var _default = ColumnResizeHandler;
exports["default"] = _default;
//# sourceMappingURL=ColumnResizeHandler.js.map