import {
DefaultBlockSchema,
InlineContentSchema,
StyleSchema,
} from "@blocknote/core";
import { TableHandlesExtension } from "@blocknote/core/extensions";
import { useCallback } from "react";
import { RiMergeCellsHorizontal, RiMergeCellsVertical } from "react-icons/ri";
import { useComponentsContext } from "../../../editor/ComponentsContext.js";
import { useBlockNoteEditor } from "../../../hooks/useBlockNoteEditor.js";
import { useEditorState } from "../../../hooks/useEditorState.js";
import { useExtension } from "../../../hooks/useExtension.js";
import { useDictionary } from "../../../i18n/dictionary.js";
const TableCellMergeButtonInner = () => {
const dict = useDictionary();
const Components = useComponentsContext()!;
const editor = useBlockNoteEditor<
{
table: DefaultBlockSchema["table"];
},
InlineContentSchema,
StyleSchema
>();
const tableHandles = useExtension(TableHandlesExtension);
const state = useEditorState({
editor,
selector: ({ editor }) => {
if (!editor.isEditable || !editor.settings.tables.splitCells) {
return undefined;
}
const selectedBlocks = editor.getSelection()?.blocks || [
editor.getTextCursorPosition().block,
];
if (selectedBlocks.length !== 1) {
return undefined;
}
const block = selectedBlocks[0];
if (block.type !== "table") {
return undefined;
}
return {
mergeDirection: tableHandles.getMergeDirection(block),
};
},
});
const onClick = useCallback(() => {
tableHandles?.mergeCells();
}, [tableHandles]);
if (state === undefined) {
return null;
}
return (
) : (
)
}
onClick={onClick}
/>
);
};
export const TableCellMergeButton = () => {
const editor = useBlockNoteEditor();
if (!editor.getExtension(TableHandlesExtension)) {
return null;
}
return ;
};