effector-react
Advanced tools
Comparing version 20.9.0 to 21.0.0
@@ -9,11 +9,6 @@ import * as React from 'react' | ||
export type Gate<Props = {}> = React.ComponentType<Props> & { | ||
isOpen: boolean | ||
isTerminated: boolean | ||
open: Event<Props> | ||
close: Event<Props> | ||
status: Store<boolean> | ||
destructor: Event<void> | ||
current: Props | ||
state: Store<Props> | ||
childGate<Next>(childName?: string): Gate<Next> | ||
} | ||
@@ -59,6 +54,2 @@ export type StoreView<State, Props = {}> = React.ComponentType<Props> & { | ||
export function createComponent<Props, State>( | ||
storeFactory: (initialProps: Props) => Store<State>, | ||
view: (props: Props, state: State) => React.ReactNode, | ||
): StoreView<State, Props> | ||
export function createComponent<Props, State>( | ||
store: Store<State>, | ||
@@ -65,0 +56,0 @@ view: (props: Props, state: State) => React.ReactNode, |
@@ -1,2 +0,2 @@ | ||
'use strict';function e(e){c.is.store(e)||i('expect useStore argument to be a store');var t=a.useRef(e),n=a.useState(e.getState())[1];return s((function(){return t.current===e&&n(e.getState()),t.current=e,e.updates.watch(n)}),[e]),e.getState()}function t(t){var n=t.store,r=t.keys,o=t.fn;c.is.store(n)||i('useStoreMap expects a store'),Array.isArray(r)||i('useStoreMap expects an array as keys'),'function'!=typeof o&&i('useStoreMap expects a function');var u=a.useMemo((function(){return c.createStore(o(n.getState(),r)).on(n,(function(e,t){return o(t,r)}))}),r),f=e(u);return s((function(){return function(){u.off(n),c.clearNode(u,{deep:1})}}),r),f}function n(e,t){return t.displayName=e,t}function r(t,r){function o(t){var n=a.useRef(t),o=a.useMemo((function(){return m(t)}),[]),u=e(o);s((function(){return l({props:n.current,state:o.getState()}),function(){d({props:n.current,state:o.getState()})}}),[]);var c=r(t,u);return n.current=t,c}var u,f;c.is.store(t)?f=t:'function'==typeof t?(u=t,console.error('storeFactory is deprecated')):'object'==typeof t&&null!==t?f=c.combine(t):i('shape should be a store or object with stores');var p='Unknown';f&&f.shortName&&(p=f.shortName);var l=c.createEvent(p+".View mounted"),d=c.createEvent(p+".View unmounted"),m='function'==typeof t?u:function(){return f};return o.mounted=l,o.unmounted=d,n(p+".View",o)}function o(t,r){return n("Connect("+(r.displayName||r.name||'Unknown')+")",(function(n){return a.createElement(r,Object.assign({},n,e(t)))}))}function u(e,t){void 0===t&&(t={});var n=a.useRef(null);s((function(){return e.open(n.current),function(){return e.close(n.current)}}),[e]),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}(n.current,t)||(n.current=t,e.set(t))}Object.defineProperty(exports,'__esModule',{value:1});var a=require('react'),c=require('effector/compat'),s='undefined'!=typeof window?a.useLayoutEffect:a.useEffect,i=function(e){throw Error(e)};exports.connect=function(e){return function(t){return o(t,e)}},exports.createComponent=r,exports.createContextComponent=function(t,r,o){return n((t.shortName||'Unknown')+".ContextComponent",(function(n){var u=a.useContext(r),c=e(t);return o(n,c,u)}))},exports.createGate=function e(t,r){function o(e){return u(o,e),null}var a;void 0===t&&(t='gate'),void 0===r&&(r={}),'object'==typeof t&&null!==t&&('defaultState'in t&&(r=t.defaultState),t.domain&&(a=t.domain),t=t.name||'gate');var s=c.createStore(Boolean(0),{named:'status'}),i=c.createStore(r,{named:'state'}),f=c.createApi(i,{set:function(e,t){return t}}).set,p=c.createApi(s,{open:function(){return o.predicate()&&Boolean(1)},close:function(){return Boolean(0)},destructor:function(){return Boolean(0)}}),l=p.open,d=p.close,m=p.destructor;o.predicate=function(){return Boolean(1)},o.isOpen=Boolean(0),o.current=i.getState(),o.open=l,o.close=d,o.status=s,o.state=i,o.set=f,o.destructor=m,o.isTerminated=Boolean(0),o.childGate=function(n){void 0===n&&(n='Subgate'),console.error('childGate is deprecated');var r=e(t+"/"+n);r.predicate=function(){return o.status.getState()};var u=0,a=0;return r.open.watch((function(){a||(u=1)})),r.close.watch((function(){a||(u=0)})),o.status.watch((function(e){a=1,u&&e&&!r.status.getState()&&r.open(),a=0})),o.close.watch((function(){a=1,r.close(),a=0})),o.destructor.watch((function(){return r.destructor()})),r};var v=s.watch((function(e){return o.isOpen=e})),y=i.watch((function(e){return o.current=e}));s.map((function(e){return e||(o.current=r),null})),i.reset(d);var h=m.watch((function(){o.isTerminated=Boolean(1)})),x=m.watch((function(){x(),v(),y(),h(),o.status.off(o.open),o.status.off(o.close),o.status.off(o.destructor),o.state.off(o.set)}));if(a){var S=a.hooks;c.launch({target:[S.store,S.store,S.event,S.event,S.event],params:[s,i,l,d,f]})}return n("Gate:"+t,o)},exports.createReactState=o,exports.createStoreConsumer=function(e){return r(e,(function(e,t){return(0,e.children)(t)}))},exports.useEvent=function(e){return e},exports.useGate=u,exports.useList=function(e,r){var o,u=[];'object'==typeof r&&null!==r?(r.keys&&(u=r.keys),o=r.fn):o=r,c.is.store(e)||i('expect useList first argument to be a store'),'function'!=typeof o&&i("expect useList's renderItem to be a function"),Array.isArray(u)||i("expect useList's keys to be an array");var s=a.useMemo((function(){var r=n((e.shortName||'Unknown')+".Item",(function(n){var r=n.index,o=t({store:e,keys:[r].concat(n.keys),fn:function(e,t){return e[t[0]]}});return p.current(o,r)}));return a.memo(r)}),[e]),f=t({store:e,keys:[e],fn:function(e){return e.length}}),p=a.useRef(o);p.current=o;var l=a.useMemo((function(){return u}),u);return Array.from({length:f},(function(e,t){return a.createElement(s,{index:t,key:t,keys:l})}))},exports.useStore=e,exports.useStoreMap=t; | ||
'use strict';function e(e){s.is.store(e)||i('expect useStore argument to be a store');var t=a.useRef(e),n=a.useState(e.getState())[1];return c((function(){return t.current===e&&n(e.getState()),t.current=e,e.updates.watch(n)}),[e]),e.getState()}function t(t){var n=t.store,r=t.keys,o=t.fn;s.is.store(n)||i('useStoreMap expects a store'),Array.isArray(r)||i('useStoreMap expects an array as keys'),'function'!=typeof o&&i('useStoreMap expects a function');var u=a.useMemo((function(){return s.createStore(o(n.getState(),r)).on(n,(function(e,t){return o(t,r)}))}),r),f=e(u);return c((function(){return function(){u.off(n),s.clearNode(u,{deep:1})}}),r),f}function n(e,t){return t.displayName=e,t}function r(t,r){function o(t){var n=a.useRef(t),o=e(u);c((function(){return p({props:n.current,state:u.getState()}),function(){l({props:n.current,state:u.getState()})}}),[]);var s=r(t,o);return n.current=t,s}var u;s.is.store(t)?u=t:'object'==typeof t&&null!==t?u=s.combine(t):i('shape should be a store or object with stores');var f='Unknown';u&&u.shortName&&(f=u.shortName);var p=s.createEvent(),l=s.createEvent();return o.mounted=p,o.unmounted=l,n(f+".View",o)}function o(t,r){return n("Connect("+(r.displayName||r.name||'Unknown')+")",(function(n){return a.createElement(r,Object.assign({},n,e(t)))}))}function u(e,t){void 0===t&&(t={});var n=a.useRef(null);c((function(){return e.open(n.current),function(){return e.close(n.current)}}),[e]),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}(n.current,t)||(n.current=t,e.set(t))}Object.defineProperty(exports,'__esModule',{value:1});var a=require('react'),s=require('effector/compat'),c='undefined'!=typeof window?a.useLayoutEffect:a.useEffect,i=function(e){throw Error(e)};exports.connect=function(e){return function(t){return o(t,e)}},exports.createComponent=r,exports.createContextComponent=function(t,r,o){return n((t.shortName||'Unknown')+".ContextComponent",(function(n){var u=a.useContext(r),s=e(t);return o(n,s,u)}))},exports.createGate=function(e,t){function r(e){return u(r,e),null}var o;void 0===e&&(e='gate'),void 0===t&&(t={}),'object'==typeof e&&null!==e&&('defaultState'in e&&(t=e.defaultState),e.domain&&(o=e.domain),e=e.name||'gate');var a=s.createStore(Boolean(0),{named:'status'}),c=s.createStore(t,{named:'state'}),i=s.createApi(c,{set:function(e,t){return t}}).set,f=s.createApi(a,{open:function(){return Boolean(1)},close:function(){return Boolean(0)}}),p=f.open,l=f.close;if(r.open=p,r.close=l,r.status=a,r.state=c,r.set=i,c.reset(l),o){var m=o.hooks;s.launch({target:[m.store,m.store,m.event,m.event,m.event],params:[a,c,p,l,i]})}return n("Gate:"+e,r)},exports.createReactState=o,exports.createStoreConsumer=function(e){return r(e,(function(e,t){return(0,e.children)(t)}))},exports.useEvent=function(e){return e},exports.useGate=u,exports.useList=function(e,r){var o,u=[];'object'==typeof r&&null!==r?(r.keys&&(u=r.keys),o=r.fn):o=r,s.is.store(e)||i('expect useList first argument to be a store'),'function'!=typeof o&&i("expect useList's renderItem to be a function"),Array.isArray(u)||i("expect useList's keys to be an array");var c=a.useMemo((function(){var r=n((e.shortName||'Unknown')+".Item",(function(n){var r=n.index,o=t({store:e,keys:[r].concat(n.keys),fn:function(e,t){return e[t[0]]}});return p.current(o,r)}));return a.memo(r)}),[e]),f=t({store:e,keys:[e],fn:function(e){return e.length}}),p=a.useRef(o);p.current=o;var l=a.useMemo((function(){return u}),u);return Array.from({length:f},(function(e,t){return a.createElement(c,{index:t,key:t,keys:l})}))},exports.useStore=e,exports.useStoreMap=t; | ||
//# sourceMappingURL=compat.js.map |
@@ -9,11 +9,6 @@ import * as React from 'react' | ||
export type Gate<Props = {}> = React.ComponentType<Props> & { | ||
isOpen: boolean | ||
isTerminated: boolean | ||
open: Event<Props> | ||
close: Event<Props> | ||
status: Store<boolean> | ||
destructor: Event<void> | ||
current: Props | ||
state: Store<Props> | ||
childGate<Next>(childName?: string): Gate<Next> | ||
} | ||
@@ -59,6 +54,2 @@ export type StoreView<State, Props = {}> = React.ComponentType<Props> & { | ||
export function createComponent<Props, State>( | ||
storeFactory: (initialProps: Props) => Store<State>, | ||
view: (props: Props, state: State) => React.ReactNode, | ||
): StoreView<State, Props> | ||
export function createComponent<Props, State>( | ||
store: Store<State>, | ||
@@ -65,0 +56,0 @@ view: (props: Props, state: State) => React.ReactNode, |
@@ -1,2 +0,2 @@ | ||
function e(e){effector.is.store(e)||c('expect useStore argument to be a store');let t=a.useRef(e),r=a.useState(e.getState())[1];return u(()=>(t.current===e&&r(e.getState()),t.current=e,e.updates.watch(r)),[e]),e.getState()}function t({store:t,keys:r,fn:o}){effector.is.store(t)||c('useStoreMap expects a store'),Array.isArray(r)||c('useStoreMap expects an array as keys'),'function'!=typeof o&&c('useStoreMap expects a function');let n=a.useMemo(()=>effector.createStore(o(t.getState(),r)).on(t,(e,t)=>o(t,r)),r),s=e(n);return u(()=>()=>{n.off(t),effector.clearNode(n,{deep:1})},r),s}function r(e,t){return t.displayName=e,t}function o(t,o){function n(t){let r=a.useRef(t),n=a.useMemo(()=>d(t),[]),s=e(n);u(()=>(p({props:r.current,state:n.getState()}),()=>{f({props:r.current,state:n.getState()})}),[]);let c=o(t,s);return r.current=t,c}let s,l;effector.is.store(t)?l=t:'function'==typeof t?(s=t,console.error('storeFactory is deprecated')):'object'==typeof t&&null!==t?l=effector.combine(t):c('shape should be a store or object with stores');let i='Unknown';l&&l.shortName&&(i=l.shortName);let p=effector.createEvent(i+".View mounted"),f=effector.createEvent(i+".View unmounted"),d='function'==typeof t?s:()=>l;return n.mounted=p,n.unmounted=f,r(i+".View",n)}function n(t,o){return r(`Connect(${o.displayName||o.name||'Unknown'})`,r=>a.createElement(o,Object.assign({},r,e(t))))}function s(e,t={}){let r=a.useRef(null);u(()=>(e.open(r.current),()=>e.close(r.current)),[e]),((e,t)=>{if(e===t)return 1;if('object'==typeof e&&null!==e&&'object'==typeof t&&null!==t){let r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return 0;for(let o=0;o<r.length;o++){let n=r[o];if(e[n]!==t[n])return 0}return 1}return 0})(r.current,t)||(r.current=t,e.set(t))}Object.defineProperty(exports,'__esModule',{value:1});var a=require('react'),effector=require('effector');let u='undefined'!=typeof window?a.useLayoutEffect:a.useEffect,c=e=>{throw Error(e)};exports.connect=e=>t=>n(t,e),exports.createComponent=o,exports.createContextComponent=(t,o,n)=>r((t.shortName||'Unknown')+".ContextComponent",r=>{let s=a.useContext(o),u=e(t);return n(r,u,s)}),exports.createGate=function e(t="gate",o={}){function n(e){return s(n,e),null}let a;'object'==typeof t&&null!==t&&('defaultState'in t&&(o=t.defaultState),t.domain&&(a=t.domain),t=t.name||'gate');let u=effector.createStore(Boolean(0),{named:'status'}),c=effector.createStore(o,{named:'state'}),{set:l}=effector.createApi(c,{set:(e,t)=>t}),{open:i,close:p,destructor:f}=effector.createApi(u,{open:()=>n.predicate()&&Boolean(1),close:()=>Boolean(0),destructor:()=>Boolean(0)});n.predicate=()=>Boolean(1),n.isOpen=Boolean(0),n.current=c.getState(),n.open=i,n.close=p,n.status=u,n.state=c,n.set=l,n.destructor=f,n.isTerminated=Boolean(0),n.childGate=(r="Subgate")=>{console.error('childGate is deprecated');let o=e(`${t}/${r}`);o.predicate=()=>n.status.getState();let s=0,a=0;return o.open.watch(()=>{a||(s=1)}),o.close.watch(()=>{a||(s=0)}),n.status.watch(e=>{a=1,s&&e&&!o.status.getState()&&o.open(),a=0}),n.close.watch(()=>{a=1,o.close(),a=0}),n.destructor.watch(()=>o.destructor()),o};let d=u.watch(e=>n.isOpen=e),m=c.watch(e=>n.current=e);u.map(e=>(e||(n.current=o),null)),c.reset(p);let y=f.watch(()=>{n.isTerminated=Boolean(1)}),h=f.watch(()=>{h(),d(),m(),y(),n.status.off(n.open),n.status.off(n.close),n.status.off(n.destructor),n.state.off(n.set)});if(a){let{hooks:e}=a;effector.launch({target:[e.store,e.store,e.event,e.event,e.event],params:[u,c,i,p,l]})}return r("Gate:"+t,n)},exports.createReactState=n,exports.createStoreConsumer=e=>o(e,({children:e},t)=>e(t)),exports.useEvent=e=>e,exports.useGate=s,exports.useList=(e,o)=>{let n,s=[];'object'==typeof o&&null!==o?(o.keys&&(s=o.keys),n=o.fn):n=o,effector.is.store(e)||c('expect useList first argument to be a store'),'function'!=typeof n&&c("expect useList's renderItem to be a function"),Array.isArray(s)||c("expect useList's keys to be an array");let u=a.useMemo(()=>{let o=r((e.shortName||'Unknown')+".Item",({index:r,keys:o})=>{let n=t({store:e,keys:[r,...o],fn:(e,t)=>e[t[0]]});return i.current(n,r)});return a.memo(o)},[e]),l=t({store:e,keys:[e],fn:e=>e.length}),i=a.useRef(n);i.current=n;let p=a.useMemo(()=>s,s);return Array.from({length:l},(e,t)=>a.createElement(u,{index:t,key:t,keys:p}))},exports.useStore=e,exports.useStoreMap=t; | ||
function e(e){effector.is.store(e)||c('expect useStore argument to be a store');let t=a.useRef(e),r=a.useState(e.getState())[1];return u(()=>(t.current===e&&r(e.getState()),t.current=e,e.updates.watch(r)),[e]),e.getState()}function t({store:t,keys:r,fn:n}){effector.is.store(t)||c('useStoreMap expects a store'),Array.isArray(r)||c('useStoreMap expects an array as keys'),'function'!=typeof n&&c('useStoreMap expects a function');let o=a.useMemo(()=>effector.createStore(n(t.getState(),r)).on(t,(e,t)=>n(t,r)),r),s=e(o);return u(()=>()=>{o.off(t),effector.clearNode(o,{deep:1})},r),s}function r(e,t){return t.displayName=e,t}function n(t,n){function o(t){let r=a.useRef(t),o=e(s);u(()=>(p({props:r.current,state:s.getState()}),()=>{f({props:r.current,state:s.getState()})}),[]);let c=n(t,o);return r.current=t,c}let s;effector.is.store(t)?s=t:'object'==typeof t&&null!==t?s=effector.combine(t):c('shape should be a store or object with stores');let l='Unknown';s&&s.shortName&&(l=s.shortName);let p=effector.createEvent(),f=effector.createEvent();return o.mounted=p,o.unmounted=f,r(l+".View",o)}function o(t,n){return r(`Connect(${n.displayName||n.name||'Unknown'})`,r=>a.createElement(n,Object.assign({},r,e(t))))}function s(e,t={}){let r=a.useRef(null);u(()=>(e.open(r.current),()=>e.close(r.current)),[e]),((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})(r.current,t)||(r.current=t,e.set(t))}Object.defineProperty(exports,'__esModule',{value:1});var a=require('react'),effector=require('effector');let u='undefined'!=typeof window?a.useLayoutEffect:a.useEffect,c=e=>{throw Error(e)};exports.connect=e=>t=>o(t,e),exports.createComponent=n,exports.createContextComponent=(t,n,o)=>r((t.shortName||'Unknown')+".ContextComponent",r=>{let s=a.useContext(n),u=e(t);return o(r,u,s)}),exports.createGate=(e="gate",t={})=>{function n(e){return s(n,e),null}let o;'object'==typeof e&&null!==e&&('defaultState'in e&&(t=e.defaultState),e.domain&&(o=e.domain),e=e.name||'gate');let a=effector.createStore(Boolean(0),{named:'status'}),u=effector.createStore(t,{named:'state'}),{set:c}=effector.createApi(u,{set:(e,t)=>t}),{open:l,close:p}=effector.createApi(a,{open:()=>Boolean(1),close:()=>Boolean(0)});if(n.open=l,n.close=p,n.status=a,n.state=u,n.set=c,u.reset(p),o){let{hooks:e}=o;effector.launch({target:[e.store,e.store,e.event,e.event,e.event],params:[a,u,l,p,c]})}return r("Gate:"+e,n)},exports.createReactState=o,exports.createStoreConsumer=e=>n(e,({children:e},t)=>e(t)),exports.useEvent=e=>e,exports.useGate=s,exports.useList=(e,n)=>{let o,s=[];'object'==typeof n&&null!==n?(n.keys&&(s=n.keys),o=n.fn):o=n,effector.is.store(e)||c('expect useList first argument to be a store'),'function'!=typeof o&&c("expect useList's renderItem to be a function"),Array.isArray(s)||c("expect useList's keys to be an array");let u=a.useMemo(()=>{let n=r((e.shortName||'Unknown')+".Item",({index:r,keys:n})=>{let o=t({store:e,keys:[r,...n],fn:(e,t)=>e[t[0]]});return p.current(o,r)});return a.memo(n)},[e]),l=t({store:e,keys:[e],fn:e=>e.length}),p=a.useRef(o);p.current=o;let f=a.useMemo(()=>s,s);return Array.from({length:l},(e,t)=>a.createElement(u,{index:t,key:t,keys:f}))},exports.useStore=e,exports.useStoreMap=t; | ||
//# sourceMappingURL=effector-react.cjs.js.map |
@@ -9,11 +9,6 @@ import * as React from 'react' | ||
export type Gate<Props = {}> = React.ComponentType<Props> & { | ||
isOpen: boolean | ||
isTerminated: boolean | ||
open: Event<Props> | ||
close: Event<Props> | ||
status: Store<boolean> | ||
destructor: Event<void> | ||
current: Props | ||
state: Store<Props> | ||
childGate<Next>(childName?: string): Gate<Next> | ||
} | ||
@@ -59,6 +54,2 @@ export type StoreView<State, Props = {}> = React.ComponentType<Props> & { | ||
export function createComponent<Props, State>( | ||
storeFactory: (initialProps: Props) => Store<State>, | ||
view: (props: Props, state: State) => React.ReactNode, | ||
): StoreView<State, Props> | ||
export function createComponent<Props, State>( | ||
store: Store<State>, | ||
@@ -65,0 +56,0 @@ view: (props: Props, state: State) => React.ReactNode, |
@@ -1,2 +0,2 @@ | ||
((e,t)=>{'object'==typeof exports&&'undefined'!=typeof module?t(exports,require('react'),require('effector')):'function'==typeof define&&define.amd?define(['exports','react','effector'],t):t((e=e||self).effectorReact={},e.React,e.effector)})(this,(e,t,effector)=>{function r(e){effector.is.store(e)||l('expect useStore argument to be a store');let r=t.useRef(e),n=t.useState(e.getState())[1];return c(()=>(r.current===e&&n(e.getState()),r.current=e,e.updates.watch(n)),[e]),e.getState()}function n({store:e,keys:n,fn:o}){effector.is.store(e)||l('useStoreMap expects a store'),Array.isArray(n)||l('useStoreMap expects an array as keys'),'function'!=typeof o&&l('useStoreMap expects a function');let s=t.useMemo(()=>effector.createStore(o(e.getState(),n)).on(e,(e,t)=>o(t,n)),n),a=r(s);return c(()=>()=>{s.off(e),effector.clearNode(s,{deep:1})},n),a}function o(e,t){return t.displayName=e,t}function s(e,n){function s(e){let o=t.useRef(e),s=t.useMemo(()=>d(e),[]),a=r(s);c(()=>(i({props:o.current,state:s.getState()}),()=>{p({props:o.current,state:s.getState()})}),[]);let u=n(e,a);return o.current=e,u}let a,u;effector.is.store(e)?u=e:'function'==typeof e?(a=e,console.error('storeFactory is deprecated')):'object'==typeof e&&null!==e?u=effector.combine(e):l('shape should be a store or object with stores');let f='Unknown';u&&u.shortName&&(f=u.shortName);let i=effector.createEvent(f+".View mounted"),p=effector.createEvent(f+".View unmounted"),d='function'==typeof e?a:()=>u;return s.mounted=i,s.unmounted=p,o(f+".View",s)}function a(e,n){return o(`Connect(${n.displayName||n.name||'Unknown'})`,o=>t.createElement(n,Object.assign({},o,r(e))))}function u(e,r={}){let n=t.useRef(null);c(()=>(e.open(n.current),()=>e.close(n.current)),[e]),((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})(n.current,r)||(n.current=r,e.set(r))}let c='undefined'!=typeof window?t.useLayoutEffect:t.useEffect,l=e=>{throw Error(e)};e.connect=e=>t=>a(t,e),e.createComponent=s,e.createContextComponent=(e,n,s)=>o((e.shortName||'Unknown')+".ContextComponent",o=>{let a=t.useContext(n),u=r(e);return s(o,u,a)}),e.createGate=function e(t="gate",r={}){function n(e){return u(n,e),null}let s;'object'==typeof t&&null!==t&&('defaultState'in t&&(r=t.defaultState),t.domain&&(s=t.domain),t=t.name||'gate');let a=effector.createStore(Boolean(0),{named:'status'}),c=effector.createStore(r,{named:'state'}),{set:l}=effector.createApi(c,{set:(e,t)=>t}),{open:f,close:i,destructor:p}=effector.createApi(a,{open:()=>n.predicate()&&Boolean(1),close:()=>Boolean(0),destructor:()=>Boolean(0)});n.predicate=()=>Boolean(1),n.isOpen=Boolean(0),n.current=c.getState(),n.open=f,n.close=i,n.status=a,n.state=c,n.set=l,n.destructor=p,n.isTerminated=Boolean(0),n.childGate=(r="Subgate")=>{console.error('childGate is deprecated');let o=e(`${t}/${r}`);o.predicate=()=>n.status.getState();let s=0,a=0;return o.open.watch(()=>{a||(s=1)}),o.close.watch(()=>{a||(s=0)}),n.status.watch(e=>{a=1,s&&e&&!o.status.getState()&&o.open(),a=0}),n.close.watch(()=>{a=1,o.close(),a=0}),n.destructor.watch(()=>o.destructor()),o};let d=a.watch(e=>n.isOpen=e),m=c.watch(e=>n.current=e);a.map(e=>(e||(n.current=r),null)),c.reset(i);let y=p.watch(()=>{n.isTerminated=Boolean(1)}),h=p.watch(()=>{h(),d(),m(),y(),(()=>{n.status.off(n.open),n.status.off(n.close),n.status.off(n.destructor)})(),n.state.off(n.set)});if(s){let{hooks:e}=s;effector.launch({target:[e.store,e.store,e.event,e.event,e.event],params:[a,c,f,i,l]})}return o("Gate:"+t,n)},e.createReactState=a,e.createStoreConsumer=e=>s(e,({children:e},t)=>e(t)),e.useEvent=e=>e,e.useGate=u,e.useList=(e,r)=>{let s,a=[];'object'==typeof r&&null!==r?(r.keys&&(a=r.keys),s=r.fn):s=r,effector.is.store(e)||l('expect useList first argument to be a store'),'function'!=typeof s&&l("expect useList's renderItem to be a function"),Array.isArray(a)||l("expect useList's keys to be an array");let u=t.useMemo(()=>{let r=o((e.shortName||'Unknown')+".Item",({index:t,keys:r})=>{let o=n({store:e,keys:[t,...r],fn:(e,t)=>e[t[0]]});return f.current(o,t)});return t.memo(r)},[e]),c=n({store:e,keys:[e],fn:e=>e.length}),f=t.useRef(s);f.current=s;let i=t.useMemo(()=>a,a);return Array.from({length:c},(e,r)=>t.createElement(u,{index:r,key:r,keys:i}))},e.useStore=r,e.useStoreMap=n,Object.defineProperty(e,'__esModule',{value:1})}); | ||
((e,t)=>{'object'==typeof exports&&'undefined'!=typeof module?t(exports,require('react'),require('effector')):'function'==typeof define&&define.amd?define(['exports','react','effector'],t):t((e=e||self).effectorReact={},e.React,e.effector)})(this,(e,t,effector)=>{function r(e){effector.is.store(e)||f('expect useStore argument to be a store');let r=t.useRef(e),n=t.useState(e.getState())[1];return c(()=>(r.current===e&&n(e.getState()),r.current=e,e.updates.watch(n)),[e]),e.getState()}function n({store:e,keys:n,fn:o}){effector.is.store(e)||f('useStoreMap expects a store'),Array.isArray(n)||f('useStoreMap expects an array as keys'),'function'!=typeof o&&f('useStoreMap expects a function');let s=t.useMemo(()=>effector.createStore(o(e.getState(),n)).on(e,(e,t)=>o(t,n)),n),a=r(s);return c(()=>()=>{s.off(e),effector.clearNode(s,{deep:1})},n),a}function o(e,t){return t.displayName=e,t}function s(e,n){function s(e){let o=t.useRef(e),s=r(a);c(()=>(l({props:o.current,state:a.getState()}),()=>{i({props:o.current,state:a.getState()})}),[]);let u=n(e,s);return o.current=e,u}let a;effector.is.store(e)?a=e:'object'==typeof e&&null!==e?a=effector.combine(e):f('shape should be a store or object with stores');let u='Unknown';a&&a.shortName&&(u=a.shortName);let l=effector.createEvent(),i=effector.createEvent();return s.mounted=l,s.unmounted=i,o(u+".View",s)}function a(e,n){return o(`Connect(${n.displayName||n.name||'Unknown'})`,o=>t.createElement(n,Object.assign({},o,r(e))))}function u(e,r={}){let n=t.useRef(null);c(()=>(e.open(n.current),()=>e.close(n.current)),[e]),((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})(n.current,r)||(n.current=r,e.set(r))}let c='undefined'!=typeof window?t.useLayoutEffect:t.useEffect,f=e=>{throw Error(e)};e.connect=e=>t=>a(t,e),e.createComponent=s,e.createContextComponent=(e,n,s)=>o((e.shortName||'Unknown')+".ContextComponent",o=>{let a=t.useContext(n),u=r(e);return s(o,u,a)}),e.createGate=(e="gate",t={})=>{function r(e){return u(r,e),null}let n;'object'==typeof e&&null!==e&&('defaultState'in e&&(t=e.defaultState),e.domain&&(n=e.domain),e=e.name||'gate');let s=effector.createStore(Boolean(0),{named:'status'}),a=effector.createStore(t,{named:'state'}),{set:c}=effector.createApi(a,{set:(e,t)=>t}),{open:f,close:l}=effector.createApi(s,{open:()=>Boolean(1),close:()=>Boolean(0)});if(r.open=f,r.close=l,r.status=s,r.state=a,r.set=c,a.reset(l),n){let{hooks:e}=n;effector.launch({target:[e.store,e.store,e.event,e.event,e.event],params:[s,a,f,l,c]})}return o("Gate:"+e,r)},e.createReactState=a,e.createStoreConsumer=e=>s(e,({children:e},t)=>e(t)),e.useEvent=e=>e,e.useGate=u,e.useList=(e,r)=>{let s,a=[];'object'==typeof r&&null!==r?(r.keys&&(a=r.keys),s=r.fn):s=r,effector.is.store(e)||f('expect useList first argument to be a store'),'function'!=typeof s&&f("expect useList's renderItem to be a function"),Array.isArray(a)||f("expect useList's keys to be an array");let u=t.useMemo(()=>{let r=o((e.shortName||'Unknown')+".Item",({index:t,keys:r})=>{let o=n({store:e,keys:[t,...r],fn:(e,t)=>e[t[0]]});return l.current(o,t)});return t.memo(r)},[e]),c=n({store:e,keys:[e],fn:e=>e.length}),l=t.useRef(s);l.current=s;let i=t.useMemo(()=>a,a);return Array.from({length:c},(e,r)=>t.createElement(u,{index:r,key:r,keys:i}))},e.useStore=r,e.useStoreMap=n,Object.defineProperty(e,'__esModule',{value:1})}); | ||
//# sourceMappingURL=effector-react.umd.js.map |
@@ -9,11 +9,6 @@ import * as React from 'react' | ||
export type Gate<Props = {}> = React.ComponentType<Props> & { | ||
isOpen: boolean | ||
isTerminated: boolean | ||
open: Event<Props> | ||
close: Event<Props> | ||
status: Store<boolean> | ||
destructor: Event<void> | ||
current: Props | ||
state: Store<Props> | ||
childGate<Next>(childName?: string): Gate<Next> | ||
} | ||
@@ -59,6 +54,2 @@ export type StoreView<State, Props = {}> = React.ComponentType<Props> & { | ||
export function createComponent<Props, State>( | ||
storeFactory: (initialProps: Props) => Store<State>, | ||
view: (props: Props, state: State) => React.ReactNode, | ||
): StoreView<State, Props> | ||
export function createComponent<Props, State>( | ||
store: Store<State>, | ||
@@ -65,0 +56,0 @@ view: (props: Props, state: State) => React.ReactNode, |
{ | ||
"name": "effector-react", | ||
"version": "20.9.0", | ||
"version": "21.0.0", | ||
"description": "React bindings for effector", | ||
"main": "effector-react.cjs.js", | ||
"module": "effector-react.es.js", | ||
"module": "effector-react.mjs", | ||
"umd:main": "effector-react.umd.js", | ||
"jsnext:main": "effector-react.es.js", | ||
"jsnext:main": "effector-react.mjs", | ||
"typings": "index.d.ts", | ||
@@ -19,4 +19,4 @@ "peerDependencies": { | ||
"index.js.flow", | ||
"effector-react.es.js", | ||
"effector-react.es.js.map", | ||
"effector-react.mjs", | ||
"effector-react.mjs.map", | ||
"effector-react.cjs.js", | ||
@@ -29,7 +29,6 @@ "effector-react.cjs.js.map", | ||
"effector-react.cjs.js.flow", | ||
"effector-react.es.js.flow", | ||
"effector-react.umd.js.flow", | ||
"compat.js.flow", | ||
"effector-react.cjs.d.ts", | ||
"effector-react.es.d.ts", | ||
"effector-react.mjs.d.ts", | ||
"effector-react.umd.d.ts", | ||
@@ -36,0 +35,0 @@ "compat.d.ts", |
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
117596
23
479