diff --git a/.changeset/new-dryers-stare.md b/.changeset/new-dryers-stare.md new file mode 100644 index 000000000..c25cae17a --- /dev/null +++ b/.changeset/new-dryers-stare.md @@ -0,0 +1,5 @@ +--- +'slate-react': patch +--- + +Fix the issue of composition API and beforeinput event triggering between Chrome versions 60-75 on the Android platform. diff --git a/packages/slate-react/src/utils/environment.ts b/packages/slate-react/src/utils/environment.ts index 97307f890..d6dbaefa7 100644 --- a/packages/slate-react/src/utils/environment.ts +++ b/packages/slate-react/src/utils/environment.ts @@ -37,6 +37,11 @@ export const IS_CHROME_LEGACY = typeof navigator !== 'undefined' && /Chrome?\/(?:[0-7][0-5]|[0-6][0-9])(?:\.)/i.test(navigator.userAgent) +export const IS_ANDROID_CHROME_LEGACY = + IS_ANDROID && + typeof navigator !== 'undefined' && + /Chrome?\/(?:[0-5]?\d)(?:\.)/i.test(navigator.userAgent) + // Firefox did not support `beforeInput` until `v87`. export const IS_FIREFOX_LEGACY = typeof navigator !== 'undefined' && @@ -63,7 +68,7 @@ export const CAN_USE_DOM = !!( // COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event // Chrome Legacy doesn't support `beforeinput` correctly export const HAS_BEFORE_INPUT_SUPPORT = - !IS_CHROME_LEGACY && + (!IS_CHROME_LEGACY || !IS_ANDROID_CHROME_LEGACY) && !IS_EDGE_LEGACY && // globalThis is undefined in older browsers typeof globalThis !== 'undefined' &&