!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("valtio/vanilla")):"function"==typeof define&&define.amd?define(["exports","valtio/vanilla"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).valtioUtils={},t.valtioVanilla)}(this,(function(t,e){"use strict";var n;var r=Symbol();var i=new WeakMap,a=new WeakMap,o=function t(e,n){var r=i.get(e);r&&(r[0].forEach((function(n){var r=n.d;e!==r&&t(r)})),++r[2],n&&r[3].add(n))},u=function t(e){var n=i.get(e);n&&(--n[2],n[2]||(n[3].forEach((function(t){return t()})),n[3].clear()),n[0].forEach((function(n){var r=n.d;e!==r&&t(r)})))},s=function(t){var n=t.s,r=t.d,s=a.get(r);s||(s=[new Set],a.set(t.d,s)),s[0].add(t);var c=i.get(n);if(!c){var f=new Set,l=e.subscribe(n,(function(t){f.forEach((function(e){var r=e.d,i=e.c,a=e.n,s=e.i;n===r&&t.every((function(t){return 1===t[1].length&&s.includes(t[1][0])}))||e.p||(o(n,i),a?u(n):e.p=Promise.resolve().then((function(){delete e.p,u(n)})))}))}),!0);c=[f,l,0,new Set],i.set(n,c)}c[0].add(t)},c=function(t){var e=t.s,n=t.d,r=a.get(n);null==r||r[0].delete(t),0===(null==r?void 0:r[0].size)&&a.delete(n);var o=i.get(e);if(o){var u=o[0],s=o[1];u.delete(t),u.size||(s(),i.delete(e))}},f=function(t){var e=a.get(t);return e?Array.from(e[0]):[]},l={add:s,remove:c,list:f};function d(t,n){var r=(null==n?void 0:n.proxy)||e.proxy({}),a=!(null==n||!n.sync),o=Object.keys(t);return o.forEach((function(n){if(Object.getOwnPropertyDescriptor(r,n))throw new Error("object property already defined");var u=t[n],f=null;!function t(){if(f){if(Array.from(f).map((function(e){var n,r,a,o=e[0];return n=o,r=t,!(null==(a=i.get(n))||!a[2]||(a[3].add(r),0))})).some((function(t){return t})))return;if(Array.from(f).every((function(t){var n=t[0],r=t[1];return e.getVersion(n)===r.v})))return}var l=new Map,d=u((function(t){return l.set(t,{v:e.getVersion(t)}),t})),p=function(){var e;l.forEach((function(e,i){var u,c,l=null==(u=f)||null==(c=u.get(i))?void 0:c.s;if(l)e.s=l;else{var d={s:i,d:r,k:n,c:t,n:a,i:o};s(d),e.s=d}})),null==(e=f)||e.forEach((function(t,e){!l.has(e)&&t.s&&c(t.s)})),f=l};d instanceof Promise?d.finally(p):p(),r[n]=d}()})),r}var p=function t(e){if("object"!=typeof(n=e)||null===n)return e;var n,r=Array.isArray(e)?[]:Object.create(Object.getPrototypeOf(e));return Reflect.ownKeys(e).forEach((function(n){r[n]=t(e[n])})),r};function h(t,e){for(var n in e){(a=e[n]).configurable=a.enumerable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,n,a)}if(Object.getOwnPropertySymbols)for(var r=Object.getOwnPropertySymbols(e),i=0;i0},undo:function(){r.canUndo()&&(r.value=r.history.wip=p(r.history.snapshots[--r.history.index]))},canRedo:function(){return r.history.index