{"version":3,"file":"AutoFocus.mjs","sources":["../../../../src/components/AutoFocus/AutoFocus.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef, useState } from 'react'\n\nimport { Slot } from '@radix-ui/react-slot'\n\nimport { useIsomorphicLayoutEffect } from '~/src/hooks/useIsomorphicLayoutEffect'\nimport useMergeRefs from '~/src/hooks/useMergeRefs'\n\nimport { type AutoFocusProps } from './AutoFocus.types'\n\n/**\n * `AutoFocus` is a component that automatically focuses its child element when they are added to the document.\n * It is useful when you want to focus on a specific element when the component is mounted.\n * It doesn't render any DOM node.\n * @example\n *\n * ```tsx\n * <AutoFocus>\n *   <button>Close</button>\n * </AutoFocus>\n *\n * // You can also use it with the additional condition\n * <AutoFocus when={condition}>\n *   <button>Close</button>\n * </AutoFocus>\n * ```\n */\nexport const AutoFocus = forwardRef<HTMLElement, AutoFocusProps>(\n  function AutoFocus({ children, when = true, ...rest }, forwardedRef) {\n    const [target, setTarget] = useState<HTMLElement | null>(null)\n\n    useIsomorphicLayoutEffect(\n      function focus() {\n        if (target && when) {\n          target.focus()\n        }\n      },\n      [target, when]\n    )\n\n    const ref = useMergeRefs(setTarget, forwardedRef)\n\n    return (\n      <Slot\n        ref={ref}\n        {...rest}\n      >\n        {children}\n      </Slot>\n    )\n  }\n)\n"],"names":["AutoFocus","forwardRef","children","when","rest","forwardedRef","target","setTarget","useState","useIsomorphicLayoutEffect","focus","ref","useMergeRefs","_jsx","Slot"],"mappings":";;;;;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACaA,SAAS,gBAAGC,UAAU,CACjC,SAASD,SAASA,CAAC;EAAEE,QAAQ;AAAEC,EAAAA,IAAI,GAAG,IAAI;EAAE,GAAGC;AAAK,CAAC,EAAEC,YAAY,EAAE;EACnE,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGC,QAAQ,CAAqB,IAAI,CAAC;AAE9DC,EAAAA,yBAAyB,CACvB,SAASC,KAAKA,GAAG;IACf,IAAIJ,MAAM,IAAIH,IAAI,EAAE;MAClBG,MAAM,CAACI,KAAK,EAAE;AAChB;AACF,GAAC,EACD,CAACJ,MAAM,EAAEH,IAAI,CACf,CAAC;AAED,EAAA,MAAMQ,GAAG,GAAGC,YAAY,CAACL,SAAS,EAAEF,YAAY,CAAC;EAEjD,oBACEQ,GAAA,CAACC,IAAI,EAAA;AACHH,IAAAA,GAAG,EAAEA,GAAI;AAAA,IAAA,GACLP,IAAI;AAAAF,IAAAA,QAAA,EAEPA;AAAQ,GACL,CAAC;AAEX,CACF;;;;"}