c7e2a1df6a
Replaces Babel with SWC for Next.js core client-side files. ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md` ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have helpful link attached, see `contributing.md` ## Documentation / Examples - [ ] Make sure the linting passes
44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
type RequestIdleCallbackHandle = any
|
|
type RequestIdleCallbackOptions = {
|
|
timeout: number
|
|
}
|
|
type RequestIdleCallbackDeadline = {
|
|
readonly didTimeout: boolean
|
|
timeRemaining: () => number
|
|
}
|
|
|
|
declare global {
|
|
interface Window {
|
|
requestIdleCallback: (
|
|
callback: (deadline: RequestIdleCallbackDeadline) => void,
|
|
opts?: RequestIdleCallbackOptions
|
|
) => RequestIdleCallbackHandle
|
|
cancelIdleCallback: (id: RequestIdleCallbackHandle) => void
|
|
}
|
|
}
|
|
|
|
export const requestIdleCallback =
|
|
(typeof self !== 'undefined' &&
|
|
self.requestIdleCallback &&
|
|
self.requestIdleCallback.bind(window)) ||
|
|
function (
|
|
cb: (deadline: RequestIdleCallbackDeadline) => void
|
|
): NodeJS.Timeout {
|
|
let start = Date.now()
|
|
return setTimeout(function () {
|
|
cb({
|
|
didTimeout: false,
|
|
timeRemaining: function () {
|
|
return Math.max(0, 50 - (Date.now() - start))
|
|
},
|
|
})
|
|
}, 1)
|
|
}
|
|
|
|
export const cancelIdleCallback =
|
|
(typeof self !== 'undefined' &&
|
|
self.cancelIdleCallback &&
|
|
self.cancelIdleCallback.bind(window)) ||
|
|
function (id: RequestIdleCallbackHandle) {
|
|
return clearTimeout(id)
|
|
}
|