UNPKG

@ohkit/react-helper

Version:

some utils and hooks for react

3 lines (2 loc) 1 kB
import{useRef as n,useLayoutEffect as o,useEffect as t,useState as e,useCallback as r}from"react";import{pick as c}from"lodash-es";import{inBrowser as a}from"@ohkit/platform";function i(n,o){"function"==typeof n?n(o):n&&n.hasOwnProperty("current")&&Object.assign(n,{current:o})}function u(o,t){const e=n(o),r=(n={})=>{n&&"object"==typeof n&&Object.assign(e.current,n)};return t&&r(c(o,t)),[e.current,r]}const p=(n,e)=>{a?o(n,e):t(n,e)};function f(n,o,t){const c=n[o],a="function"==typeof c,{onChange:i,defaultValue:f=c,compare:s=(n,o)=>n===o}=t||{},[m,l]=e(()=>void 0!==c?c:f),[h]=u({onChange:i,compare:s,inner:m,isFuncState:a},["compare","onChange","inner","isFuncState"]),g=r((n,o=!0)=>{null!=h.compare&&h.compare(h.inner,n)||(l(h.isFuncState?()=>n:n),o&&(null==h.onChange||h.onChange(n)))},[h]);return p(()=>{let n=c;void 0===c&&void 0!==f&&(n=f),g(n,!1)},[f,c]),[m,g]}export{i as assignRef,p as useCompatibleEffect,u as useRuntime,f as useSyncPropsState}; //# sourceMappingURL=index.modern.mjs.map