mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-11 00:14:50 +03:00
Added: knockout.js observable toJSON()
This commit is contained in:
parent
3a315bc543
commit
36fa52307f
3 changed files with 10 additions and 2 deletions
|
|
@ -909,6 +909,10 @@ ko.observable = initialValue => {
|
|||
|
||||
// Define prototype for observables
|
||||
var observableFn = {
|
||||
'toJSON': function() {
|
||||
let value = this[observableLatestValue];
|
||||
return value.toJSON ? value.toJSON() : value;
|
||||
},
|
||||
'equalityComparer': valuesArePrimitiveAndEqual,
|
||||
peek: function() { return this[observableLatestValue]; },
|
||||
valueHasMutated: function () {
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@ a.T=function(){a.a.Za(this,O);O.Va(this)};var O={Va:b=>{b.L={change:[]};b.Qb=1},
|
|||
b},ab:function(){++this.Qb},vb:function(b){var c=this,e=a.O(c),f,h,l,d,g;c.Ka||(c.Ka=c.notifySubscribers,c.notifySubscribers=function(m,p){p&&"change"!==p?"beforeChange"===p?this.Nb(m):this.Ka(m,p):this.Ob(m)});var k=b(()=>{c.ta=!1;e&&d===c&&(d=c.Lb?c.Lb():c());var m=h||g&&c.Xa(l,d);g=h=f=!1;m&&c.Ka(l=d)});c.Ob=(m,p)=>{p&&c.ta||(g=!p);c.uc=c.L.change.slice(0);c.ta=f=!0;d=m;k()};c.Nb=m=>{f||(l=m,c.Ka(m,"beforeChange"))};c.Pb=()=>{g=!0};c.wc=()=>{c.Xa(l,c.D(!0))&&(h=!0)}},Ca:function(b){return this.L[b]&&
|
||||
this.L[b].length},Lc:function(b){if(b)return this.L[b]&&this.L[b].length||0;var c=0;a.a.J(this.L,(e,f)=>c+=f.length);return c},Xa:function(b,c){return!this.equalityComparer||!this.equalityComparer(b,c)},toString:()=>"[object Object]",extend:function(b){var c=this;b&&a.a.J(b,(e,f)=>{e=a.pb[e];"function"==typeof e&&(c=e(c,f)||c)});return c}};a.ba(O,"init",O.Va);a.ba(O,"subscribe",O.subscribe);a.ba(O,"extend",O.extend);a.ba(O,"getSubscriptionsCount",O.Lc);a.a.na&&a.a.setPrototypeOf(O,Function.prototype);
|
||||
a.T.fn=O;a.Qc=b=>null!=b&&"function"==typeof b.subscribe&&"function"==typeof b.notifySubscribers;a.ya=a.m=(()=>{function b(l){e.push(f);f=l}function c(){f=e.pop()}var e=[],f,h=0;return{Wb:b,end:c,oc:l=>{if(f){if(!a.Qc(l))throw Error("Only subscribable things can act as dependencies");f.Cc.call(f.Dc,l,l.vc||(l.vc=++h))}},I:(l,d,g)=>{try{return b(),l.apply(d,g||[])}finally{c()}},Sa:()=>{if(f)return f.i.Sa()},qb:()=>{if(f)return f.i.qb()},tb:()=>{if(f)return f.tb},i:()=>{if(f)return f.i}}})();var P=
|
||||
Symbol("_latestValue");a.ka=b=>{function c(){if(0<arguments.length)return c.Xa(c[P],arguments[0])&&(c.bb(),c[P]=arguments[0],c.Ia()),this;a.m.oc(c);return c[P]}c[P]=b;a.a.na||a.a.extend(c,a.T.fn);a.T.fn.Va(c);a.a.Za(c,Q);return c};var Q={equalityComparer:I,D:function(){return this[P]},Ia:function(){this.notifySubscribers(this[P],"spectate");this.notifySubscribers(this[P])},bb:function(){this.notifySubscribers(this[P],"beforeChange")}};a.a.na&&a.a.setPrototypeOf(Q,a.T.fn);var R=a.ka.xc="__ko_proto__";
|
||||
Q[R]=a.ka;a.O=b=>{if((b="function"==typeof b&&b[R])&&b!==Q[R]&&b!==a.i.fn[R])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!b};a.kc=b=>"function"==typeof b&&(b[R]===Q[R]||b[R]===a.i.fn[R]&&b.ic);a.s("observable",a.ka);a.s("isObservable",a.O);a.s("observable.fn",Q);a.ba(Q,"valueHasMutated",Q.Ia);a.ra=b=>{b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
|
||||
Symbol("_latestValue");a.ka=b=>{function c(){if(0<arguments.length)return c.Xa(c[P],arguments[0])&&(c.bb(),c[P]=arguments[0],c.Ia()),this;a.m.oc(c);return c[P]}c[P]=b;a.a.na||a.a.extend(c,a.T.fn);a.T.fn.Va(c);a.a.Za(c,Q);return c};var Q={toJSON:function(){let b=this[P];return b.toJSON?b.toJSON():b},equalityComparer:I,D:function(){return this[P]},Ia:function(){this.notifySubscribers(this[P],"spectate");this.notifySubscribers(this[P])},bb:function(){this.notifySubscribers(this[P],"beforeChange")}};
|
||||
a.a.na&&a.a.setPrototypeOf(Q,a.T.fn);var R=a.ka.xc="__ko_proto__";Q[R]=a.ka;a.O=b=>{if((b="function"==typeof b&&b[R])&&b!==Q[R]&&b!==a.i.fn[R])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!b};a.kc=b=>"function"==typeof b&&(b[R]===Q[R]||b[R]===a.i.fn[R]&&b.ic);a.s("observable",a.ka);a.s("isObservable",a.O);a.s("observable.fn",Q);a.ba(Q,"valueHasMutated",Q.Ia);a.ra=b=>{b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
|
||||
b=a.ka(b);a.a.Za(b,a.ra.fn);return b.extend({trackArrayChanges:!0})};a.ra.fn={remove:function(b){for(var c=this.D(),e=[],f="function"!=typeof b||a.O(b)?function(d){return d===b}:b,h=0;h<c.length;h++){var l=c[h];if(f(l)){0===e.length&&this.bb();if(c[h]!==l)throw Error("Array modified during remove; cannot remove item");e.push(l);c.splice(h,1);h--}}e.length&&this.Ia();return e},removeAll:function(b){if(void 0===b){var c=this.D(),e=c.slice(0);this.bb();c.splice(0,c.length);this.Ia();return e}return b?
|
||||
this.remove(function(f){return 0<=a.a.$(b,f)}):[]},indexOf:function(b){return a.a.$(this(),b)}};a.a.na&&a.a.setPrototypeOf(a.ra.fn,a.ka.fn);"pop push reverse shift sort splice unshift".split(" ").forEach(b=>{a.ra.fn[b]=function(){var c=this.D();this.bb();this.Yb(c,b,arguments);var e=c[b].apply(c,arguments);this.Ia();return e===c?this:e}});["slice"].forEach(b=>{a.ra.fn[b]=function(){var c=this();return c[b].apply(c,arguments)}});a.Pc=b=>a.O(b)&&"function"==typeof b.remove&&"function"==typeof b.push;
|
||||
a.s("observableArray",a.ra);a.pb.trackArrayChanges=(b,c)=>{function e(){function q(){if(g){var u=[].concat(b.D()||[]);if(b.Ca("arrayChange")){if(!h||1<g)h=a.a.$b(k,u,b.jb);var y=h}k=u;h=null;g=0;y&&y.length&&b.notifySubscribers(y,"arrayChange")}}f?q():(f=!0,d=b.subscribe(()=>++g,null,"spectate"),k=[].concat(b.D()||[]),h=null,l=b.subscribe(q))}b.jb={};c&&"object"==typeof c&&a.a.extend(b.jb,c);b.jb.sparse=!0;if(!b.Yb){var f=!1,h=null,l,d,g=0,k,m=b.xa,p=b.La;b.xa=q=>{m&&m.call(b,q);"arrayChange"===q&&
|
||||
|
|
|
|||
|
|
@ -37,6 +37,10 @@ ko.observable = initialValue => {
|
|||
|
||||
// Define prototype for observables
|
||||
var observableFn = {
|
||||
'toJSON': function() {
|
||||
let value = this[observableLatestValue];
|
||||
return value.toJSON ? value.toJSON() : value;
|
||||
},
|
||||
'equalityComparer': valuesArePrimitiveAndEqual,
|
||||
peek: function() { return this[observableLatestValue]; },
|
||||
valueHasMutated: function () {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue