From df439877bd1be93cef901300951dba0f3cfa8d0d Mon Sep 17 00:00:00 2001 From: EYHN Date: Fri, 8 Dec 2023 05:21:03 +0000 Subject: [PATCH] fix(core): add requestidlecallback polyfill for safari (#5231) --- packages/frontend/core/src/index.tsx | 1 + .../src/polyfill/request-idle-callback.ts | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 packages/frontend/core/src/polyfill/request-idle-callback.ts diff --git a/packages/frontend/core/src/index.tsx b/packages/frontend/core/src/index.tsx index 3667442d56..b7cef0c072 100644 --- a/packages/frontend/core/src/index.tsx +++ b/packages/frontend/core/src/index.tsx @@ -1,5 +1,6 @@ import './polyfill/ses-lockdown'; import './polyfill/intl-segmenter'; +import './polyfill/request-idle-callback'; import { WorkspaceFallback } from '@affine/component/workspace'; import { assertExists } from '@blocksuite/global/utils'; diff --git a/packages/frontend/core/src/polyfill/request-idle-callback.ts b/packages/frontend/core/src/polyfill/request-idle-callback.ts new file mode 100644 index 0000000000..e3156d20df --- /dev/null +++ b/packages/frontend/core/src/polyfill/request-idle-callback.ts @@ -0,0 +1,19 @@ +window.requestIdleCallback = + window.requestIdleCallback || + function (cb) { + const start = Date.now(); + return setTimeout(function () { + cb({ + didTimeout: false, + timeRemaining: function () { + return Math.max(0, 50 - (Date.now() - start)); + }, + }); + }, 1); + }; + +window.cancelIdleCallback = + window.cancelIdleCallback || + function (id) { + clearTimeout(id); + };