effector-react
Advanced tools
Comparing version 22.5.4 to 23.0.0-rc.1
import React from 'react' | ||
import {Store, Event, Effect, Domain, Scope} from 'effector' | ||
import {Store, Event, Effect, Domain, Scope, EventCallable} from 'effector' | ||
@@ -21,2 +21,5 @@ export const Provider: React.Provider<Scope> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useStore<State>( | ||
@@ -89,2 +92,5 @@ store: Store<State>, | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createComponent<Props, State>( | ||
@@ -94,2 +100,5 @@ store: Store<State>, | ||
): StoreView<State, Props> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createComponent<Props, Shape extends object>( | ||
@@ -107,10 +116,4 @@ store: Shape, | ||
/** | ||
* @deprecated use useStore hook instead | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createContextComponent<Props, State, Context>( | ||
store: Store<State>, | ||
context: React.Context<Context>, | ||
view: (props: Props, state: State, context: Context) => React.ReactNode, | ||
): React.ComponentType<Props> | ||
export function connect< | ||
@@ -120,2 +123,5 @@ State extends object, | ||
>(store: Store<State>): (Component: Com) => React.ComponentType<State> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function connect< | ||
@@ -126,2 +132,5 @@ State extends object, | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createStoreConsumer<State>( | ||
@@ -132,17 +141,18 @@ store: Store<State>, | ||
/** | ||
* @deprecated use useStore hook instead | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createReactState< | ||
State extends object, | ||
Com extends React.ComponentType<any>, | ||
>(store: Store<State>, Component: Com): React.ComponentType<State> | ||
export function useEvent( | ||
event: Event<void>, | ||
event: EventCallable<void>, | ||
opts?: {forceScope?: boolean}, | ||
): () => void | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<T>( | ||
event: Event<T>, | ||
event: EventCallable<T>, | ||
opts?: {forceScope?: boolean}, | ||
): (payload: T) => T | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<R>( | ||
@@ -152,2 +162,5 @@ fx: Effect<void, R, any>, | ||
): () => Promise<R> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<T, R>( | ||
@@ -157,7 +170,7 @@ fx: Effect<T, R, any>, | ||
): (payload: T) => Promise<R> | ||
export function useEvent<List extends (Event<any> | Effect<any, any>)[]>( | ||
export function useEvent<List extends (EventCallable<any> | Effect<any, any>)[]>( | ||
list: [...List], | ||
opts?: {forceScope?: boolean}, | ||
): { | ||
[Key in keyof List]: List[Key] extends Event<infer T> | ||
[Key in keyof List]: List[Key] extends EventCallable<infer T> | ||
? (payload: T) => T | ||
@@ -168,4 +181,7 @@ : List[Key] extends Effect<infer P, infer D, any> | ||
} | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent< | ||
Shape extends Record<string, Event<any> | Effect<any, any, any>>, | ||
Shape extends Record<string, EventCallable<any> | Effect<any, any, any>>, | ||
>( | ||
@@ -175,3 +191,3 @@ shape: Shape, | ||
): { | ||
[Key in keyof Shape]: Shape[Key] extends Event<infer T> | ||
[Key in keyof Shape]: Shape[Key] extends EventCallable<infer T> | ||
? (payload: T) => T | ||
@@ -194,7 +210,7 @@ : Shape[Key] extends Effect<infer P, infer D, any> | ||
export function useUnit( | ||
event: Event<void>, | ||
event: EventCallable<void>, | ||
opts?: {forceScope?: boolean}, | ||
): () => void | ||
export function useUnit<T>( | ||
event: Event<T>, | ||
event: EventCallable<T>, | ||
opts?: {forceScope?: boolean}, | ||
@@ -211,3 +227,3 @@ ): (payload: T) => T | ||
export function useUnit< | ||
List extends (Event<any> | Effect<any, any> | Store<any>)[], | ||
List extends (EventCallable<any> | Effect<any, any> | Store<any>)[], | ||
>( | ||
@@ -217,3 +233,3 @@ list: [...List], | ||
): { | ||
[Key in keyof List]: List[Key] extends Event<infer T> | ||
[Key in keyof List]: List[Key] extends EventCallable<infer T> | ||
? Equal<T, void> extends true | ||
@@ -231,3 +247,3 @@ ? () => void | ||
export function useUnit< | ||
Shape extends Record<string, Event<any> | Effect<any, any, any> | Store<any>>, | ||
Shape extends Record<string, EventCallable<any> | Effect<any, any, any> | Store<any>>, | ||
>( | ||
@@ -237,3 +253,3 @@ shape: Shape | {'@@unitShape': () => Shape}, | ||
): { | ||
[Key in keyof Shape]: Shape[Key] extends Event<infer T> | ||
[Key in keyof Shape]: Shape[Key] extends EventCallable<infer T> | ||
? Equal<T, void> extends true | ||
@@ -240,0 +256,0 @@ ? () => void |
@@ -1,2 +0,2 @@ | ||
'use strict';function e(e){return e&&'object'==typeof e&&'default'in e?e.default:e}function t(e,t,n,r){var o=[d.step.mov({store:e.stateRef,to:'stack'}),d.step.run({fn:function(e){return t(e)}})];if(r&&o.unshift(r),n){var u=d.createNode({node:o,meta:{watchOp:"store"}}),a=e.graphite.id,c=n.additionalLinks,s=c[a]||[];return c[a]=s,s.push(u),function(){var e=s.indexOf(u);-1!==e&&s.splice(e,1),d.clearNode(u)}}var i=d.createNode({node:o,parent:[e],family:{owners:e}});return function(){d.clearNode(i)}}function n(e,t){return t.displayName=e,t}function r(e,n){d.is.store(e)||b('expect useStore argument to be a store');var r=h.useCallback((function(r){return t(e,r,n)}),[e,n]),o=h.useCallback((function(){return x(e,n)}),[e,n]);return y.useSyncExternalStore(r,o,o)}function o(e,n){var r=d.is.unit(e),o={};r?o={unit:e}:'@@unitShape'in e?'function'==typeof e['@@unitShape']?o=e['@@unitShape']():b('expect @@unitShape to be a function'):o=e;var u=Array.isArray(o),a=h.useRef({stale:1,justSubscribed:0,scope:n}),c=h.useMemo((function(){a.current.stale=1;var e=Array.isArray(o)?[]:{},t=[],r=[],u=[],c=[];for(var s in o){var i=o[s];d.is.unit(i)||b('expect useUnit argument to be a unit'),d.is.event(i)||d.is.effect(i)?(e[s]=n?d.scopeBind(i,{scope:n}):i,u.push(s),c.push(i)):(e[s]=null,t.push(s),r.push(i))}return[e,t,r,u,c]}),[a,n].concat(Object.keys(o),Object.values(o))),s=c[0],i=c[1],f=c[2],l=c[3],v=c[4],p=h.useRef({value:s,storeKeys:i,eventKeys:l,eventValues:v}),m=h.useCallback((function(e){var r=a.current;r.justSubscribed=1;var o=function(){r.stale||(r.stale=1,e())},u=d.step.compute({priority:'sampler',batch:1}),c=f.map((function(e){return t(e,o,n,u)}));return function(){c.forEach((function(e){return e()}))}}),[f,n,p,a]),S=h.useCallback((function(){var e,t=p.current,o=a.current,c=0,d=t.value,y=t.storeKeys,m=t.eventKeys,h=t.eventValues,b=n!==o.scope;if(o.stale||o.justSubscribed||b){c=!o.justSubscribed||b,e=u?[].concat(s):Object.assign({},s),y.length===i.length&&m.length===l.length||(c=1);for(var S=0;S<i.length;S++){var g=x(f[S],n),k=i[S];c||(c=y.includes(k)?d[k]!==g:1),e[k]=g}for(var j=0;j<l.length;j++){var C=v[j],E=l[j];c||(c=m.includes(E)?h[m.indexOf(E)]!==C:1)}}return c&&(t.value=e),t.storeKeys=i,t.eventKeys=l,t.eventValues=v,o.stale=0,o.justSubscribed=!c,o.scope=n,r?t.value.unit:t.value}),[m,f,v,n,p,a]);return y.useSyncExternalStore(m,S,S)}function u(e,n){var r,o,u,a,c=e[0],s=e[1],i=g;if(s)r=s,u=c,a=[];else{r=c.fn,u=c.store,a=c.keys,o=c.defaultValue;var f=c.updateFilter;i=void 0===f?g:f}d.is.store(u)||b('useStoreMap expects a store'),Array.isArray(a)||b('useStoreMap expects an array as keys'),'function'!=typeof r&&b('useStoreMap expects a function');var l=h.useCallback((function(e){return t(u,e,n)}),[u,n]),v=h.useCallback((function(){return x(u,n)}),[u,n]),p=h.useRef(),y=h.useRef(),S=h.useRef(a);return m.useSyncExternalStoreWithSelector(l,v,v,(function(e){if(p.current!==e||!function(e,t){if(!e||!t||e.length!==t.length)return 0;for(var n=1,r=0;r<e.length;r++)if(e[r]!==t[r]){n=0;break}return n}(S.current,a)){var t=r(e,a);void 0===t&&void 0!==o&&(t=o),p.current=e,S.current=a,void 0!==t&&(y.current=t)}return y.current}),(function(e,t){return!i(t,e)}))}function a(e,t,n){void 0===t&&(t={});var r=o({open:e.open,close:e.close,set:e.set},n),u=r.open,a=r.close,c=r.set,s=h.useMemo((function(){return{open:u,close:a,set:c}}),[e,u]),i=h.useRef({value:null,count:0});S((function(){return s.open(i.current.value),function(){return s.close(i.current.value)}}),[s]),function(e,t){if(e===t)return 1;if('object'==typeof e&&null!==e&&'object'==typeof t&&null!==t){var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return 0;for(var o=0;o<n.length;o++){var u=n[o];if(e[u]!==t[u])return 0}return 1}return 0}(i.current.value,t)||(i.current.value=t,i.current.count+=1),S((function(){s.set(i.current.value)}),[i.current.count])}function c(e){var t=h.useContext(k);return e&&!t&&b('No scope found, consider adding <Provider> to app root'),t}function s(e,t){return r(e,c(null==t?void 0:t.forceScope))}function i(e,t){function r(e){var n=h.useRef(e),r=s(o);S((function(){return a({props:n.current,state:o.getState()}),function(){c({props:n.current,state:o.getState()})}}),[]);var u=t(e,r);return n.current=e,u}var o;d.is.store(e)?o=e:'object'==typeof e&&null!==e?o=d.combine(e):b('shape should be a store or object with stores');var u='Unknown';o&&o.shortName&&(u=o.shortName);var a=d.createEvent(),c=d.createEvent();return r.mounted=a,r.unmounted=c,n(u+".View",r)}function f(e,t){var n,r=t?e:e[0];(function(e){if(!e)throw Error('expect first argument be an object')})(E(n=r)||function(e){return'function'==typeof e}(n));var o=r.or,u=r.and;if(u){var a=t?u:u[0];if(E(a)&&'and'in a){var c=f(u,t);e=c[0],o=Object.assign({},o,c[1])}else e=u}return[e,o]}function l(e){function t(e){return u(t,e,c()),null}var r=e.domain,o=e.defaultState,u=e.hook,a=w({or:e.maybeConfig,and:e.mainConfig}),s=(r?r.compositeName.fullName+"/":'')+(a.name||'gate'),i=d.createEvent({name:s+".set",sid:a.sid?a.sid+"|set":void 0}),f=d.createEvent({name:s+".open",sid:a.sid?a.sid+"|open":void 0}),l=d.createEvent({name:s+".close",sid:a.sid?a.sid+"|close":void 0}),v=d.createStore(Boolean(0),{name:s+".status",serialize:'ignore'}).on(f,(function(){return Boolean(1)})).on(l,(function(){return Boolean(0)})),p=d.createStore(o,{name:s+".state",sid:a.sid}).on(i,(function(e,t){return t})).on(f,(function(e,t){return t})).reset(l);if(r){var y=r.hooks;d.launch({target:[y.store,y.store,y.event,y.event,y.event],params:[v,p,f,l,i]})}return t.open=f,t.close=l,t.status=v,t.state=p,t.set=i,n("Gate:"+s,t)}function v(e,t){var n,r,o,u=f(t&&E(n=t[0])&&(n.and||n.or)?t:[{and:t}]),a=u[0],c=a[0],s=a[1],i={},l={},v=u[1];return'string'==typeof c?(l={name:c},E(o=s)&&'sid'in o||(i=s||{})):function(e){return E(e)&&('domain'in e||'defaultState'in e||'name'in e)}(c)&&(l=c,i=c.defaultState||{},r=c.domain),{hook:e,domain:r,defaultState:i,mainConfig:l,maybeConfig:v}}Object.defineProperty(exports,'__esModule',{value:1});var p=require('react'),d=require('effector/compat'),y=require('use-sync-external-store/shim/index.js'),m=require('use-sync-external-store/shim/with-selector.js'),h=e(p),b=function(e){throw Error(e)},S='undefined'!=typeof window?h.useLayoutEffect:h.useEffect,x=function(e,t){return t?t.getState(e):e.getState()},g=function(e,t){return e!==t},k=h.createContext(null),j=function(e){return console.error(e+" is deprecated")},C=function(e){return function(t){var r=e;return'function'!=typeof e&&(r=t,t=e),n("Connect("+(r.displayName||r.name||'Unknown')+")",(function(e){return h.createElement(r,Object.assign({},e,s(t)))}))}},E=function(e){return'object'==typeof e&&null!==e},w=function e(t,n){return void 0===n&&(n={}),E(t)&&(e(t.or,n),function(e){for(var t in e)o=t,function(e){return void 0===e}(r=e[t])||'or'===o||'and'===o||(n[o]=r);var r,o}(t),e(t.and,n)),n};exports.Provider=k.Provider,exports.connect=C,exports.createComponent=i,exports.createContextComponent=function(e,t,r){return j('createContextComponent'),n((e.shortName||'Unknown')+".ContextComponent",(function(n){var o=h.useContext(t),u=s(e);return r(n,u,o)}))},exports.createGate=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return l(v(a,t))},exports.createReactState=function(e,t){return j('createReactState'),C(t)(e)},exports.createStoreConsumer=function(e){return i(e,(function(e,t){return(0,e.children)(t)}))},exports.useEvent=function(e,t){return function(e,t){if(!t)return e;var n=d.is.unit(e)||'object'!=typeof e?{event:e}:e;return h.useMemo((function(){if(d.is.unit(e))return d.scopeBind(e,{scope:t});var n=Array.isArray(e)?[]:{};for(var r in e)n[r]=d.scopeBind(e[r],{scope:t});return n}),[t].concat(Object.keys(n),Object.values(n)))}(e,c(null==t?void 0:t.forceScope))},exports.useGate=function(e,t,n){return void 0===t&&(t={}),a(e,t,c(null==n?void 0:n.forceScope))},exports.useList=function(e,t,o){return function(e,t,o){var a,c,s,i=[];'object'==typeof t&&null!==t?(t.keys&&(i=t.keys),a=t.fn,c=t.getKey,s=t.placeholder):a=t,d.is.store(e)||b('expect useList first argument to be a store'),'function'!=typeof a&&b("expect useList's renderItem to be a function"),Array.isArray(i)||b("expect useList's keys to be an array");var f=h.useMemo((function(){var t=n((e.shortName||'Unknown')+".Item",(function(t){var n=t.index,r=t.keys;if(l.current[1])return l.current[0](t.value,t.keyVal);var a=u([{store:e,keys:[n].concat(r),fn:function(e,t){return e[t[0]]}}],o);return l.current[0](a,n)}));return h.memo(t)}),[e,o,!!c]),l=h.useRef([a,c]);l.current=[a,c];var v=h.useMemo((function(){return i}),i);if(c){var p=r(e,o);return 0===p.length&&s?s:p.map((function(e){var t=l.current[1](e);return h.createElement(f,{keyVal:t,key:t,keys:v,value:e})}))}var y=u([{store:e,keys:[e],fn:function(e){return e.length}}],o);return 0===y&&s?s:Array.from({length:y},(function(e,t){return h.createElement(f,{index:t,key:t,keys:v})}))}(e,t,c(null==o?void 0:o.forceScope))},exports.useStore=s,exports.useStoreMap=function(e,t){return u([e,t],c(null==e?void 0:e.forceScope))},exports.useUnit=function(e,t){return o(e,c(null==t?void 0:t.forceScope))}; | ||
'use strict';function e(e){return e&&'object'==typeof e&&'default'in e?e.default:e}function t(e,t){return t.displayName=e,t}function n(e,t){S(1,'useStore','useUnit'),p.is.store(e)||b('expect useStore argument to be a store');var n=m.useCallback((function(n){return p.createWatch({unit:e,fn:n,scope:t})}),[e,t]),r=m.useCallback((function(){return g(e,t)}),[e,t]);return d.useSyncExternalStore(n,r,r)}function r(e,t){var n=p.is.unit(e),r={};n?r={unit:e}:'@@unitShape'in e?'function'==typeof e['@@unitShape']?r=e['@@unitShape']():b('expect @@unitShape to be a function'):r=e;var u=Array.isArray(r),o=m.useRef({stale:1,justSubscribed:0,scope:t}),a=m.useMemo((function(){o.current.stale=1;var e=Array.isArray(r)?[]:{},n=[],u=[],a=[],s=[];for(var c in r){var i=r[c];p.is.unit(i)||b('expect useUnit argument to be a unit'),p.is.event(i)||p.is.effect(i)?(e[c]=t?p.scopeBind(i,{scope:t}):i,a.push(c),s.push(i)):(e[c]=null,n.push(c),u.push(i))}return[e,n,u,a,s]}),[o,t].concat(Object.keys(r),Object.values(r))),s=a[0],c=a[1],i=a[2],f=a[3],l=a[4],v=m.useRef({value:s,storeKeys:c,eventKeys:f,eventValues:l}),y=m.useCallback((function(e){var n=o.current;return n.justSubscribed=1,p.createWatch({unit:i,fn:function(){n.stale||(n.stale=1,e())},scope:t,batch:1})}),[i,t,v,o]),h=m.useCallback((function(){var e,r=v.current,a=o.current,p=0,d=r.value,y=r.storeKeys,m=r.eventKeys,b=r.eventValues,h=t!==a.scope;if(a.stale||a.justSubscribed||h){p=!a.justSubscribed||h,e=u?[].concat(s):Object.assign({},s),y.length===c.length&&m.length===f.length||(p=1);for(var S=0;S<c.length;S++){var x=g(i[S],t),k=c[S];p||(p=y.includes(k)?d[k]!==x:1),e[k]=x}for(var j=0;j<f.length;j++){var E=l[j],C=f[j];p||(p=m.includes(C)?b[m.indexOf(C)]!==E:1)}}return p&&(r.value=e),r.storeKeys=c,r.eventKeys=f,r.eventValues=l,a.stale=0,a.justSubscribed=!p,a.scope=t,n?r.value.unit:r.value}),[y,i,l,t,v,o]);return d.useSyncExternalStore(y,h,h)}function u(e,t){var n,r,u,o,a=e[0],s=e[1],c=x;if(s)n=s,u=a,o=[];else{n=a.fn,u=a.store,o=a.keys,r=a.defaultValue;var i=a.updateFilter;c=void 0===i?x:i}p.is.store(u)||b('useStoreMap expects a store'),Array.isArray(o)||b('useStoreMap expects an array as keys'),'function'!=typeof n&&b('useStoreMap expects a function');var f=m.useCallback((function(e){return p.createWatch({unit:u,fn:e,scope:t})}),[u,t]),l=m.useCallback((function(){return g(u,t)}),[u,t]),v=m.useRef(),d=m.useRef(),h=m.useRef(o);return y.useSyncExternalStoreWithSelector(f,l,l,(function(e){if(v.current!==e||!function(e,t){if(!e||!t||e.length!==t.length)return 0;for(var n=1,r=0;r<e.length;r++)if(e[r]!==t[r]){n=0;break}return n}(h.current,o)){var t=n(e,o);void 0===t&&void 0!==r&&(t=r),v.current=e,h.current=o,void 0!==t&&(d.current=t)}return d.current}),(function(e,t){return!c(t,e)}))}function o(e,t,n){void 0===t&&(t={});var u=r({open:e.open,close:e.close,set:e.set},n),o=u.open,a=u.close,s=u.set,c=m.useMemo((function(){return{open:o,close:a,set:s}}),[e,o]),i=m.useRef({value:null,count:0});h((function(){return c.open(i.current.value),function(){return c.close(i.current.value)}}),[c]),function(e,t){if(e===t)return 1;if('object'==typeof e&&null!==e&&'object'==typeof t&&null!==t){var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return 0;for(var u=0;u<n.length;u++){var o=n[u];if(e[o]!==t[o])return 0}return 1}return 0}(i.current.value,t)||(i.current.value=t,i.current.count+=1),h((function(){c.set(i.current.value)}),[i.current.count])}function a(e){var t=m.useContext(k);return e&&!t&&b('No scope found, consider adding <Provider> to app root'),t}function s(e,t){return n(e,a(null==t?void 0:t.forceScope))}function c(e,n){function r(e){var t=m.useRef(e),r=s(u);h((function(){return a({props:t.current,state:u.getState()}),function(){c({props:t.current,state:u.getState()})}}),[]);var o=n(e,r);return t.current=e,o}var u;j('createComponent','@effector/reflect'),p.is.store(e)?u=e:'object'==typeof e&&null!==e?u=p.combine(e):b('shape should be a store or object with stores');var o='Unknown';u&&u.shortName&&(o=u.shortName);var a=p.createEvent(),c=p.createEvent();return r.mounted=a,r.unmounted=c,t(o+".View",r)}function i(e){var t,n=e[0];(function(e){if(!e)throw Error('expect first argument be an object')})(E(t=n)||function(e){return'function'==typeof e}(t));var r=n.or,u=n.and;if(u){var o=u[0];if(E(o)&&'and'in o){var a=i(u);e=a[0],r=Object.assign({},r,a[1])}else e=u}return[e,r]}function f(e){function n(e){return o(n,e,a()),null}var r=e.domain,u=e.defaultState,o=e.hook,s=C({or:e.maybeConfig,and:e.mainConfig}),c=(r?r.compositeName.fullName+"/":'')+(s.name||'gate'),i=p.createEvent({name:c+".set",sid:s.sid?s.sid+"|set":void 0}),f=p.createEvent({name:c+".open",sid:s.sid?s.sid+"|open":void 0}),l=p.createEvent({name:c+".close",sid:s.sid?s.sid+"|close":void 0}),v=p.createStore(Boolean(0),{name:c+".status",serialize:'ignore'}).on(f,(function(){return Boolean(1)})).on(l,(function(){return Boolean(0)})),d=p.createStore(u,{name:c+".state",sid:s.sid}).on(i,(function(e,t){return t})).on(f,(function(e,t){return t})).reset(l);if(r){var y=r.hooks;p.launch({target:[y.store,y.store,y.event,y.event,y.event],params:[v,d,f,l,i]})}return n.open=f,n.close=l,n.status=v,n.state=d,n.set=i,t("Gate:"+c,n)}function l(e,t){var n,r,u,o=i(t&&E(n=t[0])&&(n.and||n.or)?t:[{and:t}]),a=o[0],s=a[0],c=a[1],f={},l={},v=o[1];return'string'==typeof s?(l={name:s},E(u=c)&&'sid'in u||(f=c||{})):function(e){return E(e)&&('domain'in e||'defaultState'in e||'name'in e)}(s)&&(l=s,f=s.defaultState||{},r=s.domain),{hook:e,domain:r,defaultState:f,mainConfig:l,maybeConfig:v}}Object.defineProperty(exports,'__esModule',{value:1});var v=require('react'),p=require('effector/compat'),d=require('use-sync-external-store/shim/index.js'),y=require('use-sync-external-store/shim/with-selector.js'),m=e(v),b=function(e){throw Error(e)},h='undefined'!=typeof window?m.useLayoutEffect:m.useEffect,S=function(e,t,n){v.useEffect((function(){e&&console.error(t+" is deprecated"+(n?", prefer "+n+" instead":''))}),[e,t,n])},g=function(e,t){return t?t.getState(e):e.getState()},x=function(e,t){return e!==t},k=m.createContext(null),j=function(e,t){console.error(e+" is deprecated"+(t?", use "+t+" instead":''))},E=function(e){return'object'==typeof e&&null!==e},C=function e(t,n){return void 0===n&&(n={}),E(t)&&(e(t.or,n),function(e){for(var t in e)u=t,function(e){return void 0===e}(r=e[t])||'or'===u||'and'===u||(n[u]=r);var r,u}(t),e(t.and,n)),n};exports.Provider=k.Provider,exports.connect=function(e){return j('connect','useUnit'),function(n){var r=e;return'function'!=typeof e&&(r=n,n=e),t("Connect("+(r.displayName||r.name||'Unknown')+")",(function(e){return m.createElement(r,Object.assign({},e,s(n)))}))}},exports.createComponent=c,exports.createGate=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return f(l(o,t))},exports.createStoreConsumer=function(e){return j('createStoreConsumer','useUnit'),c(e,(function(e,t){return(0,e.children)(t)}))},exports.useEvent=function(e,t){return function(e,t){if(S(1,'useEvent','useUnit'),!t)return e;var n=p.is.unit(e)||'object'!=typeof e?{event:e}:e;return m.useMemo((function(){if(p.is.unit(e))return p.scopeBind(e,{scope:t});var n=Array.isArray(e)?[]:{};for(var r in e)n[r]=p.scopeBind(e[r],{scope:t});return n}),[t].concat(Object.keys(n),Object.values(n)))}(e,a(null==t?void 0:t.forceScope))},exports.useGate=function(e,t,n){return void 0===t&&(t={}),o(e,t,a(null==n?void 0:n.forceScope))},exports.useList=function(e,r,o){return function(e,r,o){var a,s,c,i=[];'object'==typeof r&&null!==r?(r.keys&&(i=r.keys),a=r.fn,s=r.getKey,c=r.placeholder):a=r,p.is.store(e)||b('expect useList first argument to be a store'),'function'!=typeof a&&b("expect useList's renderItem to be a function"),Array.isArray(i)||b("expect useList's keys to be an array");var f=m.useMemo((function(){var n=t((e.shortName||'Unknown')+".Item",(function(t){var n=t.index,r=t.keys;if(l.current[1])return l.current[0](t.value,t.keyVal);var a=u([{store:e,keys:[n].concat(r),fn:function(e,t){return e[t[0]]}}],o);return l.current[0](a,n)}));return m.memo(n)}),[e,o,!!s]),l=m.useRef([a,s]);l.current=[a,s];var v=m.useMemo((function(){return i}),i);if(s){var d=n(e,o);return 0===d.length&&c?c:d.map((function(e){var t=l.current[1](e);return m.createElement(f,{keyVal:t,key:t,keys:v,value:e})}))}var y=u([{store:e,keys:[e],fn:function(e){return e.length}}],o);return 0===y&&c?c:Array.from({length:y},(function(e,t){return m.createElement(f,{index:t,key:t,keys:v})}))}(e,r,a(null==o?void 0:o.forceScope))},exports.useStore=s,exports.useStoreMap=function(e,t){return u([e,t],a(null==e?void 0:e.forceScope))},exports.useUnit=function(e,t){return r(e,a(null==t?void 0:t.forceScope))}; | ||
//# sourceMappingURL=compat.js.map |
import React from 'react' | ||
import {Store, Event, Effect, Domain, Scope} from 'effector' | ||
import {Store, Event, Effect, Domain, Scope, EventCallable} from 'effector' | ||
@@ -21,2 +21,5 @@ export const Provider: React.Provider<Scope> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useStore<State>( | ||
@@ -89,2 +92,5 @@ store: Store<State>, | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createComponent<Props, State>( | ||
@@ -94,2 +100,5 @@ store: Store<State>, | ||
): StoreView<State, Props> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createComponent<Props, Shape extends object>( | ||
@@ -107,10 +116,4 @@ store: Shape, | ||
/** | ||
* @deprecated use useStore hook instead | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createContextComponent<Props, State, Context>( | ||
store: Store<State>, | ||
context: React.Context<Context>, | ||
view: (props: Props, state: State, context: Context) => React.ReactNode, | ||
): React.ComponentType<Props> | ||
export function connect< | ||
@@ -120,2 +123,5 @@ State extends object, | ||
>(store: Store<State>): (Component: Com) => React.ComponentType<State> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function connect< | ||
@@ -126,2 +132,5 @@ State extends object, | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createStoreConsumer<State>( | ||
@@ -132,17 +141,18 @@ store: Store<State>, | ||
/** | ||
* @deprecated use useStore hook instead | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createReactState< | ||
State extends object, | ||
Com extends React.ComponentType<any>, | ||
>(store: Store<State>, Component: Com): React.ComponentType<State> | ||
export function useEvent( | ||
event: Event<void>, | ||
event: EventCallable<void>, | ||
opts?: {forceScope?: boolean}, | ||
): () => void | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<T>( | ||
event: Event<T>, | ||
event: EventCallable<T>, | ||
opts?: {forceScope?: boolean}, | ||
): (payload: T) => T | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<R>( | ||
@@ -152,2 +162,5 @@ fx: Effect<void, R, any>, | ||
): () => Promise<R> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<T, R>( | ||
@@ -157,7 +170,7 @@ fx: Effect<T, R, any>, | ||
): (payload: T) => Promise<R> | ||
export function useEvent<List extends (Event<any> | Effect<any, any>)[]>( | ||
export function useEvent<List extends (EventCallable<any> | Effect<any, any>)[]>( | ||
list: [...List], | ||
opts?: {forceScope?: boolean}, | ||
): { | ||
[Key in keyof List]: List[Key] extends Event<infer T> | ||
[Key in keyof List]: List[Key] extends EventCallable<infer T> | ||
? (payload: T) => T | ||
@@ -168,4 +181,7 @@ : List[Key] extends Effect<infer P, infer D, any> | ||
} | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent< | ||
Shape extends Record<string, Event<any> | Effect<any, any, any>>, | ||
Shape extends Record<string, EventCallable<any> | Effect<any, any, any>>, | ||
>( | ||
@@ -175,3 +191,3 @@ shape: Shape, | ||
): { | ||
[Key in keyof Shape]: Shape[Key] extends Event<infer T> | ||
[Key in keyof Shape]: Shape[Key] extends EventCallable<infer T> | ||
? (payload: T) => T | ||
@@ -194,7 +210,7 @@ : Shape[Key] extends Effect<infer P, infer D, any> | ||
export function useUnit( | ||
event: Event<void>, | ||
event: EventCallable<void>, | ||
opts?: {forceScope?: boolean}, | ||
): () => void | ||
export function useUnit<T>( | ||
event: Event<T>, | ||
event: EventCallable<T>, | ||
opts?: {forceScope?: boolean}, | ||
@@ -211,3 +227,3 @@ ): (payload: T) => T | ||
export function useUnit< | ||
List extends (Event<any> | Effect<any, any> | Store<any>)[], | ||
List extends (EventCallable<any> | Effect<any, any> | Store<any>)[], | ||
>( | ||
@@ -217,3 +233,3 @@ list: [...List], | ||
): { | ||
[Key in keyof List]: List[Key] extends Event<infer T> | ||
[Key in keyof List]: List[Key] extends EventCallable<infer T> | ||
? Equal<T, void> extends true | ||
@@ -231,3 +247,3 @@ ? () => void | ||
export function useUnit< | ||
Shape extends Record<string, Event<any> | Effect<any, any, any> | Store<any>>, | ||
Shape extends Record<string, EventCallable<any> | Effect<any, any, any> | Store<any>>, | ||
>( | ||
@@ -237,3 +253,3 @@ shape: Shape | {'@@unitShape': () => Shape}, | ||
): { | ||
[Key in keyof Shape]: Shape[Key] extends Event<infer T> | ||
[Key in keyof Shape]: Shape[Key] extends EventCallable<infer T> | ||
? Equal<T, void> extends true | ||
@@ -240,0 +256,0 @@ ? () => void |
@@ -1,2 +0,2 @@ | ||
function e(e){return e&&'object'==typeof e&&'default'in e?e.default:e}function t(e,t,r,n){let o=[effector.step.mov({store:e.stateRef,to:'stack'}),effector.step.run({fn:e=>t(e)})];if(n&&o.unshift(n),r){let t=effector.createNode({node:o,meta:{watchOp:"store"}}),n=e.graphite.id,s=r.additionalLinks,u=s[n]||[];return s[n]=u,u.push(t),()=>{let e=u.indexOf(t);-1!==e&&u.splice(e,1),effector.clearNode(t)}}{let t=effector.createNode({node:o,parent:[e],family:{owners:e}});return()=>{effector.clearNode(t)}}}function r(e,t){return t.displayName=e,t}function n(e,r){effector.is.store(e)||v('expect useStore argument to be a store');let n=m.useCallback((n=>t(e,n,r)),[e,r]),o=m.useCallback((()=>b(e,r)),[e,r]);return d.useSyncExternalStore(n,o,o)}function o(e,r){let n=effector.is.unit(e),o={};n?o={unit:e}:'@@unitShape'in e?'function'==typeof e['@@unitShape']?o=e['@@unitShape']():v('expect @@unitShape to be a function'):o=e;let s=Array.isArray(o),u=m.useRef({stale:1,justSubscribed:0,scope:r}),[a,l,c,i,f]=m.useMemo((()=>{u.current.stale=1;let e=Array.isArray(o)?[]:{},t=[],n=[],s=[],a=[];for(let u in o){let l=o[u];effector.is.unit(l)||v('expect useUnit argument to be a unit'),effector.is.event(l)||effector.is.effect(l)?(e[u]=r?effector.scopeBind(l,{scope:r}):l,s.push(u),a.push(l)):(e[u]=null,t.push(u),n.push(l))}return[e,t,n,s,a]}),[u,r,...Object.keys(o),...Object.values(o)]),p=m.useRef({value:a,storeKeys:l,eventKeys:i,eventValues:f}),y=m.useCallback((e=>{let n=u.current;n.justSubscribed=1;let o=()=>{n.stale||(n.stale=1,e())},s=effector.step.compute({priority:'sampler',batch:1}),a=c.map((e=>t(e,o,r,s)));return()=>{a.forEach((e=>e()))}}),[c,r,p,u]),h=m.useCallback((()=>{let e,t=p.current,o=u.current,d=0,y=t.value,m=t.storeKeys,v=t.eventKeys,h=t.eventValues,S=r!==o.scope;if(o.stale||o.justSubscribed||S){d=!o.justSubscribed||S,e=s?[...a]:{...a},m.length===l.length&&v.length===i.length||(d=1);for(let t=0;t<l.length;t++){let n=b(c[t],r),o=l[t];d||(d=m.includes(o)?y[o]!==n:1),e[o]=n}for(let e=0;e<i.length;e++){let t=f[e],r=i[e];d||(d=v.includes(r)?h[v.indexOf(r)]!==t:1)}}return d&&(t.value=e),t.storeKeys=l,t.eventKeys=i,t.eventValues=f,o.stale=0,o.justSubscribed=!d,o.scope=r,n?t.value.unit:t.value}),[y,c,f,r,p,u]);return d.useSyncExternalStore(y,h,h)}function s([e,r],n){let o,s,u,a,l=S;r?(o=r,u=e,a=[]):({fn:o,store:u,keys:a,defaultValue:s,updateFilter:l=S}=e),effector.is.store(u)||v('useStoreMap expects a store'),Array.isArray(a)||v('useStoreMap expects an array as keys'),'function'!=typeof o&&v('useStoreMap expects a function');let c=m.useCallback((e=>t(u,e,n)),[u,n]),i=m.useCallback((()=>b(u,n)),[u,n]),f=m.useRef(),p=m.useRef(),d=m.useRef(a);return y.useSyncExternalStoreWithSelector(c,i,i,(e=>{if(f.current!==e||!((e,t)=>{if(!e||!t||e.length!==t.length)return 0;let r=1;for(let n=0;n<e.length;n++)if(e[n]!==t[n]){r=0;break}return r})(d.current,a)){let t=o(e,a);void 0===t&&void 0!==s&&(t=s),f.current=e,d.current=a,void 0!==t&&(p.current=t)}return p.current}),((e,t)=>!l(t,e)))}function u(e,t={},r){let{open:n,close:s,set:u}=o({open:e.open,close:e.close,set:e.set},r),a=m.useMemo((()=>({open:n,close:s,set:u})),[e,n]),l=m.useRef({value:null,count:0});h((()=>(a.open(l.current.value),()=>a.close(l.current.value))),[a]),((e,t)=>{if(e===t)return 1;if('object'==typeof e&&null!==e&&'object'==typeof t&&null!==t){let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return 0;for(let n=0;n<r.length;n++){let o=r[n];if(e[o]!==t[o])return 0}return 1}return 0})(l.current.value,t)||(l.current.value=t,l.current.count+=1),h((()=>{a.set(l.current.value)}),[l.current.count])}function a(e){let t=m.useContext(x);return e&&!t&&v('No scope found, consider adding <Provider> to app root'),t}function l(e,t){return n(e,a(null==t?void 0:t.forceScope))}function c(e,t){function n(e){let r=m.useRef(e),n=l(o);h((()=>(u({props:r.current,state:o.getState()}),()=>{a({props:r.current,state:o.getState()})})),[]);let s=t(e,n);return r.current=e,s}let o;effector.is.store(e)?o=e:'object'==typeof e&&null!==e?o=effector.combine(e):v('shape should be a store or object with stores');let s='Unknown';o&&o.shortName&&(s=o.shortName);let u=effector.createEvent(),a=effector.createEvent();return n.mounted=u,n.unmounted=a,r(`${s}.View`,n)}function i(e,t){let r=t?e:e[0];var n;(e=>{if(!e)throw Error('expect first argument be an object')})(C(n=r)||(e=>'function'==typeof e)(n));let o=r.or,s=r.and;if(s){let r=t?s:s[0];if(C(r)&&'and'in r){let r=i(s,t);e=r[0],o={...o,...r[1]}}else e=s}return[e,o]}function f(e,t){let r=t&&C(n=t[0])&&(n.and||n.or)?t:[{and:t}];var n;let o,[[s,u],a]=i(r),l={},c={},f=a;var p;return'string'==typeof s?(c={name:s},C(p=u)&&'sid'in p||(l=u||{})):(e=>C(e)&&('domain'in e||'defaultState'in e||'name'in e))(s)&&(c=s,l=s.defaultState||{},o=s.domain),{hook:e,domain:o,defaultState:l,mainConfig:c,maybeConfig:f}}Object.defineProperty(exports,'__esModule',{value:1});var p=require('react'),effector=require('effector'),d=require('use-sync-external-store/shim/index.js'),y=require('use-sync-external-store/shim/with-selector.js'),m=e(p);let v=e=>{throw Error(e)},h='undefined'!=typeof window?m.useLayoutEffect:m.useEffect;const b=(e,t)=>t?t.getState(e):e.getState(),S=(e,t)=>e!==t,x=m.createContext(null);let{Provider:g}=x,k=e=>console.error(`${e} is deprecated`),j=e=>t=>{let n=e;return'function'!=typeof e&&(n=t,t=e),r(`Connect(${n.displayName||n.name||'Unknown'})`,(e=>m.createElement(n,{...e,...l(t)})))},C=e=>'object'==typeof e&&null!==e,E=(e,t={})=>(C(e)&&(E(e.or,t),(e=>{for(let o in e)n=o,(e=>void 0===e)(r=e[o])||'or'===n||'and'===n||(t[n]=r);var r,n})(e),E(e.and,t)),t);exports.Provider=g,exports.connect=j,exports.createComponent=c,exports.createContextComponent=(e,t,n)=>(k('createContextComponent'),r(`${e.shortName||'Unknown'}.ContextComponent`,(r=>{let o=m.useContext(t),s=l(e);return n(r,s,o)}))),exports.createGate=(...e)=>(({domain:e,defaultState:t,hook:n,mainConfig:o,maybeConfig:s})=>{function u(e){return n(u,e,a()),null}let l=E({or:s,and:o}),c=`${e?`${e.compositeName.fullName}/`:''}${l.name||'gate'}`,i=effector.createEvent({name:`${c}.set`,sid:l.sid?`${l.sid}|set`:void 0}),f=effector.createEvent({name:`${c}.open`,sid:l.sid?`${l.sid}|open`:void 0}),p=effector.createEvent({name:`${c}.close`,sid:l.sid?`${l.sid}|close`:void 0}),d=effector.createStore(Boolean(0),{name:`${c}.status`,serialize:'ignore'}).on(f,(()=>Boolean(1))).on(p,(()=>Boolean(0))),y=effector.createStore(t,{name:`${c}.state`,sid:l.sid}).on(i,((e,t)=>t)).on(f,((e,t)=>t)).reset(p);if(e){let{hooks:t}=e;effector.launch({target:[t.store,t.store,t.event,t.event,t.event],params:[d,y,f,p,i]})}return u.open=f,u.close=p,u.status=d,u.state=y,u.set=i,r(`Gate:${c}`,u)})(f(u,e)),exports.createReactState=(e,t)=>(k('createReactState'),j(t)(e)),exports.createStoreConsumer=e=>c(e,(({children:e},t)=>e(t))),exports.useEvent=(e,t)=>((e,t)=>{if(!t)return e;let r=effector.is.unit(e)||'object'!=typeof e?{event:e}:e;return m.useMemo((()=>{if(effector.is.unit(e))return effector.scopeBind(e,{scope:t});let r=Array.isArray(e)?[]:{};for(let n in e)r[n]=effector.scopeBind(e[n],{scope:t});return r}),[t,...Object.keys(r),...Object.values(r)])})(e,a(null==t?void 0:t.forceScope)),exports.useGate=(e,t={},r)=>u(e,t,a(null==r?void 0:r.forceScope)),exports.useList=(e,t,o)=>((e,t,o)=>{let u,a,l,c=[];'object'==typeof t&&null!==t?(t.keys&&(c=t.keys),({fn:u,getKey:a,placeholder:l}=t)):u=t,effector.is.store(e)||v('expect useList first argument to be a store'),'function'!=typeof u&&v("expect useList's renderItem to be a function"),Array.isArray(c)||v("expect useList's keys to be an array");let i=m.useMemo((()=>{let t=r(`${e.shortName||'Unknown'}.Item`,(t=>{let{index:r,keys:n,keyVal:u,value:a}=t;if(f.current[1])return f.current[0](a,u);let l=s([{store:e,keys:[r,...n],fn:(e,t)=>e[t[0]]}],o);return f.current[0](l,r)}));return m.memo(t)}),[e,o,!!a]),f=m.useRef([u,a]);f.current=[u,a];let p=m.useMemo((()=>c),c);if(a){let t=n(e,o);return 0===t.length&&l?l:t.map((e=>{let t=f.current[1](e);return m.createElement(i,{keyVal:t,key:t,keys:p,value:e})}))}{let t=s([{store:e,keys:[e],fn:e=>e.length}],o);return 0===t&&l?l:Array.from({length:t},((e,t)=>m.createElement(i,{index:t,key:t,keys:p})))}})(e,t,a(null==o?void 0:o.forceScope)),exports.useStore=l,exports.useStoreMap=(e,t)=>s([e,t],a(null==e?void 0:e.forceScope)),exports.useUnit=(e,t)=>o(e,a(null==t?void 0:t.forceScope)); | ||
function e(e){return e&&'object'==typeof e&&'default'in e?e.default:e}function t(e,t){return t.displayName=e,t}function r(e,t){b(1,'useStore','useUnit'),effector.is.store(e)||v('expect useStore argument to be a store');let r=y.useCallback((r=>effector.createWatch({unit:e,fn:r,scope:t})),[e,t]),n=y.useCallback((()=>h(e,t)),[e,t]);return p.useSyncExternalStore(r,n,n)}function n(e,t){let r=effector.is.unit(e),n={};r?n={unit:e}:'@@unitShape'in e?'function'==typeof e['@@unitShape']?n=e['@@unitShape']():v('expect @@unitShape to be a function'):n=e;let o=Array.isArray(n),s=y.useRef({stale:1,justSubscribed:0,scope:t}),[u,a,l,c,i]=y.useMemo((()=>{s.current.stale=1;let e=Array.isArray(n)?[]:{},r=[],o=[],u=[],a=[];for(let s in n){let l=n[s];effector.is.unit(l)||v('expect useUnit argument to be a unit'),effector.is.event(l)||effector.is.effect(l)?(e[s]=t?effector.scopeBind(l,{scope:t}):l,u.push(s),a.push(l)):(e[s]=null,r.push(s),o.push(l))}return[e,r,o,u,a]}),[s,t,...Object.keys(n),...Object.values(n)]),f=y.useRef({value:u,storeKeys:a,eventKeys:c,eventValues:i}),d=y.useCallback((e=>{let r=s.current;return r.justSubscribed=1,effector.createWatch({unit:l,fn:()=>{r.stale||(r.stale=1,e())},scope:t,batch:1})}),[l,t,f,s]),m=y.useCallback((()=>{let e,n=f.current,p=s.current,d=0,y=n.value,v=n.storeKeys,m=n.eventKeys,b=n.eventValues,S=t!==p.scope;if(p.stale||p.justSubscribed||S){d=!p.justSubscribed||S,e=o?[...u]:{...u},v.length===a.length&&m.length===c.length||(d=1);for(let r=0;r<a.length;r++){let n=h(l[r],t),o=a[r];d||(d=v.includes(o)?y[o]!==n:1),e[o]=n}for(let e=0;e<c.length;e++){let t=i[e],r=c[e];d||(d=m.includes(r)?b[m.indexOf(r)]!==t:1)}}return d&&(n.value=e),n.storeKeys=a,n.eventKeys=c,n.eventValues=i,p.stale=0,p.justSubscribed=!d,p.scope=t,r?n.value.unit:n.value}),[d,l,i,t,f,s]);return p.useSyncExternalStore(d,m,m)}function o([e,t],r){let n,o,s,u,a=S;t?(n=t,s=e,u=[]):({fn:n,store:s,keys:u,defaultValue:o,updateFilter:a=S}=e),effector.is.store(s)||v('useStoreMap expects a store'),Array.isArray(u)||v('useStoreMap expects an array as keys'),'function'!=typeof n&&v('useStoreMap expects a function');let l=y.useCallback((e=>effector.createWatch({unit:s,fn:e,scope:r})),[s,r]),c=y.useCallback((()=>h(s,r)),[s,r]),i=y.useRef(),f=y.useRef(),p=y.useRef(u);return d.useSyncExternalStoreWithSelector(l,c,c,(e=>{if(i.current!==e||!((e,t)=>{if(!e||!t||e.length!==t.length)return 0;let r=1;for(let n=0;n<e.length;n++)if(e[n]!==t[n]){r=0;break}return r})(p.current,u)){let t=n(e,u);void 0===t&&void 0!==o&&(t=o),i.current=e,p.current=u,void 0!==t&&(f.current=t)}return f.current}),((e,t)=>!a(t,e)))}function s(e,t={},r){let{open:o,close:s,set:u}=n({open:e.open,close:e.close,set:e.set},r),a=y.useMemo((()=>({open:o,close:s,set:u})),[e,o]),l=y.useRef({value:null,count:0});m((()=>(a.open(l.current.value),()=>a.close(l.current.value))),[a]),((e,t)=>{if(e===t)return 1;if('object'==typeof e&&null!==e&&'object'==typeof t&&null!==t){let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return 0;for(let n=0;n<r.length;n++){let o=r[n];if(e[o]!==t[o])return 0}return 1}return 0})(l.current.value,t)||(l.current.value=t,l.current.count+=1),m((()=>{a.set(l.current.value)}),[l.current.count])}function u(e){let t=y.useContext(g);return e&&!t&&v('No scope found, consider adding <Provider> to app root'),t}function a(e,t){return r(e,u(null==t?void 0:t.forceScope))}function l(e,r){function n(e){let t=y.useRef(e),n=a(o);m((()=>(u({props:t.current,state:o.getState()}),()=>{l({props:t.current,state:o.getState()})})),[]);let s=r(e,n);return t.current=e,s}let o;k('createComponent','@effector/reflect'),effector.is.store(e)?o=e:'object'==typeof e&&null!==e?o=effector.combine(e):v('shape should be a store or object with stores');let s='Unknown';o&&o.shortName&&(s=o.shortName);let u=effector.createEvent(),l=effector.createEvent();return n.mounted=u,n.unmounted=l,t(`${s}.View`,n)}function c(e){let t=e[0];var r;(e=>{if(!e)throw Error('expect first argument be an object')})(j(r=t)||(e=>'function'==typeof e)(r));let n=t.or,o=t.and;if(o){let t=o[0];if(j(t)&&'and'in t){let t=c(o);e=t[0],n={...n,...t[1]}}else e=o}return[e,n]}function i(e,t){let r=t&&j(n=t[0])&&(n.and||n.or)?t:[{and:t}];var n;let o,[[s,u],a]=c(r),l={},i={},f=a;var p;return'string'==typeof s?(i={name:s},j(p=u)&&'sid'in p||(l=u||{})):(e=>j(e)&&('domain'in e||'defaultState'in e||'name'in e))(s)&&(i=s,l=s.defaultState||{},o=s.domain),{hook:e,domain:o,defaultState:l,mainConfig:i,maybeConfig:f}}Object.defineProperty(exports,'__esModule',{value:1});var f=require('react'),effector=require('effector'),p=require('use-sync-external-store/shim/index.js'),d=require('use-sync-external-store/shim/with-selector.js'),y=e(f);let v=e=>{throw Error(e)},m='undefined'!=typeof window?y.useLayoutEffect:y.useEffect,b=(e,t,r)=>{f.useEffect((()=>{e&&console.error(`${t} is deprecated${r?`, prefer ${r} instead`:''}`)}),[e,t,r])};const h=(e,t)=>t?t.getState(e):e.getState(),S=(e,t)=>e!==t,g=y.createContext(null);let{Provider:x}=g,k=(e,t)=>{console.error(`${e} is deprecated${t?`, use ${t} instead`:''}`)},j=e=>'object'==typeof e&&null!==e,$=(e,t={})=>(j(e)&&($(e.or,t),(e=>{for(let o in e)n=o,(e=>void 0===e)(r=e[o])||'or'===n||'and'===n||(t[n]=r);var r,n})(e),$(e.and,t)),t);exports.Provider=x,exports.connect=e=>(k('connect','useUnit'),r=>{let n=e;return'function'!=typeof e&&(n=r,r=e),t(`Connect(${n.displayName||n.name||'Unknown'})`,(e=>y.createElement(n,{...e,...a(r)})))}),exports.createComponent=l,exports.createGate=(...e)=>(({domain:e,defaultState:r,hook:n,mainConfig:o,maybeConfig:s})=>{function a(e){return n(a,e,u()),null}let l=$({or:s,and:o}),c=`${e?`${e.compositeName.fullName}/`:''}${l.name||'gate'}`,i=effector.createEvent({name:`${c}.set`,sid:l.sid?`${l.sid}|set`:void 0}),f=effector.createEvent({name:`${c}.open`,sid:l.sid?`${l.sid}|open`:void 0}),p=effector.createEvent({name:`${c}.close`,sid:l.sid?`${l.sid}|close`:void 0}),d=effector.createStore(Boolean(0),{name:`${c}.status`,serialize:'ignore'}).on(f,(()=>Boolean(1))).on(p,(()=>Boolean(0))),y=effector.createStore(r,{name:`${c}.state`,sid:l.sid}).on(i,((e,t)=>t)).on(f,((e,t)=>t)).reset(p);if(e){let{hooks:t}=e;effector.launch({target:[t.store,t.store,t.event,t.event,t.event],params:[d,y,f,p,i]})}return a.open=f,a.close=p,a.status=d,a.state=y,a.set=i,t(`Gate:${c}`,a)})(i(s,e)),exports.createStoreConsumer=e=>(k('createStoreConsumer','useUnit'),l(e,(({children:e},t)=>e(t)))),exports.useEvent=(e,t)=>((e,t)=>{if(b(1,'useEvent','useUnit'),!t)return e;let r=effector.is.unit(e)||'object'!=typeof e?{event:e}:e;return y.useMemo((()=>{if(effector.is.unit(e))return effector.scopeBind(e,{scope:t});let r=Array.isArray(e)?[]:{};for(let n in e)r[n]=effector.scopeBind(e[n],{scope:t});return r}),[t,...Object.keys(r),...Object.values(r)])})(e,u(null==t?void 0:t.forceScope)),exports.useGate=(e,t={},r)=>s(e,t,u(null==r?void 0:r.forceScope)),exports.useList=(e,n,s)=>((e,n,s)=>{let u,a,l,c=[];'object'==typeof n&&null!==n?(n.keys&&(c=n.keys),({fn:u,getKey:a,placeholder:l}=n)):u=n,effector.is.store(e)||v('expect useList first argument to be a store'),'function'!=typeof u&&v("expect useList's renderItem to be a function"),Array.isArray(c)||v("expect useList's keys to be an array");let i=y.useMemo((()=>{let r=t(`${e.shortName||'Unknown'}.Item`,(t=>{let{index:r,keys:n,keyVal:u,value:a}=t;if(f.current[1])return f.current[0](a,u);let l=o([{store:e,keys:[r,...n],fn:(e,t)=>e[t[0]]}],s);return f.current[0](l,r)}));return y.memo(r)}),[e,s,!!a]),f=y.useRef([u,a]);f.current=[u,a];let p=y.useMemo((()=>c),c);if(a){let t=r(e,s);return 0===t.length&&l?l:t.map((e=>{let t=f.current[1](e);return y.createElement(i,{keyVal:t,key:t,keys:p,value:e})}))}{let t=o([{store:e,keys:[e],fn:e=>e.length}],s);return 0===t&&l?l:Array.from({length:t},((e,t)=>y.createElement(i,{index:t,key:t,keys:p})))}})(e,n,u(null==s?void 0:s.forceScope)),exports.useStore=a,exports.useStoreMap=(e,t)=>o([e,t],u(null==e?void 0:e.forceScope)),exports.useUnit=(e,t)=>n(e,u(null==t?void 0:t.forceScope)); | ||
//# sourceMappingURL=effector-react.cjs.js.map |
import React from 'react' | ||
import {Store, Event, Effect, Domain, Scope} from 'effector' | ||
import {Store, Event, Effect, Domain, Scope, EventCallable} from 'effector' | ||
@@ -21,2 +21,5 @@ export const Provider: React.Provider<Scope> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useStore<State>( | ||
@@ -89,2 +92,5 @@ store: Store<State>, | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createComponent<Props, State>( | ||
@@ -94,2 +100,5 @@ store: Store<State>, | ||
): StoreView<State, Props> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createComponent<Props, Shape extends object>( | ||
@@ -107,10 +116,4 @@ store: Shape, | ||
/** | ||
* @deprecated use useStore hook instead | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createContextComponent<Props, State, Context>( | ||
store: Store<State>, | ||
context: React.Context<Context>, | ||
view: (props: Props, state: State, context: Context) => React.ReactNode, | ||
): React.ComponentType<Props> | ||
export function connect< | ||
@@ -120,2 +123,5 @@ State extends object, | ||
>(store: Store<State>): (Component: Com) => React.ComponentType<State> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function connect< | ||
@@ -126,2 +132,5 @@ State extends object, | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createStoreConsumer<State>( | ||
@@ -132,17 +141,18 @@ store: Store<State>, | ||
/** | ||
* @deprecated use useStore hook instead | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createReactState< | ||
State extends object, | ||
Com extends React.ComponentType<any>, | ||
>(store: Store<State>, Component: Com): React.ComponentType<State> | ||
export function useEvent( | ||
event: Event<void>, | ||
event: EventCallable<void>, | ||
opts?: {forceScope?: boolean}, | ||
): () => void | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<T>( | ||
event: Event<T>, | ||
event: EventCallable<T>, | ||
opts?: {forceScope?: boolean}, | ||
): (payload: T) => T | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<R>( | ||
@@ -152,2 +162,5 @@ fx: Effect<void, R, any>, | ||
): () => Promise<R> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<T, R>( | ||
@@ -157,7 +170,7 @@ fx: Effect<T, R, any>, | ||
): (payload: T) => Promise<R> | ||
export function useEvent<List extends (Event<any> | Effect<any, any>)[]>( | ||
export function useEvent<List extends (EventCallable<any> | Effect<any, any>)[]>( | ||
list: [...List], | ||
opts?: {forceScope?: boolean}, | ||
): { | ||
[Key in keyof List]: List[Key] extends Event<infer T> | ||
[Key in keyof List]: List[Key] extends EventCallable<infer T> | ||
? (payload: T) => T | ||
@@ -168,4 +181,7 @@ : List[Key] extends Effect<infer P, infer D, any> | ||
} | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent< | ||
Shape extends Record<string, Event<any> | Effect<any, any, any>>, | ||
Shape extends Record<string, EventCallable<any> | Effect<any, any, any>>, | ||
>( | ||
@@ -175,3 +191,3 @@ shape: Shape, | ||
): { | ||
[Key in keyof Shape]: Shape[Key] extends Event<infer T> | ||
[Key in keyof Shape]: Shape[Key] extends EventCallable<infer T> | ||
? (payload: T) => T | ||
@@ -194,7 +210,7 @@ : Shape[Key] extends Effect<infer P, infer D, any> | ||
export function useUnit( | ||
event: Event<void>, | ||
event: EventCallable<void>, | ||
opts?: {forceScope?: boolean}, | ||
): () => void | ||
export function useUnit<T>( | ||
event: Event<T>, | ||
event: EventCallable<T>, | ||
opts?: {forceScope?: boolean}, | ||
@@ -211,3 +227,3 @@ ): (payload: T) => T | ||
export function useUnit< | ||
List extends (Event<any> | Effect<any, any> | Store<any>)[], | ||
List extends (EventCallable<any> | Effect<any, any> | Store<any>)[], | ||
>( | ||
@@ -217,3 +233,3 @@ list: [...List], | ||
): { | ||
[Key in keyof List]: List[Key] extends Event<infer T> | ||
[Key in keyof List]: List[Key] extends EventCallable<infer T> | ||
? Equal<T, void> extends true | ||
@@ -231,3 +247,3 @@ ? () => void | ||
export function useUnit< | ||
Shape extends Record<string, Event<any> | Effect<any, any, any> | Store<any>>, | ||
Shape extends Record<string, EventCallable<any> | Effect<any, any, any> | Store<any>>, | ||
>( | ||
@@ -237,3 +253,3 @@ shape: Shape | {'@@unitShape': () => Shape}, | ||
): { | ||
[Key in keyof Shape]: Shape[Key] extends Event<infer T> | ||
[Key in keyof Shape]: Shape[Key] extends EventCallable<infer T> | ||
? Equal<T, void> extends true | ||
@@ -240,0 +256,0 @@ ? () => void |
import React from 'react' | ||
import {Store, Event, Effect, Domain, Scope} from 'effector' | ||
import {Store, Event, Effect, Domain, Scope, EventCallable} from 'effector' | ||
@@ -21,2 +21,5 @@ export const Provider: React.Provider<Scope> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useStore<State>( | ||
@@ -89,2 +92,5 @@ store: Store<State>, | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createComponent<Props, State>( | ||
@@ -94,2 +100,5 @@ store: Store<State>, | ||
): StoreView<State, Props> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createComponent<Props, Shape extends object>( | ||
@@ -107,10 +116,4 @@ store: Shape, | ||
/** | ||
* @deprecated use useStore hook instead | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createContextComponent<Props, State, Context>( | ||
store: Store<State>, | ||
context: React.Context<Context>, | ||
view: (props: Props, state: State, context: Context) => React.ReactNode, | ||
): React.ComponentType<Props> | ||
export function connect< | ||
@@ -120,2 +123,5 @@ State extends object, | ||
>(store: Store<State>): (Component: Com) => React.ComponentType<State> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function connect< | ||
@@ -126,2 +132,5 @@ State extends object, | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createStoreConsumer<State>( | ||
@@ -132,17 +141,18 @@ store: Store<State>, | ||
/** | ||
* @deprecated use useStore hook instead | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createReactState< | ||
State extends object, | ||
Com extends React.ComponentType<any>, | ||
>(store: Store<State>, Component: Com): React.ComponentType<State> | ||
export function useEvent( | ||
event: Event<void>, | ||
event: EventCallable<void>, | ||
opts?: {forceScope?: boolean}, | ||
): () => void | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<T>( | ||
event: Event<T>, | ||
event: EventCallable<T>, | ||
opts?: {forceScope?: boolean}, | ||
): (payload: T) => T | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<R>( | ||
@@ -152,2 +162,5 @@ fx: Effect<void, R, any>, | ||
): () => Promise<R> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<T, R>( | ||
@@ -157,7 +170,7 @@ fx: Effect<T, R, any>, | ||
): (payload: T) => Promise<R> | ||
export function useEvent<List extends (Event<any> | Effect<any, any>)[]>( | ||
export function useEvent<List extends (EventCallable<any> | Effect<any, any>)[]>( | ||
list: [...List], | ||
opts?: {forceScope?: boolean}, | ||
): { | ||
[Key in keyof List]: List[Key] extends Event<infer T> | ||
[Key in keyof List]: List[Key] extends EventCallable<infer T> | ||
? (payload: T) => T | ||
@@ -168,4 +181,7 @@ : List[Key] extends Effect<infer P, infer D, any> | ||
} | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent< | ||
Shape extends Record<string, Event<any> | Effect<any, any, any>>, | ||
Shape extends Record<string, EventCallable<any> | Effect<any, any, any>>, | ||
>( | ||
@@ -175,3 +191,3 @@ shape: Shape, | ||
): { | ||
[Key in keyof Shape]: Shape[Key] extends Event<infer T> | ||
[Key in keyof Shape]: Shape[Key] extends EventCallable<infer T> | ||
? (payload: T) => T | ||
@@ -194,7 +210,7 @@ : Shape[Key] extends Effect<infer P, infer D, any> | ||
export function useUnit( | ||
event: Event<void>, | ||
event: EventCallable<void>, | ||
opts?: {forceScope?: boolean}, | ||
): () => void | ||
export function useUnit<T>( | ||
event: Event<T>, | ||
event: EventCallable<T>, | ||
opts?: {forceScope?: boolean}, | ||
@@ -211,3 +227,3 @@ ): (payload: T) => T | ||
export function useUnit< | ||
List extends (Event<any> | Effect<any, any> | Store<any>)[], | ||
List extends (EventCallable<any> | Effect<any, any> | Store<any>)[], | ||
>( | ||
@@ -217,3 +233,3 @@ list: [...List], | ||
): { | ||
[Key in keyof List]: List[Key] extends Event<infer T> | ||
[Key in keyof List]: List[Key] extends EventCallable<infer T> | ||
? Equal<T, void> extends true | ||
@@ -231,3 +247,3 @@ ? () => void | ||
export function useUnit< | ||
Shape extends Record<string, Event<any> | Effect<any, any, any> | Store<any>>, | ||
Shape extends Record<string, EventCallable<any> | Effect<any, any, any> | Store<any>>, | ||
>( | ||
@@ -237,3 +253,3 @@ shape: Shape | {'@@unitShape': () => Shape}, | ||
): { | ||
[Key in keyof Shape]: Shape[Key] extends Event<infer T> | ||
[Key in keyof Shape]: Shape[Key] extends EventCallable<infer T> | ||
? Equal<T, void> extends true | ||
@@ -240,0 +256,0 @@ ? () => void |
@@ -1,2 +0,2 @@ | ||
((e,t)=>{'object'==typeof exports&&'undefined'!=typeof module?t(exports,require('react'),require('effector'),require('use-sync-external-store/shim/index.js'),require('use-sync-external-store/shim/with-selector.js')):'function'==typeof define&&define.amd?define(['exports','react','effector','use-sync-external-store/shim/index.js','use-sync-external-store/shim/with-selector.js'],t):t((e='undefined'!=typeof globalThis?globalThis:e||self).effectorReact={},e.React,e.effector,e.useSyncExternalStoreShim,e.useSyncExternalStoreWithSelectorShim)})(this,((e,t,effector,n,r)=>{function o(e){return e&&'object'==typeof e&&'default'in e?e:{default:e}}function u(e,t,n,r){let o=[effector.step.mov({store:e.stateRef,to:'stack'}),effector.step.run({fn:e=>t(e)})];if(r&&o.unshift(r),n){let t=effector.createNode({node:o,meta:{watchOp:"store"}}),r=e.graphite.id,u=n.additionalLinks,s=u[r]||[];return u[r]=s,s.push(t),()=>{let e=s.indexOf(t);-1!==e&&s.splice(e,1),effector.clearNode(t)}}{let t=effector.createNode({node:o,parent:[e],family:{owners:e}});return()=>{effector.clearNode(t)}}}function s(e,t){return t.displayName=e,t}function a(e,t){effector.is.store(e)||v('expect useStore argument to be a store');let r=h.default.useCallback((n=>u(e,n,t)),[e,t]),o=h.default.useCallback((()=>S(e,t)),[e,t]);return n.useSyncExternalStore(r,o,o)}function l(e,t){let r=effector.is.unit(e),o={};r?o={unit:e}:'@@unitShape'in e?'function'==typeof e['@@unitShape']?o=e['@@unitShape']():v('expect @@unitShape to be a function'):o=e;let s=Array.isArray(o),a=h.default.useRef({stale:1,justSubscribed:0,scope:t}),[l,i,c,f,d]=h.default.useMemo((()=>{a.current.stale=1;let e=Array.isArray(o)?[]:{},n=[],r=[],u=[],s=[];for(let a in o){let l=o[a];effector.is.unit(l)||v('expect useUnit argument to be a unit'),effector.is.event(l)||effector.is.effect(l)?(e[a]=t?effector.scopeBind(l,{scope:t}):l,u.push(a),s.push(l)):(e[a]=null,n.push(a),r.push(l))}return[e,n,r,u,s]}),[a,t,...Object.keys(o),...Object.values(o)]),p=h.default.useRef({value:l,storeKeys:i,eventKeys:f,eventValues:d}),y=h.default.useCallback((e=>{let n=a.current;n.justSubscribed=1;let r=()=>{n.stale||(n.stale=1,e())},o=effector.step.compute({priority:'sampler',batch:1}),s=c.map((e=>u(e,r,t,o)));return()=>{s.forEach((e=>e()))}}),[c,t,p,a]),m=h.default.useCallback((()=>{let e,n=p.current,o=a.current,u=0,y=n.value,m=n.storeKeys,h=n.eventKeys,v=n.eventValues,b=t!==o.scope;if(o.stale||o.justSubscribed||b){u=!o.justSubscribed||b,e=s?[...l]:{...l},m.length===i.length&&h.length===f.length||(u=1);for(let n=0;n<i.length;n++){let r=S(c[n],t),o=i[n];u||(u=m.includes(o)?y[o]!==r:1),e[o]=r}for(let e=0;e<f.length;e++){let t=d[e],n=f[e];u||(u=h.includes(n)?v[h.indexOf(n)]!==t:1)}}return u&&(n.value=e),n.storeKeys=i,n.eventKeys=f,n.eventValues=d,o.stale=0,o.justSubscribed=!u,o.scope=t,r?n.value.unit:n.value}),[y,c,d,t,p,a]);return n.useSyncExternalStore(y,m,m)}function i([e,t],n){let o,s,a,l,i=g;t?(o=t,a=e,l=[]):({fn:o,store:a,keys:l,defaultValue:s,updateFilter:i=g}=e),effector.is.store(a)||v('useStoreMap expects a store'),Array.isArray(l)||v('useStoreMap expects an array as keys'),'function'!=typeof o&&v('useStoreMap expects a function');let c=h.default.useCallback((e=>u(a,e,n)),[a,n]),f=h.default.useCallback((()=>S(a,n)),[a,n]),d=h.default.useRef(),p=h.default.useRef(),y=h.default.useRef(l);return r.useSyncExternalStoreWithSelector(c,f,f,(e=>{if(d.current!==e||!((e,t)=>{if(!e||!t||e.length!==t.length)return 0;let n=1;for(let r=0;r<e.length;r++)if(e[r]!==t[r]){n=0;break}return n})(y.current,l)){let t=o(e,l);void 0===t&&void 0!==s&&(t=s),d.current=e,y.current=l,void 0!==t&&(p.current=t)}return p.current}),((e,t)=>!i(t,e)))}function c(e,t={},n){let{open:r,close:o,set:u}=l({open:e.open,close:e.close,set:e.set},n),s=h.default.useMemo((()=>({open:r,close:o,set:u})),[e,r]),a=h.default.useRef({value:null,count:0});b((()=>(s.open(a.current.value),()=>s.close(a.current.value))),[s]),((e,t)=>{if(e===t)return 1;if('object'==typeof e&&null!==e&&'object'==typeof t&&null!==t){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return 0;for(let r=0;r<n.length;r++){let o=n[r];if(e[o]!==t[o])return 0}return 1}return 0})(a.current.value,t)||(a.current.value=t,a.current.count+=1),b((()=>{s.set(a.current.value)}),[a.current.count])}function f(e){let t=h.default.useContext(k);return e&&!t&&v('No scope found, consider adding <Provider> to app root'),t}function d(e,t){return a(e,f(null==t?void 0:t.forceScope))}function p(e,t){function n(e){let n=h.default.useRef(e),o=d(r);b((()=>(u({props:n.current,state:r.getState()}),()=>{a({props:n.current,state:r.getState()})})),[]);let s=t(e,o);return n.current=e,s}let r;effector.is.store(e)?r=e:'object'==typeof e&&null!==e?r=effector.combine(e):v('shape should be a store or object with stores');let o='Unknown';r&&r.shortName&&(o=r.shortName);let u=effector.createEvent(),a=effector.createEvent();return n.mounted=u,n.unmounted=a,s(`${o}.View`,n)}function y(e,t){let n=t?e:e[0];(e=>{(e=>{if(!e)throw Error('expect first argument be an object')})(E(e)||(e=>'function'==typeof e)(e))})(n);let r=n.or,o=n.and;if(o){let n=t?o:o[0];if(E(n)&&'and'in n){let n=y(o,t);e=n[0],r={...r,...n[1]}}else e=o}return[e,r]}function m(e,t){let n,r=t&&(e=>E(e)&&(e.and||e.or))(t[0])?t:[{and:t}],[[o,u],s]=y(r),a={},l={},i=s;return'string'==typeof o?(l={name:o},(e=>E(e)&&'sid'in e)(u)||(a=u||{})):(e=>E(e)&&('domain'in e||'defaultState'in e||'name'in e))(o)&&(l=o,a=o.defaultState||{},n=o.domain),{hook:e,domain:n,defaultState:a,mainConfig:l,maybeConfig:i}}var h=o(t);let v=e=>{throw Error(e)},b='undefined'!=typeof window?h.default.useLayoutEffect:h.default.useEffect;const S=(e,t)=>t?t.getState(e):e.getState(),g=(e,t)=>e!==t,k=h.default.createContext(null);let{Provider:x}=k,j=e=>console.error(`${e} is deprecated`),C=e=>t=>{let n=e;return'function'!=typeof e&&(n=t,t=e),s(`Connect(${n.displayName||n.name||'Unknown'})`,(e=>h.default.createElement(n,{...e,...d(t)})))},E=e=>'object'==typeof e&&null!==e,$=(e,t={})=>(E(e)&&($(e.or,t),((e,t)=>{for(let n in e)t(e[n],n)})(e,((e,n)=>{(e=>void 0===e)(e)||'or'===n||'and'===n||(t[n]=e)})),$(e.and,t)),t);e.Provider=x,e.connect=C,e.createComponent=p,e.createContextComponent=(e,t,n)=>(j('createContextComponent'),s(`${e.shortName||'Unknown'}.ContextComponent`,(r=>{let o=h.default.useContext(t),u=d(e);return n(r,u,o)}))),e.createGate=(...e)=>(({domain:e,defaultState:t,hook:n,mainConfig:r,maybeConfig:o})=>{function u(e){return n(u,e,f()),null}let a=$({or:o,and:r}),l=`${e?`${e.compositeName.fullName}/`:''}${a.name||'gate'}`,i=effector.createEvent({name:`${l}.set`,sid:a.sid?`${a.sid}|set`:void 0}),c=effector.createEvent({name:`${l}.open`,sid:a.sid?`${a.sid}|open`:void 0}),d=effector.createEvent({name:`${l}.close`,sid:a.sid?`${a.sid}|close`:void 0}),p=effector.createStore(Boolean(0),{name:`${l}.status`,serialize:'ignore'}).on(c,(()=>Boolean(1))).on(d,(()=>Boolean(0))),y=effector.createStore(t,{name:`${l}.state`,sid:a.sid}).on(i,((e,t)=>t)).on(c,((e,t)=>t)).reset(d);if(e){let{hooks:t}=e;effector.launch({target:[t.store,t.store,t.event,t.event,t.event],params:[p,y,c,d,i]})}return u.open=c,u.close=d,u.status=p,u.state=y,u.set=i,s(`Gate:${l}`,u)})(m(c,e)),e.createReactState=(e,t)=>(j('createReactState'),C(t)(e)),e.createStoreConsumer=e=>p(e,(({children:e},t)=>e(t))),e.useEvent=(e,t)=>((e,t)=>{if(!t)return e;let n=effector.is.unit(e)||'object'!=typeof e?{event:e}:e;return h.default.useMemo((()=>{if(effector.is.unit(e))return effector.scopeBind(e,{scope:t});let n=Array.isArray(e)?[]:{};for(let r in e)n[r]=effector.scopeBind(e[r],{scope:t});return n}),[t,...Object.keys(n),...Object.values(n)])})(e,f(null==t?void 0:t.forceScope)),e.useGate=(e,t={},n)=>c(e,t,f(null==n?void 0:n.forceScope)),e.useList=(e,t,n)=>((e,t,n)=>{let r,o,u,l=[];'object'==typeof t&&null!==t?(t.keys&&(l=t.keys),({fn:r,getKey:o,placeholder:u}=t)):r=t,effector.is.store(e)||v('expect useList first argument to be a store'),'function'!=typeof r&&v("expect useList's renderItem to be a function"),Array.isArray(l)||v("expect useList's keys to be an array");let c=h.default.useMemo((()=>{let t=s(`${e.shortName||'Unknown'}.Item`,(t=>{let{index:r,keys:o,keyVal:u,value:s}=t;if(f.current[1])return f.current[0](s,u);let a=i([{store:e,keys:[r,...o],fn:(e,t)=>e[t[0]]}],n);return f.current[0](a,r)}));return h.default.memo(t)}),[e,n,!!o]),f=h.default.useRef([r,o]);f.current=[r,o];let d=h.default.useMemo((()=>l),l);if(o){let t=a(e,n);return 0===t.length&&u?u:t.map((e=>{let t=f.current[1](e);return h.default.createElement(c,{keyVal:t,key:t,keys:d,value:e})}))}{let t=i([{store:e,keys:[e],fn:e=>e.length}],n);return 0===t&&u?u:Array.from({length:t},((e,t)=>h.default.createElement(c,{index:t,key:t,keys:d})))}})(e,t,f(null==n?void 0:n.forceScope)),e.useStore=d,e.useStoreMap=(e,t)=>i([e,t],f(null==e?void 0:e.forceScope)),e.useUnit=(e,t)=>l(e,f(null==t?void 0:t.forceScope)),Object.defineProperty(e,'__esModule',{value:1})})); | ||
((e,t)=>{'object'==typeof exports&&'undefined'!=typeof module?t(exports,require('react'),require('effector'),require('use-sync-external-store/shim/index.js'),require('use-sync-external-store/shim/with-selector.js')):'function'==typeof define&&define.amd?define(['exports','react','effector','use-sync-external-store/shim/index.js','use-sync-external-store/shim/with-selector.js'],t):t((e='undefined'!=typeof globalThis?globalThis:e||self).effectorReact={},e.React,e.effector,e.useSyncExternalStoreShim,e.useSyncExternalStoreWithSelectorShim)})(this,((e,t,effector,n,r)=>{function u(e){return e&&'object'==typeof e&&'default'in e?e:{default:e}}function o(e,t){return t.displayName=e,t}function s(e,t){b(1,'useStore','useUnit'),effector.is.store(e)||h('expect useStore argument to be a store');let r=m.default.useCallback((n=>effector.createWatch({unit:e,fn:n,scope:t})),[e,t]),u=m.default.useCallback((()=>S(e,t)),[e,t]);return n.useSyncExternalStore(r,u,u)}function a(e,t){let r=effector.is.unit(e),u={};r?u={unit:e}:'@@unitShape'in e?'function'==typeof e['@@unitShape']?u=e['@@unitShape']():h('expect @@unitShape to be a function'):u=e;let o=Array.isArray(u),s=m.default.useRef({stale:1,justSubscribed:0,scope:t}),[a,l,c,i,f]=m.default.useMemo((()=>{s.current.stale=1;let e=Array.isArray(u)?[]:{},n=[],r=[],o=[],a=[];for(let s in u){let l=u[s];effector.is.unit(l)||h('expect useUnit argument to be a unit'),effector.is.event(l)||effector.is.effect(l)?(e[s]=t?effector.scopeBind(l,{scope:t}):l,o.push(s),a.push(l)):(e[s]=null,n.push(s),r.push(l))}return[e,n,r,o,a]}),[s,t,...Object.keys(u),...Object.values(u)]),d=m.default.useRef({value:a,storeKeys:l,eventKeys:i,eventValues:f}),p=m.default.useCallback((e=>{let n=s.current;return n.justSubscribed=1,effector.createWatch({unit:c,fn:()=>{n.stale||(n.stale=1,e())},scope:t,batch:1})}),[c,t,d,s]),y=m.default.useCallback((()=>{let e,n=d.current,u=s.current,p=0,y=n.value,m=n.storeKeys,h=n.eventKeys,v=n.eventValues,b=t!==u.scope;if(u.stale||u.justSubscribed||b){p=!u.justSubscribed||b,e=o?[...a]:{...a},m.length===l.length&&h.length===i.length||(p=1);for(let n=0;n<l.length;n++){let r=S(c[n],t),u=l[n];p||(p=m.includes(u)?y[u]!==r:1),e[u]=r}for(let e=0;e<i.length;e++){let t=f[e],n=i[e];p||(p=h.includes(n)?v[h.indexOf(n)]!==t:1)}}return p&&(n.value=e),n.storeKeys=l,n.eventKeys=i,n.eventValues=f,u.stale=0,u.justSubscribed=!p,u.scope=t,r?n.value.unit:n.value}),[p,c,f,t,d,s]);return n.useSyncExternalStore(p,y,y)}function l([e,t],n){let u,o,s,a,l=g;t?(u=t,s=e,a=[]):({fn:u,store:s,keys:a,defaultValue:o,updateFilter:l=g}=e),effector.is.store(s)||h('useStoreMap expects a store'),Array.isArray(a)||h('useStoreMap expects an array as keys'),'function'!=typeof u&&h('useStoreMap expects a function');let c=m.default.useCallback((e=>effector.createWatch({unit:s,fn:e,scope:n})),[s,n]),i=m.default.useCallback((()=>S(s,n)),[s,n]),f=m.default.useRef(),d=m.default.useRef(),p=m.default.useRef(a);return r.useSyncExternalStoreWithSelector(c,i,i,(e=>{if(f.current!==e||!((e,t)=>{if(!e||!t||e.length!==t.length)return 0;let n=1;for(let r=0;r<e.length;r++)if(e[r]!==t[r]){n=0;break}return n})(p.current,a)){let t=u(e,a);void 0===t&&void 0!==o&&(t=o),f.current=e,p.current=a,void 0!==t&&(d.current=t)}return d.current}),((e,t)=>!l(t,e)))}function c(e,t={},n){let{open:r,close:u,set:o}=a({open:e.open,close:e.close,set:e.set},n),s=m.default.useMemo((()=>({open:r,close:u,set:o})),[e,r]),l=m.default.useRef({value:null,count:0});v((()=>(s.open(l.current.value),()=>s.close(l.current.value))),[s]),((e,t)=>{if(e===t)return 1;if('object'==typeof e&&null!==e&&'object'==typeof t&&null!==t){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return 0;for(let r=0;r<n.length;r++){let u=n[r];if(e[u]!==t[u])return 0}return 1}return 0})(l.current.value,t)||(l.current.value=t,l.current.count+=1),v((()=>{s.set(l.current.value)}),[l.current.count])}function i(e){let t=m.default.useContext(k);return e&&!t&&h('No scope found, consider adding <Provider> to app root'),t}function f(e,t){return s(e,i(null==t?void 0:t.forceScope))}function d(e,t){function n(e){let n=m.default.useRef(e),u=f(r);v((()=>(s({props:n.current,state:r.getState()}),()=>{a({props:n.current,state:r.getState()})})),[]);let o=t(e,u);return n.current=e,o}let r;j('createComponent','@effector/reflect'),effector.is.store(e)?r=e:'object'==typeof e&&null!==e?r=effector.combine(e):h('shape should be a store or object with stores');let u='Unknown';r&&r.shortName&&(u=r.shortName);let s=effector.createEvent(),a=effector.createEvent();return n.mounted=s,n.unmounted=a,o(`${u}.View`,n)}function p(e){let t=e[0];(e=>{(e=>{if(!e)throw Error('expect first argument be an object')})($(e)||(e=>'function'==typeof e)(e))})(t);let n=t.or,r=t.and;if(r){let t=r[0];if($(t)&&'and'in t){let t=p(r);e=t[0],n={...n,...t[1]}}else e=r}return[e,n]}function y(e,t){let n,r=t&&(e=>$(e)&&(e.and||e.or))(t[0])?t:[{and:t}],[[u,o],s]=p(r),a={},l={},c=s;return'string'==typeof u?(l={name:u},(e=>$(e)&&'sid'in e)(o)||(a=o||{})):(e=>$(e)&&('domain'in e||'defaultState'in e||'name'in e))(u)&&(l=u,a=u.defaultState||{},n=u.domain),{hook:e,domain:n,defaultState:a,mainConfig:l,maybeConfig:c}}var m=u(t);let h=e=>{throw Error(e)},v='undefined'!=typeof window?m.default.useLayoutEffect:m.default.useEffect,b=(e,n,r)=>{t.useEffect((()=>{e&&console.error(`${n} is deprecated${r?`, prefer ${r} instead`:''}`)}),[e,n,r])};const S=(e,t)=>t?t.getState(e):e.getState(),g=(e,t)=>e!==t,k=m.default.createContext(null);let{Provider:x}=k,j=(e,t)=>{console.error(`${e} is deprecated${t?`, use ${t} instead`:''}`)},$=e=>'object'==typeof e&&null!==e,E=(e,t={})=>($(e)&&(E(e.or,t),((e,t)=>{for(let n in e)t(e[n],n)})(e,((e,n)=>{(e=>void 0===e)(e)||'or'===n||'and'===n||(t[n]=e)})),E(e.and,t)),t);e.Provider=x,e.connect=e=>(j('connect','useUnit'),t=>{let n=e;return'function'!=typeof e&&(n=t,t=e),o(`Connect(${n.displayName||n.name||'Unknown'})`,(e=>m.default.createElement(n,{...e,...f(t)})))}),e.createComponent=d,e.createGate=(...e)=>(({domain:e,defaultState:t,hook:n,mainConfig:r,maybeConfig:u})=>{function s(e){return n(s,e,i()),null}let a=E({or:u,and:r}),l=`${e?`${e.compositeName.fullName}/`:''}${a.name||'gate'}`,c=effector.createEvent({name:`${l}.set`,sid:a.sid?`${a.sid}|set`:void 0}),f=effector.createEvent({name:`${l}.open`,sid:a.sid?`${a.sid}|open`:void 0}),d=effector.createEvent({name:`${l}.close`,sid:a.sid?`${a.sid}|close`:void 0}),p=effector.createStore(Boolean(0),{name:`${l}.status`,serialize:'ignore'}).on(f,(()=>Boolean(1))).on(d,(()=>Boolean(0))),y=effector.createStore(t,{name:`${l}.state`,sid:a.sid}).on(c,((e,t)=>t)).on(f,((e,t)=>t)).reset(d);if(e){let{hooks:t}=e;effector.launch({target:[t.store,t.store,t.event,t.event,t.event],params:[p,y,f,d,c]})}return s.open=f,s.close=d,s.status=p,s.state=y,s.set=c,o(`Gate:${l}`,s)})(y(c,e)),e.createStoreConsumer=e=>(j('createStoreConsumer','useUnit'),d(e,(({children:e},t)=>e(t)))),e.useEvent=(e,t)=>((e,t)=>{if(b(1,'useEvent','useUnit'),!t)return e;let n=effector.is.unit(e)||'object'!=typeof e?{event:e}:e;return m.default.useMemo((()=>{if(effector.is.unit(e))return effector.scopeBind(e,{scope:t});let n=Array.isArray(e)?[]:{};for(let r in e)n[r]=effector.scopeBind(e[r],{scope:t});return n}),[t,...Object.keys(n),...Object.values(n)])})(e,i(null==t?void 0:t.forceScope)),e.useGate=(e,t={},n)=>c(e,t,i(null==n?void 0:n.forceScope)),e.useList=(e,t,n)=>((e,t,n)=>{let r,u,a,c=[];'object'==typeof t&&null!==t?(t.keys&&(c=t.keys),({fn:r,getKey:u,placeholder:a}=t)):r=t,effector.is.store(e)||h('expect useList first argument to be a store'),'function'!=typeof r&&h("expect useList's renderItem to be a function"),Array.isArray(c)||h("expect useList's keys to be an array");let i=m.default.useMemo((()=>{let t=o(`${e.shortName||'Unknown'}.Item`,(t=>{let{index:r,keys:u,keyVal:o,value:s}=t;if(f.current[1])return f.current[0](s,o);let a=l([{store:e,keys:[r,...u],fn:(e,t)=>e[t[0]]}],n);return f.current[0](a,r)}));return m.default.memo(t)}),[e,n,!!u]),f=m.default.useRef([r,u]);f.current=[r,u];let d=m.default.useMemo((()=>c),c);if(u){let t=s(e,n);return 0===t.length&&a?a:t.map((e=>{let t=f.current[1](e);return m.default.createElement(i,{keyVal:t,key:t,keys:d,value:e})}))}{let t=l([{store:e,keys:[e],fn:e=>e.length}],n);return 0===t&&a?a:Array.from({length:t},((e,t)=>m.default.createElement(i,{index:t,key:t,keys:d})))}})(e,t,i(null==n?void 0:n.forceScope)),e.useStore=f,e.useStoreMap=(e,t)=>l([e,t],i(null==e?void 0:e.forceScope)),e.useUnit=(e,t)=>a(e,i(null==t?void 0:t.forceScope)),Object.defineProperty(e,'__esModule',{value:1})})); | ||
//# sourceMappingURL=effector-react.umd.js.map |
import React from 'react' | ||
import {Store, Event, Effect, Domain, Scope} from 'effector' | ||
import {Store, Event, Effect, Domain, Scope, EventCallable} from 'effector' | ||
@@ -21,2 +21,5 @@ export const Provider: React.Provider<Scope> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useStore<State>( | ||
@@ -89,2 +92,5 @@ store: Store<State>, | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createComponent<Props, State>( | ||
@@ -94,2 +100,5 @@ store: Store<State>, | ||
): StoreView<State, Props> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createComponent<Props, Shape extends object>( | ||
@@ -107,10 +116,4 @@ store: Shape, | ||
/** | ||
* @deprecated use useStore hook instead | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createContextComponent<Props, State, Context>( | ||
store: Store<State>, | ||
context: React.Context<Context>, | ||
view: (props: Props, state: State, context: Context) => React.ReactNode, | ||
): React.ComponentType<Props> | ||
export function connect< | ||
@@ -120,2 +123,5 @@ State extends object, | ||
>(store: Store<State>): (Component: Com) => React.ComponentType<State> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function connect< | ||
@@ -126,2 +132,5 @@ State extends object, | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createStoreConsumer<State>( | ||
@@ -132,17 +141,18 @@ store: Store<State>, | ||
/** | ||
* @deprecated use useStore hook instead | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function createReactState< | ||
State extends object, | ||
Com extends React.ComponentType<any>, | ||
>(store: Store<State>, Component: Com): React.ComponentType<State> | ||
export function useEvent( | ||
event: Event<void>, | ||
event: EventCallable<void>, | ||
opts?: {forceScope?: boolean}, | ||
): () => void | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<T>( | ||
event: Event<T>, | ||
event: EventCallable<T>, | ||
opts?: {forceScope?: boolean}, | ||
): (payload: T) => T | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<R>( | ||
@@ -152,2 +162,5 @@ fx: Effect<void, R, any>, | ||
): () => Promise<R> | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent<T, R>( | ||
@@ -157,7 +170,7 @@ fx: Effect<T, R, any>, | ||
): (payload: T) => Promise<R> | ||
export function useEvent<List extends (Event<any> | Effect<any, any>)[]>( | ||
export function useEvent<List extends (EventCallable<any> | Effect<any, any>)[]>( | ||
list: [...List], | ||
opts?: {forceScope?: boolean}, | ||
): { | ||
[Key in keyof List]: List[Key] extends Event<infer T> | ||
[Key in keyof List]: List[Key] extends EventCallable<infer T> | ||
? (payload: T) => T | ||
@@ -168,4 +181,7 @@ : List[Key] extends Effect<infer P, infer D, any> | ||
} | ||
/** | ||
* @deprecated use useUnit hook instead | ||
*/ | ||
export function useEvent< | ||
Shape extends Record<string, Event<any> | Effect<any, any, any>>, | ||
Shape extends Record<string, EventCallable<any> | Effect<any, any, any>>, | ||
>( | ||
@@ -175,3 +191,3 @@ shape: Shape, | ||
): { | ||
[Key in keyof Shape]: Shape[Key] extends Event<infer T> | ||
[Key in keyof Shape]: Shape[Key] extends EventCallable<infer T> | ||
? (payload: T) => T | ||
@@ -194,7 +210,7 @@ : Shape[Key] extends Effect<infer P, infer D, any> | ||
export function useUnit( | ||
event: Event<void>, | ||
event: EventCallable<void>, | ||
opts?: {forceScope?: boolean}, | ||
): () => void | ||
export function useUnit<T>( | ||
event: Event<T>, | ||
event: EventCallable<T>, | ||
opts?: {forceScope?: boolean}, | ||
@@ -211,3 +227,3 @@ ): (payload: T) => T | ||
export function useUnit< | ||
List extends (Event<any> | Effect<any, any> | Store<any>)[], | ||
List extends (EventCallable<any> | Effect<any, any> | Store<any>)[], | ||
>( | ||
@@ -217,3 +233,3 @@ list: [...List], | ||
): { | ||
[Key in keyof List]: List[Key] extends Event<infer T> | ||
[Key in keyof List]: List[Key] extends EventCallable<infer T> | ||
? Equal<T, void> extends true | ||
@@ -231,3 +247,3 @@ ? () => void | ||
export function useUnit< | ||
Shape extends Record<string, Event<any> | Effect<any, any, any> | Store<any>>, | ||
Shape extends Record<string, EventCallable<any> | Effect<any, any, any> | Store<any>>, | ||
>( | ||
@@ -237,3 +253,3 @@ shape: Shape | {'@@unitShape': () => Shape}, | ||
): { | ||
[Key in keyof Shape]: Shape[Key] extends Event<infer T> | ||
[Key in keyof Shape]: Shape[Key] extends EventCallable<infer T> | ||
? Equal<T, void> extends true | ||
@@ -240,0 +256,0 @@ ? () => void |
{ | ||
"name": "effector-react", | ||
"version": "22.5.4", | ||
"version": "23.0.0-rc.1", | ||
"description": "React bindings for effector", | ||
@@ -31,8 +31,2 @@ "main": "effector-react.cjs.js", | ||
}, | ||
"./ssr": { | ||
"types": "./ssr.d.ts", | ||
"import": "./ssr.mjs", | ||
"require": "./ssr.js", | ||
"default": "./ssr.mjs" | ||
}, | ||
"./compat": { | ||
@@ -63,3 +57,2 @@ "types": "./compat.d.ts", | ||
"index.d.ts", | ||
"index.js.flow", | ||
"effector-react.mjs", | ||
@@ -73,5 +66,2 @@ "effector-react.mjs.map", | ||
"compat.js.map", | ||
"effector-react.cjs.js.flow", | ||
"effector-react.umd.js.flow", | ||
"compat.js.flow", | ||
"effector-react.cjs.d.ts", | ||
@@ -85,8 +75,3 @@ "effector-react.mjs.d.ts", | ||
"scope.mjs.map", | ||
"ssr.js", | ||
"ssr.js.map", | ||
"ssr.mjs", | ||
"ssr.mjs.map", | ||
"scope.d.ts", | ||
"ssr.d.ts" | ||
"scope.d.ts" | ||
], | ||
@@ -93,0 +78,0 @@ "keywords": [ |
@@ -1,2 +0,2 @@ | ||
function e(e){return e&&'object'==typeof e&&'default'in e?e.default:e}function t(e,t,r,n){let o=[effector.step.mov({store:e.stateRef,to:'stack'}),effector.step.run({fn:e=>t(e)})];if(n&&o.unshift(n),r){let t=effector.createNode({node:o,meta:{watchOp:"store"}}),n=e.graphite.id,s=r.additionalLinks,u=s[n]||[];return s[n]=u,u.push(t),()=>{let e=u.indexOf(t);-1!==e&&u.splice(e,1),effector.clearNode(t)}}{let t=effector.createNode({node:o,parent:[e],family:{owners:e}});return()=>{effector.clearNode(t)}}}function r(e,t){return t.displayName=e,t}function n(e,r){effector.is.store(e)||m('expect useStore argument to be a store');let n=y.useCallback((n=>t(e,n,r)),[e,r]),o=y.useCallback((()=>h(e,r)),[e,r]);return p.useSyncExternalStore(n,o,o)}function o(e,r){let n=effector.is.unit(e),o={};n?o={unit:e}:'@@unitShape'in e?'function'==typeof e['@@unitShape']?o=e['@@unitShape']():m('expect @@unitShape to be a function'):o=e;let s=Array.isArray(o),u=y.useRef({stale:1,justSubscribed:0,scope:r}),[a,l,i,c,f]=y.useMemo((()=>{u.current.stale=1;let e=Array.isArray(o)?[]:{},t=[],n=[],s=[],a=[];for(let u in o){let l=o[u];effector.is.unit(l)||m('expect useUnit argument to be a unit'),effector.is.event(l)||effector.is.effect(l)?(e[u]=r?effector.scopeBind(l,{scope:r}):l,s.push(u),a.push(l)):(e[u]=null,t.push(u),n.push(l))}return[e,t,n,s,a]}),[u,r,...Object.keys(o),...Object.values(o)]),d=y.useRef({value:a,storeKeys:l,eventKeys:c,eventValues:f}),v=y.useCallback((e=>{let n=u.current;n.justSubscribed=1;let o=()=>{n.stale||(n.stale=1,e())},s=effector.step.compute({priority:'sampler',batch:1}),a=i.map((e=>t(e,o,r,s)));return()=>{a.forEach((e=>e()))}}),[i,r,d,u]),b=y.useCallback((()=>{let e,t=d.current,o=u.current,p=0,y=t.value,m=t.storeKeys,v=t.eventKeys,b=t.eventValues,x=r!==o.scope;if(o.stale||o.justSubscribed||x){p=!o.justSubscribed||x,e=s?[...a]:{...a},m.length===l.length&&v.length===c.length||(p=1);for(let t=0;t<l.length;t++){let n=h(i[t],r),o=l[t];p||(p=m.includes(o)?y[o]!==n:1),e[o]=n}for(let e=0;e<c.length;e++){let t=f[e],r=c[e];p||(p=v.includes(r)?b[v.indexOf(r)]!==t:1)}}return p&&(t.value=e),t.storeKeys=l,t.eventKeys=c,t.eventValues=f,o.stale=0,o.justSubscribed=!p,o.scope=r,n?t.value.unit:t.value}),[v,i,f,r,d,u]);return p.useSyncExternalStore(v,b,b)}function s([e,r],n){let o,s,u,a,l=b;r?(o=r,u=e,a=[]):({fn:o,store:u,keys:a,defaultValue:s,updateFilter:l=b}=e),effector.is.store(u)||m('useStoreMap expects a store'),Array.isArray(a)||m('useStoreMap expects an array as keys'),'function'!=typeof o&&m('useStoreMap expects a function');let i=y.useCallback((e=>t(u,e,n)),[u,n]),c=y.useCallback((()=>h(u,n)),[u,n]),f=y.useRef(),p=y.useRef(),v=y.useRef(a);return d.useSyncExternalStoreWithSelector(i,c,c,(e=>{if(f.current!==e||!((e,t)=>{if(!e||!t||e.length!==t.length)return 0;let r=1;for(let n=0;n<e.length;n++)if(e[n]!==t[n]){r=0;break}return r})(v.current,a)){let t=o(e,a);void 0===t&&void 0!==s&&(t=s),f.current=e,v.current=a,void 0!==t&&(p.current=t)}return p.current}),((e,t)=>!l(t,e)))}function u(e,t={},r){let{open:n,close:s,set:u}=o({open:e.open,close:e.close,set:e.set},r),a=y.useMemo((()=>({open:n,close:s,set:u})),[e,n]),l=y.useRef({value:null,count:0});v((()=>(a.open(l.current.value),()=>a.close(l.current.value))),[a]),((e,t)=>{if(e===t)return 1;if('object'==typeof e&&null!==e&&'object'==typeof t&&null!==t){let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return 0;for(let n=0;n<r.length;n++){let o=r[n];if(e[o]!==t[o])return 0}return 1}return 0})(l.current.value,t)||(l.current.value=t,l.current.count+=1),v((()=>{a.set(l.current.value)}),[l.current.count])}function a(e){let t=y.useContext(x);return e&&!t&&m('No scope found, consider adding <Provider> to app root'),t}function l(e,t){let r=t?e:e[0];var n;(e=>{if(!e)throw Error('expect first argument be an object')})(S(n=r)||(e=>'function'==typeof e)(n));let o=r.or,s=r.and;if(s){let r=t?s:s[0];if(S(r)&&'and'in r){let r=l(s,t);e=r[0],o={...o,...r[1]}}else e=s}return[e,o]}function i(e,t){let r=t&&S(n=t[0])&&(n.and||n.or)?t:[{and:t}];var n;let o,[[s,u],a]=l(r),i={},c={},f=a;var p;return'string'==typeof s?(c={name:s},S(p=u)&&'sid'in p||(i=u||{})):(e=>S(e)&&('domain'in e||'defaultState'in e||'name'in e))(s)&&(c=s,i=s.defaultState||{},o=s.domain),{hook:e,domain:o,defaultState:i,mainConfig:c,maybeConfig:f}}function c(e){return n(e,a(1))}Object.defineProperty(exports,'__esModule',{value:1});var f=require('react'),effector=require('effector'),p=require('use-sync-external-store/shim/index.js'),d=require('use-sync-external-store/shim/with-selector.js'),y=e(f);let m=e=>{throw Error(e)},v='undefined'!=typeof window?y.useLayoutEffect:y.useEffect;const h=(e,t)=>t?t.getState(e):e.getState(),b=(e,t)=>e!==t,x=y.createContext(null);let{Provider:k}=x,S=e=>'object'==typeof e&&null!==e,g=(e,t={})=>(S(e)&&(g(e.or,t),(e=>{for(let o in e)n=o,(e=>void 0===e)(r=e[o])||'or'===n||'and'===n||(t[n]=r);var r,n})(e),g(e.and,t)),t),j=e=>console.error(`${e} is deprecated`),C=e=>t=>{let n=e;return'function'!=typeof e&&(n=t,t=e),r(`Connect(${n.displayName||n.name||'Unknown'})`,(e=>y.createElement(n,{...e,...c(t)})))};exports.Provider=k,exports.connect=C,exports.createComponent=()=>m('not implemented'),exports.createContextComponent=(e,t,r)=>(j('createContextComponent'),n=>{let o=y.useContext(t),s=c(e);return r(n,s,o)}),exports.createGate=(...e)=>(({domain:e,defaultState:t,hook:n,mainConfig:o,maybeConfig:s})=>{function u(e){return n(u,e,a()),null}let l=g({or:s,and:o}),i=`${e?`${e.compositeName.fullName}/`:''}${l.name||'gate'}`,c=effector.createEvent({name:`${i}.set`,sid:l.sid?`${l.sid}|set`:void 0}),f=effector.createEvent({name:`${i}.open`,sid:l.sid?`${l.sid}|open`:void 0}),p=effector.createEvent({name:`${i}.close`,sid:l.sid?`${l.sid}|close`:void 0}),d=effector.createStore(Boolean(0),{name:`${i}.status`,serialize:'ignore'}).on(f,(()=>Boolean(1))).on(p,(()=>Boolean(0))),y=effector.createStore(t,{name:`${i}.state`,sid:l.sid}).on(c,((e,t)=>t)).on(f,((e,t)=>t)).reset(p);if(e){let{hooks:t}=e;effector.launch({target:[t.store,t.store,t.event,t.event,t.event],params:[d,y,f,p,c]})}return u.open=f,u.close=p,u.status=d,u.state=y,u.set=c,r(`Gate:${i}`,u)})(i(u,e)),exports.createReactState=(e,t)=>(j('createReactState'),C(t)(e)),exports.createStoreConsumer=e=>t=>{let r=c(e);return t.children(r)},exports.useEvent=e=>((e,t)=>{if(!t)return e;let r=effector.is.unit(e)||'object'!=typeof e?{event:e}:e;return y.useMemo((()=>{if(effector.is.unit(e))return effector.scopeBind(e,{scope:t});let r=Array.isArray(e)?[]:{};for(let n in e)r[n]=effector.scopeBind(e[n],{scope:t});return r}),[t,...Object.keys(r),...Object.values(r)])})(e,a(1)),exports.useGate=(e,t={})=>u(e,t,a(1)),exports.useList=(e,t)=>((e,t,o)=>{let u,a,l,i=[];'object'==typeof t&&null!==t?(t.keys&&(i=t.keys),({fn:u,getKey:a,placeholder:l}=t)):u=t,effector.is.store(e)||m('expect useList first argument to be a store'),'function'!=typeof u&&m("expect useList's renderItem to be a function"),Array.isArray(i)||m("expect useList's keys to be an array");let c=y.useMemo((()=>{let t=r(`${e.shortName||'Unknown'}.Item`,(t=>{let{index:r,keys:n,keyVal:u,value:a}=t;if(f.current[1])return f.current[0](a,u);let l=s([{store:e,keys:[r,...n],fn:(e,t)=>e[t[0]]}],o);return f.current[0](l,r)}));return y.memo(t)}),[e,o,!!a]),f=y.useRef([u,a]);f.current=[u,a];let p=y.useMemo((()=>i),i);if(a){let t=n(e,o);return 0===t.length&&l?l:t.map((e=>{let t=f.current[1](e);return y.createElement(c,{keyVal:t,key:t,keys:p,value:e})}))}{let t=s([{store:e,keys:[e],fn:e=>e.length}],o);return 0===t&&l?l:Array.from({length:t},((e,t)=>y.createElement(c,{index:t,key:t,keys:p})))}})(e,t,a(1)),exports.useStore=c,exports.useStoreMap=(e,t)=>{let r=a(1);return s(t?[e,t]:[{store:e.store,keys:e.keys,fn:e.fn,updateFilter:e.updateFilter}],r)},exports.useUnit=e=>o(e,a(1)); | ||
function e(e){return e&&'object'==typeof e&&'default'in e?e.default:e}function t(e,t){return t.displayName=e,t}function r(e,t){v(1,'useStore','useUnit'),effector.is.store(e)||y('expect useStore argument to be a store');let r=d.useCallback((r=>effector.createWatch({unit:e,fn:r,scope:t})),[e,t]),n=d.useCallback((()=>b(e,t)),[e,t]);return f.useSyncExternalStore(r,n,n)}function n(e,t){let r=effector.is.unit(e),n={};r?n={unit:e}:'@@unitShape'in e?'function'==typeof e['@@unitShape']?n=e['@@unitShape']():y('expect @@unitShape to be a function'):n=e;let s=Array.isArray(n),o=d.useRef({stale:1,justSubscribed:0,scope:t}),[u,a,l,i,c]=d.useMemo((()=>{o.current.stale=1;let e=Array.isArray(n)?[]:{},r=[],s=[],u=[],a=[];for(let o in n){let l=n[o];effector.is.unit(l)||y('expect useUnit argument to be a unit'),effector.is.event(l)||effector.is.effect(l)?(e[o]=t?effector.scopeBind(l,{scope:t}):l,u.push(o),a.push(l)):(e[o]=null,r.push(o),s.push(l))}return[e,r,s,u,a]}),[o,t,...Object.keys(n),...Object.values(n)]),p=d.useRef({value:u,storeKeys:a,eventKeys:i,eventValues:c}),m=d.useCallback((e=>{let r=o.current;return r.justSubscribed=1,effector.createWatch({unit:l,fn:()=>{r.stale||(r.stale=1,e())},scope:t,batch:1})}),[l,t,p,o]),v=d.useCallback((()=>{let e,n=p.current,f=o.current,d=0,y=n.value,m=n.storeKeys,v=n.eventKeys,h=n.eventValues,x=t!==f.scope;if(f.stale||f.justSubscribed||x){d=!f.justSubscribed||x,e=s?[...u]:{...u},m.length===a.length&&v.length===i.length||(d=1);for(let r=0;r<a.length;r++){let n=b(l[r],t),s=a[r];d||(d=m.includes(s)?y[s]!==n:1),e[s]=n}for(let e=0;e<i.length;e++){let t=c[e],r=i[e];d||(d=v.includes(r)?h[v.indexOf(r)]!==t:1)}}return d&&(n.value=e),n.storeKeys=a,n.eventKeys=i,n.eventValues=c,f.stale=0,f.justSubscribed=!d,f.scope=t,r?n.value.unit:n.value}),[m,l,c,t,p,o]);return f.useSyncExternalStore(m,v,v)}function s([e,t],r){let n,s,o,u,a=h;t?(n=t,o=e,u=[]):({fn:n,store:o,keys:u,defaultValue:s,updateFilter:a=h}=e),effector.is.store(o)||y('useStoreMap expects a store'),Array.isArray(u)||y('useStoreMap expects an array as keys'),'function'!=typeof n&&y('useStoreMap expects a function');let l=d.useCallback((e=>effector.createWatch({unit:o,fn:e,scope:r})),[o,r]),i=d.useCallback((()=>b(o,r)),[o,r]),c=d.useRef(),f=d.useRef(),m=d.useRef(u);return p.useSyncExternalStoreWithSelector(l,i,i,(e=>{if(c.current!==e||!((e,t)=>{if(!e||!t||e.length!==t.length)return 0;let r=1;for(let n=0;n<e.length;n++)if(e[n]!==t[n]){r=0;break}return r})(m.current,u)){let t=n(e,u);void 0===t&&void 0!==s&&(t=s),c.current=e,m.current=u,void 0!==t&&(f.current=t)}return f.current}),((e,t)=>!a(t,e)))}function o(e,t={},r){let{open:s,close:o,set:u}=n({open:e.open,close:e.close,set:e.set},r),a=d.useMemo((()=>({open:s,close:o,set:u})),[e,s]),l=d.useRef({value:null,count:0});m((()=>(a.open(l.current.value),()=>a.close(l.current.value))),[a]),((e,t)=>{if(e===t)return 1;if('object'==typeof e&&null!==e&&'object'==typeof t&&null!==t){let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return 0;for(let n=0;n<r.length;n++){let s=r[n];if(e[s]!==t[s])return 0}return 1}return 0})(l.current.value,t)||(l.current.value=t,l.current.count+=1),m((()=>{a.set(l.current.value)}),[l.current.count])}function u(e){let t=d.useContext(x);return e&&!t&&y('No scope found, consider adding <Provider> to app root'),t}function a(e){let t=e[0];var r;(e=>{if(!e)throw Error('expect first argument be an object')})(k(r=t)||(e=>'function'==typeof e)(r));let n=t.or,s=t.and;if(s){let t=s[0];if(k(t)&&'and'in t){let t=a(s);e=t[0],n={...n,...t[1]}}else e=s}return[e,n]}function l(e,t){let r=t&&k(n=t[0])&&(n.and||n.or)?t:[{and:t}];var n;let s,[[o,u],l]=a(r),i={},c={},f=l;var p;return'string'==typeof o?(c={name:o},k(p=u)&&'sid'in p||(i=u||{})):(e=>k(e)&&('domain'in e||'defaultState'in e||'name'in e))(o)&&(c=o,i=o.defaultState||{},s=o.domain),{hook:e,domain:s,defaultState:i,mainConfig:c,maybeConfig:f}}function i(e){return r(e,u(1))}Object.defineProperty(exports,'__esModule',{value:1});var c=require('react'),effector=require('effector'),f=require('use-sync-external-store/shim/index.js'),p=require('use-sync-external-store/shim/with-selector.js'),d=e(c);let y=e=>{throw Error(e)},m='undefined'!=typeof window?d.useLayoutEffect:d.useEffect,v=(e,t,r)=>{c.useEffect((()=>{e&&console.error(`${t} is deprecated${r?`, prefer ${r} instead`:''}`)}),[e,t,r])};const b=(e,t)=>t?t.getState(e):e.getState(),h=(e,t)=>e!==t,x=d.createContext(null);let{Provider:S}=x,k=e=>'object'==typeof e&&null!==e,g=(e,t={})=>(k(e)&&(g(e.or,t),(e=>{for(let s in e)n=s,(e=>void 0===e)(r=e[s])||'or'===n||'and'===n||(t[n]=r);var r,n})(e),g(e.and,t)),t),j=(e,t)=>{console.error(`${e} is deprecated${t?`, use ${t} instead`:''}`)};console.error('`effector-react/scope` is deprecated. Use `effector-react` directly instead'),exports.Provider=S,exports.connect=e=>(j('connect','useUnit'),r=>{let n=e;return'function'!=typeof e&&(n=r,r=e),t(`Connect(${n.displayName||n.name||'Unknown'})`,(e=>d.createElement(n,{...e,...i(r)})))}),exports.createComponent=()=>y('not implemented'),exports.createGate=(...e)=>(({domain:e,defaultState:r,hook:n,mainConfig:s,maybeConfig:o})=>{function a(e){return n(a,e,u()),null}let l=g({or:o,and:s}),i=`${e?`${e.compositeName.fullName}/`:''}${l.name||'gate'}`,c=effector.createEvent({name:`${i}.set`,sid:l.sid?`${l.sid}|set`:void 0}),f=effector.createEvent({name:`${i}.open`,sid:l.sid?`${l.sid}|open`:void 0}),p=effector.createEvent({name:`${i}.close`,sid:l.sid?`${l.sid}|close`:void 0}),d=effector.createStore(Boolean(0),{name:`${i}.status`,serialize:'ignore'}).on(f,(()=>Boolean(1))).on(p,(()=>Boolean(0))),y=effector.createStore(r,{name:`${i}.state`,sid:l.sid}).on(c,((e,t)=>t)).on(f,((e,t)=>t)).reset(p);if(e){let{hooks:t}=e;effector.launch({target:[t.store,t.store,t.event,t.event,t.event],params:[d,y,f,p,c]})}return a.open=f,a.close=p,a.status=d,a.state=y,a.set=c,t(`Gate:${i}`,a)})(l(o,e)),exports.createStoreConsumer=e=>(j('createStoreConsumer','useUnit'),t=>{let r=i(e);return t.children(r)}),exports.useEvent=e=>((e,t)=>{if(v(1,'useEvent','useUnit'),!t)return e;let r=effector.is.unit(e)||'object'!=typeof e?{event:e}:e;return d.useMemo((()=>{if(effector.is.unit(e))return effector.scopeBind(e,{scope:t});let r=Array.isArray(e)?[]:{};for(let n in e)r[n]=effector.scopeBind(e[n],{scope:t});return r}),[t,...Object.keys(r),...Object.values(r)])})(e,u(1)),exports.useGate=(e,t={})=>o(e,t,u(1)),exports.useList=(e,n)=>((e,n,o)=>{let u,a,l,i=[];'object'==typeof n&&null!==n?(n.keys&&(i=n.keys),({fn:u,getKey:a,placeholder:l}=n)):u=n,effector.is.store(e)||y('expect useList first argument to be a store'),'function'!=typeof u&&y("expect useList's renderItem to be a function"),Array.isArray(i)||y("expect useList's keys to be an array");let c=d.useMemo((()=>{let r=t(`${e.shortName||'Unknown'}.Item`,(t=>{let{index:r,keys:n,keyVal:u,value:a}=t;if(f.current[1])return f.current[0](a,u);let l=s([{store:e,keys:[r,...n],fn:(e,t)=>e[t[0]]}],o);return f.current[0](l,r)}));return d.memo(r)}),[e,o,!!a]),f=d.useRef([u,a]);f.current=[u,a];let p=d.useMemo((()=>i),i);if(a){let t=r(e,o);return 0===t.length&&l?l:t.map((e=>{let t=f.current[1](e);return d.createElement(c,{keyVal:t,key:t,keys:p,value:e})}))}{let t=s([{store:e,keys:[e],fn:e=>e.length}],o);return 0===t&&l?l:Array.from({length:t},((e,t)=>d.createElement(c,{index:t,key:t,keys:p})))}})(e,n,u(1)),exports.useStore=i,exports.useStoreMap=(e,t)=>{let r=u(1);return s(t?[e,t]:[{store:e.store,keys:e.keys,fn:e.fn,updateFilter:e.updateFilter}],r)},exports.useUnit=e=>n(e,u(1)); | ||
//# sourceMappingURL=scope.js.map |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
1391
321523
21