UNPKG

react-ready-state-effect

Version:
40 lines (36 loc) 1.15 kB
import { useEffect } from 'react'; var isReadyStateMatch = function isReadyStateMatch(expected) { if (!expected) { return true; } if ("string" === typeof expected && document.readyState === expected) { return true; } return expected.indexOf(document.readyState) !== -1; }; var useReadyStateEffect = function useReadyStateEffect(effect) { var deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var onState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "complete"; useEffect(function () { var destructors = [function () { return document.removeEventListener("readystatechange", listener); }]; var listener = function listener() { if (!isReadyStateMatch(onState)) { return; } var destructor = effect(); if (destructor) { destructors.push(destructor); } }; listener(); document.addEventListener("readystatechange", listener); return function () { return destructors.forEach(function (d) { return d(); }); }; }, deps); }; export { isReadyStateMatch, useReadyStateEffect };