UNPKG

@kodingdotninja/use-toggle

Version:

Toggle custom hook and component wrapper for React 🔦

6 lines (3 loc) • 677 B
import { useState, useCallback, useEffect } from 'react'; var s=(o=!1)=>{let[r,e]=useState(o),t=useCallback(()=>e(!1),[]),i=useCallback(()=>e(!0),[]),T=useCallback(l=>e(l),[]),c=useCallback(()=>e(l=>!l),[]);return {state:r,disable:t,enable:i,set:T,toggle:c}};var f="enableOnMount",y="disableOnMount",g=({initialState:o,children:r,...e})=>{let t=s(o);return useEffect(()=>{f in e&&t.enable(),y in e&&t.disable();},[]),React.createElement(React.Fragment,null,r(t))};function R({children:o}){return React.createElement(g,{enableOnMount:!0,initialState:!1},()=>o)} export { R as ClientOnly, y as DISABLE_ON_MOUNT_KEY, f as ENABLE_ON_MOUNT_KEY, g as ToggleWrap, s as useToggle };