{"version":3,"file":"Portal.cjs","sources":["../../../../src/internal/Portal/Portal.tsx"],"sourcesContent":["import type {FC, ReactNode} from 'react';\nimport {useId, useState} from 'react';\nimport {createPortal} from 'react-dom';\n\nimport {useSafeLayoutEffect} from '@/internal/hooks/useSafeLayoutEffect.ts';\n\nexport type Props = {\n    children: ReactNode;\n};\n\nexport const Portal: FC<Props> = ({children}) => {\n    const id = useId();\n    const [portalRendered, setPortalRendered] = useState(false);\n    useSafeLayoutEffect(() => {\n        if (!portalRendered) {\n            const element = document.createElement('div');\n            element.id = id;\n            document.body.appendChild(element);\n            setPortalRendered(true);\n        }\n        return () => {\n            portalRendered && document.getElementById(id)!.remove();\n        };\n    }, [id, portalRendered]);\n\n    return portalRendered && createPortal(children, document.getElementById(id)!, id);\n};\n"],"names":["Portal","children","id","useId","portalRendered","setPortalRendered","useState","useSafeLayoutEffect","element","createPortal"],"mappings":"2LAUaA,EAAoB,CAAC,CAAC,SAAAC,KAAc,CAC7C,MAAMC,EAAKC,EAAAA,MAAA,EACL,CAACC,EAAgBC,CAAiB,EAAIC,EAAAA,SAAS,EAAK,EAC1DC,OAAAA,EAAAA,oBAAoB,IAAM,CACtB,GAAI,CAACH,EAAgB,CACjB,MAAMI,EAAU,SAAS,cAAc,KAAK,EAC5CA,EAAQ,GAAKN,EACb,SAAS,KAAK,YAAYM,CAAO,EACjCH,EAAkB,EAAI,CAC1B,CACA,MAAO,IAAM,CACTD,GAAkB,SAAS,eAAeF,CAAE,EAAG,OAAA,CACnD,CACJ,EAAG,CAACA,EAAIE,CAAc,CAAC,EAEhBA,GAAkBK,EAAAA,aAAaR,EAAU,SAAS,eAAeC,CAAE,EAAIA,CAAE,CACpF"}