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 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.7",
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",
@@ -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":"AAAA,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAA2B,GAAG,EAAM,MAAM,KAAK,CAAA;AACvF,OAAO,EAAkB,kBAAkB,EAAC,MAAM,oBAAoB,CAAA;AAkBtE,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,iBAA4D,GAAG,EAAE,CAAC,CAAC,EAAE,CAAS,EACtD,EAAE;IAC1B,MAAM,KAAK,GAAG,UAAU,CAA+B,EAAE,CAAC,CAAA;IAE1D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAC5B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAC7G,CAAA;IAED,MAAM,GAAG,GAAG,CAAC,IAAmB,EAAE,QAAgB,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;QACtE,MAAM,QAAQ,GAAG,kBAAkB,CAAO,IAAI,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC;YACrB,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC;YAChB,QAAQ;YACR,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC;SACD,CAAA;QAC/B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;QACrC,UAAU,CAAC,KAAK,CAAC,CAAA;QACjB,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,YAAY,GAAG,KAAK,EAAE,EAAE;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC;YACrC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC5B,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAA;QAC3C,CAAC;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,WAAmB,EAAE,EAAE;QACvC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,kBAAkB,CAAO,IAAI,CAAC,CAAA;YAC/C,OAAO;gBACL,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;gBACjB,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC;gBACrB,QAAQ;gBACR,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC;aACD,CAAA;QACjC,CAAC,CAAC,CAAA;QACF,UAAU,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;YAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACvB,CAAC;QACD,UAAU,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC,CAAA;IAED,OAAO;QACL,KAAK;QACL,OAAO;QACP,GAAG;QACH,MAAM;QACN,QAAQ;QACR,KAAK;KACN,CAAA;AACH,CAAC,CAAA"}
@@ -1,3 +0,0 @@
1
- export { useTrackedInstance } from './tracked-instance';
2
- export { useCollection } from './collection';
3
- //# sourceMappingURL=index.js.map
@@ -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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"}