diff --git a/packages/editor/src/extensions/text-direction/text-direction.ts b/packages/editor/src/extensions/text-direction/text-direction.ts index bbc67a1eb..fa9bf9e34 100644 --- a/packages/editor/src/extensions/text-direction/text-direction.ts +++ b/packages/editor/src/extensions/text-direction/text-direction.ts @@ -23,7 +23,7 @@ import { Paragraph } from "../paragraph/index.js"; import { Node as ProsemirrorNode } from "@tiptap/pm/model"; import { isListActive } from "../../utils/list.js"; -export type TextDirections = undefined | "rtl"; +export type TextDirections = undefined | "rtl" | "ltr"; const TEXT_DIRECTION_TYPES = [ "paragraph", "heading", @@ -90,13 +90,15 @@ export const TextDirection = Extension.create({ // NOTE: for some reason setting this to undefined breaks enter behaviour // on Android for some keyboards (GBoard etc.). Empty string works fine. default: this.options.defaultDirection || "", - parseHTML: (element) => (element.dir === "rtl" ? "rtl" : undefined), + parseHTML: (element) => + element.dir === "rtl" + ? "rtl" + : element.dir === "ltr" + ? "ltr" + : undefined, keepOnSplit: true, renderHTML: (attributes) => { - if ( - !attributes.textDirection || - attributes.textDirection !== "rtl" - ) { + if (!attributes.textDirection) { return {}; } diff --git a/packages/editor/src/toolbar/tools/text-direction.tsx b/packages/editor/src/toolbar/tools/text-direction.tsx index 6ca48f0fc..bb6573a6e 100644 --- a/packages/editor/src/toolbar/tools/text-direction.tsx +++ b/packages/editor/src/toolbar/tools/text-direction.tsx @@ -51,9 +51,10 @@ export function TextDirection(props: ToolProps) { const { editor } = props; const textDirection = getTextDirection(editor); - const newTextDirection: TextDirections = textDirection ? undefined : "rtl"; + const newTextDirection: TextDirections = + textDirection === "rtl" ? "ltr" : "rtl"; - const icon: IconNames = textDirection ? "rtl" : "ltr"; + const icon: IconNames = textDirection === "rtl" ? "rtl" : "ltr"; return (