@fewings/react
Version:
Useful react components and hooks
2 lines (1 loc) • 582 B
JavaScript
import{createContext as a,useContext as d,useEffect as v,useRef as f,useSyncExternalStore as x}from"react";import{jsx as C}from"react/jsx-runtime";var T=n=>{let t=a(void 0),r=t.Provider;return t.Provider=({value:s,children:u})=>{let i=f(void 0),e=i.current;if(!e){let c=new Set;e={value:s??n,subscribe:o=>(c.add(o),()=>{c.delete(o)}),notify(){c.forEach(o=>o())}},i.current=e}return v(()=>{e&&(Object.is(e.value,s)||(e.value=s,e.notify()))}),C(r,{value:e,children:u})},t},l=(n,t)=>{let r=d(n);return x(r.subscribe,()=>t(r.value))};export{T as createContext,l as useContextSelector};