UNPKG

2.92 kBSource Map (JSON)View Raw
1{"version":3,"file":"use-lazy.js","sources":["src/use-lazy/use-lazy.js"],"sourcesContent":["import { useState, useEffect } from \"../core/core\";\r\nimport { isFunction } from \"../core/utils\";\r\n\r\nlet def = \"default\";\r\n\r\nlet CaseLoading = () => ({ loading, ...props }) =>\r\n isFunction(loading) ? loading(props) : loading;\r\n\r\nlet CaseError = () => ({ error = \"\", ...props }) =>\r\n isFunction(error) ? error(props) : error;\r\n\r\nlet CaseEmpty = () => () => \"\";\r\n\r\n/**\r\n * It allows to load a component asynchronously.\r\n * @param {Function} callback\r\n * @param {object} [props]\r\n *\r\n * @todo add promise error detection behavior\r\n */\r\nexport function useLazy(callback, args = [], msLoading = 100) {\r\n let [Case, setCase] = useState(CaseEmpty);\r\n useEffect(() => {\r\n let cancel;\r\n let ready;\r\n\r\n callback()\r\n .then(data => {\r\n ready = true;\r\n if (!cancel) {\r\n let value = def in data ? data[def] : data;\r\n setCase(() => props =>\r\n isFunction(value) ? value(props) : value\r\n );\r\n }\r\n })\r\n .catch(() => {\r\n ready = true;\r\n if (!cancel) setCase(CaseError);\r\n });\r\n\r\n setTimeout(\r\n () => (!cancel && !ready ? setCase(CaseLoading) : 0),\r\n msLoading\r\n );\r\n return () => {\r\n cancel = true;\r\n if (ready) setCase(() => CaseEmpty);\r\n };\r\n }, args);\r\n\r\n return Case;\r\n}\r\n"],"names":[],"mappings":";;;;AAGA,IAAI,GAAG,GAAG,SAAS,CAAC;;AAEpB,IAAI,WAAW,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE;IAC1C,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;;AAEnD,IAAI,SAAS,GAAG,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE;IAC3C,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;;AAE7C,IAAI,SAAS,GAAG,MAAM,MAAM,EAAE,CAAC;;;;;;;;;AAS/B,AAAO,SAAS,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,GAAG,GAAG,EAAE;IAC1D,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,SAAS,CAAC,MAAM;QACZ,IAAI,MAAM,CAAC;QACX,IAAI,KAAK,CAAC;;QAEV,QAAQ,EAAE;aACL,IAAI,CAAC,IAAI,IAAI;gBACV,KAAK,GAAG,IAAI,CAAC;gBACb,IAAI,CAAC,MAAM,EAAE;oBACT,IAAI,KAAK,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBAC3C,OAAO,CAAC,MAAM,KAAK;wBACf,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK;qBAC3C,CAAC;iBACL;aACJ,CAAC;aACD,KAAK,CAAC,MAAM;gBACT,KAAK,GAAG,IAAI,CAAC;gBACb,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;aACnC,CAAC,CAAC;;QAEP,UAAU;YACN,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACpD,SAAS;SACZ,CAAC;QACF,OAAO,MAAM;YACT,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,KAAK,EAAE,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;SACvC,CAAC;KACL,EAAE,IAAI,CAAC,CAAC;;IAET,OAAO,IAAI,CAAC;CACf;;;;"}
\No newline at end of file