From 9862ae71bff60d99f423b44937ec9cf662698622 Mon Sep 17 00:00:00 2001 From: Blaine Olin Date: Tue, 10 Jun 2025 18:27:58 -0400 Subject: [PATCH] Fix backspace for more grapheme clusters (#5890) * Fix backspace for more grapheme clusters (#5887) This fix is specifically for the following languages: - Burmese - Hindi - Khmer - Malayalam - Oriya - Punjabi - Tamil - Telugu * Clean up code formatting around fixing backspace with grapheme clusters * Add changeset for backspace fix for additional grapheme clusters * Improve code formatting to align with prettier code style --- .changeset/nasty-lizards-serve.md | 5 +++++ packages/slate/src/transforms-text/delete-text.ts | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .changeset/nasty-lizards-serve.md diff --git a/.changeset/nasty-lizards-serve.md b/.changeset/nasty-lizards-serve.md new file mode 100644 index 000000000..afdea9b5e --- /dev/null +++ b/.changeset/nasty-lizards-serve.md @@ -0,0 +1,5 @@ +--- +'slate': patch +--- + +Handle backspace correctly for grapheme clusters in Burmese, Hindi, Khmer, Malayalam, Oriya, Punjabi, Tamil, and Telugu. diff --git a/packages/slate/src/transforms-text/delete-text.ts b/packages/slate/src/transforms-text/delete-text.ts index b990340ba..07b6236ca 100644 --- a/packages/slate/src/transforms-text/delete-text.ts +++ b/packages/slate/src/transforms-text/delete-text.ts @@ -174,12 +174,22 @@ export const deleteText: TextTransforms['delete'] = (editor, options = {}) => { // Therefore, the remaining code points should be inserted back. // Bengali: \u0980-\u09FF // Thai: \u0E00-\u0E7F + // Burmese (Myanmar): \u1000-\u109F + // Hindi (Devanagari): \u0900-\u097F + // Khmer: \u1780-\u17FF + // Malayalam: \u0D00-\u0D7F + // Oriya: \u0B00-\u0B7F + // Punjabi (Gurmukhi): \u0A00-\u0A7F + // Tamil: \u0B80-\u0BFF + // Telugu: \u0C00-\u0C7F if ( isCollapsed && reverse && unit === 'character' && removedText.length > 1 && - removedText.match(/[\u0980-\u09FF\u0E00-\u0E7F]+/) + removedText.match( + /[\u0980-\u09FF\u0E00-\u0E7F\u1000-\u109F\u0900-\u097F\u1780-\u17FF\u0D00-\u0D7F\u0B00-\u0B7F\u0A00-\u0A7F\u0B80-\u0BFF\u0C00-\u0C7F]+/ + ) ) { Transforms.insertText( editor,