UNPKG

mobx-keystone-mindreframer

Version:

A MobX powered state management solution based on data trees with first class support for Typescript, snapshots, patches and much more

33 lines (28 loc) 866 B
import { isModel } from "../model/utils" import type { ParentPath } from "../parent/path" import { setParent } from "../parent/setParent" import { tweakedObjects } from "./core" import { registerTweaker } from "./tweak" import { TweakerPriority } from "./TweakerPriority" /** * @ignore */ export function tweakModel<T>(value: T, parentPath: ParentPath<any> | undefined): T { tweakedObjects.set(value, undefined) setParent({ value, parentPath, indexChangeAllowed: false, isDataObject: false, cloneIfApplicable: true, }) // nothing to do for models, data is already proxified and its parent is set // for snapshots we will use its "$" object snapshot directly return value } registerTweaker(TweakerPriority.Model, (value, parentPath) => { if (isModel(value)) { return tweakModel(value, parentPath) } return undefined })