{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import { getDocument } from \"ssr-window\";\r\n\r\nexport type TOnDOMReadyArgs = Parameters<typeof onDOMReady>;\r\n\r\nexport type TOnDOMReadyReturn = ReturnType<typeof onDOMReady>;\r\n\r\n/**\r\n * Runs a callback when the DOM is ready (`DOMContentLoaded`).\r\n * If already ready, executes immediately.\r\n *\r\n * @param {(e?: Event) => void} cb Callback to run on DOM ready\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} onDOMReady: cb must be a function\r\n * @throws {TypeError} onDOMReady: isAutoInit must be a boolean\r\n *\r\n * @example\r\n * onDOMReady(() => console.log(\"DOM ready\"));\r\n */\r\nexport const onDOMReady = (\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(\"onDOMReady: cb must be a function\");\r\n  }\r\n  if (typeof isAutoInit !== \"boolean\") {\r\n    throw new TypeError(\"onDOMReady: 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 === \"loading\") {\r\n      getDocument().addEventListener(\"DOMContentLoaded\", handler as EventListener);\r\n    } else {\r\n      handler();\r\n    }\r\n  };\r\n\r\n  const removeListener = (): void => {\r\n    getDocument().removeEventListener(\"DOMContentLoaded\", 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};\r\n"],"names":["onDOMReady","cb","isAutoInit","TypeError","handler","e","addListener","getDocument","readyState","addEventListener","removeListener","removeEventListener"],"mappings":";;;;;;;;;;;;;;;;;GAuBO,MAAMA,WAAaA,CACxBC,GACAC,WAAkC,QAMlC,UAAWD,KAAO,WAChB,MAAM,IAAIE,UAAU,qCAEtB,UAAWD,aAAe,UACxB,MAAM,IAAIC,UAAU,4CAGtB,MAAMC,QAAWC,IACfJ,GAAGI,IAGL,MAAMC,YAAcA,KAClB,GAAIC,cAAcC,aAAe,UAC/BD,cAAcE,iBAAiB,mBAAoBL,cAEnDA,WAIJ,MAAMM,eAAiBA,KACrBH,cAAcI,oBAAoB,mBAAoBP,UAGxD,GAAIF,WACFI,cAGF,MAAO,CACLF,gBACAE,wBACAI"}