UNPKG

mobx-keystone

Version:

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

38 lines (33 loc) 962 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" /** * @internal */ export function tweakModel<T extends object>(value: T, parentPath: ParentPath<any> | undefined): T { tweakedObjects.set(value, undefined) setParent( value, parentPath, false, // indexChangeAllowed false, // isDataObject true // cloneIfApplicable ) // 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 } /** * @internal */ export function registerModelTweaker() { registerTweaker(TweakerPriority.Model, (value, parentPath) => { if (isModel(value)) { return tweakModel(value, parentPath) } return undefined }) }