@web3r/flowerkit
Version:
Tree-shakable JavaScript and TypeScript utility library for frontend/browser apps: DOM, events, arrays, objects, strings, date, JSON, and network helpers (ESM/CJS, SSR-friendly).
1 lines • 2.9 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import { getDocument, getWindow } from \"ssr-window\";\r\n\r\nexport type TOnWindowLoadArgs = Parameters<typeof onWindowLoad>;\r\n\r\nexport type TOnWindowLoadReturn = ReturnType<typeof onWindowLoad>;\r\n\r\n/**\r\n * Runs a callback when the window load event fires.\r\n * Executes immediately if already loaded.\r\n *\r\n * @param {(e?: Event) => void} cb Callback to run on load\r\n * @param {boolean} [isAutoInit=true] Attach immediately\r\n * @returns {{\r\n * handler: (e?: Event) => void;\r\n * addListener: () => void;\r\n * removeListener: () => void;\r\n * }}\r\n * @throws {TypeError} onWindowLoad: cb must be a function\r\n * @throws {TypeError} onWindowLoad: isAutoInit must be a boolean\r\n * @throws {TypeError} onWindowLoad: cb must be a function\r\n * @throws {TypeError} onWindowLoad: isAutoInit must be a boolean\r\n *\r\n * @example\r\n * const { removeListener } = onWindowLoad(() => console.log(\"Loaded\"));\r\n */\r\nexport const onWindowLoad = (\r\n cb: (e?: Event) => void,\r\n isAutoInit: boolean | undefined = true\r\n): {\r\n handler: (e?: Event) => void;\r\n addListener: () => void;\r\n removeListener: () => void;\r\n} => {\r\n if (typeof cb !== \"function\") {\r\n throw new TypeError(\"onWindowLoad: cb must be a function\");\r\n }\r\n if (typeof isAutoInit !== \"boolean\") {\r\n throw new TypeError(\"onWindowLoad: isAutoInit must be a boolean\");\r\n }\r\n if (typeof cb !== \"function\") {\r\n throw new TypeError(\"onWindowLoad: cb must be a function\");\r\n }\r\n if (typeof isAutoInit !== \"boolean\") {\r\n throw new TypeError(\"onWindowLoad: isAutoInit must be a boolean\");\r\n }\r\n\r\n const handler = (e?: Event): void => {\r\n cb(e);\r\n };\r\n\r\n const addListener = (): void => {\r\n if (getDocument().readyState === \"complete\") {\r\n handler();\r\n } else {\r\n getWindow().addEventListener(\"load\", handler as EventListener);\r\n }\r\n };\r\n\r\n const removeListener = (): void => {\r\n getWindow().removeEventListener(\"load\", handler as EventListener);\r\n };\r\n\r\n if (isAutoInit) {\r\n addListener();\r\n }\r\n\r\n return {\r\n handler,\r\n addListener,\r\n removeListener,\r\n };\r\n};\r\n"],"names":["onWindowLoad","cb","isAutoInit","TypeError","handler","e","addListener","getDocument","readyState","getWindow","addEventListener","removeListener","removeEventListener"],"mappings":";;;;;;;;;;;;;;;;;;;GAyBO,MAAMA,aAAeA,CAC1BC,GACAC,WAAkC,QAMlC,UAAWD,KAAO,WAChB,MAAM,IAAIE,UAAU,uCAEtB,UAAWD,aAAe,UACxB,MAAM,IAAIC,UAAU,8CAEtB,UAAWF,KAAO,WAChB,MAAM,IAAIE,UAAU,uCAEtB,UAAWD,aAAe,UACxB,MAAM,IAAIC,UAAU,8CAGtB,MAAMC,QAAWC,IACfJ,GAAGI,IAGL,MAAMC,YAAcA,KAClB,GAAIC,cAAcC,aAAe,WAC/BJ,eAEAK,YAAYC,iBAAiB,OAAQN,UAIzC,MAAMO,eAAiBA,KACrBF,YAAYG,oBAAoB,OAAQR,UAG1C,GAAIF,WACFI,cAGF,MAAO,CACLF,gBACAE,wBACAK"}