@lomray/react-mobx-manager
Version:
This package provides Mobx stores manager for react.
3 lines (2 loc) • 1.07 kB
JavaScript
import t from"lodash";import{spy as e}from"mobx";import{ROOT_CONTEXT_ID as s}from"../../constants.js";import r from"../../manager.js";var o;!function(t){t.SPY="spy"}(o||(o={}));class n{manager;static listeners={};constructor(t){this.manager=t,Object.values(n.listeners).forEach((t=>{t()}))}getContextKey(t,e){if(t===s)return t;const{parentId:r}=this.manager.getStoresRelations().get(t)??{};return r&&r!==s?this.getContextKey(r,`${r}.${e??t}`):`${r??s}.${e??t}`}getStoresState(){const e={root:{}};try{const s=this.manager.getStores();this.manager.getStoresRelations().forEach((({ids:o,componentName:n},a)=>{const i=this.getContextKey(a);o.forEach((o=>{const a=s.get(o);if(a){const s=a?.toJSON?.()??r.getObservableProps(a);t.set(e,`${i}.stores.${o}`,s),t.set(e,`${i}.componentName`,n)}}))}))}catch(t){}return e}subscribe(){return n.listeners[o.SPY]=e((e=>{["report-end","reaction"].includes(e.type)||this.manager?.__devOnChange?.({event:t.cloneDeep(e),storesState:this.getStoresState()})})),this.manager}}export{n as default};
//# sourceMappingURL=state-listener.js.map