summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src/scripts')
-rw-r--r--packages/frontend/src/scripts/idle-render.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/packages/frontend/src/scripts/idle-render.ts b/packages/frontend/src/scripts/idle-render.ts
index ccce8b02bf..781b624cdf 100644
--- a/packages/frontend/src/scripts/idle-render.ts
+++ b/packages/frontend/src/scripts/idle-render.ts
@@ -1,3 +1,20 @@
+const requestIdleCallback: typeof globalThis.requestIdleCallback = globalThis.requestIdleCallback ?? (callback) => {
+ const start = performance.now();
+ const timeoutId = setTimeout(() => {
+ callback({
+ didTimeout: false, // polyfill でタイムアウト発火することはない
+ timeRemaining() {
+ const diff = performance.now() - start;
+ return Math.max(0, 50 - diff); // <https://www.w3.org/TR/requestidlecallback/#idle-periods>
+ },
+ });
+ });
+ return timeoutId;
+};
+const cancelIdleCallback: typeof globalThis.cancelIdleCallback = globalThis.cancelIdleCallback ?? (timeoutId) => {
+ clearTimeout(timeoutId);
+};
+
class IdlingRenderScheduler {
#renderers: Set<FrameRequestCallback>;
#rafId: number;