From 294d5120aed89f4e1c7a818e0d1339f4fa1cbaf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Claud=C3=A9ric=20Demers?= Date: Thu, 20 May 2021 11:49:29 -0400 Subject: [PATCH] Fix errors accessing `globalThis` in browsers that do not implement it (#4272) --- .changeset/fix-globalthis-errors.md | 5 +++++ packages/slate-react/src/components/editable.tsx | 12 +----------- packages/slate-react/src/utils/environment.ts | 11 +++++++++++ 3 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 .changeset/fix-globalthis-errors.md diff --git a/.changeset/fix-globalthis-errors.md b/.changeset/fix-globalthis-errors.md new file mode 100644 index 000000000..f23ed34ef --- /dev/null +++ b/.changeset/fix-globalthis-errors.md @@ -0,0 +1,5 @@ +--- +'slate-react': patch +--- + +Fix errors accessing `globalThis` in browsers that do not implement it diff --git a/packages/slate-react/src/components/editable.tsx b/packages/slate-react/src/components/editable.tsx index 50d9d8e53..5c4ef4613 100644 --- a/packages/slate-react/src/components/editable.tsx +++ b/packages/slate-react/src/components/editable.tsx @@ -17,11 +17,10 @@ import scrollIntoView from 'scroll-into-view-if-needed' import useChildren from '../hooks/use-children' import Hotkeys from '../utils/hotkeys' import { + HAS_BEFORE_INPUT_SUPPORT, IS_FIREFOX, IS_FIREFOX_LEGACY, IS_SAFARI, - IS_EDGE_LEGACY, - IS_CHROME_LEGACY, } from '../utils/environment' import { ReactEditor } from '..' import { ReadOnlyContext } from '../hooks/use-read-only' @@ -48,15 +47,6 @@ import { EDITOR_TO_WINDOW, } from '../utils/weak-maps' -// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event -// Chrome Legacy doesn't support `beforeinput` correctly -const HAS_BEFORE_INPUT_SUPPORT = - !IS_CHROME_LEGACY && - !IS_EDGE_LEGACY && - globalThis.InputEvent && - // @ts-ignore The `getTargetRanges` property isn't recognized. - typeof globalThis.InputEvent.prototype.getTargetRanges === 'function' - /** * `RenderElementProps` are passed to the `renderElement` handler. */ diff --git a/packages/slate-react/src/utils/environment.ts b/packages/slate-react/src/utils/environment.ts index f775a30b6..9a64c4062 100644 --- a/packages/slate-react/src/utils/environment.ts +++ b/packages/slate-react/src/utils/environment.ts @@ -46,3 +46,14 @@ export const CAN_USE_DOM = !!( typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ) + +// 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_EDGE_LEGACY && + // globalThis is undefined in older browsers + typeof globalThis !== 'undefined' && + globalThis.InputEvent && + // @ts-ignore The `getTargetRanges` property isn't recognized. + typeof globalThis.InputEvent.prototype.getTargetRanges === 'function'