UNPKG

unistore-hooks

Version:

2 lines (1 loc) 1.36 kB
import{createContext as r}from"preact";import{useContext as n,useMemo as t,useReducer as i,useEffect as o,useCallback as e}from"preact/hooks";function f(r,n,t,i,o){for(n=n.split?n.split("."):n,i=0;i<n.length;i++)r=r?r[n[i]]:o;return r===o?t:r}var u=r(),a=u.Provider;function c(r,n){var t=!1;for(var i in n)r[i]!==n[i]&&(!1===t&&(t=!0,r=Object.assign({},r)),r[i]=n[i]);return r}function p(){return n(u)}function s(r){var e=n(u),a=t(function(){return"function"==(t=typeof(n=r))?n:("string"==t&&(n=n.split(/\s*,\s*/)),Array.isArray(n)&&(n=n.reduce(function(r,n){return r[n]=n,r},{})),function(r){var t={};if(r)for(var i in n)t[i]=i in r?r[i]:f(r,n[i]);return t});var n,t},[]),p=i(c,e?a(e.getState()):{}),s=p[0],v=p[1];return o(function(){return e.subscribe(function(r){return v(a(r))})},[e]),s}function v(r,i,o){if("function"==typeof o){var f=[i,o];o=f[0],i=f[1]}var a=n(u),c=t(function(){return function(r,n){var t=n.bindings||(n.bindings=new("function"==typeof WeakMap?WeakMap:Map)),i=t.get(r);if(!i)for(var o in t.set(r,i={}),"function"==typeof r&&(r=r(n)),r)i[o]=n.action(r[o]);return i}(r,a)},[r,a]);return i=e(i,o||[]),t(function(){var r=i,n={};if(!r)return c;for(var t in"function"==typeof r&&(r=r(c)),r){var o=r[t];Array.isArray(o)&&(o=o[0].bind.apply(o[0],o)),n[t]=o}return n},[c,i])}export{a as Provider,v as useActions,p as useStore,s as useStoreState};