29 lines
808 B
TypeScript
29 lines
808 B
TypeScript
import { Extension } from "@tiptap/react";
|
|
import type { Editor } from "@tiptap/react";
|
|
|
|
export type TextDirection = "ltr" | "rtl";
|
|
|
|
export const NotebookTextDirection = Extension.create({
|
|
name: "notebookTextDirection",
|
|
|
|
addGlobalAttributes() {
|
|
return [
|
|
{
|
|
types: ["heading", "paragraph"],
|
|
attributes: {
|
|
dir: {
|
|
default: null,
|
|
parseHTML: (element) => element.getAttribute("dir"),
|
|
renderHTML: ({ dir }: { dir?: TextDirection }) => (dir ? { dir } : {}),
|
|
},
|
|
},
|
|
},
|
|
];
|
|
},
|
|
});
|
|
|
|
export function setTextDirection(editor: Editor, direction: TextDirection) {
|
|
const nodeType = editor.isActive("heading") ? "heading" : "paragraph";
|
|
return editor.chain().focus().updateAttributes(nodeType, { dir: direction });
|
|
}
|