{"version":3,"file":"use-hash.cjs","names":[],"sources":["../../src/use-hash/use-hash.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\n\nexport interface UseHashInput {\n  getInitialValueInEffect?: boolean;\n}\n\nexport type UseHashReturnValue = [string, (value: string) => void];\n\nexport function useHash({ getInitialValueInEffect = true }: UseHashInput = {}): UseHashReturnValue {\n  const [hash, setHash] = useState<string>(\n    getInitialValueInEffect ? '' : window.location.hash || ''\n  );\n\n  const setHashHandler = (value: string) => {\n    const valueWithHash = value.startsWith('#') ? value : `#${value}`;\n    window.location.hash = valueWithHash;\n    setHash(valueWithHash);\n  };\n\n  useWindowEvent('hashchange', () => {\n    const newHash = window.location.hash;\n    if (hash !== newHash) {\n      setHash(newHash);\n    }\n  });\n\n  useEffect(() => {\n    if (getInitialValueInEffect) {\n      setHash(window.location.hash);\n    }\n  }, []);\n\n  return [hash, setHashHandler];\n}\n\nexport namespace useHash {\n  export type Options = UseHashInput;\n  export type ReturnValue = UseHashReturnValue;\n}\n"],"mappings":";;;;AASA,SAAgB,QAAQ,EAAE,0BAA0B,SAAuB,EAAE,EAAsB;CACjG,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,UACX,0BAA0B,KAAK,OAAO,SAAS,QAAQ,GACxD;CAED,MAAM,kBAAkB,UAAkB;EACxC,MAAM,gBAAgB,MAAM,WAAW,IAAI,GAAG,QAAQ,IAAI;AAC1D,SAAO,SAAS,OAAO;AACvB,UAAQ,cAAc;;AAGxB,0BAAA,eAAe,oBAAoB;EACjC,MAAM,UAAU,OAAO,SAAS;AAChC,MAAI,SAAS,QACX,SAAQ,QAAQ;GAElB;AAEF,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,wBACF,SAAQ,OAAO,SAAS,KAAK;IAE9B,EAAE,CAAC;AAEN,QAAO,CAAC,MAAM,eAAe"}