tracked-instance 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +14 -0
- package/package.json +2 -2
- package/dist/build/collection.js +0 -57
- package/dist/build/collection.js.map +0 -1
- package/dist/build/index.js +0 -3
- package/dist/build/index.js.map +0 -1
- package/dist/build/tracked-instance.js +0 -266
- package/dist/build/tracked-instance.js.map +0 -1
package/dist/index.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";(()=>{var tt=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var oe=typeof global=="object"&&global&&global.Object===Object&&global,et=oe;var ae=typeof self=="object"&&self&&self.Object===Object&&self,fe=et||ae||Function("return this")(),w=fe;var se=w.Symbol,y=se;var rt=Object.prototype,le=rt.hasOwnProperty,pe=rt.toString,B=y?y.toStringTag:void 0;function ne(t){var e=le.call(t,B),r=t[B];try{t[B]=void 0;var o=!0}catch{}var a=pe.call(t);return o&&(e?t[B]=r:delete t[B]),a}var ot=ne;var ue=Object.prototype,ie=ue.toString;function me(t){return ie.call(t)}var at=me;var de="[object Null]",xe="[object Undefined]",ft=y?y.toStringTag:void 0;function ce(t){return t==null?t===void 0?xe:de:ft&&ft in Object(t)?ot(t):at(t)}var C=ce;function he(t){return t!=null&&typeof t=="object"}var T=he;var ye="[object Symbol]";function ge(t){return typeof t=="symbol"||T(t)&&C(t)==ye}var D=ge;function be(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[r]=e(t[r],r,t);return a}var st=be;var ve=Array.isArray,b=ve;var _e=1/0,lt=y?y.prototype:void 0,pt=lt?lt.toString:void 0;function nt(t){if(typeof t=="string")return t;if(b(t))return st(t,nt)+"";if(D(t))return pt?pt.call(t):"";var e=t+"";return e=="0"&&1/t==-_e?"-0":e}var ut=nt;function Oe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var P=Oe;var Se="[object AsyncFunction]",Pe="[object Function]",Ie="[object GeneratorFunction]",Ae="[object Proxy]";function we(t){if(!P(t))return!1;var e=C(t);return e==Pe||e==Ie||e==Se||e==Ae}var it=we;var Ce=w["__core-js_shared__"],F=Ce;var mt=function(){var t=/[^.]+$/.exec(F&&F.keys&&F.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function Te(t){return!!mt&&mt in t}var dt=Te;var De=Function.prototype,Re=De.toString;function je(t){if(t!=null){try{return Re.call(t)}catch{}try{return t+""}catch{}}return""}var xt=je;var Ee=/[\\^$.*+?()[\]{}|]/g,Ne=/^\[object .+?Constructor\]$/,ze=Function.prototype,Be=Object.prototype,Me=ze.toString,We=Be.hasOwnProperty,ke=RegExp("^"+Me.call(We).replace(Ee,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Fe(t){if(!P(t)||dt(t))return!1;var e=it(t)?ke:Ne;return e.test(xt(t))}var ct=Fe;function Le(t,e){return t?.[e]}var ht=Le;function Ge(t,e){var r=ht(t,e);return ct(r)?r:void 0}var R=Ge;var He=function(){try{var t=R(Object,"defineProperty");return t({},"",{}),t}catch{}}(),$=He;var Ke=9007199254740991,qe=/^(?:0|[1-9]\d*)$/;function Ue(t,e){var r=typeof t;return e=e??Ke,!!e&&(r=="number"||r!="symbol"&&qe.test(t))&&t>-1&&t%1==0&&t<e}var L=Ue;function Ve(t,e,r){e=="__proto__"&&$?$(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var yt=Ve;function $e(t,e){return t===e||t!==t&&e!==e}var G=$e;var Je=Object.prototype,Xe=Je.hasOwnProperty;function Ye(t,e,r){var o=t[e];(!(Xe.call(t,e)&&G(o,r))||r===void 0&&!(e in t))&&yt(t,e,r)}var gt=Ye;var Ze=9007199254740991;function Qe(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=Ze}var bt=Qe;var tr="[object Arguments]";function er(t){return T(t)&&C(t)==tr}var J=er;var vt=Object.prototype,rr=vt.hasOwnProperty,or=vt.propertyIsEnumerable,ar=J(function(){return arguments}())?J:function(t){return T(t)&&rr.call(t,"callee")&&!or.call(t,"callee")},_t=ar;var fr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,sr=/^\w*$/;function lr(t,e){if(b(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||D(t)?!0:sr.test(t)||!fr.test(t)||e!=null&&t in Object(e)}var Ot=lr;var pr=R(Object,"create"),g=pr;function nr(){this.__data__=g?g(null):{},this.size=0}var St=nr;function ur(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var Pt=ur;var ir="__lodash_hash_undefined__",mr=Object.prototype,dr=mr.hasOwnProperty;function xr(t){var e=this.__data__;if(g){var r=e[t];return r===ir?void 0:r}return dr.call(e,t)?e[t]:void 0}var It=xr;var cr=Object.prototype,hr=cr.hasOwnProperty;function yr(t){var e=this.__data__;return g?e[t]!==void 0:hr.call(e,t)}var At=yr;var gr="__lodash_hash_undefined__";function br(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=g&&e===void 0?gr:e,this}var wt=br;function j(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}j.prototype.clear=St;j.prototype.delete=Pt;j.prototype.get=It;j.prototype.has=At;j.prototype.set=wt;var X=j;function vr(){this.__data__=[],this.size=0}var Ct=vr;function _r(t,e){for(var r=t.length;r--;)if(G(t[r][0],e))return r;return-1}var v=_r;var Or=Array.prototype,Sr=Or.splice;function Pr(t){var e=this.__data__,r=v(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():Sr.call(e,r,1),--this.size,!0}var Tt=Pr;function Ir(t){var e=this.__data__,r=v(e,t);return r<0?void 0:e[r][1]}var Dt=Ir;function Ar(t){return v(this.__data__,t)>-1}var Rt=Ar;function wr(t,e){var r=this.__data__,o=v(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}var jt=wr;function E(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}E.prototype.clear=Ct;E.prototype.delete=Tt;E.prototype.get=Dt;E.prototype.has=Rt;E.prototype.set=jt;var Et=E;var Cr=R(w,"Map"),Nt=Cr;function Tr(){this.size=0,this.__data__={hash:new X,map:new(Nt||Et),string:new X}}var zt=Tr;function Dr(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var Bt=Dr;function Rr(t,e){var r=t.__data__;return Bt(e)?r[typeof e=="string"?"string":"hash"]:r.map}var _=Rr;function jr(t){var e=_(this,t).delete(t);return this.size-=e?1:0,e}var Mt=jr;function Er(t){return _(this,t).get(t)}var Wt=Er;function Nr(t){return _(this,t).has(t)}var kt=Nr;function zr(t,e){var r=_(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}var Ft=zr;function N(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}N.prototype.clear=zt;N.prototype.delete=Mt;N.prototype.get=Wt;N.prototype.has=kt;N.prototype.set=Ft;var Y=N;var Br="Expected a function";function Z(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(Br);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],l=r.cache;if(l.has(a))return l.get(a);var m=t.apply(this,o);return r.cache=l.set(a,m)||l,m};return r.cache=new(Z.Cache||Y),r}Z.Cache=Y;var Lt=Z;var Mr=500;function Wr(t){var e=Lt(t,function(o){return r.size===Mr&&r.clear(),o}),r=e.cache;return e}var Gt=Wr;var kr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fr=/\\(\\)?/g,Lr=Gt(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(kr,function(r,o,a,l){e.push(a?l.replace(Fr,"$1"):o||r)}),e}),Ht=Lr;function Gr(t){return t==null?"":ut(t)}var Kt=Gr;function Hr(t,e){return b(t)?t:Ot(t,e)?[t]:Ht(Kt(t))}var O=Hr;var Kr=1/0;function qr(t){if(typeof t=="string"||D(t))return t;var e=t+"";return e=="0"&&1/t==-Kr?"-0":e}var S=qr;function Ur(t,e){e=O(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[S(e[r++])];return r&&r==o?t:void 0}var H=Ur;function Vr(t,e,r){var o=t==null?void 0:H(t,e);return o===void 0?r:o}var z=Vr;function $r(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var l=Array(a);++o<a;)l[o]=t[o+e];return l}var qt=$r;function Jr(t,e,r){e=O(e,t);for(var o=-1,a=e.length,l=!1;++o<a;){var m=S(e[o]);if(!(l=t!=null&&r(t,m)))break;t=t[m]}return l||++o!=a?l:(a=t==null?0:t.length,!!a&&bt(a)&&L(m,a)&&(b(t)||_t(t)))}var Ut=Jr;function Xr(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var Vt=Xr;var Yr=Object.prototype,Zr=Yr.hasOwnProperty;function Qr(t,e){return t!=null&&Zr.call(t,e)}var $t=Qr;function to(t,e){return t!=null&&Ut(t,e,$t)}var Q=to;function eo(t,e){return e.length<2?t:H(t,qt(e,0,-1))}var Jt=eo;function ro(t,e){return e=O(e,t),t=Jt(t,e),t==null||delete t[S(Vt(e))]}var Xt=ro;function oo(t,e,r,o){if(!P(t))return t;e=O(e,t);for(var a=-1,l=e.length,m=l-1,n=t;n!=null&&++a<l;){var s=S(e[a]),f=r;if(s==="__proto__"||s==="constructor"||s==="prototype")return t;if(a!=m){var p=n[s];f=o?o(p,s,n):void 0,f===void 0&&(f=P(p)?p:L(e[a+1])?[]:{})}gt(n,s,f),n=n[s]}return t}var Yt=oo;function ao(t,e,r){return t==null?t:Yt(t,e,r)}var M=ao;function fo(t,e){return t==null?!0:Xt(t,e)}var K=fo;var I=tt("vue"),c=t=>typeof t=="object"&&t!==null&&!Array.isArray(t)&&!(t instanceof Date)&&!(t instanceof File)&&!(t instanceof Map)&&!(t instanceof Set),so=t=>Object.keys(t).length===0,Zt=function*(t,e={}){let{goDeepCondition:r=(l,m)=>c(m),includeParent:o=!1}=e,a=function*(l,m){for(let[n,s]of Object.entries(m)){let f=l.concat(n);r(f,s)?(o&&(yield[f,s]),yield*a(f,s)):yield[f,s]}};yield*a([],t)},Qt=(t,e)=>(0,I.customRef)((r,o)=>{let a=(m,n=[])=>{let s=e(n);return new Proxy(m,{...s,get(f,p,u){r();let i=s.get?s.get(f,p,u):Reflect.get(f,p,u);return c(i)||Array.isArray(i)?a(i,n.concat({target:f,property:p,receiver:u})):i},set(f,p,u,i){let x=s.set?s.set(f,p,u,i):Reflect.set(f,p,u,i);return o(),x},deleteProperty(f,p){let u=s.deleteProperty?s.deleteProperty(f,p):Reflect.deleteProperty(f,p);return o(),u}})},l=a(t);return{get(){return r(),l},set(m){l=a(m),o()}}}),A=class{length;constructor(e){this.length=e,Object.defineProperty(this,"length",{enumerable:!1,value:e})}},te=(t,e)=>{let r=t;for(let{target:a,property:l}of e.slice(0,-1))if(l in r)if(c(r[l])||r[l]instanceof A)r=r[l];else return;else Array.isArray(a[l])?r=r[l]=new A(a[l].length):c(a[l])&&(r=r[l]={});let o=e.at(-1);r[o.property]=o.target[o.property]},q=(t,e,r)=>{let o=e.map(s=>s.property),a=z(t,o),l=(s,f)=>{let p=new Set;if(s)for(let i of Object.keys(s))p.add(i);if(f)for(let i of Object.keys(f))p.add(i);let u=Array.from(p).filter(i=>!Object.keys(r).includes(i));for(let i of u)q(t,e.concat({target:f||r,property:i}),void 0)},m=e.at(-1),n=m.target[m.property];if(c(r)&&(c(a)||c(n))){l(a,n);for(let s of Object.keys(r))q(t,e.concat({target:n||r,property:s}),r[s])}else if(Array.isArray(r)&&(a instanceof A||Array.isArray(n))){l(a,n);for(let s of r.keys())q(t,e.concat({target:n||r,property:s.toString()}),r[s])}else Q(t,o)?a===r&&K(t,o):n!==r&&te(t,e)},U=t=>{let e=Qt({},f=>({deleteProperty(p,u){let i=Reflect.deleteProperty(p,u);if(f.length){let x=f.at(-1);so(p)&&delete x.receiver[x.property]}return i}})),r=Qt({root:t},f=>({set(p,u,i,x){let W=f.concat({target:p,property:u,receiver:x}),V=p[u],ee=()=>{let re=z(e.value,W.map(h=>h.property)),{length:k}=re||V;if(i<k)for(let h=i;h<k;h++)delete x[h];else if(k<i)for(let h=k;h<i;h++)x[h]=void 0};return Array.isArray(p)&&u==="length"?i!==V&&ee():q(e.value,W,i),Reflect.set(p,u,i,x)},deleteProperty(p,u){return te(e.value,f.concat({target:p,property:u})),Reflect.deleteProperty(p,u)}})),o=(0,I.computed)({get:()=>r.value.root,set:f=>r.value.root=f}),a=(0,I.computed)(()=>Object.keys(e.value).length>0),l=(0,I.computed)(()=>{let f={},p=Zt(e.value,{goDeepCondition:(u,i)=>{let x=z(r.value,u),W=i instanceof A&&Array.isArray(x);return c(i)&&c(x)||W}});for(let[u]of p){let i=z(r.value,u);M(f,u,i)}return f}),m=(0,I.computed)(()=>l.value.root);return{data:o,changedData:m,isDirty:a,loadData:f=>{r.value={root:f},e.value={}},reset:()=>{let f=JSON.parse(JSON.stringify(r.value));for(let[p,u]of Zt(e.value,{includeParent:!0}))u instanceof A?M(f,p.concat("length"),u.length):c(u)||(u===void 0?K(f,p):M(f,p,u));r.value=f,e.value={}}}};var d=tt("vue");var lo=(t=()=>({}))=>{let e=(0,d.shallowRef)([]),r=(0,d.computed)(()=>e.value.some(({instance:n,isRemoved:s,isNew:f})=>n.isDirty.value||f.value||s.value));return{items:e,isDirty:r,add:(n,s=e.value.length)=>{let f=U(n),p={isRemoved:(0,d.ref)(!1),isNew:(0,d.ref)(!0),instance:f,meta:t(f)};return e.value.splice(s,0,p),(0,d.triggerRef)(e),p},remove:(n,s=!1)=>{e.value[n].isNew.value||s?(e.value.splice(n,1),(0,d.triggerRef)(e)):e.value[n].isRemoved.value=!0},loadData:n=>{e.value=n.map(s=>{let f=U(s);return{isNew:(0,d.ref)(!1),isRemoved:(0,d.ref)(!1),instance:f,meta:t(f)}}),(0,d.triggerRef)(e)},reset:()=>{e.value=e.value.filter(({isNew:n})=>!n.value);for(let n of e.value)n.isRemoved.value=!1,n.instance.reset();(0,d.triggerRef)(e)}}};})();
|
|
2
|
+
/*! Bundled license information:
|
|
3
|
+
|
|
4
|
+
lodash-es/lodash.js:
|
|
5
|
+
(**
|
|
6
|
+
* @license
|
|
7
|
+
* Lodash (Custom Build) <https://lodash.com/>
|
|
8
|
+
* Build: `lodash modularize exports="es" -o ./`
|
|
9
|
+
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
10
|
+
* Released under MIT license <https://lodash.com/license>
|
|
11
|
+
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
12
|
+
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
13
|
+
*)
|
|
14
|
+
*/
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tracked-instance",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Build large forms and track all changes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"build": "tsc",
|
|
7
|
+
"build": "tsc && esbuild ./dist/build/index.js --bundle --external:vue --minify --outfile=./dist/index.js && rm -rf ./dist/build",
|
|
8
8
|
"test": "vitest run"
|
|
9
9
|
},
|
|
10
10
|
"main": "./dist/index.js",
|
package/dist/build/collection.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { computed, shallowRef, triggerRef, ref } from 'vue';
|
|
2
|
-
import { useTrackedInstance } from './tracked-instance';
|
|
3
|
-
export const useCollection = (createItemMeta = () => ({})) => {
|
|
4
|
-
const items = shallowRef([]);
|
|
5
|
-
const isDirty = computed(() => items.value.some(({ instance, isRemoved, isNew }) => instance.isDirty.value || isNew.value || isRemoved.value));
|
|
6
|
-
const add = (item, index = items.value.length) => {
|
|
7
|
-
const instance = useTrackedInstance(item);
|
|
8
|
-
const newItem = {
|
|
9
|
-
isRemoved: ref(false),
|
|
10
|
-
isNew: ref(true),
|
|
11
|
-
instance,
|
|
12
|
-
meta: createItemMeta(instance)
|
|
13
|
-
};
|
|
14
|
-
items.value.splice(index, 0, newItem);
|
|
15
|
-
triggerRef(items);
|
|
16
|
-
return newItem;
|
|
17
|
-
};
|
|
18
|
-
const remove = (index, isHardRemove = false) => {
|
|
19
|
-
const item = items.value[index];
|
|
20
|
-
if (item.isNew.value || isHardRemove) {
|
|
21
|
-
items.value.splice(index, 1);
|
|
22
|
-
triggerRef(items);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
items.value[index].isRemoved.value = true;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
const loadData = (loadedItems) => {
|
|
29
|
-
items.value = loadedItems.map((item) => {
|
|
30
|
-
const instance = useTrackedInstance(item);
|
|
31
|
-
return {
|
|
32
|
-
isNew: ref(false),
|
|
33
|
-
isRemoved: ref(false),
|
|
34
|
-
instance,
|
|
35
|
-
meta: createItemMeta(instance)
|
|
36
|
-
};
|
|
37
|
-
});
|
|
38
|
-
triggerRef(items);
|
|
39
|
-
};
|
|
40
|
-
const reset = () => {
|
|
41
|
-
items.value = items.value.filter(({ isNew }) => !isNew.value);
|
|
42
|
-
for (const item of items.value) {
|
|
43
|
-
item.isRemoved.value = false;
|
|
44
|
-
item.instance.reset();
|
|
45
|
-
}
|
|
46
|
-
triggerRef(items);
|
|
47
|
-
};
|
|
48
|
-
return {
|
|
49
|
-
items,
|
|
50
|
-
isDirty,
|
|
51
|
-
add,
|
|
52
|
-
remove,
|
|
53
|
-
loadData,
|
|
54
|
-
reset
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=collection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/collection.ts"],"names":[],"mappings":"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"}
|
package/dist/build/index.js
DELETED
package/dist/build/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAC,aAAa,EAAC,MAAM,cAAc,CAAA"}
|
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
import { get, has, set, unset } from 'lodash-es';
|
|
2
|
-
import { computed, customRef } from 'vue';
|
|
3
|
-
const isObject = (value) => typeof value === 'object' &&
|
|
4
|
-
value !== null &&
|
|
5
|
-
!Array.isArray(value) &&
|
|
6
|
-
!(value instanceof Date) &&
|
|
7
|
-
!(value instanceof File) &&
|
|
8
|
-
!(value instanceof Map) &&
|
|
9
|
-
!(value instanceof Set);
|
|
10
|
-
const isEmpty = (value) => Object.keys(value).length === 0;
|
|
11
|
-
const iterateObject = function* (source, params = {}) {
|
|
12
|
-
const { goDeepCondition = (_, value) => isObject(value), includeParent = false } = params;
|
|
13
|
-
const iterateObjectDeep = function* (path, obj) {
|
|
14
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
15
|
-
const currentPath = path.concat(key);
|
|
16
|
-
if (goDeepCondition(currentPath, value)) {
|
|
17
|
-
if (includeParent) {
|
|
18
|
-
yield [currentPath, value];
|
|
19
|
-
}
|
|
20
|
-
yield* iterateObjectDeep(currentPath, value);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
yield [currentPath, value];
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
yield* iterateObjectDeep([], source);
|
|
28
|
-
};
|
|
29
|
-
const createNestedRef = (source, handler) => customRef((track, trigger) => {
|
|
30
|
-
// make nested objects and arrays is reactive
|
|
31
|
-
const createProxy = (source, path = []) => {
|
|
32
|
-
const currentProxyHandler = handler(path);
|
|
33
|
-
return new Proxy(source, {
|
|
34
|
-
...currentProxyHandler,
|
|
35
|
-
get(target, property, receiver) {
|
|
36
|
-
track();
|
|
37
|
-
const result = currentProxyHandler.get
|
|
38
|
-
? currentProxyHandler.get(target, property, receiver)
|
|
39
|
-
: Reflect.get(target, property, receiver);
|
|
40
|
-
if (isObject(result) || Array.isArray(result)) {
|
|
41
|
-
return createProxy(result, path.concat({ target, property, receiver }));
|
|
42
|
-
}
|
|
43
|
-
return result;
|
|
44
|
-
},
|
|
45
|
-
set(target, property, value, receiver) {
|
|
46
|
-
const result = currentProxyHandler.set
|
|
47
|
-
? currentProxyHandler.set(target, property, value, receiver)
|
|
48
|
-
: Reflect.set(target, property, value, receiver);
|
|
49
|
-
trigger();
|
|
50
|
-
return result;
|
|
51
|
-
},
|
|
52
|
-
deleteProperty(target, property) {
|
|
53
|
-
const result = currentProxyHandler.deleteProperty
|
|
54
|
-
? currentProxyHandler.deleteProperty(target, property)
|
|
55
|
-
: Reflect.deleteProperty(target, property);
|
|
56
|
-
trigger();
|
|
57
|
-
return result;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
let value = createProxy(source);
|
|
62
|
-
return {
|
|
63
|
-
get() {
|
|
64
|
-
track();
|
|
65
|
-
return value;
|
|
66
|
-
},
|
|
67
|
-
set(newValue) {
|
|
68
|
-
value = createProxy(newValue);
|
|
69
|
-
trigger();
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
});
|
|
73
|
-
// array values in originalData should store in default object to avoid removing items on change length
|
|
74
|
-
class ArrayInOriginalData {
|
|
75
|
-
length;
|
|
76
|
-
constructor(length) {
|
|
77
|
-
this.length = length;
|
|
78
|
-
// length should not include in iterations
|
|
79
|
-
Object.defineProperty(this, 'length', {
|
|
80
|
-
enumerable: false,
|
|
81
|
-
value: length
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
const setOriginalDataValue = (originalData, path) => {
|
|
86
|
-
let originalDataTarget = originalData;
|
|
87
|
-
for (const { target: oldValueParent, property } of path.slice(0, -1)) {
|
|
88
|
-
if (property in originalDataTarget) {
|
|
89
|
-
if (isObject(originalDataTarget[property]) || originalDataTarget[property] instanceof ArrayInOriginalData) {
|
|
90
|
-
originalDataTarget = originalDataTarget[property];
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
// cancel set originalData value because in this case we try to replace primitive value by object or array value
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
if (Array.isArray(oldValueParent[property])) {
|
|
99
|
-
originalDataTarget = originalDataTarget[property] = new ArrayInOriginalData(oldValueParent[property].length);
|
|
100
|
-
}
|
|
101
|
-
else if (isObject(oldValueParent[property])) {
|
|
102
|
-
originalDataTarget = originalDataTarget[property] = {};
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
const lastItem = path.at(-1);
|
|
107
|
-
originalDataTarget[lastItem.property] = lastItem.target[lastItem.property];
|
|
108
|
-
};
|
|
109
|
-
const snapshotValueToOriginalData = (originalData, path, value) => {
|
|
110
|
-
const pathAsString = path.map((i) => i.property);
|
|
111
|
-
const valueInOriginalData = get(originalData, pathAsString);
|
|
112
|
-
const markRemovedFieldsAsUndefined = (valueInOriginalData, oldValue) => {
|
|
113
|
-
const keysSet = new Set();
|
|
114
|
-
if (valueInOriginalData) {
|
|
115
|
-
for (const key of Object.keys(valueInOriginalData)) {
|
|
116
|
-
keysSet.add(key);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
if (oldValue) {
|
|
120
|
-
for (const key of Object.keys(oldValue)) {
|
|
121
|
-
keysSet.add(key);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
const keys = Array.from(keysSet).filter((key) => !Object.keys(value).includes(key));
|
|
125
|
-
for (const key of keys) {
|
|
126
|
-
snapshotValueToOriginalData(originalData, path.concat({ target: oldValue || value, property: key }), undefined);
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
const lastPathItem = path.at(-1);
|
|
130
|
-
const oldValue = lastPathItem.target[lastPathItem.property];
|
|
131
|
-
if (isObject(value) && (isObject(valueInOriginalData) || isObject(oldValue))) {
|
|
132
|
-
// if value includes in oldValue or originalData need mark removed fields as undefined and recursively run nested objects
|
|
133
|
-
markRemovedFieldsAsUndefined(valueInOriginalData, oldValue);
|
|
134
|
-
for (const key of Object.keys(value)) {
|
|
135
|
-
snapshotValueToOriginalData(originalData, path.concat({ target: oldValue || value, property: key }), value[key]);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
else if (Array.isArray(value) && (valueInOriginalData instanceof ArrayInOriginalData || Array.isArray(oldValue))) {
|
|
139
|
-
// do same for arrays
|
|
140
|
-
markRemovedFieldsAsUndefined(valueInOriginalData, oldValue);
|
|
141
|
-
for (const key of value.keys()) {
|
|
142
|
-
snapshotValueToOriginalData(originalData, path.concat({ target: oldValue || value, property: key.toString() }), value[key]);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
// in case value is plain then store it into originalData
|
|
147
|
-
if (!has(originalData, pathAsString)) {
|
|
148
|
-
if (oldValue !== value) {
|
|
149
|
-
setOriginalDataValue(originalData, path);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
else if (valueInOriginalData === value) {
|
|
153
|
-
unset(originalData, pathAsString);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
export const useTrackedInstance = (initialData) => {
|
|
158
|
-
const _originalData = createNestedRef({}, (path) => ({
|
|
159
|
-
deleteProperty(target, property) {
|
|
160
|
-
const result = Reflect.deleteProperty(target, property);
|
|
161
|
-
if (path.length) {
|
|
162
|
-
const parent = path.at(-1);
|
|
163
|
-
if (isEmpty(target)) {
|
|
164
|
-
delete parent.receiver[parent.property];
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
return result;
|
|
168
|
-
}
|
|
169
|
-
}));
|
|
170
|
-
const _data = createNestedRef({ root: initialData }, (parentThree) => ({
|
|
171
|
-
set(target, property, value, receiver) {
|
|
172
|
-
const path = parentThree.concat({ target, property, receiver });
|
|
173
|
-
const oldValue = target[property];
|
|
174
|
-
const triggerChangingArrayItems = () => {
|
|
175
|
-
// in case length in array has changed then emit changing of value by index
|
|
176
|
-
const originalDataValue = get(_originalData.value, path.map((i) => i.property));
|
|
177
|
-
const { length: originalDataLength } = originalDataValue || oldValue;
|
|
178
|
-
if (value < originalDataLength) {
|
|
179
|
-
// when removed new value
|
|
180
|
-
for (let i = value; i < originalDataLength; i++) {
|
|
181
|
-
delete receiver[i];
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
else if (originalDataLength < value) {
|
|
185
|
-
// store all removed values as "undefined" when this array values was in data before do some change
|
|
186
|
-
for (let i = originalDataLength; i < value; i++) {
|
|
187
|
-
receiver[i] = undefined;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
};
|
|
191
|
-
if (Array.isArray(target) && property === 'length') {
|
|
192
|
-
if (value !== oldValue) {
|
|
193
|
-
triggerChangingArrayItems();
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
snapshotValueToOriginalData(_originalData.value, path, value);
|
|
198
|
-
}
|
|
199
|
-
return Reflect.set(target, property, value, receiver);
|
|
200
|
-
},
|
|
201
|
-
deleteProperty(target, property) {
|
|
202
|
-
setOriginalDataValue(_originalData.value, parentThree.concat({ target, property }));
|
|
203
|
-
return Reflect.deleteProperty(target, property);
|
|
204
|
-
}
|
|
205
|
-
}));
|
|
206
|
-
const data = computed({
|
|
207
|
-
get: () => _data.value.root,
|
|
208
|
-
set: (value) => (_data.value.root = value)
|
|
209
|
-
});
|
|
210
|
-
const isDirty = computed(() => Object.keys(_originalData.value).length > 0);
|
|
211
|
-
const _changedData = computed(() => {
|
|
212
|
-
const changedData = {};
|
|
213
|
-
const originalDataIterator = iterateObject(_originalData.value, {
|
|
214
|
-
goDeepCondition: (path, value) => {
|
|
215
|
-
/*
|
|
216
|
-
* iterate over originalData
|
|
217
|
-
* but avoid going deep in case
|
|
218
|
-
* when value in data have different data type
|
|
219
|
-
* of same value in originalData
|
|
220
|
-
*/
|
|
221
|
-
const valueInData = get(_data.value, path);
|
|
222
|
-
const isBothValuesAsArray = value instanceof ArrayInOriginalData && Array.isArray(valueInData);
|
|
223
|
-
const isBothValuesAsObject = isObject(value) && isObject(valueInData);
|
|
224
|
-
return isBothValuesAsObject || isBothValuesAsArray;
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
for (const [path] of originalDataIterator) {
|
|
228
|
-
const valueInData = get(_data.value, path);
|
|
229
|
-
set(changedData, path, valueInData);
|
|
230
|
-
}
|
|
231
|
-
return changedData;
|
|
232
|
-
});
|
|
233
|
-
const changedData = computed(() => _changedData.value.root);
|
|
234
|
-
const loadData = (newData) => {
|
|
235
|
-
_data.value = { root: newData };
|
|
236
|
-
_originalData.value = {};
|
|
237
|
-
};
|
|
238
|
-
const reset = () => {
|
|
239
|
-
const updatedData = JSON.parse(JSON.stringify(_data.value));
|
|
240
|
-
// iterate over originalData including objects to check array values
|
|
241
|
-
for (const [path, value] of iterateObject(_originalData.value, { includeParent: true })) {
|
|
242
|
-
if (value instanceof ArrayInOriginalData) {
|
|
243
|
-
// reset array length in data to remove new items
|
|
244
|
-
set(updatedData, path.concat('length'), value.length);
|
|
245
|
-
}
|
|
246
|
-
else if (!isObject(value)) {
|
|
247
|
-
if (value === undefined) {
|
|
248
|
-
unset(updatedData, path);
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
set(updatedData, path, value);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
_data.value = updatedData;
|
|
256
|
-
_originalData.value = {};
|
|
257
|
-
};
|
|
258
|
-
return {
|
|
259
|
-
data,
|
|
260
|
-
changedData,
|
|
261
|
-
isDirty,
|
|
262
|
-
loadData,
|
|
263
|
-
reset
|
|
264
|
-
};
|
|
265
|
-
};
|
|
266
|
-
//# sourceMappingURL=tracked-instance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tracked-instance.js","sourceRoot":"","sources":["../../src/tracked-instance.ts"],"names":[],"mappings":"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"}
|