{"version":3,"sources":["../../src/use-parent-element/index.ts"],"sourcesContent":["import { useEffect } from 'react'\nimport { useSafeState } from '../use-safe-state'\nimport { normalizeElement, useTargetElement } from '../use-target-element'\n\nimport type { ElementTarget } from '../use-target-element'\n\nexport type UseParentElementReturns = HTMLElement | null\n\n/**\n * A React Hook that track the parent element of an element.\n */\nexport function useParentElement<T extends HTMLElement = HTMLElement>(\n  target: ElementTarget<T>,\n): UseParentElementReturns {\n  const el = useTargetElement<T>(target)\n  const [parent, setParent] = useSafeState<HTMLElement | null>(null)\n\n  useEffect(() => {\n    setParent(el.current ? getParentElement(el.current) : null)\n  }, [el.current])\n\n  return parent\n}\n\nfunction getParentElement<T extends HTMLElement>(target: ElementTarget<T>): T | null {\n  const el = normalizeElement(target)\n  return (el?.parentElement ?? null) as T\n}\n"],"names":["useParentElement","target","el","useTargetElement","useSafeState","parent","setParent","useEffect","current","getParentElement","normalizeElement","parentElement"],"mappings":";;;;+BAWgBA;;;eAAAA;;;qBAXU;4BACG;gCACsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAS5C,SAASA,iBACdC,MAAwB;IAExB,IAAMC,KAAKC,IAAAA,kCAAgB,EAAIF;IAC/B,IAA4BG,iCAAAA,IAAAA,0BAAY,EAAqB,WAAtDC,SAAqBD,kBAAbE,YAAaF;IAE5BG,IAAAA,gBAAS,EAAC;QACRD,UAAUJ,GAAGM,OAAO,GAAGC,iBAAiBP,GAAGM,OAAO,IAAI;IACxD,GAAG;QAACN,GAAGM,OAAO;KAAC;IAEf,OAAOH;AACT;AAEA,SAASI,iBAAwCR,MAAwB;IACvE,IAAMC,KAAKQ,IAAAA,kCAAgB,EAACT;QACpBC;IAAR,OAAQA,CAAAA,oBAAAA,eAAAA,yBAAAA,GAAIS,aAAa,cAAjBT,+BAAAA,oBAAqB;AAC/B"}