@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) • 823 B
JavaScript
"use client";
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../core.node.cjs"),t=require("../helper/data-channel.helper.cjs");const a=e.createContext(null);function l({children:l}){const[c,o]=e.useState([]),s=e.useRef(0),n=e.useCallback((e,r)=>{const a=++s.current,l=t.createDataChannel(r);return o(r=>[...r,{id:a,Component:e,channel:l}]),{id:a,updateData:e=>l.set(e),close:()=>o(e=>e.filter(e=>e.id!==a))}},[]),u=e.useCallback(()=>{o(e=>e.slice(0,-1))},[]),d=e.useCallback(e=>{o(r=>r.filter(r=>r.id!==e))},[]),i=e.useCallback(()=>{o([])},[]),h=e.useMemo(()=>({stack:c,showPortal:n,hidePortal:u,hidePortalById:d,hideAll:i}),[c,n,u,d,i]);return r.Node(a.Provider,{value:h,children:l}).render()}l.__meonodeAcceptsServerCss=!0,exports.PortalContext=a,exports.default=l;