owl-rich-table
Version:
富文本编辑表格,react组件
85 lines (78 loc) • 3.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
var _TableDataContext = _interopRequireDefault(require("./context/TableDataContext"));
var _TableWorkLoopContext = _interopRequireDefault(require("./context/TableWorkLoopContext"));
var _useDo = _interopRequireDefault(require("./hooks/useDo"));
var _useRichTable = _interopRequireDefault(require("./hooks/useRichTable"));
var _useRichTableData = _interopRequireDefault(require("./hooks/useRichTableData"));
var _useRichTableInstance = _interopRequireDefault(require("./hooks/useRichTableInstance"));
var _lodash = _interopRequireDefault(require("lodash"));
var _cerateData = require("./utils/cerateData");
var _dispatch = _interopRequireDefault(require("./utils/dispatch"));
var _table = _interopRequireDefault(require("./components/table"));
var _tableAction = _interopRequireDefault(require("./components/table-action"));
require("./style.css");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @description 富文本编辑表格
* @author Huang Wenjie
* @createDate 2023-10-17
*/
function RichTable(props) {
var defaultValue = props.defaultValue,
table = props.table;
var tableRef = (0, _react.useRef)(null);
// 初始化一次值(外层的值会引起重新render导致bug,不能双向绑定,注意!后续考虑本身处理?)
var initTableValue = (0, _react.useMemo)(function () {
return (0, _cerateData.initData)(_lodash.default.cloneDeep(defaultValue));
}, [defaultValue]);
// table的值的处理
var _useTableData = (0, _useRichTableData.default)(initTableValue),
tableRenderData = _useTableData.tableRenderData,
setTableRenderData = _useTableData.setTableRenderData,
addRow = _useTableData.addRow,
removeRow = _useTableData.removeRow,
addColumn = _useTableData.addColumn,
removeColumn = _useTableData.removeColumn,
setCellValue = _useTableData.setCellValue,
paste = _useTableData.paste,
setWidthData = _useTableData.setWidthData;
// 注册dispatch事件系统
var dispatch = (0, _react.useMemo)(function () {
return new _dispatch.default(initTableValue, setTableRenderData);
}, [initTableValue, setTableRenderData]);
// 注册 redo和undo
(0, _useDo.default)(dispatch);
// 注册实例
(0, _useRichTableInstance.default)(table, tableRenderData);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TableDataContext.default.Provider, {
value: {
tableRenderData: tableRenderData,
setCellValue: setCellValue,
paste: paste,
addRow: addRow,
removeRow: removeRow,
addColumn: addColumn,
removeColumn: removeColumn,
setWidthData: setWidthData,
tableRef: tableRef
},
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TableWorkLoopContext.default.Provider, {
value: {
dispatch: dispatch
},
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
className: "rich-table-container",
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_tableAction.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_table.default, {})]
})
})
});
}
RichTable.useRichTable = _useRichTable.default;
var _default = RichTable;
exports.default = _default;