UNPKG

firejsx

Version:

The React Framework for SSB, SSR and Serverless technologies

35 lines (34 loc) 1.17 kB
"use strict"; 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; };