oidc-spa
Version:
Openidconnect client for Single Page Applications
37 lines • 1.28 kB
JavaScript
import { workerTimers } from "../vendor/frontend/worker-timers";
const clearByTimerHandle = new WeakMap();
export function setTimeout(callback, delay) {
const callback_actual = () => {
window.removeEventListener("pageshow", onPageshow);
clearByTimerHandle.delete(timerHandle);
callback();
};
let timerHandle_n = workerTimers.setTimeout(callback_actual, delay);
const timerHandle = {};
clearByTimerHandle.set(timerHandle, () => {
clearByTimerHandle.delete(timerHandle);
workerTimers.clearTimeout(timerHandle_n);
window.removeEventListener("pageshow", onPageshow);
});
const start = Date.now();
const onPageshow = () => {
workerTimers.clearTimeout(timerHandle_n);
const elapsed = Date.now() - start;
if (0 <= elapsed && elapsed < delay) {
timerHandle_n = workerTimers.setTimeout(callback_actual, delay - elapsed);
}
else {
callback_actual();
}
};
window.addEventListener("pageshow", onPageshow);
return timerHandle;
}
export function clearTimeout(handle) {
const clear = clearByTimerHandle.get(handle);
if (clear === undefined) {
return;
}
clear();
}
//# sourceMappingURL=workerTimers.js.map