From 4205e0f002929f575f34ef8bb5d3bf9d2670d9d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=80=80=E8=80=80?= Date: Fri, 3 Mar 2023 01:11:19 +0800 Subject: [PATCH] Fix the issue of composition API and beforeinput event triggering between Chrome versions 60-75 on the Android platform. (#5327) * fix: The issue of composition API and beforeinput event triggering between Chrome versions 60-75 on the Android platform. * feat: add changeset * fix: update the logic of HAS_BEFORE_INPUT_SUPPORT --- .changeset/new-dryers-stare.md | 5 +++++ packages/slate-react/src/utils/environment.ts | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/new-dryers-stare.md 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' &&