owl-rich-table
Version:
富文本编辑表格,react组件
66 lines (64 loc) • 3.43 kB
JavaScript
import { useContext, useRef } from 'react';
import TableDataContext from "../context/TableDataContext";
import TableWorkLoopContext from "../context/TableWorkLoopContext";
import { DEFAULT_WIDTH } from "../constants/shape";
import _ from 'lodash';
/**
* 处理形状大小的hook
* @returns
*/
var initWidthMoveRef = {
startX: null,
endX: null,
updateWidth: null
};
export default function useRichTableShape() {
var _useContext = useContext(TableDataContext),
tableRenderData = _useContext.tableRenderData,
setWidthData = _useContext.setWidthData;
var _useContext2 = useContext(TableWorkLoopContext),
dispatch = _useContext2.dispatch;
var widthMoveRef = useRef(initWidthMoveRef);
var initWidthChangeEvent = function initWidthChangeEvent(barIndex) {
var mousemove = _.throttle(function (e) {
if (typeof widthMoveRef.current.startX === 'number') {
var _document$querySelect, _document$querySelect2, _document$querySelect3, _tableRenderData$widt, _tableRenderData$widt2;
var currentCell = (_document$querySelect = document.querySelectorAll('#RICH_TABLE_COLGROUP_COl')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect[barIndex];
var currentAction = (_document$querySelect2 = document.querySelectorAll('#RICH_TABLE_ROW_BUTTON')) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2[barIndex];
var currentAdd = (_document$querySelect3 = document.querySelectorAll('#RICH_TABLE_ROW_ADD')) === null || _document$querySelect3 === void 0 ? void 0 : _document$querySelect3[barIndex];
if (!currentCell) return;
var currentX = e.clientX;
var move = currentX - widthMoveRef.current.startX;
var setWidth = ((_tableRenderData$widt = tableRenderData === null || tableRenderData === void 0 ? void 0 : (_tableRenderData$widt2 = tableRenderData.width) === null || _tableRenderData$widt2 === void 0 ? void 0 : _tableRenderData$widt2[barIndex]) !== null && _tableRenderData$widt !== void 0 ? _tableRenderData$widt : 0) + move;
if (setWidth < DEFAULT_WIDTH) return;
widthMoveRef.current.endX = currentX;
widthMoveRef.current.updateWidth = setWidth;
currentCell.style.width = "".concat(setWidth, "px");
currentAction.style.width = "".concat(setWidth, "px");
currentAdd.style.width = "".concat(setWidth, "px");
}
}, 20);
var mouseup = function mouseup() {
if (typeof setWidthData === 'function' && typeof widthMoveRef.current.updateWidth === 'number') {
dispatch === null || dispatch === void 0 ? void 0 : dispatch.action(function () {
var _widthMoveRef$current;
return setWidthData(barIndex, (_widthMoveRef$current = widthMoveRef.current.updateWidth) !== null && _widthMoveRef$current !== void 0 ? _widthMoveRef$current : DEFAULT_WIDTH);
});
}
widthMoveRef.current = initWidthMoveRef;
window.removeEventListener('mousemove', mousemove);
window.removeEventListener('mouseup', mouseup);
};
if (typeof widthMoveRef.current.startX === 'number') {
window.addEventListener('mousemove', mousemove);
window.addEventListener('mouseup', mouseup);
}
};
var setWidthMoveData = function setWidthMoveData(data) {
widthMoveRef.current = data;
};
return {
setWidthMoveData: setWidthMoveData,
initWidthChangeEvent: initWidthChangeEvent
};
}