mobx-keystone
Version:
A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more
34 lines (33 loc) • 1.25 kB
TypeScript
/**
* Registers a model / tree node object as a root store tree.
* Marking a model object as a root store tree serves several purposes:
* - It allows the `onAttachedToRootStore` hook (plus disposer) to be invoked on models once they become part of this tree.
* These hooks can be used for example to attach effects and serve as some sort of initialization.
* - It allows auto detachable references to work properly.
*
* @template T Object type.
* @param node Node object to register as root store.
* @returns The same model object that was passed.
*/
export declare const registerRootStore: <T extends object>(node: T) => T;
/**
* Unregisters an object to mark it as no longer a root store.
*
* @param node Node object to unregister as root store.
*/
export declare const unregisterRootStore: (node: object) => void;
/**
* Checks if a given object is marked as a root store.
*
* @param node Object.
* @returns
*/
export declare function isRootStore(node: object): boolean;
/**
* Gets the root store of a given tree child, or undefined if none.
*
* @template T Root store type.
* @param node Target to find the root store for.
* @returns
*/
export declare function getRootStore<T extends object>(node: object): T | undefined;