((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 s(e,t){return t.displayName=e,t}function u(e,t){const r=effector.is.unit(e);let o={};r?o={unit:e}:'@@unitShape'in e?'function'==typeof e['@@unitShape']?o=e['@@unitShape']():m('expect @@unitShape to be a function'):o=e;const s=Array.isArray(o),u=y.default.useRef({stale:1,justSubscribed:0,scope:t}),[c,a,l,i,f]=y.default.useMemo((()=>{u.current.stale=1;const e=Array.isArray(o)?[]:{},n=[],s=[],c=[],a=[];for(const u in o){if(!{}.hasOwnProperty.call(o,u))continue;const l=o[u];effector.is.unit(l)||m(`expect useUnit ${r?'argument':`value in key "${u}"`} to be a unit`),effector.is.event(l)||effector.is.effect(l)?(e[u]=t?effector.scopeBind(l,{scope:t}):l,c.push(u),a.push(l)):(e[u]=null,n.push(u),s.push(l))}return[e,n,s,c,a]}),[u,t,...Object.keys(o),...Object.values(o)]),d=y.default.useRef({value:c,storeKeys:a,eventKeys:i,eventValues:f}),p=y.default.useCallback((e=>{const n=u.current;return n.justSubscribed=1,effector.createWatch({unit:l,fn:()=>{n.stale||(n.stale=1,e())},scope:t,batch:1})}),[l,t,d,u]),h=y.default.useCallback((()=>{const e=d.current,n=u.current;let o,p=0;const y=e.value,m=e.storeKeys,h=e.eventKeys,v=e.eventValues,b=t!==n.scope;if(n.stale||n.justSubscribed||b){p=!n.justSubscribed||b,o=s?[...c]:{...c},m.length===a.length&&h.length===i.length||(p=1);for(let e=0;eeffector.createWatch({unit:u,fn:e,scope:n})),[u,n]),i=y.default.useCallback((()=>S(u,n)),[u,n]),f=y.default.useRef(),d=y.default.useRef(),p=y.default.useRef(c);return r.useSyncExternalStoreWithSelector(l,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!a(t,e)))}function a(e,t={},n){const{open:r,close:o,set:s}=u({open:e.open,close:e.close,set:e.set},n),c=y.default.useMemo((()=>({open:r,close:o,set:s})),[e,r]),a=y.default.useRef({value:null,count:0});h((()=>(c.open(a.current.value),()=>c.close(a.current.value))),[c]),((e,t)=>{if(e===t)return 1;if('object'==typeof e&&null!==e&&'object'==typeof t&&null!==t){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return 0;for(let r=0;r{c.set(a.current.value)}),[a.current.count])}function l(e){const t=y.default.useContext(g);return e&&!t&&m('No scope found, consider adding to app root'),t}function i(e,t){return((e,t)=>{v(1,'useStore','useUnit'),effector.is.store(e)||m('expect useStore argument to be a store');const r=y.default.useCallback((n=>effector.createWatch({unit:e,fn:n,scope:t})),[e,t]),o=y.default.useCallback((()=>S(e,t)),[e,t]);return n.useSyncExternalStore(r,o,o)})(e,l(null==t?void 0:t.forceScope))}function f(e,t){function n(e){const n=y.default.useRef(e),o=i(r);h((()=>(u({props:n.current,state:r.getState()}),()=>{c({props:n.current,state:r.getState()})})),[]);const s=t(e,o);return n.current=e,s}let r;x('createComponent','@effector/reflect'),effector.is.store(e)?r=e:'object'==typeof e&&null!==e?r=effector.combine(e):m('shape should be a store or object with stores');let o='Unknown';r&&r.shortName&&(o=r.shortName);const u=effector.createEvent(),c=effector.createEvent();return n.mounted=u,n.unmounted=c,s(`${o}.View`,n)}function d(e,t){const n=t?e:e[0];(e=>{(e=>{if(!e)throw Error("expect first argument be an object")})(j(e)||(e=>'function'==typeof e)(e))})(n);let r=n.or;const o=n.and;if(o){const n=t?o:o[0];if(j(n)&&'and'in n){const n=d(o,t);e=n[0],r={...r,...n[1]}}else e=o}return[e,r]}function p(e,t){const n=t&&(e=>j(e)&&(e.and||e.or))(t[0])?t:[{and:t}],[[r,o],s]=d(n);let u,c={},a={},l=s;return'string'==typeof r?(a={name:r},(e=>j(e)&&'sid'in e)(o)||(c=o||{})):(e=>j(e)&&('domain'in e||'defaultState'in e||'name'in e))(r)&&(a=r,c=r.defaultState||{},u=r.domain),{hook:e,domain:u,defaultState:c,mainConfig:a,maybeConfig:l}}var y=o(t);const m=e=>{throw Error(e)},h='undefined'!=typeof window?y.default.useLayoutEffect:y.default.useEffect,v=(e,n,r)=>{t.useEffect((()=>{e&&console.error(`${n} is deprecated${r?`, prefer ${r} instead`:''}`)}),[e,n,r])},S=(e,t)=>t?t.getState(e):e.getState(),b=(e,t)=>e!==t,g=y.default.createContext(null),{Provider:k}=g,x=(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,t)=>{for(const 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=k,e.connect=e=>(x('connect','useUnit'),t=>{let n=e;return'function'!=typeof e&&(n=t,t=e),s(`Connect(${n.displayName||n.name||'Unknown'})`,(e=>y.default.createElement(n,{...e,...i(t)})))}),e.createComponent=f,e.createGate=(...e)=>(({domain:e,defaultState:t,hook:n,mainConfig:r,maybeConfig:o})=>{function u(e){return n(u,e,l()),null}const c=$({or:o,and:r}),a=`${e?`${e.compositeName.fullName}/`:''}${c.name||'gate'}`,i=effector.createEvent({name:`${a}.set`,sid:c.sid?`${c.sid}|set`:void 0}),f=effector.createEvent({name:`${a}.open`,sid:c.sid?`${c.sid}|open`:void 0}),d=effector.createEvent({name:`${a}.close`,sid:c.sid?`${c.sid}|close`:void 0}),p=effector.createStore(Boolean(0),{name:`${a}.status`,serialize:'ignore'}).on(f,(()=>Boolean(1))).on(d,(()=>Boolean(0))),y=effector.createStore(t,{name:`${a}.state`,sid:c.sid}).on(i,((e,t)=>t)).on(f,((e,t)=>t)).reset(d);if(e){const{hooks:t}=e;effector.launch({target:[t.store,t.store,t.event,t.event,t.event],params:[p,y,f,d,i]})}return u.open=f,u.close=d,u.status=p,u.state=y,u.set=i,s(`Gate:${a}`,u)})(p(a,e)),e.createStoreConsumer=e=>(x('createStoreConsumer','useUnit'),f(e,(({children:e},t)=>e(t)))),e.useEvent=(e,t)=>((e,t)=>{if(v(1,'useEvent','useUnit'),!t)return e;const n=effector.is.unit(e)||'object'!=typeof e?{event:e}:e;return y.default.useMemo((()=>{if(effector.is.unit(e))return effector.scopeBind(e,{scope:t});const n=Array.isArray(e)?[]:{};for(const r in e)n[r]=effector.scopeBind(e[r],{scope:t});return n}),[t,...Object.keys(n),...Object.values(n)])})(e,l(null==t?void 0:t.forceScope)),e.useGate=(e,t={},n)=>a(e,t,l(null==n?void 0:n.forceScope)),e.useList=(e,t,n)=>((e,t,n)=>{let r,o,a,l=[];'object'==typeof t&&null!==t?(t.keys&&(l=t.keys),({fn:r,getKey:o,placeholder:a}=t)):r=t,effector.is.store(e)||m('expect useList first argument to be a store'),'function'!=typeof r&&m("expect useList's renderItem to be a function"),Array.isArray(l)||m("expect useList's keys to be an array");const i=y.default.useMemo((()=>{const t=s(`${e.shortName||'Unknown'}.Item`,(t=>{const{index:r,keys:o,keyVal:s,value:u}=t;if(f.current[1])return f.current[0](u,s);const a=c([{store:e,keys:[r,...o],fn:(e,t)=>e[t[0]]}],n);return f.current[0](a,r)}));return y.default.memo(t)}),[e,n,!!o]),f=y.default.useRef([r,o]);f.current=[r,o];const d=y.default.useMemo((()=>l),l);if(o){const t=u(e,n);return 0===t.length&&a?a:t.map((e=>{const t=f.current[1](e);return y.default.createElement(i,{keyVal:t,key:t,keys:d,value:e})}))}{const t=c([{store:e,keys:[e],fn:e=>e.length}],n);return 0===t&&a?a:Array.from({length:t},((e,t)=>y.default.createElement(i,{index:t,key:t,keys:d})))}})(e,t,l(null==n?void 0:n.forceScope)),e.useProvidedScope=()=>l()||null,e.useStore=i,e.useStoreMap=(e,t)=>c([e,t],l(null==e?void 0:e.forceScope)),e.useUnit=(e,t)=>u(e,l(null==t?void 0:t.forceScope)),Object.defineProperty(e,'__esModule',{value:1})})); //# sourceMappingURL=effector-react.umd.js.map