Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

mobx-state-tree

Package Overview
Dependencies
Maintainers
2
Versions
129
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mobx-state-tree - npm Package Compare versions

Comparing version 1.2.1 to 1.3.0

4

dist/core/node/create-node.d.ts

@@ -1,3 +0,3 @@

import { INode, IType } from "../../internal";
export declare function createNode<S, T>(type: IType<S, T>, parent: INode | null, subpath: string, environment: any, initialValue: any, createNewInstance?: (initialValue: any) => T, finalizeNewInstance?: (node: INode, initialValue: any) => void): INode;
import { INode, ObjectNode, ScalarNode, IType } from "../../internal";
export declare function createNode<S, T>(type: IType<S, T>, parent: ObjectNode | null, subpath: string, environment: any, initialValue: any, createNewInstance?: (initialValue: any) => T, finalizeNewInstance?: (node: INode, initialValue: any) => void): ObjectNode | ScalarNode;
export declare function isNode(value: any): value is INode;

@@ -1,10 +0,10 @@

import { IType, INode } from "../../internal";
import { IType, ObjectNode } from "../../internal";
export declare class IdentifierCache {
private cache;
constructor();
addNodeToCache(node: INode): this;
mergeCache(node: INode): void;
notifyDied(node: INode): void;
splitCache(node: INode): IdentifierCache;
resolve(type: IType<any, any>, identifier: string): INode | null;
addNodeToCache(node: ObjectNode): this;
mergeCache(node: ObjectNode): void;
notifyDied(node: ObjectNode): void;
splitCache(node: ObjectNode): IdentifierCache;
resolve(type: IType<any, any>, identifier: string): ObjectNode | null;
}

@@ -1,49 +0,23 @@

import { IType, IdentifierCache, IReversibleJsonPatch, IJsonPatch, IDisposer, IMiddlewareHandler } from "../../internal";
import { IType, ObjectNode } from "../../internal";
export declare enum NodeLifeCycle {
INITIALIZING = 0,
CREATED = 1,
FINALIZED = 2,
DETACHING = 3,
DEAD = 4,
}
export interface INode {
readonly type: IType<any, any>;
readonly storedValue: any;
readonly _environment: any;
readonly path: string;
readonly isRoot: boolean;
readonly parent: INode | null;
readonly root: INode;
readonly parent: ObjectNode | null;
readonly root: ObjectNode;
readonly _environment: any;
subpath: string;
isRunningAction(): boolean;
_isRunningAction: boolean;
isProtectionEnabled: boolean;
isProtected: boolean;
assertWritable(): void;
identifier: string | null;
isAlive: boolean;
assertAlive(): void;
identifierAttribute: string | undefined;
identifierCache: IdentifierCache | undefined;
readonly value: any;
readonly snapshot: any;
resolve(pathParts: string): INode;
resolve(pathParts: string, failIfResolveFails: boolean): INode | undefined;
resolve(path: string, failIfResolveFails?: boolean): INode | undefined;
resolvePath(pathParts: string[]): INode;
resolvePath(pathParts: string[], failIfResolveFails: boolean): INode | undefined;
resolvePath(pathParts: string[], failIfResolveFails?: boolean): INode | undefined;
getRelativePathTo(target: INode): string;
setParent(newParent: INode | null, subpath: string | null): void;
getChildNode(subpath: string): INode;
getChildren(): INode[];
getChildType(key: string): IType<any, any>;
removeChild(subpath: string): void;
unbox(childNode: INode): any;
detach(): void;
setParent(newParent: ObjectNode | null, subpath?: string | null): void;
die(): void;
aboutToDie(): void;
finalizeDeath(): void;
emitPatch(basePatch: IReversibleJsonPatch, source: INode): void;
readonly middlewares: IMiddlewareHandler[];
addMiddleWare(handler: IMiddlewareHandler): IDisposer;
applyPatchLocally(subpath: string, patch: IJsonPatch): void;
onPatch(handler: (patch: IJsonPatch, reversePatch: IJsonPatch) => void): IDisposer;
applyPatches(patches: IJsonPatch[]): void;
applySnapshot(snapshot: any): void;
onSnapshot(onChange: (snapshot: any) => void): IDisposer;
addDisposer(disposer: () => void): void;
}

