diff --git a/packages/tinymce-plugins/keyboardquirks/index.js b/packages/tinymce-plugins/keyboardquirks/index.js index b08be9a12..083034b95 100644 --- a/packages/tinymce-plugins/keyboardquirks/index.js +++ b/packages/tinymce-plugins/keyboardquirks/index.js @@ -5,11 +5,29 @@ const ZERO_WIDTH_NOBREAK_SPACE = 65279; * @param {import("tinymce").Editor} editor */ function register(editor) { + firstLineBackspaceQuirk(editor); androidBackspaceKeyQuirk(editor); androidGboardEnterKeyQuirk(editor); androidSwiftKeyFormattingQuirk(editor); } +/** + * @param {import("tinymce").Editor} editor + */ +function firstLineBackspaceQuirk(editor) { + editor.on("keydown", (e) => { + if (e.key !== "Backspace" && e.key !== "Delete") return; + + const selectionStartElement = editor.selection.getStart(true); + if ( + selectionStartElement === editor.getBody().firstElementChild && + !selectionStartElement.textContent.trim() + ) { + selectionStartElement.remove(); + } + }); +} + /** * => Detected & tested on: * Google Chrome Android with SwiftKey Keyboard