UNPKG

@react-page-plugins/slate-table

Version:
160 lines 6.96 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; import React from 'react'; import cx from 'clsx'; import startCase from 'lodash/startCase'; import { useFocused, useSlate } from 'slate-react'; import { Transforms } from 'slate'; import { toggleBlock, toggleMark, isBlockActive, isMarkActive, getContext } from './core'; import { newCell, newRow } from './table-builder'; import { Icon } from './icons'; var IconButton = function (props) { var active = props.active, variant = props.variant, className = props.className, icon = props.icon, rest = __rest(props, ["active", "variant", "className", "icon"]); return (React.createElement("button", __assign({}, rest, { active: active, title: startCase(icon), className: cx('slate-table', 'button', className, variant, active === true ? 'active' : ''), type: "button" }), React.createElement(Icon, { disabled: !active, name: icon }))); }; export var BlockButton = function (_a) { var format = _a.format, icon = _a.icon; var editor = useSlate(); var isActive = isBlockActive(editor, format); return (React.createElement(IconButton, { active: isActive, onMouseDown: function (event) { event.preventDefault(); toggleBlock(editor, format); }, icon: icon })); }; export var MarkButton = function (_a) { var format = _a.format, icon = _a.icon; var editor = useSlate(); var isActive = isMarkActive(editor, format); return (React.createElement(IconButton, { active: isActive, onMouseDown: function (event) { event.preventDefault(); toggleMark(editor, format); }, icon: icon })); }; export var AddRowBottom = function () { var editor = useSlate(); return (React.createElement(IconButton, { onMouseDown: function (event) { event.preventDefault(); var _a = getContext(editor), rcount = _a.rcount, ccount = _a.ccount, cell = _a.cell, cellPath = _a.cellPath, row = _a.row, rowPath = _a.rowPath; var targetRow = rcount; if (row) { targetRow = rowPath[1] + 1; } Transforms.insertNodes(editor, newRow(ccount), { at: [0, targetRow], voids: true, }); }, icon: "insert-row-bottom" })); }; export var AddRowTop = function () { var editor = useSlate(); return (React.createElement(IconButton, { icon: "insert-row-top", onMouseDown: function (event) { event.preventDefault(); var _a = getContext(editor), rcount = _a.rcount, ccount = _a.ccount, cell = _a.cell, cellPath = _a.cellPath, row = _a.row, rowPath = _a.rowPath; var targetRow = rcount; if (row) { targetRow = rowPath[1]; } Transforms.insertNodes(editor, newRow(ccount), { at: [0, targetRow], voids: true, }); } })); }; export var AddColumnLeft = function () { var editor = useSlate(); return (React.createElement(IconButton, { icon: "insert-column-left", onMouseDown: function (event) { event.preventDefault(); var _a = getContext(editor), rcount = _a.rcount, ccount = _a.ccount, cell = _a.cell, cellPath = _a.cellPath, row = _a.row, rowPath = _a.rowPath; var targetColumn = 0; if (cell) { targetColumn = cellPath[2]; } for (var x = 0; x < rcount; x++) { Transforms.insertNodes(editor, newCell(), { at: [0, x, targetColumn], voids: true, }); } } })); }; export var AddColumnRight = function () { var editor = useSlate(); return (React.createElement(IconButton, { icon: "insert-column-right", onMouseDown: function (event) { event.preventDefault(); var _a = getContext(editor), rcount = _a.rcount, ccount = _a.ccount, cell = _a.cell, cellPath = _a.cellPath, row = _a.row, rowPath = _a.rowPath; var targetColumn = 0; if (cell) { targetColumn = cellPath[2] + 1; } for (var x = 0; x < rcount; x++) { Transforms.insertNodes(editor, newCell(), { at: [0, x, targetColumn], voids: true, }); } } })); }; export var RemoveColumn = function () { var editor = useSlate(); var focused = useFocused(); return (React.createElement(IconButton, { icon: "delete-column", variant: "warning", disabled: !focused, onMouseDown: function (event) { event.preventDefault(); var _a = getContext(editor), rcount = _a.rcount, ccount = _a.ccount, cell = _a.cell, cellPath = _a.cellPath, row = _a.row, rowPath = _a.rowPath; if (ccount === 1) return; var targetColumn = 0; if (cell) { targetColumn = cellPath[2]; } for (var x = 0; x < rcount; x++) { Transforms.removeNodes(editor, { at: [0, x, targetColumn], voids: true }); } } })); }; export var RemoveRow = function () { var editor = useSlate(); var focused = useFocused(); return (React.createElement(IconButton, { icon: "delete-row", variant: "warning", disabled: !focused, onMouseDown: function (event) { event.preventDefault(); var _a = getContext(editor), rcount = _a.rcount, ccount = _a.ccount, cell = _a.cell, cellPath = _a.cellPath, row = _a.row, rowPath = _a.rowPath; if (rcount === 1) return; var targetRow = 0; if (row) { targetRow = rowPath[1]; } Transforms.removeNodes(editor, { at: [0, targetRow], voids: true }); } })); }; export default { BlockButton: BlockButton, MarkButton: MarkButton, AddRowBottom: AddRowBottom, AddRowTop: AddRowTop, AddColumnLeft: AddColumnLeft, AddColumnRight: AddColumnRight, RemoveColumn: RemoveColumn, RemoveRow: RemoveRow, }; //# sourceMappingURL=MenuComponents.js.map