use-sharable-state
Version:
This packages makes sharing states simpler
3 lines (2 loc) • 1.24 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e||self).useSharableState={},e.react)}(this,function(e,t){n={};var n,r=function(e){var t;return null==(t=n[e])?void 0:t.value};e.useSharableState=function(e,a){var s=t.useRef((Date.now().toString(36)+Math.random().toString(36)).replace(/\./g,"")),u=t.useMemo(function(){return r(e)||a},[a,e]),i=t.useState(u),o=i[0],f=i[1];return t.useEffect(function(){var t,r,a=s.current;return(null==(r=n[(t={stateKey:e,setterKey:s.current}).stateKey])?void 0:r.setters[t.setterKey])||function(e){var t,r=e.stateKey,a=e.setterKey,s=e.setter,u=e.initialValue;n[r]?n[r].setters[a]=s:n[r]={value:u,setters:(t={},t[a]=s,t)}}({stateKey:e,initialValue:u,setter:f,setterKey:a}),function(){return function(e){var t,r=e.stateKey,a=e.setterKey;null!=(t=n[r])&&t.setters[a]&&delete n[r].setters[a]}({stateKey:e,setterKey:a})}},[u,e]),[o,t.useCallback(function(t){!function(e){var t=e.value,r=n[e.stateKey];r&&(r.value=t,Object.entries(r.setters).forEach(function(e){(0,e[1])(t)}))}("function"==typeof t?{stateKey:e,value:t(r(e))}:{stateKey:e,value:t})},[e])]}});
//# sourceMappingURL=index.umd.js.map