firejsx
Version:
The React Framework for SSB, SSR and Serverless technologies
35 lines (34 loc) • 1.17 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
exports.default = ({ children, delay }) => {
const [loader, setLoader] = React.useState(children);
React.useEffect(() => {
let timeout;
//register the functions on mount
FireJSX.showLoader = () => {
if (timeout)
clearTimeout(timeout);
setLoader(children);
timeout = delay ? setTimeout(() => {
if (!timeout && FireJSX.hideLoader)
FireJSX.hideLoader();
timeout = undefined;
}, delay) : undefined;
};
FireJSX.hideLoader = () => {
if (timeout) {
timeout = undefined;
return;
}
void setLoader(React.createElement(React.Fragment, null));
};
FireJSX.hideLoader();
//on unmount de register the showLoader and hideLoader function
return () => {
timeout ? clearTimeout(timeout) : null;
FireJSX.hideLoader = FireJSX.showLoader = undefined;
};
}, []);
return loader;
};
;