fenextjs-component
Version:
43 lines • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PageProgress = void 0;
const tslib_1 = require("tslib");
const react_1 = tslib_1.__importStar(require("react"));
const PageProgress = ({ className = "" }) => {
const [statusBar, setStatusBar] = (0, react_1.useState)("none");
const onNone = () => {
setStatusBar("none");
};
const onDone = () => {
setStatusBar("done");
setTimeout(onNone, 250);
};
const onStart = () => {
setStatusBar("start");
};
(0, react_1.useEffect)(() => {
const handleStart = () => onStart();
const handleDone = () => onDone();
const originalPushState = history.pushState;
const originalReplaceState = history.replaceState;
history.pushState = function (...args) {
handleStart();
originalPushState.apply(this, args);
handleDone();
};
history.replaceState = function (...args) {
handleStart();
originalReplaceState.apply(this, args);
handleDone();
};
window.addEventListener("popstate", handleDone);
return () => {
history.pushState = originalPushState;
history.replaceState = originalReplaceState;
window.removeEventListener("popstate", handleDone);
};
}, []);
return (react_1.default.createElement("div", { className: `fenext-page-progress fenext-page-progress-${statusBar} ${className}` }));
};
exports.PageProgress = PageProgress;
//# sourceMappingURL=index.js.map