@@ -63,4 +37,9 @@ export declare type IStateTreeNode = {

export declare function isStateTreeNode(value: any): value is IStateTreeNode;
export declare function getStateTreeNode(value: IStateTreeNode): INode;
export declare function getStateTreeNode(value: IStateTreeNode): ObjectNode;
export declare function canAttachNode(value: any): boolean;
export declare function toJSON(this: IStateTreeNode): any;
export declare function getRelativePathBetweenNodes(base: ObjectNode, target: ObjectNode): string;
export declare function resolveNodeByPath(base: ObjectNode, pathParts: string): INode;
export declare function resolveNodeByPath(base: ObjectNode, pathParts: string, failIfResolveFails: boolean): INode | undefined;
export declare function resolveNodeByPathParts(base: ObjectNode, pathParts: string[]): INode;
export declare function resolveNodeByPathParts(base: ObjectNode, pathParts: string[], failIfResolveFails: boolean): INode | undefined;

@@ -1,3 +0,15 @@

import { ScalarNode, INode, IJsonPatch, IReversibleJsonPatch, IType, IDisposer, IMiddlewareHandler } from "../../internal";
export declare class ObjectNode extends ScalarNode implements INode {
import { INode, IJsonPatch, IReversibleJsonPatch, IType, IDisposer, IMiddlewareHandler, NodeLifeCycle, IdentifierCache } from "../../internal";
export declare class ObjectNode implements INode {
nodeId: number;
readonly type: IType<any, any>;
readonly storedValue: any;
subpath: string;
protected _parent: ObjectNode | null;
_isRunningAction: boolean;
identifierCache: IdentifierCache | undefined;
isProtectionEnabled: boolean;
identifierAttribute: string | undefined;
_environment: any;
protected _autoUnbox: boolean;
state: NodeLifeCycle;
middlewares: IMiddlewareHandler[];

@@ -7,3 +19,27 @@ private snapshotSubscribers;

private disposers;
constructor(type: IType<any, any>, parent: INode | null, subpath: string, environment: any, initialValue: any, storedValue: any, canAttachTreeNode: boolean, finalizeNewInstance?: (node: INode, initialValue: any) => void);
applyPatches: (patches: IJsonPatch[]) => void;
applySnapshot: (snapshot: any) => void;
constructor(type: IType<any, any>, parent: ObjectNode | null, subpath: string, environment: any, initialValue: any, storedValue: any, canAttachTreeNode: boolean, finalizeNewInstance?: (node: INode, initialValue: any) => void);
readonly path: string;
readonly isRoot: boolean;
readonly parent: ObjectNode | null;
readonly root: ObjectNode;
setParent(newParent: ObjectNode | null, subpath?: string | null): void;
fireHook(name: string): void;
readonly value: any;
readonly snapshot: any;
isRunningAction(): boolean;
readonly identifier: string | null;
readonly isAlive: boolean;
assertAlive(): void;
getChildNode(subpath: string): INode;
getChildren(): INode[];
getChildType(key: string): IType<any, any>;
readonly isProtected: boolean;
assertWritable(): void;
removeChild(subpath: string): void;
unbox(childNode: INode): any;
toString(): string;
finalizeCreation(): void;
detach(): void;
preboot(): void;

@@ -10,0 +46,0 @@ die(): void;

@@ -1,56 +0,22 @@

import { INode, IdentifierCache, IJsonPatch, IReversibleJsonPatch, IDisposer, IType, IMiddlewareHandler } from "../../internal";
import { INode, IType, ObjectNode } from "../../internal";
export declare class ScalarNode implements INode {
readonly nodeId: number;
readonly type: IType<any, any>;
readonly storedValue: any;
protected _parent: INode | null;
subpath: string;
_isRunningAction: boolean;
identifierCache: IdentifierCache | undefined;
isProtectionEnabled: boolean;
identifierAttribute: string | undefined;
_environment: any;
protected _autoUnbox: boolean;
protected _isAlive: boolean;
protected _isDetaching: boolean;
middlewares: IMiddlewareHandler[];
constructor(type: IType<any, any>, parent: INode | null, subpath: string, environment: any, initialValue: any, storedValue: any, canAttachTreeNode: boolean, finalizeNewInstance?: (node: INode, initialValue: any) => void);
preboot(): void;
private readonly _parent;
readonly _environment: any;
private _autoUnbox;
private state;
constructor(type: IType<any, any>, parent: ObjectNode | null, subpath: string, environment: any, initialValue: any, storedValue: any, canAttachTreeNode: boolean, finalizeNewInstance?: (node: INode, initialValue: any) => void);
readonly path: string;
readonly isRoot: boolean;
readonly parent: INode | null;
readonly root: INode;
readonly parent: ObjectNode | null;
readonly root: ObjectNode;
setParent(newParent: INode | null, subpath?: string | null): void;
getRelativePathTo(target: INode): string;
resolve(pathParts: string): INode;
resolve(pathParts: string, failIfResolveFails: boolean): INode | undefined;
resolvePath(pathParts: string[]): INode;
resolvePath(pathParts: string[], failIfResolveFails: boolean): INode | undefined;
fireHook(name: string): void;
readonly value: any;
readonly snapshot: any;
isRunningAction(): boolean;
readonly identifier: string | null;
readonly isAlive: boolean;
assertAlive(): void;
getChildNode(subpath: string): INode;
getChildren(): INode[];
getChildType(key: string): IType<any, any>;
readonly isProtected: boolean;
assertWritable(): void;
removeChild(subpath: string): void;
unbox(childNode: INode): any;
toString(): string;
die(): void;
emitPatch(basePatch: IReversibleJsonPatch, source: INode): void;
finalizeDeath(): void;
aboutToDie(): void;
addMiddleWare(handler: IMiddlewareHandler): IDisposer;
applyPatchLocally(subpath: string, patch: IJsonPatch): void;
onPatch(handler: (patch: IJsonPatch, reversePatch: IJsonPatch) => void): IDisposer;
applyPatches(patches: IJsonPatch[]): void;
applySnapshot(snapshot: any): void;
onSnapshot(onChange: (snapshot: any) => void): IDisposer;
detach(): void;
addDisposer(disposer: () => void): void;
}

@@ -1,2 +0,2 @@

import { IContext, IValidationResult, INode, IStateTreeNode, IJsonPatch } from "../../internal";
import { IContext, IValidationResult, INode, IStateTreeNode, IJsonPatch, ObjectNode } from "../../internal";
export declare enum TypeFlags {

@@ -73,3 +73,3 @@ String = 1,

is(value: any): value is S | T;
reconcile(current: INode, newValue: any): INode;
reconcile(current: ObjectNode, newValue: any): INode;
readonly Type: T;

@@ -76,0 +76,0 @@ readonly SnapshotType: S;

@@ -1,1 +0,1 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("mobx")):"function"==typeof define&&define.amd?define(["exports","mobx"],e):e(t.mobxStateTree=t.mobxStateTree||{},t.mobx)}(this,function(t,e){"use strict";function n(t){return F(t).type}function r(t,e){return F(t).onPatch(e)}function o(t,e){F(t).applyPatches(J(e))}function i(t,e){return F(t).applySnapshot(e)}function a(t){return F(t).root.storedValue}function s(t,e){var n=F(t).resolve(e,!1);if(void 0!==n)return n?n.value:void 0}function u(t,e){var n=F(t);n.getChildren().forEach(function(t){k(t.storedValue)&&u(t.storedValue,e)}),e(n.storedValue)}function p(t,e){function n(){this.constructor=t}St(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function c(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&(n[r[o]]=t[r[o]]);return n}function l(t,e,n,r){var o,i=arguments.length,a=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(a=(i<3?o(a):i>3?o(e,n,a):o(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a}function h(t){return"object"==typeof t&&t&&!0===t.isType}function f(t,e,r,o){if(o instanceof Date)return{$MST_DATE:o.getTime()};if(q(o))return o;if(k(o))return y("[MSTNode: "+n(o).name+"]");if("function"==typeof o)return y("[function]");if("object"==typeof o&&!B(o)&&!H(o))return y("[object "+(o&&o.constructor&&o.constructor.name||"Complex Object")+"]");try{return JSON.stringify(o),o}catch(t){return y(""+t)}}function d(t,e){return e&&"object"==typeof e&&"$MST_DATE"in e?new Date(e.$MST_DATE):e}function y(t){return{$MST_UNSERIALIZABLE:!0,type:t}}function v(t,n){e.runInAction(function(){J(n).forEach(function(e){return b(t,e)})})}function b(t,e){var n=s(t,e.path||"");if(!n)return $("Invalid action path: "+(e.path||""));var r=F(n);return"@APPLY_PATCHES"===e.name?o.call(null,n,e.args[0]):"@APPLY_SNAPSHOT"===e.name?i.call(null,n,e.args[0]):("function"!=typeof n[e.name]&&$("Action '"+e.name+"' does not exist in '"+r.path+"'"),n[e.name].apply(n,e.args?e.args.map(function(t){return d(r,t)}):[]))}function m(t,e,n){function r(n){if("action"===n.type&&n.id===n.rootId){var r=F(n.context);e({name:n.name,path:F(t).getRelativePathTo(r),args:n.args.map(function(t,e){return f(r,n.name,e,t)})})}}return void 0===n&&(n=!1),A(t,n?function(t,e){var n=e(t);return r(t),n}:function(t,e){return r(t),e(t)})}function g(){return Ot++}function w(t,e){var n=F(t.context),r=n._isRunningAction,o=xt;n.assertAlive(),n._isRunningAction=!0,xt=t;try{return j(n,t,e)}finally{xt=o,n._isRunningAction=r}}function P(){return xt||$("Not running an action!")}function V(t,n,r){var o=e.action(n,r);return o.$mst_middleware=r.$mst_middleware,function(){var e=g();return w({type:"action",name:n,id:e,args:tt(arguments),context:t,tree:a(t),rootId:xt?xt.rootId:e,parentId:xt?xt.id:0},o)}}function A(t,e){return F(t).addMiddleWare(e)}function S(t,e,n){for(var r=n.$mst_middleware||[],o=t;o;)r=r.concat(o.middlewares),o=o.parent;return r}function j(t,e,n){function r(t){var i=o.shift();return i?i(t,r):n.apply(null,e.args)}var o=S(t,e,n);return o.length?r(e):n.apply(null,e.args)}function T(t){try{return JSON.stringify(t)}catch(t){return"<Unserializable: "+t+">"}}function _(t){return"function"==typeof t?"<function"+(t.name?" "+t.name:"")+">":k(t)?"<"+t+">":"`"+T(t)+"`"}function N(t){var e=t.value,n=t.context[t.context.length-1].type,r=t.context.map(function(t){return t.path}).filter(function(t){return t.length>0}).join("/"),o=r.length>0?'at path "/'+r+'" ':"",i=k(e)?"value of type "+F(e).type.name+":":q(e)?"value":"snapshot",a=n&&k(e)&&n.is(F(e).snapshot);return""+o+i+" "+_(e)+" is not assignable "+(n?"to type: `"+n.name+"`":"")+(t.message?" ("+t.message+")":"")+(n?gt(n)?".":", expected an instance of `"+n.name+"` or a snapshot like `"+n.describe()+"` instead."+(a?" (Note that a snapshot of the provided value is compatible with the targeted type)":""):".")}function C(t,e,n){return t.concat([{path:e,type:n}])}function O(){return Et}function x(t,e,n){return[{context:t,value:e,message:n}]}function I(t){return t.reduce(function(t,e){return t.concat(e)},[])}function D(t,e){}function E(t,e){var n=t.validate(e,[{path:"",type:t}]);n.length>0&&$("Error while converting "+_(e)+" to `"+t.name+"`:\n"+n.map(N).join("\n"))}function R(t,e,n,r,o,i,a){if(void 0===i&&(i=L),void 0===a&&(a=U),k(o)){var s=F(o);return s.isRoot||$("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+(e?e.path:"")+"/"+n+"', but it lives already at '"+s.path+"'"),s.setParent(e,n),s}var u=i(o);return t.shouldAttachNode?new _t(t,e,n,r,o,u,t.shouldAttachNode,a):new Tt(t,e,n,r,o,u,t.shouldAttachNode,a)}function z(t){return t instanceof Tt||t instanceof _t}function k(t){return!(!t||!t.$treenode)}function F(t){return k(t)?t.$treenode:$("Value "+t+" is no MST Node")}function M(){return F(this).snapshot}function $(t){throw void 0===t&&(t="Illegal state"),new Error("[mobx-state-tree] "+t)}function L(t){return t}function U(){}function H(t){return!(!Array.isArray(t)&&!e.isObservableArray(t))}function J(t){return t?H(t)?t:[t]:Et}function W(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];for(var r=0;r<e.length;r++){var o=e[r];for(var i in o)t[i]=o[i]}return t}function B(t){if(null===t||"object"!=typeof t)return!1;var e=Object.getPrototypeOf(t);return e===Object.prototype||null===e}function Y(t){return!(null===t||"object"!=typeof t||t instanceof Date||t instanceof RegExp)}function q(t){return null===t||void 0===t||("string"==typeof t||"number"==typeof t||"boolean"==typeof t||t instanceof Date)}function G(t){return"function"!=typeof t}function Z(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!1,configurable:!0,value:n})}function K(t,e,n){Object.defineProperty(t,e,{enumerable:!0,writable:!1,configurable:!0,value:n})}function Q(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function X(t,e){return t.push(e),function(){Q(t,e)}}function tt(t){for(var e=new Array(t.length),n=0;n<t.length;n++)e[n]=t[n];return e}function et(t){return nt(t.name,t)}function nt(t,e){var n=function(){function r(e,r,a){e.$mst_middleware=n.$mst_middleware,w({name:t,type:r,id:o,args:[a],tree:i.tree,context:i.context,parentId:i.id,rootId:i.rootId},e)}var o=g(),i=P(),a=arguments;return new Promise(function(s,u){function p(t){var e;try{r(function(t){e=h.next(t)},"flow_resume",t)}catch(t){return void setImmediate(function(){r(function(e){u(t)},"flow_throw",t)})}l(e)}function c(t){var e;try{r(function(t){e=h.throw(t)},"flow_resume_error",t)}catch(t){return void setImmediate(function(){r(function(e){u(t)},"flow_throw",t)})}l(e)}function l(t){if(!t.done)return t.value&&"function"==typeof t.value.then||$("Only promises can be yielded to `async`, got: "+t),t.value.then(p,c);setImmediate(function(){r(function(t){s(t)},"flow_return",t.value)})}var h,f=function(){h=e.apply(null,arguments),p(void 0)};f.$mst_middleware=n.$mst_middleware,w({name:t,type:"flow_spawn",id:o,args:tt(a),tree:i.tree,context:i.context,parentId:i.id,rootId:i.rootId},f)})};return n}function rt(t){return"oldValue"in t||$("Patches without `oldValue` field cannot be inversed"),[ot(t),it(t)]}function ot(t){switch(t.op){case"add":return{op:"add",path:t.path,value:t.value};case"remove":return{op:"remove",path:t.path};case"replace":return{op:"replace",path:t.path,value:t.value}}}function it(t){switch(t.op){case"add":return{op:"remove",path:t.path};case"remove":return{op:"add",path:t.path,value:t.oldValue};case"replace":return{op:"replace",path:t.path,value:t.oldValue}}}function at(t){return t.replace(/~/g,"~1").replace(/\//g,"~0")}function st(t){return t.replace(/~0/g,"/").replace(/~1/g,"~")}function ut(t){return 0===t.length?"":"/"+t.map(at).join("/")}function pt(t){var e=t.split("/").map(st);return""===e[0]?e.slice(1):e}function ct(){return F(this)+"("+this.size+" items)"}function lt(t){t||$("Map.put cannot be used to set empty values");var e;if(k(t))e=F(t);else{if(!Y(t))return $("Map.put can only be used to store complex values");e=F(F(this).type.subType.create(t))}return e.identifierAttribute||$("Map.put can only be used to store complex values that have an identifier type attribute"),this.set(e.identifier,e.value),this}function ht(){return F(this)+"("+this.length+" items)"}function ft(t,e,n,r,o){for(var i,a,s=!1,u=void 0,p=0;s=p<=r.length-1,i=n[p],a=s?r[p]:void 0,z(a)&&(a=a.storedValue),i||s;p++)if(s)if(i)if(yt(i,a))n[p]=dt(e,t,""+o[p],a,i);else{u=void 0;for(var c=p;c<n.length;c++)if(yt(n[c],a)){u=n.splice(c,1)[0];break}n.splice(p,0,dt(e,t,""+o[p],a,u))}else k(a)&&F(a).parent===t&&$("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+t.path+"/"+o[p]+"', but it lives already at '"+F(a).path+"'"),n.splice(p,0,dt(e,t,""+o[p],a));else i.die(),n.splice(p,1),p--;return n}function dt(t,e,n,r,o){if(D(t,r),k(r)){var i=F(r);if(i.assertAlive(),null!==i.parent&&i.parent===e)return i.setParent(e,n),o&&o!==i&&o.die(),i}if(o){var a=t.reconcile(o,r);return a.setParent(e,n),a}return t.instantiate(e,n,e._environment,r)}function yt(t,e){return k(e)?F(e)===t:!(!Y(e)||t.snapshot!==e)||!(null===t.identifier||!t.identifierAttribute||!B(e)||e[t.identifierAttribute]!==t.identifier)}function vt(){return F(this).toString()}function bt(t){return Object.keys(t).reduce(function(t,e){if(e in Mt)return $("Hook '"+e+"' was defined as property. Hooks should be defined as part of the actions");var n=Object.getOwnPropertyDescriptor(t,e);"get"in n&&$("Getters are not supported as properties. Please use views instead");var r=n.value;if(null===r)$("The default value of an attribute cannot be null or undefined as the type cannot be inferred. Did you mean `types.maybe(someType)`?");else{if(q(r))return Object.assign({},t,(o={},o[e]=Vt(mt(r),r),o));if(h(r))return t;$("function"==typeof r?"Functions are not supported as properties, use views instead":"object"==typeof r?"In property '"+e+"': base model's should not contain complex values: '"+r+"'":"Unexpected value for property '"+e+"'")}var o},t)}function mt(t){switch(typeof t){case"string":return Ht;case"number":return Jt;case"boolean":return Wt;case"object":if(t instanceof Date)return qt}return $("Cannot determine primitive type from value "+t)}function gt(t){return h(t)&&(t.flags&(At.String|At.Number|At.Boolean|At.Date))>0}function wt(t){return new Gt(t)}function Pt(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];var r=h(t)?null:t,o=h(t)?e.concat(t):e,i="("+o.map(function(t){return t.name}).join(" | ")+")";return new Kt(i,o,r)}function Vt(t,e){return new Qt(t,e)}var At,St=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},jt=1,Tt=function(){function t(t,e,n,r,o,i,a,s){void 0===s&&(s=U),this.nodeId=++jt,this._parent=null,this.subpath="",this._isRunningAction=!1,this.isProtectionEnabled=!0,this.identifierAttribute=void 0,this._environment=void 0,this._autoUnbox=!0,this._isAlive=!0,this._isDetaching=!1,this.middlewares=Et,this.type=t,this._parent=e,this.subpath=n,this.storedValue=i,this._environment=r,this.unbox=this.unbox.bind(this),this.preboot(),e||(this.identifierCache=new It),a&&Z(this.storedValue,"$treenode",this);var u=!0;try{a&&Z(this.storedValue,"toJSON",M),this._isRunningAction=!0,s(this,o),this._isRunningAction=!1,e?e.root.identifierCache.addNodeToCache(this):this.identifierCache.addNodeToCache(this),this.fireHook("afterCreate"),e&&this.fireHook("afterAttach"),u=!1}finally{u&&(this._isAlive=!1)}}return t.prototype.preboot=function(){},Object.defineProperty(t.prototype,"path",{get:function(){return this.parent?this.parent.path+"/"+at(this.subpath):""},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isRoot",{get:function(){return null===this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"root",{get:function(){for(var t,e=this;t=e.parent;)e=t;return e},enumerable:!0,configurable:!0}),t.prototype.setParent=function(t,e){void 0===e&&(e=null),this.parent===t&&this.subpath===e||(t&&(this._parent&&t!==this._parent&&$("A node cannot exists twice in the state tree. Failed to add "+this+" to path '"+t.path+"/"+e+"'."),this._parent||t.root!==this||$("A state tree is not allowed to contain itself. Cannot assign "+this+" to path '"+t.path+"/"+e+"'"),!this._parent&&this.root._environment&&this.root._environment!==t.root._environment&&$("A state tree cannot be made part of another state tree as long as their environments are different.")),this.parent&&!t?this.die():(this.subpath=e||"",t&&t!==this._parent&&(t.root.identifierCache.mergeCache(this),this._parent=t,this.fireHook("afterAttach"))))},t.prototype.getRelativePathTo=function(t){this.root!==t.root&&$("Cannot calculate relative path: objects '"+this+"' and '"+t+"' are not part of the same object tree");for(var e=pt(this.path),n=pt(t.path),r=0;r<e.length&&e[r]===n[r];r++);return e.slice(r).map(function(t){return".."}).join("/")+ut(n.slice(r))},t.prototype.resolve=function(t,e){return void 0===e&&(e=!0),this.resolvePath(pt(t),e)},t.prototype.resolvePath=function(t,e){void 0===e&&(e=!0);for(var n=this,r=0;r<t.length;r++){if(""===t[r])n=n.root;else if(".."===t[r])n=n.parent;else{if("."===t[r]||""===t[r])continue;if(n){n=n.getChildNode(t[r]);continue}}if(!n)return e?$("Could not resolve '"+t[r]+"' in '"+ut(t.slice(0,r-1))+"', path of the patch does not resolve"):void 0}return n},t.prototype.fireHook=function(t){var e=this.storedValue&&"object"==typeof this.storedValue&&this.storedValue[t];"function"==typeof e&&e.apply(this.storedValue)},Object.defineProperty(t.prototype,"value",{get:function(){if(this._isAlive)return this.type.getValue(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"snapshot",{get:function(){if(this._isAlive)return this.type.getSnapshot(this)},enumerable:!0,configurable:!0}),t.prototype.isRunningAction=function(){return!!this._isRunningAction||!this.isRoot&&this.parent.isRunningAction()},Object.defineProperty(t.prototype,"identifier",{get:function(){return this.identifierAttribute?this.storedValue[this.identifierAttribute]:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isAlive",{get:function(){return this._isAlive},enumerable:!0,configurable:!0}),t.prototype.assertAlive=function(){this._isAlive||$(this+" cannot be used anymore as it has died; it has been removed from a state tree. If you want to remove an element from a tree and let it live on, use 'detach' or 'clone' the value")},t.prototype.getChildNode=function(t){this.assertAlive(),this._autoUnbox=!1;var e=this.type.getChildNode(this,t);return this._autoUnbox=!0,e},t.prototype.getChildren=function(){this.assertAlive(),this._autoUnbox=!1;var t=this.type.getChildren(this);return this._autoUnbox=!0,t},t.prototype.getChildType=function(t){return this.type.getChildType(t)},Object.defineProperty(t.prototype,"isProtected",{get:function(){return this.root.isProtectionEnabled},enumerable:!0,configurable:!0}),t.prototype.assertWritable=function(){this.assertAlive(),!this.isRunningAction()&&this.isProtected&&$("Cannot modify '"+this+"', the object is protected and can only be modified by using an action.")},t.prototype.removeChild=function(t){this.type.removeChild(this,t)},t.prototype.unbox=function(t){return t&&!0===this._autoUnbox?t.value:t},t.prototype.toString=function(){var t=this.identifier?"(id: "+this.identifier+")":"";return this.type.name+"@"+(this.path||"<root>")+t+(this.isAlive?"":"[dead]")},t.prototype.die=function(){},t.prototype.emitPatch=function(t,e){throw $("ImmutableNode does not support the emitPatch operation")},t.prototype.finalizeDeath=function(){throw $("ImmutableNode does not support the finalizeDeath operation")},t.prototype.aboutToDie=function(){throw $("ImmutableNode does not support the aboutToDie operation")},t.prototype.addMiddleWare=function(t){throw $("ImmutableNode does not support the addMiddleWare operation")},t.prototype.applyPatchLocally=function(t,e){throw $("ImmutableNode does not support the applyPatchLocally operation")},t.prototype.onPatch=function(t){throw $("ImmutableNode does not support the onPatch operation")},t.prototype.applyPatches=function(t){throw $("ImmutableNode does not support the applyPatches operation")},t.prototype.applySnapshot=function(t){throw $("ImmutableNode does not support the applySnapshot operation")},t.prototype.onSnapshot=function(t){throw $("ImmutableNode does not support the onSnapshot operation")},t.prototype.detach=function(){this._isAlive||$("Error while detaching, node is not alive."),this.isRoot||(this.fireHook("beforeDetach"),this._environment=this.root._environment,this._isDetaching=!0,this.identifierCache=this.root.identifierCache.splitCache(this),this.parent.removeChild(this.subpath),this._parent=null,this.subpath="",this._isDetaching=!1)},t.prototype.addDisposer=function(t){throw $("ImmutableNode does not support the addDisposer operation")},l([e.observable],t.prototype,"_parent",void 0),l([e.observable],t.prototype,"subpath",void 0),l([e.computed],t.prototype,"path",null),l([e.computed],t.prototype,"value",null),l([e.computed],t.prototype,"snapshot",null),t}(),_t=function(t){function n(n,r,o,i,a,s,u,p){void 0===p&&(p=U);var c=t.call(this,n,r,o,i,a,s,u,p)||this,l=e.reaction(function(){return c.snapshot},function(t){c.emitSnapshot(t)});return l.onError(function(t){throw t}),c.addDisposer(l),c}return p(n,t),n.prototype.preboot=function(){var t=this;this.disposers=[],this.middlewares=[],this.snapshotSubscribers=[],this.patchSubscribers=[],this.applyPatches=V(this.storedValue,"@APPLY_PATCHES",function(e){e.forEach(function(e){var n=pt(e.path);t.resolvePath(n.slice(0,-1)).applyPatchLocally(n[n.length-1],e)})}).bind(this.storedValue),this.applySnapshot=V(this.storedValue,"@APPLY_SNAPSHOT",function(e){if(e!==t.snapshot)return t.type.applySnapshot(t,e)}).bind(this.storedValue)},n.prototype.die=function(){this._isDetaching||k(this.storedValue)&&(u(this.storedValue,function(t){return F(t).aboutToDie()}),u(this.storedValue,function(t){return F(t).finalizeDeath()}))},n.prototype.aboutToDie=function(){this.disposers.splice(0).forEach(function(t){return t()}),this.fireHook("beforeDestroy")},n.prototype.finalizeDeath=function(){this.root.identifierCache.notifyDied(this);var t=this,e=this.path;K(this,"snapshot",this.snapshot),this.patchSubscribers.splice(0),this.snapshotSubscribers.splice(0),this.patchSubscribers.splice(0),this._isAlive=!1,this._parent=null,this.subpath="",Object.defineProperty(this.storedValue,"$mobx",{get:function(){$("This object has died and is no longer part of a state tree. It cannot be used anymore. The object (of type '"+t.type.name+"') used to live at '"+e+"'. It is possible to access the last snapshot of this object using 'getSnapshot', or to create a fresh copy using 'clone'. If you want to remove an object from the tree without killing it, use 'detach' instead.")}})},n.prototype.onSnapshot=function(t){return X(this.snapshotSubscribers,t)},n.prototype.emitSnapshot=function(t){this.snapshotSubscribers.forEach(function(e){return e(t)})},n.prototype.onPatch=function(t){return X(this.patchSubscribers,t)},n.prototype.emitPatch=function(t,e){if(this.patchSubscribers.length){var n=rt(W({},t,{path:e.path.substr(this.path.length)+"/"+t.path})),r=n[0],o=n[1];this.patchSubscribers.forEach(function(t){return t(r,o)})}this.parent&&this.parent.emitPatch(t,e)},n.prototype.addDisposer=function(t){this.disposers.unshift(t)},n.prototype.addMiddleWare=function(t){return X(this.middlewares,t)},n.prototype.applyPatchLocally=function(t,e){this.assertWritable(),this.type.applyPatchLocally(this,t,e)},n}(Tt);!function(t){t[t.String=1]="String",t[t.Number=2]="Number",t[t.Boolean=4]="Boolean",t[t.Date=8]="Date",t[t.Literal=16]="Literal",t[t.Array=32]="Array",t[t.Map=64]="Map",t[t.Object=128]="Object",t[t.Frozen=256]="Frozen",t[t.Optional=512]="Optional",t[t.Reference=1024]="Reference",t[t.Identifier=2048]="Identifier",t[t.Late=4096]="Late",t[t.Refinement=8192]="Refinement",t[t.Union=16384]="Union",t[t.Null=32768]="Null",t[t.Undefined=65536]="Undefined"}(At||(At={}));var Nt=function(){function t(t){this.isType=!0,this.name=t}return t.prototype.create=function(t,e){return void 0===t&&(t=this.getDefaultSnapshot()),D(this,t),this.instantiate(null,"",e,t).value},t.prototype.isAssignableFrom=function(t){return t===this},t.prototype.validate=function(t,e){return k(t)?n(t)===this||this.isAssignableFrom(n(t))?O():x(e,t):this.isValidSnapshot(t,e)},t.prototype.is=function(t){return 0===this.validate(t,[{path:"",type:this}]).length},t.prototype.reconcile=function(t,e){if(t.snapshot===e)return t;if(k(e)&&F(e)===t)return t;if(t.type===this&&Y(e)&&!k(e)&&(!t.identifierAttribute||t.identifier===e[t.identifierAttribute]))return t.applySnapshot(e),t;var r=t.parent,o=t.subpath;if(t.die(),k(e)&&this.isAssignableFrom(n(e))){var i=F(e);return i.setParent(r,o),i}return this.instantiate(r,o,t._environment,e)},Object.defineProperty(t.prototype,"Type",{get:function(){return $("Factory.Type should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.Type`")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"SnapshotType",{get:function(){return $("Factory.SnapshotType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.SnapshotType`")},enumerable:!0,configurable:!0}),l([e.action],t.prototype,"create",null),t}(),Ct=function(t){function e(e){return t.call(this,e)||this}return p(e,t),e.prototype.getValue=function(t){return t.storedValue},e.prototype.getSnapshot=function(t){return t.storedValue},e.prototype.getDefaultSnapshot=function(){},e.prototype.applySnapshot=function(t,e){$("Immutable types do not support applying snapshots")},e.prototype.applyPatchLocally=function(t,e,n){$("Immutable types do not support applying patches")},e.prototype.getChildren=function(t){return Et},e.prototype.getChildNode=function(t,e){return $("No child '"+e+"' available in type: "+this.name)},e.prototype.getChildType=function(t){return $("No child '"+t+"' available in type: "+this.name)},e.prototype.reconcile=function(t,e){if(t.type===this&&t.storedValue===e)return t;var n=this.instantiate(t.parent,t.subpath,t._environment,e);return t.die(),n},e.prototype.removeChild=function(t,e){return $("No child '"+e+"' available in type: "+this.name)},e}(Nt),Ot=1,xt=null,It=function(){function t(){this.cache=e.observable.map()}return t.prototype.addNodeToCache=function(t){if(t.identifierAttribute){var n=t.identifier;this.cache.has(n)||this.cache.set(n,e.observable.shallowArray());var r=this.cache.get(n);-1!==r.indexOf(t)&&$("Already registered"),r.push(t)}return this},t.prototype.mergeCache=function(t){var e=this;t.identifierCache.cache.values().forEach(function(t){return t.forEach(function(t){e.addNodeToCache(t)})})},t.prototype.notifyDied=function(t){if(t.identifierAttribute){var e=this.cache.get(t.identifier);e&&e.remove(t)}},t.prototype.splitCache=function(e){var n=new t,r=e.path;return this.cache.values().forEach(function(t){for(var e=t.length-1;e>=0;e--)0===t[e].path.indexOf(r)&&(n.addNodeToCache(t[e]),t.splice(e,1))}),n},t.prototype.resolve=function(t,e){var n=this.cache.get(e);if(!n)return null;var r=n.filter(function(e){return t.isAssignableFrom(e.type)});switch(r.length){case 0:return null;case 1:return r[0];default:return $("Cannot resolve a reference to type '"+t.name+"' with id: '"+e+"' unambigously, there are multiple candidates: "+r.map(function(t){return t.path}).join(", "))}},t}(),Dt="See https://github.com/mobxjs/mobx-state-tree/issues/399 for more information. Note that the middleware event types starting with `process` now start with `flow`.",Et=Object.freeze([]),Rt=Object.freeze({}),zt=function(){};(zt=function(t,e){}).ids={};var kt=function(t){function n(n,r){var o=t.call(this,n)||this;return o.shouldAttachNode=!0,o.flags=At.Map,o.createNewInstance=function(){var t=e.observable.shallowMap();return Z(t,"put",lt),Z(t,"toString",ct),t},o.finalizeNewInstance=function(t,n){var r=t.storedValue;e.extras.interceptReads(r,t.unbox),e.intercept(r,function(t){return o.willChange(t)}),t.applySnapshot(n),e.observe(r,o.didChange)},o.subType=r,o}return p(n,t),n.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r,this.createNewInstance,this.finalizeNewInstance)},n.prototype.describe=function(){return"Map<string, "+this.subType.describe()+">"},n.prototype.getChildren=function(t){return t.storedValue.values()},n.prototype.getChildNode=function(t,e){var n=t.storedValue.get(e);return n||$("Not a child "+e),n},n.prototype.willChange=function(t){var e=F(t.object);switch(e.assertWritable(),t.type){case"update":var n=t.newValue;if(n===t.object.get(t.name))return null;D(this.subType,n),t.newValue=this.subType.reconcile(e.getChildNode(t.name),t.newValue),this.verifyIdentifier(t.name,t.newValue);break;case"add":D(this.subType,t.newValue),t.newValue=this.subType.instantiate(e,t.name,void 0,t.newValue),this.verifyIdentifier(t.name,t.newValue)}return t},n.prototype.verifyIdentifier=function(t,e){var n=e.identifier;null!==n&&""+n!=""+t&&$("A map of objects containing an identifier should always store the object under their own identifier. Trying to store key '"+n+"', but expected: '"+t+"'")},n.prototype.getValue=function(t){return t.storedValue},n.prototype.getSnapshot=function(t){var e={};return t.getChildren().forEach(function(t){e[t.subpath]=t.snapshot}),e},n.prototype.didChange=function(t){var e=F(t.object);switch(t.type){case"update":return void e.emitPatch({op:"replace",path:at(t.name),value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e);case"add":return void e.emitPatch({op:"add",path:at(t.name),value:t.newValue.snapshot,oldValue:void 0},e);case"delete":var n=t.oldValue.snapshot;return t.oldValue.die(),void e.emitPatch({op:"remove",path:at(t.name),oldValue:n},e)}},n.prototype.applyPatchLocally=function(t,e,n){var r=t.storedValue;switch(n.op){case"add":case"replace":r.set(e,n.value);break;case"remove":r.delete(e)}},n.prototype.applySnapshot=function(t,e){D(this,e);var n=t.storedValue,r={};n.keys().forEach(function(t){r[t]=!1}),Object.keys(e).forEach(function(t){n.set(t,e[t]),r[t]=!0}),Object.keys(r).forEach(function(t){!1===r[t]&&n.delete(t)})},n.prototype.getChildType=function(t){return this.subType},n.prototype.isValidSnapshot=function(t,e){var n=this;return B(t)?I(Object.keys(t).map(function(r){return n.subType.validate(t[r],C(e,r,n.subType))})):x(e,t,"Value is not a plain object")},n.prototype.getDefaultSnapshot=function(){return{}},n.prototype.removeChild=function(t,e){t.storedValue.delete(e)},l([e.action],n.prototype,"applySnapshot",null),n}(Nt),Ft=function(t){function n(n,r){var o=t.call(this,n)||this;return o.shouldAttachNode=!0,o.flags=At.Array,o.createNewInstance=function(){var t=e.observable.shallowArray();return Z(t,"toString",ht),t},o.finalizeNewInstance=function(t,n){var r=t.storedValue;e.extras.getAdministration(r).dehancer=t.unbox,e.intercept(r,function(t){return o.willChange(t)}),t.applySnapshot(n),e.observe(r,o.didChange)},o.subType=r,o}return p(n,t),n.prototype.describe=function(){return this.subType.describe()+"[]"},n.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r,this.createNewInstance,this.finalizeNewInstance)},n.prototype.getChildren=function(t){return t.storedValue.peek()},n.prototype.getChildNode=function(t,e){var n=parseInt(e,10);return n<t.storedValue.length?t.storedValue[n]:$("Not a child: "+e)},n.prototype.willChange=function(t){var e=F(t.object);e.assertWritable();var n=e.getChildren();switch(t.type){case"update":if(t.newValue===t.object[t.index])return null;t.newValue=ft(e,this.subType,[n[t.index]],[t.newValue],[t.index])[0];break;case"splice":var r=t.index,o=t.removedCount,i=t.added;t.added=ft(e,this.subType,n.slice(r,r+o),i,i.map(function(t,e){return r+e}));for(var a=r+o;a<n.length;a++)n[a].setParent(e,""+(a+i.length-o))}return t},n.prototype.getValue=function(t){return t.storedValue},n.prototype.getSnapshot=function(t){return t.getChildren().map(function(t){return t.snapshot})},n.prototype.didChange=function(t){var e=F(t.object);switch(t.type){case"update":return void e.emitPatch({op:"replace",path:""+t.index,value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e);case"splice":for(n=t.removedCount-1;n>=0;n--)e.emitPatch({op:"remove",path:""+(t.index+n),oldValue:t.removed[n].snapshot},e);for(var n=0;n<t.addedCount;n++)e.emitPatch({op:"add",path:""+(t.index+n),value:e.getChildNode(""+(t.index+n)).snapshot,oldValue:void 0},e);return}},n.prototype.applyPatchLocally=function(t,e,n){var r=t.storedValue,o="-"===e?r.length:parseInt(e);switch(n.op){case"replace":r[o]=n.value;break;case"add":r.splice(o,0,n.value);break;case"remove":r.splice(o,1)}},n.prototype.applySnapshot=function(t,e){D(this,e),t.storedValue.replace(e)},n.prototype.getChildType=function(t){return this.subType},n.prototype.isValidSnapshot=function(t,e){var n=this;return H(t)?I(t.map(function(t,r){return n.subType.validate(t,C(e,""+r,n.subType))})):x(e,t,"Value is not an array")},n.prototype.getDefaultSnapshot=function(){return[]},n.prototype.removeChild=function(t,e){t.storedValue.splice(parseInt(e,10),1)},l([e.action],n.prototype,"applySnapshot",null),n}(Nt),Mt={afterCreate:"afterCreate",afterAttach:"afterAttach",postProcessSnapshot:"postProcessSnapshot",beforeDetach:"beforeDetach",beforeDestroy:"beforeDestroy"},$t={name:"AnonymousModel",properties:{},initializers:Et},Lt=function(t){function n(n){var r=t.call(this,n.name||$t.name)||this;r.flags=At.Object,r.shouldAttachNode=!0,r.createNewInstance=function(){var t=e.observable.shallowObject(Rt);return Z(t,"toString",vt),t},r.finalizeNewInstance=function(t,n){var o=t.storedValue;r.forAllProps(function(r,i){e.extendShallowObservable(o,(a={},a[r]=e.observable.ref(i.instantiate(t,r,t._environment,n[r])),a)),e.extras.interceptReads(o,r,t.unbox);var a}),r.initializers.reduce(function(t,e){return e(t)},o),e.intercept(o,function(t){return r.willChange(t)}),e.observe(o,r.didChange)},r.didChange=function(t){if(r.properties[t.name]){var e=F(t.object);e.emitPatch({op:"replace",path:at(t.name),value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e)}};var o=n.name||$t.name;return/^\w[\w\d_]*$/.test(o)||$("Typename should be a valid identifier: "+o),Object.assign(r,$t,n),r.properties=bt(r.properties),r.propertiesNames=Object.keys(r.properties),Object.freeze(r.properties),r}return p(n,t),n.prototype.cloneAndEnhance=function(t){return new n({name:t.name||this.name,properties:Object.assign({},this.properties,t.properties),initializers:this.initializers.concat(t.initializers||[]),preProcessor:t.preProcessor||this.preProcessor})},n.prototype.actions=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateActions(n,t(n)),n}]})},n.prototype.instantiateActions=function(t,e){B(e)||$("actions initializer should return a plain object containing actions"),Object.keys(e).forEach(function(n){if("preProcessSnapshot"===n)return $("Cannot define action 'preProcessSnapshot', it should be defined using 'type.preProcessSnapshot(fn)' instead");var r=e[n],o=t[n];if(n in Mt&&o){var i=r;r=n===Mt.postProcessSnapshot?function(t){return i(o(t))}:function(){o.apply(null,arguments),i.apply(null,arguments)}}Z(t,n,V(t,n,r))})},n.prototype.named=function(t){return this.cloneAndEnhance({name:t})},n.prototype.props=function(t){return this.cloneAndEnhance({properties:t})},n.prototype.volatile=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateVolatileState(n,t(n)),n}]})},n.prototype.instantiateVolatileState=function(t,n){B(n)||$("state initializer should return a plain object containing views"),e.extendShallowObservable(t,n)},n.prototype.extend=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){var r=t(n),o=r.actions,i=r.views,a=r.state,s=c(r,["actions","views","state"]);for(var u in s)$("The `extend` function should return an object with a subset of the fields 'actions', 'views' and 'state'. Found invalid key '"+u+"'");return a&&e.instantiateVolatileState(n,a),i&&e.instantiateViews(n,i),o&&e.instantiateActions(n,o),n}]})},n.prototype.views=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateViews(n,t(n)),n}]})},n.prototype.instantiateViews=function(t,n){B(n)||$("views initializer should return a plain object containing views"),Object.keys(n).forEach(function(r){var o=Object.getOwnPropertyDescriptor(n,r),i=o.value;if("get"in o)if(e.isComputed(t.$mobx.values[r]))t.$mobx.values[r]=e.computed(o.get,{name:r,setter:o.set,context:t});else{var a={};Object.defineProperty(a,r,{get:o.get,set:o.set,enumerable:!0}),e.extendShallowObservable(t,a)}else"function"==typeof i?Z(t,r,i):$("A view member should either be a function or getter based property")})},n.prototype.preProcessSnapshot=function(t){var e=this.preProcessor;return e?this.cloneAndEnhance({preProcessor:function(n){return e(t(n))}}):this.cloneAndEnhance({preProcessor:t})},n.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,this.applySnapshotPreProcessor(r),this.createNewInstance,this.finalizeNewInstance)},n.prototype.willChange=function(t){var e=F(t.object);e.assertWritable();var n=this.properties[t.name];return n&&(D(n,t.newValue),t.newValue=n.reconcile(e.getChildNode(t.name),t.newValue)),t},n.prototype.getChildren=function(t){var e=this,n=[];return this.forAllProps(function(r,o){n.push(e.getChildNode(t,r))}),n},n.prototype.getChildNode=function(t,e){if(!(e in this.properties))return $("Not a value property: "+e);var n=t.storedValue.$mobx.values[e].value;return n||$("Node not available for property "+e)},n.prototype.getValue=function(t){return t.storedValue},n.prototype.getSnapshot=function(t){var n=this,r={};return this.forAllProps(function(o,i){e.extras.getAtom(t.storedValue,o).reportObserved(),r[o]=n.getChildNode(t,o).snapshot}),"function"==typeof t.storedValue.postProcessSnapshot?t.storedValue.postProcessSnapshot.call(null,r):r},n.prototype.applyPatchLocally=function(t,e,n){"replace"!==n.op&&"add"!==n.op&&$("object does not support operation "+n.op),t.storedValue[e]=n.value},n.prototype.applySnapshot=function(t,e){var n=this.applySnapshotPreProcessor(e);D(this,n),this.forAllProps(function(e,r){t.storedValue[e]=n[e]})},n.prototype.applySnapshotPreProcessor=function(t){return this.preProcessor?this.preProcessor.call(null,t):t},n.prototype.getChildType=function(t){return this.properties[t]},n.prototype.isValidSnapshot=function(t,e){var n=this,r=this.applySnapshotPreProcessor(t);return B(r)?I(this.propertiesNames.map(function(t){return n.properties[t].validate(r[t],C(e,t,n.properties[t]))})):x(e,r,"Value is not a plain object")},n.prototype.forAllProps=function(t){var e=this;this.propertiesNames.forEach(function(n){return t(n,e.properties[n])})},n.prototype.describe=function(){var t=this;return"{ "+this.propertiesNames.map(function(e){return e+": "+t.properties[e].describe()}).join("; ")+" }"},n.prototype.getDefaultSnapshot=function(){return{}},n.prototype.removeChild=function(t,e){t.storedValue[e]=null},l([e.action],n.prototype,"applySnapshot",null),n}(Nt),Ut=function(t){function e(e,n,r,o){void 0===o&&(o=L);var i=t.call(this,e)||this;return i.shouldAttachNode=!1,i.flags=n,i.checker=r,i.initializer=o,i}return p(e,t),e.prototype.describe=function(){return this.name},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r,this.initializer)},e.prototype.isValidSnapshot=function(t,e){return q(t)&&this.checker(t)?O():x(e,t,"Value is not a "+("Date"===this.name?"Date or a unix milliseconds timestamp":this.name))},e}(Ct),Ht=new Ut("string",At.String,function(t){return"string"==typeof t}),Jt=new Ut("number",At.Number,function(t){return"number"==typeof t}),Wt=new Ut("boolean",At.Boolean,function(t){return"boolean"==typeof t}),Bt=new Ut("null",At.Null,function(t){return null===t}),Yt=new Ut("undefined",At.Undefined,function(t){return void 0===t}),qt=new Ut("Date",At.Date,function(t){return"number"==typeof t||t instanceof Date},function(t){return t instanceof Date?t:new Date(t)});qt.getSnapshot=function(t){return t.storedValue.getTime()};var Gt=function(t){function e(e){var n=t.call(this,JSON.stringify(e))||this;return n.shouldAttachNode=!1,n.flags=At.Literal,n.value=e,n}return p(e,t),e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r)},e.prototype.describe=function(){return JSON.stringify(this.value)},e.prototype.isValidSnapshot=function(t,e){return q(t)&&t===this.value?O():x(e,t,"Value is not a literal "+JSON.stringify(this.value))},e}(Ct),Zt=function(t){function e(e,n,r,o){var i=t.call(this,e)||this;return i.type=n,i.predicate=r,i.message=o,i}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.type.flags|At.Refinement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.type.shouldAttachNode},enumerable:!0,configurable:!0}),e.prototype.describe=function(){return this.name},e.prototype.instantiate=function(t,e,n,r){return this.type.instantiate(t,e,n,r)},e.prototype.isAssignableFrom=function(t){return this.type.isAssignableFrom(t)},e.prototype.isValidSnapshot=function(t,e){var n=this.type.validate(t,e);if(n.length>0)return n;var r=k(t)?F(t).snapshot:t;return this.predicate(r)?O():x(e,t,this.message(t))},e}(Ct),Kt=function(t){function e(e,n,r){var o=t.call(this,e)||this;return o.dispatcher=null,o.dispatcher=r,o.types=n,o}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){var t=At.Union;return this.types.forEach(function(e){t|=e.flags}),t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.types.some(function(t){return t.shouldAttachNode})},enumerable:!0,configurable:!0}),e.prototype.isAssignableFrom=function(t){return this.types.some(function(e){return e.isAssignableFrom(t)})},e.prototype.describe=function(){return"("+this.types.map(function(t){return t.describe()}).join(" | ")+")"},e.prototype.instantiate=function(t,e,n,r){return this.determineType(r).instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.determineType(e).reconcile(t,e)},e.prototype.determineType=function(t){if(null!==this.dispatcher)return this.dispatcher(t);var e=this.types.filter(function(e){return e.is(t)});return e.length>1?$("Ambiguos snapshot "+JSON.stringify(t)+" for union "+this.name+". Please provide a dispatch in the union declaration."):e[0]},e.prototype.isValidSnapshot=function(t,e){if(null!==this.dispatcher)return this.dispatcher(t).validate(t,e);var n=this.types.map(function(n){return n.validate(t,e)}),r=n.filter(function(t){return 0===t.length});return r.length>1?x(e,t,"Multiple types are applicable for the union (hint: provide a dispatch function)"):0===r.length?x(e,t,"No type is applicable for the union").concat(I(n)):O()},e}(Ct),Qt=function(t){function e(e,n){var r=t.call(this,e.name)||this;return r.type=e,r.defaultValue=n,r}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.type.flags|At.Optional},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.type.shouldAttachNode},enumerable:!0,configurable:!0}),e.prototype.describe=function(){return this.type.describe()+"?"},e.prototype.instantiate=function(t,e,n,r){if(void 0===r){var o=this.getDefaultValue(),i=k(o)?F(o).snapshot:o;return this.type.instantiate(t,e,n,i)}return this.type.instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.type.reconcile(t,this.type.is(e)?e:this.getDefaultValue())},e.prototype.getDefaultValue=function(){var t="function"==typeof this.defaultValue?this.defaultValue():this.defaultValue;return"function"==typeof this.defaultValue&&D(this,t),t},e.prototype.isValidSnapshot=function(t,e){return void 0===t?O():this.type.validate(t,e)},e.prototype.isAssignableFrom=function(t){return this.type.isAssignableFrom(t)},e}(Ct),Xt=Vt(Bt,null),te=function(t){function e(e,n){var r=t.call(this,e)||this;return r._subType=null,r.definition=n,r}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.subType.flags|At.Late},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.subType.shouldAttachNode},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"subType",{get:function(){return null===this._subType&&(this._subType=this.definition()),this._subType},enumerable:!0,configurable:!0}),e.prototype.instantiate=function(t,e,n,r){return this.subType.instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.subType.reconcile(t,e)},e.prototype.describe=function(){return this.subType.name},e.prototype.isValidSnapshot=function(t,e){return this.subType.validate(t,e)},e.prototype.isAssignableFrom=function(t){return this.subType.isAssignableFrom(t)},e}(Ct),ee=new(function(t){function e(){var e=t.call(this,"frozen")||this;return e.shouldAttachNode=!1,e.flags=At.Frozen,e}return p(e,t),e.prototype.describe=function(){return"<any immutable value>"},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r)},e.prototype.isValidSnapshot=function(t,e){return G(t)?O():x(e,t,"Value is not serializable and cannot be frozen")},e}(Ct)),ne=function(){return function(t,e){if(this.mode=t,this.value=e,"object"===t){if(!k(e))return $("Can only store references to tree nodes, got: '"+e+"'");if(!F(e).identifierAttribute)return $("Can only store references with a defined identifier attribute.")}}}(),re=function(t){function e(e){var n=t.call(this,"reference("+e.name+")")||this;return n.targetType=e,n.flags=At.Reference,n}return p(e,t),e.prototype.describe=function(){return this.name},e.prototype.isAssignableFrom=function(t){return this.targetType.isAssignableFrom(t)},e.prototype.isValidSnapshot=function(t,e){return"string"==typeof t||"number"==typeof t?O():x(e,t,"Value is not a valid identifier, which is a string or a number")},e}(Ct),oe=function(t){function e(e){var n=t.call(this,e)||this;return n.shouldAttachNode=!0,n}return p(e,t),e.prototype.getValue=function(t){if(t.isAlive){var e=t.storedValue;if("object"===e.mode)return e.value;var n=t.root.identifierCache.resolve(this.targetType,e.value);return n?n.value:$("Failed to resolve reference of type "+this.targetType.name+": '"+e.value+"' (in: "+t.path+")")}},e.prototype.getSnapshot=function(t){var e=t.storedValue;switch(e.mode){case"identifier":return e.value;case"object":return F(e.value).identifier}},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,new ne(k(r)?"object":"identifier",r))},e.prototype.reconcile=function(t,e){if(t.type===this){var n=k(e)?"object":"identifier",r=t.storedValue;if(n===r.mode&&r.value===e)return t}var o=this.instantiate(t.parent,t.subpath,t._environment,e);return t.die(),o},e}(re),ie=function(t){function e(e,n){var r=t.call(this,e)||this;return r.options=n,r.shouldAttachNode=!1,r}return p(e,t),e.prototype.getValue=function(t){if(t.isAlive)return this.options.get(t.storedValue,t.parent?t.parent.storedValue:null)},e.prototype.getSnapshot=function(t){return t.storedValue},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,k(r)?this.options.set(r,t?t.storedValue:null):r)},e.prototype.reconcile=function(t,e){var n=k(e)?this.options.set(e,t?t.storedValue:null):e;if(t.type===this&&t.storedValue===n)return t;var r=this.instantiate(t.parent,t.subpath,t._environment,n);return t.die(),r},e}(re),ae=function(t){function e(e){var n=t.call(this,"identifier("+e.name+")")||this;return n.identifierType=e,n.shouldAttachNode=!1,n.flags=At.Identifier,n}return p(e,t),e.prototype.instantiate=function(t,e,n,r){return t&&k(t.storedValue)?(t.identifierAttribute&&$("Cannot define property '"+e+"' as object identifier, property '"+t.identifierAttribute+"' is already defined as identifier property"),t.identifierAttribute=e,R(this,t,e,n,r)):$("Identifier types can only be instantiated as direct child of a model type")},e.prototype.reconcile=function(t,e){return t.storedValue!==e?$("Tried to change identifier from '"+t.storedValue+"' to '"+e+"'. Changing identifiers is not allowed."):t},e.prototype.describe=function(){return"identifier("+this.identifierType.describe()+")"},e.prototype.isValidSnapshot=function(t,e){return void 0===t||null===t||"string"==typeof t||"number"==typeof t?this.identifierType.validate(t,e):x(e,t,"Value is not a valid identifier, which is a string or a number")},e}(Ct),se={enumeration:function(t,e){var n="string"==typeof t?e:t,r=Pt.apply(void 0,n.map(function(t){return wt(""+t)}));return"string"==typeof t&&(r.name=t),r},model:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():"AnonymousModel",r=t.shift()||{};return new Lt({name:n,properties:r})},compose:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():"AnonymousModel";return t.reduce(function(t,e){return t.cloneAndEnhance({name:t.name+"_"+e.name,properties:e.properties,initializers:e.initializers})}).named(n)},reference:function(t,e){return e?new ie(t,e):new oe(t)},union:Pt,optional:Vt,literal:wt,maybe:function(t){return Pt(Xt,t)},refinement:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():h(t[0])?t[0].name:null,r=t[0],o=t[1],i=t[2]?t[2]:function(t){return"Value does not respect the refinement predicate"};return new Zt(n,r,o,i)},string:Ht,boolean:Wt,number:Jt,Date:qt,map:function(t){return new kt("map<string, "+t.name+">",t)},array:function(t){return new Ft(t.name+"[]",t)},frozen:ee,identifier:function(t){return void 0===t&&(t=Ht),new ae(t)},late:function(t,e){var n="string"==typeof t?t:"late("+t.toString()+")";return new te(n,"string"==typeof t?e:t)},undefined:Yt,null:Bt};t.types=se,t.typecheck=E,t.escapeJsonPath=at,t.unescapeJsonPath=st,t.decorate=function(t,e){return e.$mst_middleware?e.$mst_middleware.push(t):e.$mst_middleware=[t],e},t.addMiddleware=A,t.process=function(t){return zt("process","`process()` has been renamed to `flow()`. "+Dt),et(t)},t.isStateTreeNode=k,t.flow=et,t.applyAction=v,t.onAction=m,t.recordActions=function(t){var e={actions:[],stop:function(){return n()},replay:function(t){v(t,e.actions)}},n=m(t,e.actions.push.bind(e.actions));return e},t.createActionTrackingMiddleware=function(t){var e=new Map;return function(n,r){switch(n.type){case"action":if(t.filter&&!0!==t.filter(n))return r(n);var o=t.onStart(n);t.onResume(n,o),e.set(n.id,{call:n,context:o,async:!1});try{var i=r(n);return t.onSuspend(n,o),!1===e.get(n.id).async&&t.onSuccess(n,o,i),i}catch(e){throw t.onFail(n,o,e),e}case"flow_spawn":return(a=e.get(n.rootId)).async=!0,r(n);case"flow_resume":case"flow_resume_error":a=e.get(n.rootId),t.onResume(n,a.context);try{return r(n)}finally{t.onSuspend(n,a.context)}case"flow_throw":return a=e.get(n.rootId),e.delete(n.id),t.onFail(n,a.context,n.args[0]),r(n);case"flow_return":var a=e.get(n.rootId);return e.delete(n.id),t.onSuccess(n,a.context,n.args[0]),r(n)}}},t.getType=n,t.getChildType=function(t,e){return F(t).getChildType(e)},t.onPatch=r,t.onSnapshot=function(t,e){return F(t).onSnapshot(e)},t.applyPatch=o,t.recordPatches=function(t){function e(){n||(n=r(t,function(t,e){i.rawPatches.push([t,e])}))}var n=null,i={rawPatches:[],get patches(){return this.rawPatches.map(function(t){return t[0]})},get inversePatches(){return this.rawPatches.map(function(t){return t[0],t[1]})},stop:function(){n&&n(),n=null},resume:e,replay:function(e){o(e||t,i.patches)},undo:function(e){o(e||t,i.inversePatches.slice().reverse())}};return e(),i},t.protect=function(t){var e=F(t);e.isRoot||$("`protect` can only be invoked on root nodes"),e.isProtectionEnabled=!0},t.unprotect=function(t){var e=F(t);e.isRoot||$("`unprotect` can only be invoked on root nodes"),e.isProtectionEnabled=!1},t.isProtected=function(t){return F(t).isProtected},t.applySnapshot=i,t.getSnapshot=function(t){return F(t).snapshot},t.hasParent=function(t,e){void 0===e&&(e=1);for(var n=F(t).parent;n;){if(0==--e)return!0;n=n.parent}return!1},t.getParent=function(t,e){void 0===e&&(e=1);for(var n=e,r=F(t).parent;r;){if(0==--n)return r.storedValue;r=r.parent}return $("Failed to find the parent of "+F(t)+" at depth "+e)},t.getRoot=a,t.getPath=function(t){return F(t).path},t.getPathParts=function(t){return pt(F(t).path)},t.isRoot=function(t){return F(t).isRoot},t.resolvePath=function(t,e){var n=F(t).resolve(e);return n?n.value:void 0},t.resolveIdentifier=function(t,e,n){var r=F(e).root.identifierCache.resolve(t,""+n);return r?r.value:void 0},t.tryResolve=s,t.getRelativePath=function(t,e){return F(t).getRelativePathTo(F(e))},t.clone=function(t,e){void 0===e&&(e=!0);var n=F(t);return n.type.create(n.snapshot,!0===e?n.root._environment:!1===e?void 0:e)},t.detach=function(t){return F(t).detach(),t},t.destroy=function(t){var e=F(t);e.isRoot?e.die():e.parent.removeChild(e.subpath)},t.isAlive=function(t){return F(t).isAlive},t.addDisposer=function(t,e){F(t).addDisposer(e)},t.getEnv=function(t){var e=F(t).root._environment;return e||Rt},t.walk=u,Object.defineProperty(t,"__esModule",{value:!0})});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("mobx")):"function"==typeof define&&define.amd?define(["exports","mobx"],e):e(t.mobxStateTree=t.mobxStateTree||{},t.mobx)}(this,function(t,e){"use strict";function n(t){return F(t).type}function r(t,e){return F(t).onPatch(e)}function i(t,e){F(t).applyPatches(W(e))}function o(t,e){return F(t).applySnapshot(e)}function a(t){return F(t).root.storedValue}function s(t,e){var n=$(F(t),e,!1);if(void 0!==n)return n?n.value:void 0}function u(t,e){var n=F(t);n.getChildren().forEach(function(t){k(t.storedValue)&&u(t.storedValue,e)}),e(n.storedValue)}function p(t,e){function n(){this.constructor=t}Ct(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function c(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&(n[r[i]]=t[r[i]]);return n}function l(t,e,n,r){var i,o=arguments.length,a=o<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var s=t.length-1;s>=0;s--)(i=t[s])&&(a=(o<3?i(a):o>3?i(e,n,a):i(e,n))||a);return o>3&&a&&Object.defineProperty(e,n,a),a}function h(t){return"object"==typeof t&&t&&!0===t.isType}function f(t,e,r,i){if(i instanceof Date)return{$MST_DATE:i.getTime()};if(K(i))return i;if(k(i))return y("[MSTNode: "+n(i).name+"]");if("function"==typeof i)return y("[function]");if("object"==typeof i&&!Y(i)&&!G(i))return y("[object "+(i&&i.constructor&&i.constructor.name||"Complex Object")+"]");try{return JSON.stringify(i),i}catch(t){return y(""+t)}}function d(t,e){return e&&"object"==typeof e&&"$MST_DATE"in e?new Date(e.$MST_DATE):e}function y(t){return{$MST_UNSERIALIZABLE:!0,type:t}}function b(t,n){e.runInAction(function(){W(n).forEach(function(e){return v(t,e)})})}function v(t,e){var n=s(t,e.path||"");if(!n)return H("Invalid action path: "+(e.path||""));var r=F(n);return"@APPLY_PATCHES"===e.name?i.call(null,n,e.args[0]):"@APPLY_SNAPSHOT"===e.name?o.call(null,n,e.args[0]):("function"!=typeof n[e.name]&&H("Action '"+e.name+"' does not exist in '"+r.path+"'"),n[e.name].apply(n,e.args?e.args.map(function(t){return d(r,t)}):[]))}function m(t,e,n){function r(n){if("action"===n.type&&n.id===n.rootId){var r=F(n.context);e({name:n.name,path:M(F(t),r),args:n.args.map(function(t,e){return f(r,n.name,e,t)})})}}return void 0===n&&(n=!1),P(t,n?function(t,e){var n=e(t);return r(t),n}:function(t,e){return r(t),e(t)})}function g(){return Et++}function w(t,e){var n=F(t.context),r=n._isRunningAction,i=Rt;n.assertAlive(),n._isRunningAction=!0,Rt=t;try{return j(n,t,e)}finally{Rt=i,n._isRunningAction=r}}function A(){return Rt||H("Not running an action!")}function V(t,n,r){var i=e.action(n,r);return i.$mst_middleware=r.$mst_middleware,function(){var e=g();return w({type:"action",name:n,id:e,args:rt(arguments),context:t,tree:a(t),rootId:Rt?Rt.rootId:e,parentId:Rt?Rt.id:0},i)}}function P(t,e){return F(t).addMiddleWare(e)}function S(t,e,n){for(var r=n.$mst_middleware||Lt,i=t;i;)i.middlewares&&(r=r.concat(i.middlewares)),i=i.parent;return r}function j(t,e,n){function r(t){var a=i[o++];return a?a(t,r):n.apply(null,e.args)}var i=S(t,e,n);if(!i.length)return n.apply(null,e.args);var o=0;return r(e)}function T(t){try{return JSON.stringify(t)}catch(t){return"<Unserializable: "+t+">"}}function C(t){return"function"==typeof t?"<function"+(t.name?" "+t.name:"")+">":k(t)?"<"+t+">":"`"+T(t)+"`"}function N(t){var e=t.value,n=t.context[t.context.length-1].type,r=t.context.map(function(t){return t.path}).filter(function(t){return t.length>0}).join("/"),i=r.length>0?'at path "/'+r+'" ':"",o=k(e)?"value of type "+F(e).type.name+":":K(e)?"value":"snapshot",a=n&&k(e)&&n.is(F(e).snapshot);return""+i+o+" "+C(e)+" is not assignable "+(n?"to type: `"+n.name+"`":"")+(t.message?" ("+t.message+")":"")+(n?Vt(n)?".":", expected an instance of `"+n.name+"` or a snapshot like `"+n.describe()+"` instead."+(a?" (Note that a snapshot of the provided value is compatible with the targeted type)":""):".")}function _(t,e,n){return t.concat([{path:e,type:n}])}function O(){return Lt}function I(t,e,n){return[{context:t,value:e,message:n}]}function x(t){return t.reduce(function(t,e){return t.concat(e)},[])}function D(t,e){}function E(t,e){var n=t.validate(e,[{path:"",type:t}]);n.length>0&&H("Error while converting "+C(e)+" to `"+t.name+"`:\n"+n.map(N).join("\n"))}function R(t,e,n,r,i,o,a){if(void 0===o&&(o=J),void 0===a&&(a=Z),k(i)){var s=i.$treenode;return s.isRoot||H("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+(e?e.path:"")+"/"+n+"', but it lives already at '"+s.path+"'"),s.setParent(e,n),s}var u=o(i);if(t.shouldAttachNode){var p=new Ot(t,e,n,r,i,u,t.shouldAttachNode,a);return p.finalizeCreation(),p}return new Nt(t,e,n,r,i,u,t.shouldAttachNode,a)}function z(t){return t instanceof Nt||t instanceof Ot}function k(t){return!(!t||!t.$treenode)}function F(t){return k(t)?t.$treenode:H("Value "+t+" is no MST Node")}function L(){return F(this).snapshot}function M(t,e){t.root!==e.root&&H("Cannot calculate relative path: objects '"+t+"' and '"+e+"' are not part of the same object tree");for(var n=ht(t.path),r=ht(e.path),i=0;i<n.length&&n[i]===r[i];i++);return n.slice(i).map(kt).join("/")+lt(r.slice(i))}function $(t,e,n){return void 0===n&&(n=!0),U(t,ht(e),n)}function U(t,e,n){void 0===n&&(n=!0);for(var r=t,i=0;i<e.length;i++){if(""===e[i])r=r.root;else if(".."===e[i])r=r.parent;else{if("."===e[i]||""===e[i])continue;if(r){if(!(r instanceof Ot))return H("Illegal state");r=r.getChildNode(e[i]);continue}}if(!r)return n?H("Could not resolve '"+e[i]+"' in '"+lt(e.slice(0,i-1))+"', path of the patch does not resolve"):void 0}return r}function H(t){throw void 0===t&&(t="Illegal state"),new Error("[mobx-state-tree] "+t)}function J(t){return t}function Z(){}function G(t){return!(!Array.isArray(t)&&!e.isObservableArray(t))}function W(t){return t?G(t)?t:[t]:Lt}function B(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];for(var r=0;r<e.length;r++){var i=e[r];for(var o in i)t[o]=i[o]}return t}function Y(t){if(null===t||"object"!=typeof t)return!1;var e=Object.getPrototypeOf(t);return e===Object.prototype||null===e}function q(t){return!(null===t||"object"!=typeof t||t instanceof Date||t instanceof RegExp)}function K(t){return null===t||void 0===t||("string"==typeof t||"number"==typeof t||"boolean"==typeof t||t instanceof Date)}function Q(t){return"function"!=typeof t}function X(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!1,configurable:!0,value:n})}function tt(t,e,n){Object.defineProperty(t,e,{enumerable:!0,writable:!1,configurable:!0,value:n})}function et(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function nt(t,e){return t.push(e),function(){et(t,e)}}function rt(t){for(var e=new Array(t.length),n=0;n<t.length;n++)e[n]=t[n];return e}function it(t){return ot(t.name,t)}function ot(t,e){var n=function(){function r(e,r,a){e.$mst_middleware=n.$mst_middleware,w({name:t,type:r,id:i,args:[a],tree:o.tree,context:o.context,parentId:o.id,rootId:o.rootId},e)}var i=g(),o=A(),a=arguments;return new Promise(function(s,u){function p(t){var e;try{r(function(t){e=h.next(t)},"flow_resume",t)}catch(t){return void setImmediate(function(){r(function(e){u(t)},"flow_throw",t)})}l(e)}function c(t){var e;try{r(function(t){e=h.throw(t)},"flow_resume_error",t)}catch(t){return void setImmediate(function(){r(function(e){u(t)},"flow_throw",t)})}l(e)}function l(t){if(!t.done)return t.value&&"function"==typeof t.value.then||H("Only promises can be yielded to `async`, got: "+t),t.value.then(p,c);setImmediate(function(){r(function(t){s(t)},"flow_return",t.value)})}var h,f=function(){h=e.apply(null,arguments),p(void 0)};f.$mst_middleware=n.$mst_middleware,w({name:t,type:"flow_spawn",id:i,args:rt(a),tree:o.tree,context:o.context,parentId:o.id,rootId:o.rootId},f)})};return n}function at(t){return"oldValue"in t||H("Patches without `oldValue` field cannot be inversed"),[st(t),ut(t)]}function st(t){switch(t.op){case"add":return{op:"add",path:t.path,value:t.value};case"remove":return{op:"remove",path:t.path};case"replace":return{op:"replace",path:t.path,value:t.value}}}function ut(t){switch(t.op){case"add":return{op:"remove",path:t.path};case"remove":return{op:"add",path:t.path,value:t.oldValue};case"replace":return{op:"replace",path:t.path,value:t.oldValue}}}function pt(t){return t.replace(/~/g,"~1").replace(/\//g,"~0")}function ct(t){return t.replace(/~0/g,"/").replace(/~1/g,"~")}function lt(t){return 0===t.length?"":"/"+t.map(pt).join("/")}function ht(t){var e=t.split("/").map(ct);return""===e[0]?e.slice(1):e}function ft(){return F(this)+"("+this.size+" items)"}function dt(t){t||H("Map.put cannot be used to set empty values");var e;if(k(t))e=F(t);else{if(!q(t))return H("Map.put can only be used to store complex values");e=F(F(this).type.subType.create(t))}return e.identifierAttribute||H("Map.put can only be used to store complex values that have an identifier type attribute"),this.set(e.identifier,e.value),this}function yt(){return F(this)+"("+this.length+" items)"}function bt(t,e,n,r,i){for(var o,a,s=!1,u=void 0,p=0;s=p<=r.length-1,o=n[p],a=s?r[p]:void 0,z(a)&&(a=a.storedValue),o||s;p++)if(s)if(o)if(mt(o,a))n[p]=vt(e,t,""+i[p],a,o);else{u=void 0;for(var c=p;c<n.length;c++)if(mt(n[c],a)){u=n.splice(c,1)[0];break}n.splice(p,0,vt(e,t,""+i[p],a,u))}else k(a)&&F(a).parent===t&&H("Cannot add an object to a state tree if it is already part of the same or another state tree. Tried to assign an object to '"+t.path+"/"+i[p]+"', but it lives already at '"+F(a).path+"'"),n.splice(p,0,vt(e,t,""+i[p],a));else o.die(),n.splice(p,1),p--;return n}function vt(t,e,n,r,i){if(D(t,r),k(r)){var o=F(r);if(o.assertAlive(),null!==o.parent&&o.parent===e)return o.setParent(e,n),i&&i!==o&&i.die(),o}if(i){var a=t.reconcile(i,r);return a.setParent(e,n),a}return t.instantiate(e,n,e._environment,r)}function mt(t,e){return k(e)?F(e)===t:!(!q(e)||t.snapshot!==e)||!!(t instanceof Ot&&null!==t.identifier&&t.identifierAttribute&&Y(e)&&e[t.identifierAttribute]===t.identifier)}function gt(){return F(this).toString()}function wt(t){return Object.keys(t).reduce(function(t,e){if(e in Jt)return H("Hook '"+e+"' was defined as property. Hooks should be defined as part of the actions");var n=Object.getOwnPropertyDescriptor(t,e);"get"in n&&H("Getters are not supported as properties. Please use views instead");var r=n.value;if(null===r)H("The default value of an attribute cannot be null or undefined as the type cannot be inferred. Did you mean `types.maybe(someType)`?");else{if(K(r))return Object.assign({},t,(i={},i[e]=jt(At(r),r),i));if(h(r))return t;H("function"==typeof r?"Functions are not supported as properties, use views instead":"object"==typeof r?"In property '"+e+"': base model's should not contain complex values: '"+r+"'":"Unexpected value for property '"+e+"'")}var i},t)}function At(t){switch(typeof t){case"string":return Bt;case"number":return Yt;case"boolean":return qt;case"object":if(t instanceof Date)return Xt}return H("Cannot determine primitive type from value "+t)}function Vt(t){return h(t)&&(t.flags&(Tt.String|Tt.Number|Tt.Boolean|Tt.Date))>0}function Pt(t){return new te(t)}function St(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];var r=h(t)?null:t,i=h(t)?e.concat(t):e,o="("+i.map(function(t){return t.name}).join(" | ")+")";return new ne(o,i,r)}function jt(t,e){return new re(t,e)}var Tt,Ct=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},Nt=function(){function t(t,e,n,r,i,o,a,s){void 0===s&&(s=Z),this.subpath="",this._environment=void 0,this._autoUnbox=!0,this.state=It.INITIALIZING,this.type=t,this.storedValue=o,this._parent=e,this.subpath=n,this.storedValue=o,this._environment=r,this.unbox=this.unbox.bind(this),a&&X(this.storedValue,"$treenode",this);var u=!0;try{a&&X(this.storedValue,"toJSON",L),s(this,i),this.state=It.CREATED,u=!1}finally{u&&(this.state=It.DEAD)}}return Object.defineProperty(t.prototype,"path",{get:function(){return this.parent?this.parent.path+"/"+pt(this.subpath):""},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isRoot",{get:function(){return null===this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"root",{get:function(){return this._parent?this._parent.root:H("This scalar node is not part of a tree")},enumerable:!0,configurable:!0}),t.prototype.setParent=function(t,e){void 0===e&&(e=null),this.parent!==t&&H("Cannot change parent of immutable node"),this.subpath!==e&&(this.subpath=e||"")},Object.defineProperty(t.prototype,"value",{get:function(){return this.type.getValue(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"snapshot",{get:function(){return this.type.getSnapshot(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isAlive",{get:function(){return this.state!==It.DEAD},enumerable:!0,configurable:!0}),t.prototype.unbox=function(t){return t&&!0===this._autoUnbox?t.value:t},t.prototype.toString=function(){return this.type.name+"@"+(this.path||"<root>")+(this.isAlive?"":"[dead]")},t.prototype.die=function(){this.state=It.DEAD},l([e.observable],t.prototype,"subpath",void 0),t}(),_t=1,Ot=function(){function t(t,n,r,i,o,a,s,u){void 0===u&&(u=Z);var p=this;this.nodeId=++_t,this.subpath="",this._parent=null,this._isRunningAction=!1,this.isProtectionEnabled=!0,this.identifierAttribute=void 0,this._environment=void 0,this._autoUnbox=!0,this.state=It.INITIALIZING,this.middlewares=Lt,this.type=t,this.storedValue=a,this._parent=n,this.subpath=r,this._environment=i,this.unbox=this.unbox.bind(this),this.preboot(),n||(this.identifierCache=new zt),s&&X(this.storedValue,"$treenode",this);var c=!0;try{s&&X(this.storedValue,"toJSON",L),this._isRunningAction=!0,u(this,o),this._isRunningAction=!1,n?n.root.identifierCache.addNodeToCache(this):this.identifierCache.addNodeToCache(this),this.fireHook("afterCreate"),this.state=It.CREATED,c=!1}finally{c&&(this.state=It.DEAD)}var l=e.reaction(function(){return p.snapshot},function(t){p.emitSnapshot(t)});l.onError(function(t){throw t}),this.addDisposer(l)}return Object.defineProperty(t.prototype,"path",{get:function(){return this.parent?this.parent.path+"/"+pt(this.subpath):""},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isRoot",{get:function(){return null===this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"root",{get:function(){for(var t,e=this;t=e.parent;)e=t;return e},enumerable:!0,configurable:!0}),t.prototype.setParent=function(t,e){void 0===e&&(e=null),this.parent===t&&this.subpath===e||(t&&(this._parent&&t!==this._parent&&H("A node cannot exists twice in the state tree. Failed to add "+this+" to path '"+t.path+"/"+e+"'."),this._parent||t.root!==this||H("A state tree is not allowed to contain itself. Cannot assign "+this+" to path '"+t.path+"/"+e+"'"),!this._parent&&this.root._environment&&this.root._environment!==t.root._environment&&H("A state tree cannot be made part of another state tree as long as their environments are different.")),this.parent&&!t?this.die():(this.subpath=e||"",t&&t!==this._parent&&(t.root.identifierCache.mergeCache(this),this._parent=t,this.fireHook("afterAttach"))))},t.prototype.fireHook=function(t){var e=this.storedValue&&"object"==typeof this.storedValue&&this.storedValue[t];"function"==typeof e&&e.apply(this.storedValue)},Object.defineProperty(t.prototype,"value",{get:function(){if(this.isAlive)return this.type.getValue(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"snapshot",{get:function(){if(this.isAlive)return this.type.getSnapshot(this)},enumerable:!0,configurable:!0}),t.prototype.isRunningAction=function(){return!!this._isRunningAction||!this.isRoot&&this.parent.isRunningAction()},Object.defineProperty(t.prototype,"identifier",{get:function(){return this.identifierAttribute?this.storedValue[this.identifierAttribute]:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isAlive",{get:function(){return this.state!==It.DEAD},enumerable:!0,configurable:!0}),t.prototype.assertAlive=function(){this.isAlive||H(this+" cannot be used anymore as it has died; it has been removed from a state tree. If you want to remove an element from a tree and let it live on, use 'detach' or 'clone' the value")},t.prototype.getChildNode=function(t){this.assertAlive(),this._autoUnbox=!1;var e=this.type.getChildNode(this,t);return this._autoUnbox=!0,e},t.prototype.getChildren=function(){this.assertAlive(),this._autoUnbox=!1;var t=this.type.getChildren(this);return this._autoUnbox=!0,t},t.prototype.getChildType=function(t){return this.type.getChildType(t)},Object.defineProperty(t.prototype,"isProtected",{get:function(){return this.root.isProtectionEnabled},enumerable:!0,configurable:!0}),t.prototype.assertWritable=function(){this.assertAlive(),!this.isRunningAction()&&this.isProtected&&H("Cannot modify '"+this+"', the object is protected and can only be modified by using an action.")},t.prototype.removeChild=function(t){this.type.removeChild(this,t)},t.prototype.unbox=function(t){return t&&!0===this._autoUnbox?t.value:t},t.prototype.toString=function(){var t=this.identifier?"(id: "+this.identifier+")":"";return this.type.name+"@"+(this.path||"<root>")+t+(this.isAlive?"":"[dead]")},t.prototype.finalizeCreation=function(){if(this.state===It.CREATED){if(this.parent){if(this.parent.state!==It.FINALIZED)return;this.fireHook("afterAttach")}this.state=It.FINALIZED;for(var e=0,n=this.getChildren();e<n.length;e++){var r=n[e];r instanceof t&&r.finalizeCreation()}}},t.prototype.detach=function(){this.isAlive||H("Error while detaching, node is not alive."),this.isRoot||(this.fireHook("beforeDetach"),this._environment=this.root._environment,this.state=It.DETACHING,this.identifierCache=this.root.identifierCache.splitCache(this),this.parent.removeChild(this.subpath),this._parent=null,this.subpath="",this.state=It.FINALIZED)},t.prototype.preboot=function(){var t=this;this.disposers=[],this.middlewares=[],this.snapshotSubscribers=[],this.patchSubscribers=[],this.applyPatches=V(this.storedValue,"@APPLY_PATCHES",function(e){e.forEach(function(e){var n=ht(e.path);U(t,n.slice(0,-1)).applyPatchLocally(n[n.length-1],e)})}).bind(this.storedValue),this.applySnapshot=V(this.storedValue,"@APPLY_SNAPSHOT",function(e){if(e!==t.snapshot)return t.type.applySnapshot(t,e)}).bind(this.storedValue)},t.prototype.die=function(){this.state!==It.DETACHING&&k(this.storedValue)&&(u(this.storedValue,function(e){var n=F(e);n instanceof t&&n.aboutToDie()}),u(this.storedValue,function(e){var n=F(e);n instanceof t&&n.finalizeDeath()}))},t.prototype.aboutToDie=function(){this.disposers.splice(0).forEach(function(t){return t()}),this.fireHook("beforeDestroy")},t.prototype.finalizeDeath=function(){this.root.identifierCache.notifyDied(this);var t=this,e=this.path;tt(this,"snapshot",this.snapshot),this.patchSubscribers.splice(0),this.snapshotSubscribers.splice(0),this.patchSubscribers.splice(0),this.state=It.DEAD,this._parent=null,this.subpath="",Object.defineProperty(this.storedValue,"$mobx",{get:function(){H("This object has died and is no longer part of a state tree. It cannot be used anymore. The object (of type '"+t.type.name+"') used to live at '"+e+"'. It is possible to access the last snapshot of this object using 'getSnapshot', or to create a fresh copy using 'clone'. If you want to remove an object from the tree without killing it, use 'detach' instead.")}})},t.prototype.onSnapshot=function(t){return nt(this.snapshotSubscribers,t)},t.prototype.emitSnapshot=function(t){this.snapshotSubscribers.forEach(function(e){return e(t)})},t.prototype.onPatch=function(t){return nt(this.patchSubscribers,t)},t.prototype.emitPatch=function(t,e){if(this.patchSubscribers.length){var n=at(B({},t,{path:e.path.substr(this.path.length)+"/"+t.path})),r=n[0],i=n[1];this.patchSubscribers.forEach(function(t){return t(r,i)})}this.parent&&this.parent.emitPatch(t,e)},t.prototype.addDisposer=function(t){this.disposers.unshift(t)},t.prototype.addMiddleWare=function(t){return nt(this.middlewares,t)},t.prototype.applyPatchLocally=function(t,e){this.assertWritable(),this.type.applyPatchLocally(this,t,e)},l([e.observable],t.prototype,"subpath",void 0),l([e.observable],t.prototype,"_parent",void 0),l([e.computed],t.prototype,"path",null),l([e.computed],t.prototype,"value",null),l([e.computed],t.prototype,"snapshot",null),t}();!function(t){t[t.String=1]="String",t[t.Number=2]="Number",t[t.Boolean=4]="Boolean",t[t.Date=8]="Date",t[t.Literal=16]="Literal",t[t.Array=32]="Array",t[t.Map=64]="Map",t[t.Object=128]="Object",t[t.Frozen=256]="Frozen",t[t.Optional=512]="Optional",t[t.Reference=1024]="Reference",t[t.Identifier=2048]="Identifier",t[t.Late=4096]="Late",t[t.Refinement=8192]="Refinement",t[t.Union=16384]="Union",t[t.Null=32768]="Null",t[t.Undefined=65536]="Undefined"}(Tt||(Tt={}));var It,xt=function(){function t(t){this.isType=!0,this.name=t}return t.prototype.create=function(t,e){return void 0===t&&(t=this.getDefaultSnapshot()),D(this,t),this.instantiate(null,"",e,t).value},t.prototype.isAssignableFrom=function(t){return t===this},t.prototype.validate=function(t,e){return k(t)?n(t)===this||this.isAssignableFrom(n(t))?O():I(e,t):this.isValidSnapshot(t,e)},t.prototype.is=function(t){return 0===this.validate(t,[{path:"",type:this}]).length},t.prototype.reconcile=function(t,e){if(t.snapshot===e)return t;if(k(e)&&F(e)===t)return t;if(t.type===this&&q(e)&&!k(e)&&(!t.identifierAttribute||t.identifier===e[t.identifierAttribute]))return t.applySnapshot(e),t;var r=t.parent,i=t.subpath;if(t.die(),k(e)&&this.isAssignableFrom(n(e))){var o=F(e);return o.setParent(r,i),o}return this.instantiate(r,i,t._environment,e)},Object.defineProperty(t.prototype,"Type",{get:function(){return H("Factory.Type should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.Type`")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"SnapshotType",{get:function(){return H("Factory.SnapshotType should not be actually called. It is just a Type signature that can be used at compile time with Typescript, by using `typeof type.SnapshotType`")},enumerable:!0,configurable:!0}),l([e.action],t.prototype,"create",null),t}(),Dt=function(t){function e(e){return t.call(this,e)||this}return p(e,t),e.prototype.getValue=function(t){return t.storedValue},e.prototype.getSnapshot=function(t){return t.storedValue},e.prototype.getDefaultSnapshot=function(){},e.prototype.applySnapshot=function(t,e){H("Immutable types do not support applying snapshots")},e.prototype.applyPatchLocally=function(t,e,n){H("Immutable types do not support applying patches")},e.prototype.getChildren=function(t){return Lt},e.prototype.getChildNode=function(t,e){return H("No child '"+e+"' available in type: "+this.name)},e.prototype.getChildType=function(t){return H("No child '"+t+"' available in type: "+this.name)},e.prototype.reconcile=function(t,e){if(t.type===this&&t.storedValue===e)return t;var n=this.instantiate(t.parent,t.subpath,t._environment,e);return t.die(),n},e.prototype.removeChild=function(t,e){return H("No child '"+e+"' available in type: "+this.name)},e}(xt),Et=1,Rt=null,zt=function(){function t(){this.cache=e.observable.map()}return t.prototype.addNodeToCache=function(t){if(t.identifierAttribute){var n=t.identifier;this.cache.has(n)||this.cache.set(n,e.observable.shallowArray());var r=this.cache.get(n);-1!==r.indexOf(t)&&H("Already registered"),r.push(t)}return this},t.prototype.mergeCache=function(t){var e=this;t.identifierCache.cache.values().forEach(function(t){return t.forEach(function(t){e.addNodeToCache(t)})})},t.prototype.notifyDied=function(t){if(t.identifierAttribute){var e=this.cache.get(t.identifier);e&&e.remove(t)}},t.prototype.splitCache=function(e){var n=new t,r=e.path;return this.cache.values().forEach(function(t){for(var e=t.length-1;e>=0;e--)0===t[e].path.indexOf(r)&&(n.addNodeToCache(t[e]),t.splice(e,1))}),n},t.prototype.resolve=function(t,e){var n=this.cache.get(e);if(!n)return null;var r=n.filter(function(e){return t.isAssignableFrom(e.type)});switch(r.length){case 0:return null;case 1:return r[0];default:return H("Cannot resolve a reference to type '"+t.name+"' with id: '"+e+"' unambigously, there are multiple candidates: "+r.map(function(t){return t.path}).join(", "))}},t}();!function(t){t[t.INITIALIZING=0]="INITIALIZING",t[t.CREATED=1]="CREATED",t[t.FINALIZED=2]="FINALIZED",t[t.DETACHING=3]="DETACHING",t[t.DEAD=4]="DEAD"}(It||(It={}));var kt=function(t){return".."},Ft="See https://github.com/mobxjs/mobx-state-tree/issues/399 for more information. Note that the middleware event types starting with `process` now start with `flow`.",Lt=Object.freeze([]),Mt=Object.freeze({}),$t=function(){};($t=function(t,e){}).ids={};var Ut=function(t){function n(n,r){var i=t.call(this,n)||this;return i.shouldAttachNode=!0,i.flags=Tt.Map,i.createNewInstance=function(){var t=e.observable.shallowMap();return X(t,"put",dt),X(t,"toString",ft),t},i.finalizeNewInstance=function(t,n){var r=t.storedValue;e.extras.interceptReads(r,t.unbox),e.intercept(r,function(t){return i.willChange(t)}),t.applySnapshot(n),e.observe(r,i.didChange)},i.subType=r,i}return p(n,t),n.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r,this.createNewInstance,this.finalizeNewInstance)},n.prototype.describe=function(){return"Map<string, "+this.subType.describe()+">"},n.prototype.getChildren=function(t){return t.storedValue.values()},n.prototype.getChildNode=function(t,e){var n=t.storedValue.get(e);return n||H("Not a child "+e),n},n.prototype.willChange=function(t){var e=F(t.object);switch(e.assertWritable(),t.type){case"update":var n=t.newValue;if(n===t.object.get(t.name))return null;D(this.subType,n),t.newValue=this.subType.reconcile(e.getChildNode(t.name),t.newValue),this.verifyIdentifier(t.name,t.newValue);break;case"add":D(this.subType,t.newValue),t.newValue=this.subType.instantiate(e,t.name,void 0,t.newValue),this.verifyIdentifier(t.name,t.newValue)}return t},n.prototype.verifyIdentifier=function(t,e){if(e instanceof Ot){var n=e.identifier;null!==n&&""+n!=""+t&&H("A map of objects containing an identifier should always store the object under their own identifier. Trying to store key '"+n+"', but expected: '"+t+"'")}},n.prototype.getValue=function(t){return t.storedValue},n.prototype.getSnapshot=function(t){var e={};return t.getChildren().forEach(function(t){e[t.subpath]=t.snapshot}),e},n.prototype.didChange=function(t){var e=F(t.object);switch(t.type){case"update":return void e.emitPatch({op:"replace",path:pt(t.name),value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e);case"add":return void e.emitPatch({op:"add",path:pt(t.name),value:t.newValue.snapshot,oldValue:void 0},e);case"delete":var n=t.oldValue.snapshot;return t.oldValue.die(),void e.emitPatch({op:"remove",path:pt(t.name),oldValue:n},e)}},n.prototype.applyPatchLocally=function(t,e,n){var r=t.storedValue;switch(n.op){case"add":case"replace":r.set(e,n.value);break;case"remove":r.delete(e)}},n.prototype.applySnapshot=function(t,e){D(this,e);var n=t.storedValue,r={};n.keys().forEach(function(t){r[t]=!1}),Object.keys(e).forEach(function(t){n.set(t,e[t]),r[t]=!0}),Object.keys(r).forEach(function(t){!1===r[t]&&n.delete(t)})},n.prototype.getChildType=function(t){return this.subType},n.prototype.isValidSnapshot=function(t,e){var n=this;return Y(t)?x(Object.keys(t).map(function(r){return n.subType.validate(t[r],_(e,r,n.subType))})):I(e,t,"Value is not a plain object")},n.prototype.getDefaultSnapshot=function(){return{}},n.prototype.removeChild=function(t,e){t.storedValue.delete(e)},l([e.action],n.prototype,"applySnapshot",null),n}(xt),Ht=function(t){function n(n,r){var i=t.call(this,n)||this;return i.shouldAttachNode=!0,i.flags=Tt.Array,i.createNewInstance=function(){var t=e.observable.shallowArray();return X(t,"toString",yt),t},i.finalizeNewInstance=function(t,n){var r=t.storedValue;e.extras.getAdministration(r).dehancer=t.unbox,e.intercept(r,function(t){return i.willChange(t)}),t.applySnapshot(n),e.observe(r,i.didChange)},i.subType=r,i}return p(n,t),n.prototype.describe=function(){return this.subType.describe()+"[]"},n.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r,this.createNewInstance,this.finalizeNewInstance)},n.prototype.getChildren=function(t){return t.storedValue.peek()},n.prototype.getChildNode=function(t,e){var n=parseInt(e,10);return n<t.storedValue.length?t.storedValue[n]:H("Not a child: "+e)},n.prototype.willChange=function(t){var e=F(t.object);e.assertWritable();var n=e.getChildren();switch(t.type){case"update":if(t.newValue===t.object[t.index])return null;t.newValue=bt(e,this.subType,[n[t.index]],[t.newValue],[t.index])[0];break;case"splice":var r=t.index,i=t.removedCount,o=t.added;t.added=bt(e,this.subType,n.slice(r,r+i),o,o.map(function(t,e){return r+e}));for(var a=r+i;a<n.length;a++)n[a].setParent(e,""+(a+o.length-i))}return t},n.prototype.getValue=function(t){return t.storedValue},n.prototype.getSnapshot=function(t){return t.getChildren().map(function(t){return t.snapshot})},n.prototype.didChange=function(t){var e=F(t.object);switch(t.type){case"update":return void e.emitPatch({op:"replace",path:""+t.index,value:t.newValue.snapshot,oldValue:t.oldValue?t.oldValue.snapshot:void 0},e);case"splice":for(n=t.removedCount-1;n>=0;n--)e.emitPatch({op:"remove",path:""+(t.index+n),oldValue:t.removed[n].snapshot},e);for(var n=0;n<t.addedCount;n++)e.emitPatch({op:"add",path:""+(t.index+n),value:e.getChildNode(""+(t.index+n)).snapshot,oldValue:void 0},e);return}},n.prototype.applyPatchLocally=function(t,e,n){var r=t.storedValue,i="-"===e?r.length:parseInt(e);switch(n.op){case"replace":r[i]=n.value;break;case"add":r.splice(i,0,n.value);break;case"remove":r.splice(i,1)}},n.prototype.applySnapshot=function(t,e){D(this,e),t.storedValue.replace(e)},n.prototype.getChildType=function(t){return this.subType},n.prototype.isValidSnapshot=function(t,e){var n=this;return G(t)?x(t.map(function(t,r){return n.subType.validate(t,_(e,""+r,n.subType))})):I(e,t,"Value is not an array")},n.prototype.getDefaultSnapshot=function(){return[]},n.prototype.removeChild=function(t,e){t.storedValue.splice(parseInt(e,10),1)},l([e.action],n.prototype,"applySnapshot",null),n}(xt),Jt={afterCreate:"afterCreate",afterAttach:"afterAttach",postProcessSnapshot:"postProcessSnapshot",beforeDetach:"beforeDetach",beforeDestroy:"beforeDestroy"},Zt={name:"AnonymousModel",properties:{},initializers:Lt},Gt=function(t){function n(n){var r=t.call(this,n.name||Zt.name)||this;r.flags=Tt.Object,r.shouldAttachNode=!0,r.createNewInstance=function(){var t=e.observable.shallowObject(Mt);return X(t,"toString",gt),t},r.finalizeNewInstance=function(t,n){var i=t.storedValue;r.forAllProps(function(r,o){e.extendShallowObservable(i,(a={},a[r]=e.observable.ref(o.instantiate(t,r,t._environment,n[r])),a)),e.extras.interceptReads(i,r,t.unbox);var a}),r.initializers.reduce(function(t,e){return e(t)},i),e.intercept(i,function(t){return r.willChange(t)}),e.observe(i,r.didChange)},r.didChange=function(t){if(r.properties[t.name]){var e=F(t.object),n=t.oldValue?t.oldValue.snapshot:void 0;e.emitPatch({op:"replace",path:pt(t.name),value:t.newValue.snapshot,oldValue:n},e)}};var i=n.name||Zt.name;return/^\w[\w\d_]*$/.test(i)||H("Typename should be a valid identifier: "+i),Object.assign(r,Zt,n),r.properties=wt(r.properties),r.propertiesNames=Object.keys(r.properties),Object.freeze(r.properties),r}return p(n,t),n.prototype.cloneAndEnhance=function(t){return new n({name:t.name||this.name,properties:Object.assign({},this.properties,t.properties),initializers:this.initializers.concat(t.initializers||[]),preProcessor:t.preProcessor||this.preProcessor})},n.prototype.actions=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateActions(n,t(n)),n}]})},n.prototype.instantiateActions=function(t,e){Y(e)||H("actions initializer should return a plain object containing actions"),Object.keys(e).forEach(function(n){if("preProcessSnapshot"===n)return H("Cannot define action 'preProcessSnapshot', it should be defined using 'type.preProcessSnapshot(fn)' instead");var r=e[n],i=t[n];if(n in Jt&&i){var o=r;r=n===Jt.postProcessSnapshot?function(t){return o(i(t))}:function(){i.apply(null,arguments),o.apply(null,arguments)}}X(t,n,V(t,n,r))})},n.prototype.named=function(t){return this.cloneAndEnhance({name:t})},n.prototype.props=function(t){return this.cloneAndEnhance({properties:t})},n.prototype.volatile=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateVolatileState(n,t(n)),n}]})},n.prototype.instantiateVolatileState=function(t,n){Y(n)||H("state initializer should return a plain object containing views"),e.extendShallowObservable(t,n)},n.prototype.extend=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){var r=t(n),i=r.actions,o=r.views,a=r.state,s=c(r,["actions","views","state"]);for(var u in s)H("The `extend` function should return an object with a subset of the fields 'actions', 'views' and 'state'. Found invalid key '"+u+"'");return a&&e.instantiateVolatileState(n,a),o&&e.instantiateViews(n,o),i&&e.instantiateActions(n,i),n}]})},n.prototype.views=function(t){var e=this;return this.cloneAndEnhance({initializers:[function(n){return e.instantiateViews(n,t(n)),n}]})},n.prototype.instantiateViews=function(t,n){Y(n)||H("views initializer should return a plain object containing views"),Object.keys(n).forEach(function(r){var i=Object.getOwnPropertyDescriptor(n,r),o=i.value;if("get"in i)if(e.isComputed(t.$mobx.values[r]))t.$mobx.values[r]=e.computed(i.get,{name:r,setter:i.set,context:t});else{var a={};Object.defineProperty(a,r,{get:i.get,set:i.set,enumerable:!0}),e.extendShallowObservable(t,a)}else"function"==typeof o?X(t,r,o):H("A view member should either be a function or getter based property")})},n.prototype.preProcessSnapshot=function(t){var e=this.preProcessor;return e?this.cloneAndEnhance({preProcessor:function(n){return e(t(n))}}):this.cloneAndEnhance({preProcessor:t})},n.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,this.applySnapshotPreProcessor(r),this.createNewInstance,this.finalizeNewInstance)},n.prototype.willChange=function(t){var e=F(t.object);e.assertWritable();var n=this.properties[t.name];return n&&(D(n,t.newValue),t.newValue=n.reconcile(e.getChildNode(t.name),t.newValue)),t},n.prototype.getChildren=function(t){var e=this,n=[];return this.forAllProps(function(r,i){n.push(e.getChildNode(t,r))}),n},n.prototype.getChildNode=function(t,e){if(!(e in this.properties))return H("Not a value property: "+e);var n=t.storedValue.$mobx.values[e].value;return n||H("Node not available for property "+e)},n.prototype.getValue=function(t){return t.storedValue},n.prototype.getSnapshot=function(t){var n=this,r={};return this.forAllProps(function(i,o){e.extras.getAtom(t.storedValue,i).reportObserved(),r[i]=n.getChildNode(t,i).snapshot}),"function"==typeof t.storedValue.postProcessSnapshot?t.storedValue.postProcessSnapshot.call(null,r):r},n.prototype.applyPatchLocally=function(t,e,n){"replace"!==n.op&&"add"!==n.op&&H("object does not support operation "+n.op),t.storedValue[e]=n.value},n.prototype.applySnapshot=function(t,e){var n=this.applySnapshotPreProcessor(e);D(this,n),this.forAllProps(function(e,r){t.storedValue[e]=n[e]})},n.prototype.applySnapshotPreProcessor=function(t){return this.preProcessor?this.preProcessor.call(null,t):t},n.prototype.getChildType=function(t){return this.properties[t]},n.prototype.isValidSnapshot=function(t,e){var n=this,r=this.applySnapshotPreProcessor(t);return Y(r)?x(this.propertiesNames.map(function(t){return n.properties[t].validate(r[t],_(e,t,n.properties[t]))})):I(e,r,"Value is not a plain object")},n.prototype.forAllProps=function(t){var e=this;this.propertiesNames.forEach(function(n){return t(n,e.properties[n])})},n.prototype.describe=function(){var t=this;return"{ "+this.propertiesNames.map(function(e){return e+": "+t.properties[e].describe()}).join("; ")+" }"},n.prototype.getDefaultSnapshot=function(){return{}},n.prototype.removeChild=function(t,e){t.storedValue[e]=null},l([e.action],n.prototype,"applySnapshot",null),n}(xt),Wt=function(t){function e(e,n,r,i){void 0===i&&(i=J);var o=t.call(this,e)||this;return o.shouldAttachNode=!1,o.flags=n,o.checker=r,o.initializer=i,o}return p(e,t),e.prototype.describe=function(){return this.name},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r,this.initializer)},e.prototype.isValidSnapshot=function(t,e){return K(t)&&this.checker(t)?O():I(e,t,"Value is not a "+("Date"===this.name?"Date or a unix milliseconds timestamp":this.name))},e}(Dt),Bt=new Wt("string",Tt.String,function(t){return"string"==typeof t}),Yt=new Wt("number",Tt.Number,function(t){return"number"==typeof t}),qt=new Wt("boolean",Tt.Boolean,function(t){return"boolean"==typeof t}),Kt=new Wt("null",Tt.Null,function(t){return null===t}),Qt=new Wt("undefined",Tt.Undefined,function(t){return void 0===t}),Xt=new Wt("Date",Tt.Date,function(t){return"number"==typeof t||t instanceof Date},function(t){return t instanceof Date?t:new Date(t)});Xt.getSnapshot=function(t){return t.storedValue.getTime()};var te=function(t){function e(e){var n=t.call(this,JSON.stringify(e))||this;return n.shouldAttachNode=!1,n.flags=Tt.Literal,n.value=e,n}return p(e,t),e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r)},e.prototype.describe=function(){return JSON.stringify(this.value)},e.prototype.isValidSnapshot=function(t,e){return K(t)&&t===this.value?O():I(e,t,"Value is not a literal "+JSON.stringify(this.value))},e}(Dt),ee=function(t){function e(e,n,r,i){var o=t.call(this,e)||this;return o.type=n,o.predicate=r,o.message=i,o}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.type.flags|Tt.Refinement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.type.shouldAttachNode},enumerable:!0,configurable:!0}),e.prototype.describe=function(){return this.name},e.prototype.instantiate=function(t,e,n,r){return this.type.instantiate(t,e,n,r)},e.prototype.isAssignableFrom=function(t){return this.type.isAssignableFrom(t)},e.prototype.isValidSnapshot=function(t,e){var n=this.type.validate(t,e);if(n.length>0)return n;var r=k(t)?F(t).snapshot:t;return this.predicate(r)?O():I(e,t,this.message(t))},e}(Dt),ne=function(t){function e(e,n,r){var i=t.call(this,e)||this;return i.dispatcher=null,i.dispatcher=r,i.types=n,i}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){var t=Tt.Union;return this.types.forEach(function(e){t|=e.flags}),t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.types.some(function(t){return t.shouldAttachNode})},enumerable:!0,configurable:!0}),e.prototype.isAssignableFrom=function(t){return this.types.some(function(e){return e.isAssignableFrom(t)})},e.prototype.describe=function(){return"("+this.types.map(function(t){return t.describe()}).join(" | ")+")"},e.prototype.instantiate=function(t,e,n,r){return this.determineType(r).instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.determineType(e).reconcile(t,e)},e.prototype.determineType=function(t){if(null!==this.dispatcher)return this.dispatcher(t);var e=this.types.filter(function(e){return e.is(t)});return e.length>1?H("Ambiguos snapshot "+JSON.stringify(t)+" for union "+this.name+". Please provide a dispatch in the union declaration."):e[0]},e.prototype.isValidSnapshot=function(t,e){if(null!==this.dispatcher)return this.dispatcher(t).validate(t,e);var n=this.types.map(function(n){return n.validate(t,e)}),r=n.filter(function(t){return 0===t.length});return r.length>1?I(e,t,"Multiple types are applicable for the union (hint: provide a dispatch function)"):0===r.length?I(e,t,"No type is applicable for the union").concat(x(n)):O()},e}(Dt),re=function(t){function e(e,n){var r=t.call(this,e.name)||this;return r.type=e,r.defaultValue=n,r}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.type.flags|Tt.Optional},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.type.shouldAttachNode},enumerable:!0,configurable:!0}),e.prototype.describe=function(){return this.type.describe()+"?"},e.prototype.instantiate=function(t,e,n,r){if(void 0===r){var i=this.getDefaultValue(),o=k(i)?F(i).snapshot:i;return this.type.instantiate(t,e,n,o)}return this.type.instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.type.reconcile(t,this.type.is(e)?e:this.getDefaultValue())},e.prototype.getDefaultValue=function(){var t="function"==typeof this.defaultValue?this.defaultValue():this.defaultValue;return"function"==typeof this.defaultValue&&D(this,t),t},e.prototype.isValidSnapshot=function(t,e){return void 0===t?O():this.type.validate(t,e)},e.prototype.isAssignableFrom=function(t){return this.type.isAssignableFrom(t)},e}(Dt),ie=jt(Kt,null),oe=function(t){function e(e,n){var r=t.call(this,e)||this;return r._subType=null,r.definition=n,r}return p(e,t),Object.defineProperty(e.prototype,"flags",{get:function(){return this.subType.flags|Tt.Late},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldAttachNode",{get:function(){return this.subType.shouldAttachNode},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"subType",{get:function(){return null===this._subType&&(this._subType=this.definition()),this._subType},enumerable:!0,configurable:!0}),e.prototype.instantiate=function(t,e,n,r){return this.subType.instantiate(t,e,n,r)},e.prototype.reconcile=function(t,e){return this.subType.reconcile(t,e)},e.prototype.describe=function(){return this.subType.name},e.prototype.isValidSnapshot=function(t,e){return this.subType.validate(t,e)},e.prototype.isAssignableFrom=function(t){return this.subType.isAssignableFrom(t)},e}(Dt),ae=new(function(t){function e(){var e=t.call(this,"frozen")||this;return e.shouldAttachNode=!1,e.flags=Tt.Frozen,e}return p(e,t),e.prototype.describe=function(){return"<any immutable value>"},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,r)},e.prototype.isValidSnapshot=function(t,e){return Q(t)?O():I(e,t,"Value is not serializable and cannot be frozen")},e}(Dt)),se=function(){return function(t,e){if(this.mode=t,this.value=e,"object"===t){if(!k(e))return H("Can only store references to tree nodes, got: '"+e+"'");if(!F(e).identifierAttribute)return H("Can only store references with a defined identifier attribute.")}}}(),ue=function(t){function e(e){var n=t.call(this,"reference("+e.name+")")||this;return n.targetType=e,n.flags=Tt.Reference,n}return p(e,t),e.prototype.describe=function(){return this.name},e.prototype.isAssignableFrom=function(t){return this.targetType.isAssignableFrom(t)},e.prototype.isValidSnapshot=function(t,e){return"string"==typeof t||"number"==typeof t?O():I(e,t,"Value is not a valid identifier, which is a string or a number")},e}(Dt),pe=function(t){function e(e){var n=t.call(this,e)||this;return n.shouldAttachNode=!0,n}return p(e,t),e.prototype.getValue=function(t){if(t.isAlive){var e=t.storedValue;if("object"===e.mode)return e.value;var n=t.root.identifierCache.resolve(this.targetType,e.value);return n?n.value:H("Failed to resolve reference of type "+this.targetType.name+": '"+e.value+"' (in: "+t.path+")")}},e.prototype.getSnapshot=function(t){var e=t.storedValue;switch(e.mode){case"identifier":return e.value;case"object":return F(e.value).identifier}},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,new se(k(r)?"object":"identifier",r))},e.prototype.reconcile=function(t,e){if(t.type===this){var n=k(e)?"object":"identifier",r=t.storedValue;if(n===r.mode&&r.value===e)return t}var i=this.instantiate(t.parent,t.subpath,t._environment,e);return t.die(),i},e}(ue),ce=function(t){function e(e,n){var r=t.call(this,e)||this;return r.options=n,r.shouldAttachNode=!1,r}return p(e,t),e.prototype.getValue=function(t){if(t.isAlive)return this.options.get(t.storedValue,t.parent?t.parent.storedValue:null)},e.prototype.getSnapshot=function(t){return t.storedValue},e.prototype.instantiate=function(t,e,n,r){return R(this,t,e,n,k(r)?this.options.set(r,t?t.storedValue:null):r)},e.prototype.reconcile=function(t,e){var n=k(e)?this.options.set(e,t?t.storedValue:null):e;if(t.type===this&&t.storedValue===n)return t;var r=this.instantiate(t.parent,t.subpath,t._environment,n);return t.die(),r},e}(ue),le=function(t){function e(e){var n=t.call(this,"identifier("+e.name+")")||this;return n.identifierType=e,n.shouldAttachNode=!1,n.flags=Tt.Identifier,n}return p(e,t),e.prototype.instantiate=function(t,e,n,r){return t&&k(t.storedValue)?(t.identifierAttribute&&H("Cannot define property '"+e+"' as object identifier, property '"+t.identifierAttribute+"' is already defined as identifier property"),t.identifierAttribute=e,R(this,t,e,n,r)):H("Identifier types can only be instantiated as direct child of a model type")},e.prototype.reconcile=function(t,e){return t.storedValue!==e?H("Tried to change identifier from '"+t.storedValue+"' to '"+e+"'. Changing identifiers is not allowed."):t},e.prototype.describe=function(){return"identifier("+this.identifierType.describe()+")"},e.prototype.isValidSnapshot=function(t,e){return void 0===t||null===t||"string"==typeof t||"number"==typeof t?this.identifierType.validate(t,e):I(e,t,"Value is not a valid identifier, which is a string or a number")},e}(Dt),he={enumeration:function(t,e){var n="string"==typeof t?e:t,r=St.apply(void 0,n.map(function(t){return Pt(""+t)}));return"string"==typeof t&&(r.name=t),r},model:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():"AnonymousModel",r=t.shift()||{};return new Gt({name:n,properties:r})},compose:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():"AnonymousModel";return t.reduce(function(t,e){return t.cloneAndEnhance({name:t.name+"_"+e.name,properties:e.properties,initializers:e.initializers})}).named(n)},reference:function(t,e){return e?new ce(t,e):new pe(t)},union:St,optional:jt,literal:Pt,maybe:function(t){return St(ie,t)},refinement:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n="string"==typeof t[0]?t.shift():h(t[0])?t[0].name:null,r=t[0],i=t[1],o=t[2]?t[2]:function(t){return"Value does not respect the refinement predicate"};return new ee(n,r,i,o)},string:Bt,boolean:qt,number:Yt,Date:Xt,map:function(t){return new Ut("map<string, "+t.name+">",t)},array:function(t){return new Ht(t.name+"[]",t)},frozen:ae,identifier:function(t){return void 0===t&&(t=Bt),new le(t)},late:function(t,e){var n="string"==typeof t?t:"late("+t.toString()+")";return new oe(n,"string"==typeof t?e:t)},undefined:Qt,null:Kt};t.types=he,t.typecheck=E,t.escapeJsonPath=pt,t.unescapeJsonPath=ct,t.decorate=function(t,e){return e.$mst_middleware?e.$mst_middleware.push(t):e.$mst_middleware=[t],e},t.addMiddleware=P,t.process=function(t){return $t("process","`process()` has been renamed to `flow()`. "+Ft),it(t)},t.isStateTreeNode=k,t.flow=it,t.applyAction=b,t.onAction=m,t.recordActions=function(t){var e={actions:[],stop:function(){return n()},replay:function(t){b(t,e.actions)}},n=m(t,e.actions.push.bind(e.actions));return e},t.createActionTrackingMiddleware=function(t){var e=new Map;return function(n,r){switch(n.type){case"action":if(t.filter&&!0!==t.filter(n))return r(n);var i=t.onStart(n);t.onResume(n,i),e.set(n.id,{call:n,context:i,async:!1});try{var o=r(n);return t.onSuspend(n,i),!1===e.get(n.id).async&&t.onSuccess(n,i,o),o}catch(e){throw t.onFail(n,i,e),e}case"flow_spawn":return(a=e.get(n.rootId)).async=!0,r(n);case"flow_resume":case"flow_resume_error":a=e.get(n.rootId),t.onResume(n,a.context);try{return r(n)}finally{t.onSuspend(n,a.context)}case"flow_throw":return a=e.get(n.rootId),e.delete(n.id),t.onFail(n,a.context,n.args[0]),r(n);case"flow_return":var a=e.get(n.rootId);return e.delete(n.id),t.onSuccess(n,a.context,n.args[0]),r(n)}}},t.getType=n,t.getChildType=function(t,e){return F(t).getChildType(e)},t.onPatch=r,t.onSnapshot=function(t,e){return F(t).onSnapshot(e)},t.applyPatch=i,t.recordPatches=function(t){function e(){n||(n=r(t,function(t,e){o.rawPatches.push([t,e])}))}var n=null,o={rawPatches:[],get patches(){return this.rawPatches.map(function(t){return t[0]})},get inversePatches(){return this.rawPatches.map(function(t){return t[0],t[1]})},stop:function(){n&&n(),n=null},resume:e,replay:function(e){i(e||t,o.patches)},undo:function(e){i(e||t,o.inversePatches.slice().reverse())}};return e(),o},t.protect=function(t){var e=F(t);e.isRoot||H("`protect` can only be invoked on root nodes"),e.isProtectionEnabled=!0},t.unprotect=function(t){var e=F(t);e.isRoot||H("`unprotect` can only be invoked on root nodes"),e.isProtectionEnabled=!1},t.isProtected=function(t){return F(t).isProtected},t.applySnapshot=o,t.getSnapshot=function(t){return F(t).snapshot},t.hasParent=function(t,e){void 0===e&&(e=1);for(var n=F(t).parent;n;){if(0==--e)return!0;n=n.parent}return!1},t.getParent=function(t,e){void 0===e&&(e=1);for(var n=e,r=F(t).parent;r;){if(0==--n)return r.storedValue;r=r.parent}return H("Failed to find the parent of "+F(t)+" at depth "+e)},t.getRoot=a,t.getPath=function(t){return F(t).path},t.getPathParts=function(t){return ht(F(t).path)},t.isRoot=function(t){return F(t).isRoot},t.resolvePath=function(t,e){var n=$(F(t),e);return n?n.value:void 0},t.resolveIdentifier=function(t,e,n){var r=F(e).root.identifierCache.resolve(t,""+n);return r?r.value:void 0},t.tryResolve=s,t.getRelativePath=function(t,e){return M(F(t),F(e))},t.clone=function(t,e){void 0===e&&(e=!0);var n=F(t);return n.type.create(n.snapshot,!0===e?n.root._environment:!1===e?void 0:e)},t.detach=function(t){return F(t).detach(),t},t.destroy=function(t){var e=F(t);e.isRoot?e.die():e.parent.removeChild(e.subpath)},t.isAlive=function(t){return F(t).isAlive},t.addDisposer=function(t,e){F(t).addDisposer(e)},t.getEnv=function(t){var e=F(t).root._environment;return e||Mt},t.walk=u,Object.defineProperty(t,"__esModule",{value:!0})});
import { IObservableArray, IArrayWillChange, IArrayWillSplice, IArrayChange, IArraySplice } from "mobx";
import { IJsonPatch, INode, IStateTreeNode, IContext, IValidationResult, ComplexType, IComplexType, IType, TypeFlags } from "../../internal";
import { IJsonPatch, INode, IStateTreeNode, IContext, IValidationResult, ComplexType, IComplexType, IType, TypeFlags, ObjectNode } from "../../internal";
export declare function arrayToString(this: IObservableArray<any> & IStateTreeNode): string;

@@ -11,16 +11,16 @@ export declare class ArrayType<S, T> extends ComplexType<S[], IObservableArray<T>> {

createNewInstance: () => IObservableArray<{}>;
finalizeNewInstance: (node: INode, snapshot: any) => void;
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: S): INode;
getChildren(node: INode): INode[];
getChildNode(node: INode, key: string): INode;
finalizeNewInstance: (node: ObjectNode, snapshot: any) => void;
instantiate(parent: ObjectNode | null, subpath: string, environment: any, snapshot: S): INode;
getChildren(node: ObjectNode): INode[];
getChildNode(node: ObjectNode, key: string): INode;
willChange(change: IArrayWillChange<any> | IArrayWillSplice<any>): Object | null;
getValue(node: INode): any;
getSnapshot(node: INode): any;
getValue(node: ObjectNode): any;
getSnapshot(node: ObjectNode): any;
didChange(this: {}, change: IArrayChange<any> | IArraySplice<any>): void;
applyPatchLocally(node: INode, subpath: string, patch: IJsonPatch): void;
applySnapshot(node: INode, snapshot: any[]): void;
applyPatchLocally(node: ObjectNode, subpath: string, patch: IJsonPatch): void;
applySnapshot(node: ObjectNode, snapshot: any[]): void;
getChildType(key: string): IType<any, any>;
isValidSnapshot(value: any, context: IContext): IValidationResult;
getDefaultSnapshot(): never[];
removeChild(node: INode, subpath: string): void;
removeChild(node: ObjectNode, subpath: string): void;
}

@@ -27,0 +27,0 @@ /**

import { ObservableMap, IMapChange, IMapWillChange } from "mobx";
import { IJsonPatch, INode, IType, IComplexType, ComplexType, TypeFlags, IContext, IValidationResult } from "../../internal";
import { IJsonPatch, INode, IType, IComplexType, ComplexType, TypeFlags, IContext, IValidationResult, ObjectNode } from "../../internal";
export interface IExtendedObservableMap<T> extends ObservableMap<T> {

@@ -14,21 +14,21 @@ put(value: T | any): this;

constructor(name: string, subType: IType<any, any>);
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: S): INode;
instantiate(parent: ObjectNode | null, subpath: string, environment: any, snapshot: S): INode;
describe(): string;
createNewInstance: () => ObservableMap<{}>;
finalizeNewInstance: (node: INode, snapshot: any) => void;
getChildren(node: INode): INode[];
getChildNode(node: INode, key: string): INode;
finalizeNewInstance: (node: ObjectNode, snapshot: any) => void;
getChildren(node: ObjectNode): INode[];
getChildNode(node: ObjectNode, key: string): INode;
willChange(change: IMapWillChange<any>): IMapWillChange<any> | null;
private verifyIdentifier(expected, node);
getValue(node: INode): any;
getSnapshot(node: INode): {
getValue(node: ObjectNode): any;
getSnapshot(node: ObjectNode): {
[key: string]: any;
};
didChange(change: IMapChange<any>): void;
applyPatchLocally(node: INode, subpath: string, patch: IJsonPatch): void;
applySnapshot(node: INode, snapshot: any): void;
applyPatchLocally(node: ObjectNode, subpath: string, patch: IJsonPatch): void;
applySnapshot(node: ObjectNode, snapshot: any): void;
getChildType(key: string): IType<any, any>;
isValidSnapshot(value: any, context: IContext): IValidationResult;
getDefaultSnapshot(): {};
removeChild(node: INode, subpath: string): void;
removeChild(node: ObjectNode, subpath: string): void;
}

@@ -35,0 +35,0 @@ /**

import { IObjectChange, IObjectWillChange } from "mobx";
import { IStateTreeNode, IJsonPatch, INode, ComplexType, IComplexType, IType, TypeFlags, IContext, IValidationResult } from "../../internal";
import { IStateTreeNode, IJsonPatch, INode, ComplexType, IComplexType, IType, TypeFlags, IContext, IValidationResult, ObjectNode } from "../../internal";
export declare type ModelTypeConfig = {

@@ -46,13 +46,13 @@ name?: string;

preProcessSnapshot(preProcessor: (snapshot: any) => S): IModelType<S, T>;
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: any): INode;
instantiate(parent: ObjectNode | null, subpath: string, environment: any, snapshot: any): INode;
createNewInstance: () => Object;
finalizeNewInstance: (node: INode, snapshot: any) => void;
finalizeNewInstance: (node: ObjectNode, snapshot: any) => void;
willChange(change: IObjectWillChange): IObjectWillChange | null;
didChange: (change: IObjectChange) => void;
getChildren(node: INode): INode[];
getChildNode(node: INode, key: string): INode;
getValue(node: INode): any;
getSnapshot(node: INode): any;
applyPatchLocally(node: INode, subpath: string, patch: IJsonPatch): void;
applySnapshot(node: INode, snapshot: any): void;
getChildren(node: ObjectNode): INode[];
getChildNode(node: ObjectNode, key: string): INode;
getValue(node: ObjectNode): any;
getSnapshot(node: ObjectNode): any;
applyPatchLocally(node: ObjectNode, subpath: string, patch: IJsonPatch): void;
applySnapshot(node: ObjectNode, snapshot: any): void;
applySnapshotPreProcessor(snapshot: any): any;

@@ -64,3 +64,3 @@ getChildType(key: string): IType<any, any>;

getDefaultSnapshot(): any;
removeChild(node: INode, subpath: string): void;
removeChild(node: ObjectNode, subpath: string): void;
}

@@ -67,0 +67,0 @@ export interface IModelType<S, T> extends IComplexType<S, T & IStateTreeNode> {

@@ -1,2 +0,2 @@

import { Type, INode, ISimpleType, IType, TypeFlags, IContext, IValidationResult } from "../internal";
import { Type, INode, ISimpleType, IType, TypeFlags, IContext, IValidationResult, ObjectNode } from "../internal";
export declare class CoreType<S, T> extends Type<S, T> {

@@ -9,3 +9,3 @@ readonly shouldAttachNode: boolean;

describe(): string;
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: T): INode;
instantiate(parent: ObjectNode | null, subpath: string, environment: any, snapshot: T): INode;
isValidSnapshot(value: any, context: IContext): IValidationResult;

@@ -12,0 +12,0 @@ }

@@ -1,2 +0,2 @@

import { INode, ISimpleType, Type, IContext, IValidationResult, TypeFlags } from "../../internal";
import { INode, ISimpleType, Type, IContext, IValidationResult, TypeFlags, ObjectNode } from "../../internal";
export declare class Frozen<T> extends Type<T, T> {

@@ -7,3 +7,3 @@ readonly shouldAttachNode: boolean;

describe(): string;
instantiate(parent: INode | null, subpath: string, environment: any, value: any): INode;
instantiate(parent: ObjectNode | null, subpath: string, environment: any, value: any): INode;
isValidSnapshot(value: any, context: IContext): IValidationResult;

@@ -10,0 +10,0 @@ }

@@ -1,2 +0,2 @@

import { INode, Type, IType, TypeFlags, IContext, IValidationResult } from "../../internal";
import { INode, Type, IType, TypeFlags, IContext, IValidationResult, ObjectNode } from "../../internal";
export declare class IdentifierType<T> extends Type<T, T> {

@@ -7,3 +7,3 @@ readonly identifierType: IType<T, T>;

constructor(identifierType: IType<T, T>);
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: T): INode;
instantiate(parent: ObjectNode | null, subpath: string, environment: any, snapshot: T): INode;
reconcile(current: INode, newValue: any): INode;

@@ -10,0 +10,0 @@ describe(): string;

@@ -1,2 +0,2 @@

import { INode, ISimpleType, Type, TypeFlags, IContext, IValidationResult } from "../../internal";
import { INode, ISimpleType, Type, TypeFlags, IContext, IValidationResult, ObjectNode } from "../../internal";
export declare class Literal<T> extends Type<T, T> {

@@ -7,3 +7,3 @@ readonly shouldAttachNode: boolean;

constructor(value: any);
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: T): INode;
instantiate(parent: ObjectNode | null, subpath: string, environment: any, snapshot: T): INode;
describe(): string;

@@ -10,0 +10,0 @@ isValidSnapshot(value: any, context: IContext): IValidationResult;

@@ -1,2 +0,2 @@

import { INode, Type, IType, TypeFlags, IContext, IValidationResult } from "../../internal";
import { INode, Type, IType, TypeFlags, IContext, IValidationResult, ObjectNode } from "../../internal";
import { IStateTreeNode } from "../../index";

@@ -16,3 +16,3 @@ export declare abstract class BaseReferenceType<T> extends Type<string | number, T> {

getSnapshot(node: INode): any;
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: any): INode;
instantiate(parent: ObjectNode | null, subpath: string, environment: any, snapshot: any): INode;
reconcile(current: INode, newValue: any): INode;

@@ -26,3 +26,3 @@ }

getSnapshot(node: INode): any;
instantiate(parent: INode | null, subpath: string, environment: any, snapshot: any): INode;
instantiate(parent: ObjectNode | null, subpath: string, environment: any, snapshot: any): INode;
reconcile(current: INode, snapshot: any): INode;

@@ -29,0 +29,0 @@ }

{
"name": "mobx-state-tree",
"version": "1.2.1",
"version": "1.3.0",
"description": "Opinionated, transactional, MobX powered state container",

@@ -5,0 +5,0 @@ "main": "dist/mobx-state-tree.js",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc