UNPKG

@meonode/ui

Version:

A structured approach to component composition, direct CSS-first prop styling, built-in theming, smart prop handling (including raw property pass-through), and dynamic children.

3 lines (2 loc) 564 B
"use client"; import{useContext as r,useRef as t,useEffect as o,useCallback as e}from"react";import{PortalContext as n}from"../components/portal-provider.client.js";function a(a){const u=r(n);if(!u)throw new Error("usePortal must be used within a PortalProvider");const c=t(null);o(()=>{void 0!==a&&c.current&&c.current.updateData(a)},[a]);return{open:e((r,t)=>{const o=u.showPortal(r,t??a);return c.current=o,o},[u.showPortal,a]),updateData:e(r=>{c.current?.updateData(r)},[]),close:e(()=>{c.current?.close(),c.current=null},[]),handle:c}}export{a as usePortal};