diff --git a/.changeset/large-melons-warn.md b/.changeset/large-melons-warn.md new file mode 100644 index 000000000..6f7c8545c --- /dev/null +++ b/.changeset/large-melons-warn.md @@ -0,0 +1,5 @@ +--- +'slate-react': minor +--- + +Fix CJK IME (e.g. Chinese or Japanese) double input diff --git a/packages/slate-react/src/components/editable.tsx b/packages/slate-react/src/components/editable.tsx index 22024bd76..2cdf472c9 100644 --- a/packages/slate-react/src/components/editable.tsx +++ b/packages/slate-react/src/components/editable.tsx @@ -24,6 +24,8 @@ import { IS_FIREFOX_LEGACY, IS_QQBROWSER, IS_SAFARI, + IS_UC_MOBILE, + IS_WECHATBROWSER, CAN_USE_DOM, } from '../utils/environment' import { ReactEditor } from '..' @@ -772,6 +774,8 @@ export const Editable = (props: EditableProps) => { !IS_FIREFOX_LEGACY && !IS_IOS && !IS_QQBROWSER && + !IS_WECHATBROWSER && + !IS_UC_MOBILE && event.data ) { Editor.insertText(editor, event.data) diff --git a/packages/slate-react/src/utils/environment.ts b/packages/slate-react/src/utils/environment.ts index 3dcbab9d2..f059fce3b 100644 --- a/packages/slate-react/src/utils/environment.ts +++ b/packages/slate-react/src/utils/environment.ts @@ -43,6 +43,14 @@ export const IS_FIREFOX_LEGACY = export const IS_QQBROWSER = typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent) +// UC mobile browser +export const IS_UC_MOBILE = + typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent) + +// Wechat browser +export const IS_WECHATBROWSER = + typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent) + // Check if DOM is available as React does internally. // https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js export const CAN_USE_DOM = !!(